2009年1月19日月曜日

FreeBSD インストール用 USB メモリの作成 #3

林檎生活100: FreeBSD インストール用 USB メモリの作成 #1で作ったやつでは,それをインストールメディアとして使うことができず,ネットワークインストール用になってしまったのでその対策.

問題点は,インストール中のメディアを選択するところで,USB メモリを選択する方法がないこと.(当然なんだけどなw)ということで,USB メモリに DOS パーティションを作成し,インストールに必要なデータはそこから取得することにする.

以下,作業手順.

1. MBR を書き込む.
# fdisk -BIv /dev/da0

2. sysinstall を起動する.
# sysinstall

3. Configure>Fdisk を実行し,パーティションを64MBの FreeBSD パーティション(パーティションタイプ:165)と残容量の FAT32X パーティション(パーティションタイプ:12)の2つに分割する.さらに,W を入力し,ブートマネージャとして None を選択し,パーティション設定を反映させる.



4. FreeBSD パーティションをブート用パーティションにする.
# bsdlabel -w -B /dev/da0s1
# newfs /dev/da0s1a
# ftp ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/7.0/7.0-RELEASE-i386-bootonly.iso
# mdconfig -a -t vnode -f 7.0-RELEASE-i386-bootonly.iso -u 0
# mount_cd9660 /dev/md0 /cdrom
# mount /dev/da0s1a /mnt
# cp -Rpv /cdrom/* /mnt
# echo 'console=comconsole' >> /mnt/boot/loader.conf(注意:シリアルコンソールでインストールする場合に限る.)
# umount /mnt
# umount /cdrom
# mdconfig -d -u 0

5. FAT32X パーティションをインストールメディア用パーティションにする.
# newfs_msdos /dev/da0s2
# ftp ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/7.0/7.0-RELEASE-i386-disc1.iso
# mdconfig -a -t vnode -f 7.0-RELEASE-i386-disc1.iso -u 0
# mount_cd9660 /dev/md0 /cdrom
# mount_msdosfs /dev/da0s2 /mnt
# cp -Rpv /cdrom/* /mnt
# umount /mnt
# umount /cdrom
# mdconfig -d -u 0

以上で完成♪もしかしたら,MBR を書き込む fdisk はいらなくて,sysinstall の fdisk でブートマネージャを Standard にするだけでもいいのかもしれない.未確認なので,試してみた方はそれで動作するか教えてください.

注意することは,起動時に接続しているシリアルコンソールの種類を聞かれるので,VT100 or compatible terminal. にあたる2を入力すること.



あとは,普通のインストールと同じ.インストールメディアは,前述の通り DOS を選択すること.

これでインストールが完了すれば,シリアルコンソールから FreeBSD を操作できる環境に♪と思ったら,そう甘くはなかった.ログインプロンプトが,シリアルコンソールに表示されないのだ.実は,loader.conf に設定しているのだけでは足りない.(ブートのときに,前半と後半があるような感覚.詳細は失念した.ブートについて調べれば,出てくる情報だと思う.)/etc/ttys を編集する必要があるのだ.

その作業手順はこちら.

1. 起動時の画面で,4を入力しシングルユーザモードに入る.



2. シェルの選択画面で enter を入力する.
Enter full pathname of shell or RETURN for /bin/sh: [enter]

3. ファイルシステムをチェックする.ファイルシステムに修復が必要なときに対話的に実行しない (-p).
# fsck -p

4. fstab に記述された (-a) UFS ファイルシステムだけ (-t ufs) をマウントする.
# mount -a -t ufs

5. /etc/ttys を vi などで,該当する行を次のように編集する.

ttyd0 "/usr/libexec/getty std.9600" dialup off secure

ttyd0 "/usr/libexec/getty std.9600" vt100 on secure

6. 再起動する.
# shutdown -r now

以上.これで,シリアルコンソールからログインできるようになる.あー,大変だった.このエントリ書いて,日曜日がなくなった気がするwww

0 件のコメント: