使用linux_Linux 内核 um 架构使用

本文介绍了如何在Linux系统上设置和运行User Mode Linux (UML),包括下载内核源码、配置编译、创建根文件系统、通过Minicom连接以及在UML中运行用户程序。UML允许在用户空间中运行Linux内核,提供了一种方便的测试和隔离环境。
摘要由CSDN通过智能技术生成

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

da28ca308b4f8ade6a4647aba76cfb4b.png

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

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

f8a1af586b7d68a5609d72b0a36527ac.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 文件,这个就是要运行的内核程序

f782d4b73edde4557d96c585f1246bdb.png
试运行
./linux
1abb0f112e7997b82bf3871e44fc91f4.png

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

f197d0f291174802740f0f292ebff8e7.png
下载根文件系统

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

aff4fd6521138de18aac449828b846f6.png
运行User Mode Linux
./linux

可以正常启动 ubuntu 18.04 LTS 系统

9ab3b0d121288f696cd8cea4a6c5d6ad.png
378a7aa52e480881f54816833402883e.png
Minicom 连接 User Mode Linux

打开 minicom 配置:

sudo  minicom -s

详细配置如下图

5836db21081d2879c4322351ffa9a8d7.png

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

69411213608afee013e3fe6ad9cb4af1.png

查看 uml 系统信息:

1beac6b5c4ab1ca32bc6d1f775a41934.png

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

7e128425b1fb08b4d898cf9119b38f48.png
UML 系统中运行用户程序

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

ca541584f7598fa3249873e0ee314fe1.png

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

13f2fd5d324cde5b087934b0e27d56c3.png

复制程序到 root_fs 硬盘:

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

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

0e8dbf282b49042b8703e18f6e55d08a.png

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

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

716369f3665783792ced37ada53ee919.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值