Commit Graph

1478 Commits

Author SHA1 Message Date
Bananymous ef53aab24a Bootloader add temporary initial command line
This will probably be read from some config file at some point
2023-11-17 20:38:38 +02:00
Bananymous cb5a5d3ed1 Kernel/Bootloader: banan-os can now be booted with my bootloader :D 2023-11-17 20:33:02 +02:00
Bananymous d1444761a3 Bootloader: Clear screen, better memcpy
Clear screen before jumping to kernel. Memcpy now uses ebx as offset
register, so only one register has to updated every loop
2023-11-17 20:31:42 +02:00
Bananymous 95af728e39 Kernel: Don't calculate divisor in a for loop in ext2 inodes 2023-11-17 19:02:01 +02:00
Bananymous 24d87acec4 Kernel: Serial now uses random size for some serial ports
If the serial port doesn't repond with a size, just use a random
one. There is no reason to ditch the whole output if you cannot
determine its size.
2023-11-17 18:56:02 +02:00
Bananymous 84040e64b8 Kernel: Don't use multiboot2 explicitly. Parse it to common structure
This allows support of multiple different bootloaders
2023-11-17 18:54:59 +02:00
Bananymous 641a2dec00 Bootloader: Load kernel to memory and jump to it! 2023-11-17 16:36:29 +02:00
Bananymous 9e69053e64 Bootloader enter unreal mode at the start of stage2 2023-11-17 14:22:21 +02:00
Bananymous 1a415a380a Bootloader: Fix getting command line 2023-11-17 13:17:44 +02:00
Bananymous a19c5c672b Bootloader: implement reading from inode 2023-11-17 13:17:44 +02:00
Bananymous 3bcbc7c018 Bootloader: add support for indirect inode blocks 2023-11-16 13:34:21 +02:00
Bananymous b371abade5 Bootloader: Add helpers for printing n bit hexadecimal numbers 2023-11-16 13:30:01 +02:00
Bananymous 9d4101e0c5 Bootloader: Implement basic ext2 filesystem
This can search for files in an ext2 filesystem. Only 12 blocks
are currently supported.

Now only ELF loading is missing for loading the actual kernel!
2023-11-15 16:58:26 +02:00
Bananymous c791a1c200 Bootloader: Build with cmake instead of custom script 2023-11-14 03:44:47 +02:00
Bananymous bd3f2bb61c Bootloader: Split bootloader into multiple files
This cleans up the code since bootloader is starting to near 1k lines
2023-11-14 03:27:52 +02:00
Bananymous 7ca9a961b3 Bootloader move bootloader code from arch directory
The os itself only supports x86 so this won't matter. x86_64 and i386
use the same bootloader assembly.
2023-11-13 21:42:58 +02:00
Bananymous cbb9422ee0 Bootloader: installer now uses banan os elf headers intead of Linux's 2023-11-13 21:40:15 +02:00
Bananymous 2c2ee6636f fixup 2023-11-13 21:39:48 +02:00
Bananymous 3beebd721f LibELF: Remove 2 32 bit types that don't exist 2023-11-13 21:39:39 +02:00
Bananymous 048bbf874a Bootloader: Find root partition from GPT header 2023-11-13 18:55:48 +02:00
Bananymous d2970b5b8d Bootloader: installer now patches GPT GUID's 2023-11-13 18:53:55 +02:00
Bananymous 0004d3b435 Bootloader: Add API to create GUID from string 2023-11-13 18:52:41 +02:00
Bananymous d5aa08baa5 BuildSystem: add bootloader target
Use this target to run banan-os with custom bootloader
2023-11-12 01:50:30 +02:00
Bananymous 5362962d9a BuildSystem: add proper clean target 2023-11-12 01:14:42 +02:00
Bananymous bfe6d60e9e ls: print link targets when listing files 2023-11-11 23:17:18 +02:00
Bananymous c084ce8b01 Kernel/LibC: Implement readlink and readlinkat 2023-11-11 23:16:52 +02:00
Bananymous 381cfdad77 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 cfc7313451 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 bc8fd1285f 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 8e5224ef53 Toolchain: add em=gnu to gas. This allows using / in expressions 2023-11-09 21:43:13 +02:00
Bananymous fda0dfec30 Kernel: Make TmpFS enforce max page count. 2023-11-07 16:13:21 +02:00
Bananymous d6ae1bcf36 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 5044810451 Kernel: Make DevFS use the new and better TmpFS instead of RamFS 2023-11-07 16:05:05 +02:00
Bananymous 147cd93ed3 Kernel: Add method to TmpFS for looping over all (cached) inodes 2023-11-07 16:04:34 +02:00
Bananymous 07b5920f3f Kernel: Lock TmpFS in all its methods 2023-11-07 16:03:52 +02:00
Bananymous 2bcf934389 Kernel: Implement symlinks to TmpFS 2023-11-07 15:59:50 +02:00
Bananymous 1405712f26 Kernel: Make PS/2 keyboard wait until interrupts are enabled 2023-11-07 15:58:50 +02:00
Bananymous a8ffe6b3a6 BuildSystem: Fix temporary sysroot creation in toolchain compilation 2023-11-07 14:16:49 +02:00
Bananymous 613d6640fe meminfo: better format for files without permissions 2023-11-07 02:41:01 +02:00
Bananymous 885ed218fa Kernel: Make unlinking from /proc always fail with EPERM 2023-11-07 02:40:27 +02:00
Bananymous b1f431d962 Kernel: /tmp is now TmpFS instead of RamFS 2023-11-07 02:36:22 +02:00
Bananymous 06e176e6b9 Kernel: Make ProcFS use the new TmpFS internally 2023-11-07 02:35:44 +02:00
Bananymous b7771e95ac Kernel: Implement TmpFS Inode unlinking and deletion 2023-11-06 21:49:12 +02:00
Bananymous 3e33fc156b Kernel: TmpFS directory inodes now iterate over only valid entries 2023-11-06 21:41:51 +02:00
Bananymous 438f01a856 Kernel: Fix TmpFS directory entry enumeration early return 2023-11-06 21:06:10 +02:00
Bananymous 5dd8189048 Kernel: Fix ext2 directory listing for big directories 2023-11-06 21:05:58 +02:00
Bananymous ff6b127c3a Kernel: Implement TmpFS directory listing 2023-11-06 21:05:58 +02:00
Bananymous c3ed700324 Kernel: Implement TmpFS inode chmod 2023-11-06 20:11:34 +02:00
Bananymous ba2f09a4e6 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 c92c1b8e2b Kernel: TmpInode blocks are on demand allocated 2023-11-06 10:44:37 +02:00