Chinaunix

标题: 用UML单步调试内核 [打印本页]

作者: bleem1998    时间: 2005-10-25 23:08
标题: 用UML单步调试内核

  1. User mode linux

  2. 这是什么?
  3. User mode linux简称UML,是一种虚拟机。。。。平时我们build内核产生的文件例如vmlinux,虽然是个ELF文件但它不能在用户态运行,只能用来当内核跑。UML就是把内核编译成一个可以运行的应用程序,UML运行的时候和普通的进程没什么分别,看到它的第一感觉就是我们竟然在Linux里又运行了一个Linux。

  4. 和别的虚拟机有什么分别?
  5. 这个在下不太清楚,对我来说UML吸引我的地方有很多,比如:速度快,支持‘硬盘还原’(运行'rm -rf /*'不会真的删除文件,reboot数据自动恢复),它是Linux内核的一个标准组成部分(所以值得信赖?),最终要的可以用它来单步调试内核。

  6. 制作UML需要什么?
  7. 至少需要两个东西,一个内核,一个文件系统。
  8. 内核可以从www.kernel.org下一个,我下的是2.6.12。文件系统就是一个单独的文件,可以从这里下http://prdownloads.sourceforge.net/user-mode-linux/Debian-3.0r0.ext2.bz2

  9. 怎么制作UML?
  10. linux #cd /home/UML
  11. linux #tar zxf linux-2.6.12.tar.gz
  12. linux #cd linux-2.6.12
  13. linux #make mrproper
  14. linux #make menuconfig ARCH=um
  15. linux #make linux ARCH=um
  16. OK,这样就好啦,产生的'linux'文件就是我们的UML。

  17. 几个需要注意的地方:
  18. menuconfig这一步很重要,请检查.confi文件里这几个宏:
  19. 'CONFIG_BLK_DEV_UBD=y' 没有它UML不能挂载文件系统
  20. '# CONFIG_MODE_TT is not set' 不要设置成'=y'了,不然将来单步调试会错误一箩筐
  21. 'CONFIG_MODE_SKAS=y' SKAS一定要有
  22. '# CONFIG_HIGHMEM is not set' 这个HIGHMEM最好去掉,原因不明sorry
  23. 'CONFIG_UML_SMP=y' 如果想SMP这个就选上
  24. 'CONFIG_SMP=y' 这个也是,记得把CPU的数量也设置一下,好像叫NR_CPUS什么的一个宏

  25. 编译2.6.4等低版本内核要注意的地方:
  26. 像2.6.12这样高版本的内核直接载下来用就行了,因为UML已成为它的一部分,低版本的内核需要打一些patch,patch去这里找http://sourceforge.net/project/showfiles.php?group_id=429,记得要下载版本一致的patch,例如2.6.4内核就选择uml-patch-2.6.4-1.bz2。打好了patch之后要做一个小动作,'cd arch/um/include; ln -s ../../../include/asm-i386 asm',不然会遇到编译错误。

  27. 怎么运行UML?
  28. 一个命令就好了
  29. ./linux ubd0=Debian-3.0r0.ext2
  30. 如果不想敲这么长,那就把Debian-3.0r0.ext2重命名为'root_fs',UML启动会自动挂载这个文件
  31. 如果是SMP内核需要传个参数给内核,不然它还是一个CPU
  32. ./linux ncpus=2 ubd0=Debian-3.0r0.ext2

  33. 怎么调试UML?
  34. 用gdb调试就行了,没什么特别的,但是要屏蔽两个信号
  35. linux #gdb ./linux
  36. (gdb) handle SIGSEGV pass nostop noprint
  37. (gdb) handle SIGUSR1 pass nostop noprint
  38. (gdb) b main
  39. (gdb) run ubd0=Debian-3.0r0.ext2
  40. ...

复制代码

作者: me09    时间: 2005-10-26 09:58
标题: 用UML单步调试内核
“User mode linux简称UML,是一种虚拟机。。。。”可以在 win 下跑吗?
作者: bleem1998    时间: 2005-10-26 10:09
标题: 用UML单步调试内核
估计不冷
作者: scalps    时间: 2005-10-26 22:45
标题: 用UML单步调试内核
这两天装SUSE9,装好了再yast发现有个UML,不知道是啥,原来是这个东西啊,好久没接触Linux了,看来是落伍了。
作者: albcamus    时间: 2005-10-27 09:16
标题: 用UML单步调试内核
牛比牛比,我搞了好长时间都搞不定 啊!

晚上回来照着编。先谢了兄弟
作者: bleem1998    时间: 2005-10-27 09:58
标题: 用UML单步调试内核
只是我比你幸运
一切按部就班做下来就很自然通过了
不知道怎么你会遇到那么多怪问题
活活活
作者: albcamus    时间: 2005-10-27 10:28
标题: 用UML单步调试内核
原帖由 "bleem1998" 发表:
只是我比你幸运
一切按部就班做下来就很自然通过了
不知道怎么你会遇到那么多怪问题
活活活


UML开发跟不上官方内核的开发,所以没有人有时间更新文档。我的问题好多人遇到了,也问了,几乎没人给出合理答复。

我是在fc4上弄的,打了SKAS补丁,启动时
./linux ubd0=../root_fs.fc4 ubd1=../swap_fs mem=128mb
结果告诉我:
udba :unknown partition table
udbb: unknown partition  table
然后却挂载成功了。唉。自linux入门以来,从未遇到如此惨败




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2