无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011niumao
打印 上一主题 下一主题

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

    [复制链接]
1#
发表于 2015-3-10 14:14:08 | 显示全部楼层
感谢楼主提供的方法,我自己测试了一下,发现直接修改initrd.img文件也能实现vhd启动,首先安装kpartx和kpatx-boot,使用zcat /boot/initrd.img | cpio -id解包initrd.img。修改initrd.img中的/scripts/local,加入您上面提供的代码,然后将/sbin下的losetup,shutdown,kpartx复制到initrd.img的/sbin目录,使用find . |  cpio -H newc --create  | gzip -9 > ../initrd.img重新打包生成initrd.img即可启动vhd。。。



楼主有时间可以研究下将linux灌入到img中吗?就像wubi安装ubuntu那样,我估计都不需要多安装什么软件了

点评

直接修改initrd.img也不错。不过对于命令文件,如果有依赖关系。需要手工把依赖的库,相关软连接找到并拷贝到 initrd.img中,比较辛苦和容易遗漏的。还是利用系统的mkinitramfs命令靠谱。 对于img文件,猜测可以  详情 回复 发表于 2015-3-10 16:20
回复

使用道具 举报

2#
发表于 2015-3-10 18:25:29 | 显示全部楼层
2011niumao 发表于 2015-3-10 16:20
直接修改initrd.img也不错。不过对于命令文件,如果有依赖关系。需要手工把依赖的库,相关软连接找到并拷 ...

你应该是用kpartx引导的,wubi安装的ubuntu的initrd。img应该不是用kpartx,它生成的img镜像不是固定大小的,不过据说这种方法不适合efi
回复

使用道具 举报

3#
发表于 2020-6-14 17:20:31 | 显示全部楼层
niumao大佬,研究了vhd的linux这么多年了,还在跟新啊,

点评

每改进改善一点儿则得意忘形奔走相告.  详情 回复 发表于 2020-6-14 19:31
回复

使用道具 举报

4#
发表于 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
回复

使用道具 举报

5#
发表于 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
回复

使用道具 举报

6#
发表于 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文件,有时候能启动有时候不能启动,像碰运气一样的;使用我系统里自带的,从来没有启动成功过。



另外引导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
回复

使用道具 举报

7#
发表于 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)
回复

使用道具 举报

8#
发表于 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
回复

使用道具 举报

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

另外我想在ubuntu20.04下自己制作initrd.img,但是看您的教程,这一段话我不知道该怎么理解:

是指需要把您的代码插入到
  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
回复

使用道具 举报

10#
发表于 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
回复

使用道具 举报

11#
发表于 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, 下载次数: 24)
感谢niumao大佬

点评

真棒!!!!  发表于 2020-6-21 20:50
回复

使用道具 举报

12#
发表于 2021-12-23 14:33:53 | 显示全部楼层
niumao大佬还在不忘初心的修改vhd版ubuntu啊。上个月下载了20.04版再公司电脑用正常,回家里电脑测试不行,进入initramfs。

点评

应该是时间久了不断升级,把以前修改的文件还原为原始版本了,主要是init local mkinitramfs这几个文件。需要重新编辑一下,重新制作一下initrd.img。  详情 回复 发表于 2021-12-23 19:28
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-2 17:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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