2008/02/21

Ubuntu 7.10からALIXでブート可能なCFカードを作成する

voyageはデフォルトで/をroでマウントしたり、実用の観点からは非常に良いのですが、そのためカスタマイズが少し難しく感じたので、voyageを参考にALIX用に素のdebianが動くCFカードを作成してみました。

メインマシンのubuntu 7.10にUSBのカードリーダーを接続し、CFカードを入れ、dmesgコマンドの出力から/dev/sdgとして認識されているところまで確認します。
とりあえずext2fsにフォーマットします。

$ sudo /sbin/fdisk /dev/sdg
コマンド (m でヘルプ): p

Disk /dev/sdg: 519 MB, 519708672 bytes
16 heads, 62 sectors/track, 1023 cylinders
Units = シリンダ数 of 992 * 512 = 507904 bytes
Disk identifier: 0x18468ac9

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdg1               1        1023      507377   83  Linux
$ sudo /sbin/mke2fs /dev/sdg1
$ sudo /sbin/tune2fs -c 0 -i 0 /dev/sdg1
次にdebファイルを展開します。ここでは作成した/dev/sdg1を/mnt/cfにマウントしておきます。
$ sudo mount /dev/sdg1 /mnt/cf
$ sudo debootstrap --arch i386 etch /mnt/cf
i386を指定しているのはメインマシンがx86_64だからです。ここで画面がずっとスクロールして、そこそこの時間が掛ります。次にブートローダーをMBRに導入してしまいます。
$ sudo grub-install --root-directory=/mnt/cf /dev/sdg 
ここまでで、そこそこ動くようにはなっていますが、なにしろ/mnt/cf/boot以下にカーネルイメージがありません。そこでカーネル含めいろいろapt-getしていく事にします。chrootを使って普通にapt-getします。
$ sudo chroot /mnt/cf /bin/bash
# apt-get install linux-image-2.6.18-6-486
"Do you want to abort now?"には"No"を選択し、これ以外はデフォルトの選択肢をそのままリターンキーを押して選択していきます。grubが動くように/boot/grub/menu.lstファイルを作成します。
# cat /boot/grub/menu.lst
serial --speed=38400
terminal serial
##
default         0
timeout         10
##
title           debian etch
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1 console=ttyS0,38400n8
initrd          /boot/initrd.img-2.6.18-6-486
savedefault
さらに/etc/inittabでtty[1-6]でのgettyをコメントアウトし、シリアルでgettyが動くようにttyS0を有効にします。
# cat /etc/inittab
...
##1:2345:respawn:/sbin/getty 38400 tty1
##2:23:respawn:/sbin/getty 38400 tty2
##3:23:respawn:/sbin/getty 38400 tty3
##4:23:respawn:/sbin/getty 38400 tty4
##5:23:respawn:/sbin/getty 38400 tty5
##6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100
...
シリアルで接続する際は通信レートが合わないと、画面がグダグダになってしまうので"38400"に修正します。これは原因がわからずに迷ってしまう可能性が高いところなので、TeraTermなどの端末の表示がおかしくなった場合には気をつけてください。 あとは/etc/fstabファイルです。
# cat /etc/fstab
/dev/hda1 / ext2 defaults 0 0
proc /proc proc defaults 0 0
とりあえず必要なものは後からapt-getする事にすれば、これで稼動するはずです。 まだ/etc/network/interfaceなどを準備する必要がありますが、これはALIX側でシリアル経由で行なっていきます。

0 件のコメント: