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