[SeaBIOS] [PATCH 1/3] Add multiboot header to bios.bin.raw

Vladimir 'φ-coder/phcoder' Serbinenko phcoder at gmail.com
Tue May 19 20:53:48 CEST 2015


On 19.05.2015 17:03, Kevin O'Connor wrote:
> On Tue, May 19, 2015 at 04:43:49PM +0200, Vladimir 'phcoder' Serbinenko wrote:
>> Le 19 mai 2015 15:51, "Kevin O'Connor" <kevin at koconnor.net> a écrit :
>>> The _reloc_abs_start definition isn't available if
>>> CONFIG_RELOCATE_INIT is disabled - I think the symbol you want is
>>> code32flat_start.  Both should be available in a top level ASM32FLAT()
>>> and in romlayout.S.
>>>
>> code32flat-start misses all the relocation entries
> 
> It shouldn't - take a look at the generated file
> out/romlayout32flat.lds
> 
>>> Also, I just noticed in your comments that the bios.bin.raw file was
>>> used in your example.  That's not an exported file today (the build
>>> could fail while that file still exists).  Does multi-boot require a
>>> raw image to deploy (that is, a single linear area of memory that is
>>> copied to a final location)?
>>>
>> Multiboot can either load ELF or a linear file. In either case the header
>> needs to be in first 8K of resulting file. File produced by SeaBIOS
>> contains few hundred kilobytes of zeros. I didn't manage to insert 12 bytes
>> header in first 8K because of it. I'll give it another try
> 
> The system linkers tend to do funky things with alignment, which is
> what causes the .elf files to be huge.  I don't know how to fix that.
> 
I do, see new patch in new thread.
> I wouldn't worry about it too much though - something like the below
> (totally untested) should be fine.
> 
> -Kevin
> 
> 
> --- a/Makefile
> +++ b/Makefile
> @@ -88,6 +88,7 @@ target-y :=
>  target-$(CONFIG_QEMU) += $(OUT)bios.bin
>  target-$(CONFIG_CSM) += $(OUT)Csm16.bin
>  target-$(CONFIG_COREBOOT) += $(OUT)bios.bin.elf
> +target-$(CONFIG_MULTIBOOT) += $(OUT)bios.bin.multiboot
>  target-$(CONFIG_BUILD_VGABIOS) += $(OUT)vgabios.bin
>  
>  all: $(target-y)
> @@ -194,6 +195,10 @@ $(OUT)Csm16.bin: $(OUT)bios.bin.prep
>         @echo "  Creating $@"
>         $(Q)cp $< $@
>  
> +$(OUT)bios.bin.multiboot: $(OUT)rom.o $(OUT)bios.bin.prep
> +       @echo "  Creating $@"
> +       $(Q)$(OBJCOPY) -O binary $< $@
> +
>  $(OUT)bios.bin.elf: $(OUT)rom.o $(OUT)bios.bin.prep
>         @echo "  Creating $@"
>         $(Q)$(STRIP) -R .comment $< -o $(OUT)bios.bin.elf
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: OpenPGP digital signature
URL: <http://www.seabios.org/pipermail/seabios/attachments/20150519/eed1a0cb/attachment.asc>


More information about the SeaBIOS mailing list