Ubuntu应用拓展(8)——qemu虚拟机挂载运行

本文详细介绍了如何在 RK3399 平台上挂载并扩容 Ubuntu 18.04 文件系统镜像。首先通过 `dd` 命令增加镜像容量,接着使用 `e2fsck` 和 `resize2fs` 进行扩展。随后,在 QEMU 的 arm 虚拟机中挂载扩容后的镜像,并通过 `chroot` 切换到目标文件系统。在虚拟机内部,更新系统源,安装 `locales` 和 `libqt5charts5-dev` 等软件包,以便于编译应用程序。整个过程详尽展示了从扩容到在虚拟环境中运行的完整步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台:RK3399
系统:Ubuntu18.04

挂载文件系统

源码解读:
OK3399-desktop-release								//飞凌释放的Ubuntu系统源码
OK3399-desktop-release/build_ubuntu.sh				//编译Ubuntu的脚本
OK3399-desktop-release/rootfs/ubuntu.img			//Ubuntu文件系统镜像

挂载镜像

sudo mount rootfs/ubuntu.img rootfs/target

查看分区情况,可见文件系统镜像挂载的分区空余容量已经没有了,这个和我们制作镜像的手法相关,所以我们需要先卸载刚才挂载的镜像,并对镜像进行扩容,然后才能挂载使用。

OK3399-desktop-release$ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          22T  9.5T   12T  46% /
tmpfs            64M     0   64M   0% /dev
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sdb1        22T  9.5T   12T  46% /etc/hosts
shm              64M     0   64M   0% /dev/shm
/dev/loop0      3.1G  3.0G     0 100% /home/forlinx/work/OK3399-linux-source/OK3399-desktop-release/rootfs/target

镜像扩容

我们追加4000M的空余容量给我们的镜像

dd if=/dev/zero of=./add.img bs=1M count=4000
cat add.img >> rootfs/ubuntu.img
e2fsck -f rootfs/ubuntu.img
resize2fs rootfs/ubuntu.img

使用fdisk -lu查看镜像信息

OK3399-desktop-release$ fdisk -lu rootfs/ubuntu.img
Disk rootfs/ubuntu.img: 7 GiB, 7549747200 bytes, 14745600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

启动arm虚拟机

重新挂载镜像

OK3399-desktop-release$ sudo mount rootfs/ubuntu.img rootfs/target

OK3399-desktop-release$ ls rootfs/target/
bin  boot  dev  etc  home  include  lib  lost+found  media  mnt  opt  proc  root  run  sbin  share  srv  sys  system  tmp  usr  var

执行如下指令,使用chroot命令切换到指定的根文件系统目录,启动arm虚拟机qemu-aarch64-static:

TARGET_ROOTFS_DIR="$PWD/rootfs/target"

if [ ! -e /usr/bin/qemu-aarch64-static ];then
        echo "please install qemu-aarch64-static!!!"
        sudo umount $TARGET_ROOTFS_DIR/dev
        exit -1
fi

sudo mount -o bind /dev $TARGET_ROOTFS_DIR/dev

sudo chroot $TARGET_ROOTFS_DIR

执行完就进入到新指定的文件系统根目录:

root@d25935313377:/# ls
bin  boot  dev  etc  home  include  lib  lost+found  media  mnt  opt  proc  root  run  sbin  share  srv  sys  system  tmp  usr  var

现在我们就可以安装一些基础版文件系统没有安装的工具和软件了:

更新Ubuntu的源:
mv /var/lib/apt/lists /var/lib/apt/lists.old
mkdir -p /var/lib/apt/lists/partial
apt-get update -y
apt-get upgrade -y

安装工具

安装locales之类的工具

