金色的骷髅 发表于 2015-1-18 11:21:35

Linux编程:UML调试Linux内核仓酷云

给你装的系统里为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,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中。

若相依 发表于 2015-1-29 14:50:27

如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。

只想知道 发表于 2015-2-2 12:44:16

任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统.

柔情似水 发表于 2015-2-5 04:21:00

对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。

第二个灵魂 发表于 2015-2-7 19:49:02

掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。

飘飘悠悠 发表于 2015-2-23 09:09:41

下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。

山那边是海 发表于 2015-3-5 23:07:16

下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。

再现理想 发表于 2015-3-10 10:02:31

请问谁有Linux的学习心得的吗?简单的说说?

仓酷云 发表于 2015-3-11 01:52:15

众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。

精灵巫婆 发表于 2015-3-17 18:10:31

我们这一代90后,从小接触的是windows98,家里条件好的自己有电脑装的是2000,后来又有了XP,上大学时又有了win7。

再见西城 发表于 2015-3-24 18:09:20

应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。
页: [1]
查看完整版本: Linux编程:UML调试Linux内核仓酷云