免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1785 | 回复: 6
打印 上一主题 下一主题

用UML单步调试内核 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-25 23:08 |只看该作者 |倒序浏览

  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. ...

复制代码

论坛徽章:
0
2 [报告]
发表于 2005-10-26 09:58 |只看该作者

用UML单步调试内核

“User mode linux简称UML,是一种虚拟机。。。。”可以在 win 下跑吗?

论坛徽章:
0
3 [报告]
发表于 2005-10-26 10:09 |只看该作者

用UML单步调试内核

估计不冷

论坛徽章:
0
4 [报告]
发表于 2005-10-26 22:45 |只看该作者

用UML单步调试内核

这两天装SUSE9,装好了再yast发现有个UML,不知道是啥,原来是这个东西啊,好久没接触Linux了,看来是落伍了。

论坛徽章:
0
5 [报告]
发表于 2005-10-27 09:16 |只看该作者

用UML单步调试内核

牛比牛比,我搞了好长时间都搞不定 啊!

晚上回来照着编。先谢了兄弟

论坛徽章:
0
6 [报告]
发表于 2005-10-27 09:58 |只看该作者

用UML单步调试内核

只是我比你幸运
一切按部就班做下来就很自然通过了
不知道怎么你会遇到那么多怪问题
活活活

论坛徽章:
0
7 [报告]
发表于 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入门以来,从未遇到如此惨败
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP