电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
Linux 内核 um 架构使用
分 享
扫描二维码分享
Linux 内核 um 架构使用
um架构
Linux内核
robe_zhang
关注
发布时间: 2020-04-07
丨
阅读: 1557
Linux 内核支持很多种cpu架构,架构相关的代码放在内核 arch 子目录中,如下图: ![](https://cf01.ickimg.com/bbsimages/202004/a57d1d44704badbbe23cb48055d3784b.png) 以上众多架构中有一个 um 架构,全名叫user mode,它不是一种实体的cpu架构,这个架构的linux内核可以像 helloworld程序一样运行,运行于linux之上用户空间中,取名User Mode Linux,简写UM AMD 和 英特尔 的电脑上都可以运行UM linux 内核: ![](https://cf01.ickimg.com/bbsimages/202004/677ca8afba91a84d89783a0919c5845d.png) #### 使用前准备: 下载解压linux内核源码 本文使用 linux-5.4.24,其他版本的使用方法可能有细微区别 #### 配置编译内核和模块 ```shell cd linux-5.4.24 make ARCH=um x86_64_defconfig make ARCH=um linux -j6 make ARCH=um modules -j6 ``` 编译完成,生成 linux 文件,这个就是要运行的内核程序 ![](https://cf01.ickimg.com/bbsimages/202004/f4e05948ea58242af3985a8dc8296f7d.png) #### 试运行 ```shell ./linux ``` ![](https://cf01.ickimg.com/bbsimages/202004/bc2a929b67a2651b657e1a5d597cd924.png) 内核已经运行,下面会出错,是因为没有根文件系统 ![](https://cf01.ickimg.com/bbsimages/202004/e6487ae79d17b6062e889b6da46afbd3.png) #### 下载根文件系统 下载链接:https://pan.baidu.com/s/1lhIXpeyN-zRCAej-zOahLg 提取码:l34s 下载解压,得到 root_fs,把root_fs放到linux-5.4.24 目录中 ![](https://cf01.ickimg.com/bbsimages/202004/8eab6cda5abc911d77cc1109f884f801.png) #### 运行User Mode Linux ```shell ./linux ``` 可以正常启动 ubuntu 18.04 LTS 系统 ![](https://cf01.ickimg.com/bbsimages/202004/1e395ef1830a39d186bbf67db549ec3d.png) ![](https://cf01.ickimg.com/bbsimages/202004/4ccb23c8988da5b5d6e07fc6a3f967cc.png) #### Minicom 连接 User Mode Linux 打开 minicom 配置: ```shell sudo minicom -s ``` 详细配置如下图 ![](https://cf01.ickimg.com/bbsimages/202004/d047706365e5e69d7cb4b1a937057923.png) 输入用户名密码:root/root,登录系统使用 ![](https://cf01.ickimg.com/bbsimages/202004/415b1b09205c564c0be3d0dc31fd2985.png) 查看 uml 系统信息: ![](https://cf01.ickimg.com/bbsimages/202004/e012abc1195b9493d3b76c780778dfde.png) Uml 内核版本是 5.4.24,就是刚刚编译的内核版本 Cpuinfo 信息显示:vendor_id 是 User Mode Linux Uml 根目录大小1.5G,和 root_fs 文件大小一样 Uml 内存一共26MB,很小 Host 主机内核版本5.3.0,是电脑的版本: ![](https://cf01.ickimg.com/bbsimages/202004/b0168b17de4655ef5ab4bdcca3823fdf.png) #### UML 系统中运行用户程序 随便写个程序,先在主机编译运行成功。 比如app_x86_64 运行 ![](https://cf01.ickimg.com/bbsimages/202004/974ef95d2ad257239fa901b61e5b5788.png) uml 系统关机:因为 uml linux 当作用户程序运行的,所以直接给进程发信号终止就可以 ![](https://cf01.ickimg.com/bbsimages/202004/768611f1328989453e5ba06446bc070f.png) 复制程序到 root_fs 硬盘: ```shell sudo mount -o loop root_fs /mnt sudo cp ../../project_mys_y6ulx/application/app_x86_64 /mnt ls /mnt sudo umount /mnt ``` ![](https://cf01.ickimg.com/bbsimages/202004/dbcc416afdde32977962ffa02f0ad7dd.png) uml 重新开机,minicom 登录, 查看并运行根目录中的app_x86_64,可以成功运行,并输出ROBE=9.,和电脑主机运行的结果一样 ![](https://cf01.ickimg.com/bbsimages/202004/de3388a01ac29f5016d1cbccf68a00a8.png) 笔者已经把 uml 的 linux 程序也复制到 uml linux 跟文件系统中了,运行 ./linux 也可以。 也就是在 linux 电脑上运行了一个 uml linux 系统,uml linux 系统中又运行了一个 uml linux 系统,这个系统没有root_fs 文件,最后报错,panic 退出了,又回到上面<试运行>小标题中那个问题了 ![](https://cf01.ickimg.com/bbsimages/202004/7d1d810754eeb48bc4ec4fc112b7a9b0.png) UML 可以在电脑上测试 linux 内核代码中于架构无关的部分,也是一种方法
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
1
)
robe_zhang
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交