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

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

   火... [复制链接]
发表于 2020-6-15 10:08:17 | 显示全部楼层
昨天测试了一下,用virtualbox安装lubuntu20.04,按照之前的方法,发现配置文件有些出入,最后做出的文件,无法启动,出现initramfs,是新版的ubuntu配置文件有差异吗?以前用ubuntu15的时候,我直接解包initrd.img,然后修改相关文件后重新打包都可以启动的。不知道是不是换了gpt分区的原因?

点评

感觉还是参数配置不正确导致的。 gpt磁盘,kroot参数有可能是/dev/mapper/loop0p2 或者 /dev/mapper/loop0p3 因为微软在对GPT磁盘分区时候会有一两个保留分区的 可以直接在一楼百度云链接下载ubuntu 2004的引导  详情 回复 发表于 2020-6-15 14:26
回复

使用道具 举报

 楼主| 发表于 2020-6-15 14:26:34 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-15 14:27 编辑
ql1307096 发表于 2020-6-15 10:08
昨天测试了一下,用virtualbox安装lubuntu20.04,按照之前的方法,发现配置文件有些出入,最后做出的文件, ...

感觉还是参数配置不正确导致的。  gpt磁盘,kroot参数有可能是/dev/mapper/loop0p2 或者 /dev/mapper/loop0p3  因为微软在对GPT磁盘分区时候会有一两个保留分区的
另一个原因可能是引导时候使用的是没有改造过原始initrd.img文件。
可以直接在一楼百度云链接下载ubuntu 2004的引导文件vmlinuz2004 initrd.img2004 改名后用他们引导看看。

点评

谢谢大佬,最终发现是修改文件的时候,个别行额外换行。vi查看ntfs-3g出现了异常字符,修改后功能正常了  详情 回复 发表于 2020-11-14 11:07
在虚拟机中,硬盘是mbr格式的,也只分了一个区,不知道为什么启动不了,很久以前做的一个ubuntu12.04的vhd反倒可以启动。肯定是我哪里配置错误了。另外,百度盘的速度实在是太太太坑了,您做好的squashfs文件,我下  详情 回复 发表于 2020-6-16 09:36
回复

使用道具 举报

 楼主| 发表于 2020-6-15 14:32:51 | 显示全部楼层
2011hjcjie 发表于 2020-6-14 22:43
论坛有你更精彩!
有现成的案例有兴趣更深入了解linux命令了,多谢!
如可能再发个UOS版的

基本上是原版的配置,没有改动。可以自己打造好自己喜欢的系统再制作成squashfs文件,随身携带了
回复

使用道具 举报

发表于 2020-6-16 09:36:25 | 显示全部楼层
2011niumao 发表于 2020-6-15 14:26
感觉还是参数配置不正确导致的。  gpt磁盘,kroot参数有可能是/dev/mapper/loop0p2 或者 /dev/mapper/loo ...

在虚拟机中,硬盘是mbr格式的,也只分了一个区,不知道为什么启动不了,很久以前做的一个ubuntu12.04的vhd反倒可以启动。肯定是我哪里配置错误了。另外,百度盘的速度实在是太太太坑了,您做好的squashfs文件,我下载了快一个星期了每天都不关电脑的,现在还没下载一半,平时速度就10几k,最快的时候不超过30k,建议可以换网盘了。

点评

哦,建议只下载两个引导文件,就是initrd.img-xxxx和vmlinuz ,其余的使用原版20.04自己安装即可.  详情 回复 发表于 2020-6-16 12:32
回复

使用道具 举报

 楼主| 发表于 2020-6-16 12:32:27 | 显示全部楼层
ql1307096 发表于 2020-6-16 09:36
在虚拟机中,硬盘是mbr格式的,也只分了一个区,不知道为什么启动不了,很久以前做的一个ubuntu12.04的vh ...

哦,建议只下载两个引导文件,就是initrd.img-xxxx和vmlinuz ,其余的使用原版20.04自己安装即可.
回复

使用道具 举报

