Debian woodyのインストーラがDHCP後に止まった

Debian woodyとGNU/Hurdをlibvirtで動かして、古いVMと古いパッケージ集合に付き合った話。

Debian woody を仮想マシンで動かしたくなりました。2002年の Debian です。最初に考えたのは、何で起動するかでした。

systemd-vmspawn も候補にはありました。でも、これは今の systemd や mkosi の空気に近い道具です。2002年のインストーラを動かすなら、もう少し古い PC っぽい形に寄せたほうがよさそうでした。結局 libvirt にしました。

CPU は pentium、ディスクと CD-ROM は IDE、NIC は rtl8139、ビデオは cirrus、ACPI と APIC は off、メモリは 256 MiB。こういう指定をしていると、エミュレータというより時代設定をしている感じがあります。

ISO は Debian の archive から取りました。

debian-30r6-i386-binary-1.iso
MD5: 3735a23e34c8213581579ebf816457e9

インストーラは起動しました。cfdisk は素っ気ないし、mke2fs は一文字ずつゆっくり進む。そのへんは楽しいです。楽しいんだけど、途中で灰色の please wait が出たまま動かなくなる。

画面だけ見ていても分かりません。そこでホスト側から見ます。

sudo virsh -c qemu:///system dominfo debian-woody
sudo virsh -c qemu:///system domblklist debian-woody
sudo virsh -c qemu:///system screenshot debian-woody /tmp/debian-woody-net-hang.png
sudo virsh -c qemu:///system domstats debian-woody --block
sudo tail -n 200 /var/log/libvirt/qemu/debian-woody.log

一度は CD-ROM が外れた扱いになっていました。

Boot failed: Could not read from CDROM (code 0003)

これは virsh change-media で入れ直しました。問題は別にもありました。DHCP/BOOTP が成功したあと、continue を押すと進まない。ホスト側で見ると CPU 時間は増えているのに、ディスクのカウンタは動いていない。電源が落ちたわけではなく、インストーラのどこかで回っている。

最後は NIC を外しました。

sudo virsh -c qemu:///system destroy debian-woody || true
sudo virsh -c qemu:///system detach-interface debian-woody \
  --type network --mac <VM_MAC> --config || true
sudo virsh -c qemu:///system start debian-woody

ネットワークが成功しているのに、ネットワークを外すと先に進む。少なくともこの構成では、成功したネットワーク設定が次の詰まりになっていました。

待っている間に、Debian GNU/Hurd も動かすことにしました。

今思いついたんだけど、Debian GNU/Hurd動かしませんか

Hurd は netinst ISO ではなく、Debian ports の preinstalled image を使いました。起動はしました。SSH もできました。

GNU debian 0.9 GNU-Mach 1.8+git20260224-up-486/Hurd-0.9 i686-AT386
This is the GNU Hurd. Welcome.

ここまでは思ったよりちゃんとしています。けれど、使える作業場になるかというと別です。fish を入れようとすると、fishfish-common (= 2.2.0-3) を要求するのに、fish-common の候補は 4.2.1-3.2 でした。libncurses5libtinfo5 の候補もない。bun はインストールスクリプト自体は走りますが、落ちてきた Linux バイナリは実行できません。

cannot execute binary file: 実行形式エラー

npm も依存で止まりました。

npm : depends: nodejs:any but none of the choices are installable

Linux バイナリが動かないのは分かります。そこはしょうがない。でも、そうではないところでパッケージの整合性が崩れていると、もう少し頑張ってほしい気持ちになります。fish が入らない時点で、自分の作業場にはなりません。

最後は、これを手伝うべきかという話になりました。

Hurdの開発手伝っちゃう?

果たしてその労力は報われるのでしょうか

Hurd は面白いです。Haiku も面白い。古い Debian を VM に閉じ込めるのも面白い。ただ、自分が日常で使っていて、直すとすぐ返ってくるものは openSUSE のほうです。OSS は好きだけど、別に FSF 信者というわけでもない。

まあ、実利を考えれば普通に openSUSE やってろ?