Is there a way to install DragonFly via network (w/o CD) ?

Adrian Bocaniciu a.bocaniciu at computer.org
Wed Oct 13 03:57:36 PDT 2004


	Hi,

	Even if there is some progress in usability for personal workstations, 
the main application for *BSD operating systems remains as operating 
systems for servers.

	For many servers, it is very important to be able to install the 
operating system on a computer without CD drives or floppy drives.

	With FreeBSD, that is very simple, you just set up a TFTP server in 
whose chroot directory you put four files:

1. pxeboot, unfortunately you must have an already working FreeBSD to 
recompile it with TFTP support as the one included in the release works 
with NFS, which does not make sense since pxeboot itself can be loaded 
only via TFTP so even in the (rare) cases when a NFS server already 
exists and is available for such use, it does not save you anything, so 
why bother with it :-(

2. an appropriate boot/loader.rc that will load kernel and mfsroot

3. any generic or custom kernel that will run on the target system

4. the mfsroot file taken from the release you want to install, where it 
can be found both in /boot and in /floppies/mfsroot.flp (also in 
/floppies/boot.flp)

	After configuring the TFTP server and a DHCP server, you can boot the 
target computer via Ethernet and then you are able to install the 
desired FreeBSD release by running manually or automatically, from a 
script, the programs contained in mfsroot.

	In the existing DragonFly snapshots, at least in 20040913, I  have not 
seen any equivalent of the FreeBSD mfsroot, so I presume that someone 
who wants to do a network installation must build a mfs image file by 
reading the instructions for the manual installation and copying all the 
files listed there as required (boot0cfg, fdisk, disklabel, newfs, dd, 
mount etc.) together with a shell in which to boot and ftp and tar in 
order to substitute the copying from CD with copying of archives from an 
FTP server and extracting them on the target computer.

	This is quite tedious, moreover, the required executables are 
dynamically linked in the DragonFly snapshot, so I must also identify 
and copy all the needed libraries and if I do this on a non-BSD computer 
I cannot just run ldd on them but I must look in the binary files with a 
hex editor or else do many cycles of trial and error.  I could certainly 
do that, but someone with less experience in *BSD, who would just want 
to try DragonFly to see how it compares with other alternatives, might 
not be able to do it.  Also, the resulting mfs image file might be quite 
large compared to the internal memory available in the target system, 
unlike the 4.5 MB (uncompressed) of the FreeBSD installation mfsroot.

	There is also the problem of pxeboot, the DragonFly snapshot has a 
pxeboot, but it probably uses the same uninspired default NFS protocol 
inherited from FreeBSD.  I believe that, in order to be more useful for 
those that do not have an already working DragonFly  system and thus are 
unable to recompile pxeboot, a release should include either both a 
pxeboot.nfs and a pxeboot.tftp or just the TFTP pxeboot, which, unlike 
the NFS pxeboot, does not impose any additional resource requirement 
(like a NFS server) on the installer.

	Can a FreeBSD pxeboot (e.g. a TFTP one) replace the DragonFly pxeboot, 
i.e. can it boot the DragonFly kernel with a mfs root file system and 
transmit parameters like vfs.root.mountfrom to the kernel or the 
loader-kernel interface has already diverged in DragonFly ?

	Are there any plans to prepare something equivalent with the FreeBSD 
installation mfsroot for a network installation in future releases ?

	I understand that there is a plan to do a headless installer using 
bootable USB media.  That is very good and useful, but there is also a 
need to be able to do Ethernet-only installations for servers that have 
difficult access, as FreeBSD can do, so this should be taken into 
consideration for future releases.

	Best regards !








More information about the Users mailing list