Commit Graph

1253 Commits

Author SHA1 Message Date
Bananymous 4ba3a17af3 Kernel: Add more APIs to FramebufferDevice 2023-11-22 21:56:27 +02:00
Bananymous e9d762892c Kernel: Implement basic framebuffer device
This allows exposing framebuffer to userspace
2023-11-22 20:34:41 +02:00
Bananymous d98782a10c Bootloader: Add cache to ext2 inode data block indices
This reduces the number of read calls with current kernel size from
~1700 to ~700 (60% performance boots). Loading the kernel is now alot
faster.
2023-11-22 13:54:53 +02:00
Bananymous f86c9584f9 Bootloader: add missing size directive 2023-11-21 19:11:48 +02:00
Bananymous 52807366bf Kernel: Make Ext2 filesystem use BlockDevice instead of Partition 2023-11-21 15:20:24 +02:00
Bananymous b437d4eb41 Kernel: TmpFS doesn't mark any functions as final
I didn't think these would be overloaded, but they are
2023-11-21 15:19:34 +02:00
Bananymous 8b7f3f1fb2 Kernel: Add common {read,write}_blocks() api to BlockDevice 2023-11-21 15:19:07 +02:00
Bananymous c607f5385e Kernel: Move Partition to its own file 2023-11-21 15:16:04 +02:00
Bananymous 543a8bd7c6 BAN: Add basic GUID data structure 2023-11-21 15:11:50 +02:00
Bananymous 5e9b21bdce BuildSystem: Check value of BANAN_UEFI_BOOT with `if ((...)); then` 2023-11-21 11:53:50 +02:00
Bananymous 07b70ea7b4 BuildSystem: Add missing bootloader install script 2023-11-20 14:19:07 +02:00
Oskari Alaranta 0563643e1c Merge pull request 'BuildSystem: custom mount directory for bananos image to avoid conflicts' (#4) from Sinipelto/banan-os:main into main
Reviewed-on: #4
2023-11-20 14:16:58 +02:00
Sinipelto d72db1f81c BuildSystem: image sh
mount in build dir

Signed-off-by: Sinipelto <sinipelto@noreply.bananymous.com>
2023-11-20 14:12:35 +02:00
Sinipelto 6cfa56dcec BuildSystem: image create sh
use banan build dir

Signed-off-by: Sinipelto <sinipelto@noreply.bananymous.com>
2023-11-20 14:11:29 +02:00
Sinipelto f97922a2b5 Update script/image.sh
mount dir default value

Signed-off-by: Sinipelto <sinipelto@noreply.bananymous.com>
2023-11-20 13:28:53 +02:00
Sinipelto 566724d986 Update script/image-create.sh
custom mount dir

Signed-off-by: Sinipelto <sinipelto@noreply.bananymous.com>
2023-11-20 13:28:10 +02:00
Sinipelto a7b1810aa2 Update script/image.sh
handle custom mount dir

Signed-off-by: Sinipelto <sinipelto@noreply.bananymous.com>
2023-11-20 13:24:15 +02:00
Sinipelto a6a5c00763 Merge pull request 'update main' (#1) from Bananymous/banan-os:main into main
Reviewed-on: Sinipelto/banan-os#1
2023-11-20 13:20:51 +02:00
Bananymous f2397b775c BuildSystem: Remove old bootloader target
And creating image now builds the bootloader
2023-11-20 00:56:06 +02:00
Bananymous 8b81406b81 Toolchain: Build full toolchain with one call to toolchain/build.sh 2023-11-20 00:56:06 +02:00
Bananymous e2515c1109 Buildsystem: default bootloader is not my custom one
You can set BANAN_BOOTLOADER=GRUB to use grub instead. Image creation
does not convert disk image now automatically between bootloaders and
calling ./bos image-full is now required.
2023-11-18 17:18:03 +02:00
Bananymous 5293ae070d Kernel: ProcFS inodes reflect processes ruid/rgid
setgid/setuid did not change the permissions of procfs inodes. This
made Shell launched by init not appear in meminfo.
2023-11-18 14:26:44 +02:00
Bananymous 6e2443ca72 Bootloader do some directory restructuring 2023-11-18 13:59:45 +02:00
Bananymous a312d75bb2 Bootloader: Implement VESA video mode query and pass it to kernel
Kernel now gets framebuffer from bootloader. Framebuffer dimensions
and bpp are hardcoded in bootloader, but will probably be read from
config file at some point.
2023-11-17 22:45:35 +02:00
Bananymous a554bd0fd8 Bootloader: Fix kernel memset to zero 2023-11-17 21:05:02 +02:00
Bananymous f0d2a211ea 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 065eec430e Kernel/Bootloader: banan-os can now be booted with my bootloader :D 2023-11-17 20:33:02 +02:00
Bananymous 5f4d81a502 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 41065d2f9a Kernel: Don't calculate divisor in a for loop in ext2 inodes 2023-11-17 19:02:01 +02:00
Bananymous 3daf3d53a3 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 ec56e9c6f1 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 07ae1bbf34 Bootloader: Load kernel to memory and jump to it! 2023-11-17 16:36:29 +02:00
Bananymous 03b80ed113 Bootloader enter unreal mode at the start of stage2 2023-11-17 14:22:21 +02:00
Bananymous 407a7b80c5 Bootloader: Fix getting command line 2023-11-17 13:17:44 +02:00
Bananymous 8b4f169d0f Bootloader: implement reading from inode 2023-11-17 13:17:44 +02:00
Bananymous 6f9b3ab5de Bootloader: add support for indirect inode blocks 2023-11-16 13:34:21 +02:00
Bananymous aa7a8124ce Bootloader: Add helpers for printing n bit hexadecimal numbers 2023-11-16 13:30:01 +02:00
Bananymous a9412aa741 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 8aab3a62cc Bootloader: Build with cmake instead of custom script 2023-11-14 03:44:47 +02:00
Bananymous b0b39c56ba 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 055b1a2a1a 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 d99ef11e48 Bootloader: installer now uses banan os elf headers intead of Linux's 2023-11-13 21:40:15 +02:00
Bananymous 732eb9da41 fixup 2023-11-13 21:39:48 +02:00
Bananymous 8faad47843 LibELF: Remove 2 32 bit types that don't exist 2023-11-13 21:39:39 +02:00
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