Boot framework rework (#45)
authorLunaixsky <lunaixsky@qq.com>
Fri, 30 Aug 2024 23:53:01 +0000 (00:53 +0100)
committerGitHub <noreply@github.com>
Fri, 30 Aug 2024 23:53:01 +0000 (00:53 +0100)
* remove need of grub and iso image booting

* adjust the build process and bootstrap procedure, to bypass the
  need of boot from iso image
* feat: allow custom rootfs.
* feat: add script to package rootfs with default layout.
* fix:  some left-over bugs in x86_32
* ref:  change a typo

* add `init=...` kernel option, decouple the init location

* (multiboot) use address header to instruct multiboot compliance
              to load our kernel, to give us more flexibility
* ref: make mkrootfs more flexible, by moving the rootfs structuring
       to usr/makefile
* ref: some refectoring
* fix: old mount point not being recovered when mount failed

* fix deadlock when process killed while blocked by file io

* fix: deadlock when process killed while blocked by file io.
       this bug is addressed somewhere in the past, however the latest
       refactoring break the logic.
* fix: signal delivery does not check if the process being destroyed.
* fix: procvm_mount and unmount now simply return if current mm is
       already the active one.
* fix: signal group delivery always deliver the current one, which is
       not essentially true.
* fix: incorrect thread group being terminated during terminate_process
* fix: wake the blocked reader on line_in buffer when a signal is raised
       by some control character.
* ref: some refectoring

* introduce bootmem to handle memory allocation at boot stage

* feat:  bootmem is introduce to provide memory service before
         lunaix's mm is avaliable. The implementation detail is
         left to archiecture
* ref:   we moved the preparation of boot_handoff after we have
         setup the virtual memory, to remove abuse of .*.boot sections
* fix:   remove the .bss.boot, it is not a good idea to have that
         in the middle of address space.
* feat:  add a reclaimable region that will automatically unmapped
         after exiting the bootstrapping stage. All temporary stuff
         that only matter during bootstrapping should go there.

* fix a statistical error in pmem usage stat

* ref: change u32_t to unsigned int

* dtb support (devicetre specification v0.4)

* ref:  remove trailing spaces

* remap and load the dtb during kinit stage.

* adjust the memory map of x86_32 to make room for dtb

* injection of sanitized LOAD PHDRs for kernel to setup page tables

* feat:  add a small program: elftool that give less verbose output
         than readelf. This program relies purely on standard POSIX
         library thus maximizing portability.

* manually planned program headers to make thing certain.

* remove iso packing and boot disk probing

* move -kernel/-append to autoqemu config

* dynamic high-memory setup based on linking time generated map

* fix: (vm) NX bit being lost due to incorrect pte attribute mask
* fix: (vm) instruction fetch permission issue. differentiate the
            permission for intermediate level from leaf level.
* fix:      unify all auto-generated data, now their exposed symbol
            are starts with __autogen_

* update readme, clean up out-dated stuff


No differences found