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
1sudo apt update
2sudo apt install qemu-system-arm qemu-efi qemu-utils libvirt-daemon-system
三、下载 UEFI 固件(必需)
1wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd
四、创建虚拟磁盘
这里使用qcow2
格式,它支持动态分配空间。
1qemu-img create -f qcow2 ubuntu.img 60G
五、安装ARM版本Ubuntu
将下载的
ubuntu-24.04.2-live-server-arm64.iso和
QEMU_EFI.fd放在与虚拟磁盘文件ubuntu.img
同一个目录下。
使用下面的指令安装系统:
1sudo 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
命令查看磁盘使用情况:
1mgr@ubuntua:~$ df -h
2Filesystem Size Used Avail Use% Mounted on
3tmpfs 792M 636K 792M 1% /run
4efivarfs 256K 2.6K 254K 1% /sys/firmware/efi/efivars
5/dev/mapper/ubuntu--vg-ubuntu--lv 28G 6.2G 21G 24% /
6tmpfs 3.9G 0 3.9G 0% /dev/shm
7tmpfs 5.0M 0 5.0M 0% /run/lock
8/dev/vda2 2.0G 99M 1.7G 6% /boot
9/dev/vda1 1.1G 6.4M 1.1G 1% /boot/efi
10tmpfs 792M 12K 792M 1% /run/user/1000
可以看到磁盘只使用了30G左右,与60G的空间相差甚远。使用lsblk
查看:
1mgr@ubuntua:~$ lsblk
2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
3vda 253:0 0 60G 0 disk
4├─vda1 253:1 0 1G 0 part /boot/efi
5├─vda2 253:2 0 2G 0 part /boot
6└─vda3 253:3 0 56.9G 0 part
7 └─ubuntu--vg-ubuntu--lv 252:0 0 28.5G 0 lvm /
8vdb 253:16 0 2.7G 1 disk
9├─vdb1 253:17 0 2.7G 1 part
10└─vdb2 253:18 0 5.4M 1 part
可以看到vda3
共56.9G
,实际只有28.9G
分配给了根目录。再使用parted
命令查看:
1mgr@ubuntua:~$ sudo parted /dev/vda unit GB print free
2Model: Virtio Block Device (virtblk)
3Disk /dev/vda: 64.4GB
4Sector size (logical/physical): 512B/512B
5Partition Table: gpt
6Disk Flags:
7
8Number Start End Size File system Name Flags
9 0.00GB 0.00GB 0.00GB Free Space
10 1 0.00GB 1.13GB 1.13GB fat32 boot, esp
11 2 1.13GB 3.28GB 2.15GB ext4
12 3 3.28GB 64.4GB 61.1GB
13 64.4GB 64.4GB 0.00GB Free Space
可以看到vda3
的结束大小为64.4G
,Free Space
行的空间大小为0
,说明不是未分区的空间,不需要分区。如果没有parted
命令,使用下面命令安装:
1sudo apt install parted
查看逻辑卷ubuntu-vg
:
1mgr@ubuntua:~$ sudo vgdisplay ubuntu-vg
2 --- Volume group ---
3 VG Name ubuntu-vg
4 System ID
5 Format lvm2
6 Metadata Areas 1
7 Metadata Sequence No 2
8 VG Access read/write
9 VG Status resizable
10 MAX LV 0
11 Cur LV 1
12 Open LV 1
13 Max PV 0
14 Cur PV 1
15 Act PV 1
16 VG Size <56.95 GiB
17 PE Size 4.00 MiB
18 Total PE 14578
19 Alloc PE / Size 7289 / 28.47 GiB
20 Free PE / Size 7289 / 28.47 GiB
21 VG UUID SDuzTq-ozz1-weLd-M5O3-sVt0-AaCI-F9y442
可以看到Free PE / Size
行,还有28.47G
的空间,使用下面的命令扩展卷:
1mgr@ubuntua:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
2 Size of logical volume ubuntu-vg/ubuntu-lv changed from 28.47 GiB (7289 extents) to <56.95 GiB (14578 extents).
3 Logical volume ubuntu-vg/ubuntu-lv successfully resized.
再调整文件系统:
1mgr@ubuntua:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
2resize2fs 1.47.0 (5-Feb-2023)
3Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
4old_desc_blocks = 4, new_desc_blocks = 8
5The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 14927872 (4k) blocks long.
现在使用df
命令查看磁盘情况,正常了:
1mgr@ubuntua:~$ df -h
2Filesystem Size Used Avail Use% Mounted on
3tmpfs 792M 632K 792M 1% /run
4efivarfs 256K 2.6K 254K 1% /sys/firmware/efi/efivars
5/dev/mapper/ubuntu--vg-ubuntu--lv 56G 6.2G 48G 12% /
6tmpfs 3.9G 0 3.9G 0% /dev/shm
7tmpfs 5.0M 0 5.0M 0% /run/lock
8/dev/vda2 2.0G 99M 1.7G 6% /boot
9/dev/vda1 1.1G 6.4M 1.1G 1% /boot/efi
10tmpfs 792M 12K 792M 1% /run/user/1000
如果本文对你有帮助,欢迎点赞收藏!
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2025/2025-07-15-x86版的ubuntu上使用qemu运行arm版ubuntu/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。