溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Ubuntu內(nèi)核基本系統(tǒng)裁減與編譯的示例分析

發(fā)布時(shí)間:2021-12-08 11:46:09 來源:億速云 閱讀:268 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章將為大家詳細(xì)講解有關(guān)Ubuntu內(nèi)核基本系統(tǒng)裁減與編譯的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

一、Ubuntu內(nèi)核裁減與編譯

1、安裝make ,gcc, make-kpkg,運(yùn)行menuconfig等等和編譯Ubuntu內(nèi)核相關(guān)的工具。安裝命令如下$sudo apt-get install build-essential kernel-package libncurses5-dev如果無法安裝請(qǐng)檢查/etc/apt/sources.list

2、解壓源代碼可以解壓到任意目錄,我們?cè)谶@里解壓到/usr/src

tar -xvf linux-2.6.28.N -C /usr/src  cd /usr/src/linux-2.6.28.N

3、開始編譯前的準(zhǔn)備工作

$ sudo make mrproper

網(wǎng)上很多教程上說把現(xiàn)在使用的Ubuntu內(nèi)核的config拷貝過來參考,據(jù)實(shí)驗(yàn),是不需要的,ubuntu還有debian會(huì)自動(dòng)做這步。不過這條命令倒是可以學(xué)習(xí)一下。當(dāng)然你可以將以前的配置拷貝過來。命令:代碼:cp /boot/config-`uname -r` ./.config

4、開始配置Ubuntu內(nèi)核選項(xiàng)

a、sudo make menuconfig,根據(jù)需要進(jìn)行Ubuntu內(nèi)核配置。

5、編譯Ubuntu內(nèi)核

$sudo make-kpkg clean 這條命令好像不要超級(jí)權(quán)限,很多資料上說要,不過這不是原則問題。$ sudo make-kpkg --initrd [--append-to-version=任意名稱] kernel_image [kernel-headers]

例如:make-kpkg –initrd kernel_image

kernel-headers(kernel具體版本號(hào)如2.6.28.3,如果***編譯時(shí)如果指定kernel-headers會(huì)報(bào)錯(cuò)。)說明可以用make -j2代替。

6、安裝Ubuntu內(nèi)核

編譯完成就是安裝工作。編譯好的Ubuntu內(nèi)核在上一層目錄。包括linux-headers-...-_i386.deb和linux- image-...-i386.deb兩個(gè)文件,如果你不搞開發(fā)的話,只要安裝Ubuntu內(nèi)核就可以,頭文件以后要用的時(shí)候再說。
安裝相關(guān)命令:$ cd ..
$ sudo dpkg -i linux-image-(按tab鍵)說明:1、如果用make -j2編譯,則可以用 make install 和make modules_install進(jìn)行代替

2、如果用make 直接編譯,則需要用,mkinitramfs -o initrd.img-2.6.28.N 2.6.28.N生成initrd文件并進(jìn)行/boot/grub/menu.lst增加新Ubuntu內(nèi)核選項(xiàng)。

3、在/boot/grub/menu.lst中可以不實(shí)用uuid,方法可以將/etc/initramfs-tools/conf.d/resume內(nèi)容用#號(hào)注釋,update-initramfs -u -k `uname -r`(如果報(bào)Kinit: no resume image,doing normal boot...)如果報(bào)此錯(cuò)誤可以用該方法解決。

二、基本系統(tǒng)裁減

一般有兩種方法,將原有系統(tǒng)上進(jìn)行刪除,刪除無用的文件;另一種方法就是在新的文件系統(tǒng)中增加文件,我們可以采用***種辦法來作,比較簡(jiǎn)單的辦法就是將所有文件拷貝到一個(gè)新的磁盤分區(qū),進(jìn)行操作系統(tǒng)文件裁減,如果刪除文件導(dǎo)致系統(tǒng)無法啟動(dòng)可以將文件從原始系統(tǒng)中拷貝過來。

1、首先我們對(duì)命令進(jìn)行刪除,刪除那些不常用的命令。

2、對(duì)動(dòng)態(tài)庫進(jìn)行刪除,使用ldd comand 確定文件使用的動(dòng)態(tài)庫。(可以盡量將所有模塊編譯到Ubuntu內(nèi)核而不是編譯成模塊,這樣可以減小文件系統(tǒng)裁減的難度。),刪除多余的動(dòng)態(tài)庫。

3、對(duì)/dev目錄進(jìn)行裁減,默認(rèn)可以保留MAKEDEV,console,null,random,urandom,以及bus,pts hm這些文件和目錄。

4、對(duì)/usr目錄進(jìn)行裁減,僅保留bin,lib,sbin,share,local幾個(gè)目錄即可。
a、bin,sbin根據(jù)需要保留必要命令即可。
b、lib保留gconv,i686,locale,sudo,ssl,udev目錄和必要的動(dòng)態(tài)庫即可。
c、share目錄保留command-not-found file i18n terminfo zoneinfo即可,并且可以將這些目錄中不需要的文件刪除。

5、裁減var目錄保留 lock log mail run spool 幾個(gè)目錄即可,根據(jù)需要?jiǎng)h除這些目錄中多余文件。

6、裁減etc目錄,根據(jù)需要進(jìn)行裁減。

說明:

1、/usr/bin/tput命令和/etc/lsb-*文件可以導(dǎo)致系統(tǒng)重啟時(shí)[0K]不顯視,裁減時(shí)必須主義。

2、命令行下修改時(shí)區(qū)a、 sudo tzselect 進(jìn)行選擇;b、將/usr/share/zoneinfo/Asia/Shanghai/etc/localtime

7、boot目錄裁減

根據(jù)需要修改initrd.img-2.6.28.N

1、可以使用gzip -cd /boot/imagefile.img |cpio -imd –quiet對(duì)initrd.img-2.6.28.N進(jìn)行解壓,修改參數(shù)。

2、用find . |cpio –quiet -H newc -o |gzip -9 -n > /boot/initrdfile.img生成壓縮的initrd文件?;蛘呤褂茫╢ind . |cpio –quiet -c -o |gzip -9 -n > /boot/initrdfile.img,不過高版本Ubuntu內(nèi)核使用前面的壓縮方式。

3、可以用mkinitramfs -o initrd.img-2.6.28.N 2.6.28.N生成initrd文件,也可以用update-initramfs -u -k `uname -r` 升級(jí)現(xiàn)有initrd進(jìn)行升級(jí)。

8、重啟進(jìn)行必要的調(diào)整。

說明:

1、如果報(bào)error:”kernel.maps_protect” is an unknow key”可以在/etc/sysctl.conf將該行屏蔽。

2、如果報(bào)error:”vm.mmap_min_addr” is an unknow key可以設(shè)置Security option選項(xiàng) 重新編譯Ubuntu內(nèi)核。

關(guān)于“Ubuntu內(nèi)核基本系統(tǒng)裁減與編譯的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI