如何反编译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服务器,只要有相应的权限,几乎和坐在物理机面前没有区别,哪怕网速很糟糕,实际只是一些加密的字符在传送,需要的带宽很小。

可以用在PC上

Linux与Windows XX的总体比较

Linux何以备受青睐,致使除微软以外,国际上有名的硬、软件厂商都毫无例外地与之结盟、捆绑。甚至连世界IT的龙头老大“蓝后巨人”IBM也要“全面拥抱Linux”呢?

首先,Linux作为自由软件有两个特点:一是它免费提供源码,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上。这就吸引了世界各地的 *** 作系统高手为Linux编写各种各样的驱动程序和应用软件,使得Linux成为一种不仅只是一个内核,而且包括系统管理工具、完整的开发环境和开发工具、应用软件在内,用户很容易获得的 *** 作系统。

由于可以得到Linux的源码,所以 *** 作系统的内部逻辑可见,这样就可以准确地查明故障原因,及时采取相应对策。在必要的情况下,用户可以及时地为Linux打 “补丁”(这正是笔者前面文章中讨论的集市模式开发软件最本质的内容),这是其它 *** 作系统所没有的优势。同时,这也使得用户容易根据 *** 作系统的特点构建安全保障系统,不会由于不了解不公开源码的 “黑盒子”式的系统预留的什么 “后门”而受到意外的打击。

第二,究其根本,Linux是一个UNIX系统变种,因此也就具有了Unix系统的一系列优良特性,Unix上的应用可以很方便地移植到Linux平台上,这使得Unix用户很容易掌握Linux。下面简要地描述UNIX亦即Linux的一系列特色。

2.1 UNIX/Linux的主要特色

早期UNIX的主要特色是结构简炼、便于移植和功能相对强大,经过30来年的发展和进化,形成了一些极为重要并稳定的特色,其中主要包括:

1. 技术成熟,可靠性高

经过30来年开放式道路的发展,UNIX的一些基本技术已变得十分成熟,有的已成为各类 *** 作系统的常用技术。实践表明,UNIX是能达到大型主机(mainframe)可靠性要求的少数 *** 作系统之一。目前许多UNIX大型主机和服务器在国外的大型企业中每天24小时,每年365天不间断地运行。例如,不少大企业或政府部门,即所谓肩负关键使命的场合/部门将其整个企业/部门信息系统建立并运行在以UNIX为主服务器的Client/Server结构上。但到目前为止,世界上还没有一家大型企业将其重要的信息系统完全建立在NT上。

2. 极强的可伸缩性

UNIX系统是世界上唯一能在笔记本电脑、PC、工作站,直至巨型机上运行的 *** 作系统,而且能在所有主要CPU芯片搭建的体系结构上运行(包括Intel/AMD及HP-PA、MIPS、PowerPC、UltraSPARC、ALPHA等RISC芯片)。至今为止,世界上没有第二个 *** 作系统能达到这一点。此外,由于UNIX系统能很好地支持SMP、MPP和Cluster等技术,使其可伸缩性又有了很大的增强。目前,商品化UNIX系统能支持的SMP,CPU数已达到几百甚至更多个,MPP系统中的节点甚至已超过1024个UNIX支持的异种平台Cluster技术也已投入使用。UNIX的伸缩性远远超过了NT *** 作系统目前所能达到的水平

3. 网络功能强

网络功能是UNIX系统的一又一重要特色,作为Internet网技术和异种机连接重要手段的TCP/IP协议就是在UNIX上开发和发展起来的。TCP/IP是所有UNIX系统不可分割的组成部分。因此,UNIX服务器在Internet服务器中占80%以上,占绝对优势。此外,UNIX还支持所有常用的网络通信协议,包括NFS、DCE、IPX/SPX、SLIP、PPP等,使得UNIX系统能方便地与已有的主机系统,以及各种广域网和局域网相连接,这也是UNIX具有出色的互 *** 作性(Interoperability)的根本原因。

4. 强大的数据库支持能力

由于UNIX具有强大的支持数据库的能力和良好的开发环境,因此多年来,所有主要数据库厂商,包括Oracle、Informix、Sybase、Progress等,都把UNIX作为主要的数据库开发和运行平台,并创造出一个又一个性价比的新记录。UNIX服务器正在成为大型企业数据中心替代大型主机的主要平台。

