一直以来接触的都是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
bash
sudo apt update
sudo apt install qemu-system-arm qemu-efi qemu-utils libvirt-daemon-system
三、下载 UEFI 固件(必需)
bash
wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd
四、创建虚拟磁盘
这里使用qcow2
格式,它支持动态分配空间。
bash
qemu-img create -f qcow2 ubuntu.img 60G
五、安装ARM版本Ubuntu
将下载的ubuntu-24.04.2-live-server-arm64.iso和QEMU_EFI.fd放在与虚拟磁盘文件ubuntu.img
同一个目录下。
使用下面的指令安装系统:
bash
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
命令查看磁盘使用情况:
bash
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
查看:
bash
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
命令查看:
bash
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 Flags
0.00GB 0.00GB 0.00GB Free Space
1 0.00GB 1.13GB 1.13GB fat32 boot, esp
2 1.13GB 3.28GB 2.15GB ext4
3 3.28GB 64.4GB 61.1GB
64.4GB 64.4GB 0.00GB Free Space
可以看到vda3
的结束大小为64.4G
,Free Space
行的空间大小为0
,说明不是未分区的空间,不需要分区。如果没有parted
命令,使用下面命令安装:
bash
sudo apt install parted
查看逻辑卷ubuntu-vg
:
bash
mgr@ubuntua:~$ sudo vgdisplay ubuntu-vg
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <56.95 GiB
PE Size 4.00 MiB
Total PE 14578
Alloc PE / Size 7289 / 28.47 GiB
Free PE / Size 7289 / 28.47 GiB
VG UUID SDuzTq-ozz1-weLd-M5O3-sVt0-AaCI-F9y442
可以看到Free PE / Size
行,还有28.47G
的空间,使用下面的命令扩展卷:
bash
mgr@ubuntua:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Size 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.
再调整文件系统:
bash
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
命令查看磁盘情况,正常了:
bash
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

如果本文对你有帮助,欢迎点赞收藏!