解压linux内核_Linux 内核 um 架构使用

本文详述了如何在Linux环境下运行User Mode Linux(UML),包括下载解压内核源码,配置编译,试运行,下载根文件系统,以及通过Minicom连接和运行用户程序。UML允许在用户空间中运行Linux内核,提供了一种测试内核代码的平台。
摘要由CSDN通过智能技术生成

Linux 内核支持很多种cpu架构,架构相关的代码放在内核 arch 子目录中,如下图:

42c56fb2cd55e443051cbab4dba5653b.png

以上众多架构中有一个 um 架构,全名叫user mode,它不是一种实体的cpu架构,这个架构的linux内核可以像 helloworld程序一样运行,运行于linux之上用户空间中,取名User Mode Linux,简写UM

AMD 和 英特尔 的电脑上都可以运行UM linux 内核:

93604029395ed1c52c4daf1f88da89f1.png
使用前准备:

下载解压linux内核源码本文使用 linux-5.4.24,其他版本的使用方法可能有细微区别

模块" class="reference-link">配置编译内核和模块
cd  linux-5.4.24make ARCH=um x86_64_defconfigmake ARCH=um linux -j6make ARCH=um modules -j6

编译完成,生成 linux 文件,这个就是要运行的内核程序

6299ea55d997da501488841b08dd8d69.png
试运行
./linux
f2e7a06bad58a3fefbdf9b855a050f52.png

内核已经运行,下面会出错,是因为没有根文件系统

cc384f9d1f5724dfd34596b560d71c04.png
下载根文件系统

下载链接:https://pan.baidu.com/s/1lhIXpeyN-zRCAej-zOahLg 提取码:l34s下载解压,得到 root_fs,把root_fs放到linux-5.4.24 目录中

967f9f9b7253597f34b7f762c7d30602.png
运行User Mode Linux
./linux

可以正常启动 ubuntu 18.04 LTS 系统

6b7c10a8fa1a4b8368ce11c4364bbb9d.png
e1ea1f39302f75544e492c5981f1a6a4.png
Minicom 连接 User Mode Linux

打开 minicom 配置:

sudo  minicom -s

详细配置如下图

fdb58a39e656aac791d5765cf28b5056.png

输入用户名密码:root/root,登录系统使用

78e70f146749ca32cb81fc37c02cc0db.png

查看 uml 系统信息:

ec725ed1c272012bb5012580dad0c230.png

Uml 内核版本是 5.4.24,就是刚刚编译的内核版本Cpuinfo 信息显示:vendor_id 是 User Mode LinuxUml 根目录大小1.5G,和 root_fs 文件大小一样Uml 内存一共26MB,很小Host 主机内核版本5.3.0,是电脑的版本:

47121dec3b9166562745ad12c608eb67.png
UML 系统中运行用户程序

随便写个程序,先在主机编译运行成功。比如app_x86_64 运行

bf1cac6fc2bd58cd4057d0d29962dba3.png

uml 系统关机:因为 uml linux 当作用户程序运行的,所以直接给进程发信号终止就可以

f731d963e6c8ea396a072607da8cec7a.png

复制程序到 root_fs 硬盘:

sudo mount -o loop root_fs /mntsudo cp ../../project_mys_y6ulx/application/app_x86_64 /mntls /mntsudo umount /mnt
79495ac26fd6e357054cc1b715a4947b.png

uml 重新开机,minicom 登录,查看并运行根目录中的app_x86_64,可以成功运行,并输出ROBE=9.,和电脑主机运行的结果一样

0b15cd8ad4f9d6e5daada617ac4be637.png

笔者已经把 uml 的 linux 程序也复制到 uml linux 跟文件系统中了,运行 ./linux 也可以。

也就是在 linux 电脑上运行了一个 uml linux 系统,uml linux 系统中又运行了一个 uml linux 系统,这个系统没有root_fs 文件,最后报错,panic 退出了,又回到上面小标题中那个问题了

d38587f3fdb3c680b011aa935ed884d0.png

UML 可以在电脑上测试 linux 内核代码中于架构无关的部分,也是一种方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值