> 技术文档 > x86版的ubuntu上使用qemu运行arm版ubuntu_qemu arm ubuntu安装

x86版的ubuntu上使用qemu运行arm版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 updatesudo 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的默认设置,导致虽然选择了使用整个磁盘,但是并没有完全使用上整个磁盘的空间,有一个使用的空间。如果在安装完成后,要想完全使用磁盘空间,参见步骤六。

安装完成后,还是使用前面的指令运行,可以看到如下画面,表示启动成功了:

x86版的ubuntu上使用qemu运行arm版ubuntu_qemu arm ubuntu安装
此时可以使用远程SSH工具连接宿主机的2622号端口使用Shell。由于是使用qemu模拟的,性能与虚拟还是有差距,还是能流畅使用。

六、磁盘空间

由于安装过程中完全使用的Ubuntu的默认分区选项,导致有一部分磁盘空间未能使用上,需要将它利用起来,分配到根目录。

使用df命令查看磁盘使用情况:

mgr@ubuntua:~$ df -hFilesystem Size Used Avail Use% Mounted ontmpfs 792M 636K 792M 1% /runefivarfs 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/shmtmpfs 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/efitmpfs 792M 12K 792M 1% /run/user/1000

可以看到磁盘只使用了30G左右,与60G的空间相差甚远。使用lsblk查看:

mgr@ubuntua:~$ lsblkNAMEMAJ:MIN RM SIZE RO TYPE MOUNTPOINTSvda 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 

可以看到vda356.9G,实际只有28.9G分配给了根目录。再使用parted命令查看:

mgr@ubuntua:~$ sudo parted /dev/vda unit GB print freeModel: Virtio Block Device (virtblk)Disk /dev/vda: 64.4GBSector size (logical/physical): 512B/512BPartition Table: gptDisk 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.4GFree Space行的空间大小为0,说明不是未分区的空间,不需要分区。如果没有parted命令,使用下面命令安装:

sudo apt install parted

查看逻辑卷ubuntu-vg

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的空间,使用下面的命令扩展卷:

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.

再调整文件系统:

mgr@ubuntua:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lvresize2fs 1.47.0 (5-Feb-2023)Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing requiredold_desc_blocks = 4, new_desc_blocks = 8The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 14927872 (4k) blocks long.

现在使用df命令查看磁盘情况,正常了:

mgr@ubuntua:~$ df -hFilesystem Size Used Avail Use% Mounted ontmpfs 792M 632K 792M 1% /runefivarfs 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/shmtmpfs 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/efitmpfs 792M 12K 792M 1% /run/user/1000

x86版的ubuntu上使用qemu运行arm版ubuntu_qemu arm ubuntu安装

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