5. 开发功能强

UNIX系统从一开始就为软件开发人员提供了丰富的开发工具。成为工程工作站的首选和主要的 *** 作系统和开发环境。可以说,工程工作站的出现和成长与UNIX是分不开的。至今为止,UNIX工作站仍是软件开发厂商和工程研究设计部门的主要工作平台。有重大意义的软件新技术的出现几乎都在UNIX上,如TCP/IP、WWW、OODBMS等。

6. 开放性好

开放性是UNIX最重要的本质特性。开放系统概念的形成与UNIX是密不可分的。UNIX是开放系统的先驱和代表。由于开放系统深入人心,几乎所厂商都宣称自己的产品是开放系统,确实每一种系统都能满足某种开放的特性,如可移植性、可兼容性、可伸缩性、互 *** 作性等。但所有这些系统与开放系统的本质特征—不受某些厂商的垄断和控制相去甚远,只有UNIX完全符合这一条件。

7. 标准化

过去,Unix界被分析家和用户批判,因为没有为所有Unix *** 作系统提供统一的标准。其实,到目前为止,国际标准化组织(ISO)、工业团体恰恰是以UNIX基础制订了一系列标准化,如ISO/IEC的POSIX标准、IEEE POSIX标准、X/Open组织的XPG3/4工业标准以及后来的Spec 1170(因为它包含了1170个应用编程接口,后来改名为UNIX’95)标准。不少人对标准及标准化组织的作用及职权产生了误解。事实上,当标准化组织企图驾驭互相竞争的力量,和企图为用户规定他们的要求时是注定要失败的。比方说,标准只能用于给出道路的规则,而不应用于制造汽车。如果厂家被强迫完全遵从单一的标准,而不允许他们产品有特色,则用户将受害,Unix将变成象任何单一厂家的产品一样,没有任何特色。

Unix标准组织的真实目标是为用户和厂家定义一种规定Unix形态的基础。标准将保证Unix系统是可 *** 作的,并且其应用是便于移植的。但它们也允许相互竞争的开放开发环境能创新和具有技术特色。

当然,由于UNIX是有版权的,而且其源头有多家,许多厂家自行开发,并强调特色而导致UNIX版本的不统一(相比之下,Linux的核心是统一的,各发行厂家只是在外部作了不同程度的开发,但又都要遵循POSIX等标准,所以不会存在UNIX那种四分五裂的表象)。即便如此,Unix系统已经提供了比任何其他 *** 作系统更多的可互 *** 作性。公共的联网和系统管理协议允许用户方便地混用和匹配多种Unix系统。从一种Unix向另一种Unix移植应用只需几天时间,而在完全不同的 *** 作系统间移植或重写代码需要几个月甚至几年时间。

而且Unix工业界还在快速地向前发展,使得互 *** 作性和可移植性更为方便。由独立的X/Open组织管理的Unix’95为 *** 作系统厂家和应用开发商规定了商品Unix的形态。所有的Unix厂家已经从Unix’95规格说明。

开发或购买遵从Unix’95规格的应用可保证用户方便地从一个Unix *** 作系统向另一个移植。但并不强迫用户购买只遵从Unix’95规格的产品,用户可以开发和遵从开放且自由竞争的市场购买具有新的扩充的产品,以满足自己特殊的需要。

这样,Unix工业界再次为用户提供了选择的权力。如果伸缩性和移植性对用户的业务是最重要的,用户可以选择遵从Unix’95的应用;如果先进技术是关键,则用户可选择某一厂家具有新扩充的应用,当然这些扩充尚未成为标准。

由于Unix不断发展,因此,Unix’95标准将继续发展以接纳某些厂家的创新。

2.2 Linux和Windows XX相比有何特点

1. 可完全免费得到

Linux *** 作系统可以从互联网上免费下载使用,只要您有快速的网络连接就行;而且,Linux上跑的绝大多数应用程序也是免费可得的。用了Linux就再也不用背”使用盗版软件”的黑锅了。

2. 可以运行在386以上及各种RISC体系结构机器上

