INSTALL-binaryを斜め読みしたものに、実際の作業中に気の付いた点を注釈 しただけのものです。NetBSDのインストール程度なら軽くこなせるskillの 人を対象としています。

また私はMACHのことがイマイチ分かってません。特にMACH4.0はさっぱりです。 その辺を差し引いて参考にして下さい。

STEP 1:

grub boot floppyを作る
	dd if=grub-boot.image of=/dev/fd0 bs=512
次いでBSD FFS(fast file system)上にバイナリ配布を展開する。

※恐ろしくアッサリかかれているが、IBM-PC(互換機)でboot可能な領域を作る のはやっかいである。最近の大容量ディスクをC/H/Sでアクセスしようという BIOSが根本的に間違っているのだが、この問題を回避する為、私はFDISKせずに 「全領域を使う」にした。*BSDのSCSI probeで示される総block数をpc#に、 スワップ領域の大きさをpb#にして、残りをpa#とし、oa#=oc#=0,ob#=pa# としてdisktabを作った。C/H/S(nc#,nt#,ns#)はfakeでなく、SCSI queryで 返される値を使った。言うまでも無いが、詳しくはdisktab(5)のmanを見て。

case 1: 既にBSDが走っているシステムで始める
まっさらのDISKにdisklabelする。AパーティションはHurdが 入るように十分な容量を確保する(※1)。Bパーティションはスワップ用である。 newfsしたらAパーティションを/mnt等(※2)にmountしてHurdイメージを展開する。 これをrootで行うことと、tarにpオプションを 付けることを忘れないように。

  • ※1 下手に細かく/usrや/varといったパーティションに分けず、 HP-UXのデフォルトのように全て/(root)パーティションにする。
  • ※2 UNIX USER誌のCD-ROMに収録されているtar ballにはディレクトリ名も 含まれているので、gnu-0.0又はgnu-0.0-strippedという ディレクトリを用意してそこにmountする。pオプション付で展開する ので、symbolic linkは不可。
case 2: BSDが走っているシステムが無い場合
NetBSDのbootフロッピーを使おう。

※FreeBSDでもOKだった。要するに、4.4BSD FFS形式でdisklabel,newfsできれば よいようだ。FixItフロッピーも用意しておいた方が何かと助かるだろう。


STEP2:

Hurd領域の`boot/servers.boot'というファイルに以下のような行を記述する。
	/dev/sd0b $(add-paging-file) $(default-pager)
paging不要ならこの行をコメントアウトしても構わない。 Linuxのようにswapパーティションを初期化する必要は無い。

(STEP1でNetBSD bootフロッピーを使ったのであれば、このファイルは /mnt/boot/servers.bootにある筈)


STEP3:

(もしNetBSD bootフロッピーを使っているのであれば、`umount /mnt;halt' としてNetBSDをshutdownする)

まずgrub bootフロッピーを起動する。diskがSCSIかIDEかによってどれかの single user bootを選ぶ。

するとMachがloadされ、次いでHurdが起動するはず。こんな風に、

	Hurd server bootstrap: ufs exec init proc auth.
	Single-user bootstrap: term sh.
	bash#

STEP4:

初めて起動した時、GNUは変なメッセージを出すだろう。またpipeが働かない ことを覚えておくこと。

完全に機能するHurdにするために、

	/bin/sh /SETUP disk
とする。ここで`disk'はsd0かhd0である。この後システムをrebootする。 また立ち上がってきたら、single-userモードで起動する。

NOTE: Hurd FFSにBSD fsckをかけないこと!


STEP 5:

またフロッピーから立ち上げ、今度は"grub install"を選ぶ。PCをリセット したらフロッビーをドライブから取り出す。これでハードディスクから 起動するだろう。

single-user bootを選んでSTEP6に進む。

grubのメニューは/boot/grub/menu.lstにある。これを編集してdefault optionを変えることが出来る。

※メニューを見ると、hd0へのinstallしか無いのでSCSIな人は不安に思うかも 知れないが、SCSIしかつながっていないのであれば気にしなくて良い。hd0でも いつの間にか[:-)]SCSIにinstallされていた。


STEP 6:

●make devices

	cd /dev
	./MAKEDEV dev1 dev2 dev3 ...
デバイス名はMachが起動する時に表示するもの

●networkの設定

settrans /servers/socket/inet \
	/hurd/pfinet --interface=eth0 --address=NN.NN.NN.NN \
	--gateway=GG.GG.GG.GG --netmask=MM.MM.MM.MM
ホスト名ではなく、IPアドレスで指定すること。
/etc/resolv.confと/etc/hostsも正しく設定すること(※)
※viはまだ不安定なので、エディタにはemacsを使った方が良いだろう。


パラメータはfsysoptsで変更できる

	fsysopts /servers/socket/inet --netmask=MM.MM.MM.MM

●mount

例えば、hd0aをmountするなら(UNIXなら mount /dev/hd0a /mnt)、
	settrans /mnt /hurd/ufs /dev/rhd0a
RAWデバイスであることに注意!

その他の例
	settrans /mnt /hurd/ext2fs /dev/rhd0a			#Linux ext2fs
	settrans /mnt /hurd/ufs -r /dev/rhd0a			#read only
	settrans /mnt /hurd/nfs /remote/file/system remote.host.org	#NFS
host:fsやfs@host形式のNFSについては`/hurd/nfs --help'参照
`settrans /mnt'で取り除く。`showtrans /mnt'で今の状態を見る。
これらを自動的に行うには/etc/fstabにエントリを作らなければならない。

一時的mountには`-a'オプションを付ける。オプションの位置に注意。

	settrans -a /mnt /hurd/ufs /dev/rsd0a
showtransでは表示されない。

※/(root)がRead Only mountされたのをR/Wにしたい(UNIXの`mount -u /'相当)時は、

	fsysopts / --writable

●configuration

Enjoy!