如何反编译IMG(内核)文件?

如何反编译IMG(内核)文件?,第1张

先介绍一下编译核心的选项,希望能对大家消除对内核的神秘感有所帮助。

1.代码成熟等级

2..处理器类型和特色

3.对模块的支持

4.基本的选择

5.即插即用支持

6.块设备支持

7.网络选项

8.电话支持

9.SCSI设备的支持

10.I2O接口适配器

11.网络设备支持

12.配置业余无线广播

13.红外支持

14.ISDN的文件系统

15.旧型的光驱类型(非IDE界面的光驱)

16.字符设备

17.USB支持

18.文件系统

19.控制台驱动

20.声卡驱动

21.Kernel hacking

第二节 内核版本

由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布

给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教堂模型--对应

),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳

定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(developm

ent tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所

做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同

的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就体现在

源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开

发树来说,y比相应的稳定树大一(因此,是奇数)。确定是以″ root ″的身份签入,

然后cd 到 /usr/src 。uname -r 这个指令将会显示版本。内核版本的更新可以访问<h

ttp://www.kernel.org/>。

第三节 编译原因

Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了

旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的

系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳

定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是

Linux使用者的必要 *** 作内容。

为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主

要有下面四个考虑:

---自己定制编译的内核运行更快(具有更少的代码)

---系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)

---不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞

---将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些

以上是针对成熟的Linux套件如Redhat Linux而言,我的目的是为建造嵌入式Linux *** 作系

统做准备,也是必由之路。

第四节 准备工作

第一部分 新版本内核的获取和更新

Linux内核版本发布的官方网站是<http://www.kernel.org/>,国内各大ftp上一般都可

以找到某些版本的内核。新版本的内核的发布有两种形式,一种是完整的内核版本,另

外一种是patch文件,即补丁。完整的内核版本比较大,比如linux-2.4.0-test8.tar.b

z2就有18M之多。完整内核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分别

是使用gzip或者bzip2进行压缩的文件,使用时需要解压缩。patch文件则比较小,一般

只有几十K到几百K,极少的会超过1M。但是patch文件是针对于特定的版本的,需要找到

自己对应的版本才能使用。

编译内核需要root权限。把需要升级的内 拷贝到/usr/src/下(下文中以2.2.16的内核

的linux-2.2.16tar.gz为例),命令为

#cp linux-2.2.16tar.gz /usr/src

先查看当前/usr/src的内容,注意到有一个linux的符号链接,它指向一个类似于linux

-2.2.14(对应于现在使用的内核版本号)的目录。首先删除这个链接:

#cd /usr/src

#rm -f linux

现在解压下载的源程序文件。如果所下载的是.tar.gz(.tgz)文件,使用命令:

#tar -xzvf linux-2.2.16tar.gz

如果下载的是.bz2文件,例如linux-2.2.16tar.bz2,使用命令

#bzip2 -d linux-2.2.16tar.bz2

#tar -xvf linux-2.2.16tar

现在再来看一下/usr/src下的内容,发现现在有了一个名为linux的目录,里面就是需要

升级到的版本的内核的源程序。还记得那个名为linux的链接么?之所以使用那个链接就

是防止在升级内核的时候会不慎把原来版本内核的源程序给覆盖掉了。现在也需要同样

处理:

#mv linux linux-2.2.16

#ln -s linux-2.2.16 linux

如果还下载了patch文件,比如patch-2.2.16,就可以进行patch *** 作(下面假设patch-

2.2.16已经位于/usr/src目录下了,否则需要先把该文件拷贝到/usr/src下):

#patch -p0 <patch-2.2.16

第二部分 准备主机板和相关硬件的说明手册

其实也不用太详细,只要知道您的硬件是属于哪一类型就行了。例如:有一张SCSI卡,

那就要知道这张卡的名字,有一台cd-rom,就要知道这台光驱是哪一种牌子的,是否为标

准的IDE/ATAPI界面,还是另有专属接口卡呢?或者,主机版是否有支持Triton芯片(通

常586以上的电脑常有),这些信息能帮助我们,使得设定变得清楚且容易。

因此,不管您有什么使用手册,准备好吧。即使现在不用,将来还是会用到的(设X-w

indow system时要显示卡的手册)。

第三部分 检查声卡的IRQ设定和其种类

如果配有一张声卡,除了要知道卡的种类外(例如 Sound Blaster)还需要知道这张卡

的IRQ地址。一般来说,卢卡的IRQ地址是5或7而IO地址则为220。DMA则l,不过,有时不

同的声卡可能会有不同的设定。因为稍后的选项里,就会要填入这些数字。

第四部分 编译核心的硬件需求

在编译核心时,确定您的RAM最好在8MB以上, 否则可能会很慢而且问题会很多,记得查

看swap有没有打开(用free指令)。此外,最好不要超频,不然很有可能会发生signal

11的错误,使得编到一半的核心停了下来,其实编译核心就好比编译程序一样,只是因

为构成核心的程序太多了,因此我们能小心尽量小心。

Linux与Windows的优缺点,可以总结为以下几点:

1.Linux可以看到源代码,windows不行。

这一点直接导致的结果就是在特殊应用的场合可以自行剪裁和定制所需的内核模块,这对于高级系统内核管理优化和驱动程序的开发相当有利,另外也因为代码可见,不用担心恶意功能或者后门,对于军政企的使用比较有利。另外在系统出现严重问题的时候,可以自行修改代码或者接个几k的patch就能编译然后使用,而windows你得等微软的补丁。

2、Linux命令行功能强大,可以做任何事情,windows也有命令行,但是属于附属品。

命令行是Linux的根本,甚至你对某些命令不满意,你也可以自己修改或者编个自己的命令出来。命令行的好处是可重复。想要知道命令行的具体是什么你可以访问老男孩教育。如果你想要告诉别人一件事怎么做,一个命令行发过去就可以,想要再做一遍之前做过的一件事,调出历史命令记录重新执行一下就行。很多要定时做的事情写成脚本设个crontab定时,就完事儿。另外这样也可以保证你用一样的命令行,做的是一样的事情。

3、开放源码和高度可定制

开放源码的初衷,不是为了自由而是为了定制。AT&T

UNIX从来就是有版权的,但是源代码仍然可用,这是为了让用户能够根据需要,去修改它。Linux社区所赞赏的软件和系统,多半遵循同样的规则——它应该能够适应不同用户的不同环境,能够轻易的改变自己的行为,能够轻松的与不同环境整合。与其假设别人和你的需求一致,不如给予它们定制系统的自由。

4、去中心化

分散的软件开发,也注定了系统的接口和形式不统一,因为大家都喜欢发明轮子。而每个人的轮子或多或少更适合自己和社区,而非所有人,而在Linux的环境下又没有人能强迫所有人用自己的轮子,所以与其制定一种实践,Linux更多的让用户去选择生活的方式。

你会看到Linux生态环境中有大量的distro,不同的distro有不同的init方式,不同的软件包管理器和安装策略每个人习惯使用不同的VCS,不同的shell,不同的编辑器,都就是更多的选择的哲学的体现。

5、Linux是基于网络的,诞生于网络。

远程连接上SSH,你就可以轻松 *** 控远在千里之外的Linux服务器,只要有相应的权限,几乎和坐在物理机面前没有区别,哪怕网速很糟糕,实际只是一些加密的字符在传送,需要的带宽很小。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7181963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存