qemu 运行 linux

news/2024/11/25 5:31:29/

文章目录

  • qemu 运行 linux
    • linux 内核版本
    • 生成配置文件
    • 编译设备树
    • 编译内核
    • 报错与解决
    • 运行 linux
    • 附录脚本
    • 参考

qemu 运行 linux

linux 内核版本

linux-6.5.7

linux 内核下载地址

https://www.kernel.org/

可以在浏览器中点击下载,也可以使用命令行下载

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.5.7.tar.xz

解压

tar -vxf linux-6.5.7.tar.xz 

生成配置文件

在根目录 linux-6.5.7 执行

make vexpress_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-

编译设备树

在根目录 linux-6.5.7 执行

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- dtbs

编译内核

在根目录 linux-6.5.7 执行

make -j6 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-

报错与解决

fatal error: gmp.h: No such file or directory
fatal error: mpc.h: No such file or directory

解决

sudo apt-get install libgmp-dev
sudo apt-get install libmpc-dev

运行 linux

sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb -nographic
# -dtb  指定设备树,否则会失败

启动日志

1f00          131072 mtdblock0 (driver?)
1f01           32768 mtdblock1 (driver?)
List of all bdev filesystems:ext3ext4ext2cramfssquashfsvfatKernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.5.7 #3
Hardware name: ARM-Versatile Expressunwind_backtrace from show_stack+0x10/0x14show_stack from dump_stack_lvl+0x40/0x4cdump_stack_lvl from panic+0x104/0x320panic from mount_root_generic+0x208/0x29cmount_root_generic from prepare_namespace+0x1bc/0x20cprepare_namespace from kernel_init+0x18/0x12ckernel_init from ret_from_fork+0x14/0x28
Exception stack(0xa0825fb0 to 0xa0825ff8)
5fa0:                                     00000000 00000000 00000000 00000000
5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
5fe0: 00000000 00000000 00000000 00000000 00000013 00000000
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

从日志中可以看到,挂载 VFS 文件系统失败,导致内核 panic。下节将介绍 rootfs。

附录脚本

export ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-   # 设置编译平台和工具链
make vexpress_defconfig                                 # 加载板子的配置信息
make dtbs                                               # 编译设备树
make -j8                                                # 编译内核

参考

  • https://www.jianshu.com/p/91baa4d140a2

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

相关文章

华为云云耀云服务器L实例评测|企业项目最佳实践之建议与总结(十二)

华为云云耀云服务器L实例评测|企业项目最佳实践系列: 华为云云耀云服务器L实例评测|企业项目最佳实践之云服务器介绍(一) 华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二) 华为云云耀云服务器L实例评测&#xff5…

23面向对象案例1

目录 1、计算连续表达式的一个过程 2、优化后的代码 为什么不能return resultn? 3、用面向对象的方法可以解决冗余的问题,但是还是不能解决result的值可以被随意修改的问题 4、解决不能被随意修改的问题,可以将类属性改成私有变量吗&…

QTableWidget 表格增删数据

QTableWidgetQTableWidgetQTableWidget部分使用方法,如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时,设置了条件判断如正则表达式,若用户输入的数据不合法,则添加失败并提示用户错误的地方,便于用户修…

Commonjs与ES Module

commonjs 1 commonjs 实现原理 commonjs每个模块文件上存在 module,exports,require三个变量,然而这三个变量是没有被定义的,但是我们可以在 Commonjs 规范下每一个 js 模块上直接使用它们。在 nodejs 中还存在 __filename 和 __dirname 变…

异常检测-T² (Hotelling‘s T-squared) 统计量和SPE (Squared Prediction Error) 统计量

T 统计量和 SPE 统计量 一、T (Hotellings T-squared) 统计量:二、SPE (Squared Prediction Error) 统计量: 基于主成分分析 (PCA) 的故障诊断是一种常见的统计方法,用于检测和识别过程中的异常情况。在这种方法中,T (Hotelling’s T-squared) 统计量和S…

2021年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程(1~6级)全部真题・点这里 C/C编程(1~8级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 执行以下程序 a[33,55,22,77] a.sort() for i in a:print(i)运行…

C语言 驼峰命名法和下划线命名法

在C语言中,变量命名遵循以下规则: 变量名只能由字母、数字和下划线组成。变量名必须以字母或下划线开头。变量名不能使用C语言中的关键字。变量名中不能出现连续的两个下划线。变量名区分大小写,例如,count和Count被视为两个不同…

Jetpack:008-Icon与Image

文章目录 1. 概念介绍2. 使用方法2.1 Icon2.2 Image 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中与Button相关的内容,本章回中主要I con与Image。闲话休提,让我们一起Talk Android Jetpack吧! 1. 概念介绍 我们在本章回中介绍…