grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] PXE support for grub2


From: Bean
Subject: Re: [PATCH] PXE support for grub2
Date: Sat, 2 Aug 2008 19:20:31 +0800

On Sat, Aug 2, 2008 at 6:48 PM, Robert Millan <address@hidden> wrote:
> On Thu, Jul 31, 2008 at 12:50:22AM +0800, Bean wrote:
>> +#if 1
>> +#define GRUB_PXE_BOOTP_DHCPVEND      1024    /* DHCP extended vendor field 
>> size */
>> +#else
>> +#define GRUB_PXE_BOOTP_DHCPVEND      312     /* DHCP standard vendor field 
>> size */
>> +#endif
>
> A comment would be helpful to explain the 'if 1' option.
>
>> --- a/kern/i386/pc/init.c
>> +++ b/kern/i386/pc/init.c
>> @@ -71,14 +71,19 @@ make_install_device (void)
>>        if (grub_root_drive == 0xFF)
>>          grub_root_drive = grub_boot_drive;
>>
>> -      grub_sprintf (dev, "(%cd%u", (grub_root_drive & 0x80) ? 'h' : 'f',
>> -                    grub_root_drive & 0x7f);
>> +      if (grub_root_drive == 0x7F)
>> +        grub_strcpy (dev, "(pxe");
>> +      else
>> +        {
>> +          grub_sprintf (dev, "(%cd%u", (grub_root_drive & 0x80) ? 'h' : 'f',
>> +                        grub_root_drive & 0x7f);
>>
>> -      if (grub_install_dos_part >= 0)
>> -     grub_sprintf (dev + grub_strlen (dev), ",%u", grub_install_dos_part + 
>> 1);
>> +          if (grub_install_dos_part >= 0)
>> +         grub_sprintf (dev + grub_strlen (dev), ",%u", 
>> grub_install_dos_part + 1);
>>
>> -      if (grub_install_bsd_part >= 0)
>> -     grub_sprintf (dev + grub_strlen (dev), ",%c", grub_install_bsd_part + 
>> 'a');
>> +          if (grub_install_bsd_part >= 0)
>> +         grub_sprintf (dev + grub_strlen (dev), ",%c", 
>> grub_install_bsd_part + 'a');
>> +     }
>>
>>        grub_sprintf (dev + grub_strlen (dev), ")%s", grub_prefix);
>>        grub_strcpy (grub_prefix, dev);
>
> Can we avoid this?  I wish make_install_device() was reduced and eventually
> disappeared.
>
> Since we already know at install time that the boot drive will be 0x7f, why 
> not
> just set the drive via grub-mkimage --prefix?

Hi,

Yes, we can set this in grub-mkimage.

>
>> --- a/kern/i386/pc/startup.S
>> +++ b/kern/i386/pc/startup.S
>> @@ -2053,3 +2053,102 @@ FUNCTION(grub_vbe_bios_set_palette_data)
>>       popl    %ebx
>>       popl    %ebp
>>       ret
>> +
>> +
>> +pxe_rm_entry:
>> +     .long   0
>> +
>> +/*
>> + * struct grub_pxenv *grub_pxe_scan (void);
>> + */
>> +FUNCTION(grub_pxe_scan)
>
> Could these go in a module?  If they're only used by disk/i386/pc/pxe.c,
> maybe they could be merged with that?

The problem is that they need to call real mode function provided by
the pxe rom, so this code must be loaded under 1m. We can solve this
with real mode stub or the patch suggested by daChaac, but it's not
there yet. So we need to keep it in startup.S for some time.

-- 
Bean




reply via email to

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