mirror of
https://gitlab.com/bztsrc/bootboot.git
synced 2023-02-13 20:54:32 -05:00
More precise error messages
This commit is contained in:
parent
84415afd2f
commit
09ceab095f
8 changed files with 29 additions and 16 deletions
10
README.md
10
README.md
|
@ -364,12 +364,18 @@ BOOTBOOT-PANIC: Unable to initialize SDHC card
|
||||||
|
|
||||||
The loader was unable to initialize EMMC for SDHC card access, probably hardware error or old card.
|
The loader was unable to initialize EMMC for SDHC card access, probably hardware error or old card.
|
||||||
|
|
||||||
|
```
|
||||||
|
BOOTBOOT-PANIC: No GPT found
|
||||||
|
```
|
||||||
|
|
||||||
|
The loader was unable to load the GUID Partitioning Table.
|
||||||
|
|
||||||
```
|
```
|
||||||
BOOTBOOT-PANIC: No boot partition
|
BOOTBOOT-PANIC: No boot partition
|
||||||
```
|
```
|
||||||
|
|
||||||
Either the disk does not have a GPT, or there's no EFI System Partition nor any other bootable
|
There's no EFI System Partition nor any other bootable partition in the GPT. Or the FAT file system is found but corrupt
|
||||||
partition on it. Or the FAT file system is found but inconsistent, or doesn't have a BOOTBOOT directory.
|
(contains inconsistent BPB data), or doesn't have a BOOTBOOT directory (with 8+3 MSDOS entry, not LFN).
|
||||||
|
|
||||||
```
|
```
|
||||||
BOOTBOOT-PANIC: Not 2048 sector aligned
|
BOOTBOOT-PANIC: Not 2048 sector aligned
|
||||||
|
|
|
@ -1218,8 +1218,8 @@ int bootboot_main(uint64_t hcl)
|
||||||
/* read and parse GPT table */
|
/* read and parse GPT table */
|
||||||
r=sd_readblock(1,(unsigned char*)&__diskbuf,1);
|
r=sd_readblock(1,(unsigned char*)&__diskbuf,1);
|
||||||
if(r==0 || memcmp((void*)&__diskbuf, "EFI PART", 8)) {
|
if(r==0 || memcmp((void*)&__diskbuf, "EFI PART", 8)) {
|
||||||
diskerr:
|
gpterr:
|
||||||
puts("BOOTBOOT-PANIC: No boot partition\n");
|
puts("BOOTBOOT-PANIC: No GPT found\n");
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
// get number of partitions and size of partition entry
|
// get number of partitions and size of partition entry
|
||||||
|
@ -1227,7 +1227,7 @@ diskerr:
|
||||||
if(np>127) np=127;
|
if(np>127) np=127;
|
||||||
// read GPT entries
|
// read GPT entries
|
||||||
r=sd_readblock(*((uint32_t*)((char*)&__diskbuf+72)),(unsigned char*)&__diskbuf,(np*sp+511)/512);
|
r=sd_readblock(*((uint32_t*)((char*)&__diskbuf+72)),(unsigned char*)&__diskbuf,(np*sp+511)/512);
|
||||||
if(r==0) goto diskerr;
|
if(r==0) goto gpterr;
|
||||||
part=NULL;
|
part=NULL;
|
||||||
// first, look for a partition with bootable flag
|
// first, look for a partition with bootable flag
|
||||||
for(r=0;r<np;r++) {
|
for(r=0;r<np;r++) {
|
||||||
|
@ -1254,7 +1254,11 @@ diskerr:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(part==NULL || r>=np) goto diskerr;
|
if(part==NULL || r>=np) {
|
||||||
|
diskerr:
|
||||||
|
puts("BOOTBOOT-PANIC: No boot partition\n");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
r=sd_readblock(part->start,(unsigned char*)&_end,1);
|
r=sd_readblock(part->start,(unsigned char*)&_end,1);
|
||||||
if(r==0) goto diskerr;
|
if(r==0) goto diskerr;
|
||||||
initrd.ptr=NULL; initrd.size=0;
|
initrd.ptr=NULL; initrd.size=0;
|
||||||
|
|
BIN
bootboot.bin
BIN
bootboot.bin
Binary file not shown.
BIN
bootboot.efi
BIN
bootboot.efi
Binary file not shown.
BIN
bootboot.img
BIN
bootboot.img
Binary file not shown.
BIN
bootboot.rom
BIN
bootboot.rom
Binary file not shown.
|
@ -1040,7 +1040,7 @@ end if
|
||||||
mov esi, 0A000h+512
|
mov esi, 0A000h+512
|
||||||
cmp dword [esi], 'EFI '
|
cmp dword [esi], 'EFI '
|
||||||
je @f
|
je @f
|
||||||
.nogpt: mov si, nogpt
|
.nogpt: mov esi, nogpt
|
||||||
jmp prot_diefunc
|
jmp prot_diefunc
|
||||||
@@: mov edi, 0B000h
|
@@: mov edi, 0B000h
|
||||||
mov ebx, edi
|
mov ebx, edi
|
||||||
|
@ -1084,8 +1084,8 @@ end if
|
||||||
.noto: add esi, ebx
|
.noto: add esi, ebx
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz @b
|
jnz @b
|
||||||
.noinitrd: mov esi, nord
|
.nopart: mov esi, nopar
|
||||||
jz prot_diefunc
|
jmp prot_diefunc
|
||||||
|
|
||||||
; load ESP at free memory hole found
|
; load ESP at free memory hole found
|
||||||
.loadesp: mov dword [gpt_ptr], esi
|
.loadesp: mov dword [gpt_ptr], esi
|
||||||
|
@ -1112,9 +1112,9 @@ end if
|
||||||
je .isfat
|
je .isfat
|
||||||
;no, then it's an initrd on the entire partition
|
;no, then it's an initrd on the entire partition
|
||||||
or eax, eax
|
or eax, eax
|
||||||
jz .noinitrd
|
jz .nopart
|
||||||
or ecx, ecx
|
or ecx, ecx
|
||||||
jz .noinitrd
|
jz .nopart
|
||||||
sub ecx, eax
|
sub ecx, eax
|
||||||
shl ecx, 9
|
shl ecx, 9
|
||||||
mov dword [bootboot.initrd_size], ecx
|
mov dword [bootboot.initrd_size], ecx
|
||||||
|
@ -1325,6 +1325,8 @@ end if
|
||||||
jz .loadinitrd
|
jz .loadinitrd
|
||||||
dec ecx
|
dec ecx
|
||||||
jnz .nextdir
|
jnz .nextdir
|
||||||
|
.noinitrd: mov esi, nord
|
||||||
|
jmp prot_diefunc
|
||||||
|
|
||||||
;load cluster chain, eax=cluster, ecx=size
|
;load cluster chain, eax=cluster, ecx=size
|
||||||
.loadinitrd:
|
.loadinitrd:
|
||||||
|
@ -2571,7 +2573,8 @@ memerr: db "E820 memory map not found",0
|
||||||
nogzmem: db "Inflating: "
|
nogzmem: db "Inflating: "
|
||||||
noenmem: db "Not enough memory",0
|
noenmem: db "Not enough memory",0
|
||||||
noacpi: db "ACPI not found",0
|
noacpi: db "ACPI not found",0
|
||||||
nogpt: db "No boot partition",0
|
nogpt: db "No GPT found",0
|
||||||
|
nopar: db "No boot partition",0
|
||||||
nord: db "Initrd not found",0
|
nord: db "Initrd not found",0
|
||||||
nolib: db "/sys not found in initrd",0
|
nolib: db "/sys not found in initrd",0
|
||||||
nocore: db "Kernel not found in initrd",0
|
nocore: db "Kernel not found in initrd",0
|
||||||
|
|
|
@ -1256,7 +1256,7 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||||
EFI_PROCESSOR_INFORMATION *pibuf=(EFI_PROCESSOR_INFORMATION*)pibuffer;
|
EFI_PROCESSOR_INFORMATION *pibuf=(EFI_PROCESSOR_INFORMATION*)pibuffer;
|
||||||
UINTN bsp_num=0, i, j=0, handle_size=0,memory_map_size=0, map_key=0, desc_size=0;
|
UINTN bsp_num=0, i, j=0, handle_size=0,memory_map_size=0, map_key=0, desc_size=0;
|
||||||
UINT32 desc_version=0;
|
UINT32 desc_version=0;
|
||||||
UINT64 lba_s=0,lba_e=0;
|
UINT64 lba_s=0,lba_e=0,sysptr;
|
||||||
MMapEnt *mmapent, *last=NULL;
|
MMapEnt *mmapent, *last=NULL;
|
||||||
file_t ret={NULL,0};
|
file_t ret={NULL,0};
|
||||||
CHAR16 **argv, *initrdfile, *configfile, *help=
|
CHAR16 **argv, *initrdfile, *configfile, *help=
|
||||||
|
@ -1550,9 +1550,9 @@ gzerr: return report(EFI_COMPROMISED_DATA,L"Unable to uncompress");
|
||||||
|
|
||||||
// System tables and structures
|
// System tables and structures
|
||||||
DBG(L" * System tables%s\n",L"");
|
DBG(L" * System tables%s\n",L"");
|
||||||
LibGetSystemConfigurationTable(&AcpiTableGuid,(void *)&(bootboot->arch.x86_64.acpi_ptr));
|
sysptr = 0; LibGetSystemConfigurationTable(&AcpiTableGuid,(void *)&sysptr); bootboot->arch.x86_64.acpi_ptr = sysptr;
|
||||||
LibGetSystemConfigurationTable(&SMBIOSTableGuid,(void *)&(bootboot->arch.x86_64.smbi_ptr));
|
sysptr = 0; LibGetSystemConfigurationTable(&SMBIOSTableGuid,(void *)&sysptr); bootboot->arch.x86_64.smbi_ptr = sysptr;
|
||||||
LibGetSystemConfigurationTable(&MpsTableGuid,(void *)&(bootboot->arch.x86_64.mp_ptr));
|
sysptr = 0; LibGetSystemConfigurationTable(&MpsTableGuid,(void *)&sysptr); bootboot->arch.x86_64.mp_ptr = sysptr;
|
||||||
|
|
||||||
// FIX ACPI table pointer on TianoCore...
|
// FIX ACPI table pointer on TianoCore...
|
||||||
ret.ptr = (UINT8*)(bootboot->arch.x86_64.acpi_ptr);
|
ret.ptr = (UINT8*)(bootboot->arch.x86_64.acpi_ptr);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue