Date: Sun, 27 Sep 2015 10:14:50 -0600 From: Ian Lepore <ian@freebsd.org> To: Daniel Braniss <danny@cs.huji.ac.il> Cc: freebsd-arm@freebsd.org Subject: Re: netboot configuration [was: Re: NFS Root with Raspberry Pi (nfs_diskless: no interface)] Message-ID: <1443370490.1224.392.camel@freebsd.org> In-Reply-To: <33EFE756-B428-4A72-B3C5-0E764FA8ACC6@cs.huji.ac.il> References: <20150922052522.GA62140@gmail.com> <00C49FEB-E8EF-4469-85E2-0F901215CD11@cs.huji.ac.il> <20150923050414.GB43653@gmail.com> <91AAC64E-4C38-47AA-8910-48F7654A7524@cs.huji.ac.il> <20150923174445.GE43653@gmail.com> <CFAAFAE2-F0B2-431B-93C6-61D66464B7FD@cs.huji.ac.il> <1443105426.1224.272.camel@freebsd.org> <20150924163658.GC32257@gmail.com> <560438C5.3090404@selasky.org> <1443142468.1224.322.camel@freebsd.org> <FE458AF3-A9EE-46B1-89E3-1FB82E413E17@cs.huji.ac.il> <1443209159.1224.361.camel@freebsd.org> <12C96F79-2D70-408D-AD4C-F06F6B909AD3@cs.huji.ac.il> <1443276119.1224.382.camel@freebsd.org> <33EFE756-B428-4A72-B3C5-0E764FA8ACC6@cs.huji.ac.il>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 2015-09-27 at 14:15 +0300, Daniel Braniss wrote: > > On 26 Sep 2015, at 17:01, Ian Lepore <ian@FreeBSD.org> wrote: > > > > On Sat, 2015-09-26 at 15:38 +0300, Daniel Braniss wrote: > >>> On Sep 25, 2015, at 10:25 PM, Ian Lepore <ian@FreeBSD.org> wrote: > >>> > >>> On Fri, 2015-09-25 at 11:37 +0300, Daniel Braniss wrote: > >>>>> On 25 Sep 2015, at 03:54, Ian Lepore <ian@FreeBSD.org> wrote: > >>>>> > >>>>> On Thu, 2015-09-24 at 19:54 +0200, Hans Petter Selasky wrote: > >>>>>> On 09/24/15 18:36, Randy Westlund wrote: > >>>>>>> On Thu, Sep 24, 2015 at 08:37:06AM -0600, Ian Lepore wrote: > >>>>>> > >>> [...stuff about problems netbooting...] > >>>> > >>>> hi Ian, > >>>> can you help me here? > >>>> I need the magics to get ubldr to boot from the net, > >>>> i’m using an image built via crochet. > >>>> > >>>> cheers, > >>>> danny > >>> > >>> I've been struggling with how to set up a new default u-boot environment > >>> in our ports to make netbooting easier. The problem is that there are > >>> as many ways to netboot as there are different people wanting to do it. > >>> What I've been doing for years is loading both ubldr and the kernel from > >>> nfs, by configuring my dhcp server to provide all the info needed (board > >>> ip and netmask, server ip, ubldr file to load, and nfs root path), all > >>> based on the mac address of the board. I've learned that doesn't work > >>> well for most people who don't have easy control over their dhcp server. > >>> > >>> To try to keep this relatively simple, I'm going to assume that what > >>> most folks want to do is: > >>> > >>> * Load ubldr from the sdcard that has u-boot on it (not from nfs). > >>> * Make ubldr load the freebsd kernel from nfs. > >>> * Use an nfs root filesystem. > >>> > >>> So I'm assuming you've got an nfs server already serving up the root > >>> filesystem (I'm not going to detail configuring that here). That > >>> filesystem must contain an /etc/fstab that includes the ip:/rootpath > >>> entry for the root filesystem. In other words, even though the software > >>> must already know the ip:/rootpath to find the fstab file, the file > >>> still must contain a root path entry. (I find this annoying.) > >>> > >>> Now on the u-boot side you need to add a few lines to the uEnv.txt file > >>> on the FAT partition (create the file there if it doesn't already > >>> exist). You can configure a static IP address or get the IP from dhcp: > >>> > >>> For static IP (On RPi only, add one line: UserPreboot=usb start) > >>> > >>> loaderdev=net > >>> rootpath=192.168.0.240:/wand > >>> ipaddr=192.168.0.233 > >>> netmask=255.255.255.0 > >>> > >>> > >>> For DHCP (On RPi only, last line is: UserPreboot=usb start && dhcp) > >>> > >>> loaderdev=net > >>> rootpath=192.168.0.240:/wand > >>> autoload=no > >>> UserPreboot=dhcp > >>> > >>> BTW, you may notice a Netboot command in the standard u-boot env. Do > >>> NOT set bootcmd=run Netboot, that would make u-boot try to load ubldr > >>> over the network, which requires running a tftp server. > >>> > >>> — Ian > >> > >> thanks! > >> it almost worked :-) > >> - UserPreboot didn’t work, probably because I have the wrong u-boot? > >> stoping the boot, then typing > >> usb start > >> boot > >> at the U-Boot> prompt saved the day! > >> > >> - if instead of boot I type dhcp, it tries to tftp u-boot, but I can’t figure out > >> how to start it :-( > >> > >> in any case, great! > >> now it would be nice if we pull resources and get this diskless stuff cleaned up > >> > >> danny > >> > >> > > > > I just committed the diskless fix, r288265. It should only be needed > > for RPi and other systems with a usb-based NIC that initializes late in > > the boot process. > tested, and it works. > > > > > All the u-boot ports have the UserPreboot hook in their env. Are you > > using an old copy of crochet? (Hmmm, or has crochet never been updated > > to use the u-boot ports/packages for all the boards?) > > > I compiled the u-boot-rpi from ports, > the good news: > it understands UserPreboot > the bad news: > the nfs boot gets stuck after a while. > > after much trial and error, this is what I do: > hit a key to enter U-Boot > then type: > setenv loaderdev net > boot > > attaching the console: I was also experiencing intermittant lockups while loader loads the kernel. I just wrote it off to failing hardware (I powered my rpi on for the first time in 6-8 months to work on this), since I've never had a problem with netbooting before (it's the only way I've ever booted the rpi). If it's not just my board going bad, then that's a bit of a mystery. The only other difference here from what I've always done is setting rootpath and other net config in u-boot instead of letting ubldr get it from dhcp. > > Do you want it to load ubldr via tftp instead of from the sdcard? > not sure what i want :-), with traditional pxe capable bioses, the boot/dhcp > has 2 stages, first if vendor id is set to PXEClient it sets filename to pxeboot, > then pxeboot sets vendor id to FreeBSD, and a whole bunch of other stuff > is provided, like root-path, etc. > > in the case of rpi, if dhcp does not provide a filename, it goes an tries > to tftp load a nnnnnnn.img! > That nnnnnnnn stuff is the board's mac address encoded as ascii-hex iirc, (but without the leading 0x), so that you can load a different image per board. > so, for RPI, we don’t need the PXE stuff that deals with the net driver, > but would be nice (and i’m looking into it) to set the vendor id stuff, > but I’m stuck in first base. > I know pretty much nothing about pxe at all. -- Ian > > That's an option, but ubldr doesn't change very often so just using the > > one on the sdcard should be good enough. > > > > If you want u-boot to get an IP address via dhcp without trying to tftp > > an image, do "setenv autoload no" before the dhcp command. > > > > -- Ian > > > > _______________________________________________ > freebsd-arm@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1443370490.1224.392.camel>