編譯linux核心

2021-06-16 22:16:21 字數 3033 閱讀 7431

一:環境

linux: centos6

kernel:linux-3.0.3.tar.bz2

使用root使用者編譯核心

核心裁剪:

驅動:保留常用usb驅動,支援常用磁碟介面如scsi,sata。因為核心需要從這些地方載入,所以必須把這些驅動編譯到核心中,不能以模組的型式編譯。

去掉無線,藍芽,isdn,,其他遊戲手柄,手持裝置等都已去掉

支援ext3,ext4,cifs,nfs,不支援虛擬化

核心debug模式已經關閉,編譯方式採用優化code size方式編譯

cpu架構:只保留intel,去掉amd等,cpu採用非搶占排程(server)模式

語言:只保留utf-8,iso,簡體中文

二:編譯準備

1.準備相關軟體包

yum install rpmdevtools yum-utils ncurses-devel make rpm-build rpm-devel

三. 原始碼編譯安裝步驟

0. 解壓原始碼

tar xvf linux-3.0.3.tar.bz2

cd linux-3.0.3

1. make mrproper 

如果是第一次編譯,省略該步驟,該步驟主要刪除編譯後生成的一些檔案,如果.config,makefile,*.o等檔案

如果是第一次編譯失敗,再一次編譯,則必須執行。

2. make menuconfig  | make config | make menuconfig | make xconfig | make gconfig|make nconfig

定製核心配置,請以上方式任選一種。我這裡選擇make menuconfig

3. make

編譯核心

4. make modules_install 

安裝核心模組, 把上一步構建出來的核心放入乙個模組子目錄中:

/lib/modules/核心版本,這裡是/lib/modules/3.0.3/

5. make install

把編譯好的核心放入/boot中,並且會更新引導檔案,會把vmlinuz和system.map複製到/boot目錄下同時修改grub

主要會生成一下檔案:

config-3.0.3   --核心編譯配置檔案內容就是make menuconfig出來的檔案.config的內容,只是檔名不同而已

initrd-3.0.3.img 

vmlinux-3.0.3.bz2

system.map-3.0.3 

vmlinuz-3.0.3

6. new-kernel-pkg --mkinitrd --depmod --install 3.0.3   #生成initrd.img

安裝grub,new-kernel-pkg --mkinitrd --depmod --install 核心版本號

修改/boot/grub/grub.conf檔案,增加一下內容

title centos linux (3.0.3)

root (hd0,6)

kernel /vmlinuz-3.0.3 ro root=uuid=db5edc6d-d16b-4308-8c7b-6df9f4f4e26c 

rd_no_luks rd_no_lvm rd_no_md rd_no_dm lang=en_us.utf-8 sys

font=latarcyrheb-sun16 keyboardtype=pc keytable=us crashkernel=auto rhgb quiet

initrd /initrd-3.0.3.img

四. 編譯成rpm包

0. 解壓原始碼

tar xvf linux-3.0.3.tar.bz2

cd linux-3.0.3

vi scripts/package/mkspec 

增加一下幾行,目的:當rpm -i kernel-3.0.3-1.x86_64.rpm 自動配置grub.conf

echo "%post"

echo 'if [ `uname -i` == "x86_64" -o `uname -i` == "i386" ]; then'

echo  'if [ -f /etc/sysconfig/kernel ]; then'

echo  '/bin/sed -i -e 's/^defaultkernel=kernel-smp$/defaultkernel=kernel/' /etc/sysconfig/kernel || exit $?'

echo  'fi '

echo 'fi '

echo '/sbin/new-kernel-pkg  --mkinitrd --make-default --depmod --install % || exit $?' 

上面這一步3.8.10以後版本可以不用加。只需要製做initramfs

cp /boot/initrd-3.0.3.img  /mnt/initrd.gz

gunzip initrd.gz

cpio -mdiv < initrd

mv initrd

general setup->

[*] initial ram filesystem and ram disk (initramfs/initrd) support         |

|         (/mnt) initramfs source file(s)                                        |    指定initramfs檔案目錄,核心分自動壓縮到核心檔案中

|         (0)     user id to map to 0 (user root)                                |

|         (0)     group id to map to 0 (group root)                              |

|           built-in initramfs compression mode (none)  ---> 

編譯完成後,initramfs包含著核心檔案中。

編譯 linux 核心

一 準備工作 tpv te0 首先說明,下面帶 號的行都是要輸入的命令列,且本文提到的所有命令列都在終端裡輸入。ixpub技術部落格 rc0p a6zx j 啟動linux系統,並用根使用者登入,進入終端模式下。6i sb w,a0 ixpub技術部落格c gng,y y ixpub技術部落格 k,...

linux編譯核心

red hat linux版本的核心編譯 make j2 編譯 make modules make modules install make install cd boot mkinitramfs o initrd.img 2.6.30.10 2.6.30.10 此項可能不需要 vim boot g...

Linux核心編譯

經過幾天的努力,本人終於把乙個核心編譯成功了,嘿嘿,現在把編譯過程記下來,以後再接再勵,注意 以下的操作都要有root許可權。linux 2.6.36.tar.bz2。2 解壓縮。cd usr src tar xvf home ibm linux 2.6.36.tar.bz2.usr src下就會多...