发表于 2020-6-16 19:20:27 | 显示全部楼层
本帖最后由 ql1307096 于 2020-6-16 19:23 编辑

在virtual虚拟机里使用固定大小的vhd虚拟硬盘文件(没有启用efi,硬盘只分一个区),安装ubuntu20.04后,使用您提供的方法:
  1. mksquashfs mm tt/ubuntu/UBUNTU2004.squashfs -b 1M -comp xz -e tmp/mm tmp/tt
复制代码
生成了squashfs文件,并且准备了相关的启动文件及设置好grub2菜单。出现以下问题
1、使用系统里自带的vmlinuz和initrd,无法启动,出现initramfs;
2、使用您提供的vmlinuz-5.4.0-26-generic和initrd.img,可以成功启动,但是不是百分之百能启动,经常也会到initramfs里,按三键重启再进,有时候能启动有时候不能启动,碰运气一样。
3、使用您提供的vmlinuz-5.4.0-26-generic和initrd.img,启动vhd文件,失败,出现initramfs。
我的grub2文件:
  1. menuentry "UBUNTU2004-squashfs "  --class ubuntu  {
  2.                 insmod gzio
  3.                 insmod part_msdos
  4.                 insmod part_gpt
  5.                 insmod ext2
  6.                 insmod ntfs
  7.                 insmod probe
  8.                 set sfsfile="/casper/ubuntu20.04.squashfs"
  9.                 search --no-floppy -f --set=aabbcc  $sfsfile
  10. set root=${aabbcc}
  11.                 probe -u --set=ddeeff ${aabbcc}
  12.                 linux         /casper/vmlinuz-5.4.0-26-generic   root=UUID=${ddeeff} squashfs=$sfsfile  rw apparmor=0
  13.                 initrd         /casper/initrd.img-5.4.0-26-generic
  14.         }
复制代码
注:使用您提供的vmlinz和initrd文件,有时候能启动有时候不能启动,像碰运气一样的;使用我系统里自带的,从来没有启动成功过。
微信图片_20200616181911.jpg


另外引导vhd启动的菜单(使用您提供的vmlinz和initrd),不能启动,进入initramfs:
  1. menuentry 'ubuntu20_vhd' --class ubuntu --class gnu-linux --class gnu --class os {
  2. #recordfail
  3.         insmod gzio
  4.         insmod part_msdos
  5.         insmod part_gpt
  6.         insmod ext2
  7.         insmod ntfs
  8.         insmod probe
  9.         insmod search
  10.         search --no-floppy -f --set=aabbcc /ubuntu20_vhd/ubuntu20.04.vhd
  11.         set root=${aabbcc}
  12.         probe -u --set=ddeeff ${aabbcc}
  13.         linux        /ubuntu20_vhd/vmlinuz-5.4.0-26-generic root=UUID=${ddeeff} vloop=/ubuntu20_vhd/ubuntu20.04.vhd vlooppart=p1
  14.         initrd        /ubuntu20_vhd/initrd.img-5.4.0-26-generic
  15. }
复制代码

点评

squashfs的菜单,没有问题.怀疑有时候自动探索uuid不能成立.可以尝试把linux语句中的root=更改为 这里ABCDE就是你的squashfs文件所在硬盘分区的标签, 不能有中文或空格. 可以尝试一下. 从图片上看是挂载根分区失败  详情 回复 发表于 2020-6-16 21:47
vloop vlooppart只是刚刚开始制作vhd时候使用的,基于别人的软件(vboot vmlimte), 很早就废止了. 现在使用的参数是 root kloop kroot . root不变, kloop是vhd文件名(带路径).kroot 是真正根设备名字, 你这里是 kro  详情 回复 发表于 2020-6-16 21:39
回复

使用道具 举报

 楼主| 发表于 2020-6-16 21:39:17 | 显示全部楼层
ql1307096 发表于 2020-6-16 19:20
在virtual虚拟机里使用固定大小的vhd虚拟硬盘文件(没有启用efi,硬盘只分一个区),安装ubuntu20.04后,使 ...

