A few days ago I decided to try to help the Hurd people to get
their changes into sysvinit, to allow them to use the normal sysvinit
boot system instead of their old one. This follow up on the
great
Google Summer of Code work done last summer by Justus Winter to
get Debian on Hurd working more like Debian on Linux. To get started,
I downloaded a prebuilt hard disk image from
http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz,
and started it using virt-manager.
The first think I had to do after logging in (root without any
password) was to get the network operational. I followed
the
instructions on the Debian GNU/Hurd ports page and ran these
commands as root to get the machine to accept a IP address from the
kvm internal DHCP server:
settrans -fgap /dev/netdde /hurd/netdde
kill $(ps -ef|awk '/[p]finet/ { print $2}')
kill $(ps -ef|awk '/[d]evnode/ { print $2}')
dhclient /dev/eth0
After this, the machine had internet connectivity, and I could
upgrade it and install the sysvinit packages from experimental and
enable it as the default boot system in Hurd.
But before I did that, I set a password on the root user, as ssh is
running on the machine it for ssh login to work a password need to be
set. Also, note that a bug somewhere in openssh on Hurd block
compression from working. Remember to turn that off on the client
side.
Run these commands as root to upgrade and test the new sysvinit
stuff:
cat > /etc/apt/sources.list.d/experimental.list <<EOF
deb http://http.debian.net/debian/ experimental main
EOF
apt-get update
apt-get dist-upgrade
apt-get install -t experimental initscripts sysv-rc sysvinit \
sysvinit-core sysvinit-utils
update-alternatives --config runsystem
To reboot after switching boot system, you have to use
reboot-hurd instead of just reboot, as there is not
yet a sysvinit process able to receive the signals from the normal
'reboot' command. After switching to sysvinit as the boot system,
upgrading every package and rebooting, the network come up with DHCP
after boot as it should, and the settrans/pkill hack mentioned at the
start is no longer needed. But for some strange reason, there are no
longer any login prompt in the virtual console, so I logged in using
ssh instead.
Note that there are some race conditions in Hurd making the boot
fail some times. No idea what the cause is, but hope the Hurd porters
figure it out. At least Justus said on IRC (#debian-hurd on
irc.debian.org) that they are aware of the problem. A way to reduce
the impact is to upgrade to the Hurd packages built by Justus by
adding this repository to the machine:
cat > /etc/apt/sources.list.d/hurd-ci.list <<EOF
deb http://darnassus.sceen.net/~teythoon/hurd-ci/ sid main
EOF
At the moment the prebuilt virtual machine get some packages from
http://ftp.debian-ports.org/debian, because some of the packages in
unstable do not yet include the required patches that are lingering in
BTS. This is the completely list of "unofficial" packages installed:
# aptitude search '?narrow(?version(CURRENT),?origin(Debian Ports))'
i emacs - GNU Emacs editor (metapackage)
i gdb - GNU Debugger
i hurd-recommended - Miscellaneous translators
i isc-dhcp-client - ISC DHCP client
i isc-dhcp-common - common files used by all the isc-dhcp* packages
i libc-bin - Embedded GNU C Library: Binaries
i libc-dev-bin - Embedded GNU C Library: Development binaries
i libc0.3 - Embedded GNU C Library: Shared libraries
i A libc0.3-dbg - Embedded GNU C Library: detached debugging symbols
i libc0.3-dev - Embedded GNU C Library: Development Libraries and Hea
i multiarch-support - Transitional package to ensure multiarch compatibilit
i A x11-common - X Window System (X.Org) infrastructure
i xorg - X.Org X Window System
i A xserver-xorg - X.Org X server
i A xserver-xorg-input-all - X.Org X server -- input driver metapackage
#
All in all, testing hurd has been an interesting experience. :)
X.org did not work out of the box and I never took the time to follow
the porters instructions to fix it. This time I was interested in the
command line stuff.