
作用就是与宿主共享文件和目录更方便了,还能通过这种方法直接重用 docker 镜像
(记得补上 init,如 openrc 和 systemd 包)而不用重新打包到一个镜像文件里,也不用折腾复杂的分区操作,启动起来就像容器一样简单(加个-nographic 就更像了)
不知道有没有火星,直接贴主要代码 :)
#!/bin/bash kernel=out/arch/x86_64/boot/bzImage qemu-system-x86_64 \ -enable-kvm \ -cpu host \ -kernel "$kernel" \ -initrd initramfs-linux.img \ -net nic,model=virtio \ -net user \ -fsdev local,id=r,path=root,security_model=none \ -device virtio-9p-pci,fsdev=r,mount_tag=r \ -append 'init=/init' /init:(就是 initramfs 里的,记得带上 busybox)
#!/bin/sh hostname virtual mount -t 9p -o trans=virtio r /mnt mount -t proc none /mnt/proc mount -t sysfs none /mnt/sys mount -t devtmpfs none /mnt/dev echo -e "\nBoot took $(cut -d' ' -f1 /proc/uptime) seconds\n" exec /sbin/switch_root /mnt /sbin/init 前提要求:内核开启 9p 文件系统支持(而且不要用模块的,虽然理论上可以把模块打到 initrd 里,但是多麻烦呢)