共享文件夹
能共享文件夹,才能进行真正的调试。
所以,共享文件夹,或者网络传输的建立是非常重要的。
但是因为各种各样的现在,网络传输的条件不一定具备。
共享文件夹是首选、保底的方案。
arm64 qemu与主机共享文件夹+ insmod kernel ko实验
——:9p VirtFS 相关的介绍非常好,能顺利建立共享文件夹了
VSCode+GDB+Qemu调试ARM64 linux内核
——:顺便,VSCODE 的 gdb 也能用了,但是还存在函数进不去的问题
参考链接的总结
- 要打开的配置项
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_9P_FS=y
- 要去掉根文件系统 /etc/fstab中的9p挂载,即 kmod_mount /mnt 9p trans=virtio 0 0
- qemu启动命令行中增加以下内容
-fsdev local,security_model=passthrough,id=fsdev0,path=/home/your/path \
-device virtio-9p-device,id=fs0,fsdev=fsdev0,mount_tag=hostshare
path=后的路径名即为待与虚拟机共享的文件路径,请自行指定;
-device 后不使用 virtio-9p-pci,而是 virtio-9p-device
- 进入虚拟机后,执行以下命令
mkdir /mnt/host_files
mount -t 9p -o trans=virtio,version=9p2000.L hostshare /mnt/host_files
一些命令的记录
安装依赖
sudo apt-get install qemu-system-arm libncurses5-dev gcc-aarch64-linux-gnu build-essential git bison flex libssl-dev
启动 kernel 的命令
qemu-system-aarch64 -m 1024 -cpu max,sve=on,sve256=on \
-M virt,gic-version=3,its=on,iommu=smmuv3 -nographic -smp 4 -kernel arch/arm64/boot/Image \
-append "noinitrd nokaslr loglevel=8 sched_debug root=/dev/vda \
rootfstype=ext4 rw crashkernel=256M vfio.dyndbg=+pflmt irq_gic_v3_its.dyndbg=+pflmt \
iommu.dyndbg=+pflmt irqdomain.dyndbg=+pflmt" \
-drive if=none,file=/home/zhwchen/runinglinux/runninglinuxkernel_5.0/rootfs_debian_arm64.ext4,id=hd0 \
-device virtio-blk-device,drive=hd0 --fsdev local,id=kmod_dev,path=./kmodules,security_model=none \
-device virtio-9p-pci,fsdev=kmod_dev,mount_tag=kmod_mount
参考链接
从零开始搭建qemu调试环境
——不止是加载 kernel,还提到了加载 atf,甚至怀疑,可以进行裸机调试;简单说了 qemu monitor 的使用
千万别做以下的操作
当时这样搞,把机器搞重装了。
但是感觉探索这些命令也挺不容易的,就记下来了。
wget https://download.qemu.org/qemu-8.1.2.tar.xz
tar xvJf qemu-8.1.2.tar.xz
cd qemu-8.1.2
./configure
make
相关依赖安装,推荐在 qemu 安装过程遇到相关错误后再安装:
sudo apt-get install ninja-build
sudo apt-get install libpixman-1-dev
qemu 8.1.2 的安装依赖 python 版本大于 3.7
python 源码下载地址
tar xvJf Python-3.9.9.tar.xz
./configure
make
sudo make install
python 的相关依赖
pip install sphinx
pip install sphinx-rtd-theme