Code Monkey home page Code Monkey logo

Comments (6)

lz-lunzi avatar lz-lunzi commented on June 15, 2024

以下是我的grub2 的实现
sudo gedit /usr/share/initramfs-tools/hooks/vdfuse
#!/bin/sh -e
PREREQ=""
prereqs()
{
echo "$PREREQ"
}

case "$1" in
prereqs)
prereqs
exit 0
;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /etc/fuse.conf /etc
copy_exec /usr/bin/qemu-nbd /sbin

修改init-top实现自定义文件系统挂载逻辑
sudo gedit /usr/share/initramfs-tools/scripts/init-top/vdfuse
#!/bin/sh -e
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}

case "$1" in
prereqs)
prereqs
exit 0
;;
esac

if [ ! -z $vdisk ]; then
mkdir /vdhost
mkdir /dev/vdhost
mount -t ntfs $host /vdhost/
modprobe nbd
exec -a @11 /sbin/qemu-nbd -c /dev/nbd1 /vdhost$vdisk
mount -t ext4 $ROOT /root

fi

sudo gedit /usr/share/initramfs-tools/scripts/init-bottom/vdhost
#!/bin/sh -e
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
if [ -d ${rootmnt}/vdhost ]; then
mount -n -o move /vdhost ${rootmnt}/vdhost
fi

sudo chmod +x /usr/share/initramfs-tools/hooks/vdfuse

sudo chmod +x /usr/share/initramfs-tools/scripts/init-top/vdfuse

sudo chmod +x /usr/share/initramfs-tools/scripts/init-bottom/vdhost

sudo /usr/sbin/mkinitramfs -o ./initrd.img

from vtoyboot.

want20 avatar want20 commented on June 15, 2024

该方案我也在研究,目前卡在挂载工具问题上,vdfuse过渡依赖vbox,nbd又引导不起来,看起来得自己实现一个挂载工具。

from vtoyboot.

lz-lunzi avatar lz-lunzi commented on June 15, 2024

@want20
initramfs-tools +qemu-nbd 可以实现大部分的linux的vhd引导。
但是实现上每次更新内核后都要重新生成并拷贝到外部
如果可以实现和votyboot 的方式将会更好 用户无需关注votyboot之外的操作 。
此外对于dracut 等其他方式可以参考https://github.com/MobtgZhang/VHD-Boot
但是我并没有在这方案中成功实现 如果有成功消息可以在此分享

from vtoyboot.

want20 avatar want20 commented on June 15, 2024

@lz-lunzi initramfs-tools +qemu-nbd 可以实现大部分的linux的vhd引导。 但是实现上每次更新内核后都要重新生成并拷贝到外部 如果可以实现和votyboot 的方式将会更好 用户无需关注votyboot之外的操作 。 此外对于dracut 等其他方式可以参考https://github.com/MobtgZhang/VHD-Boot 但是我并没有在这方案中成功实现 如果有成功消息可以在此分享

initramfs-tools+qemu-nbd我没有成功过,每次切换 root 文件系统的时候 nbd 的连接都会断掉,dracut 也是这样,目前我用自己写的工具可以实现引导,因为是纯c写的,所以没啥依赖,移植到 arm一样可以。另外 initramfs-tools 做的镜像关机会卡住,挂载的镜像没法成功卸载。

还有内核拷贝的问题,grub 整个 vhd 解析插件就行了,无需拷贝出来,而且这个插件只读的就行。结合自己写的 dd 插件,可以实现还原。

votyboot的方式还没仔细研究,可以研究一下,能够在启动某个阶段hook?

更新内核重新生成应该无法避免吧?vtoyboot更新内核不也要重新跑一遍脚本?

from vtoyboot.

want20 avatar want20 commented on June 15, 2024

此外,貌似之前看到有个qcow2 挂载的linux内核requests记录(还是野生patch之类的),要是能被采纳就好了,新内核直接可以挂载 qcow镜像到设备,没了解有没有或者会不会被合入。

from vtoyboot.

want20 avatar want20 commented on June 15, 2024

这个 https://lwn.net/ml/linux-kernel/164846631540.251310.2398727490395218229.stgit@pro/

from vtoyboot.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.