无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 26963|回复: 73

[原创] vdfuseloop:支持更多格式虚拟磁盘启动的Linux方式(vdi/vmdk/vhd等)

    [复制链接]
发表于 2021-3-21 07:11:44 来自手机 | 显示全部楼层
回复

使用道具 举报

发表于 2021-3-21 07:13:59 来自手机 | 显示全部楼层
在内存盘系统initrd.img 里加入nbd模块和qemu-nbd 命令后挂载启动动态vhd成功了。
回复

使用道具 举报

发表于 2021-3-21 07:17:04 来自手机 | 显示全部楼层
另外,最近发现另一种可写挂载ntfs分区的方法,其挂载格式是ufsd ,可以安装到ubuntu上,用它代替ntfs-3g, 不需要改写源文件,就可以避免buffer io 错误。

点评

哦是paragon的那个驱动啊,感觉确实会好用一些,但是感觉这种闭源驱动配置起来都不简单,我个人感觉正确使用ntfs3g就够了(用dracut已经解决buffer io错误了) 这个帖子主要是想把vmware虚拟机起起来(这样既可以  详情 回复 发表于 2021-3-21 08:27
回复

使用道具 举报

发表于 2021-3-21 07:21:45 来自手机 | 显示全部楼层
论坛里就有帖子,“关于paragon ntfs驱动(ufsd)性能的问题请教”
回复

使用道具 举报

发表于 2023-6-16 10:25:26 | 显示全部楼层
本帖最后由 2011niumao 于 2023-6-16 10:30 编辑
ghosthark 发表于 2023-6-15 22:25
有在drauct下成功使用qemu-ndb的挂载vhd(动态)的案例吗
按照楼主的方案initramfs-tool方案改写qemu-nd ...

看看我这个方案。好像我也没有成功,但是Ubuntu系统qemu-nbd是成功了的,只是明显感觉到系统迟钝。
注意,引导参数是 qemu-nbd. 它的值是vhd文件的含路径的名称。

注意,需要安装ntfs-3g,  最好是我修订过的ntfs-3g



  1. ########################################################################
  2. ###                           KLOOP by niumao                        ###
  3. ########################################################################

  4. QEMUNBD=$(getarg qemunbd=)

  5. export QEMUNBD


  6. if [ -n "$QEMUNBD" ]; then

  7.         ### reset the value of the root variable
  8.         HOSTDEV="${root#block:}"
  9.         [ -n "$KROOT" ]  ||  root="/dev/loop0"
  10.         [ -n "$KROOT" ]  &&  root="$KROOT"
  11.         realroot="$root"
  12.         export root
  13.         if ismounted "$NEWROOT"; then
  14.                 umount "$NEWROOT"
  15.         fi
  16.                         
  17.         ###  auto probe the fs-type of the partition in which vhd-file live and mount it  /host
  18.         mkdir -p /host
  19.         if [ -z "${HOSTFSTYPE}" ]; then
  20.                 HOSTFSTYPE="$(blkid -s TYPE -o value "$HOSTDEV")"
  21.                 [ -z "${HOSTFSTYPE}"  -o  "${HOSTFSTYPE}" = "ntfs" ] && HOSTFSTYPE="ntfs-3g"
  22.         fi
  23.         [ "${HOSTFSTYPE}" = "ntfs-3g" ] || modprobe ${HOSTFSTYPE}
  24.         mount -t "${HOSTFSTYPE}" -o rw   $HOSTDEV /host
  25.         
  26.         ### mount the vhd-file on a loop-device
  27.         if [ "${QEMUNBD#/}" != "${QEMUNBD}" ]; then
  28.                 modprobe  nbd
  29.                 [ -e /host$QEMUNBD ] || sleep 3
  30.                 qemu-nbd -c /dev/nbd0 /host$QEMUNBD
  31.                 kpartx -av /dev/nbd0
  32.                 [ -e "$realroot" ] ||  sleep 3
  33.         fi

  34.         ### mount the realroot / in vhd-file on $NEWROOT
  35.         if [ -z "${KLOOPFSTYPE}" ]; then
  36.                 KLOOPFSTYPE="$(blkid -s TYPE -o value "$realroot")"
  37.                 [ -z "${KLOOPFSTYPE}" ] && KLOOPFSTYPE="ext4"
  38.         fi
  39.         [ -e "$realroot" ] || sleep 3
  40.         mount -t "${KLOOPFSTYPE}" -o rw $realroot $NEWROOT
  41.         
  42.         ### mount /host in initrd to /host of the realrootfs
  43.         if [  "${HOSTHIDDEN}" != "y" ] ; then
  44.                 [ -d "${NEWROOT}"/host ] || mkdir -p ${NEWROOT}/host
  45.                 mount -R /host   ${NEWROOT}/host
  46.         fi

  47. fi


  48. ########################################################################
  49. ###                        END,  KLOOP by niumao                     ###
  50. ########################################################################
复制代码

点评

引导参数是 qemu-nbd. 它的值是vhd文件的含路径的名称。  发表于 2023-6-16 10:28
注意,需要安装ntfs-3g, 最好是我修订过的ntfs-3g  发表于 2023-6-16 10:26
回复

使用道具 举报

发表于 2023-6-16 10:35:33 | 显示全部楼层
ghosthark 发表于 2023-6-15 22:25
有在drauct下成功使用qemu-ndb的挂载vhd(动态)的案例吗
按照楼主的方案initramfs-tool方案改写qemu-nd ...

是不是应该首先在vhd内系统的内核设置一下,block的黑名单或者白名单?再重新制作initramfs使用此内核引导。
回复

使用道具 举报

发表于 2023-6-17 14:18:56 | 显示全部楼层
ghosthark 发表于 2023-6-16 21:56
kpartx -av 操作将分区挂载到了/dev/mapper 下 修改grub2配置 kroot=/dev/mapper/nbd1p2 一直滚动输出 卡 ...

kroot 的值应该是什么呢?是/dev/mapper/nbd1p2?还是 /dev/npd1p2?两者不一样的。也许两种都可以?
回复

使用道具 举报

发表于 2023-7-3 13:50:07 | 显示全部楼层

把qemu-nbd命令装入内核初始镜像盘

本帖最后由 2011niumao 于 2023-7-3 14:01 编辑
ghosthark 发表于 2023-6-30 00:18
fedroa dracut 方式

vdfuseloop 方式使用qmeu-nbd 替换vdfuse 操作会导致卡在initqueue

对于Fedora, 你确定在使用dracut命令时候,把命令qemu-nbd装入到了initramfs里了?是qemu-nbd,不要错拼。
不然,内核挂载好动态vhd文件所在分区后,找不到qemu-nbd命令,是无法挂载动态vhd的、
使用以下一个命令来制作initramfs,不用修改配置文件(在add-drivers参数后面是否应该加入 nbd 存疑,下面arch同理)
  1. sudo dracut  -i /home/niumao/mydracut/10-vhdmount-kloop.sh /lib/dracut/hooks/pre-mount/10-vhdmount-kloop.sh  --no-hostonly  --install " vi /etc/virc ps grep cat rm blkid losetup  kpartx partx mount.fuse mount.ntfs-3g ntfs-3g shutdown  qemu-nbd "   --add-drivers  "fuse dm-mod nbd"  -o " plymouth btrfs crypt  cifs fcoe fcoe-uefi iscsi nfs"  /home/niumao/dracut-fedora-kloop
复制代码
关于arch有同样的问题,不过因为不是dracut模式,可以选择修改配置文件后重新制作initramfs
  1. sudo  gedit /etc/mkinitcpio.conf
复制代码
修改地方大体如下
  1. BINARIES="losetup partx mount.fuse mount.ntfs-3g ntfs-3g shutdown qemu-nbd "
  2. MODULES="fuse ntfs loop  nbd"
复制代码
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-18 15:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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