久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4398|回復: 0
打印 上一主題 下一主題
收起左側

系統啟動掛載根文件系統時Kernel panic

[復制鏈接]
跳轉到指定樓層
樓主
ID:34030 發表于 2012-2-4 17:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
能出現讓人激動的的控制臺,那么系統移植已經接近完成;但是不少人在最后一步出現問題。 要點如下: 1. 在正確的位置燒寫正確格式的文件系統映象: 2. 內核支持這種文件系統格式 3. 文件系統的內容要完備 上面說得簡單,一個個介紹。 1. 在正確的位置燒寫正確的文件系統映象: (a). 正確的位置 嵌入式開發中,常通過bootloader燒寫文件系統映象,假設寫在flash的地址A處。 內核啟動時,顯然要從地址A處讀取文件系統,內核是怎么知道的呢?通過命令行參數,比如“root=/dev/mtdblock2 ”。/dev/mtdblock2 又是怎么和地址A對應上的呢?內核將flash劃分為 幾個分區,這是在代碼中固定的。/dev/mtdblock2是第3個分區,它的開始地址必須是A。 在內核啟動時,可以看到這些分區的開始地址、結束地址,比如內核啟動時會有類似下面的信息: Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit": 0x00000000-0x00030000 : "bootloader" 0x00050000-0x00250000 : "kernel" 0x00250000-0x03ffc000 : "root" 對于上面的內核信息,/dev/mtdblock2對應root分區,開始地址為0x00250000,使用bootloader寫文件系統映象時,燒寫的地址必須是0x00250000 所以,要保證3點:① bootloader燒到地址A,② 地址A是內核某個分區的開始地址,③ 命令行參數“root=/dev/mtdblockXXX ”是這個分區 (b). 正確格式的文件系統映象 不同的bootloader支持的燒寫的文件系統映象格式不同、使用的燒寫命令也可能不同,請注意這點。 另外,馬大哈們制作文件系統映象時,使用的工具也不要弄錯了。 最后,請保證這個文件系統映象是“真的燒寫了”,因為如果flash只是擦除而沒有燒寫,它也是“正確的、可以掛接的文件系統”──有人碰到這個問題,我和他答非所問地折騰了很久。 2. 內核支持這種文件系統格式 配置內核時選上要支持的文件系統格式 1、2這兩個問題如果不能保證,內核啟動時會出現類似如下錯誤: VFS: Cannot open root device "mtdblock2" or unknown-block(2,0) Please append a correct "root=" boot option 如果1、2能保證,就可以掛接上文件系統,出現類似下面的字樣時,革命已經成功了80%: VFS: Mounted root (cramfs filesystem) readonly. Freeing init memory: 116K 3. 文件系統的內容要完備 掛接文件系統后,內核就會讀取、執行文件系統中的某個文件,通過它來啟動應用程序。這個文件要么通過命令行參數“init=xxxx”來指定,要么取默認的文件(下面說明)。 一般制作文件系統映象時,都是在一個目錄(假設目錄名為rootfs)下放好各種東西:bin/,sbin/,lib/等目錄,etc/fstab等文件,然后將這個目錄制作為文件系統映象。 可以想象,如果這個目錄中的東西不對、不全,即使制作出了文件系統映象,也只是能識別出來,掛接上去;但是啟動不了──所謂啟動,不就是執行文件系統中的程序嘛? 這時會有類似以下的錯誤: Failed to execute /linuxrc. Attempting defaults... Kernel panic - not syncing: No init found. Try passing init= option to kernel. 它說得很明顯,"Failed to execute /linuxrc"──執行/linuxrc失敗: 它為什么要執行/linuxrc,還不是因為你在命令行中加入了“init=/linuxrc”這個參數。 它為什么會失敗?原因有二: 一、你制作文件系統映象時,rootfs目錄下有linuxrc這個文件嗎? 二、rootfs目錄的linuxrc文件是正確的嗎? 請好好確定這兩點,大多數是沒有linuxrc文件──linuxrc是busybox自動生成的,只要配置好就可以。 如果有linuxrc,那么就是它無法執行了(解決方法在下面)。 不用linuxrc行不行?當然行!看看內核文件init/main.c,有如下字樣: run_init_process("/sbin/init"); run_init_process("/etc/init"); run_init_process("/bin/init"); run_init_process("/bin/sh"); panic("No init found. Try passing init= option to kernel."); 就是說,它會依次嘗試執行/sbin/init、/etc/init、/bin/init、/bin/sh這些文件,都失敗后才打印出錯信息"No init found. Try passing init= option to kernel."。 所以,出現這個出錯信息時,就表明了沒有或是無法執行這些文件:命令行參數“init=xxxx”來指定的xxx文件、/sbin/init、/etc/init、/bin/init、/bin/sh。 一、請檢查你的rootfs目錄,看看這點些文件是否存在 二、使用file命令看看它們是什么文件類型,是否可執行。 使用busybox時,這些文件是到/bin/busybox文件的鏈接,那就看看busybox的文件類型,可以使用下面的命令: $ file linuxrc linuxrc: symbolic link to `bin/busybox' $ file bin/busybox bin/busybox: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.4.3, dynamically linked (uses shared libs), stripped 注意了:如果bin/busybox 是一個動態鏈接的文件,還要把它用到的庫復制到rootfs中。唉,越說越復雜了。這些庫在交叉編譯工具的相應目錄下,如果不知道,查google,否則再發帖。 最后一點,文件系統中各種配置文件、dev目錄也要正確。出現問題時再在這個帖子中說吧。這樣寫下去真是沒完沒了。 回到這個帖子,它的內核打印信息為: VFS: Mounted root (cramfs filesystem) readonly. Freeing init memory: 116K Failed to execute /linuxrc. Attempting defaults... Kernel panic - not syncing: No init found. Try passing init= option to kernel. 說明文件系統掛接成功(VFS: Mounted root (cramfs filesystem) readonly.); 還說明/linuxrc不存在或者不可執行(Failed to execute /linuxrc. Attempting defaults...); 但是樓主的意思是linuxrc已經有了,內容為: #!/bin/sh echo "mount /etc as ramfs" /bin/mount -n -t ramfs ramfs /etc /bin/cp -a /mnt/etc/* /etc echo "re-create the /etc/mtab entries" # re-create the /etc/mtab entries /bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/3 / /bin/mount -f -t ramfs ramfs /etc exec /sbin/init 它是一個腳本,它的執行依賴于/bin/sh,問題轉為:/bin/sh是否存在?是否可以執行? 用file命令看看它的類型、是否需要動態庫。
[此貼子已經被作者于2012-2-4 19:21:35編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲人成在线播放 | 91豆花视频 | 一级毛片在线视频 | 视频一区二区三区中文字幕 | 久久久夜 | 黄色片大全在线观看 | 成人精品一区二区三区 | 精品国产欧美在线 | 婷婷在线视频 | 国产免费一区二区三区 | 美国一级片在线观看 | 久久精品网 | 成人国产在线观看 | 青青草中文字幕 | 日韩二区三区 | 亚洲视频三 | 色姑娘综合网 | 免费午夜电影 | 日韩一区二区免费视频 | 欧美激情 亚洲 | 亚洲区一区二区 | 国产日韩精品视频 | a级片在线观看 | 狠狠色综合网站久久久久久久 | 欧美xxxx色视频在线观看免费 | www.久久.com| 欧美日韩一二三区 | 午夜免费视频观看 | 日韩精品一区二区三区视频播放 | 啪一啪| 久久草在线视频 | 国产午夜精品福利 | 国产高清视频 | 国产精品久久av | 成人永久免费视频 | 亚洲国产一区二区视频 | 视频1区2区 | 日韩免费av | 久久久久久高潮国产精品视 | 在线永久看片免费的视频 | 国产一区二区三区亚洲 |