转自  李先静  http://blog.csdn.net/absurd/article/details/1063889

试玩UML(User Mode Linux)

转载时请注明出处:http://blog.csdn.net/absurd/

这里的UML并非指统一建模语言,而指用户模式的linux。顾名思义,就是让linux系统作为一个用户进程运行。为什么要这样做呢?大家都知道调试linux 内核是件麻烦的事情,虽然可以使用kdb、gdb或者虚拟机来调试内核,但这些本身方法都有一些限制,而且我总感觉使用很麻烦,几次尝试失败后,没有再去调试过linux内核。

Linux内核对调试支持力度不够,并非是因为实现起来很困难,而是因为他们认为调试器有害软件的健康。这是有道理的,软件的质量是认认真真的设计出来的,扎扎实实的写出来的,而不是靠辛辛苦苦调试出来的。使用调试器常常导致一种不彻底的BUG修改,治标不治本,让BUG长时间潜伏在代码中,从长远利害关系来看,它会造成更严重的损害。

调试器只是一种工具,用得好不好或者恰不恰当,是我们自己的事,不能因为自己的过错而责怪工具。实际上,调试器对于我们研究内核代码,是很有帮助,运行内核代码的,观察它的效果,远远比只看代码印象更深刻。

UML为研究linux内核代码提供一种便利的方式,整个linux系统完全是一个用户进程,你可以像调试普通用户进程一样调试它。UML的实现也比较巧妙,linux内核把不同平台称之一个ARCH(architectur),每个ARCH实现依赖于特定硬件平台的功能,UML作为一个ARCH来实现,用软件模拟了硬件功能。

Linux内核2.6以及后续版本已经集成了UML,但我试了几个版本都编译不过去,直到在linux-2.6.16上尝试才成功。使用UML要先选择一个好的内核版本,否则会浪费不少时间。使用UML的具体过程如下:

1.         解开内核源码包。

[root@localhost src]# tar zxvf /mnt/hgfs/linux/linux-2.6.16.tar.gz

 

2.         编译内核。

[root@localhost linux-2.6.16]# make ARCH=um defconfig

[root@localhost linux-2.6.16]# make ARCH=um menuconfig

[root@localhost linux-2.6.16]# make ARCH=um

 

3.         安装内核。

[root@localhost linux-2.6.16]# cp linux /usr/local/bin/

4.         制作根文件系统。

[root@localhost cvs]# dd if=/dev/zero of=root_fs seek=500 count=1 bs=1M

[root@localhost um]# mkfs.ext2 ./root_fs

[root@localhost um]# mkdir /mnt/rootfs

[root@localhost um]# mount -o loop root_fs /mnt/rootfs/

(拷贝你需要的文件:因为只是研究内核,拷贝一些基本的运行库、可执行文件和配置文件就行了)

[root@localhost um]# umount /mnt/rootfs/

网上有很多制作好的根文件系统,如果目的只是研究内核,从网上下载根文件系统最方便的选择。

5.         制作交换分区

[root@localhost um]# dd if=/dev/zero of=swap_fs seek=500 count=1 bs=1M

[root@localhost um]# mkswap ./swap_fs

 

6.         正常运行。

[root@localhost um]# linux ubd0=root_fs ubd1=swap_fs

 

7.         调试运行。

gdb linux

(gdb) b start_kernel

(gdb) r ubd0=root_fs ubd1=swap_fs

~~end~~

