Network installing FreeBSD
So, Black Cat Networks have a bunch of
nice dedicated servers and I've been working on various network installs for
them. Debian was of course easy; there's a nice
netboot.tar.gz
that has everything you need (including configs for serial
consoles).
Fedora Core was a bit harder; there's mention about network boots and installs, but not a lot of docs. A pxelinux entry like:
label fedora kernel fc4/vmlinuz append initrd=fc4/initrd.img ramdisk_size=8192 console=ttyS0,9600n8 serial
does the right thing, with vmlinuz
and initrd.img
coming from
http://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os/images/pxeboot/.
Fedora's a bit annoying in that it doesn't offer you a selection of mirrors to
network install from though, so you need to have worked that out for the
install.
FreeBSD however, was much harder. Firstly, there aren't any decent docs about it that I could find. Secondly, it really wants to use NFS, even though TFTP will be required anyway for the PXE boot stage.
So, I ended up recompiling the pxeboot loader with LOADER_TFTP_SUPPORT
enabled and LOADER_NFS_SUPPORT
removed (though it still tries to do NFS
mounts it seems). Of course, you can't do this under Linux easily. Nor can you
do it on FreeBSD 4.10 it seems (I was recompiling the FreeBSD 6 loader).
However you can on FreeBSD 5.4. You need the lib and sys source trees to do
so. Or you can have my prebuilt copy,
freebsd.0.
pxelinux config looks like:
label freebsd kernel boot/freebsd.0
assuming you put it in a boot subdirectory under your tftpboot root dir. You
then need http://ftp.uk.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.0/6.0-RELEASE-i386-bootonly.iso
to get the rest of the /boot
contents from. Burn it to CD or loopback mount
it or work whatever magic does the trick for you to get access to the files in
that image. Then copy all of /boot
on it to boot
in your tftproot. You
don't actually need boot*, cdboot, loader or pxeboot, but they're all small
files. Then, add the following to loader.conf:
boot_serial="YES" console="comconsole" kernel_options="-h" vfs.root.mountfrom="ufs:/dev/md0c"
So, now you can type "freebsd" at your pxelinux boot prompt and it'll boot up the installer. Rock. I don't quite understand why I had to include the kernel_options line above - I thought setting boot_serial would do that for me. However, it works. With the only real pain being having to recompile pxeboot and the lack of docs. Which I've now sorted for you. ;)