pxeboot and /boot filesystem, share /boot/kernel

Danny Braniss danny at cs.huji.ac.il
Mon Jul 2 06:04:32 UTC 2007


> I want to tighten up my spaces for diskless machines and I came across
> this puzzle with pxeboot:
> 
> I can share /usr and most other filesystems, but my individual roots
> for the machine each have to have the full kernel.  But /boot/kernel
> is rather large these days and totally identical, so I'd rather share
> it.
> 
> %%
> 
> You can only specify a root filesystem location via the dhcp options.
> Then, whatever kernel is there in location:/boot/kernel (or rather,
> loader.rc) will be booted, which will then pick up the / filesystem
> via location:/etc/fstab.
> 
> This is not quite what I want, because I want /boot/kernel to be
> shared, purely for filesize reasons.  But I can't specify a separate
> /boot filesystem.  I can't find an easy way to share /boot but not
> share /.
> 
> Or in other words, the core of the problem is that I want to share
> /boot/kernel but not share /etc/fstab.
> 
> %%
> 
> So, while writing this mail it occured to me that what I can do is put
> a /boot/loader.rc on the individual / filesystems that then redirects
> to a common kernel location.  But I don't see how I can make this work
> as I do not have the option to point to a new NFS mount in
> /boot/loader.conf, or do I?
> 
> So what I would want is (on the server):
> /diskless-usr/
> /diskless-kernel/ [has /boot/kernel/ in it]
> /diskless/root1/  [has /boot/loader.conf in it]
> /diskless/root2/
> 
> DHCP "root-path" is then addr:/diskless/root1
> 
> Where
>   /diskless/root1/boot/loader.conf 
> specifies
>   addr:/diskless-kernel/boot/kernel/kernel
> instead of just a filename.
> 
> Now, the question is how do I make loader.4th able to mount NFS or use
> tftp?
> 
> %%
> 
> I think I have three paths to go here:
> 
> 1) make pxeboot understand a separate "boot-path" dhcp option.
> 
> 2) make loader.4th able to use NFS or tftp.  IP is already up by the
>    time it is started.
> 
> 3) only share /boot/kernel/kernel and share a NFS mount for the
>    modules, but that's very messy.
> 

look in rc.initdiskless, you'll see there the solution.
if you mount unionfs /etc, you can have a /(root) mounted read-only.
unless there is something I don't see, there is no real reason to separate
/ from /usr.

danny






More information about the freebsd-hackers mailing list