天天看點

核心編譯 安裝

1. 檢視目前linux核心的版本号,使用指令uname -r或uname -a ,得出目前linux核心的版本号為linux-2.4.20-8。

2. 下載下傳源碼包linux -2.4.30.tar.bz2。拷貝到目錄/usr/src

3. 進入/usr/src目錄,使用指令對linux -2.4.30.tar.bz2軟體包進行解包bzip2 –xvfj linux -2.4.30.tar.bz2 。

4. 執行make mrproper指令,這個步驟會删除/usr/srclinx-2.4.30目錄中不穩定的 .o檔案,附屬檔案以及核心配置檔案。

5. 進行核心選項設定。make config :這是文字模式的設定方式,它以逐項問答的方式進行,若是答錯了任何一個項目,都必須重新再設定一次。make oldconfig; 完全使用舊的核心功能設定,若不需要辦更核心功能,應該使用這種方法。make menuconfig; 這是文字模式的設定方式,它包含一個菜單以設定核心編譯選項。make xconfig; 這是圖形界面的設定方式,make menuconfig的選項設定。

以下是配置舉例(可用make menuconfig等指令):

網卡配置:

Network device support --->

Ethernet (10 or 100Mbit) --->

[*] Ethernet (10 or 100Mbit)

[*] EISA, VLB, PCI and on board controllers

<*> DECchip Tulip (dc21x4x) PCI support

USB support--->

<*> Support for USB

[ ] USB verbose debug messages

--- Miscellaneous USB options

[*] Preliminary USB device filesystem

--- USB Host Controller Drivers

<*> UHCI Alternate Driver (JE) support

< > OHCI (Compaq, iMacs, OPTi, SiS, AL

--- USB Device Class drivers

< > USB Audio support

< > USB MIDI support

<*> USB Mass Storage support

<*> USB Modem (CDC ACM) support

--- USB Human Interface Devices (HID)

<*> USB Human Interface Device (full HID) support

Input core support --->

<M> Input core support

<M> Keyboard support

<M> Mouse support

(1024) Horizontal screen resolution (NEW)

(768) Vertical screen resolution (NEW)

< > Joystick support

< > Event interface support

< > User level driver support

File systems--->

[*] Quota support

<*> VFS v0 quota format support

<M> Kernel automounter version 4 support

<M> Ext3 journalling file system support

File systems--->Native Language Support--->

<*> NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)

<*> NLS UTF8

Networking options-->

<*> Packet socket

[*] Packet socket: mmapped IO

<*> Netlink device emulation

[*] Network packet filtering (replaces ipchains)

[ ] Network packet filtering debugging (NEW)

[*] Socket Filtering

<*> Unix domain sockets

[*] TCP/IP networking

[*] IP: multicasting

[*] IP: advanced router

[*] IP: kernel level autoconfiguration

[*] IP: DHCP support

IP: Netfilter Configuration --->全部選為M

6. 在完成以上的全部設定後,系統會響應資訊,并提示需執行make dep指令,make dep指令用來連接配接linux程式代碼與資料庫。

7. 在連接配接程式代碼與函數庫後,必須删除不必要的子產品和檔案,可以執行指令make clean。

8. 在完成以上的兩個步驟後,接下來是最費時的核心編譯過程。通常核心編譯的方法有以下三種:make bzImage 這是最常用的編譯方法,在利用此法編譯後,系統會在/usr/src/linux-2.4.30/arch/i386/boot目錄下産生核心程式檔案zImage。 make bzlilo這個方法除了會編譯核心程式檔案外,還會在lilo中設定相關的設定。 make bzdisk 這個方法除了會編譯核心程式檔案外,還會制作一張不含lilo的引導盤。我做這個實驗時使用了make bzImage指令,完成指令後系統會在 /usr/src/linux-2.4.30/arch/i386/boot下生成一個名為bzImage的核心檔案。

9. 在核心編譯完成後,使用指令make modules 開始編譯外挂子產品,然後使用指令make modules_install安裝編譯完成的子產品。最後使用指令depmod –a建立子產品連接配接。

10. 在核心編譯後并不表示已經完成了所有工作,接下來必須更換新的核心了,建議不要覆寫原有核心,而是安裝為雙啟動:一是以防萬一不成功,還可以用舊核心啟動。二是學習配置幾種啟動方式,有時是需要的。将目前目錄(/usr/src/linux-2.4.30)下編譯好的核心檔案改名-複制到/boot目錄下,cp /usr/src/linux-2.4.30/System.map /boot/System.map-2.4.30;cp /usr/src/linux-2.4.30/arch/i386/boot/bzImage /boot/vmlinuz-2.4.30, 删除vmlinuz、System.map符号連接配接,建立新的符号連接配接,因為我們是使用雙核心啟動,是以就不删除vmlinuz、System.map符号連接配接,建立新的符号連接配接。

11. 這是整個核心編譯的作後步驟了—修改引導檔案的内容,我們使用的red hat linux 9使用的是GURB引導程式,是以我們要使用vi編輯/boot/grub/grub.conf檔案。沒有經過修改的原檔案内容

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You do not have a /boot partition. This means that

# all kernel and initrd paths are relative to /, eg.

# root (hd0,2)

# kernel /boot/vmlinuz-version ro root=/dev/hda3

# initrd /boot/initrd-version.img

#boot=/dev/hda

default=1

timeout=20

splashimage=(hd0,2)/boot/grub/splash.xpm.gz

title Red Hat Linux (2.4.20-8)

root (hd0,2)

kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/

initrd /boot/initrd-2.4.20-8.img

修改這個檔案就是在這個檔案中加入linux-2.4.30的引導程式,根據linux-2.4.20-8的引導程式,可以在此檔案中加入以下的内容:

title Red Hat Linux (2.4.30)

root(hd0,2)

kernel /boot/vmlinuz-2.4.30 ro root=/dev/hda3

接下來還要把檔案中的 default選項的值修改為1,因為是雙核心選擇啟動,儲存此檔案退出。

12. reboot 重新啟動Linux。重新啟動後進入red hat linux GRUB開機管理程式視窗,在此視窗會出現兩個核心啟動,一個是原核心即linux-2.4.20-8,一個是我們新編譯的核心即linux-2.4.30,選擇核心linux-2.4.30進入系統。

13. 到此為止,此次實驗已經做完。但是由于我從老師那裡下載下傳到更新核心的patch-2.4.31.bz2軟體包,是以決定繼續更新自己的核心,首先将更新patch-2.4.31.bz2軟體包下載下傳到自己的機器,并制成 .iso格式的檔案,linux挂接cdrom将patch-2.4.31.bz2軟體包拷貝到/usr/src目錄(cp /mnt/cdrom/patch-2.4.31.bz2 /usr/src)并進入該目錄,先使用指令less /src/linux-2.4.30/Makefile檢視沒有更新前的核心版本号在此檔案第二行可是看出SUBLEVEL=30,然後使用指令bzip2 –dc ../patch-2.4.31.bz2 | patch –p1 ,這時系統會自動更新核心,此指令執行完後,再次檢視更新後的版本号得出SUBLEVEL=31,這說明更新成功。

繼續閱讀