无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 2011niumao
打印 上一主题 下一主题

[教程] 从 固定VHD与只读squashfs引导LINUX, UBUNTU ARCH Fedora Opensuse Mageia五种

    [复制链接]
361#
 楼主| 发表于 2018-3-14 21:39:50 | 只看该作者
Hongrongqi 发表于 2018-3-14 18:35
我用vhd外面vmlinuz和initrd.ing就可以启动,用vhd根目录下就不行。还有老师opensuse42.3安装不了ntfs_3g好 ...

能启动就好了。说明系统没有问题。可能vhd内部的initrd.img还没有制作好,需要重做。
至于opensuse编译的问题,要给与可执行权限才行。
  1. chmod a+x *
复制代码
回复

使用道具 举报

362#
 楼主| 发表于 2018-3-14 21:42:37 | 只看该作者
Hongrongqi 发表于 2018-3-14 18:35
我用vhd外面vmlinuz和initrd.ing就可以启动,用vhd根目录下就不行。还有老师opensuse42.3安装不了ntfs_3g好 ...

能启动就好。可能还需要重新制作vhd 内部的initrd.img。opensuse那个是权限问题。
给予可执行权限就可以了。在ntfs-3g内
  1. chmod a+x * -R
复制代码
回复

使用道具 举报

363#
发表于 2018-3-15 01:45:32 | 只看该作者
2011niumao 发表于 2018-3-14 21:42
能启动就好。可能还需要重新制作vhd 内部的initrd.img。opensuse那个是权限问题。
给予可执行权限就可以 ...

opensusec我用ubuntu的vmliuz和initrd.img引导也成功进去了,就是不知道会不会有什么错误
回复

使用道具 举报

364#
 楼主| 发表于 2018-3-15 13:37:17 | 只看该作者
Hongrongqi 发表于 2018-3-15 01:45
opensusec我用ubuntu的vmliuz和initrd.img引导也成功进去了,就是不知道会不会有什么错误

有些驱动会找不到。比如声音会有问题。
回复

使用道具 举报

365#
发表于 2018-3-15 22:03:38 | 只看该作者
2011niumao 发表于 2018-3-15 13:37
有些驱动会找不到。比如声音会有问题。

好的,谢谢老师
回复

使用道具 举报

366#
发表于 2018-3-15 23:21:20 | 只看该作者
本帖最后由 Hongrongqi 于 2018-3-15 23:26 编辑
2011niumao 发表于 2018-3-15 13:37
有些驱动会找不到。比如声音会有问题。


老师还有问题想让你给解诀一下,我在ubuntu.vhd中多分了两个分区,一个分区的标签是OPENELEC,另一个是XBMC,以前在实硬盘的引导代码是:
menuentry "OpenELEC" {
    search --set=root --label SYSTEM --hint hd0,msdos3
    linux /KERNEL boot=LABEL=OPENELEC  disk=LABEL=XBMC quiet
}
menuentry "OpenELEC 高级选项" {
    search --set=root --label SYSTEM --hint hd0,msdos3
    linux /KERNEL boot=LABEL=OPENELEC disk=LABEL=XBMC debugging
}
现在在vhd中引导代码要怎么写
回复

使用道具 举报

367#
 楼主| 发表于 2018-3-16 13:10:10 来自手机 | 只看该作者
这个不清楚。而且恐怕引导不了vhd内部的系统。因为ubuntu是对initrd.img改造后有了引导vhd内部系统的功能,这里没有initrd语句,估计引导不了。
回复

使用道具 举报

368#
发表于 2018-5-10 22:22:58 | 只看该作者
学习一下,顺便mark下,以便参考
回复

使用道具 举报

369#
发表于 2018-5-24 09:41:03 | 只看该作者
本帖最后由 Srainbow 于 2018-5-24 11:53 编辑

试了下,

1.ubuntu18.04 vhd盘没有挂上。initramfs  启动到一半挂了,楼主有空看看?

我是在VirtualBox 直接默认安装后,加下补丁启动失败。


在hang住的initramfs看了下,   

没有/host 目录 原来的vhd文件所在分区还是挂在/root下

手动试了下mount -o move   执行没有问题。
试了kpartx -av /ubuntu/Bionic.vhd   
挂住,

猜测也许跟分区方式有关。回头再试试换换分区格式试试。
回复

使用道具 举报

370#
发表于 2018-5-24 13:03:23 | 只看该作者
Srainbow 发表于 2018-5-24 09:41
试了下,

1.ubuntu18.04 vhd盘没有挂上。initramfs  启动到一半挂了,楼主有空看看?

安装深度deepin15.5,先按本帖3楼的vloop方法不成功,也是启动到initramfs停住,

后按附件里的KLOOP方法安装成功。

点评

我用的就是kloop。deepin15.5 是基于debian的,ubuntu 18.04 还不是完全一样吧?  详情 回复 发表于 2018-5-26 17:58
回复

使用道具 举报

371#
发表于 2018-5-26 17:58:23 | 只看该作者
wdtx 发表于 2018-5-24 13:03
安装深度deepin15.5,先按本帖3楼的vloop方法不成功,也是启动到initramfs停住,

后按附件里的KLOOP方 ...

我用的就是kloop。deepin15.5 是基于debian的,ubuntu 18.04 还不是完全一样吧?
回复

使用道具 举报

372#
发表于 2018-6-1 12:21:29 | 只看该作者
Srainbow 发表于 2018-5-26 17:58
我用的就是kloop。deepin15.5 是基于debian的,ubuntu 18.04 还不是完全一样吧?

我也不太懂,但是做成功了
回复

使用道具 举报

373#
发表于 2018-6-29 12:59:20 | 只看该作者
按fedora方法制作redhat 7.5没成功,不知道有什么不同
回复

使用道具 举报

374#
发表于 2018-8-10 23:24:28 | 只看该作者
本帖最后由 vrboxing 于 2018-8-10 23:30 编辑



老师能帮忙看看哪里出问题了吗?系统Archbang,内核4.17.10,照着教程做的,提示找不到loop0。不知道哪里的问题
fstab的swap和/挂载都注释了,这个loop到底是几怎么看?
回复

使用道具 举报

375#
发表于 2018-8-11 04:03:48 | 只看该作者
本帖最后由 vrboxing 于 2018-8-11 04:06 编辑

一晚上没睡,总算成了。分享一下
https://pan.baidu.com/s/1E2f9d9-sCT4TC59lcozDjQ
grub2 efi引导:

if search --no-floppy -f  /archlinux/archlinux.vhd; then
menuentry "archbang.vhd " --class ubuntu {
        insmod gzio
        insmod part_msdos
        insmod part_gpt
        insmod ext2
        insmod ntfs
        insmod probe
        set vhdfile="/archlinux/archlinux.vhd"
        ##set root=(hd0,1)
        search --no-floppy -f --set=aabbcc  $vhdfile
        set root=${aabbcc}
        probe -u --set=ddeeff ${aabbcc}
        loopback lp0 $vhdfile
        linux        /archlinux/vmlinuz root=UUID=${ddeeff}  kloop=$vhdfile  kroot=/dev/loop0p1
        initrd        /archlinux/initrd.img
}
fi
回复

使用道具 举报

376#
发表于 2018-11-30 20:41:21 | 只看该作者
启动过程中出现“failed to stat() (host)/.......vhd"然后加载mounting时找不到文件。就是用下载的vhd文件,vbox虚拟机中正常。
回复

使用道具 举报

377#
 楼主| 发表于 2018-12-1 11:21:36 | 只看该作者
ymzjsr 发表于 2018-11-30 20:41
启动过程中出现“failed to stat() (host)/.......vhd"然后加载mounting时找不到文件。就是用下载的vhd文件 ...

那有可能是启动菜单需要修改。有可能自动探测uuid功能失效。
在grub2菜单界面按e键,进入编辑界面,把root=uuid=xxxx更改为
root=/dev/sdaX,
X看你的vhd文件所在分区而定.主分区 12 34 扩展分区 5 6 7 8 。
按F10启动。
回复

使用道具 举报

378#
发表于 2019-2-20 17:02:54 | 只看该作者
十分感谢楼主的教程,真厉害,按照教程已经可以制作成功squashfs的镜像,以及生成了ubuntu 18.04.1 LTS的initrd.img 等。
但是在修改完grub2引导后,启动,却遇到了问题,貌似无法挂载overlay分区,最后停在了initramfs的命令行上。

笔电时HP 820 G4,本机硬盘时GPT分区表,第一分区是 500M的EFI分区,第二分区微软默认的msr分区128M,第三分区是win10的NTFS  130G,第四分区是一个2G的,用ubuntu 18.04.1 iso镜像恢复进去的,第五分区是osx 10.14.1的apfs分区 100G。

