On Wed, Mar 16, 2016 at 1:16 PM, Nikunj A Dadhania <nik...@linux.vnet.ibm.com> wrote: > 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 > } >
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 > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel