Hi Andrei, Thanks for a quick review.
Andrei Borzenkov <arvidj...@gmail.com> writes: > On Wed, Mar 16, 2016 at 11:35 AM, Nikunj A Dadhania > <nik...@linux.vnet.ibm.com> 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 <nik...@linux.vnet.ibm.com> >> --- >> 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 } > 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. > > Does your platform use PXE or some other protocol for netboot? Its not exactly same as PXE, below link explains that in detail: 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 Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel