感谢分享了 |
讨论都看了,为啥都是虚拟机环境。物理机下不是更真实吗? |
好东西 |
感谢分享 |
@2011niumao initramfs-tool+NBD+动态VHD可以成功切换启动,就是关机有io error,怀疑需要修改Systemd或shutdown。 dracut方案+动态VHD不成功,目前看dracut的脚本应该都执行了,最后进系统时报错。@minmax 这个方案你是否成功了,能分享一下成功的详细流程吗? |
dracut方案启动没有成功,报systemd-udevd: worker exited。 用的是动态VHD,vdfuse可以挂载动态VHD吗? |
大佬牛逼 |
技术贴啊 |
真是神仙,看了大佬的github,赞叹 |
严格按照你的方法来,还是启动不了,你的dracut方案中grub4dos菜单是不是有错,kernel命令行下一行呢? |
严格按照你的方法制作,结果不成功,你的dracut方案中菜单是不是有错误,kernel后怎么没有下一行命令:initrd这个命令行。到底可不可行,别忽悠人。 |
求教qemu-nbd 的动态磁盘引导方式已经尝试过 github.com/MobtgZhang/VHD-Boot/blob/master/kloop/fedora-kloop/README.md]以及github.com/MobtgZhang/VHD-Boot/blob/master/vdfuseloop/README.md 都卡在启动中 |
linux vhd差分这个没弄明白 |
本帖最后由 want20 于 2023-9-14 11:54 编辑 ghosthark 发表于 2023-8-10 22:14 提示一下,参考vboot的vhd模块,自己改。他本身是支持动态vhd的,但是不支持差分,可以自己加差分的支持。没差分也问题不大,就是更新initrd后记得压到第一级镜像。这一part经过长时间测试,非常稳定。外部因素,暂时无法分享代码,望理解。 |
2011niumao 发表于 2023-7-3 13:50 经过这段时间尝试已经成功实现arch 原因在于 lo设备没有分配网络地址和qemu依赖/var/lock中存放链接文件 增加
之后正常启动 但是存在关机异常 但基本可用 fedroa 的dracut 还是没有头绪,目前只能定位到在initrd阶段正常但后续过程中导致了nbd设备和模块被kill 继续尝试中 |
want20 发表于 2023-7-31 11:53 initramfs-tool 我没有遇到问题 dracut 目前定位到没有加--uefi参数 可以进入rootfs 但是没有成功启动 grub 加个 vhd 的只读模块 这个怎么实现 可以分享一下吗 loopback ?似乎不支持动态磁盘 如果可以有支持动态磁盘的通用方案可以分享一下吗 |
本帖最后由 want20 于 2023-7-31 11:59 编辑 ghosthark 发表于 2023-7-28 10:43 用qemu-nbd是会这样的,我都没成功过,initramfs-tool 和 dracut 都是 switch root 的时候卡 io error,目前我的方案是自己写的挂载工具,可以实现 x86 和 arm 的挂载,但是 initramfs-tool 的关机无论是用 vdfus 还是 vboximg-mount 会容易卡死,挂载的镜像设备卸载不掉,dracut 关机脚本写好了就不会。单纯自己使用的话完全可以用 vboximg-mount 做,虽然要装 vbox,且不能移植到arm平台。 引导起来只是第一步,后续还在解决断电文件系统损坏,镜像损坏等问题,至于性能方面,只要挂载工具没做 direct io 或者每次写都加同步的话,还是很不错的。加了 direct io 或者 实时同步到 disk 的话 io 性能会大大下降。 此外,给 grub 加个 vhd 的只读模块就不用把内核镜像拷出来了,挂起来直接引导。目前打算研究一下 ventoy 的实现,看下会不会更优雅一点。 |
2011niumao 发表于 2023-7-3 13:50 配置正确之后还是异常 返回 Starting initrd-switch-root.service - Switch Root... [ 170.773548] blk_print_req_error: 2 callbacks suppressed 170.773551] I/O error, dev nbdi, sector 42946816 op 0x0:(1READ) flags 0x3000 phys_seg 1 prio class 2 [ 170.773607] systemd-journald[5138]: Received SIGTERMfrom PID 1 (systemd) 170.774783] EXT4-fs error (device nbd1p2):__ext4_get_inode_loc_noinmem:4493: inode #1310721: block 5242912: comm systemd: un able to read itable block [ 170.775600] I/O error, dev nbdi, sector 1003520 op 0x1:(WRITE) flags 0x23800 phys_seg 1 prio class 2 [ 170.776124] Buffer I/O error on dev nbdip2, logicalblock 0, lost sync page write [ 170.776402] EXT4-fs (nbd1p2): I/O error while writing superblock [ 170.801244] systemd[1]: systemd 253.7-1.fc38 runniing in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCR YPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDOZ +IDNŽ -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBEDISK +PCREZ +PWQUALITY +P11KI T +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPP_FRAMEWORK +XKBCOMMON +UTMP +SYSUINIT default-hierarchy=unified) [] 170.802266] systemd[1]: Detected virtualization vware [ 170.802661] systemd[1]: Detected architecture x86-644. [ 170.803121] systemd[1]: Running in initrd. |
本帖最后由 2011niumao 于 2023-7-3 14:01 编辑 ghosthark 发表于 2023-6-30 00:18 对于Fedora, 你确定在使用dracut命令时候,把命令qemu-nbd装入到了initramfs里了?是qemu-nbd,不要错拼。 不然,内核挂载好动态vhd文件所在分区后,找不到qemu-nbd命令,是无法挂载动态vhd的、 使用以下一个命令来制作initramfs,不用修改配置文件(在add-drivers参数后面是否应该加入 nbd 存疑,下面arch同理)
|
fedroa dracut 方式 vdfuseloop 方式使用qmeu-nbd 替换vdfuse 操作会导致卡在initqueue kloop方案改写也有相同问题 arch kloop_mkinitcpio 使用qemunbd rootfs下提示 ntfs-3g 已挂载 但是umount 之后依然无法挂载 并且使用kloop的ntfs-3g make中很多报错 因此使用的是ntfs-3g+fuse2的包 但是这个似乎挂载时有用户权限问题 至此 只有参照楼主initramfs-tool方案改写qemu成功了 全部资料信息github.com/MobtgZhang/VHD-Boot 如果有成功实现 dracut mkinitcpio 实现使用qemu-nbd 方式挂载动态vhd 成功的方案可以分享一下不胜感激 |
很详细。。。 |
本帖最后由 ghosthark 于 2023-6-19 23:54 编辑 2011niumao 发表于 2023-6-17 14:18 通过增加grub debug rd.break=pre-shutdown rd.break=shutdown rd.udev.debug rd.break=pre-mount rd.break=mount 以及在增加 blockdev 之后进入到了initqueue 阶段 增加rd.break=initqueue rd.initqueue.debug 后发现内核模块丢失无法通过modprobe加载包括fuse ntfs nvme在内的所有模块并且ntfs-3g 挂载也无法操作 |
2011niumao 发表于 2023-6-17 14:18 ktoot=/dev/mapper/nbd1p2 和 kroot=/dev/npd1p2 加 注释掉kprat后的运行结果一样 问题照片如下 www点123pan点com/s/PP7lVv-i9OC.htm |
ghosthark 发表于 2023-6-16 21:56 kroot 的值应该是什么呢?是/dev/mapper/nbd1p2?还是 /dev/npd1p2?两者不一样的。也许两种都可以? |
kpartx -av 操作将分区挂载到了/dev/mapper 下 修改grub2配置 kroot=/dev/mapper/nbd1p2 一直滚动输出 卡在starting draut-pre-udev.service - rule-based manager for devievents and files |
2011niumao 发表于 2023-6-16 10:25 感谢大佬回复,我尝试使用该脚本但是还是没有正常引导 我的环境是fedroa 38 efi分区 +EXT4(/分区) grub2 配置如下
返回debug 如下123网盘后加 /s/PP7lVv-YAOC.html提取码:IJnn |
ghosthark 发表于 2023-6-15 22:25 是不是应该首先在vhd内系统的内核设置一下,block的黑名单或者白名单?再重新制作initramfs使用此内核引导。 |
本帖最后由 2011niumao 于 2023-6-16 10:30 编辑 ghosthark 发表于 2023-6-15 22:25 看看我这个方案。好像我也没有成功,但是Ubuntu系统qemu-nbd是成功了的,只是明显感觉到系统迟钝。 注意,引导参数是 qemu-nbd. 它的值是vhd文件的含路径的名称。 注意,需要安装ntfs-3g, 最好是我修订过的ntfs-3g
|
有在drauct下成功使用qemu-ndb的挂载vhd(动态)的案例吗 按照楼主的方案initramfs-tool方案改写qemu-nd挂载成功了 但是drauct改写时nbd被断开显示fedora kernel: I/O error |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.