linux User Mode linux

来源:互联网 发布:阿里云 域名301重定向 编辑:程序博客网 时间:2024/05/22 00:34

在《linux 设备驱动程序》第四章调试技术中有提起UML内核调试,但书中没有详细的介绍这方法。小koala在这里介绍UML调试。UML(user mode linux)就是将linux当做应用层的进程,所以可以用gdb调试。
话不多说直接上干货

Step1:默认配置:

make defconfig ARCH=um

​Step2:选择相关配置:

make menuconfig ARCH=um

选择:

l Kernelhacking->Kernel debugging

l Kernelhacking->Compile-time checks and compiler options->Compile the kernelwith debug info

l Kernelhacking->compile-time checks and compiler options->Compile the kernelwith frame pointers

Step3:编译内核

make ARCH=um –j(内核数*2)

编译成功之后,在源码的根目录下有linux和vmlinux可执行文件。

Step4:文件系统。现在已经编译好了um的内核,但是没有文件系统。下载文件系统:http://fs.devloop.org.uk

,下载Debian-Wheezy-AMD64-root_fs.bz2文件系统。解压到编译好的源码的目录下。如

bunzip2Debian-Wheezy-AMD64-root_fs.bz2。

Step5:制作swap文件系统,主要作用是使UML运行更加稳定。(可选)

dd if=/dev/zero of=swap_fs bs=1M count=512sudo mkswap swap_fs

Step6:启动UML。但必须是超级用户root。先进入已编译好的源码目录下。

Sudo bash./linux ubda=Debian-Wheezy-AMD64-root_fs ubdb=swap_fs mem=256M

(注:udba:根文件 ubdb:交互文件 mem:UML内存)

当成功启动UML,会有这样的界面:
这里写图片描述

第一次的登陆只能是root。

Step7:寻找UML的进程号,另开一个终端。输入ps –el |greplinux。如下

图中每一行,第4个参数为第5个参数的子进程。

图中处理第一行之外的每一行,都显示进程号为26825的进程是其他进程的父进程。因此PID=26825的进程是UML进程。
gdb调试UML(user mode linux)
编辑删除转载 2016-04-17 20:56:44
标签:gdb调试内核uml
UML(user mode linux):将linux当做应用层的进程,所以可以用gdb调试。

Step1:默认配置:make defconfig ARCH=um

​Step2:选择相关配置:make menuconfig ARCH=um

选择:

l Kernelhacking->Kernel debugging

l Kernelhacking->Compile-time checks and compiler options->Compile the kernelwith debug info

l Kernelhacking->compile-time checks and compiler options->Compile the kernelwith frame pointers

Step3:make ARCH=um –j(内核数*2)

编译成功之后,在源码的根目录下有linux和vmlinux可执行文件。

Step4:文件系统。现在已经编译好了um的内核,但是没有文件系统。下载文件系统:http://fs.devloop.org.uk

,下载文件系统。解压到编译好的源码的目录下。如bunzip2Debian-Wheezy-AMD64-root_fs.bz2。

Step5:制作swap文件系统,主要作用是使UML运行更加稳定。(可选)

dd if=/dev/zero of=swap_fs bs=1M count=512

sudo mkswap swap_fs

Step6:启动UML。但必须是超级用户root。先进入已编译好的源码目录下。

Sudo bash

./linux ubda=Debian-Wheezy-AMD64-root_fs ubdb=swap_fs mem=256M

(注:udba:根文件 ubdb:交互文件 mem:UML内存)

当成功启动UML,会有这样的界面:

​​​第一次的登陆只能是root。

Step7:寻找UML的进程号,另开一个终端。输入ps –el |greplinux。如下

​图中每一行,第4个参数为第5个参数的子进程。

图中处理第一行之外的每一行,都显示进程号为26825的进程是其他进程的父进程。因此PID=26825的进程是UML进程。

这里写图片描述

Step8:启动gdb。另打开一个终端。输入gdb ./linux

Step9:退出UML。切换到UML的终端。输入init 0,即可退出。

参考:

http://user-mode-linux.sourceforge.net

http://user-mode-linux.sourceforge.net/source.html

http://user-mode-linux.sourceforge.net/configure.html

0 0