轉自:http://blog.csdn.net/jackyard/article/details/8612724
有時加載文件系統時,會出現下面的錯誤:
VFS: Mounted root (nfs filesystem) on device 0:12.
Freeing init memory: 124KKernel panic - not syncing: Attempted to kill init!
從上面看,文件系統已經加載成功,但還是不能正常啓動init進程,這是什麼原因了?
大多數是因爲編譯的內核和編譯的根文件系統的編譯工具鏈不一致。
解塊辦法就是在內核編譯時把EABI的選項選中就可以了。
同時用arm-linux-gcc 4.0.0以上的編譯器做出都 文件系統老是報這個錯 ,
而用rm-linux-gcc 3.x.x 版本都都不會
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
把這個選上就可以了
附:
1。什麼是ABI
ABI,application binary interface (ABI),應用程序二進制接口。
既然是 接口,那就是某兩種東西之間的溝通橋樑,此處有這些種情況:
A。應用程序 <-> 操作系統;
B。應用程序 <-> (應用程序所用到的)庫
C 。應用程序各個組件之間
類似於API的作用是使得程序的代碼間的兼容,ABI目的是使得程序的二進制(級別)的兼容。
2。什麼是OABI 和 EABI
OABI中的O,表示“Old”,“Lagacy”,舊的,過時的,OABI就是舊的/老的ABI。
EABI中的E,表示“Embedded”,是一種新的ABI。
EABI有時候也叫做GNU EABI。
OABI和EABI都是專門針對ARM的CPU來說的。
3。EABI的好處 / 爲何要用EABI
A。支持軟件浮點和硬件實現浮點功能混用
B。系統調用的效率更高
C。後今後的工具更兼容
D。軟件浮點的情況下,EABI的軟件浮點的效率要比OABI高很多。
4。OABI和EABI的區別
兩種ABI在如下方面有區別:
A。調用規則(包括參數如何傳遞及如何獲得返回值)
B。系統調用的數目以及應用程序應該如何去做系統調用
C。目標文件的二進制格式,程序庫等
D。結構體中的 填充(padding/packing)和對齊。
E。
OABI:
* ABI flags passed to binutils: -mabi=apcs-gnu -mfpu=fpa
* gcc -dumpmachine: arm-unknown-linux
* objdump -x for compiled binary:
private flags = 2: [APCS-32] [FPA float format] [has entry point]* "file" on compiled Debian binary:
ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), for GNU/Linux 2.2.0, stripped* "readelf -h | grep Flags""
Flags: 0x0EABI:
* ABI flags passed by gcc to binutils: -mabi=aapcs-linux -mfloat-abi=soft -meabi=4
* gcc -dumpmachine: arm-unknown-linux-gnueabi
* objdump -x for compiled binary:
private flags = 4000002: [Version4 EABI] [has entry point]* "file" on compiled binary (under Debian):
ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.4.17, dynamically linked (uses shared libs), for GNU/Linux 2.4.17, stripped* "readelf -h | grep Flags""
Flags: 0x4000002, has entry point, Version4 EABI
[參考]
http://www.arm9.net/download-arm-linux-gcc-4.3.2.asp
1。ABI/EABI/OABI
http://blog.csdn.net/hongjiujing/archive/2008/07/21/2686556.aspx2。Why ARM's EABI Matters
http://www.chineselinuxuniversity.net/articles/1255.shtml
3.[PDF] The new arm ABI (EABI) and Debian armel port
下載此文件 (29 個頁面)
4ArmEabiPort http://wiki.debian.org/ArmEabiPort