vloop vlooppart只是刚刚开始制作vhd时候使用的,基于别人的软件(vboot vmlimte),
很早就废止了.
现在使用的参数是 root kloop kroot . root不变, kloop是vhd文件名(带路径).kroot 是真正根设备名字,
你这里是 kroot=/dev/mapper/loop0p1把菜单的linux那一句改动如下
  1. linux        /ubuntu20_vhd/vmlinuz-5.4.0-26-generic root=UUID=${ddeeff} kloop=/ubuntu20_vhd/ubuntu20.04.vhd kroot=/dev/mapper/loop0p1
复制代码
其他不用变 应该可以启动.
至于squashfs系统. 还不清楚原因.一个是再检查引导参数,一个是在制作squashfs系统时候可以把/etc/fstab里面的 / 那一行开头加上几个 ###注释掉,好些.

点评

按照您的方法修改了启动参数,kloop,kroot,还是不能启动,出现initramfs,不过这次的错误跟之前的不一样; 另外我确认在制作squashfs之前,注释了/etc/fsta里的左右内容。 不知道是不是我的硬盘环境复杂了:1  详情 回复 发表于 2020-6-17 09:27
回复

使用道具 举报

 楼主| 发表于 2020-6-16 21:47:05 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-16 21:50 编辑
ql1307096 发表于 2020-6-16 19:20
在virtual虚拟机里使用固定大小的vhd虚拟硬盘文件(没有启用efi,硬盘只分一个区),安装ubuntu20.04后,使 ...

squashfs的菜单,没有问题.怀疑有时候自动探索uuid不能成立.可以尝试把linux语句中的root=更改为
  1. root=LABEL=ABCDE
复制代码
这里ABCDE就是你的squashfs文件所在硬盘分区的标签, 不能有中文或空格.
  1. linux         /casper/vmlinuz-5.4.0-26-generic   root=LABEL=ABCDE  squashfs=$sfsfile  rw apparmor=0
复制代码

可以尝试一下.  从图片上看是挂载根分区失败, 不清楚原因.

点评

在grub2下一步一步的执行命令,启动是没有问题的,我怀疑是不是在某一步还没有生效的情况下就执行了下一条命令的原因呢?grub2里不知道能不能插入一个等待的命令?  详情 回复 发表于 2020-6-17 09:29
回复

使用道具 举报

发表于 2020-6-17 09:27:19 | 显示全部楼层
2011niumao 发表于 2020-6-16 21:39
vloop vlooppart只是刚刚开始制作vhd时候使用的,基于别人的软件(vboot vmlimte),
很早就废止了.
现在使 ...

按照您的方法修改了启动参数,kloop,kroot,还是不能启动,出现initramfs,不过这次的错误跟之前的不一样;
另外我确认在制作squashfs之前,注释了/etc/fsta里的左右内容。

不知道是不是我的硬盘环境复杂了:1个120G固态盘(gpt)作为启动设备,一个3T机械盘(gpt)存放了squashfs文件,还有一个1T机械盘(mbr)
回复

使用道具 举报

发表于 2020-6-17 09:29:18 | 显示全部楼层
2011niumao 发表于 2020-6-16 21:47
squashfs的菜单,没有问题.怀疑有时候自动探索uuid不能成立.可以尝试把linux语句中的root=更改为
这里ABC ...

在grub2下一步一步的执行命令,启动是没有问题的,我怀疑是不是在某一步还没有生效的情况下就执行了下一条命令的原因呢?grub2里不知道能不能插入一个等待的命令?

点评

grub2里面命令行模式启动没有问题,那就很奇特了.只知道一种延迟时间的方式, 就是在linux语句中加入一条 rootdelay=90 ,意思是等90秒(?)后挂载根分区,也许有效. 此外这里的squashfs文件系统的启动模式是我利用ove  详情 回复 发表于 2020-6-17 12:55
回复

使用道具 举报

