x86版的ubuntu上使用qemu运行arm版ubuntu
一直以来接触的都是X86系列的CPU架构,从来没接触过ARM的CPU架构,今天抽空尝试一下安装一个ARM版本的Linux,选定ubuntu,即在X86架构的Ubuntu服务器上使用qemu模拟器来运行ARM版本的ubuntu。
一、 下载ARM版的ubuntu
去https://cn.ubuntu.com/download/server/arm下载最新的稳定版本,目前是ubuntu-24.04.2-live-server-arm64.iso
二、 宿主机安装qemu
sudo apt update
sudo apt install qemu-system-arm qemu-efi qemu-utils libvirt-daemon-system
三、下载 UEFI 固件(必需)
wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd
四、创建虚拟磁盘
这里使用qcow2
格式,它支持动态分配空间。
qemu-img create -f qcow2 ubuntu.img 60G
五、安装ARM版本Ubuntu
将下载的ubuntu-24.04.2-live-server-arm64.iso和QEMU_EFI.fd放在与虚拟磁盘文件ubuntu.img
同一个目录下。
使用下面的指令安装系统:
sudo qemu-system-aarch64 -m 8192 -cpu max -smp 8 -M virt -bios QEMU_EFI.fd -device virtio-gpu-pci -device virtio-net-device,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2622-:22 -drive file=ubuntu.img,format=qcow2,if=virtio -cdrom ubuntu-24.04.2-live-server-arm64.iso -nographic -accel tcg,thread=multi
主要参数说明:
- -m 8192 指定8G内存
- -cpu max 指定CPU类型,笔者有使用过cortex-a72和cortex-a53,发现都有一些问题,还是max最稳定
- -smp 8 指定CPU核心数,这里是8核
- -bios QEMU_EFI.fd 使用BIOS的文件
- -netdev user,id=net0,hostfwd=tcp::2622-:22 设置网络设备,并设定虚拟机中的端口
22
映射到宿主机的2622
端口,方便后面使用远程SSH连接 - -drive file=ubuntu.img,format=qcow2,if=virtio 指定虚拟磁盘文件及格式
- -cdrom ubuntu-24.04.2-live-server-arm64.iso 指定光驱文件
- -nographic 没有图形界面,由于安装的服务器版本,不需要图形界面
- -accel tcg,thread=multi 使用TCG及多线程加速,这里由于CPU的架构不能,不能使用-enable-kvm参数来指定KVM加速
接下来安装就类似笔者前面博文详细安装Ubuntu 21.10介绍的类似了。只不过笔者偷懒,没按照文中所述编辑分区,而是使用的Ubuntu的默认设置,导致虽然选择了使用整个磁盘,但是并没有完全使用上整个磁盘的空间,有一个使用的空间。如果在安装完成后,要想完全使用磁盘空间,参见步骤六。
安装完成后,还是使用前面的指令运行,可以看到如下画面,表示启动成功了:
此时可以使用远程SSH工具连接宿主机的2622
号端口使用Shell。由于是使用qemu模拟的,性能与虚拟还是有差距,还是能流畅使用。
六、磁盘空间
由于安装过程中完全使用的Ubuntu的默认分区选项,导致有一部分磁盘空间未能使用上,需要将它利用起来,分配到根目录。
使用df
命令查看磁盘使用情况:
mgr@ubuntua:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 792M 636K 792M 1% /run
efivarfs 256K 2.6K 254K 1% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv 28G 6.2G 21G 24% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda2 2.0G 99M 1.7G 6% /boot
/dev/vda1 1.1G 6.4M 1.1G 1% /boot/efi
tmpfs 792M 12K 792M 1% /run/user/1000
可以看到磁盘只使用了30G左右,与60G的空间相差甚远。使用lsblk
查看:
mgr@ubuntua:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 253:0 0 60G 0 disk
├─vda1 253:1 0 1G 0 part /boot/efi
├─vda2 253:2 0 2G 0 part /boot
└─vda3 253:3 0 56.9G 0 part └─ubuntu--vg-ubuntu--lv 252:0 0 28.5G 0 lvm /
vdb 253:16 0 2.7G 1 disk
├─vdb1 253:17 0 2.7G 1 part
└─vdb2 253:18 0 5.4M 1 part
可以看到vda3
共56.9G
,实际只有28.9G
分配给了根目录。再使用parted
命令查看:
mgr@ubuntua:~$ sudo parted /dev/vda unit GB print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number Start End Size File system Name Flags0.00GB 0.00GB 0.00GB Free Space1 0.00GB 1.13GB 1.13GB fat32 boot, esp2 1.13GB 3.28GB 2.15GB ext43 3.28GB 64.4GB 61.1GB64.4GB 64.4GB 0.00GB Free Space
可以看到vda3
的结束大小为64.4G
,Free Space
行的空间大小为0
,说明不是未分区的空间,不需要分区。如果没有parted
命令,使用下面命令安装:
sudo apt install parted
查看逻辑卷ubuntu-vg
:
mgr@ubuntua:~$ sudo vgdisplay ubuntu-vg--- Volume group ---VG Name ubuntu-vgSystem ID Format lvm2Metadata Areas 1Metadata Sequence No 2VG Access read/writeVG Status resizableMAX LV 0Cur LV 1Open LV 1Max PV 0Cur PV 1Act PV 1VG Size <56.95 GiBPE Size 4.00 MiBTotal PE 14578Alloc PE / Size 7289 / 28.47 GiBFree PE / Size 7289 / 28.47 GiBVG UUID SDuzTq-ozz1-weLd-M5O3-sVt0-AaCI-F9y442
可以看到Free PE / Size
行,还有28.47G
的空间,使用下面的命令扩展卷:
mgr@ubuntua:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lvSize of logical volume ubuntu-vg/ubuntu-lv changed from 28.47 GiB (7289 extents) to <56.95 GiB (14578 extents).Logical volume ubuntu-vg/ubuntu-lv successfully resized.
再调整文件系统:
mgr@ubuntua:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 8
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 14927872 (4k) blocks long.
现在使用df
命令查看磁盘情况,正常了:
mgr@ubuntua:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 792M 632K 792M 1% /run
efivarfs 256K 2.6K 254K 1% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv 56G 6.2G 48G 12% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda2 2.0G 99M 1.7G 6% /boot
/dev/vda1 1.1G 6.4M 1.1G 1% /boot/efi
tmpfs 792M 12K 792M 1% /run/user/1000
如果本文对你有帮助,欢迎点赞收藏!