Custom installer woes (can't mount / RW)

Daniel O'Connor doconnor at gsoft.com.au
Thu Sep 1 23:25:49 UTC 2011


On 01/09/2011, at 18:17, Craig Rodrigues wrote:
> Does it make a difference if you change this line in your script:
> 
> echo '/dev/gpt/swap	/		swap	sw	0	0' >>${TMPDIR}/mnt/etc/fstab
> 
> to:
> 
> echo '/dev/gpt/swap	none		swap	sw	0	0' >>${TMPDIR}/mnt/etc/fstab
> 
> Mounting of the root file system "/" is a very interesting thing.

Ahh $CURSE, that is it! I changed it to none and now it works properly!

> During early bootup, when loader(8) runs, it has to read the root file
> system to find and load the kernel,
> but it also reads /etc/fstab (if it is there)  and sets some
> environment variables, having to do with mounting the
> root file system.  This logic is in src/sys/boot/common/boot.c in the
> getrootmount() function.  The environment
> variables which are set are "vfs.root.mountfrom", and
> "vfs.root.mountfrom.options".
> 
> After your install script runs, you should break into the loader
> before the kernel loads, and look at the value of those two
> environment variables.

Interestingly mountfrom is correct, I also tried setting it in the loader to /dev/da0p2 but no change.

> If there is something else wrong, you need to look into the logic
> in src/sys/kern/vfs_mount.c in the vfs_mountroot() function.

I wonder if there is something in this - perhaps the loader using the first match and mount is using the last.

> BTW, once you solve your issue, do you have time to review the
> following document which I am in the middle
> of submitting to the FreeBSD Documentation Project:
> 
> "PXE Booting with an NFS root file system"
> http://people.freebsd.org/~rodrigc/doc/doc/en_US.ISO8859-1/books/handbook/network-pxe-nfs.html
> 
> It's not 100% related to your current issue, but I have used PXE
> Booting + NFS root, to write custom installers for
> FreeBSD.


I had a read and it seems OK, although I didn't actually try it.

You may wish to elaborate on step 14. For example, some ports will fail to build (and probably install) unless /dev is setup correctly.

I do the following to create the chroot for port builds..

sudo mount -t devfs devfs /tmp/${RELNAME}-ports/dev
sudo mkdir /tmp/${RELNAME}-ports/usr/ports
sudo mount -t nullfs -o ro /usr/ports /tmp/${RELNAME}-ports/usr/ports
sudo mount -t nullfs -o ro /usr/src /tmp/${RELNAME}-ports/usr/src


--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
"The nice thing about standards is that there
are so many of them to choose from."
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C








More information about the freebsd-current mailing list