无忧启动论坛

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

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

    [复制链接]
181#
 楼主| 发表于 2020-6-12 19:18:43 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-12 19:31 编辑
2011hjcjie 发表于 2020-6-12 18:26
固定VHD还是没有启动成功
引导代码如下,请赐教!
menuentry "ubt.vhd" --class ubuntu {

首先,grub2没有问题,唯一的问题可能是linux命令中的root ,kroot, kloop参数是否正确了

kroot参数是不是应该改为 /dev/mapper/loop0p2 ? 还是 /dev/mapper/loop0p3?
可以在squashfs 文件系统里面,使用 kpartx -av VHD文件名 看出来根分区应该是第几个的.

如果windows下分区gpt磁盘可能有ms隐藏分区的,因此可能是 /dev/mapper/loop0p2 或者/dev/mapper/loop0p3

点评

kroot 参数应该每问题吧  详情 回复 发表于 2020-6-12 20:14
回复

使用道具 举报

182#
 楼主| 发表于 2020-6-12 19:27:21 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-12 19:36 编辑
2011hjcjie 发表于 2020-6-12 18:26
固定VHD还是没有启动成功
引导代码如下,请赐教!
menuentry "ubt.vhd" --class ubuntu {

root参数也有可能不对. 有些场合下自动查询uuid,并传递给linux内核的做法会失效
(比如安全启动的场合. 查询uuid的模块不能加载)
此时只能直接给出明确的root参数值.比如好处理的,可以使用LABEL.
  1. root=LABEL=Windows
复制代码

把那个Windows更改为你的硬盘上vhd文件所在分区的标签即可.
(这里分区标签不能中文或者有空格)

如果root kloop kroot 参数正确,还有一种可能就是恢复到固定vhd时候出错
(比如没有把固定vhd中分区格式化为ext4),那就需要重新进入squashfs系统,重新格式化和运行rsync 再制作一遍了.

回复

使用道具 举报

183#
 楼主| 发表于 2020-6-12 19:45:54 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-12 19:58 编辑
2011hjcjie 发表于 2020-6-12 18:26
固定VHD还是没有启动成功
引导代码如下,请赐教!
menuentry "ubt.vhd" --class ubuntu {
还有一种情形,需要注意
就是先进入squashfs系统,在这个系统下修改vhd系统中的/etc/fstab文件,把它的根分区 / 那一行修改正确.
在制作squashfs文件系统时候,会注释掉 / 这一行,如下
  1. # /etc/fstab: static file system information.
  2. #
  3. # Use 'blkid -o value -s UUID' to print the universally unique identifier
  4. # for a device; this may be used with UUID= as a more robust way to name
  5. # devices that works even if disks are added and removed. See fstab(5).
  6. #
  7. # <file system> <mount point>   <type>  <options>       <dump>  <pass>
  8. proc            /proc           proc    nodev,noexec,nosuid 0       0
  9. ###/dev/sda10
  10. ###UUID=29b92931-2ac3-4720-a5ed-40b9a3cc1241      /      ext4      errors=remount-ro      0      1
复制代码
这里的UUID前面的三个###是注释掉这一行的意思. 进入squashfs系统后,挂载vhd文件,将这三个###号去掉,运行blkid查询出正确的uuid,替换掉那一串字母数字组合,保存,
  1. # /etc/fstab: static file system information.
  2. #
  3. # Use 'blkid -o value -s UUID' to print the universally unique identifier
  4. # for a device; this may be used with UUID= as a more robust way to name
  5. # devices that works even if disks are added and removed. See fstab(5).
  6. #
  7. # <file system> <mount point> <type> <options> <dump> <pass>
  8. proc /proc proc nodev,noexec,nosuid 0 0
  9. ###/dev/sda10
  10. UUID=812c1d35-3253-4a11-88db-e2e0834bf717 / ext4 errors=remount-ro 0 1
复制代码
(这里UUID后面是随便写的,需要更换为vhd中linux系统的根分区的uuid).重启后就可以进入了.

在squashfs 文件系统中需执行以下命令
  1. sudo kpartx -av VHD文件名(带路径)
  2. sudo mount /dev/mapper/loop8px /mnt
  3. sudo blkid
  4. sudo gedit /mnt/etc/fstab
  5. sudo umount /mnt
  6. sudo kpartx -d /dev/loop8
  7. sudo losetup -d /dev/loop8
  8. sudo reboot
复制代码

点评

loop8px 这个参数是什么意思?  详情 回复 发表于 2020-6-12 20:39
最后这种可能性最大. 我也遇到了几次图片中显示的引导失败情形, 改了/etc/fstab 就成功引导了. 猜想其机制是: 由于/etc/fstab里的根分区挂载信息被注释掉 (不注释时候启动squashfs文件系统会出错) 所以系统检测  详情 回复 发表于 2020-6-12 19:51
回复

使用道具 举报

184#
 楼主| 发表于 2020-6-12 19:51:22 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-12 19:52 编辑
2011niumao 发表于 2020-6-12 19:45
还有一种情形,需要注意
就是先进入squashfs系统,在这个系统下修改vhd系统中的/etc/fstab文件,把它的根分 ...

最后这种可能性最大. 我也遇到了几次图片中显示的引导失败情形,
改了/etc/fstab 就成功引导了.
猜想其机制是:
由于/etc/fstab里的根分区挂载信息被注释掉
(不注释时候启动squashfs文件系统会出错)
所以系统检测完根分区后应该是不能重新再挂载根分区了. 所以就出错了

在/etc/fstab中最好还是使用uuid,这样可以保证根分区的正确性.这里
uuid指的是vhd硬盘里面linux系统所在分区的uuid .

回复

使用道具 举报

185#
 楼主| 发表于 2020-6-12 20:53:09 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-12 20:55 编辑

那就说明 root kloop kroot 没有问题
那个 8(随便写的)---看你的kpartx -av的输出而定--你这里是 11 --- 就使用 11
  1. sudo mount /dev/mapper/loop11p1 /mnt
复制代码

mnt 更改为 /mnt

点评

uuid那一行每注释掉,不过貌似id不正确 我改改试一下...  详情 回复 发表于 2020-6-12 21:09
回复

使用道具 举报

186#
 楼主| 发表于 2020-6-12 21:19:20 | 显示全部楼层
本帖最后由 2011niumao 于 2020-6-12 21:22 编辑
2011hjcjie 发表于 2020-6-12 21:09
uuid那一行没注释掉,不过貌似id不正确
我改改试一下...

哦,那肯定会影响启动. 改好就应该可以跑起来了.应该更改为10cc----cda3那一串.
sudo losetup -d

点评

再次感谢楼主耐心解答! 已成功启动,固定vhd桌面更完美 squashfs桌面有点小问题...  详情 回复 发表于 2020-6-12 21:36
回复

使用道具 举报

187#
 楼主| 发表于 2020-6-12 21:42:25 | 显示全部楼层
祝贺!!!!慢慢调教吧.
回复

使用道具 举报

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

每改进改善一点儿则得意忘形奔走相告.

点评

论坛有你更精彩! 有现成的案例有兴趣更深入了解linux命令了,多谢! 如可能再发个UOS版的  详情 回复 发表于 2020-6-14 22:43
回复

使用道具 举报

189#
 楼主| 发表于 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
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

192#
 楼主| 发表于 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
回复

使用道具 举报

193#
 楼主| 发表于 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
回复

使用道具 举报

194#
 楼主| 发表于 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引导就是系统光盘的引导,网上文章很多,可以百度看看.

回复

使用道具 举报

195#
 楼主| 发表于 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
回复

使用道具 举报

196#
 楼主| 发表于 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)

看图可知.

2020-06-17 14-42-21屏幕截图.png (80.62 KB, 下载次数: 157)

ubuntu 20.04 init

ubuntu 20.04 init

点评

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

200#
 楼主| 发表于 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是分区序号.
回复

使用道具 举报

201#
 楼主| 发表于 2021-2-5 21:58:12 | 显示全部楼层
根系统没有挂载成功.  一般是没有找到vhd文件, 或者是升级后vhd文件里面的initrd.img-XXXX 文件的相应代码被重置为原始状态了.  需要按照教程重新修改对应的脚本重新制作initrd.img文件.
为保险起见.建议把引导使用的vmlinuz initrd.img拷贝到vhd文件外面.
回复

使用道具 举报

202#
 楼主| 发表于 2021-2-7 10:30:27 | 显示全部楼层
本帖最后由 2011niumao 于 2021-2-7 10:34 编辑
piazini 发表于 2021-2-5 22:31
很高兴你还活跃在论坛,之前看帖子最早都14年左右发的,都怕你不在论坛了。感谢楼主,这么及时的回复,因 ...

估计是local init 修改的不对。 重新修改看看。可以使用百度云共享里的initrad.img与vmlinuz引导跑起来,进入vhd后再重新制作
自己版本的initrd.img ,制作好后拷贝到外部。

第一需要自己编译ntfs-3g。
第二,修改local init
第三,修改mkinitramf  /etc/initramfs-tools/modules  
第四, /usr/share/initramfs-tools/scripts/.../ntfs-3g这个文件不用修改了(有时候修改反而不好)。
回复

使用道具 举报

203#
 楼主| 发表于 2021-2-8 11:21:47 | 显示全部楼层
问题二, 没有遇到过.  没用过vm, 我用的是VirtualBox.
问题一, 应该是这个语句local_mount_root()里的语句local_premount
  所有修改在其后. 用条件语句把其后所有语句括起来,在加入kloop相关语句.
  1. local_mount_root()
  2. {
  3.         local_top
  4.         local_device_setup "${ROOT}" "root file system"
  5.         ROOT="${DEV}"

  6.         # Get the root filesystem type if not set
  7.         if [ -z "${ROOTFSTYPE}" ]; then
  8.                 FSTYPE=$(get_fstype "${ROOT}")
  9.         else
  10.                 FSTYPE=${ROOTFSTYPE}
  11.         fi

  12.         [color=Magenta]local_premount
  13. [/color]
  14.         if [ "${readonly}" = "y" ] && \
  15.            [ -z "$LOOP" ]; then
  16.                 roflag=-r
  17.         else
  18.                 roflag=-w
  19.         fi

  20.         # FIXME This has no error checking
  21.         [ -n "${FSTYPE}" ] && modprobe ${FSTYPE}

  22.         checkfs ${ROOT} root "${FSTYPE}"

  23.         # FIXME This has no error checking
  24.         # Mount root
  25.         mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
  26.         mountroot_status="$?"
  27.         if [ "$LOOP" ]; then
  28.                 if [ "$mountroot_status" != 0 ]; then
  29.                         if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then
  30.                                 panic "
  31. Could not mount the partition ${ROOT}.
  32. This could also happen if the file system is not clean because of an operating
  33. system crash, an interrupted boot process, an improper shutdown, or unplugging
  34. of a removable device without first unmounting or ejecting it.  To fix this,
  35. simply reboot into Windows, let it fully start, log in, run 'chkdsk /r', then
  36. gracefully shut down and reboot back into Windows. After this you should be
  37. able to reboot again and resume the installation.
  38. (filesystem = ${FSTYPE}, error code = $mountroot_status)
  39. "
  40.                         fi
  41.                 fi

  42.                 mkdir -p /host
  43.                 mount -o move ${rootmnt} /host

  44.                 while [ ! -e "/host/${LOOP#/}" ]; do
  45.                         panic "ALERT!  /host/${LOOP#/} does not exist.  Dropping to a shell!"
  46.                 done

  47.                 # Get the loop filesystem type if not set
  48.                 if [ -z "${LOOPFSTYPE}" ]; then
  49.                         eval $(fstype < "/host/${LOOP#/}")
  50.                 else
  51.                         FSTYPE="${LOOPFSTYPE}"
  52.                 fi
  53.                 if [ "$FSTYPE" = "unknown" ] && [ -x /sbin/blkid ]; then
  54.                         FSTYPE=$(/sbin/blkid -s TYPE -o value "/host/${LOOP#/}")
  55.                         [ -z "$FSTYPE" ] && FSTYPE="unknown"
  56.                 fi

  57.                 if [ ${readonly} = y ]; then
  58.                         roflag=-r
  59.                 else
  60.                         roflag=-w
  61.                 fi

  62.                 # FIXME This has no error checking
  63.                 modprobe loop
  64.                 modprobe ${FSTYPE}

  65.                 # FIXME This has no error checking
  66.                 mount ${roflag} -o loop -t ${FSTYPE} ${LOOPFLAGS} "/host/${LOOP#/}" ${rootmnt}

  67.                 if [ -d ${rootmnt}/host ]; then
  68.                         mount -o move /host ${rootmnt}/host
  69.                 fi
  70.         fi
  71. }
复制代码


回复

使用道具 举报

204#
 楼主| 发表于 2021-2-15 23:21:33 来自手机 | 显示全部楼层
第一个问题,用booice改动mbr后出来第一个界面自然是grldr.mbr。你可以用bootice修改mbr为nt6吧,恢复为先引导win7,再使用bootice修改bcd文件,加入引导项,引导项里选择grldr.mbr的,这个是你期望的结果。
回复

使用道具 举报

205#
 楼主| 发表于 2021-2-15 23:22:23 来自手机 | 显示全部楼层
第二个问题,好像只有grub2有这样的效果。grub4dos不行。
回复

使用道具 举报

206#
 楼主| 发表于 2021-2-18 19:08:55 | 显示全部楼层
没有扩容过. 真需要扩容时候, 我是先制作一个大的固定vhd, 把旧的系统做成squashfs系统, 再恢复到大的新vhd上.  这个过程唯一问题就是需要改写以下/etc/fstab, 把里面的旧根分区的UUID更改为新的UUID.

直接扩容我怀疑也需要同样的操作,修改UUID. 其他应该不动,  应该不需要重新制作initrd.img.
回复

使用道具 举报

207#
 楼主| 发表于 2021-2-20 10:40:30 | 显示全部楼层
piazini 发表于 2021-2-19 13:29
我想进入单用户模式,但是怎么修改grub的相关文件就是不生效。修改完要用update-grub命令,难道和vhd同目录 ...

第一个,是linux本身命令,不懂. 还是建议不直接扩容而是使用mksquashfs命令备份后恢复这种方式.
第二个, 直接启动到vhd系统的grub菜单现在应该是在vhd外面的,与vhd系统无关(vhd系统的grub2菜单仅仅在虚拟机启动时候有用)
回复

使用道具 举报

208#
 楼主| 发表于 2021-2-21 22:04:19 | 显示全部楼层
第一点,可以进入系统后手动挂载. 或者写成一个脚本,开机后自动运行一下也行.
比如,你的第二个固定vhd文件名字为data.vhd, 在系统vhd同一个子目录ubuntu里面, 可以如下
  1. sudo kpartx -av /host/ubuntu/data.vhd
  2. sudo mount /dev/mapper/loopXp1 /home/ubuntu
复制代码

这里X要看kpartx 的输出而定的.  

第三点, kloop指的是vhd文件, kroot指的是启动后根设备在ubuntu系统内部名称, 修改了就找不到根设备了. 这个是不能修改的, 如果想启动过程中完成第二块vhd 硬盘的挂载, 也可以修改local文件, 设计一个新参数使得,  如果新参数是空值则与原始vhd启动一样;在这个新参数不空的时候系统会在initrd.img阶段挂载完根目录后再执行kpartx 并且挂载第二个vhd到一个固定目录内.
回复

使用道具 举报

209#
 楼主| 发表于 2021-3-11 10:28:33 | 显示全部楼层
piazini 发表于 2021-3-10 20:04
LZ,能帮忙看看这是什么原因造成的么?
生成出来的initrd.img-5.4.0-42-generic有60多M ,之前能引导的 ...

根分区没有正确挂载。 检查一下引导单数是不是正确无误,或者可能需要重新制作initrd.img
(有时候升级会把那些手工编辑好的init local的丢失,都还原为原始版本了,这时候系统自动制作的initrd.img可能没有引导vhd的代码,需要重新手工制作)
至于initrd.img的大小不必在意吧, 我的initrd.img有90多M.
回复

使用道具 举报

210#
 楼主| 发表于 2021-3-11 10:33:54 | 显示全部楼层
本帖最后由 2011niumao 于 2021-3-11 10:52 编辑

piazini 发表于 2021-3-10 20:04
LZ,能帮忙看看这是什么原因造成的么?
生成出来的initrd.img-5.4.0-42-generic有60多M ,之前能引导的 ...

编辑文件/usr/share/initramfs-tools/scripts/local-bottom/ntfs-3g有些变化,其内容如下
  1. #!/bin/sh

  2. set -e
  3. case "${1}" in
  4.         prereqs)
  5.                 exit 0
  6.                 ;;
  7. esac

  8. if [ "${ROOTFSTYPE}" = ntfs ] || [ "${ROOTFSTYPE}" = ntfs-3g ] || \
  9.    [ "${LOOPFSTYPE}" = ntfs ] || [ "${LOOPFSTYPE}" = ntfs-3g ] || [ -n "$KLOOP" ] || [ -n "$SQUASHFS" ]
  10. then
  11.         mkdir -p /run/sendsigs.omit.d
  12.         pidof @ount.ntfs-3g >> /run/sendsigs.omit.d/ntfs-3g
  13. fi
  14. exit 0
复制代码

删除了原来说明里的最后一段(不删除的话关机时候会死机panic) ntfs_3g.zip (387 Bytes, 下载次数: 6)

点评

我也遇到这个问题了,是Ubuntu20.04这几个版本更新的时候需要按照原先的操作,重新配置一下吗?  详情 回复 发表于 2021-5-13 15:44
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-8 16:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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