1
0
Fork 0
mirror of https://gitlab.com/bztsrc/bootboot.git synced 2023-02-13 20:54:32 -05:00

FS0:/BOOTBOOT/LOADER moved to FS0:/BOOTBOOT.BIN

This commit is contained in:
bzt 2021-01-21 06:13:51 +01:00
parent a2653f0000
commit 03bd9bd82b
9 changed files with 20 additions and 32 deletions

View file

@ -320,6 +320,7 @@ Telepítés
---------
Az [images](https://gitlab.com/bztsrc/bootboot/tree/binaries/images) mappában találsz teszt képfájlokat.
Az alábbi lépéseket elvégzi helyetted az [mkbootimg](https://gitlab.com/bztsrc/bootboot/tree/master/mkbootimg) lemezképkészítő.
1. Hozz létre egy initrd-t benne a kerneleddel. Példák:
@ -347,12 +348,6 @@ elmehetsz egészen 16M-ig).
3. másold be a BOOTBOOT betöltőt a boot partícióra.
3.1. *UEFI lemez*: másold a __bootboot.efi__-t az **_FS0:\EFI\BOOT\BOOTX64.EFI_**-be.
3.2. *BIOS lemez*: másold a __bootboot.bin__-t az **_FS0:\BOOTBOOT\LOADER_**-be.
3.3. *Raspberry Pi 3+*: másold a __bootboot.img__-t az **_FS0:\KERNEL8.IMG_**-be.
**FONTOS**: olvasd el a kérdéses implementáció README.md-jét is.
Hibakeresés
@ -365,10 +360,10 @@ BOOTBOOT-PANIC: LBA support not found
Nagyon régi hardver. A BIOSod nem támogatja az LBA-t. Ezt az üzenetet az első betöltő szektor (boot.bin) írja ki.
```
BOOTBOOT-PANIC: FS0:\BOOTBOOT\LOADER not found
BOOTBOOT-PANIC: FS0:\BOOTBOOT.BIN not found
```
A fő betöltő (bootboot.bin) nem található a lemezen, vagy az induló szektorcíme nincs jól rögzítve az indítószektor 32 bites
A fő betöltő nem található a lemezen, vagy az induló szektorcíme nincs jól rögzítve az indítószektor 32 bites
[0x1B0] címén (lásd [mkboot](https://gitlab.com/bztsrc/bootboot/blob/master/x86_64-bios/mkboot.c)). Mivel a betöltő szektor
támogatja a RAID tükröket, több meghajtóról is meg fogja próbálni betölteni a betöltőt. Ezt az üzenetet az első betöltő szektor
(boot.bin) írja ki.

View file

@ -321,6 +321,7 @@ Installation
------------
In the [images](https://gitlab.com/bztsrc/bootboot/tree/binaries/images) directory you can find test disk images.
The [mkbootimg](https://gitlab.com/bztsrc/bootboot/tree/master/mkbootimg) image creator tool will make the steps below for you.
1. make an initrd with your kernel in it. Example:
@ -348,12 +349,6 @@ You can also create an Option ROM out of INITRD (on BIOS there's not much space
3. copy the BOOTBOOT loader on the boot partition.
3.1. *UEFI disk*: copy __bootboot.efi__ to **_FS0:\EFI\BOOT\BOOTX64.EFI_**.
3.2. *BIOS disk*: copy __bootboot.bin__ to **_FS0:\BOOTBOOT\LOADER_**.
3.3. *Raspberry Pi 3+*: copy __bootboot.img__ to **_FS0:\KERNEL8.IMG_**.
**IMPORTANT**: see the relevant port's README.md for more details.
Troubleshooting
@ -366,10 +361,10 @@ BOOTBOOT-PANIC: LBA support not found
Really old hardware. Your BIOS does not support LBA. This message is generated by 1st stage loader (boot.bin).
```
BOOTBOOT-PANIC: FS0:\BOOTBOOT\LOADER not found
BOOTBOOT-PANIC: FS0:\BOOTBOOT.BIN not found
```
The loader (bootboot.bin) is not on the disk or it's starting LBA address is not recorded in the boot sector at dword [0x1B0]
The loader is not on the disk or it's starting LBA address is not recorded in the boot sector at dword [0x1B0]
(see [mkboot](https://gitlab.com/bztsrc/bootboot/blob/master/x86_64-bios/mkboot.c)). As the boot sector supports RAID mirror,
it will try to load the loader from other drives as well. This message is generated by 1st stage loader (boot.bin).

Binary file not shown.

Binary file not shown.

BIN
dist/boot.bin vendored

Binary file not shown.

View file

@ -163,17 +163,9 @@ void esp_makepart()
for(i = 0; i < NUMARCH && initrd_arch[i]; i++)
boot |= (1 << (initrd_arch[i] - 1));
/* add loader's directory */
/* add loader's directory with config and initrds */
ptr = esp_mkdir(rootdir, "BOOTBOOT", 0); rootdir += 32;
if(boot & (1 << 1)) {
/*** x86 PC (BIOS) ***/
/* start address has to be saved in PMBR too */
esp_bbs = ((data + nextcluster * bpc)-esp) / 512;
memcpy(esp + 0x1B0, &esp_bbs, 4);
ptr = esp_addfile(ptr, "LOADER", binary_bootboot_bin, sizeof(binary_bootboot_bin));
}
ptr = esp_addfile(ptr, "CONFIG", (unsigned char*)config, strlen(config));
/* add INITRDs */
if(!initrd_arch[1]) {
ptr = esp_addfile(ptr, initrdnames[0], initrd_buf[0], initrd_size[0]);
} else {
@ -181,6 +173,7 @@ void esp_makepart()
ptr = esp_addfile(ptr, initrdnames[(int)initrd_arch[i]], initrd_buf[i], initrd_size[i]);
}
}
/* add loader code */
if(boot & (1 << 6)) {
/* additional platform */
}
@ -201,6 +194,11 @@ void esp_makepart()
bbp_end = (((data + nextcluster * bpc)-esp) / 512) - 1;
}
if(boot & (1 << 1)) {
/*** x86 PC (BIOS) ***/
/* start address has to be saved in PMBR too */
esp_bbs = ((data + nextcluster * bpc)-esp) / 512;
memcpy(esp + 0x1B0, &esp_bbs, 4);
rootdir = esp_addfile(rootdir, "BOOTBOOT.BIN", binary_bootboot_bin, sizeof(binary_bootboot_bin));
/*** x86 PC (UEFI) ***/
ptr = esp_mkdir(rootdir, "EFI", 0); rootdir += 32;
ptr = esp_mkdir(ptr, "BOOT", lastcluster);

View file

@ -17,8 +17,8 @@ fut minden processzormagon.
Telepítés
---------
1. *BIOS lemez / cdrom*: másold be a __bootboot.bin__-t az **_FS0:\BOOTBOOT\LOADER_**-be. Rakhatod az INITRD partíciódra de akár
a partíciós területen kívülre is (lásd `dd conv=notrunc oseek=x`). Végezetül telepítsd a __boot.bin__-t az
1. *BIOS lemez / cdrom*: másold be a __bootboot.bin__-t az **_FS0:\BOOTBOOT.BIN_**-be. Rakhatod az INITRD partíciódra de akár
a partíciós területen kívülre is (lásd `dd conv=notrunc seek=x`). Végezetül telepítsd a __boot.bin__-t az
El Torito Boot katalógusába "no emulation" módban, vagy a Master Boot Record-ba (illetve Volume Boot Record-ba ha
boot menedzsert használsz), a bootboot.bin első szektorának LBA címét lemetve 32 biten a 0x1B0 címre. A [mkboot](https://gitlab.com/bztsrc/bootboot/blob/master/x86_64-bios/mkboot.c)
szerszám ezt megteszi neked.
@ -31,7 +31,7 @@ a szokásos helyen. Példa:
```
menuentry "MyKernel" {
multiboot /bootboot/loader # bootboot.bin
multiboot /bootboot.bin # a betöltő
module /bootboot/initrd # első modul az initrd (opcionális)
module /bootboot/config # második modul a konfigurációs fájl (opcionális)
boot

View file

@ -17,8 +17,8 @@ IRQs masked. GDT unspecified, but valid, IDT unset. SSE, SMP enabled. Code is ru
Installation
------------
1. *BIOS disk / cdrom*: copy __bootboot.bin__ to **_FS0:\BOOTBOOT\LOADER_**. You can place it inside your INITRD partition
or outside of partition area as well (with `dd conv=notrunc oseek=x`). Finally install __boot.bin__ in the
1. *BIOS disk / cdrom*: copy __bootboot.bin__ to **_FS0:\BOOTBOOT.BIN_**. You can place it inside your INITRD partition
or outside of partition area as well (with `dd conv=notrunc seek=x`). Finally install __boot.bin__ in the
El Torito Boot catalog with "no emulation" or in Master Boot Record (or in Volume Boot Record if you have a boot manager),
saving bootboot.bin's first sector's LBA number in a dword at 0x1B0. The [mkboot](https://gitlab.com/bztsrc/bootboot/blob/master/x86_64-bios/mkboot.c)
utility will do that for you.
@ -30,7 +30,7 @@ the initrd and the environment file as modules (in this order). If no modules gi
```
menuentry "MyKernel" {
multiboot /bootboot/loader # bootboot.bin
multiboot /bootboot.bin # the loader
module /bootboot/initrd # first module is the initrd (optional)
module /bootboot/config # second module is the environment file (optional)
boot

View file

@ -210,7 +210,7 @@ printfunc:
panic: db "BOOTBOOT-PANIC: ",0
lbanotf: db "LBA support",0
stage2notf: db "FS0:\BOOTBOOT\LOADER",0
stage2notf: db "FS0:\BOOTBOOT.BIN",0
found: db " not found",0
cnt: db 0
drive: db 0