Commit Graph

1209 Commits

Author SHA1 Message Date
Bananymous aa4f3046ff Bootloader: Find root partition from GPT header 2023-11-13 18:55:48 +02:00
Bananymous b4775fbe75 Bootloader: installer now patches GPT GUID's 2023-11-13 18:53:55 +02:00
Bananymous 8a5753b0fe Bootloader: Add API to create GUID from string 2023-11-13 18:52:41 +02:00
Bananymous 1a75262b04 BuildSystem: add bootloader target
Use this target to run banan-os with custom bootloader
2023-11-12 01:50:30 +02:00
Bananymous 39801e51da BuildSystem: add proper clean target 2023-11-12 01:14:42 +02:00
Bananymous 6e3f176457 ls: print link targets when listing files 2023-11-11 23:17:18 +02:00
Bananymous 447da99f0b Kernel/LibC: Implement readlink and readlinkat 2023-11-11 23:16:52 +02:00
Bananymous a3a287f5ca Bootloader: Continue work on bootloader
Bootloader can now get the memory map and read cmdline from user.

Now 'just' video mode query, ext2 and ELF parsing are needed :D
2023-11-11 22:49:00 +02:00
Bananymous c47f6a78bc Bootloader: Start work on bootloader
I wrote a fast first stage bootloader and a installer to put it into
a disk image.
2023-11-09 22:42:47 +02:00
Bananymous 430a006acf Toolchain: Fix typo when setting make flags
I defaultet MAKEFLAGS to -j which will launch processes in parallel
without any limit.
2023-11-09 21:57:45 +02:00
Bananymous 845ed66e5e Toolchain: add em=gnu to gas. This allows using / in expressions 2023-11-09 21:43:13 +02:00
Bananymous 2191ca46bb Kernel: Make TmpFS enforce max page count. 2023-11-07 16:13:21 +02:00
Bananymous cec04a2858 Kernel: Remove now obsolete RamFS
Everything is using now the better TmpFS which uses physical pages
for page allocation instead of the static kmalloc memory.
2023-11-07 16:07:11 +02:00
Bananymous b87351f6d5 Kernel: Make DevFS use the new and better TmpFS instead of RamFS 2023-11-07 16:05:05 +02:00
Bananymous 464737fbe9 Kernel: Add method to TmpFS for looping over all (cached) inodes 2023-11-07 16:04:34 +02:00
Bananymous 8b4f661acb Kernel: Lock TmpFS in all its methods 2023-11-07 16:03:52 +02:00
Bananymous 27963febc0 Kernel: Implement symlinks to TmpFS 2023-11-07 15:59:50 +02:00
Bananymous 6d4b684219 Kernel: Make PS/2 keyboard wait until interrupts are enabled 2023-11-07 15:58:50 +02:00
Bananymous 670c787af3 BuildSystem: Fix temporary sysroot creation in toolchain compilation 2023-11-07 14:16:49 +02:00
Bananymous a0fbf18d3b meminfo: better format for files without permissions 2023-11-07 02:41:01 +02:00
Bananymous 1acc0abf2e Kernel: Make unlinking from /proc always fail with EPERM 2023-11-07 02:40:27 +02:00
Bananymous c20f773c5d Kernel: /tmp is now TmpFS instead of RamFS 2023-11-07 02:36:22 +02:00
Bananymous a46b2f43d9 Kernel: Make ProcFS use the new TmpFS internally 2023-11-07 02:35:44 +02:00
Bananymous a20f8607de Kernel: Implement TmpFS Inode unlinking and deletion 2023-11-06 21:49:12 +02:00
Bananymous af330f7b8e Kernel: TmpFS directory inodes now iterate over only valid entries 2023-11-06 21:41:51 +02:00
Bananymous e33b3bcdff Kernel: Fix TmpFS directory entry enumeration early return 2023-11-06 21:06:10 +02:00
Bananymous 181d139c7d Kernel: Fix ext2 directory listing for big directories 2023-11-06 21:05:58 +02:00
Bananymous 639fd8804c Kernel: Implement TmpFS directory listing 2023-11-06 21:05:58 +02:00
Bananymous cbb2c37e00 Kernel: Implement TmpFS inode chmod 2023-11-06 20:11:34 +02:00
Bananymous ab4f033385 Kernel: Cleanup TmpFS code and block access doesn't require allocs
TmpFS blocks are now accessed with a simple wrapper
2023-11-06 20:07:09 +02:00
Bananymous 1ed08f62d3 Kernel: TmpInode blocks are on demand allocated 2023-11-06 10:44:37 +02:00
Bananymous 8164c15b6c Kernel: Implement read/write/truncate for TmpFileInode 2023-11-05 02:28:43 +02:00
Bananymous f9bf47ab30 Kernel: Start work on proper TmpFS in Heap instead of kmalloc memory 2023-11-04 18:18:45 +02:00
Bananymous e5ffadb109 Kernel: Add better APIs for fast page 2023-11-04 18:13:16 +02:00
Bananymous 061d10e635 BAN: Update bytespan -> span API 2023-11-04 18:12:46 +02:00
Bananymous 6d899aa6ce BuildSystem: using sysroot doesn't need root privileges anymore!
Sysroot is now created with fakeroot. This allows root access to be
only needed for disk image creation, since it uses loopback devices.
2023-11-04 17:50:43 +02:00
Bananymous 120f7329b1 BAN: Update ASSERT api
its now much harder to mix < with <= and > with >=
2023-11-02 00:01:12 +02:00
Bananymous 4f25c20c97 Kernel: Canonicalize vaddr before using it 2023-10-30 19:20:17 +02:00
Bananymous 5e396851f4 Kernel: Remove unused externs in kernel.cpp 2023-10-30 19:09:31 +02:00
Bananymous a44482639d Kernel: Temporarily force FileBackedRegion mappings writable
Now that write-protect bit is enabled this is neccessary.
2023-10-30 19:08:33 +02:00
Bananymous 3bac19e518 Kernel: Add fast page to page table
Add "fast page" to KERNEL_OFFSET. This is always present in page
tables and only requires changing the page table entry to map. This
requires no interrupts since it should only be for very operations
like memcpy.

