私は現在、buildroot
ARMデバイス用に作成されたLinuxディストリビューションに取り組んでいます。ファイルシステムはJFFS2です。私はDas U-Bootを使って起動しています。
一度正常に起動できました。初期ブートは成功し、Linuxにログインしてコマンドラインで予想される操作を実行できました。 2番目のブートでは、カーネルパニックが発生します。
初期ブート前と後のカーネルメモリを比較してみましたが、同じです。
私の結論は、初期起動中にファイルシステムの何かが変更され、カーネルパニックが発生したことです。
以下は私の始めからの関連抜粋です(開始失敗のコンテキストを提供するために追加の項目を貼り付けましたが、おそらく最後の6行だけが重要です)。
...
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver ftdi_sio
usbserial: USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver pl2303
usbserial: USB Serial support registered for pl2303
mousedev: PS/2 mouse device common for all mice
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP: cubic registered
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
atmel_nand 40000000.nand: PMECC: Too many errors
VFS: Cannot open root device "mtdblock1" or unknown-block(31,1): error -5
Please append a correct "root=" boot option; here are the available partitions:
1f00 8192 mtdblock0 (driver?)
1f01 253952 mtdblock1 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,1)
Ubootの設定
私のU-Bootはprintenv
次のとおりです。
baudrate=115200
bootargs=mem=128M console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) root=/dev/mtdblock1 rw rootfstype=jffs2
bootcmd=nand read 0x22000000 0x200000 0x300000; bootm 0x22000000
bootdelay=3
ethact=macb0
だから私の質問は、最初の起動が成功したのに、2番目の起動が失敗した理由を理解するのに役立つ人がいるかどうかです。これ見た人いますか?おそらく、同様の状況に経験がある人なら、少なくともここで何が起こっているのかを指摘することができます。
PS:必要に応じて追加情報を提供できます。重要ではない詳細を抽象化しようとしましたが、役に立つ場合はさらに追加したいと思います。
答え1
bootargsを読み取り専用に設定できます。
bootargs=mem=128M console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) root=/dev/mtdblock1 ro rootfstype=jffs2