参考virtiofs - shared file system for virtual machines / Standalone usage
sudo apt-get install ninja-build acpica-tools build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython2-dev python3-pip python-capstone virtualenv libpixman-1-dev libbpf-dev libcap-ng-dev libseccomp-dev
配置Qemu
mkdir build | cd build
qemu
./configure --enable-kvm --enable-debug --enable-linux-user --enable-vnc --enable-bpf --enable-werror --enable-user --enable-vhost-kernel --gdb=/usr/bin/gdb --enable-debug-stack-usage --enable-debug-tcg --enable-debug-mutex --enable-cfi-debug --enable-qom-cast-debug --enable-virtiofsd --target-list="x86_64-softmmu"
../configure --prefix=$PWD --enable-kvm --enable-debug --enable-linux-user --enable-vnc --enable-werror --enable-user --enable-vhost-kernel --gdb=/usr/bin/gdb --target-list="x86_64-softmmu"
make -j 8
make -j 8 virtiofsd
编译Guset内核支持Virtio-fs
git clone https://gitlab.com/virtio-fs/linux.git
git checkout virtio-fs-dev
首先安装编译所需安装包
sudo apt-get install -y libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf fakeroot bc cpio liblz4-tool dwarves libzstd-dev libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf llvm
拷贝系统默认配置
cp /boot/config-5.4.0-144-generic ./.config
修改配置
./scripts/config -e CONFIG_DEBUG_INFO
./scripts/config -e CONFIG_BPF_SYSCALL
./scripts/config -e CONFIG_DEBUG_INFO_BTF
./scripts/config -e CONFIG_UIO
./scripts/config -e CONFIG_UIO_PCI_GENERIC
./scripts/config -d CONFIG_RANDOMIZE_BASE
./scripts/config -e CONFIG_DEBUG_INFO_DWARF5
./scripts/config -e CONFIG_GDB_SCRIPTS
./scripts/config -d CONFIG_MODULE_SIG_KEY
./scripts/config -d CONFIG_MODULE_SIG_ALL
./scripts/config -d CONFIG_MODULE_SIG_KEY_TYPE_RSA
./scripts/config -e CONFIG_SYSTEM_TRUSTED_KEYRING
./scripts/config -d CONFIG_MODULE_SIG_KEY_TYPE_RSA
./scripts/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""
./scripts/config -e CONFIG_VIRTIO
./scripts/config -e CONFIG_VIRTIO_FS
./scripts/config -e CONFIG_DAX
./scripts/config -e CONFIG_FS_DAX
./scripts/config -e CONFIG_DAX_DRIVER
./scripts/config -e CONFIG_ZONE_DEVICE
./scripts/config -d SYSTEM_REVOCATION_KEYS
编译
sudo make deb-pkg -j18
sudo make -j1 deb-pkg |& tee /tmp/kernel-build.log
创建一个磁盘把内核文件写入,并且挂载到guest上安装
drive format=raw,file=./disk.raw
sudo dpkg -i linux-headers-xx.xx.xx.deb*
sudo dpkg -i linux-image-xx.xx.xx.deb*
grep gnulinux /boot/grub/grub.cfg
//修改/etc/default/grup "1> 4"
sudo update-grub
sudo reboot
也可以装在主机上用如下命令启动
sudo qemu-system-x86_64 -smp 8 -m 4096 -enable-kvm -hda /home/qs/ssd/vhost.qcow2 -kernel /boot/vmlinuz-6.1.0-rc8+ -initrd /boot/initrd.img-6.1.0-rc8+ -append "console=ttyS0 root=/dev/sda5" -net user,hostfwd=::8888-:22 -net nic
开启环境:
在Qemu build下 启动virtiofsd守护进程
sudo ./virtiofsd -o vhost_user_socket=/tmp/vhostqemu -o source=/home/qs/p5800/Share -o cache=always
开启Qemu,并且开启DAX
sudo ./qemu-system-x86_64 -smp 8 -m 4096 -object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on -numa node,memdev=mem -enable-kvm -hda /home/qs/p5800/vm/vhost.qcow2 -chardev socket,id=char0,path=/tmp/vhostqemu -device vhost-user-fs-pci,queue-size=1024,chardev=char0,tag=myfs,cache-size=4G -net user,hostfwd=::8888-:22 -net nic -s -S
在Guset里挂载virtiofs
sudo mount -t virtiofs,ext4 myfs share/ -o dax