ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年4月28日 星期四

upgrade 的作法: 1. 修改 init.rc,增加一個小 program, mount external sd card, check install script exist, execv it.

upgrade 的作法:
1. 修改 init.rc,增加一個小 program, mount external sd card, check install script exist, execv it.

external sd card 的 shell script 好像有一些限制,即使已經把需要的 program 都準備再 sd card 中,有些command 還是不能動作。
跟 launch sd card script 的位置有關:
  1. 太早 launch -- dd command 似乎無效
  2. 太晚 launch -- 沒有辦法 dd 已經 mount 得 partition ,, resource busy.


猜測是需要 /system 下的某些 file 才能正常執行


Try:


system.img 也放在 sd card,mount loop 回來。
實做的方式有幾種:

把這段特殊的 init.rc 分開,放在 sd card 中,修改原 init program,去include 近來..



已經開始亂搞 @_@

因為沒有 umount command,所以自己加:

結果要加在一堆地方:
buildin.c : 主體 do_umount
keyword.h : 用 MACRO 宣告 umount, do_umout , 會自動產生 K_umount.
parser.c : 在 case 'u' 的地方要 compare 'mount', return K_umount.

... 結果umount 造成 kernel panic !!!

最後:

放棄使用 script,只好用單一 program 來作,單一program 作 dd 的動作..

dd 就由 toolbox/dd.c copy 過來好了..



developement process :

用uboot 的 fatload function 直接從 external sd load uramdisk.img 這樣就不用每次燒錄..
mmc read 2 0x90800000 0x800 0x2000 fatload mmc 0:1 0x90c00000 uramdisk.img bootm 0x90800000 0x90c00000 要注意,從 9.4 開始, ramdisk 的 load address 已經從 0x90b00000 改到 0x90c00000

為了方便,可以在 bootloader 下這個command:
setenv bootdev 'mmc read 2 0x90800000 0x800 0x2000;fatload mmc 0:1 0x90c00000 uramdisk.img;bootm 0x90800000 0x90c00000' 或是直接都從 sd load: setenv bootenv 'fatload mmc 0:1 0x90800000 uimage;fatload mmc 0:1 0x90c00000 uramdisk.img;bootm 0x90800000 0x90c00000'
然後啟動作:
run bootenv ** 這樣的設定沒有設 bootargs...

沒有留言:

標籤

網誌存檔