Linux系統核心公升級與裁剪

2021-06-20 05:09:50 字數 2981 閱讀 2365

1》公升級前準備

1、確認目前版本,避免重複公升級

[root@free root]# uname -r

3、了解硬體環境,知道自己的計算機內究竟安裝了哪些介面裝置,每項硬體資源所使用的系統資源,尤其是介面卡、控制卡使用的irq、dma以及i/o address。

4、解壓核心檔案,以linux-2.6.40.tar.gz為例

#tar zxvf linux-2.6.40.tar.gz

#cp -r linux-2.6.40 /usr/scr/my-2.6.40-kernel  將解壓後的linux目錄複製到存放核心原始碼的/usr/src目錄,並將目錄名改為my-2.6.40-kernel

#cd  /usr/src

#ln -s my-2.6.40-kernel linux 將my-2.6.40-kernel目錄鏈結到linux,到此準備就緒,開始公升級核心,並編譯核心檔案。

2》 核心的定製

切換到放置核心源**的目錄# cd  /usr/scr/linux

首先清除核心源**樹#make mrproper

選擇定製方式:1、文字互動方式          #make config

2、文字窗**互方式 #make menuconfig

3、圖形窗**互方式 #make xconfig ←使用圖形介面進行設定

4、使用現有配置檔案 #make oldconfig

以圖形介面進行設定為例:#make xconfig

立即會出現linux kernel configuration對話方塊。單擊任乙個分類的按鈕,就會出現該類的對話方塊。對話方塊中的問題就是系統功能的設定,必須依據實際情形回答。在每個問題的前面都會有三個選項:y即yes表示啟動該項功能;m即module,表示該項功能可編譯成功能模組,然後以外掛程式的方式載入,無需在編譯時放入系統核心,並非所有的功能都可模組化,假如該項功能無法編譯成模組,則此處的選項會變成「-」號;n即no表示關閉該項功能。某些功能彼此之間存在著關聯性,當關鍵性功能的選項被關閉後,相關的功能便不起作用,此時這些相關功能的字型顏色都會變成灰色,表示不能選擇或無法設定。

3》核心與模組編譯與安裝

1、生成依賴關係

#make dep  ←鏈結程式**與函式庫

#make clean  ←刪除不必要的模組和檔案

2、編譯核心 

#make bzimage  ←開始編譯系統核心   

3、安裝新編譯的核心

#make install  ←安裝新編譯完成的核心

4》檢視更新配置的檔案

可以檢視新核心      #ls /boot/vmlinuz*

5》模組的安裝與管理

1、編譯核心模組     #make modules

2、安裝已編譯模組 #make modules_install

#depmod -a ←安裝編譯完成的模組

編譯完成的系統核心bzimage或zimage檔案,放置於/usr/src/linux/arch/i386/boot目錄下。執行make bzimage命令是為了避免所編譯出來的核心過於龐大,而導致編譯過程失敗;使用make zimage命令進行編譯時產生的核心較大,但在系統啟動時的效能會較好。

有時因為外掛程式模組的關係,必須重建initrd檔案,執行mkinitrd /boot/initrd (核心版本)命令即可,如:mkinitrd /boot/initrd 2.6.40 ;使用者可以執行make zdisk(或make bzdisk)命令編譯系統核心,並建立引導盤。

6》更換核心

編譯核心之後並不代表一切工作都已經完成,還需要更換新的核心。由於新的系統核心可能導致系統無法啟動,所以請先備份檔案與重要資料,並準備好linux引導盤以防萬一。建議先將/boot目錄下的所有檔案做備份,並用mkbootdisk命令製作引導盤。

可按以下步驟更換系統核心:

[root@free linux]# cd /boot

[root@free root]# rm system.map

[root@free root]# rm vmlinuz

[root@free root]# mv /usr/src/linux/system.map system.map

[root@free root]# mv /usr/src/linux/arch/i386/boot/bzimage./vmlinuz

default=0     #預設啟動第一項

timeout=3     #啟動選單選擇等待時間,超過此時間系統自動啟動預設項

splashimage=(hd0,8)/boot/grub/splash.xpm.gz    #指定系統啟動畫面

hiddenmenu    #隱藏選單選擇項

title linux(new)  #新增系統啟動選單選擇項linux(new)

root (hd0,8)                      #根目錄位於第一硬碟,編號為8的分割槽

kernel /boot/vmlinuz        #指定啟動核心

initrd /boot/initrd.img      #指定系統啟動時初始化檔案

title linux(old)  #系統啟動選單選擇項linux(old),原來的系統啟動項,建議先保留

root (hd0,8)                      #根目錄位於第一硬碟,編號為8的分割槽

kernel /boot/vmlinuz-2.6.35.11-83.fc14.x86_64 ro root=uuid=7a610e29-e8f4-4851-8587-6a8c323ed87b rd_no_luks rd_no_lvm rd_no_md rd_no_dm lang=zh_cn.utf-8 keytable=us rhgb quiet

#指定啟動核心及版本

initrd /boot/initramfs-2.6.35.11-83.fc14.x86_64.img

Linux核心裁剪

通過編寫驅動,從應用層,核心層,再到底層硬體之間的關係。明白核心驅動的意義。現在開始才是重頭戲,前面的都是鋪墊。正式編寫驅動前,要先了解linux核心 的組成。linux主要是由五個子系統組成 程序排程,記憶體管理,檔案系統,網路介面以及程序間通訊。linux源 用來實現這些功能,linux原始碼包...

linux系統核心版本公升級

1 cat proc version 2 uname a 1 lsb release a 即可列出所有版本資訊 這個命令適用於所有的linux發行版,包括redhat suse debian 等發行版。2 cat etc redhat release 這種方法只適合redhat系的linux 3 c...

Android核心編譯與裁剪

編譯android核心 命令 mkdir android 進入上一步中建立好的目錄android。命令 cd android 命令 git clone 檢視goldfish核心在git中的所有分支資訊。命令 git branch a 命令 git branch android goldfish 2....