|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
给你装的系统里为ubuntu12.04,它已经封装的很臃肿了,但是考虑到你没有很多时间投入其中,所以给你装了它,但是怎么用它提高开发效率,需要你在学习的过程中不断总结;
概述
UML这里不是一致建模言语,而是UserModeLinux的缩写,从字面上看,是在用户态运转linux内核,行将内核看成一个使用程序在跑,如许我们就能够用调试使用层程序的办法调试内核了,使用层的壮大调试工具gdb就派上用处了。良多时分我们写内核代码,当碰到算法对照庞大但又不触及底层布局的时分老是喜好如今使用层完成并调试,然后在写到内核层。为何,就是由于用户层调试比内核调试便利。可是UML的最年夜范围性就是不克不及调试硬件联系关系性强的代码,可是仍是有良多方面能够使用的,好比调剂算法、VFS等。用gdb像跟踪用户程序一样跟踪如许的代码,信任你必定十分感乐趣,那末让我们即刻入手下手第一步:搭建一个UML测试情况。
安装下载编译内核代码
1.起首从网高低载你感乐趣的内核代码版本,好比我下载的版本是2.6.36.4。
2.编译内核:在真正进进编译之前(makelinuxARCH=um之前),必要先辈行内核设置,详细设置可参考下图所示:
<br>
注重ARCH=um是必不成少的,不然就不是编译UML平台的内核了。假如编译过一般平台下(如amd64,i386,ppc等)的内核的人会发明,这个设置列表和以往的有一些分歧,这就是ARCH=um的感化,我们如今要设置的是一个要跑在使用层的内核。除选上你必要的功效对应选项之外,另有一些选项是需要为UML选的:
- 在UML-specificoptions—>HostProcessortypefeatures—>Processorfamily里选择你的处置器平台,假如你发明有Genericx86support设置(纷歧定会呈现),请包管它不失效。
- Characterdevices中的stderrconsole,Virtualserialline,nullchannelsupport,portchannelsupport,ptychannelsupport,ttychannelsupport,xtermchannelsupport等是必要选中的。
- Enableloadablemodulesupport在UML中通常为不必要的,能够作废它,固然你不作废也不妨。
- Networkingsupport里的AmateurRadiosupport,IrDA(infrared)subsystemsupport,Bluetoothsubsystemsupport等的也是能够往失落的。而UMLNetworkDevices里的工具是必要根据详细情形而定的,我这里就利用了默许的设置,假如你有特别需求还请依据本人的需求选。NetLabelsubsystemsupport我选了,由于我必要调试收集标签。
- BlockDevices—>Virtualblockdevices必要选中。
- Filesystems嘛……这个就对照庞大了,你必要甚么就本人选吧。
- SCSIdevicesupport中能够不必要。
- Multipledevicesdriversupport也能够不必要。
- KernelHacking是一个对照主要的,必要选中Kerneldebugging,Compilethekernelwithdebuginfo这两个必要选上,Showtiminginformationonprintks能够选上,别的的选项依据你要调试需求本人选择。
- 好了,设置好后你就能够保留加入了。
<br>构建运转情况
让uml的内核跑在一个自力出来的运转情况中,我们必要一块磁盘,并在这块磁盘上作一个文件体系,即根文件体系,再在下面作一个可运转的最小体系(由于要让体系可运转,必要的不单单是一个内核,另有一些相干的运转情况的撑持)。这里能够本人制造带最小体系的根文件体系,也能够从网上间接下载一个现成的,刚入手下手的时分我接纳了本人制造的办法,可是体系运转没有乐成,我便从网上down了一个现成的,终极算是半途而废。我在这里分离给出两种举措,任列位本人选择。
手动制造办法:
1.起首创立一个设备用来作为文件体系的载体并格局化成想要的文件体系:mkdirdiskddif=/dev/zeroof=disk/um-rootbs=1024Kcount=1000mkfs.ext3disk/um-root
2.挂载设备:创立目次挂载点目次并将下面已格局化的设备挂载mkdir-pmnt/mount-oloopdisk/um-rootmnt/
3.构建最小化体系debootstrapsqueezemnt/http://ftp.debian.org/debian(ubuntu上)
4.比及统统停当今后,体系运转所需的统统前提就已具有了。
网高低载举措:(保举)
下面我们先容了本人手动制造根文件体系的举措,这类举措大概会让你对体系有更深切的了解,可是堕落的大概性也更年夜,我在第一次实验的时分就堕落了,并且找不到堕落的缘故原由,让我非常忧郁,因而选择了这类办法。这类举措十分复杂,只必要从网高低载合适你的root_fs便可。下载地点为:http://fs.devloop.org.uk/,好比我下载的就是DebianSqueeze。
运转UML
下面统统筹办事情停当今后,就能够让UML跑起来了。再次声名,让UML跑起来必要的两个前提:
1.编译好的内核;
2.制造好的根文件体系,在我本人的体系中,我将他们存储在分歧的目次下,编译好的内核位于目次kernel/linux-2.6.36.4下,而制造好的根文件体系位于disk下,名为root_fs。
<br>
运转UML很复杂,间接输出上面的命令便可:./kernel/linux-2.6.36.4/linuxubda=disk/root_fsmem=256mUML实行的了局是会弹出一个上岸对话框,提醒你输出用户名和暗码,网高低载的根文件体系,默许用户名是root,暗码为空,以下图所示:
<br>
等你准确输出用户名和暗码今后,展示在你眼前的就是一个用户态的linux体系了,你能够完成和一般操纵体系的一切功效。
利用UML调试内核
要多google,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中。 |
|