Ubuntu是用的ghostplant大神在github上的最新的18.04.1的那个2019年2月份的x64镜像,用win10下的vitualbox安装到了一个4G的固定大小的vhd上(vhd在win10磁盘管理初始化后,用diskgenuis格式化为GPT分区,建立一个200M的EFI分区和剩下的做成了/分区)。

(来自于grub2小引导器2017)EFI和Grub2两个文件夹放到了一个GPT的U盘,但是只有1个FAT32的分区上分区上,开机F9 启动菜单,选择U盘的EFI引导。
尝试用U盘引导进grub命令行,查看各分区名称,可以看到U盘为(hd0,gpt1);本机硬盘的EFI分区为(hd1,gpt1),之后是因此类推。。。(所有标点都为半角)

EFI/ubuntu/grub.cfg修改的地方是 set root=(hd0,gpt1),set prefix=“(hd0,gpt1)/grub2”

然后EFI/grub2/grubefi.cfg 修改的地方是增加了下面一段引导项:
  1. if search --no-floppy -f  /RamOS/Ubuntu18041.squashfs; then
  2. menuentry "Ubuntu 18.04.1 RamOS "  --class ubuntu  {
  3.         insmod gzio
  4.         insmod part_msdos
  5.         insmod part_gpt
  6.         insmod ext2
  7.         insmod ntfs
  8.         insmod probe
  9.         set sfsfile="/RamOS/Ubuntu18041.squashfs"
  10.         set root=(hd1,gpt3)
  11.         search --no-floppy -f --set=aabbcc  $sfsfile
  12.         set root=${aabbcc}
  13.         probe -u --set=ddeeff ${aabbcc}
  14.         linux        /RamOS/vmlinuz-4.15.0-45-generic   root=UUID=${ddeeff} squashfs=$sfsfile  rw nompath nodmraid
  15.         initrd        /RamOS/initrd.img-4.15.0-45-generic
  16. }
  17. fi
复制代码



然后,在本机的win10分区(也就是第3分区,(hd0,gpt3))的根目录下建立了个RamOS文件夹,然后在里边放了下面这三个文件:
Ubuntu18041.squashfs
vmlinuz-4.15.0-45-generic
initrd.img-4.15.0-45-generic

在用U盘引导后,可以成功看到启动菜单上有这个选项,回车后,过了一会,就到了这个界面了。。。

求教,这会是什么原因?如何挽救呢?十分感谢。(难道是vhd用的gpt格式,分了一个200M的EFI分区和剩下的/分区搞的?)

回复

使用道具 举报

379#
 楼主| 发表于 2019-2-20 17:41:16 来自手机 | 只看该作者
可能是精简系统中overlay模块被精简了,也可能是制作initrd时候没有把代码放进去。例如,需要修改mkinitcpio文件。不好说。
回复

使用道具 举报

380#
 楼主| 发表于 2019-2-20 17:42:40 来自手机 | 只看该作者
squashfs文件系统,ubuntu有一个casper机制专门用来引导这种系统。可以尝试一下这种。
回复

使用道具 举报

381#
发表于 2019-2-21 11:00:57 | 只看该作者
2011niumao 发表于 2019-2-20 17:42
squashfs文件系统,ubuntu有一个casper机制专门用来引导这种系统。可以尝试一下这种。

实在是小白,不想再跳去另一个坑了。。。粗略的查了下,casper貌似是挂在一个文件或分区,来实现的,第一,不想单独分区,否则就直接再U盘上分一区去安装ubuntu了,如果是用单一文件的话,貌似说是必须得保存在fat32磁盘上。目前u盘就一个EFI和一个NTFS。。。。

所以,觉得楼主的squashfs方案是最好的解决方案。。。

我再尝试一下用官方的ubuntu 18.04.2 LTS版本来装一下实验吧。。。来辨别是不是精简版太精简了,导致失败了。
回复

使用道具 举报

382#
 楼主| 发表于 2019-2-21 15:54:20 | 只看该作者
本帖最后由 2011niumao 于 2019-2-21 15:55 编辑
telanx 发表于 2019-2-21 11:00
实在是小白,不想再跳去另一个坑了。。。粗略的查了下,casper貌似是挂在一个文件或分区,来实现的,第一 ...


casper没有你说的这些限制的.大体程序是,在vhd系统中安装casper,然后重新制作initrd. 把initrd与vmlinuz拿出来, 重启即可.   

initrd ,vmlinuz,与 squashfs三个文件还是可以放在任意ntfs分区里面,但是有一个固定要求是,必须在分区下面的一个名叫casper目录以内.

所谓fat32分区放一个文件是用于保存一些系统改变,另外设置了一个文件保存系统更改,这个文件必须放在fat32格式分区上.如果不保存系统更改,不需要这一点.

我这里提供的squashfs文件引导机制,其实主要目标是对linux其他发行版给出的 ,顺便给出ubuntu的.因为其他发行版没有这个casper机制.  有了这里的引导机制后就可以做成squashfs系统放在移动硬盘或优盘里面带着走了.
回复

使用道具 举报

383#
发表于 2019-2-21 16:52:48 | 只看该作者
谢谢楼主解惑。
这么看来,如果是用Ubuntu的话,那casper是最佳选择了。再double confirm一下,那个用来存储系统改变的文件,是可以没有的(如果不需要改变系统)?如果想要这个文件来预防以后可能会需要改系统的话,可否放到EFI的Fat32分区里呢?(反正这个分区也会在开机时被ubuntu自动挂载到/boot/efi目录下,嘿嘿)

另外,请教一下楼主,remastersys做成的sualshfs的live CD,和楼主的制作squashfs的方法相比,能用吗?

谢谢楼主解答!
回复

使用道具 举报

384#
 楼主| 发表于 2019-2-22 20:07:07 | 只看该作者
telanx 发表于 2019-2-21 16:52
谢谢楼主解惑。
这么看来,如果是用Ubuntu的话,那casper是最佳选择了。再double confirm一下,那个用来存 ...

remastersys做成的sualshfs的live CD,和楼主的制作squashfs的方法相比,能用吗?
各是各的方法,彼此不能通用.

如果想要这个文件来预防以后可能会需要改系统的话,可否放到EFI的Fat32分区里呢?
理论上可以的,但是实际上如果改变小,还可以.改变太多,文件会比较大,会超出EFI分区大小就不行了.
回复

使用道具 举报

385#
发表于 2019-3-21 17:37:16 | 只看该作者
大师现在有更新的教程或文件吗?deepin 15.9安装完没有声音,
回复

使用道具 举报

386#
发表于 2019-3-21 22:28:56 | 只看该作者
Hongrongqi 发表于 2019-3-21 17:37
大师现在有更新的教程或文件吗?deepin 15.9安装完没有声音,

为什么ubunti16.4.6也没声音,伪输出,
回复

使用道具 举报

387#
 楼主| 发表于 2019-3-22 19:26:47 | 只看该作者
本帖最后由 2011niumao 于 2019-3-22 19:30 编辑
Hongrongqi 发表于 2019-3-21 22:28
为什么ubunti16.4.6也没声音,伪输出,


伪输出可能是因为对应于内核版本的驱动文件没有安装。
看看/lib/modules/目录下有没有与当前内核版本对应的子目录。
如果没有需要安装一下。可以在新立的里面安装。或者命令安装。例如
把版本更换为自己当前内核的。
  1. sudo apt install linux-image-4.15.0-43-generic
复制代码
回复

使用道具 举报

388#
发表于 2019-3-22 21:14:27 来自手机 | 只看该作者
2011niumao 发表于 2019-3-22 19:26
伪输出可能是因为对应于内核版本的驱动文件没有安装。
看看/lib/modules/目录下有没有与当前内核版本 ...

有文件,还是不行

1553260068365..jpg (93.48 KB, 下载次数: 199)

1553260068365..jpg

1553260419942..jpg (70.95 KB, 下载次数: 184)

1553260419942..jpg
回复

使用道具 举报

389#
发表于 2019-3-22 21:17:25 来自手机 | 只看该作者
Hongrongqi 发表于 2019-3-22 21:14
有文件,还是不行

不行

1553260529051..jpg (84.18 KB, 下载次数: 180)

1553260529051..jpg

1553260611153..jpg (100.97 KB, 下载次数: 188)

1553260611153..jpg
回复

使用道具 举报

390#
发表于 2019-3-22 21:54:17 来自手机 | 只看该作者
Hongrongqi 发表于 2019-3-22 21:17
不行

用root登入连伪输出都没有!这是什么向题???

1553262787325..jpg (85.39 KB, 下载次数: 207)

1553262787325..jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-24 06:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表