Re: Custom installer woes (can't mount / RW)

From: Daniel O'Connor <doconnor_at_gsoft.com.au>
Date: Fri, 2 Sep 2011 08:55:17 +0930
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
Received on Thu Sep 01 2011 - 21:25:49 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:17 UTC