參考上篇設定,利用QEMU執行Ubuntu,且連上網路。下載完Linux Kernel後,就可以準備來進行編譯Linux的Kernel了。細節可以參考這篇http://linux.vbird.org/linux_basic/0540kernel.php,目標是Ubuntu 12.04採用3.2版Kernel改成3.5版的Kernel。
查詢目前Kernel版本
\>uname -r
關掉QEMU後,要來編譯Linux核心,首先利用chroot切換到子系統的目錄下,su代表是用帳號登入,也就是子系統的帳號
$ sudo chroot partition env -i TERM=xterm su brown
接著,切換目錄到要編譯的Linux Kernel資料夾下
然後把原本可能有編譯過殘留的.o檔清除
使用目前的.config檔作為menuconfig .config預設檔
進入muconfig修改細項,細項選擇參考這篇
再來就正式進入編譯Makefile了
跑完之後換build bzImage
成功的產生了vmlinux和System.map的檔案。
再來要安裝編譯好的核心,離開chroot和卸載partition
開機QEMU的Ubuntu 12.04
安裝編譯好的modules以及install安裝開機的選單
可以看到有把3.5.5brown的Kernel連結到/boot的資料夾下。
修改 grub2 設定檔,在 GRUB_HIDDEN_TIMEOUT=0 的前面加上 '#'。
最後重開機
就會看到開機選單
採用了新編譯的Kernel版本,3.5.5brown,開機之後進入查詢Linux Kernel版本
就可以看到成功的替換了新版本的Kernel了。
\>cd /usr/src/linux-3.5.5
然後把原本可能有編譯過殘留的.o檔清除
\>make mrproper
\>make clean
使用目前的.config檔作為menuconfig .config預設檔
\>cp /boot/config-3.2.0-23-generic-pae .config
進入muconfig修改細項,細項選擇參考這篇
\>make menuconfig
可以在Local version版本的地方,可以加上自己命名的版本,然後選擇automatically append,作為版本辨識用。\>make modules
這個步驟會花點時間,所以就做其他事情去吧!跑完之後換build bzImage
\>make bzImage
同樣也會花點時間,成功之後應該會看到下圖。成功的產生了vmlinux和System.map的檔案。
再來要安裝編譯好的核心,離開chroot和卸載partition
\> exit
$ sudo umount partition
$ sudo losetup -d /dev/loop0
開機QEMU的Ubuntu 12.04
$ qemu-system-i386 -net nic -net user -hda disk.img -m 2047
進入kernel的資料夾下\>cd /usr/src/linux-3.5.5
安裝編譯好的modules以及install安裝開機的選單
\>sudo make modules_install
\>sudo make install
成功後會看到下圖可以看到有把3.5.5brown的Kernel連結到/boot的資料夾下。
修改 grub2 設定檔,在 GRUB_HIDDEN_TIMEOUT=0 的前面加上 '#'。
\> sudo vi /etc/default/grub
:i/GRUB_HIDDEN_TIMEOUT=0 à #GRUB_HIDDEN_TIMEOUT=0
:wq
最後重開機
\>sudo reboot
就會看到開機選單
採用了新編譯的Kernel版本,3.5.5brown,開機之後進入查詢Linux Kernel版本
就可以看到成功的替換了新版本的Kernel了。
沒有留言:
張貼留言