1,编译安装新内核
1,get kernel source from here
2,将当前guest os的内核配置文件 /boot/config-5.10.0 拷贝至内核源码目录并命名为.config
3,执行命令“make rpm-pkg -j10” 将内核各个组件编译为RPM包
4,生成的RPM包位于“/root/rpmbuild/RPMS/aarch64/”:
kernel-headers-5.10.0-1.aarch64.rpm, kernel-devel-5.10.0-1.aarch64.rpm, kernel-5.10.0-1.aarch64.rpm
可以使用rpm -qlp xxx.rpm查看这个RPM包内包含了哪些文件。
5,第一次全量编译后后续只需要执行 make Image -j 单独编译内核镜像
6,在host上编译好内核后将上述RPM包copy至虚机,先执行“rpm –e kernel-5.10.0-0.aarch64”卸载老内核,再执行“rpm –ivh kernel-5.10.0-1.aarch64.rpm”安装新内核。
7,上述安装命令会在/boot/efi/EFI/centos/grub.cfg中自动为新内核新增一个启动项,我们需要再更新这个文件修改“set default=0” 以选择新内核启动。
8,我们可以从/boot/ initramfs-5.10.0.img获得当前运行系统的initramfs。
2,编译QEMU
1,get QEMU from here
2,解压之后执行以下命令编译QEMU
cd /path/to/qemu_source mkdir build cd build ../configure --target-list=aarch64-softmmu --enable-kvm --enable-debug #只编译ARM64,"./configure --help"查看所有支持的target make -j8
编译好的QEMU可执行文件在 /path/to/source/qemu-6.0.0/build/qemu-system-aarch64文章来源:https://www.toymoban.com/news/detail-448729.html
3,为QEMU准备网络环境
brctl addbr br0 #创建桥接guest和host的bridge,虚机的后端网卡tap0将加入这一bridge ifconfig br0 192.168.101.1/24 #配置host bridge的IP,虚机IP应在同一网段 #若需开启虚机访问外网权限则执行以下步骤 echo 1 > /proc/sys/net/ipv4/ip_forward #打开host路由转发功能 iptables -F #清空防火墙规则 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #开启NAT,虚机访问外网时使用host的public IP
QEMU启动过程中会调用脚本"/etc/qemu-ifup"将tap0加入到bridge中,所以需要准备此文件:文章来源地址https://www.toymoban.com/news/detail-448729.html
#!/bin/sh set -x switch=br0 if [ -n "$1" ];then # tunctl -u `whoami` -t $1 (use ip tuntap instead!) ip tuntap add $1 mode tap user `whoami` ip link set $1 up sleep 0.5s # brctl addif $switch $1 (use ip link instead!) ip link set $1 master $switch exit 0 else
到了这里,关于使用QEMU运行虚拟机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!