试玩UML(User Mode Linux)相关推荐

  1. 试玩UML User Mode Linux

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 试玩UM ...

  2. linux 桌面小部件,[试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)...

    FMXLinux 是一个可以用来开发 Linux 桌面软件的第三方插件,它需要配合 Delphi 10.2 Toyko 使用方法:开启 FMX 工程,在工程项目上按鼠标右键加入 "Linux ...

  3. linux 商业游戏,Ubuntu下安装试玩原生Linux版商业游戏Braid

    这款原生Linux版商业游戏Braid国外出售价大约在80美元左右.每年在Linux平台上发布的原生商业游戏是屈指可数,而且这些游戏的质量也是参差不齐. 不过这款原生Linux版商业游戏Braid还是 ...

  4. ESP32开发 -- 试玩ESP32

    前文要测试网络调试助手,手头正好有个ESP32一直没有试过.这次正好拿来试玩一下. 一.ESP32官网查看 官网:ESP32官网 这款最小系统开发板搭载了乐鑫最新的系统级芯片 ESP32, 支持 Wi ...

  5. Xilinx HydraMini试玩教程

    Xilinx HydraMini试玩教程 前言 环境配置 基础知识 介绍 操作步骤 训练数据搜集 实体小车 模拟器 数据预处理加训练 模拟器测试模型 DNNDK量化编译 自动驾驶 调试优化 Tips ...

  6. 可生成高清视频的Stable Diffusion来了!分辨率提升4倍,超分算法来自腾讯,支持Colab在线试玩...

    明敏 发自 凹非寺 来源 | 量子位 QbitAI 免费玩的Stable diffusion,又出新变种了! 古典人像丝滑切换,还都是4倍超分辨率水平,细节也就多了亿点点吧,眉毛发丝都根根分明. 还能 ...

  7. 全志D1s/F133学习笔记(1)——MangoPi-MQ(芒果派麻雀)上手试玩

    一.资料 D1s是全志针对智能解码市场推出的高性价比AIoT芯片.它使用64bit RISC-V架构的阿里平头哥C906处理器,内置了64M DDR2,支持Linux系统,同时集成了大量自研的音视频编 ...

  8. 在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂「拳无虚发」

    视学算法报道 编辑:张倩.陈萍 加入体感控制,这位小哥破解了原版任天堂的拳击格斗游戏「拳无虚发」. 在经典红白机上玩拳击游戏是很多人的童年回忆,其中就包括任天堂 1987 年发布的拳击格斗游戏--「P ...

  9. 华人团队用Transformer做风格迁移,速度快、可试玩,网友却不买账

    视学算法报道 编辑:杜伟 利用神经网络进行风格迁移是一项非常常见的任务,方法也很多,比如基于优化和基于 RL 的方法.最近,来自百度 VIS 团队的研究者提出了一种基于 Transformer 的风格 ...

最新文章

  1. C++ 二维数组示例 - 控制台和MFC版
  2. 阿里云故障演练平台获得可信云最高等级认证,为企业数字韧性能力保驾护航
  3. JAVA内存存储数据的位置
  4. 数据备份、pymysql模块
  5. Mac忘记root密码(Mac OS Sierra忘记root密码如何重置)
  6. bigdecimal比较大小的方法_【初中数学思维训练】第7题——比较大小的常用方法...
  7. 浅谈JSONP 的本质工作原理
  8. IntelliJ Idea一些常用快捷键
  9. FFmpeg总结(五)AV系列结构体之AVCodec、AVCodecParameters、AVCodecParser、AVCodecParserContext、AVCodecDescriptor
  10. 20170907wdVBA_ImportPicturesBaseOnExcel
  11. python汉化版编辑器_Thonny(Python编辑器)
  12. H5网页漫画小说苹果cms模板源码/支持对接公众号/支持三级分销
  13. 极光推送入门教程-后端
  14. 【转载】SAP物料基本计量单位的更改
  15. c语言模拟开关题目,8x16 模拟开关阵列芯片 CH446Q.PDF
  16. 几种聚类算法的对比实验
  17. jquery判断是否按下Enter(回车)和TAB键
  18. python 文字转换成声音
  19. Day10 空时编码理论之无线信道、分集和复用
  20. c语言text的作用,一个读text文本文件和解析文本的例子(C语言)

热门文章

  1. 后端开发必知必学的 Linux 命令行大全
  2. 面试题:如何求根号2
  3. 缓存穿透、缓存并发、热点缓存之最佳招式
  4. 查询mysql上传大小限制_解决数据库phpmyadmin中上传最大限制:2,048 KB
  5. excel大学计算机试题,大学计算机基础 excel测试题 求答案~~喵~~
  6. 【并发编程】并发编程的三大特性
  7. Window10下Ubuntu20.04子系统下安装cuda
  8. 平面法向量,点云法向量估计及可视化
  9. YOLOF 速度和效果均超过YOLOv4的检测模型
  10. gradle build running很慢