grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] bootp: set is_def while processing dhcp ack


From: Andrei Borzenkov
Subject: Re: [PATCH] bootp: set is_def while processing dhcp ack
Date: Wed, 16 Mar 2016 13:33:53 +0300

On Wed, Mar 16, 2016 at 1:16 PM, Nikunj A Dadhania
<address@hidden> wrote:
> Hi Andrei,
>
> Thanks for a quick review.
>
> Andrei Borzenkov <address@hidden> writes:
>> On Wed, Mar 16, 2016 at 11:35 AM, Nikunj A Dadhania
>> <address@hidden> wrote:
>>> While testing netboot on ppc64, found that the grub_net_default_server
>>> is not set even when the dhcp response has sent the server IP. This would
>>> result in a failure during netbooting with following error:
>>>
>>> error: no server is specified.
>>>
>>> This patch sets the is_def variable which would result in setting the
>>> grub_net_default_server and then netboot from the server.
>>>
>>> Signed-off-by: Nikunj A Dadhania <address@hidden>
>>> ---
>>>  grub-core/net/bootp.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
>>> index a088244..74b8b79 100644
>>> --- a/grub-core/net/bootp.c
>>> +++ b/grub-core/net/bootp.c
>>> @@ -278,7 +278,7 @@ grub_net_process_dhcp (struct grub_net_buff *nb,
>>>      }
>>>    grub_net_configure_by_dhcp_ack (name, card,
>>>                                   0, (const struct grub_net_bootp_packet *) 
>>> nb->data,
>>> -                                 (nb->tail - nb->data), 0, 0, 0);
>>> +                                 (nb->tail - nb->data), 1, 0, 0);
>>
>> That's wrong, sorry. "is default" is intended to be used from initial
>> configuration based on information from firmware (i.e. - firmware does
>> PXE boot and we configure interface based on PXE packet firmware made
>> available for us).
>
>> If you call net_bootp manually,
>
> Thats what we are using in this current case, booting from the disk,
> and the grub.cfg has a netboot entry.
>
> menuentry 'Linux dev netboot' --class os {
>      insmod net
>      insmod ofnet
>      insmod tftp
>
>      net_bootp
>
>      echo 'Network status: '
>      net_ls_cards
>      net_ls_addr
>      net_ls_routes
>
>      echo 'Loading Linux ...'
>      linux  (tftp)/ubuntu-installer/ppc64el/vmlinux tasks=standard 
> pkgsel/language-pack-patterns= pkgsel/install-language-support=false --- quiet
>      initrd     (tftp)/ubuntu-installer/ppc64el/initrd.gz
> }
>

OK, so you attempt to configure everything. The first obvious question
is - *which* interface should now become default? Your patch would
make them compete, whoever is the last would win.

We would need to define some mechanism to designate interface as "default" here.

>> server is stored in environment variable net_<if>_dhcp_server_name;
>> you are free to use it as needed, e.g. set $root and $prefix.
>>

You can already fetch this information from environment. Something like

for i in 0 1 2 3 4 5; do
  eval "set ip=\$net_ofnet${i}_dhcp_server"
  if [ -n "$ip" ]; then
    set boot_from=tftp,$ip
    break
  fi
done

And later use ($boot_from) everywhere.

>> Does your platform use PXE or some other protocol for netboot?
>
> Its not exactly same as PXE, below link explains that in detail:
>

Thank you for the link but it is irrelevant here.

> https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W51a7ffcf4dfd_4b40_9d82_446ebc23c550/page/Netbooting%20on%20POWER%20-%20An%20Introduction
>
> Basically, a DHCP request is sent and in the DHCP ACK, we get the
> details of client-ip, bootfile (core.elf of grub), server-ip, netmask,
> etc. Later tftp is used to get the kernel/initrd images.
>
> During this case everything else gets parsed properly except the
> server-ip. Which was under the is_def case.
>
>> We may need to provide platform-specific network configuration
>> function that understands how to fetch information from firmware.
>
> This information is not there in the firmware. Its there in the DHCP-ACK
> packet. When the firmware does the netboot, we have most of the
> information encoded in the device tree and is parsed fine in grub.
>
> In this case we have a disk and one of the entry is to netboot, thats
> when it fails.
>
> Regards,
> Nikunj
>
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]