| 第九章 模組及核心編譯
|
| 9.1 核心模組 | ||
| 9.1.1 | 模組概述 | |
| 9.1.2 | 模組相關指令 --- lsmod 、insmod、rmmod、modprobe、modinfo、depmod |
|
| 9.1.3 | 模組設定檔 --- /etc/modprobe.conf | |
| 9.2 核心編譯 | ||
| 9.2.1 | 編譯核心的理由 | |
| 9.2.2 | 核心原始碼概述 | |
| 9.2.3 | 核心編譯的步驟 make menuconfig 、make bzImage、make modules、make modules_install、make install 修改 /etc/lilo.conf 、修改 /boot/grub/menu.lst 補充:make mrproper、make 下載新核心來進行核心升級 :make oldconfig |
|
| 9.2.4 | 利用 patch file 來進行核心升級 | |
| suselinux:~ # uname
-r 2.6.5-7.97-default 說明: 第一個數字 " 2 " 為核心的主版本。第二個數字 " 6 " 是次版本,也就是我們最要留意的一個數字,次版本如為奇數,表示這個核心目前尚處於實驗發展階段,次版本如為偶數,則表示此核心為一經由多次實驗結果正式對外發表的穩定版本,所以我們在做核心升級時都會去下載次版本為偶數的穩定核心。第三個數字為修正的版本。至於最後一組為副版本。 如您要下載新版的核心來編譯時,請記得新舊核心的版本差異不要過大,比如您原核心為 2.4,那就盡量不要去下載 2.6 的核心來升級,因兩核心版本間已有所差異,函式庫亦有所不同,但如果同樣是次版本的升級則是可行。 |
| suselinux:~ #
cd /lib/modules/`uname -r` suselinux:/lib/modules/2.6.5-7.97-default # ls
|
| suselinux:/lib/modules/2.6.5-7.97-default/kernel
# ls arch crypto drivers fs kernel lib net security sound
suselinux:/lib/modules/2.6.5-7.97-default/kernel # ls fs/ext3 ext3.ko ← 這就是模組檔案,而 ext3 就稱為模組名稱。 suselinux:/lib/modules/2.6.5-7.97-default/kernel # ls net/ipv4 ah4.ko esp4.ko ip_gre.ko ipcomp.ko ipip.ko ipvs netfilter suselinux:/lib/modules/2.6.5-7.97-default/kernel # ls drivers/net
另外 drivers 目錄下的相關子目錄中還存放著很多周邊裝置的模組,您可自行進去瞧一瞧。 |
| 顯示目前核心有載入的模組。 |
| 如在開機過程,核心沒主動將您需要的模組載入時,於開機後可執行這個指令來將模組載入,不過使用
insmod 會考慮到相依模組的問題,所以比較麻煩一點。 指令語法:insmod module-file
範例說明:
|
| 這是卸載模組的指令,一樣需考慮到相依性的問題。 指令語法:rmmod [-f] module-name
範例說明:
|
最常使用的模組載入指令 ; 與 insmod 不同的是如欲載入的模組有相依性存在時,modprobe
會先主動載入相依模組,而其所依據的檔案就是 modules.dep。
如您想單純的載入模組,就不需加這些參數。 參數說明:
範例說明:
|
| 顯示核心模組的相關資訊,比如此模組的簡單描述 (description)、作者
(author)、授權模式 (license)、相依模組 (depends)、別名 (alias) 等等。 範例說明:
|
| 用來建立 (更新) 模組相依性的檔案,而這個檔案就是指 /lib/modules/`uname -r`/modules.dep,這可是 modprobe 程式在載入模組時的一個主要依據的檔案。您可以在命令列上直接執行 " depmod " 或 " depmod -a " ,這樣就可以讓您的 modules.dep 保持最新的模組相依性訊息。系統預設在開機時都會自動執行這個程式。 |
| 眾所皆知,modprobe 指令可以用來載入或移除一個以上的模組,但有時候因為模組相依性的問題,需要額外指派一些選項來給這些模組使用,而您就可以把需要的選項設定在 modprobe.conf 內。此外您也可以把模組的別名設定在這個檔案內。再來您還可以藉由設定這個檔案來改變在命令列上執行 modprobe 的行為。 |
範例一:
範例二:
範例三:
|
| • | 當您所使用的週邊裝置或須求的功能,預設核心是有支援的,但卻沒把該項目給編入核心或編成模組,此時就須要來重新編譯核心囉。 | |
| • | 若硬體設備或某項特殊功能只有新核心才支援時,就要下載新版的核心來進行升級的動作。 | |
| • | 對於預設核心編譯太多用不到的功能,想要將這些多餘的項目取消時,即可重編核心,不過不建議如此作,因其對整體效能並無多大助益。 | |
| • | 特殊軟體須求,例如一些商業套裝軟體是以 Linux 平台為主,此時可以針對此軟體的特性而將很多不必要的項目從核心中移除,以提高此核心的整體運作效率,突顯軟體的功能,不過這可是一門專業的學問噢。 |
suselinux:/usr/src/linux #
ls
|
| arch | 不同平台結構的核心原始碼。(architecture) |
| drivers | 所有各種硬體設備驅動程式的原始碼。 |
| fs | 檔案系統的原始碼。 |
| include | 建構一個系統所需要大多數的 include file。 |
| init | 核心初始化的原始碼,如您對核心原始碼有興趣,可從這個目錄下手。 |
| ipc | 有關核心程序間行程通訊的原始碼。(inter-process communication) |
| kernel | 主要的核心原始碼 ; 其他硬體平台相關的原始碼是放在 arch/*/kernel 中。 |
| lib | 核心函式庫的原始碼 ; 其他硬體平台相關的原始碼在 arch/*/lib。 |
| mm | 有關於記憶體管理的原始碼。 |
| net | 有關於網路部分的原始碼。 |
| scripts | 包含一些在建構核心時可以使用的 scripts 工具,如 awk、tk 等。 |
至於 Documentation 目錄是存放關於核心的相關文件說明,比如我們在編譯核心時所遭遇的一些問題或缺失,可以找找這邊的說明。此外還要注意一個叫做
Makefile 的檔案,因為在核心編譯的過程會參考這個檔案。
9.2.3 核心編譯的步驟
您可以去官方網站下載比較新版的核心來進行編譯,也可以針對原核心來重編,而這裡我們是以原核心重新編譯為範例來做說明,至於自行下載新版核心的編譯做法,在稍後會做補充。
首先請您先切換到 /usr/src 目錄,檢查一下是否有一個符號連結檔 linux,然後看看是不是連結到存放核心原始碼的那個目錄 (linux-2.6.5-7.97),如果都沒問題的話,就將工作目錄切換至
linux 上頭,因等一下的核心編譯過程都是在此目錄下完成的。
| suselinux:~ # cd
/usr/src/linux suselinux:/usr/src/linux # vi Makefile VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 5 EXTRAVERSION = -new ← 自訂核心版本為 2.6.5-new。 NAME=Zonked Quokka |
再來您可先將相關目錄先行做個備份,如 /boot 及 /lib/modules/2.6.5-7.97-default,這樣萬一您執行過程出了個什麼差錯,才方便您進行還原:
| suselinux:~ #
cp -a /boot /boot.bck suselinux:/lib/modules # cp -a 2.6.5-7.97-default 2.6.5-7.97-default.bck |
接著下來就開始進行核心編譯囉。
步驟一:執行 make menuconfig
這個步驟主要是讓您選擇要將哪些項目編入核心,哪些項目編成核心模組,不過在此之前,請先確定 ncurses-devel
套件有安裝。
當然您也可以執行 "make config" 或 "make xconfig"
來達到同樣的目的。不過 "make config" 是採文字模式下逐行設定的方式,萬一您想往回修改時會有問題,所以一般人比較少使用
; 而 "make xconfig" 則是在 X-WINDOW 下開啟終端機後去執行的指令,可讓我們在圖形介面下來操作,但要確定 qt3
相關套件有安裝,如 qt3-devel 等,不過這個套件有一些相依性存在,所以請您執行 YaST 來自動幫您解決這個問題。
| suselinux:/usr/src/linux # make menuconfig |

