開機的順序是:
BIOS
MBR ( 就是 Lilo 或 Grub ) 取得 boot loader;
取得核心 kernel 的資料並加載
init
很多 scripts
login 與 shell
為什麼要重新編譯內核:
1、內核太龐大
2、與硬件搭配穩定
3、支持新的硬件
編譯過程:
1、編譯之前先查看內核版本:uname -r
2、下載更新的內核版本升級:http://www.kernel.org
3、解壓
#cd /usr/src
#tar zxvf linux-2.4.31.tar.gz
如果怕之前已經有人編譯過核心,會產生一些.o的目的檔案,所以先執行:
#make mrproper
會顯示RM去除檔案的訊息
4、如果對同一版本內核編譯,要修改一下:
#cd /lib/modules
#mv 2.4.18 2.4.18.old
5、設定編譯模式:
make config :這種模式需要逐行輸入所需要設定的項目,無法往前修改設定,所以目前很少使用這種方式來設定 Kernel 的項目了;
make xconfig :這種模式則是使用 X-Window 為主要環境的設定模式!除非你有 X-Window 在執行,否則沒有辦法使用這種模式;
make menuconfig :這種模式有點像是文字界面的選單模式,較為簡便,而且可以在純文字界面下面執行編輯動作!是目前最常使用的模式。
#make menuconfig
# make dep <==建立相依的屬性關系!
# make clean <==將舊的資料去除掉!
# make bzImage <==開始編譯核心!這個核心是經過壓縮的
# make modules <==開始編譯模塊!這個動作視您剛剛編譯的模塊數量!
# make modules_install <==將資料給他安裝在 /lib/modules/`uname -r` 裡面
# make install <==將剛剛 bzImage 建立完成的核心給他安裝上來!
6、修改grub:
#vi /boot/grub/menu.lst 增加如下:
title linux-2.4.31
kernel (hd0,0)/boot/vmlinuz-2.4.31 root=/dev/hda1
內核編譯完成,重啟機器。
幾個命令:
depmod:模塊的相依性
MILY: MingLiU; mso-fareast-font-family: 宋體">-a :將 /etc/modules.conf 可以查詢到的模塊的相關性都寫入 /lib/modules/`uname -r`/當中
-e :顯示出目前已加載的不可執行的模塊名稱
-n :將各模塊的相依性直接輸出屏幕上,而不是輸出到 /lib/modules/`uname -r` 當中
-s :將一些訊息結果輸出到 syslog 的登錄檔中!
lsmod:查看系統的模塊
modinfo:查看模塊的信息
-a :列出作者
-d :列出這個模塊的基本說明
-n :列出這個模塊的檔案放置路徑與名稱
modprobe:加載系統模塊
-l:列出系統模塊
-c:更詳細的列出系統模塊
insmod:加載系統模塊
-f :強制將模塊加載,要加載不相同版本的模塊時候可能會用到的參數
-k :自動在核心沒有使用到該模塊的時候,先清除干淨!
-p :測試模塊是否可以被加載,不會直接加載系統中!
-s :將一些執行訊息寫到 syslog 這種登錄檔,而不是寫到 terminal 當中
rmmod:刪除模塊