一:環境
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下就會多...