#+TITLE:Quibble bootloader reasoned #+AUTHOR: Janis Böhm #+email: janis@nirgendwo.xyz #+STARTUP: indent inlineimages #+INFOJS_OPT: #+BABEL: :session *R* :cache yes :results output graphics :exports both :tangle yes -------------------------- * Btrfs driver ** structures *** volume **** EFI_SIMPLE_FILE_SYSTEM_PROTOCOL: proto **** EFI_QUIBBLE_PROTOCOL: quibble_proto **** EFI_OPEN_SUBVOL_PROTOCOL: open_subvol_proto **** superblock*: sb ***** checksum ***** uuid **** 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 ** efi_main - initialize volumes list - construct global driver bind structure - install driver protocol ** 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 *** open_volume - ensure chunks are loaded - populate file handle - construct inode from fsroot and vol **** load_chunks **** populate_file_handle *** get_arc_name returns superblock uuid field *** get_driver_name just returns "btrfs" *** open_subvol ** drv_stop - cleanup / deallocating - close diskio/blockio protocols ** drv_supported - checks for disk_io and block_io * boot function find and open btrfs disk and subvol, if specified check for, and open system32 folder add_image kernel executable and hal library ** add_image *** args - images list - image name and dir - memory type SystemCode for kernel, HalCode for hal.dll - is dll? - bdle / boot driver list entry always null - order load order of drivers - no_reloc false for kernel and HAL, and drivers *** function keeps track of image in a linked list ** add kernel and hal to image list *** kernel image should we look for alternate kernel images? *mp,*pa,*amp ** 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