From owner-freebsd-stable@FreeBSD.ORG Sun Jan 2 09:18:07 2011 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 664541065670 for ; Sun, 2 Jan 2011 09:18:07 +0000 (UTC) (envelope-from danny@cs.huji.ac.il) Received: from kabab.cs.huji.ac.il (kabab.cs.huji.ac.il [132.65.16.84]) by mx1.freebsd.org (Postfix) with ESMTP id 1FCDA8FC15 for ; Sun, 2 Jan 2011 09:18:06 +0000 (UTC) Received: from pampa.cs.huji.ac.il ([132.65.80.32]) by kabab.cs.huji.ac.il with esmtp id 1PZK4i-000HSP-IX; Sun, 02 Jan 2011 11:18:04 +0200 X-Mailer: exmh version 2.7.2 01/07/2005 with nmh-1.2 To: Peter Jeremy In-reply-to: <20110101124149.GE48579@server.vk2pj.dyndns.org> References: <20110101124149.GE48579@server.vk2pj.dyndns.org> Comments: In-reply-to Peter Jeremy message dated "Sat, 01 Jan 2011 23:41:49 +1100." Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 02 Jan 2011 11:18:04 +0200 From: Daniel Braniss Message-ID: Cc: freebsd-stable@freebsd.org Subject: Re: Specifying root mount options on diskless boot. X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Jan 2011 09:18:07 -0000 > > --2iBwrppp/7QCDedR > Content-Type: text/plain; charset=us-ascii > Content-Disposition: inline > Content-Transfer-Encoding: quoted-printable > > [I'm not sure if -stable is the best list for this but anyway...] > > I'm trying to convert an old laptop running FreeBSD 8.0 into a diskless > client (since its internal HDD is growing bad spots faster than I can > repair them). I have it pxebooting nicely and running with an NFS root > but it then reports locking problems: devd, syslogd, moused (and maybe > others) lock their PID file to protect against multiple instances. > Unfortunately, these daemons all start before statd/lockd and so the > locking fails and reports "operation not supported". > > It's not practical to reorder the startup sequence to make lockd start > early enough (I've tried). > > Since the filesystem is reserved for this client, there's no real need > to forward lock requests across the wire and so specifying "nolockd" > would be another solution. Looking through sys/nfsclient/bootp_subr.c, > DHCP option 130 should allow NFS mount options to be specified (though > it's not clear that the relevant code path is actually followed because > I don't see the associated printf()s anywhere on the console. After > getting isc-dhcpd to forward this option (made more difficult because > its documentation is incorrect), it still doesn't work. > > Understanding all this isn't helped by kenv(8) reporting three different > sets of root filesystem options: > boot.nfsroot.path=3D"/tank/m3" > boot.nfsroot.server=3D"192.168.123.200" > dhcp.option-130=3D"nolockd" > dhcp.root-path=3D"192.168.123.200:/tank/m3" > vfs.root.mountfrom=3D"nfs:server:/tank/m3" > vfs.root.mountfrom.options=3D"rw,tcp,nolockd" > > And the console also reports conflicting root definitions: > Trying to mount root from nfs:server:/tank/m3 > NFS ROOT: 192.168.123.200:/tank/m3 > > Working through all these: > boot.nfsroot.* appears to be initialised by sys/boot/i386/libi386/pxe.c > but, whilst nfsclient/nfs_diskless.c can parse boot.nfsroot.options, > there's no code to initialise that kenv name in pxe.c > > dhcp.* appears to be initialised by lib/libstand/bootp.c - which does > include code to populate boot.nfsroot.options (using vendor specific > DHCP option 20) but this code is not compiled in. Further studying > of bootp.c shows that it's possible to initialise arbitrary kenv's > using DHCP options 246-254 - but the DHCPDISCOVER packets do not > request these options so they don't work without special DHCP server > configuration (to forward options that aren't requested). > > vfs.root.* is parsed out of /etc/fstab but, other than being > reported in the console message above, it doesn't appear to be > used in this environment (it looks like the root entry can be > commented out of /etc/fstab without problem). > > My final solution was to specify 'boot.nfsroot.options=3D"nolockd"' in > loader.conf - and this seems to actually work. > > It seems rather unfortunate that FreeBSD has code to allow NFS root > mount options to be specified via DHCP (admittedly in several > incompatible ways) but none actually work. A quick look at -current > suggests that the situation there remains equally broken. > > Has anyone else tried to use any of this? And would anyone be interested > in trying to make it actually work? Hi Peter, i have beed doing diskless booting for a long time, and am very pleased (though 8.2-prerelease is causing some problems :-). In my case /var is mfs, or ufs/zfs, and have no lockd problems. here is what you need to do: either change in libstand/bootp.c: #define DHCP_ENV DHCP_ENV_NO_VENDOR to #define DHCP_ENV DHCP_ENV_FREEBSD or pick my version from: ftp://ftp.cs.huji.ac.il/users/danny/freebsd/diskless-boot/ and compile a new pxeboot. this new pxeboot will allow you to pass via dhcp some key options. next, take a look at ftp://ftp.cs.huji.ac.il/users/danny/freebsd/diskless-boot/rc.initdiskless make sure that your exported root has /.etc If you'r /var is also nfs mounted, maybe unionfs might help too. just writing quickly so you won't feel discouraged, and that diskless actually works. danny