发表于 2020-6-17 09:36:43 | 显示全部楼层
本帖最后由 ql1307096 于 2020-6-17 10:20 编辑

另外我想在ubuntu20.04下自己制作initrd.img,但是看您的教程,这一段话我不知道该怎么理解:
2020-06-17_013005.png
是指需要把您的代码插入到
  1. [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-bottom"
  2.         run_scripts /scripts/local-bottom
  3.         [ "$quiet" != "y" ] && log_end_msg
  4. }
复制代码
这一段的前面吗?
这样制作的initrd文件,是可以启动vhd和squashfs的吧?注:ubuntu20.04的mkinitramfs文件里,没有# util-linux 这一段的(util-linux已安装),我把那段代码放在# module-init-tools这一节里不知道可行吗
用此方法制作的squashfs,能支持persistent参数吗?我昨天大概测试了一下,casper-rw文件放在ext4分区上,grub里加入了persistent,但是没有效果,不知道是ext4文件系统的原因还是其他?

点评

对以前的ubuntu的制作initrd.img的过程加了一些注释,基本过程不变.请参考附件看看  详情 回复 发表于 2020-6-17 13:40
回复

使用道具 举报

 楼主| 发表于 2020-6-17 12:55:08 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-17 12:56 编辑
ql1307096 发表于 2020-6-17 09:29
在grub2下一步一步的执行命令,启动是没有问题的,我怀疑是不是在某一步还没有生效的情况下就执行了下一 ...

grub2里面命令行模式启动没有问题,那就很奇特了.只知道一种延迟时间的方式,
就是在linux语句中加入一条 rootdelay=90 ,意思是等90秒(?)后挂载根分区,也许有效.

此外这里的squashfs文件系统的启动模式是我利用overlay机制另外单独实现的,
如果想使用传统的casper机制,需要在系统里安装一个软件,名字叫 casper?或者boot-casper?
记不清了. 安装以后再制作一次initrd.img ,才可以使用传统casper引导,
此时才能使用 casper-rw 文件和persistent. (引导时必须使用 boot=casper )
这种 casper引导就是系统光盘的引导,网上文章很多,可以百度看看.

回复

使用道具 举报

 楼主| 发表于 2020-6-17 13:40:03 | 显示全部楼层

README-UBUNTUKLOOP

本帖最后由 2011niumao 于 2020-6-17 13:44 编辑
ql1307096 发表于 2020-6-17 09:36
另外我想在ubuntu20.04下自己制作initrd.img,但是看您的教程,这一段话我不知道该怎么理解:

是指需要 ...

对以前的ubuntu的制作initrd.img的过程加了一些注释,基本过程不变.
主要是说明一下各个文件如何修改.
有一个变动是,在init文件里多修改了几处(一共修改四处),把引导参数
的小写转化为大写来使用了(可能不是必须的,但为了和整个init风格一致,故从之).

请参考附件里的pdf文件,有详细改动说明. readme-ubuntukloop.zip (421.26 KB, 下载次数: 10)


点评

感谢感谢,我再试试看,  详情 回复 发表于 2020-6-17 13:49
回复

使用道具 举报

发表于 2020-6-17 13:49:50 | 显示全部楼层
2011niumao 发表于 2020-6-17 13:40
对以前的ubuntu的制作initrd.img的过程加了一些注释,基本过程不变.
主要是说明一下各个文件如何修改.
...

感谢感谢,我再试试看,

点评

刚才那个附件是基于UBUNTU 1804 LTS的 关于ubuntu 20.04LTS的init文件,只有那个nosuid语句在后面了.所有改动是一样的. 看图可知.  详情 回复 发表于 2020-6-17 14:55
回复

使用道具 举报

 楼主| 发表于 2020-6-17 14:55:45 | 显示全部楼层
ql1307096 发表于 2020-6-17 13:49
感谢感谢,我再试试看,

刚才那个附件是基于UBUNTU 1804 LTS的
关于ubuntu 20.04LTS的init文件,只有那个nosuid语句在后面了.所有改动是一样的. initubt2004kloop.zip (104.06 KB, 下载次数: 10)

