IPv6 support in debian installer
[tl;dr: Install Debian over an IPv6-only network. Please test.]
I'd like to announce that I've managed to put together a set of changes to
netcfg (and busybox) to allow d-i to perform a complete install over the
network without any traffic flowing over IPv4.
<wait for applause... 3... 2... 1... smile and continue>
I've put up a pre-built netinst mini.iso image for i386 at
http://people.debian.org/~mpalmer/ipv6/ so people can give it a whirl, and
you can also build a d-i image yourself for other architectures or if you
make your own improvements (see below).
What this means right now
A user with an IPv6-only network can now install Debian via netinst. You
have to manually configure everything (which is approximately 2.5 times more
typing compared to IPv4), but it *can* be done. I've verified that it works
in both i386 and kfreebsd-i386.
What this doesn't mean (yet)
* The code isn't guaranteed 100% tested and working for all possible
combinations of everything (architecture, network hardware, network
layout, preseeding, whatever). It's also been quite invasive to the IPv4
static configuration code, and while I've worked hard to keep the code
clearly equivalent, and test as many code paths as I can, I can't
guarantee that I haven't made a stupid booboo somewhere that'll break
netcfg for practically everyone.
* You can't (properly) use SLAAC to configure your IPv6 network (you can
skip the gateway question, but you need to put in a static IP and that'll
get stuck into /e/n/interfaces).
* There is no DHCPv6 support *at* *all* (and, if my limited knowledge of
DHCPv6 clients is accurate, that could take a while)
These problems will all be fixed with time.
What this will (probably) never mean
That the world will transition to a fully IPv6 utopia before IPv4 free pool
exhaustion causes us to resort to communicating via smoke signals. <grin>
What you can do right now
Download the netinst mini.iso image I've prepared for testing
(http://people.debian.org/~mpalmer/ipv6/) and give it a go on your
IPv6-enabled network (you'll need to knobble your DHCP server, otherwise
that'll take precedence). Also, please test on your IPv4 networks, to
ensure that I haven't broken anything there that was working before.
If you want to test on a different architecture, or have a pathological fear
of other people's ISOs, you can build your own (see below).
There is a bug in the current version of approx (#610597) that means that
requests to IPv6 literal addresses doesn't work. Thus, you'll need to setup
DNS entries if you use approx. As an added bonus, d-i doesn't have
libnss_files, so /etc/hosts lookups don't work. You can bet that lot took
me some time to find.
On kfreebsd, SLAAC gets in the way if you're running it (netcfg errors out
trying to insert the same default gateway as the one that got
autoconfigured). You can either not specify a default gateway, specify a
different one (that could get exciting), or just ignore the error and move
on. This will be handled properly when I get SLAAC working.
Also on kfreebsd, you won't have ifupdown-configured network after you
reboot, because of some as-yet undetermined (and unreported) bug in ifupdown
(it doesn't successfully configure inet6 static addresses). Have fun with
I haven't tested the hurd at all, and my support for it's oddball world was
limited to cribbing some commands off a wiki page. If you use the hurd,
Feel free to send e-mail to the list, or me personally, reporting problems
you find. If those problem reports come with patches, that's even better.
Success reports, too, are good, because it means I'm not totally off-track.
If you use, or would like to use, SLAAC and/or DHCPv6, please let me know
what setup you use (or plan to use). I haven't got a wealth of real-world
large-scale IPv6 experience myself, so I'm working in the dark a bit in
adding support for those areas. If you tell me how your IPv6 network
autoconfigures things, there's a much better chance it'll work for you out
of the box when I finish coding it.
Please don't report IPv6-specific problems to the BTS (yet). There's no
point cluttering it up.
Building your own
You'll need to build the busybox udeb out of current git master, as the
version in the archive doesn't support IPv6 in wget. Fun.
git clone git://git.debian.org/d-i/busybox.git
sudo apt-get build-dep busybox
dpkg-buildpackage -rfakeroot -b
Then get the people/womble/ipv6 branch out of the netcfg git repo and build
git clone git://git.debian.org/d-i/netcfg.git
git checkout -b ipv6 origin/people/womble/ipv6
sudo apt-get build-dep netcfg
dpkg-buildpackage -rfakeroot -b
Checkout the installer proper:
git clone git://git.debian.org/d-i/debian-installer.git
Copy the busybox-udeb and netcfg udebs into debian-installer/build/localudebs, then
run make build_netboot in debian-installer/build (or whatever target suits
your fancy). If all goes well, you'll have yourself some installerness.
 I don't have an available amd64 work box to build things and run VMs on.
Donations of shiny new Thinkpad X series laptops gratefully appreciated.