Hi, A while back, I blogged about success in installing to an NBD device[1]. Unfortunately, that was only partial success; that is, while it works perfectly well as far as partman is concerned (and therefore also the base-installer step), beyond that things go a bit wrong:
- /usr/lib/finish-install.d has 50release-dhcp-lease and 95umount. Obviously, if /target is mounted over the network somehow (through NBD, but we might have support for installing to, say, NFS or iSCSI in the future too, which would run into the same problem), umount (and anything that wants to access anything under /target, really) is going to fail if there's no network anymore. This obviously means that whatever is between priority 50 and 95 that wants to access /target is going to fail too. I would like to fix this by moving release-dhcp-lease to priority 97, so it sits between umount and reboot. Any objections to that? If I hear none within the next few days, expect a commit to that effect near the end of the week (or sooner if I get a go-ahead :). - Once the installatoin is complete, the installer will attempt to install grub to the local hard disk. If we've installed Debian to a network target, this is Wrong(TM); we've not touched the local hard disk for the rest of the installation, so I believe the boot loader shouldn't do so either. Indeed, if you're installing to an NBD device, you might not even *have* a local hard disk. So when the user installs to a network device, I believe the installer should default to nobootloader, rather than grub, lilo, or whatever boot loader is used on the architecture we're using; but if the user still wants to install a boot loader anyway, that should probably also be possible. Can this be done? If so, how do I do that? Also, note that this shouldn't be hardcoded; if we're installing to root-on-NBD we don't want to touch the local hard disk, but if we're doing, say, root on local hard disk but /usr on NBD, then we /do/ want to install the bootloader to the local hard disk. - The nbd-client package has an extensive debconf configuration interface. Would it be considered good form to programmatically preseed the answers to that debconf interface from partman-nbd, or should I find another way? - Finally, in order for root-on-NBD to work properly, the kernel needs to specify an extra boot parameter that tells the nbd initramfs script where the server is. I couldn't find any interface to specify random extra kernel parameters for the installed system; did I miss something? At any rate, if I ignore the hang due to the network going down prematuraly, manually make sure the initrd is copied to my tftp server, and make sure to enter the correct values in the nbd-client debconf interface, the system will correctly boot off NBD to a login prompt, so I guess I'm almost there :-) For those who want to try, I've put an installer image for 2.6.39-2-amd64 up on <http://people.debian.org/~wouter/d-i/initrd.gz>[2]. Note that this is still slightly broken in that it doesn't run 'apt-install nbd-client' yet, but I'm working on that. Regards, [1] http://grep.be/blog/en/computer/debian/d-i/nbd [2] If you want to try on a different architecture, you'll need to do the following: - get <http://people.debian.org/~wouter/d-i/partman-nbd_0.1_all.udeb> and put it in localudebs - Add Package: nbd-modules Depends: kernel-image to .../packages/linux-kernel-di-<arch>-2.6/package-list - Create a file .../packages/linux-kernel.../modules/<flavour>/nbd-modules with as contents #include <nbd-modules> - build the l-k-di package, and put nbd-modules-<version> in localudebs, too. - add partman-nbd to .../installer/build/pkg-lists/monolithic/<arch>.cfg Then, build the monolithic flavour as usual. -- The volume of a pizza of thickness a and radius z can be described by the following formula: pi zz a
signature.asc
Description: Digital signature