您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Ubuntu內核基本系統裁減與編譯的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、Ubuntu內核裁減與編譯
1、安裝make ,gcc, make-kpkg,運行menuconfig等等和編譯Ubuntu內核相關的工具。安裝命令如下$sudo apt-get install build-essential kernel-package libncurses5-dev如果無法安裝請檢查/etc/apt/sources.list
2、解壓源代碼可以解壓到任意目錄,我們在這里解壓到/usr/src
tar -xvf linux-2.6.28.N -C /usr/src cd /usr/src/linux-2.6.28.N
3、開始編譯前的準備工作
$ sudo make mrproper
網上很多教程上說把現在使用的Ubuntu內核的config拷貝過來參考,據實驗,是不需要的,ubuntu還有debian會自動做這步。不過這條命令倒是可以學習一下。當然你可以將以前的配置拷貝過來。命令:代碼:cp /boot/config-`uname -r` ./.config
4、開始配置Ubuntu內核選項
a、sudo make menuconfig,根據需要進行Ubuntu內核配置。
5、編譯Ubuntu內核
$sudo make-kpkg clean 這條命令好像不要超級權限,很多資料上說要,不過這不是原則問題。$ sudo make-kpkg --initrd [--append-to-version=任意名稱] kernel_image [kernel-headers]
例如:make-kpkg –initrd kernel_image
kernel-headers(kernel具體版本號如2.6.28.3,如果***編譯時如果指定kernel-headers會報錯。)說明可以用make -j2代替。
6、安裝Ubuntu內核
編譯完成就是安裝工作。編譯好的Ubuntu內核在上一層目錄。包括linux-headers-...-_i386.deb和linux- image-...-i386.deb兩個文件,如果你不搞開發的話,只要安裝Ubuntu內核就可以,頭文件以后要用的時候再說。
安裝相關命令:$ cd ..
$ sudo dpkg -i linux-image-(按tab鍵)說明:1、如果用make -j2編譯,則可以用 make install 和make modules_install進行代替
2、如果用make 直接編譯,則需要用,mkinitramfs -o initrd.img-2.6.28.N 2.6.28.N生成initrd文件并進行/boot/grub/menu.lst增加新Ubuntu內核選項。
3、在/boot/grub/menu.lst中可以不實用uuid,方法可以將/etc/initramfs-tools/conf.d/resume內容用#號注釋,update-initramfs -u -k `uname -r`(如果報Kinit: no resume image,doing normal boot...)如果報此錯誤可以用該方法解決。
二、基本系統裁減
一般有兩種方法,將原有系統上進行刪除,刪除無用的文件;另一種方法就是在新的文件系統中增加文件,我們可以采用***種辦法來作,比較簡單的辦法就是將所有文件拷貝到一個新的磁盤分區,進行操作系統文件裁減,如果刪除文件導致系統無法啟動可以將文件從原始系統中拷貝過來。
1、首先我們對命令進行刪除,刪除那些不常用的命令。
2、對動態庫進行刪除,使用ldd comand 確定文件使用的動態庫。(可以盡量將所有模塊編譯到Ubuntu內核而不是編譯成模塊,這樣可以減小文件系統裁減的難度。),刪除多余的動態庫。
3、對/dev目錄進行裁減,默認可以保留MAKEDEV,console,null,random,urandom,以及bus,pts hm這些文件和目錄。
4、對/usr目錄進行裁減,僅保留bin,lib,sbin,share,local幾個目錄即可。
a、bin,sbin根據需要保留必要命令即可。
b、lib保留gconv,i686,locale,sudo,ssl,udev目錄和必要的動態庫即可。
c、share目錄保留command-not-found file i18n terminfo zoneinfo即可,并且可以將這些目錄中不需要的文件刪除。
5、裁減var目錄保留 lock log mail run spool 幾個目錄即可,根據需要刪除這些目錄中多余文件。
6、裁減etc目錄,根據需要進行裁減。
說明:
1、/usr/bin/tput命令和/etc/lsb-*文件可以導致系統重啟時[0K]不顯視,裁減時必須主義。
2、命令行下修改時區a、 sudo tzselect 進行選擇;b、將/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
7、boot目錄裁減
根據需要修改initrd.img-2.6.28.N
1、可以使用gzip -cd /boot/imagefile.img |cpio -imd –quiet對initrd.img-2.6.28.N進行解壓,修改參數。
2、用find . |cpio –quiet -H newc -o |gzip -9 -n > /boot/initrdfile.img生成壓縮的initrd文件。或者使用(find . |cpio –quiet -c -o |gzip -9 -n > /boot/initrdfile.img,不過高版本Ubuntu內核使用前面的壓縮方式。
3、可以用mkinitramfs -o initrd.img-2.6.28.N 2.6.28.N生成initrd文件,也可以用update-initramfs -u -k `uname -r` 升級現有initrd進行升級。
8、重啟進行必要的調整。
說明:
1、如果報error:”kernel.maps_protect” is an unknow key”可以在/etc/sysctl.conf將該行屏蔽。
2、如果報error:”vm.mmap_min_addr” is an unknow key可以設置Security option選項 重新編譯Ubuntu內核。
關于“Ubuntu內核基本系統裁減與編譯的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。