x86版的ubuntu上使用qemu运行arm版ubuntu

发布于:2025-07-16 ⋅ 阅读:(18) ⋅ 点赞:(0)

一直以来接触的都是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.isoQEMU_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 

可以看到vda356.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  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-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

在这里插入图片描述

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


网站公告

今日签到

点亮在社区的每一天
去签到