jdetter / chronos Goto Github PK
View Code? Open in Web Editor NEWThe Chronos kernel
License: GNU General Public License v3.0
The Chronos kernel
License: GNU General Public License v3.0
To consider:
I'll also update this first comment with any other suggestions to consider and leave discussion to comments.
The debugging system is really crufty right now and has a lot of room for improvement.
Right now there is no support for the kernel setting the errno value. The errno value should be passed back to the user program in a general purpose register (probably ECX).
Testsuite tests will be provided.
Mounting a file system with a block size less than 4K causes the driver not to work properly. I don't think I've noticed a crash but all of the data is nonsense.
System also won't boot with an ext2 system with a non 4K block size.
The ata_readsect assembly function is not reading sector number above ~128.
This test passes on Linux, however causes a segfault in Chronos. Reproducer program (malloc test in testsuite):
#include <stdlib.h>
#include <testsuite.h>
#define COUNT 0x10000
#define ALLOC_SIZE 0x1000
int main(int argc, char** argv)
{
int* arr[COUNT];
int x;
for(x = 0;x < COUNT;x++)
{
arr[x] = malloc(ALLOC_SIZE);
if(!arr[x])
TESTFAILURE;
}
for(x = 0;x < COUNT;x++)
free(arr[x]);
for(x = 0;x < COUNT;x++)
{
arr[x] = malloc(ALLOC_SIZE);
if(!arr[x])
TESTFAILURE;
}
for(x = 0;x < COUNT;x++)
free(arr[x]);
TESTSUCCESS;
return 0;
}
The boot stage 2 has changed significantly recently and has gotten much bigger and will grow much more very soon with the addition of root partition detection. The new boot stage 2 will start at physical address 0x6000
and go to physical address 0x20000
, which makes it 88KB in size. I have moved around a lot of the kernel argument stuff (current video mode, start of page pool, ect.) because before we were writing over BIOS data.I have posted the new map as a gist:
https://gist.github.com/jdetter/ca388fce7828420c313f57535a720f13
A large amount of space has been left in the text section because we still haven't added support for root partition detection
Feel free to close if they should still be hosted on chronos.systems
or this isn't worth the effort.
Kernel support needs to be added for global (accross file systems) symbol links.
Right now, Chronos will search for the first EXT2 file system on the disk and use that as the root file system and then mount a memory based file system on /dev (creating /dev first if necessary). Support needs to be added for an fstab file so that different partitions can be mounted at different places in the file system. This will also be a precursor to adding support for booting with GRUB2.
Add support for RAID levels 0 and 1.
Support for chainloading through GRUB2 needs to be added.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.