1、安装qemu及相关依赖
apt-get -y install qemu
apt-get -y install bridge-utils
apt-get -y install vnc4server
apt-get -y install qemu-kvm
apt install -y qemu-system-arm
apt-get -y install libvirt0
apt-get -y install libvirt-daemon
apt-get -y install libvirt-daemon-system
安装完成后检查:
virsh version
ls /usr/bin/|grep qemu
2、下载 QEMU_EFI.fd 及 iso
wget http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd
wget https://cdimage.ubuntu.com/ubuntu-legacy-server/releases/20.04/release/ubuntu-20.04.1-legacy-server-arm64.iso
下面是我的文件及路径参考
3、创建虚拟硬盘
创建多大根据你自己的需求而定:
qemu-img create ubuntuimg.img 40G
4、创建虚拟机
qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios qemu_system/QEMU_EFI.fd -nographic -drive if=none,file=ubuntu-20.04.1-legacy-server-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=ubuntuimg.img,id=hd0 -device virtio-blk-device,drive=hd0
可以根据自己的配置和需求修改加粗部分
命令解释:
-m megs # 设定虚拟机的RAM大小,单位MB。
-cpu model # 设定CPU模型,如cortex-a57、cortex-a9等。
-smp n # 设定模拟的SMP架构中CPU的个数。
-M machine # 指定要模拟的主机类型
-bios file #设置bios启动文件
-nographic #禁用图形界面支持
5、执行第4步骤的命令后进入安装界面
类似于
根据提示信息一步一步的安装,这一步可能很慢,请耐心点
6、安装成功后
启动命令:
qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios qemu_system/QEMU_EFI.fd -nographic -device virtio-scsi-device -drive if=none,file=ubuntuimg.img,format=raw,index=0,id=hd0 -device virtio-blk-device,drive=hd0
进入虚拟机发现默认的ip为 10.0.2.15,可以ping 通宿主机ip (有可能显示没有ping这个命令,很正常,使用 apt-get install iputils-ping 安装),并且可以连网,而宿主机ping不通 虚拟机10.0.2.15
这是由于 虚拟机使用的是NAT网络模式,由qemu负责网络地址转换,数据包首先发送到虚拟化网络中的网关,也就是虚拟网络的一个节点,这个节点代表了宿主机在虚拟网络中的身份。该网关会负责将数据包转发到宿主机所在的物理网络中,从而宿主机能够收到来自虚拟机的请求
虚拟机中下载 一些工具:
apt-get install -y iputils-ping //ping ,上面安装了下面就不用安装了
apt-get install -y net-tools // 下载 ifconfig
apt-get install -y ssh // 下载ssh服务
7、实现 宿主机可以通过 ssh 进入 虚拟机
此部分参考链接:
访问qemu虚拟机的五种姿势_进入qemu_RichardYSteven的博客-CSDN博客
宿主机侧:
apt install net-tools // 下载ifconfig
apt install uml-utilities // 下载tunctl
brctl addbr virbr0 //创建网桥,名字是virbr0
ifconfig virbr0 192.168.122.1 netmask 255.255.255.0 up // 配置网桥
tunctl -t tap0 // 创建tap接口,名字为tap0
ifconfig tap0 0.0.0.0 up // 配置 tap0
brctl addif virbr0 tap0 // 将 tap0 放在 virbr0 内
启动虚拟机:(这儿命令变了,添加了-netdev user,id=natnet -device virtio-net-pci,netdev=natnet -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet)这儿tap0 和上面一致
qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios qemu_system/QEMU_EFI.fd -nographic -device virtio-scsi-device -drive if=none,file=ubuntuimg.img,format=raw,index=0,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=natnet -device virtio-net-pci,netdev=natnet -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet
此命令添加了一张和 宿主机组 tap的网口
在虚拟机侧:
ifconfig ens3 192.168.122.100 netmask 255.255.255.0 up //设置上面一个网段的ip,ens3根据自己实际的网口名替换
至此,你可以在宿主机侧 通过 ssh 进入虚拟机
ps:
1、ubuntu 创建后第一次给root设置密码:sudo passwd root
2、如果想使用 root 用户登录 vi /etc/ssh/sshd_config
添加/修改 PermitRootLogin yes
systemctl restart sshd