root@d25935313377:/# apt-get install locales
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  locales
0 upgraded, 1 newly installed, 0 to remove and 21 not upgraded.
Need to get 3611 kB of archives.
After this operation, 14.5 MB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 locales all 2.27-3ubuntu1.4 [3611 kB]
Fetched 3611 kB in 3s (1350 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
E: Can not write log (Is /dev/pts mounted?) - posix_openpt (2: No such file or directory)
Selecting previously unselected package locales.
(Reading database ... 110532 files and directories currently installed.)
Preparing to unpack .../locales_2.27-3ubuntu1.4_all.deb ...
Unpacking locales (2.27-3ubuntu1.4) ...
Setting up locales (2.27-3ubuntu1.4) ...
Generating locales (this might take a while)...
Generation complete.
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
qemu: Unsupported syscall: 277

root@d25935313377:/# locale
locale        locale-check  locale-gen    localectl     localedef

编译应用程序

cp OK3399-Test rootfs/target/tmp -rf		//拷贝我们的应用程序到qemu虚拟机中

root@d25935313377:/# ls tmp/
OK3399-Test

root@d25935313377:/# cd tmp/OK3399-Test/
root@d25935313377:/tmp/OK3399-Test# qmake
Info: creating stash file /tmp/OK3399-Test/.qmake.stash
Project ERROR: Unknown module(s) in QT: charts

安装缺少的qt模块

root@d25935313377:/tmp/OK3399-Test# apt-get install libqt5charts5-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libqt5charts5
The following NEW packages will be installed:
  libqt5charts5 libqt5charts5-dev
0 upgraded, 2 newly installed, 0 to remove and 21 not upgraded.
Need to get 328 kB of archives.
After this operation, 1765 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://ports.ubuntu.com/ubuntu-ports bionic/universe arm64 libqt5charts5 arm64 5.9.5-0ubuntu1 [307 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports bionic/universe arm64 libqt5charts5-dev arm64 5.9.5-0ubuntu1 [21.9 kB]
Fetched 328 kB in 2s (164 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
E: Can not write log (Is /dev/pts mounted?) - posix_openpt (2: No such file or directory)
Selecting previously unselected package libqt5charts5:arm64.
(Reading database ... 111150 files and directories currently installed.)
Preparing to unpack .../libqt5charts5_5.9.5-0ubuntu1_arm64.deb ...
Unpacking libqt5charts5:arm64 (5.9.5-0ubuntu1) ...
Selecting previously unselected package libqt5charts5-dev:arm64.
Preparing to unpack .../libqt5charts5-dev_5.9.5-0ubuntu1_arm64.deb ...
Unpacking libqt5charts5-dev:arm64 (5.9.5-0ubuntu1) ...
Setting up libqt5charts5:arm64 (5.9.5-0ubuntu1) ...
Setting up libqt5charts5-dev:arm64 (5.9.5-0ubuntu1) ...
Processing triggers for libc-bin (2.27-3ubuntu1.4) ...

再编译就没有问题了。

root@d25935313377:/tmp/OK3399-Test# qmake
root@d25935313377:/tmp/OK3399-Test# make
### 如何在 Windows 上使用 QEMU 安装和配置 Ubuntu 虚拟机 #### 准备工作 为了确保能够在 Windows 平台上顺利运行 QEMU 来安装并配置 Ubuntu 虚拟机,首先要确认主机环境满足基本条件。虽然提供的参考资料主要针对 Linux 系统中的操作[^1],但在 Windows 下同样适用类似的准备工作。 对于 Windows 用户来说,在开始之前应当检查计算机是否启用了硬件辅助虚拟化技术(Intel VT-x 或 AMD-V)。可以通过进入 BIOS 设置来开启此功能。另外,也可以通过命令提示符执行如下指令初步判断是否存在该技术支持: ```powershell wmic cpu get vmx /value ``` 当返回值为 `TRUE` 表明当前 CPU 支持硬件加速特性[^4]。 #### 安装 QEMU 和相关组件 尽管大部分资料集中于描述基于 Debian 类发行版下的软件包管理器进行安装的方式[^3],然而在 Windows 中获取 QEMU 的方法略有不同。推荐访问官方站点下载适用于 Windows 版本的应用程序,并按照指引完成整个安装流程。此外,还需要额外安装一些必要的库文件以及工具集以便更好地管理和控制虚拟设备。 #### 创建磁盘镜像 创建一个新的虚拟硬盘用于存储即将安装的操作系统数据。这一步骤通常涉及指定目标路径、大小以及其他参数选项。下面给出了一条简单的命令行语句作为示范用途: ```bash qemu-f qcow2 ubuntu.qcow2 20G ``` 上述代码片段指示 QEMU 构建一个名为 "ubuntu.qcow2" 的动态扩展型 QCOW2 文件格式的虚拟磁盘,初始容量设定为 20GB 大小[^5]。 #### 启动虚拟机并加载 ISO 镜像 准备好之后就可以尝试启动新建立好的 VM 实例了。这里假设已经拥有了最新版本的 Ubuntu Server LTS 发布映像(.iso),将其放置到易于访问的位置即可继续下一步动作。以下是完整的调用样例供参考: ```bash qemu-system-x86_64.exe \ -enable-kvm \ -m 4G \ -smp cores=2,threads=2 \ -hda ubuntu.qcow2 \ -cdrom path\to\ubuntu-server.iso \ -boot d \ -net nic,model=virtio \ -net user \ -vga std \ -usbdevice tablet ``` 这段脚本定义了一系列关键属性,包括但不限于启用 KVM 加速、分配内存资源、CPU 数量划分、挂载先前制作完毕的磁盘镜像连同实际物理光驱内的 LiveCD 映射位置等重要细节。 #### 进入图形界面或终端模式完成安装过程 一旦成功引导至 GRUB 引导菜单,则可以选择直接跳转到 GUI 安装向导页面或是仅限字符级别的 TUI 文字交互方式来进行后续步骤直至结束整个部署环节。期间可能涉及到分区规划、网络连接测试等一系列常规性的设置项目[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值