請問版上的各位前輩一個關於Kernel command line的問題

by hks248
2009.08.13 09:19PM
請問版上的各位前輩一個關於Kernel command line的問題

 各位前輩大家好:

       小弟最近在做Android的移植,使用的開發版是PXA270

今天小弟跟同學在做config檔的選項時(使用的是make xconfig), 其中將Boot Options 改為以下:

    => Default kernel command string : root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mem=64M

由於我的開發版原始的filesystem是放在flash裡,所以root=/dev/mtdblock2, 但這是因為版子原本的filesystem比較小,所以廠商把它放在flash裡 ,小弟今天跟同學將這些選項選好後,編譯出來的zImage放到CF卡開機(我們的版子已經改為將kernel放在CF卡,bootloader會去讀CF卡裡面的kernel) ,開機後一切都正常,配合版子原本的filesystem可以進入到版子的Linux系統,到目前為止(kernel是google提供的 版本是2.6.27 ; 而filesystem則是版子原本的) 現在的問題是:因為Android的filesystem太大(我們使用的是網路下載的armv4裡的filesystem), 塞不進flash裡(PXA270的flash只有64M,裡面分為三區:(1)bootloader (2)kernel [舊的kernel,已不使用] (3)filesystem), 所以我們想要把filesystem放在CF卡裡, 這樣子,root=/dev/mtdblock2 這一段勢必做改變, 假如我們要放在CF卡裡,那root要怎麼改? root=/dev/?????

小第再補問一個問題, 使用網路上下載的armv4裡的filesystem可以嗎? 還是說要自己編譯?? 

 

以上兩個問題,希望各位前輩能夠幫小弟解惑,感激不盡!!

 

4 則回應

  •  我說的 SDK 就是你說的 source code.

     out/target/product/nfs/root/*out/target/product/nfs/system  這些就是基本的可以執行 Android 的 filesystem.

    如果你要用自己 download 的 filesystem. 

    (當然前題是你 download 的 filesystem 要是你的 CPU 可以跑的。

    如果不行,  你的開發板應該有附 cross-compiler, toolchain, 可以自行 compile.)

    1.

    假設你的  kernel 有把

    CF card support 編入,  那你可以把你的 filesystem 加上 out/target/product/nfs/root/*out/target/product/nfs/system  放在 CF card裡, 把 kernel command line 改成 root=/dev/hda2

    正確的話, 系統開起來應該就會 mount /dev/hda2 進到 console mode, 你也就可以 chroot 到自己 download 的 filesystem. 

    2.

       最簡單的方法就是把你的 filesystem copy 到 CF card

       kernel command line 維持原來的用 flash 開機,

       系統開起來之後, mount CF card , 再 chroot 到

       你的 filesystem.

     

    希望對你有幫助。

     

     

     

    2009-08-24
  •  首先謝謝上面兩位大大的指導!

    有個問題想在請教一下michtw大大, 在android source code 裡面有個/out/target/product/nfs/root/init.rc檔,這個檔案是做什麼用的,是用來調整file system之後,才會產生出適合我們自己的file system嗎?  

       (因為我看有篇文章是寫說, init.rc檔為Android初始化程序的設定檔...在移植時,首先針對硬體平台的實際配置與使用者的需求調整掛載條件. 權限設定,其次將qemu相關的設定取消)以上這兩段話讓小弟我在懷疑,file system的生成是不是照這個檔案裡的流程來跑?

     

    還有 大大您說的"Android SDK make 完,就有你要的 filesystem 了。"這一段話是說,直接把source code 做make之後就有我們要的file system嗎?(為何大大會提到Android SDK?那不是開發套件嗎,跟file system有關係???) 那file system是不是可以做調整,還是說每個人make 出來的file system都一樣?如果要調整是不是靠init.rc這個檔來做調整?

     

    不好意思,問題有點多,不過以上這些問題的確是困擾了小弟我很久了,麻煩有能力的大大們能夠幫幫我! 感激不盡..

     

    2009-08-24
  • hks248 wrote:

     各位前輩大家好:

           小弟最近在做Android的移植,使用的開發版是PXA270

    今天小弟跟同學在做config檔的選項時(使用的是make xconfig), 其中將Boot Options 改為以下:

        => Default kernel command string : root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mem=64M

    由於我的開發版原始的filesystem是放在flash裡,所以root=/dev/mtdblock2, 但這是因為版子原本的filesystem比較小,所以廠商把它放在flash裡 ,小弟今天跟同學將這些選項選好後,編譯出來的zImage放到CF卡開機(我們的版子已經改為將kernel放在CF卡,bootloader會去讀CF卡裡面的kernel) ,開機後一切都正常,配合版子原本的filesystem可以進入到版子的Linux系統,到目前為止(kernel是google提供的 版本是2.6.27 ; 而filesystem則是版子原本的) 現在的問題是:因為Android的filesystem太大(我們使用的是網路下載的armv4裡的filesystem), 塞不進flash裡(PXA270的flash只有64M,裡面分為三區:(1)bootloader (2)kernel [舊的kernel,已不使用] (3)filesystem), 所以我們想要把filesystem放在CF卡裡, 這樣子,root=/dev/mtdblock2 這一段勢必做改變, 假如我們要放在CF卡裡,那root要怎麼改? root=/dev/?????

    小第再補問一個問題, 使用網路上下載的armv4裡的filesystem可以嗎? 還是說要自己編譯?? 

     

    以上兩個問題,希望各位前輩能夠幫小弟解惑,感激不盡!!

     

     

    1.

     CF 卡,在 Linux 下是跟硬碟一樣的,就是 /dev/hda1

    所以,假設你的 CF 卡切成兩個 partition , /dev/hda1 & /dev/hda2

    假設 zImage 放在 hda1,  root filesystem 放 hda2, 那你的 kernel command line 應該改成 root=/dev/hda2

    2.

     既然你是作 Android porting ,那你應該是有 Android SDK

     make 完,就有你要的 filesystem 了。

     

    2009-08-24
  • PXA270 不是ARM11?

    你怎麼會用ARM4的FS?自己抓sorce rebuild

    另外你要先確認你的Kernel 抓到CF card device,假如可以抓到的話一般有可能是

    /dev/sd? 這種,你可以先用原先fs進入系統,再插入CF card用下面的指令確認kernel到底有無get device。

    #dmesg

     

    2009-08-15