Linux最早诞生于微机环境,一系列版本都充分利用了X86CPU的任务切换能力,使X86CPU的效能发挥得淋淋尽致,而这一点连Windows都没有做到。此外,它可以很好地运行在由各种主流RISC芯片(ALPHA、MIPS、PowerPC、UltraSPARC、HP-PA等)搭建的机器上。

3. Linux是UNIX的完整实现

从发展的背景看,Linux与其他 *** 作系统的区别是,Linux是从一个比较成熟的 *** 作系统发展而来的,而其他 *** 作系统,如WindowsNT等,都是自成体系,无对应的相依托的 *** 作系统。这一区别使得Linux的用户能大大地从Unix团体贡献中获利。无论是Unix的作者还是Unix的用户,都认为只有Unix才是一个真正的 *** 作系统,许多计算机系统(从个人计算机到超级计算机)都存在Unix版本,Unix的用户可以从很多方面得到支持和帮助。因此,Linux作为Unix的一个克隆,同样会得到相应的支持和帮助,直接拥有Unix在用户中建立的牢固的地位。

UNIX上的绝大多数命令都可以在Linux里找到并有所加强。UNIX的可靠性、稳定性以及强大的网络功能也在Linux身上一一体现。

4. 真正的多任务多用户

只有很少的 *** 作系统能提供真正的多任务能力,尽管许多 *** 作系统声明支持多任务,但并不完全准确,如Windows。而Linux则充分利用了X86CPU的任务切换机制,实现了真正多任务、多用户环境,允许多个用户同时执行不同的程序,并且可以给紧急任务以较高的优先级。

5. 完全符合POSIX标准

POSIX是基于UNIX的第一个 *** 作系统簇国际标准,Linux遵循这一标准这使UNIX下许多应用程序可以很容易地移植到Linux下,相反也是这样。

6. 具有图形用户界面

Linux的图形用户界面是Xwindow系统。Xwindow可以做MSWindows下的所有事情,而且更有趣、更丰富,用户甚至可以在几种不同风格的窗口之间来回切换。

7. 具有强大的网络功能

实际上,Linux就是依靠互联网才迅速发展了起来,Linux具有强大的网络功能也是自然而然的事情。它可以轻松地与TCP/IP、LANManager、Windows for Workgroups、Novell Netware或Windows NT网络集成在一起,还可以通过以太网或调制解调器连接到Internet上。

Linux不仅能够作为网络工作站使用,更可以胜任各类服务器,如X应用服务器、文件服务器、打印服务器、邮件服务器、新闻服务器等等。

8. 是完整的UNIX开发平台

Linux支持一系列的UNIX开发工上,几乎所有的主流程序设计语言都已移植到Linux上并可免费得到,如C、C++、Fortran77、ADA、PASCAL、Modual2和3、Tcl/TkScheme、SmallTalk/X等。

总而言之,Unix就是可供各种用户选择的对象。一个 *** 作系统已经使分布式计算成为现实。一个 *** 作系统正在使新形式的交互娱乐成为现实并正确领导通向新的工程和商业应用的路。这就是Unix所体现的精神。但Unix还不止于此。主要地,Unix给用户选择最佳应用、最佳开发环境、最佳网络功能和最佳硬件的自由,以满足用户的业务要求。Unix还给用户选择何时升级系统的自由,甚至当用户改变主意时,用户可以以最少的痛苦来安装一个新系统,只要业务需要。

Unix专门献身于使用户保持选择的权力。

三、 主要产品的竞争

上面我们从总体上讲述了UNIX从而也是Linux的特点,下面我们从服务器,桌面机和嵌入式三个不同层面上来比较Linux与Windows之间的优缺点、强项和弱处。

3.1服务器 *** 作系统——Linux与NT

服务器是涉及一大类机器的统称,最高端,用作超级计算或顶级企业和网络服务器的MPP(大规模并行处理机)、SMP(对称多处理机)、Cluster(集群机),Mainframe(大型主机);到普通商用数据库服务器的中型机,如IBM AS/400,中高档服务器如IBM RS/6000/系列机,HP 9000/K系列,SUN Ultra SPARC中高档服务器(如10000系列)、SGI的1000系列等。以及低端,用作邮件、文件/打印服务器等的普通PC服务器,门类繁多,不一而足。在这方面Linux都有其产品,而NT基本上是处于PC服务器档次上的 *** 作系统。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存