mirror of
https://gitlab.com/bztsrc/bootboot.git
synced 2023-02-13 20:54:32 -05:00
Loaders moved to dist directory
This commit is contained in:
parent
9027d506f1
commit
d596e49a59
19 changed files with 27 additions and 27 deletions
12
OLVASSEL.md
12
OLVASSEL.md
|
@ -5,14 +5,14 @@ Előre lefordított binárisok mellékelve, egyből használhatók.
|
|||
|
||||
1. *x86_64-efi* a preferált indítási mód x86_64-en.
|
||||
Szabvány GNU eszköztár plusz néhány fájl a gnuefi-ből (mellékelve).
|
||||
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.efi) (95k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.rom) (96k)
|
||||
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.efi) (95k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.rom) (96k)
|
||||
|
||||
2. *x86_64-bios* BIOS, Multiboot (GRUB), El Torito (CDROM), bővítő ROM és Linux boot kompatíbilis, RÉGI betöltő.
|
||||
Ha újra akarod fordítani, szükséged lesz a fasm-ra (nincs mellékelve).
|
||||
[boot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/boot.bin) (512 bájt, egyszerre MBR, VBR és CDROM indító szektor), [bootboot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.bin) (11k, a boot.bin tölti be, valamint BBS bővítő ROM és Multiboot kompatíbilis is)
|
||||
[boot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/dist/boot.bin) (512 bájt, egyszerre MBR, VBR és CDROM indító szektor), [bootboot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.bin) (11k, a boot.bin tölti be, valamint BBS bővítő ROM és Multiboot kompatíbilis is)
|
||||
|
||||
3. *aarch64-rpi* ARMv8 betöltő Raspberry Pi 3-hoz, 4-hez
|
||||
[bootboot.img](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.img) (34k)
|
||||
[bootboot.img](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.img) (34k)
|
||||
|
||||
4. *mykernel* egy példa BOOTBOOT [kompatíbilis kernel](https://gitlab.com/bztsrc/bootboot/tree/master/mykernel) C-ben írva, ami vonalakat húz meg színes dobozokat rajzol
|
||||
|
||||
|
@ -127,7 +127,7 @@ Kifejezések
|
|||
* _kernel fájl_: egy ELF64 / PE32+ [futtatható az initrd-ben](https://gitlab.com/bztsrc/bootboot/tree/master/mykernel),
|
||||
opcionálisan a következő szimbólumokkal: `mmio`, `fb`, `environment`, `bootboot` (lásd gép állapot és linker szkript alább).
|
||||
|
||||
* _BOOTBOOT struktúra_: a [bootboot.h](https://gitlab.com/bztsrc/bootboot/blob/master/bootboot.h)-ban definiált struktúra.
|
||||
* _BOOTBOOT struktúra_: a [bootboot.h](https://gitlab.com/bztsrc/bootboot/blob/master/dist/bootboot.h)-ban definiált struktúra.
|
||||
|
||||
Betöltés menete
|
||||
---------------
|
||||
|
@ -138,7 +138,7 @@ Betöltés menete
|
|||
4. sorra meghívja a fájl rendszer meghajtókat, hogy betöltse a kernelt az initrd-ről.
|
||||
5. ha egyik meghajtó sem járt szerencsével, akkor megkeresi az első futtathatót az initrd-ben.
|
||||
6. értelmezi a futtatható fejlécét és a szimbólumokat, hogy megtalálja a címeket (csak 2-es szintű betöltők).
|
||||
7. ennek megfelelően leképezi a framebuffert, környezetet és a [bootboot struktúrá](https://gitlab.com/bztsrc/bootboot/blob/master/bootboot.h)t.
|
||||
7. ennek megfelelően leképezi a framebuffert, környezetet és a [bootboot struktúrá](https://gitlab.com/bztsrc/bootboot/blob/master/dist/bootboot.h)t.
|
||||
8. beállítja a vermet, regisztereket és a kernel belépési pontjára ugrik. Lásd [példa kernel](https://gitlab.com/bztsrc/bootboot/tree/master/mykernel).
|
||||
|
||||
Gép állapot
|
||||
|
@ -169,7 +169,7 @@ Az 1-es szintű betöltők korlátozzák a képernyő méretét valahol 4096 x 4
|
|||
Ez több, mint elég az [Ultra HD 4K](https://en.wikipedia.org/wiki/4K_resolution) (3840 x 2160) felbontáshoz. A 2-es szintű
|
||||
betöltők akárhova képesek leképezni az fb szimbólumot -1G és -2M között, ezért rájuk nem vonatkozik ez a megszorítás.
|
||||
|
||||
A fő információs [bootboot struktúra](https://gitlab.com/bztsrc/bootboot/blob/master/bootboot.h) a `bootboot` szimbólumra
|
||||
A fő információs [bootboot struktúra](https://gitlab.com/bztsrc/bootboot/blob/master/dist/bootboot.h) a `bootboot` szimbólumra
|
||||
van leképezve. Ez áll egy fix 128 bájtos fejlécből, amit egy változó hosszúságú, de fix méretű rekordok követnek. Az initrd
|
||||
(benne a további kernel modulokkal és szerverekkel) teljes egészében a memóriában van, és ezen struktúra *initrd_ptr* és
|
||||
*initrd_size* mezői mutatnak rá. A framebuffer fizikai címe az *fb_ptr* mezőben található. Az *indulási rendszer idő* és
|
||||
|
|
12
README.md
12
README.md
|
@ -5,14 +5,14 @@ I provide pre-compiled images ready for use.
|
|||
|
||||
1. *x86_64-efi* the preferred way of booting on x86_64 architecture.
|
||||
Standard GNU toolchain and a few files from gnuefi (included).
|
||||
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.efi) (95k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.rom) (96k)
|
||||
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.efi) (95k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.rom) (96k)
|
||||
|
||||
2. *x86_64-bios* BIOS, Multiboot (GRUB), El Torito (CDROM), Expansion ROM and Linux boot compatible, OBSOLETE loader.
|
||||
If you want to recompile this, you'll need fasm (not included).
|
||||
[boot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/boot.bin) (512 bytes, works as MBR, VBR and CDROM boot record too), [bootboot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.bin) (11k, loaded by boot.bin, also BBS Expansion ROM and Multiboot compliant)
|
||||
[boot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/dist/boot.bin) (512 bytes, works as MBR, VBR and CDROM boot record too), [bootboot.bin](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.bin) (11k, loaded by boot.bin, also BBS Expansion ROM and Multiboot compliant)
|
||||
|
||||
3. *aarch64-rpi* ARMv8 boot loader for Raspberry Pi 3, 4
|
||||
[bootboot.img](https://gitlab.com/bztsrc/bootboot/raw/master/bootboot.img) (34k)
|
||||
[bootboot.img](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.img) (34k)
|
||||
|
||||
4. *mykernel* an example BOOTBOOT [compatible kernel](https://gitlab.com/bztsrc/bootboot/tree/master/mykernel) in C which draws lines and boxes
|
||||
|
||||
|
@ -128,7 +128,7 @@ Glossary
|
|||
* _kernel file_: an ELF64 / PE32+ [executable inside initrd](https://gitlab.com/bztsrc/bootboot/tree/master/mykernel),
|
||||
optionally with the following symbols: `mmio`, `fb`, `environment`, `bootboot` (see machine state and linker script).
|
||||
|
||||
* _BOOTBOOT structure_: an informational structure defined in [bootboot.h](https://gitlab.com/bztsrc/bootboot/blob/master/bootboot.h).
|
||||
* _BOOTBOOT structure_: an informational structure defined in [bootboot.h](https://gitlab.com/bztsrc/bootboot/blob/master/dist/bootboot.h).
|
||||
|
||||
Boot process
|
||||
------------
|
||||
|
@ -139,7 +139,7 @@ Boot process
|
|||
4. iterates on file system drivers, and loads kernel file from initrd.
|
||||
5. if file system is not recognized, scans for the first executable in the initrd.
|
||||
6. parses executable header and symbols to get link addresses (only level 2 compatible loaders).
|
||||
7. maps linear framebuffer, environment and [bootboot structure](https://gitlab.com/bztsrc/bootboot/blob/master/bootboot.h) accordingly.
|
||||
7. maps linear framebuffer, environment and [bootboot structure](https://gitlab.com/bztsrc/bootboot/blob/master/dist/bootboot.h) accordingly.
|
||||
8. sets up stack, registers and jumps to kernel entry point. See [example kernel](https://gitlab.com/bztsrc/bootboot/tree/master/mykernel).
|
||||
|
||||
Machine state
|
||||
|
@ -169,7 +169,7 @@ the `fb` symbol. Level 1 loaders limit the framebuffer size somewhere around 409
|
|||
and aspect ratio too). That's more than enough for [Ultra HD 4K](https://en.wikipedia.org/wiki/4K_resolution) (3840 x 2160).
|
||||
Level 2 loaders can place the fb anywhere in memory from -1G to -2M, therefore they do not have such a limitation.
|
||||
|
||||
The main information [bootboot structure](https://gitlab.com/bztsrc/bootboot/blob/master/bootboot.h) is mapped
|
||||
The main information [bootboot structure](https://gitlab.com/bztsrc/bootboot/blob/master/dist/bootboot.h) is mapped
|
||||
at `bootboot` symbol. It consist of a fixed 128 bytes long header followed by various number of fixed
|
||||
records. Your initrd (with the additional kernel modules and servers) is enitrely in the memory, and you can locate it
|
||||
using this struct's *initrd_ptr* and *initrd_size* members. The physical address of the framebuffer can be found in
|
||||
|
|
|
@ -5,7 +5,7 @@ all: boot.S bootboot.c fs.h
|
|||
@aarch64-elf-gcc -Wall -O2 -ffreestanding -nostdinc -nostdlib -nostartfiles -fno-stack-protector -I ./ -c bootboot.c -o bootboot.o
|
||||
@aarch64-elf-ld -r -b binary -o font.o font.psf
|
||||
@aarch64-elf-ld -nostdlib -nostartfiles boot.o bootboot.o tinflate.o font.o -T link.ld -o bootboot.elf
|
||||
@aarch64-elf-objcopy -O binary bootboot.elf ../bootboot.img
|
||||
@aarch64-elf-objcopy -O binary bootboot.elf ../dist/bootboot.img
|
||||
@rm *.o bootboot.elf
|
||||
|
||||
mkboot: mkboot.c
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
#include "tinf.h"
|
||||
|
||||
/* get BOOTBOOT structure */
|
||||
#include "../bootboot.h"
|
||||
#include "../dist/bootboot.h"
|
||||
|
||||
/* aligned buffers */
|
||||
volatile uint32_t __attribute__((aligned(16))) mbox[36];
|
||||
|
|
Binary file not shown.
Binary file not shown.
0
boot.bin → dist/boot.bin
vendored
0
boot.bin → dist/boot.bin
vendored
0
bootboot.bin → dist/bootboot.bin
vendored
0
bootboot.bin → dist/bootboot.bin
vendored
BIN
bootboot.efi → dist/bootboot.efi
vendored
BIN
bootboot.efi → dist/bootboot.efi
vendored
Binary file not shown.
0
bootboot.h → dist/bootboot.h
vendored
0
bootboot.h → dist/bootboot.h
vendored
0
bootboot.img → dist/bootboot.img
vendored
0
bootboot.img → dist/bootboot.img
vendored
BIN
bootboot.rom → dist/bootboot.rom
vendored
BIN
bootboot.rom → dist/bootboot.rom
vendored
Binary file not shown.
Binary file not shown.
|
@ -16,7 +16,7 @@ ZIPNAME = ../$(TARGET)-$(shell uname -s).zip
|
|||
endif
|
||||
endif
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
INCBIN = ../boot.bin ../bootboot.bin ../bootboot.efi ../bootboot.img ../aarch64-rpi/LICENCE.broadcom ../aarch64-rpi/bootcode.bin ../aarch64-rpi/fixup.dat ../aarch64-rpi/start.elf
|
||||
INCBIN = ../dist/boot.bin ../dist/bootboot.bin ../dist/bootboot.efi ../dist/bootboot.img ../aarch64-rpi/LICENCE.broadcom ../aarch64-rpi/bootcode.bin ../aarch64-rpi/fixup.dat ../aarch64-rpi/start.elf
|
||||
|
||||
all: data.c $(TARGET)
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#
|
||||
#
|
||||
|
||||
CFLAGS = -Wall -fpic -ffreestanding -fno-stack-protector -nostdinc -nostdlib -I../
|
||||
CFLAGS = -Wall -fpic -ffreestanding -fno-stack-protector -nostdinc -nostdlib -I../dist/
|
||||
|
||||
all: mykernel.x86_64.elf mykernel.aarch64.elf
|
||||
|
||||
|
|
|
@ -2,12 +2,12 @@ all:
|
|||
@# NOTE: GNU assembler cannot mix 16 bit real mode with 32 bit prot mode instructions
|
||||
@# as easily as I need it in a boot loader. So I decided to use fasm.
|
||||
@echo " src x86_64-bios (MultiBoot / BIOS)"
|
||||
@fasm boot.asm ../boot.bin >/dev/null
|
||||
@fasm bootboot.asm ../bootboot.bin >/dev/null
|
||||
@fasm boot.asm ../dist/boot.bin >/dev/null
|
||||
@fasm bootboot.asm ../dist/bootboot.bin >/dev/null
|
||||
|
||||
mkboot: ../boot.bin mkboot.c
|
||||
mkboot: ../dist/boot.bin mkboot.c
|
||||
@echo " src mkboot"
|
||||
@ld -r -b binary -o boot.o ../boot.bin
|
||||
@ld -r -b binary -o boot.o ../dist/boot.bin
|
||||
@gcc boot.o mkboot.c -o mkboot
|
||||
@rm boot.o 2>/dev/null || true
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include <unistd.h>
|
||||
|
||||
/* the BOOTBOOT 1st stage loader code */
|
||||
extern unsigned char *_binary____boot_bin_start;
|
||||
extern unsigned char *_binary____dist_boot_bin_start;
|
||||
|
||||
/* entry point */
|
||||
int main(int argc, char** argv)
|
||||
|
@ -80,7 +80,7 @@ int main(int argc, char** argv)
|
|||
return 2;
|
||||
}
|
||||
// create the boot record. First copy the code then the data area from original sector on disk
|
||||
memcpy((void*)&bootrec, (void*)&_binary____boot_bin_start, 512);
|
||||
memcpy((void*)&bootrec, (void*)&_binary____dist_boot_bin_start, 512);
|
||||
memcpy((void*)&bootrec+0xB, (void*)&data+0xB, 0x5A-0xB); // copy BPB (if any)
|
||||
memcpy((void*)&bootrec+0x1B8, (void*)&data+0x1B8, 510-0x1B8); // copy WNTID and partitioning table (if any)
|
||||
// now locate the second stage by magic bytes
|
||||
|
|
|
@ -17,8 +17,8 @@ all: tinflate.o $(TARGET)
|
|||
@objcopy -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc --target efi-app-$(ARCH) --subsystem=10 $^ $@
|
||||
@echo -n "BOOTBOOT Loader do not " | dd conv=notrunc of=$(TARGET) bs=1 seek=78 1>/dev/null 2>/dev/null
|
||||
@gcc $(GNUEFI_INCLUDES) -Wall -fshort-wchar efirom.c -o efirom $(LIBS)
|
||||
@./efirom $(TARGET) ../bootboot.rom || true
|
||||
@mv $(TARGET) ../$(TARGET)
|
||||
@./efirom $(TARGET) ../dist/bootboot.rom || true
|
||||
@mv $(TARGET) ../dist/$(TARGET)
|
||||
@rm tinflate.o efirom
|
||||
|
||||
%.so: %.o
|
||||
|
@ -31,5 +31,5 @@ all: tinflate.o $(TARGET)
|
|||
@gcc $(GNUEFI_INCLUDES) $(CFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
@rm bootboot.o $(TARGET) ../$(TARGET) ../bootboot.rom *.so *.efi efirom tinflate.o 2>/dev/null || true
|
||||
@rm bootboot.o $(TARGET) ../dist/$(TARGET) ../dist/bootboot.rom *.so *.efi efirom tinflate.o 2>/dev/null || true
|
||||
|
||||
|
|
|
@ -43,9 +43,9 @@
|
|||
#include <eficon.h>
|
||||
#include <efiprot.h>
|
||||
#include <efigpt.h>
|
||||
// get BOOTBOOT specific stuff
|
||||
#include "../bootboot.h"
|
||||
#include "tinf.h"
|
||||
// get BOOTBOOT specific stuff
|
||||
#include "../dist/bootboot.h"
|
||||
|
||||
/*** ELF64 defines and structs ***/
|
||||
#define ELFMAG "\177ELF"
|
||||
|
|
Loading…
Reference in a new issue