?? 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 + -