I used to map all temporary mappings to vaddr 0, but this is much
better. C++ standard always says that nullptr access is undefined
and this gets rid of it.

Fixed some bugs I found along the way
2023-10-30 19:02:09 +02:00
Bananymous 4dbe15aa0e Kernel: Remove GeneralAllocator since it was not used 2023-10-30 18:13:17 +02:00
Bananymous 1c5985148c Kernel: Allow offsetof with packed fields
This is not standard C++ but should be fine with my toolchain.
2023-10-30 17:51:18 +02:00
Bananymous ce2461d0e8 Kernel: panic takes arguments as rvalue references 2023-10-30 16:22:02 +02:00
Bananymous 4e785a133c Kernel: Fix ext2 small link deallocation
Also fix deallocation bug
2023-10-30 16:22:02 +02:00
Bananymous 26c7aee327 Kernel: only map kernel from g_kernel_start onwards 2023-10-30 16:22:02 +02:00
Bananymous 0405461742 BAN: Implement better ASSERT macros
Implement macros for all basic binary ops. These macros print failed
values when the fail.
2023-10-30 16:22:02 +02:00
Bananymous 8a10853ba7 Kernel: Enable Write Protect. This seems to be good for security 2023-10-30 12:23:22 +02:00
Bananymous 5d34cebeca Kernel: Fix stack OOB detection
I now check both interrupt and normal stack to detect OOB. Processes
are killed if they encouner stack over/under flow.
2023-10-30 12:17:08 +02:00
Bananymous 3d899d2e44 Kernel/LibELF: Map pages always as RW so kernel can write to them
Kernel doesn't seem to require W permissions to a page without UEFI
so this had not been found earlier.
2023-10-30 12:14:12 +02:00