121 lines
2.5 KiB
Org Mode
121 lines
2.5 KiB
Org Mode
#+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
|