Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Sep 2015 19:25:49 +0300
From:      Daniel Braniss <danny@cs.huji.ac.il>
To:        Ian Lepore <ian@FreeBSD.org>
Cc:        freebsd-arm@freebsd.org, Rick Macklem <rmacklem@uoguelph.ca>
Subject:   Re: netboot configuration [was: Re: NFS Root with Raspberry Pi (nfs_diskless: no interface)]
Message-ID:  <B7B0FD1E-5AA5-43DB-B494-2F5D594C43D7@cs.huji.ac.il>
In-Reply-To: <1443370490.1224.392.camel@freebsd.org>
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> <1443370490.1224.392.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

> On Sep 27, 2015, at 7:14 PM, Ian Lepore <ian@FreeBSD.org> wrote:
>=20
> 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:
>>>=20
>>> 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:
>>>>>=20
>>>>> 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:
>>>>>>>=20
>>>>>>> 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:
>>>>>>>>=20
>>>>> [...stuff about problems netbooting...]
>>>>>>=20
>>>>>> hi Ian,
>>>>>> can you help me here?
>>>>>> I need the magics to get ubldr to boot from the net,
>>>>>> i=E2=80=99m using an image built via crochet.=20
>>>>>>=20
>>>>>> cheers,
>>>>>> 	danny
>>>>>=20
>>>>> 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.
>>>>>=20
>>>>> To try to keep this relatively simple, I'm going to assume that =
what
>>>>> most folks want to do is:
>>>>>=20
>>>>>    * 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.
>>>>>=20
>>>>> 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.)
>>>>>=20
>>>>> 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:
>>>>>=20
>>>>> For static IP (On RPi only, add one line: UserPreboot=3Dusb start)
>>>>>=20
>>>>>      loaderdev=3Dnet
>>>>>      rootpath=3D192.168.0.240:/wand
>>>>>      ipaddr=3D192.168.0.233
>>>>>      netmask=3D255.255.255.0
>>>>>=20
>>>>>=20
>>>>> For DHCP (On RPi only, last line is: UserPreboot=3Dusb start && =
dhcp)
>>>>>=20
>>>>>      loaderdev=3Dnet
>>>>>      rootpath=3D192.168.0.240:/wand
>>>>>      autoload=3Dno
>>>>>      UserPreboot=3Ddhcp
>>>>>=20
>>>>> BTW, you may notice a Netboot command in the standard u-boot env.  =
Do
>>>>> NOT set bootcmd=3Drun Netboot, that would make u-boot try to load =
ubldr
>>>>> over the network, which requires running a tftp server.
>>>>>=20
>>>>> =E2=80=94 Ian
>>>>=20
>>>> thanks!=20
>>>> it almost worked :-)
>>>> - UserPreboot didn=E2=80=99t 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!
>>>>=20
>>>> - if instead of boot I type dhcp, it tries to tftp u-boot, but I =
can=E2=80=99t figure out
>>>> how to start it :-(
>>>>=20
>>>> in any case, great!
>>>> now it would be nice if we pull resources and get this diskless =
stuff cleaned up
>>>>=20
>>>> danny
>>>>=20
>>>>=20
>>>=20
>>> 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.
>>=20
>>>=20
>>> 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?)
>>>=20
>> 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.
>>=20
>> after much trial and error, this is what I do:
>> 	hit a key to enter U-Boot
>> then type:
>> 	setenv loaderdev net
>> 	boot
>>=20
>> attaching the console:
>=20
> 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.

with the stuff from crochet it works, same setup! I am sniffing the net =
via
wireshark, and it stops at different positions in the kernel file,
so the settings of rootpath and other configs are irrelevant.
the transfer is being done via udp/nfs/v3 (hence added ric :-) maybe
he can see something we don=E2=80=99t.

>=20
>>> 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.
>>=20
>> in the case of rpi, if dhcp does not provide a filename, it goes an =
tries
>> to tftp load a nnnnnnn.img!
>>=20
>=20
> 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.

i know, it goes back to SunOS days =E2=80=A6

>=20
>> so, for RPI, we don=E2=80=99t need the PXE stuff that deals with the =
net driver,
>> but would be nice (and i=E2=80=99m looking into it) to set the vendor =
id stuff,
>> but I=E2=80=99m stuck in first base.
>>=20
>=20
> I know pretty much nothing about pxe at all.
>=20
> -- Ian
>=20
>>> That's an option, but ubldr doesn't change very often so just using =
the
>>> one on the sdcard should be good enough.
>>>=20
>>> 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.
>>>=20
>>> -- Ian
>>>=20
>>=20
>> _______________________________________________
>> freebsd-arm@freebsd.org <mailto:freebsd-arm@freebsd.org> mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-arm =
<https://lists.freebsd.org/mailman/listinfo/freebsd-arm>;
>> To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org =
<mailto:freebsd-arm-unsubscribe@freebsd.org>"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B7B0FD1E-5AA5-43DB-B494-2F5D594C43D7>