Re: mounting root from NFS via ROOTDEVNAME

From: Andre Oppermann <andre_at_freebsd.org>
Date: Thu, 31 Jan 2013 12:53:22 +0100
On 31.01.2013 12:27, Eggert, Lars wrote:
> Hi,
>
> On Jan 30, 2013, at 22:43, Craig Rodrigues <rodrigc_at_crodrigues.org> wrote:
>> What you need to do is, before the FreeBSD kernel boots, your
>> loader needs to export some environment variables.  This will trigger
>> the various behaviors in the FreeBSD mount code.
>
> the loader can export some environment variables (this is how I get the serial console working.)
>
>> So as I suggested before, you should continue with:
>>
>> (1)  Have /usr/home/elars/dst/etc/fstab with:
>> #  Options  Dump Pass
>> 10.11.12.13:/usr/home/elars/dst/       /         nfs      ro        0    0
>
> Done.
>
>> (2)  From your loader, you need to export this environment variable, so
>> that the kernel can get it with getenv().  You need at least:
>>
>> vfs.root.mountfrom=nfs:10.11.12.13:/usr/home/elars/dst
>
> Done.
>
>> Now, there are some other environment variables you need to export from the
>> loader.
>>
>> boot.netif.ip
>> boot.netif.netmask
>> boot.netif.gateway
>> boot.nfsroot.server
>> boot.nfsroot.path
>
> Done. I also ripped out all the BOOTP* options from the kernel.
>
> However, this still fails:
>
> Trying to mount root from nfs:10.11.12.13:/usr/home/elars/dst []...
> mountroot: waiting for device 10.11.12.13:/usr/home/elars/dst ...
> Mounting from nfs:10.11.12.13:/usr/home/elars/dst failed with error 19.
>
> Loader variables:
>    vfs.root.mountfrom=nfs:10.11.12.13:/usr/home/elars/dst
>
> Manual root filesystem specification:
>    <fstype>:<device> [options]
>        Mount <device> using filesystem <fstype>
>        and with the specified (optional) option list.
>
>      eg. ufs:/dev/da0s1a
>          zfs:tank
>          cd9660:/dev/acd0 ro
>            (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)
>
>    ?               List valid disk boot devices
>    .               Yield 1 second (for background tasks)
>    <empty line>    Abort manual input
>
> mountroot>
>
> I did a tcpdump and no traffic shows up on the correct interface (em4). I guess I need to set yet another loader environment variable to indicate which interface I'd like to use. Looking at the source, I only see boot.netif.name, but setting that to em4 doesn't help either.
>
> Any further ideas?

The interface doesn't have a name during loader stage.  The kernel
finds the interface to use based on the MAC address.  You should
set boot.netif.hwaddr as well in the kernel environment.

-- 
Andre
Received on Thu Jan 31 2013 - 10:53:38 UTC

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