25.01.2017 07:06, Matthew Garrett пишет: > On Tue, Jan 24, 2017 at 7:48 PM, Andrei Borzenkov <arvidj...@gmail.com> wrote: >> 24.01.2017 23:50, Matthew Garrett пишет: >>> On Mon, Jan 23, 2017 at 8:02 PM, Andrei Borzenkov <arvidj...@gmail.com> >>> wrote: >>>> 24.01.2017 03:36, Matthew Garrett пишет: >>>>> Some DHCP servers (such as dnsmasq) tokenise parameters with commas, >>>>> making >>>>> it impossible to pass boot files with commas in them. Allow using a >>>> >>>> grub_net_open() operates on devices, not files. Please give more details >>>> about your problem. >>> >>> The DHCP server will return a string in the boot_file field. If you >>> want to indicate that this file should be obtained over http, the >>> easiest way to handle this is to provide a boot file in the form >>> (http,host)filename. Unfortunately dnsmasq uses commas to tokenise its >>> configuration parameters and there appears to be no way to override >>> that, which makes it impossible to provide a boot file in this form. >>> Allowing the use of an alternative character avoids this problem. >>> >> >> This won't work because (http,host) will never be interpreted as device >> in current code so you need to support this first before this patch can >> even be considered. Also I am not convinced that arbitrary changing >> syntax is good idea. > > I don't understand - grub_net_open_real() already handles this case:
Because bootfile from DHCP packet is not used to set device part of $prefix. Setting bootfile to (http,host)filename will end up with full prefix "(tftp,$next_ip)(http,host)base-name-of-filename". If you mean something different, please explain. > > else > { > const char *comma; > comma = grub_strchr (name, ','); > if (comma) > { > protnamelen = comma - name; > server = comma + 1; > protname = name; > } > else > { > protnamelen = grub_strlen (name); > server = grub_net_default_server; > protname = name; > } > > >> You already can set $prefix when generating image. Why is it not enough? > > Because we ship prebuilt images but don't know what IP addresses users > will be using for their deployment servers. > I can think about implementing URI parsing (somewhat in line with UEFI HTTPboot spec) and/or supporting partial $prefix that sets only protocol, something like "grub-mknetdir --prefix=(http,)", where server part is filled from DHCP ACK. _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel