http://blog.csdn.net/ztz0223/article/details/7874759 UML进行Linux内核调试 --1 环境搭建
http://blog.csdn.net/ztz0223/article/details/8227004
1. Tools install
sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
sudo apt-get build-dep linux
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
2. Install Ubuntu FS
1. 准备好在一个img文件中安装根文件系统(rootfs)。
Ubuntu系统中有个工具debootstrap是专门用来实现无盘安装rootfs的,借助这个工具,可以将一个Ubuntu系统安装到一个img文件,步骤如下:
a. 安装debootstrap
# sudo apt-get install debootstrap
b. 创建一个大小为1G的img文件并格式化为ext3
# dd if=/dev/zero of=rootfs.img bs=1M count=1024
# mkfs.ext3 rootfs.img
c. 将rootfs.img挂载为一个loop设备
# mkdir uml-karmic-root
# sudo mount -o loop rootfs.img uml-karmic-root
d. 将Ubuntu 9.10(karmic)安装到rootfs.img中
# cd uml-karmic-root
# sudo debootstrap --arch i386 karmic uml-karmic-rootfs/ http://ftp.sjtu.edu.cn/ubuntu
注意,arch参数可以通过查看当前主机的arch来确定uname -a, http://ftp.sjtu.edu.cn/ubuntu是当前ubuntu系统的更新源,你可以查看/etc/apt/sources.list来选择安装源。
2. 为UML配置rootfs
a. 更改分区挂载点文件etc/fstab
# sudo echo “/dev/ubda / ext3 defaults 0 1”> uml-karmic-root/etc/fstab
# sudo echo “proc /proc proc defaults 0 0” >> uml-karmic-root/etc/fstab
b. 创建hosts文件
# sudo echo “127.0.0.1 localhost” > uml-karmic-root/etc/hosts
c. 配置网络接口:
# echo "auto lo" > uml-karmic-root/etc/network/interfaces
# echo "iface lo inet loopback" >> uml-karmic-root/etc/network/interfaces
# echo "auto eth0" >> uml-karmic-root/etc/network/interfaces
# echo "iface eth0 inet dhcp" >> uml-karmic-root/etc/network/interfaces
d. 更改系统配置禁用tty[1-6]控制台
Ubuntu系统除了X窗口之外还默认开启了6个tty控制台(可通过ALT+F1~F6切换),但UML需要一个就够了。另外,为了避免启动UML时会弹出xterm终端,只允许启用tty0。
# sudo chroot uml-karmic-root
将不用的tty删除。注意,ubuntu 8.10系统中的tty文件存放在/etc/event.d目录中(tty1~tty6),而9.10是以conf文件的形式存放在/etc/init目录中。
# rm /etc/init/tty[2-6].conf
将tty1.conf重命名为tty0.conf并将:
exec /sbin/getty 38400 tty1
这一行的内容修改为:
exec /sbin/getty 38400 tty0
再将/etc/default/console-setup文件中的ACTIVE_CONSOLE字段修改为:
最后在/etc/securetty添加tty0允许root登录tty0控制台。ACTIVE_CONSOLE="/dev/tty0"
=============================================
779 gdb linux vbda=../Debian-Squeeze-x86-root_fs mem=512m
780 ./linux vbda=../Debian-Squeeze-x86-root_fs mem=512m
781 ./linux ubda=../Debian-Squeeze-x86-root_fs mem=512m
782 gdb linux ubda=../Debian-Squeeze-x86-root_fs mem=512m