Port-sparc64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Custom boot loader stub
On Thu, Oct 16, 2025 at 12:22:36PM +0100, Sad Clouds wrote:
> The layout of blocks on disk should look like this:
>
> 1 2 - 8 => 512-byte sector/block numbers
> +----------------+---------------------+
> | Sun Disk Label | bootblk flat binary |
> +----------------+---------------------+
> 0 511 512 8191 => LBA offsets in bytes
>
>
> The first sector (1) is occupied by Sun disk label, which is padded to
> 512 bytes. This must have the correct magic value, etc, otherwise
> OpenBoot reports errors.
>
> Sectors 2 - 8 contain bootblk binary, which can be maximum 7.5 KiB in
> size. Although I'm not sure how OpenBoot figures out its size so it can
> correctly map text and data segments in memory for execution.
That "flat binary" in our case is /usr/mdec/bootblk
-r-xr-xr-x 1 builds builds 7550 Apr 25 09:58 bootblk*
which is a tokenized FCode object file (created by $TOOLDIR/bin/nbfgen
from the source I referenced earlier, src/sys/arch/sparc/stand/bootblk/bootblk.fth
with a bit of constants generated automatically)
> hexdump -C bootblk | head
00000000 fd 08 b4 9e 00 00 1d 7e cc a5 b6 0b 62 6f 6f 74 |.......~....boot|
00000010 2d 64 65 62 75 67 3f 08 00 b8 b6 02 4b 42 08 01 |-debug?.....KB..|
00000020 b7 10 00 00 04 00 20 c2 12 07 2f 63 68 6f 73 65 |...... .../chose|
00000030 6e 02 04 34 14 00 1a 12 13 43 61 6e 6e 6f 74 20 |n..4.....Cannot |
00000040 66 69 6e 64 20 2f 63 68 6f 73 65 6e 90 a5 b2 b6 |find /chosen....|
00000050 0e 63 68 6f 73 65 6e 2d 70 68 61 6e 64 6c 65 08 |.chosen-phandle.|
00000060 02 ba 12 19 2f 6f 70 65 6e 70 72 6f 6d 2f 63 6c |..../openprom/cl|
00000070 69 65 6e 74 2d 73 65 72 76 69 63 65 73 02 04 34 |ient-services..4|
00000080 14 00 24 12 1b 43 61 6e 6e 6f 74 20 66 69 6e 64 |..$..Cannot find|
00000090 20 63 6c 69 65 6e 74 2d 73 65 72 76 69 63 65 73 | client-services|
and as far as I can tell it just finds the /ofwboot binary file and loads
it into memory, then evaluates it. I can't see any ELF or a.out specific
handling in there, so I guess OF must do binary format interpretation.
Uwe certainly can tell us this in more details and w/o guessing.
Martin
Home |
Main Index |
Thread Index |
Old Index