Date: Thu, 02 Jun 2022 20:03:05 UTC
John-Mark Gurney <firstname.lastname@example.org> wrote: > Rick Macklem wrote this message on Thu, Jun 02, 2022 at 14:44 +0000: > > John-Mark Gurney <email@example.com> wrote: > > > I just booted FreeBSD-current diskless, using NFS root, and I ended > > > up having issues because by default, NFS root is only v2. > > > > > > One of things that happened was disk space available was listed as > > > -138G, or -144830429K. I assume this is because the server is reporting > > > TBs instead. > > Yes. NFSv2 uses 32bit sizes. > > Should we make the NFS server clamp various sizes then? instead of reporting > negative numbers? (Sorry if this is already done on newer versions of > FreeBSD, my server is a bit old.) My recollection (from long ago) is that, although the RFC defined them as 32bit signed, some implementations choose to mid-interpret them as unsigned, so that 4G was supported instead of 2G. Having said that, I agree with you that you should just use NFSv3 now. (Many servers are dropping NFSv2 support entirely.) > > > If I mount via mount_nfs, the sizes are normal/correct because it mounts > > > v3. > > I believe most specify "nfsv3" in the "/" mount line of /etc/fstab on the > > remote root fs. Then, when the system does a "mount -u" to make it > > read/write it gets toggled to NFSv3. > > well, I tried doing a: > mount -u -o nfsv3 / It used to work when it was in /etc/fstab, when going from read-only to read-write, from what I recall. > on the system and this didn't work switch over to v3, it was still on > v2.. > > I haven't specified nfsv3 in /etc/fstab, but IMO, this should be the > default.. Since NFSv3 is the default, it might not need to be explicit. I can't recall. > > Also, I'm right now booting single user mode, because I'm -mapall to > a user, and lots of FreeBSD breaks when files aren't uid 0, and there > doesn't appear to be a way to remap the uid to root (that I have found).. Yep. It would take effect when going multi-user. "-mapall=root", although that is not a recommended security setting. Why don't you just allow the client to use whatever uid it would normally use instead of "-mapall"? > > > The other issue that I ran into is that NFSv2 can't access >4GB files > > > (or create them). > > As above, NFSv2 uses 32bit sizes. > > > > > Anyone object to adding BOOTP_NFSV3 to GENERIC? > > Well, that option only works when used with BOOTP_NFSROOT. > > The GENERIC configs for amd64, arm64,... use the other way. > > (Just to make it confusing, there are two different ways an NFS root > > fs is set up.) > > See below. > > > > > Or maybe making it a > > > tunable that defaults to set, because it seems a bit crazy to default > > > to v2 these days. > > I don't think changing the default to NFSv3 will be a problem. > > The reason it was NFSv2 was that, > > for some non-FreeBSD NFS servers, the NFSv3 file handle is different > > than the NFSv2 one. > > > > I added NFSv3 support to stand/libsa/nfs.c about 15years ago, so every > > system should be running the newer NFS code in the loader and be able > > to do NFSv3 booting. > > > > > This option was added in 432aad0e in 1997 so that the nfs_diskless > > > structure didn't need to be filled out. Does anything even > > > populate/fill it out anymore? I saw code in i386/i386/locore.s that > > > does this, but it doesn't appear anywhere else. > > Yes. For "options NFS_ROOT" (the other way), the loader uses > > "stand/libsa/nfs.c" to acquire the remote file system's root file handle > > and fills it in. (See nfs_setup_diskless() in sys/nfs/nfs_diskless.c.) > > Looking at it, it appears to enable NFSv3 so long as it finds > > "boot.nfsroot.nfshandlelen" set. > > Well, I'm not seeing that, and this system is booting via > pxeboot+loader, so maybe something is broken? If it's an up to date (within last 10+ years then, yes, it sounds like it might be broken. However, I'm not a loader guy... You can set it manually at the loader prompt to "28" and then see if it boots are is running NFSv3. I have no way of testing/debugging this. Maybe you can figure out why the loader isn't setting "boot.nfsroot.nfshandlelen" to 28? > > > There also appears to possibly be a way via mount options, but I can't > > > see where it's documented to set them. > > I think you just specify "nfsv3" as a mount option in the root fs > > line in /etc/fstab on the root fs on the NFS server. > > See above, this doesn't appear to work, or doesn't work the way I think > it should... Well, maybe I just don't recall correctly. > > > I don't think changing the default to NFSv3 will be a problem. > > The hassle is testing the various cases, to make sure nothing > > breaks. I have no diskless setup to do testing and I don't even know > > when installs/upgrades actually replace the loader? > > Well, this diskless was easier to setup than I expected, partly > because I already had most of the infrastructure together (from > netbooting another machine). Put pxeboot on a tftp server, configure > the dhcp server to send the correct options, extract base.txz to a > directory, export it, and it worked. I assume that I'm getting loader > from that install since I don't specify it in the dhcp server. I didn't think pxeboot used dhcp and I don't know how it figures out where to find a file for booting? > As for testing, we have the CI system for that, right? ;p > > /me needs to get back to work on the lab. > > I guess we'd need to list the configurations that we care about, the > only ones I can think of, off the top of my head are pxeboot (which I'm > testing now), and u-boot.. > For servers, are there any servers that > are NFSv2 only that are in common use today? You'd have to look pretty hard. FreeBSD had NFSv3 from day 1, since it was in the CSRG stuff. > If you're running an > ancient server that is NFSv2 only, I think you deserve to have to > rebuild kernels or something instead of making 99% of the rest of us > do it.. If you are running a NFSv2 only server, you are running a computer museum. (As noted, many servers are dropping NFSv2 support entirely.) rick -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."