這裡就是開始要您做選擇的時候了,我們先熟悉一下要如何操作:
首先在主選單 (Linux Kernel Configuration) 畫面可以看到有很多項目供您做選擇,您可以用上下鍵來移動到您要做設定的項目,而在選項的右邊有個箭頭,表示該選項底下尚有一些子選項供您選擇設定。比如您選擇了
[File Systems] 並確定最底下的按鈕位置是在 [Select] 後,就可以按下 Enter 鍵來進入到裡面的設定細項:
在畫面的底下除了剛剛介紹的 [Select] 外還有 [Exit]、[Help] 兩個按鈕,您可以用 tab 鍵來做三個按鈕之間的切換 ; 而在子選單中可能有些項目還可以進入到下一層選單,操作方式與上面相同。若您在子選單中想要回到上一層選單,可先用
tab 鍵移到 [Exit],再按 Enter 鍵就行了。而如果您對某個選項不了解其涵義,可選擇 [Help] 按鈕來看裡面的相關說明。
另外您會看到選項左邊有個 < > 或 [ ] 符號,若為 < >,則大部分時間您可選擇將該選項編入核心或編成模組或不做選擇,但也有部分項目只能在模組及不選擇之間作切換,至於切換的方式使用空白鍵就行了
; 若為 [ ],則您只能將該選項編入核心或不做選擇。[*] 及 <*> 表示編入核心,<M> 為編成模組,如不想將該選項編入核心或編成模組則保留空白即可。
在主選單最後面還有兩個選項:
當我們在設定核心選項時,有時候因為項目過多,無法一次完成,這時候為了將您目前已做好的設定保留下來,可移到 [Save Configuration to
an Alternate File],接著按下 Enter 鍵後就會看到以下的畫面:
此時就看您要將剛剛所做的設定保留到哪個檔案,比如我把它存在 /root/kernel 中,這樣改天想繼續對其他的選項作設定時,就可以使用 [Load an
Alternate Configuration File] 來將之前保留在 /root/kernel 檔案內的設定值套用上去,然後就可以繼續完成您未完成的部分。
了解了大致的做法後,接下來就要開始針對裡邊的選項做設定,不過先提醒大家,核心編譯的項目非常的多,您必須對您本身的硬體設備有一定程度的了解,且需知道您希望核心能支援您哪些功能,如果遇到不太清楚的項目,就使用
[Help] 來尋求幫忙囉。底下就大略介紹一下這些設定項目:
Code maturity level options →
[ * ] Prompt for development and/or incomplete code/drivers
若想進行核心的研發工作,可考慮選起來。
General setup →
[ * ] Support for paging of anonymous memory (swap)
讓核心支援 swap device 或 swap file。
[ * ] System V IPC
IPC 為 Inter-Process Communication 的簡稱。此項目主要是要讓行程之間交換資訊用的。
[ * ] BSD Process Accounting
讓核心將使用者所執行的行程資訊記載下來,可選。
[ * ] Sysctl support
您可以在重新開機時或不需要重新編譯核心下,而能動態更新核心參數,使核心擁有較大彈性。如此項目沒選擇的話,/proc/sys
會沒作用。
(14) Kernel log buffer size (16 => 64KB, 17 => 128KB)
設定核心紀錄的緩衝區大小,一般單 CPU 可使用 14 (16KB),多 CPU 時可使用 15 (32 KB)。
| ( X ) | off | |
| ( ) | 4GB | |
| ( ) | 64GB |
Special options →
[ * ] proc/mm support| ACPI (Advanced Configuration and Power Interface) Support
→ 如果您的 BIOS 有支援 ACPI 的話,就進去做選擇吧 ! |
|||||||||||||||||
APM (Advanced Power Management) BIOS Support → 讓
BIOS 來接管 APM。
|
|||||||||||||||||
| CPU Frequency scaling → 這是一項可以用來改變 CPU 頻率的設定,讓 CPU 在負載較低時可以自動調降它的頻率。 |
| <M> | Parallel port support → 有使用到平行埠裝置就一定要選。 |
|
| <M> | PC-style hardware → IBM 及一些 Alphas 有 PC-style parallel ports 時就要選擇,否則不選。 |
|
| <M> | Multi-IO cards (parallel and serial) → 這個項目可以用來支援具有平行埠及序列埠的 PCI cards。 |
|
| [ * ] | Support foreign hardware → 是否要能載入模組來支援非標準的平行埠裝置。一般我們不會做選擇。 |
| <*> | Normal floppy disk support | |||
| <M> | Parallel port IDE device support → 有一些外接式的 CD-ROM 及磁碟裝置是連接平行埠的話,需選起來。 |
|||
--- Parallel
IDE high-level drivers |
||||
| <M> | Parallel port IDE disks | |||
| <M> | Parallel port ATAPI CD-ROMs | |||
| <M> | Parallel port ATAPI disks | |||
| <M> | Parallel port ATAPI tapes | |||
| <M> | Parallel port generic ATAPI devices
|
|||
--- Parallel
IDE protocol modules |
||||
| <M> | ATEN EH-100 protocol | |||
| <M> | MicroSolutions backpack (Series 5) protocol | |||
| <M> | MicroSolutions backpack (Series 6) protocol | |||
| <M> | DataStor Commuter protocol | |||
| <*> | RAM disk support ← 最好編入核心。 | |||
(64000)
Default RAM disk size |
||||
| <*> | Initial RAM disk (initrd) support ← 最好編入核心。 | |||
| <*> | ATA/ATAPI/MFM/RLL support | |
| <*> | Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support | |
| ---
Please see Documentation/ide.txt for help/info on IDE drives |
||
| [ ] | Use old disk-only driver on primary interface | |
| <*> | Include IDE/ATA-2 DISK support | |
| [ * ] | Use multi-mode by default | |
| [ * ] | Auto-Geometry Resizing support | |
| <M> | PCMCIA IDE support | |
| <M> | Include IDE/ATAPI CDROM support | |
| ---
IDE chipset support/bugfixes |
||
| <*> | generic/default IDE chipset support | |
| [ * ] | CMD640 chipset bugfix/support | |
| [ * ] | CMD640 enhanced support | |
| [ * ] | Generic PCI IDE Chipset Support | |
| [ * ] | Generic PCI bus-master DMA support | |
| <*> | AMD and nVidia IDE support | |
| <*> | ATI IXP chipset IDE support | |
| <*> | Intel PIIXn chipsets support | |
| <*> | NS87415 chipset support | |
| <*> | VIA82CXXX chipset support | |
| [ * ] | Other IDE chipset support | |
| [ * ] | Networking support | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Networking options →
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | Network device support | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ARCnet devices →
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | Dummy
net driver support → 若有使用到 SLIP 及 PPP 的話,就選起來。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | Bonding driver support → 如果您想合併頻寬,加快效率,那您需要有支援此項目的 switch,沒有的話就不要選。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | EQL (serial line load balancing)
support → 可以合併 PPP 或 SLIP 的頻寬,但一般需要兩個 modems 及 兩條電話線。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ethernet (10 or 100Mbit) → → 此處為核心所支援的 10 or 100 Mbit 的乙太網路卡,裡面項目很多,就視您需要作選擇囉。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ethernet (1000 Mbit) → → 有使用高速乙太網路卡的話,就進去選一下吧。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ethernet (10000 Mbit) → → 我是跟它無緣啦,不選了。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [* ] | FDDI driver support → Fiber Distributed Data Interface 是高速網路 (光纖) 裡的一個資料介面,看來還是無緣。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PLIP (parallel port) support → Parallel Line Internet Protocol 是使用平行埠來連接兩電腦,應該很少人是這樣做的吧 ! |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP (point-to-point protocol)
support → 若您使用 adsl 撥接上網的話,可一定要選。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | PPP multilink support (EXPERIMENTAL) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | PPP filtering | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP support for async serial ports | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP support for sync tty ports | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP Deflate compression | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP BSD-Compress compression | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP MPPE compression (encryption) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP over Ethernet (EXPERIMENTAL) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | PPP over ATM | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | SLIP (serial line) support
→ Serial Line Internet Protocol。如果您還在使用老舊式的數據機撥接的話就選起來。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | CSLIP compressed headers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | Keepalive and linefill | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | Six bit SLIP encapsulation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wireless LAN (non-hamradio)
→ → 有使用無線網路裝置的朋友,可在這裡做做選擇。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Token Ring devices → → Token Ring 就是指環狀網路,如不屬於這個網路型態就不用選啦。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | Fibre Channel driver support
→ 這又是高速網路 (光纖) 驅動程式的支援。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | Emulex LightPulse IP over FC Support | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | Red Creek Hardware VPN (EXPERIMENTAL) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | Traffic Shaper (EXPERIMENTAL) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <M> | Network console logging support (EXPERIMENTAL) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wan interfaces → → 若想用 linux 來做 wan router 可以選。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PCMCIA network device support
→ → 若大家跟我一樣沒使用 notebook 的話就不用理會。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ATM drivers → → 這裡面的選項,我都用不到。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Amateur Radio support → → 這是無線電裝置的支援。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| IrDA (infrared) support →
→ 這是對一些紅外線裝置的支援,notebook 上或許用得到。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Bluetooth support → → 藍芽無線技術的支援。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | Netpoll support for trapping incoming packets | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| [ * ] | Netpoll traffic trapping |
| <*> |
ISO 9660 CDROM file system support → 這是標準 CD-ROM 的檔案系統。 |
|
| [ * ] | Microsoft
Joliet CDROM extensions → Joliet 的檔案格式是以 ISO 9660 為基礎而發展出來的,其支援長檔名及 Unicode。 |
|
| [ * ] | Transparent decompression extension | |
| <M> | UDF
file system support → 這是一種使用在 CDROM 及 DVD 上頭的新的檔案系統。 |
| <M> | DOS
FAT fs support → 如要支援以 FAT 為基礎的檔案系統 ,就務必選起來。 |
|
| <M> | MSDOS
fs support → 支援 MSDOS 的檔案系統,如 FAT、FAT16。 |
|
| <M> | VFAT
(Windows-95) fs support → 支援 VFAT 的檔案系統,如 FAT32。 |
|
| <M> | NTFS
file system support → 支援 NTFS 的檔案系統。 |
|
| [ ] | NTFS debugging support | |
| [ ] | NTFS write support |
| [ * ] | /proc file system support → 這是個虛擬檔案系統,不佔您磁碟空間,而裡邊的系統相關資訊都是核心所提供的。 |
|
| [ ] | /dev file system support (OBSOLETE) | |
| [ * ] | /dev/pts Extended Attributes | |
| [ * ] | /dev/pts Security Labels | |
| [ * ] | Virtual memory file system support (former shm fs) → 這裡是指 tmpfs 檔案系統,它可以把檔案暫時存放在虛擬記憶體之中。 |
| <*> | NFS file system support → 要玩 NFS 就一定要選噢。 |
|
| [*] | Provide NFSv3 client support → 第三版的 NFS Client 支援。 |
|
| [ ] | Provide NFSv4 client support (EXPERIMENTAL) → 第四版的 NFS Client 支援。 |
|
| <M> | NFS server support → 要架設 NFS Server 就一定要選。 |
|
| [*] | Provide NFSv3 server support → 第三版的 NFS Server 支援。 |
|
| [ ] | Provide NFSv4 server support (EXPERIMENTAL) → 第四版的 NFS Server 支援。 |
|
| <M> | SMB file system support (to mount Windows shares etc.) → 要玩 SAMBA 就選起來。 |
|
| <M> | NCP file system support (to mount NetWare volumes) → 若您網路中不存在 novell 主機,可不必理會這個設定。 |
|
| <M> | Coda file system support (advanced network fs) → Coda 是一個進階的網路檔案系統,與 NFS 類似。 |
| [ * ] | Advanced partition selection | |
| [ * ] | PC BIOS (MSDOS partition tables) support → 我只選這一個。 |
Native
Language Support →
支援不同語系的編碼,反正都可以編成模組嘛,沒差。
Kernel hacking
→
支援核心除錯選項,這是提供給程式設計師來修改核心的功能。
Cryptographic options
→
這是核心所支援的加密演算法選項。
---
Load an Alternate Configuration File
載入替代檔,可以將先前設定所做的保留檔案載入。
Save Configuration to an Alternate File
編譯核心時,您可以在任何時候執行這個項目,來將目前所做得設定保留到另一個檔案去。
最後當您全部項目都設定好之後,請回到主畫面,並將按鈕移動到 [Exit]:
然後按下 Enter 鍵後就會看到詢問的訊息:
此時當然選擇 [Yes],這樣就可以把剛剛您所做的設定存放在 /usr/src/linux/.config
內。
其實執行 " make menuconfig " 、" make config " 或 " make
xconfig " 的最終目的就是要產生 .config 這個檔案啦。
步驟二:執行 make bzImage
| suselinux:/usr/src/linux # make bzImage |
開始編譯核心。這個步驟所需時間長短,視您剛剛執行
"make menuconfig" 時將多少選項編入核心而定。如果編譯完成後,結尾未看到 "Error" 字眼而是看到
"Kernel: arch/i386/boot/bzImage is ready" 這類訊息的話,那恭喜您已經成功編譯出一個核心了,此時應可以在
/usr/src/linux/arch/i386/boot 目錄中找到 bzImage 檔案,這就是編譯完成的核心映像檔。
另外還會產生一個 System.map 檔案在這個目錄下,他是每一版核心特有的系統功能檔。
或許您也曾使用 "make zImage" 來編核心,而兩者差別在於當使用 "make
zImage" 所產生出來的 kernel image 有一定的大小限制,這樣的限制是為了能在開機時將其成功載入 640K 這個記憶體區段,所以萬一您使用
"make zImage" 所產生的 kernel image 大小超過限制的話,就考慮要使用
"make bzImage" 了,這樣所產生出來的 kernel image 才能載入到 1MB 外的記憶體區段。
步驟三:執行 make modules
| suselinux:/usr/src/linux # make modules |
開始編譯模組,通常這個步驟會是花您最多時間的地方,因為我們核心編譯的原則是能編模組就編模組,所以模組數量會非常的多,當然就會花不少時間啦。而所編譯好的模組目的檔會存放在
/usr/src/linux 目錄下的相關子目錄內。
步驟四:執行 make modules_install
| suselinux:/usr/src/linux # make modules_install |
將模組安裝在
/lib/modules/2.6.5-new 目錄中。而 2.6.5-new 這個目錄名稱就是依 Makefile 檔案中所指定的版本名稱而來的。
步驟五:執行 make install
| suselinux:/usr/src/linux # make install |
這個步驟將會自動幫您把 kernel image 及 System.map 複製到 /boot 裡面,也會產生 initrd 檔案噢。如果之前您有對 /boot 做備份的話,現在就可以比較一下在執行 " make install " 之前與之後,/boot 內容的差異:
suselinux:/boot #
ls -l vmlinuz-* initrd-* System*
|