看图可知.

ubuntu 20.04 init

ubuntu 20.04 init

点评

感谢感谢,按照您提供的方法,ubuntu20.04成功实现了vhd启动和squahfs启动。另外将您的教程综合我的经历重新整理了一份文档,送给有需要的人吧。  详情 回复 发表于 2020-6-21 16:49
回复

使用道具 举报

发表于 2020-6-21 16:49:28 | 显示全部楼层

Windows下将GRUB2装入memdisk

本帖最后由 ql1307096 于 2020-6-21 16:54 编辑
2011niumao 发表于 2020-6-17 14:55
刚才那个附件是基于UBUNTU 1804 LTS的
关于ubuntu 20.04LTS的init文件,只有那个nosuid语句在后面了.所有 ...

感谢感谢,按照您提供的方法,ubuntu20.04成功实现了vhd启动和squahfs启动。另外将您的教程综合我的经历重新整理了一份文档,分享给有需要的人吧。
KLOOP教程-UBUNTU篇.7z (13.8 KB, 下载次数: 25)
感谢niumao大佬
回复

使用道具 举报

发表于 2020-8-20 22:21:12 | 显示全部楼层
反向爬了10几层,还是没搞明白,求大神们帮忙。
我想启动自己的vhd,Ubuntu2004的。
U盘引导,镜像在电脑第二个硬盘上,该盘只有一个分区
在选择指定的引导后,电脑不显示任何内容,改变显示器连接后屏幕左上角出现一个光标,但不能输入内容,这是什么情况?
引导的内容是参考最近一个大佬的总结写的
回复

使用道具 举报

发表于 2020-8-20 22:24:29 | 显示全部楼层
虚拟机我装了两个2004,第二个是我今天重新装的,按照ql1307096同学分享的总结操作的,还是不行。
回复

使用道具 举报

发表于 2020-8-20 22:31:50 | 显示全部楼层
我感觉我主要是几个点没明白
①kroot=/dev/mapper/loop0p2
这个loop0p2的意思是第一盘的第三分区吗?
②虚拟机内/etc/fstab应该怎么改
我自己改了一个,然后虚拟机挂掉了,进不了系统了,还好操作之前备份了整个vhd
回复

使用道具 举报

 楼主| 发表于 2020-8-22 16:12:47 来自手机 | 显示全部楼层
kroot是虚拟硬盘里根分区在linux下名字。虚拟硬盘一个分区时候就是loop0p1。etc/fstab这个文件可以删除。或者注释掉所有内容。
回复

使用道具 举报

发表于 2020-8-23 09:27:52 | 显示全部楼层
还有就是都要放在fat32分区吗?ntfs分区行不行
回复

使用道具 举报

 楼主| 发表于 2020-8-23 09:37:26 来自手机 | 显示全部楼层
ntfs分区可以。fat32分区里单一文件不能超过4g的
回复

使用道具 举报

发表于 2020-9-1 23:18:18 | 显示全部楼层
原来用下面引导成功进入桌面,不知是什么原因今天不能进入桌面;
menuentry "ubt.vhd" --class ubuntu {
        insmod gzio
        insmod part_msdos
        insmod part_gpt
        insmod ext2
        insmod ntfs
        insmod probe
        set vhdfile="/ubuntu/ubt.vhd"
        set root=(hd1,gpt2)
        search --no-floppy -f --set=aabbcc  $vhdfile
        set root=${aabbcc}
        probe -u --set=ddeeff ${aabbcc}
        loopback lp0 $vhdfile
        linux        (lp0,1)/boot/vmlinuz root=UUID=${ddeeff}  kloop=$vhdfile  kroot=/dev/mapper/loop0p1
        initrd        (lp0,1)/boot/initrd.img
}

改为如下引导,正常进入桌面
menuentry "ubt.vhd"  --class ubuntu  {
    recordfail
    insmod gzio
    insmod part_msdos
    insmod part_gpt
    insmod ext2
    insmod ntfs
    insmod probe
    insmod search
    search --no-floppy -f --set=aabbcc /ubuntu/ubt.vhd
    set root=${aabbcc}
    probe -u --set=ddeeff ${aabbcc}
    linux   /ubuntu/vmlinuz root=UUID=${ddeeff} kloop=/ubuntu/ubt.vhd kroot=/dev/mapper/loop0p1
    initrd  /ubuntu/initrd.img
}

1. 不知是什么原因,希望得到大神指导
2. 我用的是vbt.vhd 2004,  貌似没有配置无线网络。
   怎么配置,望赐教!
回复

使用道具 举报

 楼主| 发表于 2020-9-2 19:08:10 | 显示全部楼层
1, 两者的区别在于,第一种使用的引导文件initrd.img在vhd文件内,第二种使用的引导文件在vhd文件外部。如果升级以后,使用了原版的init local  mkinitcpio等替换了修订过得能引导vhd的版本,则出现这个毛病。只能重新把vhd内部的init local  等文件再重新修改一遍,重新生成对应最新版本的initrd.img就可以
2,可能需要手动源码编译安装无线驱动,或者尝试在有线网络下在软件更新那里搜索选择安装专有驱动。
回复

使用道具 举报

发表于 2020-10-2 22:46:45 | 显示全部楼层
现在Deepin20正式版发布了,在虚拟机使用体验还不错,打算做个VHD,发现几个需要修改的文件内容与教程不太相同,希望有制作成功的介绍下经验,非常感谢!
回复

使用道具 举报

发表于 2020-10-28 11:26:59 | 显示全部楼层
本帖最后由 songjl1995 于 2020-10-28 11:29 编辑

大神,我UBUNTU2004用您的initrd.img-5.4.0-26-generic可以启动
自己按照教程做了一个initrd.img-5.4.0-52-generic
提示ALERT! UUID=xxxxxxxxx does not exist. Dropping to a shell!

两个启动菜单是相近的,只是改了initrd.img和vmlinuz的文件名

生成的initrd.img-5.4.0-52-generic时候,ntfs_3g报了一些not found的错误,但是文件还是生成了,正常情况下不会报这个对吗?

点评

ntfs-3g的编译应该不是问题. 建议按照说明重新制作initrd.img看看. 或者在grub2菜单界面按e键 来编辑启动参数.root=/dev/sdaX 或者root=LABEL=XXXXX 尝试一下看能不能启动. 这里XXXXX换成硬盘分区标签, sdaX中X  详情 回复 发表于 2020-10-31 10:39
回复

使用道具 举报

 楼主| 发表于 2020-10-31 10:39:52 | 显示全部楼层
songjl1995 发表于 2020-10-28 11:26
大神,我UBUNTU2004用您的initrd.img-5.4.0-26-generic可以启动
自己按照教程做了一个initrd.img-5.4.0-52 ...

ntfs-3g的编译应该不是问题. 建议按照说明重新制作initrd.img看看.  或者在grub2菜单界面按e键
来编辑启动参数.root=/dev/sdaX 或者root=LABEL=XXXXX  尝试一下看能不能启动.
这里XXXXX换成硬盘分区标签, sdaX中X是分区序号.
回复

使用道具 举报

发表于 2020-11-1 17:37:38 | 显示全部楼层
看得一头雾水,就想把统信UOS专业版装进VHDX使用,看来步履艰难呀。
回复

使用道具 举报

发表于 2020-11-6 18:46:45 | 显示全部楼层
收藏记录
回复

使用道具 举报

发表于 2020-11-14 11:07:03 | 显示全部楼层
2011niumao 发表于 2020-6-15 14:26
感觉还是参数配置不正确导致的。  gpt磁盘,kroot参数有可能是/dev/mapper/loop0p2 或者 /dev/mapper/loo ...

谢谢大佬,最终发现是修改文件的时候,个别行额外换行。vi查看ntfs-3g出现了异常字符,修改后功能正常了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-30 05:41

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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