[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]
## Hurd Debian-Installer
My [proposal](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig)
to work on porting d-i on Hurd
as a [Google Summer of Code](http://code.google.com/soc/) student
has been accepted by the Debian project.
I will be keeping track of my progress on this page.
### Links
* [Modified packages](http://jk.fr.eu.org/debian/unstable)
* [Latest images](http://jk.fr.eu.org/debian/hurd-installer)
* [Debian bugs](http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=jk@jk.fr.eu.org&tag=gsoc2010)
* [BusyBox port](http://lists.debian.org/debian-bsd/2010/05/msg00048.html)
* [GNU Mach initrd](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00047.html)
### Roadmap
* **mach**: initrd support
* (./) preliminary patch posted and self-built (2010-06-12)
* adjustments will be needed (postponed)
* consider the alternatives discussed on bug-hurd (postponed)
* **glibc**: fix `mkdir("/")` which returned `EINVAL`
* (./) eglibc 2.11.2-1 includes a quick fix by youpi (2010-06-15)
* (./) more complete patch posted to bug-hurd,
since other calls return incorrect errors under some circumstances
(2010-06-16)
* more work on it will be needed to make it fix the whole thing
(postponed)
* (./) **partman** (2010-06-23)
* (./) add hurd-i386 to
`partman-partitioning/lib/disk-label.sh`
(2010-06-16, commited by youpi on 2010-06-23)
* (./) short-circuit
`partman-basicfilesystems/init.d/kernelmodules_basicfilesystems`
(2010-06-16)
* (./) partman-auto recipes:
make the default filesystem os-dependent
when it has not been preseeded (ie. the *seen* flag is clear)
* (./) force 4k blocks and 128 bytes inodes
* (./) submit patches to bugs.debian.org
([[!debbug 586870]] and [[!debbug 586871]])
* (./) rebuild with responsible version numbers and upload to my repository
* (./) **libparted** (2010-06-23)
* (./) fix device paths ([[!debbug 586696]])
* (./) fix crash on exit for part:* stores ([[!debbug 586682]])
* **hurd-udeb** (2010-06-23)
* (./) rebuild with the hack suggested by youpi for qemu network configuration
* (./) fix mount to accept `-o defaults`
* cleanup, ask youpi to commit
* reloading the partition table (2010-06-25)
* User-space part stores
* (./) hurd-udeb now uses `part:N:device:X` for partition devices
(2010-06-23)
* (./) it also provides /lib/partman/commit.d/??hurd\_reloadpart,
which basically does `settrans -ag /dev/[hs]d*`.
(2010-06-24)
* Kernel-based partition devices
* (./) Mach's drivers from Linux support reloading partitions.
With help from youpi this has been made available through a
device\_set\_status() call.
* (./) make libparted use it
* Reminder:
I should file a bug against libparted with the patch sometime.
* (./) The `/servers/exec` issue (2010-06-26)
* Due to /servers being inexistant,
the bootstrap ext2fs could not register the initial exec server,
meaning that non-bootstrap filesystems used a different one
(started from the passive translator),
which for some reason died on shell scripts, making them stall.
* Adding the `/servers` directory to hurd-udeb fixed it,
as well as the /hurd/proc issue
(failed to be run by init the first time around).
* Reminder: report the non-bootstrap exec servers failure on scripts.
* (./) **base-installer**: (2010-06-26)
* Work around non-existant /proc/mounts.
* Firmlink /servers into /target after debootstrap
to make the network available.
* (./) **grub-installer**
* (./) add hurd support (2010-06-27)
* /!\ grub-legacy still needs to be tested
* submit changes as a Debian bug
**Milestone (2010-06-28):
installer kindof works, with documented manual intervention required**
* (./) Set up a Debian mirror with modified packages for installation
* the [mirror](http://jk.fr.eu.org/debian/hurd-install/mirror)
is now up and running (2010-07-06)
* hacked the image build script to include its public key in
debian-archive-keyring at image build time (2010-07-08)
* (./) Sort out the situation with dev node creation (2010-07-07):
* Devices and servers used to be set up by debootstrap;
the hurd package would add some missing nodes.
* New strategy implemented in hurd and debootstrap:
* debootstrap uses active firmlinks into the host system
for the target system's /dev and /servers.
* the hurd package now include a `setup-translators` script,
which is used to register the passive translators by the installer's
`/libexec/runsystem` and hurd's postinst script.
* **busybox**: submit upstream and to [[!debbug 323670]]
(waiting for upstream to review)
* (./) I have mentioned my work on the upstream mailing list,
* (./) merge the recent changes from upstream,
notably to the build system.
(2010-06-23)
* (./) ask upstream for review and merge
(2010-06-25)
* (./) sent as patches as requested
(2010-07-08)
* backport any additional changes onto the debian branch
* hijack [[!debbug 323670]] and submit my patches
* **aptitude**:
* Currently broken on hurd-i386:
[[!debpkg gtest]] fails to build because of a segfault in one of the test
cases, [[!debpkg google-mock]] and hence [[!debpkg aptitude]] are missing
it as a build-dep.
The older package is not installable anymore because it's linked against
an older version of libept, which has been removed.
* (./) I bypassed the tests and uploaded the 3 packages to my repository
(2010-07-08)
* The segfault will have to be sorted out. (postponed)
* (./) "Fix" the swap situation. (2010-07-08)
* The device_close() libstore patch
had the unfortunate effect of making swapon fail,
since the device it activates has to be kept open.
* add options for MAKEDEV and setup-devices
to use the libparted stores
* disable youpi's patch
* make partman-basicfilesystems re-create the device
as a kernel partition, which is needed for swapon
* **d-i/installer/build**: (expected 2010-06-28)
* publish the patch I use
* sort out the changes suitable for inclusion
and ask youpi and/or debian-boot@l.d.o to commit them
* **partman**: further adjustments
* hide irrelevant mount options? (sync, relatime)
* **busybox**: port
* fix stty/stat/ipcs on kFreeBSD,
* generally port more stuff,
* *ip* is needed for network configuration,
* *mount*, *swaponoff* can be from hurd-udeb for now,
though the kFreeBSD people will need them
* tweak the hurd debian package to handle
what native-install used to be required for
(debootstrap does it)
* netcfg: make it work on Hurd somehow (port `busybox ip`?)
* Apparently netcfg-static already has Hurd support,
though we may want to make it use fsysopts instead of settrans.
* What I *will* have to do is to teach ethdetect
to use 'devprobe' on a number for network device prefixes
to determine the list (eth%d, wl%d, anything else?).
* busybox udhcpc will eventually have to be ported.
**Milestone (expected 2010-07-05):
installer works but it's still somewhat ugly and broken**
* call for testing and fix the bugs
* improve the [initrd situation](FIXME: link to bug-hurd post):
ajust the ramdisk support in Mach,
use tmpfs if possible,
possibly add `module -nounzip` to grub2.
* mklibs{,-copy}:
test library reduction,
make it copy the ld.so -> ld.so.1 symlink.
* hurd console fonts
* better DHCP support during and after installation
**Milestone (expected 2010-07-19):
it works great and it's beautiful**
* test, fix, document
* support more types of installation images
* give a shot at the graphical installer if time permits
* integrate wireless drivers with netcfg
* see how [[zhengda]]'s work on DDE could be integrated
* etc..
### Mostly done
#### Week 1 (2010-05-24)
* genext2fs: patches submitted, [[!debbug 562999]]
which add support for all block sizes and choosing them at runtime.
* busybox: started porting the upstream and Debian package to Hurd and FreeBSD
* rebuilding hurd-udeb from the pkg-hurd version
and adding a ld.so link to the initrd
fixes the exec translator crashing on startup.
(BTW would there be a mean to detect this from the libdiskfs bootstrap code
and report it ?)
#### Week 2 (2010-05-31 to 2010-06-06)
* *busybox*: patches [posted](http://lists.debian.org/debian-bsd/2010/05/msg00048.html).
* *libdebian-installer4*: [[!debbug 584538]]
* started working on mach initrd support
* the installation images could boot into the main-menu
with the following changes:
* rebuild hurd-udeb from with the latest pkg-hurd patches
* use busybox from my osports-debian branch (see link above)
* tweak the d-i image build scripts
* the symlink /lib/ld.so -> ld.so.1 needs to be created somehow
(youpi mentionned it being the job of libc0.3-udeb I think)
* fix the poll() issue in libdebian-installer
(patch to be submitted soon),
also there is some hurd doxygen short-circuiting stuff
there which does not apply any more and prevents is to build.
* feed the initrd as a hard drive in qemu
(with some more space added to avoid it from becoming full)