2.5 KiB
2.5 KiB
- Btrfs driver
- structures
- volume
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL: proto
- EFI_QUIBBLE_PROTOCOL: quibble_proto
- EFI_OPEN_SUBVOL_PROTOCOL: open_subvol_proto
- superblock*: sb
- EFI_HANDLE: controller
- EFI_BLOCK_IO_PROTOCOL*: block
- EFI_DISK_IO_PROTOCOL*: disk_io
- bool: chunks_loaded
- LIST_ENTRY: chunks
- LIST_ENTRY: roots
- root*: root_root
- root*: chunk_root
- LIST_ENTRY: list_entry
- root*: fsroot
- volume
- efi_main
- drv_start
- drv_stop
- drv_supported
- structures
- boot function
- add_image
- add kernel and hal to image list
- process memory map
- load kernel
- load registry
- load apiset if >= win8
- add crashdmp driver if >= win8 blue to image list
- load image list, drivers, add dependencies to image list
- fix image order
- iterate thru images again, resolve imports
- make images contiguous
- construct kernel stack/arguments
- map images?
- stuff
- call kernel entry
#+TITLE:Quibble bootloader reasoned
Btrfs driver
drv_start
- walk list of volumes and check for controller handle
- open block_io protocol and ensure media->blocksize isnt 0
- open disk_io protocol
- read superblock and check magic and crc32
- check for incompat flags
- setup volume struct with protocols/functions:
- install protocols and store volume in global list