linux内核uml图,Linux 内核调试1-UML

最近看了些Linux内核源码,之前认为最好的调试内核源码最好的方式使用Qemu虚拟机,结合GDB调试,虽然在网上也看到一些这种调试方式的弊端,但感觉虚拟机支持调试是最完美的事情,虽然Bochs更为灵活甚至内置调试器,但速度太慢。

之前一直觉得KGDB这种双机调试的方式很不完美,还必须使用一个调试机,不过在Windows下使用WinDbg调试虚拟机多了,感觉这种方式很合理,起 码被调试机当机的情况下,调试机还是活的。而且这样看上去很酷,而且比SoftICE这样“不稳定”的调试方式要好的多。

这两天看到一种 UML(User Mode Linux)的调试方式,居然早已加入内核,我才听闻,真是落后时代啊。这种UML方式是把linux内核当作本地一个普通的应用程序执行,当然也很方便 调试,这个类似于Xen虚拟机。不过在64位Fedora上没有配好环境,在i386却很容易配置,打开控制台转到内核源码,例如linux- 2.6.34:

编译内核命令要在普通方式后加入构架um参数:# 配置内核

make menuconfig ARCH=um

# 编译内核

make linux ARCH=um

编译完成后会在源码根目录下生成可执行文件 linux。

到这里似乎很简单,下面需要创建 Linux 根文件系统,也就是除内核以外的硬盘文件,这个根文件系统包括Linux文件组织数,以及启动系统所必须的一些辅助程序。

一种方法就是手工制作:# 创建一个2G的文件作为硬盘

dd if=/dev/zero of=rootfs.img bs=1M count=2048

# 格式化文件

mkfs.ext3 rootfs.img

# 映射此文件到主机文件夹

mount -o loop rootfs.img /mnt/temp

如此便可通过拷贝文件到/mnt/temp/目录,等同于拷贝文件到rootfs.img硬盘文件。这里可以直接通过主机的文件目录组织去构建跟文件系统,也可以直接安装一个linux到此目录。

使用最简单的方式就是直接使用现成的根文件系统。在UML网站 The User-mode Linux Kernel Home Page有相关链接可以下载,比如下载 DSL-4.4-root_fs.bz2 文件,首先解压运行之:bunzip2 DSL-4.4-root_fs.bz2

./linux udba=DSL-4.4-root_fs

运行后出现 Unable to mount root fs on unknown-block(0,0) 错误后程序崩溃,这里可能是内核有关文件系统编译选项的问题,明天继续研究。。。

到这里有几个问题:

1、64位系统下UML编译,要设置子系统等,如何设置?

2、根文件系统建立,一个Linux最小单元的根文件系统需要哪些文件和目录?

3、内核编译选项问题;

4、调试UML方法和UML启动参数,比如网络设置等等。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值