SD カードイメージの作成
QEMU 環境で仮想ディスクイメージにインストールした Debian ARM を、SD カードに焼きました。qemu-system-arm が生成した img ファイルを、loop device に接続してマウントし、中身を tar.bz2 に吐き出します。問題は、img ファイルに FAT32 と ext3 のパーティションが入っているのに、loop デバイス自身はパーティションを認識する能力がないらしいことです。しようがないので、fdisk をかけてパーティションのオフセットを調べて、それを使ってマウントしました。例えば、次のような感じです。
$ fdisk 1gb.img Command (m for help): u Changing display/entry units to sectors Command (m for help): p Disk 1gb.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders, total 0 sectors Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System 1gb.img1 63 112454 56196 b W95 FAT32 1gb.img2 * 112455 1783214 835380 83 Linux 1gb.img3 1783215 2088449 152617+ 5 Extended 1gb.img5 1799280 2088449 144585 82 Linux swap / Solaris Command (m for help): q $ bc 512*112455 57576960 ^D $ sudo losetup -o 57576960 /dev/loop0 1gb.img $ sudo mount -o ro /dev/loop0 /mnt $ ls /mnt bin dev home lost+found mnt proc sbin srv tmp var boot etc lib media opt root selinux sys usr
ログイン画面が出ない
uImage を FAT32 に、ファイルシステムの内容を ext3 に展開し、U-Boot も設定して BeagleBoard を起動してみました。おおお、無事に起動するー。途中で、ext3 のタイムスタンプが未来になっているとか言ってリブートがかかりましたが、2回目は OK でした。これはまた、別途検討。
もっと大きな問題は、なんとブートが成功してもシリアルポートに login: が出ません! というか、tty のエコーバックが全然出ない。でも、heartbeat しています。結論からいうと、/etc/inittab や securetty の設定を忘れてました。ドキュメントにちゃんと書いてあるのに、無視してました。そのため、思わず /etc/init.d/rc をデバッグしそうになったり、update_rc.d というコマンドを覚えたりしました。後者はこんなふうに使うそうです。
# update_rc.d -f cron removeこれをやっても、/etc/init.d/cron は消えません。再度有効にするには、
# update_rc.d cron defaults 89 11とかするようです。(記憶で書いているので、間違っていたらごめんなさい。) 詳細は、この辺が詳しいです。(← マニュアル見ろよ! > 俺)
もう一つ、mount の remount オプションを覚えました。この辺、うろ覚えでいつも混乱します。NetBSD だと、mount -uw / とかするんだよな、確か。Linux では、mount -o remount,rw / とかするみたい。昨日、/etc/init.d/rc をいじっていたら、ルートファイルシステムが readonly になってしまい、rc を戻せなくて焦ったのでした。(← 生兵法は怪我のもと)
あ、そうそう。シングルユーザーモードにする方法も思い出しました。カーネルに single というキーワードを渡せば良いみたいです。U-Boot だと、bootargs に single って追加してあげればカーネルに伝わります。
解決できていない問題
もう一つが、昨日(夜中に)書いた musb_hdrc の件です。これは重そうですが、解決しないとネットに繋がらないので、何もできません。。。昨日夜中までゴリゴリしていて睡眠不足なので、これは明日以降、挑戦してみます。
0 件のコメント:
コメントを投稿