Friday, April 15, 2011

Compile kernel for Kurobox HG

又是寫筆記的一篇文章

記得這台 Kurobox HG 已經買了至少 五六年以上了

kernel 從早期內建的 2.4.17_mvl-sandpoint 幾年之間一直不斷的升級到現在已經 2.6.32.28
(註:要使用自己的kernel必須先將機器的 bootloader
刷成 uboot,但是刷 bootloader有一定程度的風險,
不確定的朋友請勿輕易嘗試,以免機器變成磚頭)

機器上的系統也從

Debian 3.0 (woody) -> Debian 4.0 (etch) -> Debian 5.0 (lenny) -> Debian 6.0 (squeeze)
(註: Debian 的套件管理真的做的很好, 一路這樣升級都沒出什麼大問題)

年紀大了
每次 compile 新 kernel 都還要去看網頁
Compile a uBoot Kernel

記不了那麼多, 而且本人很懶也沒設 bookmark, 所以乾脆寫編文章也方便自己參考


1. Get the kernel source

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.12.tar.bz2
# tar xjvf linux-2.6.35.12.tar.bz2


2. Compile your kernel
直接拿前一版的config來用比較快,而且我是 native compile 所以 ARCH=powerpc 就省了

# cp /boot/config-2.6.32.28 .config
# make oldconfig
...
...
# make uImage && make modules && make modules_install

通常我都從外面用 ssh 連回家而且開 screen 讓, 開始 make 後就 detach 了
沒意外的話應該是不會出什麼差錯

3. Backup your old kernel and dtb file

# cp /boot/uImage /boot/uImage.bak
# cp /boot/kuroboxHG.dtb /boot/kuroboxHG.dtb.bak


前面的步驟跟一般x86上 make kernel 的步驟都一樣, 讓我老是記不起來的是關於 dtb file
這些步驟, 如下

4. Compile the dtb file

# cp kuroboxHG.dtb /tmp/
# cd /usr/src/linux/arch/powerpc/boot/dts
# dtc -I dts -O dtb -V 16 -o /tmp/kuroboxHG.dtb kuroboxHG.dts
# cp /tmp/kuroboxHG.dtb /boot/kuroboxHG.dtb


5. Install the kernel & enable modules

# cp /usr/src/linux/arch/powerpc/boot/uImage /boot/uImage
# cd /lib/modules/2.6.35.12/
# depmod


6. Reboot

# reboot


7.Troubleshooting
如果不幸開不了機的話 XD
只好進去 EM mode 把剛剛備份的舊 kernel 和 dtb file copy 回來

# cp /boot/uImage.bak /boot/uImage
# cp /boot/kuroboxHG.dtb.bak /boot/kuroboxHG.dtb


(註:dtb file 是 uboot 使用的, 但是 uboot 必須要在某個版本以上才有支援(版本忘記了)
所以如果 Kurobox HG bootloader 沒刷機成 uboot 的朋友, 是不需要做出 dtb file 的)

1 comment:

Anonymous said...
This comment has been removed by a blog administrator.