在qemu中挂载镜像文件

news/2025/2/6 1:55:44/

将镜像文件作为交换分区

创建镜像文件:

dd if=/dev/zero of=swap.img bs=512 count=131072
qemu-system-arm -nographic -M vexpress-a9 -m 64M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -sd swap.img

~ # mkswap /dev/mmcblk0
Setting up swapspace version 1, size = 67104768 bytes
[   62.306076] random: mkswap urandom read with 112 bits of entropy available
UUID=f1837026-d957-4153-97ab-31f549ec0534
~ # [   72.694766] random: nonblocking pool is initialized
swapon /dev/mmcblk0
[   83.105627] Adding 65532k swap on /dev/mmcblk0.  Priority:-1 extents:1 across:65532k SS
~ # df -h
Filesystem                Size      Used Available Use% Mounted on
tmpfs                    24.8M         0     24.8M   0% /tmp
tmpfs                    24.8M         0     24.8M   0% /dev
~ # freetotal        used        free      shared  buff/cache   available
Mem:          50840       11948       32708        2152        6184       34028
Swap:         65532           0       65532

将镜像文件作为外挂磁盘

dd if=/dev/zero of=ext4.img bs=512 count=131072

格式化:

mkfs.ext4 ext4.img

 挂载 ext4 文件系统需要打开如下配置的选项。

[arch/arm/configs/vexpress _ defconfig]
CONFIG _ LBDAF=y
CONFIG_EXT4 _ FS=y 

 

重新编译内核

qemu-system-arm -nographic -M vexpress-a9 -m 64M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -sd ext4.img

系统启动后,手动挂载。 

 挂载成功。

未验证

在启动命令后使用-sd swap.img报错

WARNING: Image format was not specified for 'swap.img' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.
qemu-system-aarch64: -sd swap.img: machine type does not support if=sd,bus=0,unit=0
 

解决办法: 将-sd swap.img替换为下面的形式

-drive format=raw,file=swap.img


http://www.ppmy.cn/news/1017376.html

相关文章

优雅的使用 Dockerfile 定制镜像

一、使用 Dockerfile 定制镜像 1.1、Dockerfile 定制镜像 1.2、FROM 指定基础镜像 1.3、RUN 执行命令 1.4、构建镜像 1.5、镜像构建上下文(Context) 1.6、其他 docker build 的用法 二、Dockerfile 指令 2.1、COPY 2.2、ADD 2.3、CMD 2.4、EN…

一篇文章教会你什么是Linux进程控制

Linux进程控制 进程创建1.fork函数初识1.1那么fork创建子进程时,操作系统都做了什么呢?1.2 父子进程和CPU中的EIP(指令指针)之间存在一定的关系1.3 fork的常规用法有哪些?1.4 fork调用失败的原因有哪些? 2.…

比特鹏哥2-数据类型和变量【自用笔记】

比特鹏哥2-数据类型和变量【自用笔记】 1.数据类型介绍字符,整型,浮点型,布尔类型 2.signed 和unsigned3.数据类型的取值范围sizeof 展示字节大小--- 计算机中单位:字节 4.变量 常量4.1 变量创建变量(数据类型 变量名&…

一套逻辑轻松且智能解决PyQt中控件数值验证的问题

在PyQt开发中,时常需要对控件的值进行校验,如需要校验QCheckBox是否被选中,QLabel是否校验值是否为空等等。在复杂的业务场景下,这类控件如果数量很多,逐个校验就显得麻烦,需要一一获得控件名称&#xff0c…

FastAPI 构建 API 高性能的 web 框架(二)

上一篇 FastAPI 构建 API 高性能的 web 框架(一)是把LLM模型使用Fastapi的一些例子,本篇简单来看一下FastAPI的一些细节。 有中文官方文档:fastapi中文文档 假如你想将应用程序部署到生产环境,你可能要执行以下操作&a…

Python 程序设计入门(016)—— 字典的操作(3):字典的排序

Python 程序设计入门(016)—— 字典的操作(3):字典的排序 目录 Python 程序设计入门(016)—— 字典的操作(3):字典的排序一、sorted() 函数二、直接对字典排序…

JavaScript:模块化【CommonJS与ES6】

在 JavaScript 编程中,随着项目的复杂性增加,代码的组织和管理变得至关重要。模块化是一种强大的编程概念,它允许我们将代码划分为独立的模块,提高了可维护性和可扩展性。本文将详细介绍 CommonJS 和 ES6 模块,帮助你理…

OKHTTP缓存问题记录

使用okhttp的缓存功能 okhttp有一个功能就是适配http协议里面cache-control头 但是在实际使用的过程中,发现非文本内容,如果不对Response中的inputstream读取,就不会缓存下来 比如使用如下代码读取后才能缓存到cache目录 ResponseBody bod…