⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000005.htm

📁 关于embedded的文章
💻 HTM
📖 第 1 页 / 共 5 页
字号:
体实现方法的详细说明,4~6分别详细描述了创建内核、创建根文件系统和引导系&nbsp;<BR>统的方法。最后的内容可以看作附录,其中7说明了一般Linux系统安装光盘的创建&nbsp;<BR>方法,8列出了相关的配置文件和源代码。&nbsp;<BR>1.2&nbsp;背景&nbsp;<BR>  华中科技大学计算机存储系统国家专业实验室,NAS项目(2003.3——2003.8)&nbsp;<BR>。&nbsp;<BR>1.3&nbsp;定义&nbsp;<BR>O&nbsp;boot&nbsp;loader:&nbsp;引导器&nbsp;<BR>O&nbsp;kernel:&nbsp;内核&nbsp;<BR>O&nbsp;root&nbsp;filesystem:&nbsp;根文件系统&nbsp;<BR>O&nbsp;USB:&nbsp;通用串行总线&nbsp;<BR>O&nbsp;&nbsp;<BR>1.4&nbsp;参考资料&nbsp;<BR>[1]&nbsp;DIY:自己动手做一个迷你&nbsp;Linux&nbsp;系统.&nbsp;IBM&nbsp;developerWorks&nbsp;中国网站.&nbsp;htt&nbsp;<BR>p://www-900.ibm.com/developerWorks/cn/linux/embed/diy/index.shtml&nbsp;<BR>[2]&nbsp;Linux&nbsp;From&nbsp;Scratch.&nbsp;<A HREF="http://clfsbook.mylab.idv.tw/index.html">http://clfsbook.mylab.idv.tw/index.html</A>&nbsp;<BR>[3]&nbsp;Linux启动过程综述.&nbsp;<A HREF="http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&">http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&</A>&nbsp;<BR>i=15750&nbsp;<BR>[4]&nbsp;The&nbsp;Linux&nbsp;Bootdisk&nbsp;HOWTO&nbsp;(中译版).&nbsp;<A HREF="http://www.linux.org.tw/CLDP/gb/B">http://www.linux.org.tw/CLDP/gb/B</A>&nbsp;<BR>ootdisk-HOWTO.html&nbsp;<BR>[5]&nbsp;Using&nbsp;the&nbsp;initial&nbsp;RAM&nbsp;disk&nbsp;(initrd).&nbsp;/usr/src/linux-2.4/Documentatio&nbsp;<BR>n/initrd.txt.&nbsp;(译文:<A HREF="http://zope.slat.org/Project/3ybaby/discuss-area/c">http://zope.slat.org/Project/3ybaby/discuss-area/c</A>&nbsp;<BR>d-boot/cdboot_refer/initrd.htm)&nbsp;<BR>[6]&nbsp;Quickmouse于2003.1发表于白云黄鹤BBS&nbsp;(<A HREF="http://bbs.whnet.edu.cn)">http://bbs.whnet.edu.cn)</A>&nbsp;Linux讨&nbsp;<BR>论区的帖子“裁减Linux”。&nbsp;<BR>[7]&nbsp;Filesystem&nbsp;Hierarchy&nbsp;Standard.&nbsp;<A HREF="http://www.pathname.com/fhs/pub/fhs-2">http://www.pathname.com/fhs/pub/fhs-2</A>&nbsp;<BR>.2.pdf&nbsp;<BR>[8]&nbsp;LINUX&nbsp;ALLOCATED&nbsp;DEVICES.&nbsp;/usr/src/linux-2.4/Documentation/device.txt&nbsp;<BR>.&nbsp;或者最新的列表在<A HREF="http://www.kernel.org/pub/linux/docs/device-list/">http://www.kernel.org/pub/linux/docs/device-list/</A>&nbsp;&nbsp;<BR>[9]&nbsp;Karim&nbsp;Yaghmour.&nbsp;Building&nbsp;Embedded&nbsp;Linux&nbsp;Systems.&nbsp;O'Reilly,&nbsp;April&nbsp;200&nbsp;<BR>3.&nbsp;<BR>[10]&nbsp;Alessandro&nbsp;Rubini.&nbsp;Take&nbsp;Command:&nbsp;Init.&nbsp;<A HREF="http://www.linux.it/kerneldo">http://www.linux.it/kerneldo</A>&nbsp;<BR>cs/init/&nbsp;,&nbsp;November&nbsp;1998.&nbsp;&nbsp;<BR>[11]&nbsp;深入&nbsp;Linux&nbsp;PAM&nbsp;体系结构.&nbsp;IBM&nbsp;developerWorks&nbsp;中国网站.&nbsp;<A HREF="http://www-90">http://www-90</A>&nbsp;<BR>0.ibm.com/developerWorks/cn/linux/l-pam/index.shtml&nbsp;.&nbsp;2003.7.&nbsp;<BR>[12]&nbsp;&nbsp;<BR>  &nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>2&nbsp;总体描述&nbsp;<BR>&nbsp;<BR>2.1&nbsp;硬件环境&nbsp;<BR>  开发主机:&nbsp;<BR>  Intel&nbsp;845芯片组主板,P4赛扬1.8GHz&nbsp;CPU,256M内存,60G&nbsp;IDE硬盘,RTL813&nbsp;<BR>9网卡。&nbsp;<BR>  目标机:&nbsp;<BR>  与主机同构。&nbsp;<BR>2.2&nbsp;软件环境&nbsp;<BR>  开发主机:&nbsp;<BR>  Redhat&nbsp;Linux&nbsp;7.3&nbsp;(kernel&nbsp;2.4.18-3),或者Redhat&nbsp;Linux&nbsp;9&nbsp;(kernel&nbsp;2.4.2&nbsp;<BR>0-8)。可以根据需要使用其他版本的内核,比如Redhat&nbsp;7.3+kernel&nbsp;2.4.20。&nbsp;<BR>  目标机:&nbsp;<BR>  LiPS,以及应用程序。&nbsp;<BR>2.3&nbsp;需求规定和约束&nbsp;<BR>  我们目标系统LiPS,即Linux&nbsp;Powered&nbsp;Storage是一个嵌入式Linux操作系统,&nbsp;<BR>主要着眼于提供各种文件服务,不包括X&nbsp;GUI;并且足够小,可以装入32M&nbsp;USB盘或&nbsp;<BR>者DOC/DOM等常用设备引导。&nbsp;<BR>  &nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>3&nbsp;总体设计&nbsp;<BR>&nbsp;<BR>3.1&nbsp;基本设计概念&nbsp;<BR>  提起“裁减Linux”,最容易想到的方法是以一个已经安装好的系统为基础,删&nbsp;<BR>除掉不需要的文件,以减小整个系统的尺寸。而事实上这个方法几乎是行不通的,&nbsp;<BR>因为通过光盘安装的一个Redhat&nbsp;9&nbsp;Linux系统,即便是只选择了比较少的软件包,&nbsp;<BR>其所占空间也可以轻松达到300~500MB,想在这个基础上裁减到30MB左右是比较困&nbsp;<BR>难的。更困难的是确定哪些东西是可以删除的?如果删除了系统必须的文件,可能&nbsp;<BR>导致系统不能引导。&nbsp;<BR>  另一个途径是从零开始根据需要构建整个系统。“Linux&nbsp;From&nbsp;Scratch”采用&nbsp;<BR>的就是这种方式,一个个安装需要的软件包。类似的,更简单的方法是,安装一个&nbsp;<BR>完整的Linux系统,然后将必要的软件(可执行程序)、配置文件、库文件、内核等&nbsp;<BR>复制出来构建一个小系统。我们采取后一种方式。&nbsp;<BR>  &nbsp;<BR>3.2&nbsp;软件结构&nbsp;<BR>  LiPS包括3部分:Linux内核,根文件系统和引导器。&nbsp;<BR>  内核(Kernel)提供了一个操作系统的基本功能,如内存管理、进程调度、文&nbsp;<BR>件系统、网络等,以及设备驱动程序。&nbsp;<BR>  根文件系统(Root&nbsp;filesystem)是存放运行、维护系统所必须的各种工具软件&nbsp;<BR>、库文件、脚本、配置文件和其他特殊文件(比如设备节点)的地方,也可以安装&nbsp;<BR>各种软件包。通常根文件系统位于某个磁盘分区,而在LiPS中应用了initrd(初始&nbsp;<BR>RAM盘)机制,将根文件系统放在RAM&nbsp;Disk中。&nbsp;<BR>  引导器(Boot&nbsp;Loader)的任务是从引导设备装载内核,引导系统运行。Linux&nbsp;<BR>系统常见的引导器包括早期的LILO和近期的GRUB。LiPS用的是GRUB。&nbsp;<BR>  &nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>4&nbsp;内核&nbsp;<BR>&nbsp;<BR>4.1&nbsp;创建内核的方法&nbsp;<BR>  Linux提供了方便灵活的方法来定制内核,主要步骤包括:下载安装内核源代码&nbsp;<BR>树,配置内核,编译内核。具体方法请参考相关文档。关键指令如下:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd&nbsp;/usr/src/linux-2.4&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make&nbsp;menuconfig&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make&nbsp;dep;&nbsp;make&nbsp;clean;&nbsp;make&nbsp;bzImage&nbsp;<BR>  编译成功的内核文件为arch/i386/boot/bzImage.&nbsp;<BR>4.2&nbsp;内核配置&nbsp;<BR>4.2.1&nbsp;概述&nbsp;<BR>  make&nbsp;menuconfig之后可以看到类似如下的内容(编号是为了描述方便而加上的&nbsp;<BR>)。根据内核版本的不同,列出的项目会有差异。而变化主要发生在发行版为标准&nbsp;<BR>内核打的各种补丁上面,其实标准内核是比较稳定的。&nbsp;<BR>  如下所示,我们配置的内核版本为2.4.20-8,这个“-8”就是Redhat所打的补&nbsp;<BR>丁版本号。补丁一般是对标准内核错误的修正和新增的功能。与2.4.20内核配置选&nbsp;<BR>项比较会发现,[10,25,30]都属于Redhat的补丁。&nbsp;<BR>  一般地,这些补丁选项都不是必须的,因此我们的LiPS内核中都没有包括这些&nbsp;<BR>选项。其实,完全可以通过直接配置一个标准的内核版本(比如2.4.20)来产生我&nbsp;<BR>们所需要的内核。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;Kernel&nbsp;v2.4.20-8-R2Lips&nbsp;Configuration&nbsp;<BR>[1]&nbsp;Code&nbsp;maturity&nbsp;level&nbsp;options&nbsp;&nbsp;---&gt;&nbsp;<BR>[2]&nbsp;Loadable&nbsp;module&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[3]&nbsp;Processor&nbsp;type&nbsp;and&nbsp;features&nbsp;&nbsp;---&gt;&nbsp;<BR>[4]&nbsp;General&nbsp;setup&nbsp;&nbsp;---&gt;&nbsp;<BR>[5]&nbsp;Memory&nbsp;Technology&nbsp;Devices&nbsp;(MTD)&nbsp;&nbsp;---&gt;&nbsp;<BR>[6]&nbsp;Parallel&nbsp;port&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[7]&nbsp;Plug&nbsp;and&nbsp;Play&nbsp;configuration&nbsp;&nbsp;---&gt;&nbsp;<BR>[8]&nbsp;Block&nbsp;devices&nbsp;&nbsp;---&gt;&nbsp;<BR>[9]&nbsp;Multi-device&nbsp;support&nbsp;(RAID&nbsp;and&nbsp;LVM)&nbsp;&nbsp;---&gt;&nbsp;<BR>[10]&nbsp;Cryptography&nbsp;support&nbsp;(CryptoAPI)&nbsp;&nbsp;---&gt;&nbsp;<BR>[11]&nbsp;Networking&nbsp;options&nbsp;&nbsp;---&gt;&nbsp;<BR>[12]&nbsp;Telephony&nbsp;Support&nbsp;&nbsp;---&gt;&nbsp;<BR>[13]&nbsp;ATA/IDE/MFM/RLL&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[14]&nbsp;SCSI&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[15]&nbsp;Fusion&nbsp;MPT&nbsp;device&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[16]&nbsp;I2O&nbsp;device&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[17]&nbsp;Network&nbsp;device&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[18]&nbsp;Amateur&nbsp;Radio&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[19]&nbsp;IrDA&nbsp;(infrared)&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[20]&nbsp;ISDN&nbsp;subsystem&nbsp;&nbsp;---&gt;&nbsp;<BR>[21]&nbsp;Old&nbsp;CD-ROM&nbsp;drivers&nbsp;(not&nbsp;SCSI,&nbsp;not&nbsp;IDE)&nbsp;&nbsp;---&gt;&nbsp;<BR>[22]&nbsp;Input&nbsp;core&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[23]&nbsp;Character&nbsp;devices&nbsp;&nbsp;---&gt;&nbsp;<BR>[24]&nbsp;Multimedia&nbsp;devices&nbsp;&nbsp;---&gt;&nbsp;<BR>[25]&nbsp;Crypto&nbsp;Hardware&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[26]&nbsp;File&nbsp;systems&nbsp;&nbsp;---&gt;&nbsp;<BR>[27]&nbsp;Console&nbsp;drivers&nbsp;&nbsp;---&gt;&nbsp;<BR>[28]&nbsp;Sound&nbsp;&nbsp;---&gt;&nbsp;<BR>[29]&nbsp;USB&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[30]&nbsp;Additional&nbsp;device&nbsp;driver&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[31]&nbsp;Bluetooth&nbsp;support&nbsp;&nbsp;---&gt;&nbsp;<BR>[32]&nbsp;Kernel&nbsp;hacking&nbsp;&nbsp;---&gt;&nbsp;<BR>[33]&nbsp;Library&nbsp;routines&nbsp;&nbsp;---&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load&nbsp;an&nbsp;Alternate&nbsp;Configuration&nbsp;File&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save&nbsp;Configuration&nbsp;to&nbsp;an&nbsp;Alternate&nbsp;File&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Select&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;Exit&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;Help&nbsp;&gt;&nbsp;<BR>  下面我们以2.4.20内核为例,来详细说明内核的配置,也就是选哪些东西、不&nbsp;<BR>选哪些东西。没有说明的选项,比如“Code&nbsp;maturity&nbsp;level&nbsp;options”,表示不选&nbsp;<BR>。&nbsp;<BR>4.2.2&nbsp;Loadable&nbsp;module&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*]&nbsp;Enable&nbsp;loadable&nbsp;module&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;]&nbsp;&nbsp;&nbsp;Set&nbsp;version&nbsp;information&nbsp;on&nbsp;all&nbsp;module&nbsp;symbols&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*]&nbsp;&nbsp;&nbsp;Kernel&nbsp;module&nbsp;loader&nbsp;<BR>  可加载模块支持。虽然目前所选项目全部编译进内核,但是内核是支持模块的&nbsp;<BR>。可以考虑将一些硬件设备的驱动程序编译为模块,从而减小内核尺寸,同时增加&nbsp;<BR>适应不同硬件平台的灵活性。&nbsp;<BR>4.2.3&nbsp;Processor&nbsp;type&nbsp;and&nbsp;features&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Pentium-III/Celeron(Coppermine))&nbsp;Processor&nbsp;family&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[*]&nbsp;Machine&nbsp;Check&nbsp;Exception&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&gt;&nbsp;Toshiba&nbsp;Laptop&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&gt;&nbsp;Dell&nbsp;laptop&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&gt;&nbsp;/dev/cpu/microcode&nbsp;-&nbsp;Intel&nbsp;IA32&nbsp;CPU&nbsp;microcode&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&gt;&nbsp;/dev/cpu/*/msr&nbsp;-&nbsp;Model-specific&nbsp;register&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&gt;&nbsp;/dev/cpu/*/cpuid&nbsp;-&nbsp;CPU&nbsp;information&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(off)&nbsp;High&nbsp;Memory&nbsp;Support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;]&nbsp;Math&nbsp;emulation&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;]&nbsp;MTRR&nbsp;(Memory&nbsp;Type&nbsp;Range&nbsp;Register)&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;]&nbsp;Symmetric&nbsp;multi-processing&nbsp;support&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;]&nbsp;Local&nbsp;APIC&nbsp;support&nbsp;on&nbsp;uniprocessors&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;]&nbsp;Unsynced&nbsp;TSC&nbsp;support&nbsp;<BR>  处理器特性。选择一下Processor&nbsp;family,其余基本上都没有选。High&nbsp;Memor&nbsp;<BR>y&nbsp;Support也可以打开,不清楚有什么用。&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -