2009年9月16日水曜日

昨日の Debian

昨日の Debian 環境構築の詳報です。つーか、備忘録です。

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 件のコメント:

コメントを投稿

フォロワー