山本浩
之
![]() |
いきなり実機で Hurd を使いたい、 と言う人は稀でしょうし、 Hurd のインストーラ自身も問題を抱えているらしく、 私も実 機への直接のインストールは成功していません。 しかし仮想ディスク環境でなら、 気軽で、 簡単に使えます。 今日は Debian GNU/Hurd の VMware 上での利用を紹介をしてみます。
まず、 インストールの様子を見てみましょう。 インストーラは、 かなり昔の debian-installer を彷彿とさせ、 懐かしむ人もい るでしょう。 実際、 woody の d-i をベースとしており、 最近の d-i (lenny beta2 など) へは付いて行けてはいま せん。
Hurd のインストーラ CD は Linux カーネルで動いており、 その中の /target として Hurd 環境を展開していきます。 残念 ながら woody は kernel 2.2.20 だったため、 128 GB 以上のディスク (Big Drive) への対応はされていません。 また、 私 が試した限りですが、 30 GB より大きなパーティションには正常にインストールできないようです。 実際、 40 GB と 60 GB のディスクイメージにインストールした場合、 インストールは終わったように見えます が、 40 GB の時は Hurd がシングルユーザでもブートせず、 60 GB の時はなぜかシングルユーザによる最 初のブートはできましたが、 ファイルのパーミッションが ?——— となっていてアクセスできない状態で した。
では実際に 30 GB のディスクイメージにインストールしてみましょう。 まずインストール CD イメージから ブートし、 キーボードの選択をしたら、 パーティションを決めます。 この時点ではカーネルは Linux のま まですので、 hda1 とか hda5 とかの見慣れたパーティション指定ができます。 この時、 swap を必ず作成 して下さい。 swap を作ることを公式にも推奨されていますが、 私が swap を作らずにインストールしたと ころ、 まったくブートしませんでした。 ここでは swap を取った残りを全て / としときます。 Hurd の対応 フォーマットは、 残念ながらいまだに ext2 のみです。 パーティションを決めたら、 フォーマットします。 swap は Linux と全く同じですが、 / は mke2fs を実行する際に -o hurd を引数として与えることだけ異なってい ます。 フォーマットしたら base.tgz の展開です。 このあたりは昔の d-i を経験したかたならお手のもので しょう。
た だ 、 Hurd の d-i としての問題点は、 grub を直接インストールできないことにあります。 Hurd に対応した ブートローダは、 今のところ、 grub だけなのですが、 インストール CD には grub を入れるメニューがあ りません。 これは既に Linux を入れていて grub をインストール済みなかたが多いためなのか、 woody の d-i の問題点なのかは知りません。 そこで、 grub の FD あたりを用意しておき、 別途 grub をインストール しなくてはなりません。 最近は FDD を持たないマシンが増えており、 このあたりは改善すべき点だと思い ます。
grub インストールし、 menu.lst には
default=0
timeout=10 title Debian GNU/Hurd root (hd0,0) kernel (hd0,0)/boot/gnumach.gz root=device:hd0s1 module (hd0,0)/hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \ --host-priv-port=${host-port} --device-master-port=${device-port} \ --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume) module (hd0,0)/lib/ld.so.1 /hurd/exec $(exec-task=task-create) boot title Debian GNU/Hurd (single user) root (hd0,0) kernel (hd0,0)/boot/gnumach.gz root=device:hd0s1 -s module (hd0,0)/hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \ --host-priv-port=${host-port} --device-master-port=${device-port} \ --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume) module (hd0,0)/lib/ld.so.1 /hurd/exec $(exec-task=task-create) boot |
と書きます。 (hd0,0)/boot/gnumach.gz がカーネルで、 hd0s1 とは Linux の hda1 (プライマリマスタ、 第一パーティショ ン) のことです。 Hurd の / には /hurd と言うディレクトリが存在しており、 この中に Hurd 特有のモジュールなどが存在し ています。 ここでは (hd0,0)/hurd/ext2fs.static と言う ext2 フォーマットを読み込むモジュールが指定されてい ます。
ここまで行けば、 インストーラを再起動し、 まずシングルユーザで Hurd をブートし、
# ./native-install
|
で /native-install スクリプトを実行、 再度シングルユーザで再起動、 再度 /native-install スクリプトを実行で終わり です。
ここまでの工程が面倒なかたには、 debian-hurd-k16-qemu.img.tar.gz と言う qemu 用の素晴らしいイメージが配布されて いますので、 これが利用できます。 特に FDD が無くて grub のインストールが面倒なかたにお薦めです。
$ wget http://ftp.debian-ports.org/debian-cd/K16/debian-hurd-k16-qemu.img.tar.gz
$ tar zxvf debian-hurd-k16-qemu.img.tar.gz $ qemu-img convert debian-hurd-k16-qemu.img -O vmdk |
さて、 インストールも終わったところで、 実際にブートしてみましょう。 普通にブートすれば
login >
|
とプロンプトが出てきますので、 ’login root’ でログインします。 最初はパスワードはかかっていません。
まずはとにかく、 ネットワークに繋ぐために設定します。 Hurd には /sbin/ifconfig などが無く、 settrans コマンドで設定し ます。
# settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.3 -g 192.168.1.1 -m 255.255.255.0
|
あとは Linux と同様に、 /etc/resolv.conf に
nameserver 192.168.1.1
|
とか書いてやるだけでネットワークに繋がります。
Debian GNU/Hurd のユーザランドは Debian そのもので、 ほとんどは Linux の知識で間に合います。 ただし、 まだディベ ロッパやメンテナなどに Hurd が浸透しておらず、 FTBFS (Failure To Build From Source) が多数あり、 多くのパッケージ が使えない状態です。 特に多いエラーは、 PATH_MAX (MAXPATHLEN) の未定義エラーです。 Hurd には Linux などと 違い、 パスの最大文字数を制限すると言う概念が無いらしく、 文字どおり未定義となっております。 ディベ ロッパやメンテナの人には、 自分のパッケージが Hurd でビルドできるか、 是非試していただきたいもの です。
Let’s enjoy Hurd!
____________________________________________________
月例Debian GNU/Linux SuperH port
岩松信洋 ____________________________________________________
|
__
月例Debian GNU/Linux eeepc port
岩松信洋 ____________________________________________________________________________________________
|
__________________________________________________________________________________________________
月例Debian GNU/Hurd
山本浩之 ____________________________________________________
|
__
月例Nexenta Operating System
上川純一 ____________________________________________________________________________________________
|
Debian 勉強会資料
2008 年6 月21 日 初版第1 刷発行
東 京 エ リ ア
Debian 勉強会 (編集・印刷・発行)
__________________________