IPv6 support in debian installer

To: debian-boot@lists.debian.org

Subject: IPv6 support in debian installer

From: Matthew Palmer <mpalmer@debian.org>

Date: Fri, 21 Jan 2011 14:59:43 +1100

Message-id: <[🔎] 20110121035943.GK3846@hezmatt.org>

[tl;dr: Install Debian over an IPv6-only network. Please test.] Hi all, 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[1] 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). Caveats ------- 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 that one. 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, patches welcome. Reporting problems ------------------ 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 wget http://ftp.debian.org/debian/pool/main/b/busybox/busybox_1.17.1.orig.tar.bz2 cd busybox debian/rules orig 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 that: git clone git://git.debian.org/d-i/netcfg.git cd netcfg 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 cd debian-installer 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. Enjoy! - Matt [1] 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.