The project was originally named in honor of my brother YuJian, but later changed its name to RendezvOS, which was taken from the word rendezvous, used to express a romantic and expectant encounter.
YuJian is my senior brother, a 2020 master's student in the Department of Computer Science and Technology at Tsinghua University. He has an incredible talent for mathematics and computer science, as well as an extremely hard and diligent attitude to study and work, which is my role model in life
This repo is not a complete kernel, but only a 'kernel' of a kernel, which can also be seen as a hal level.
This repo provide the boot ,memory manage, basic thread and task manage.
Of course, I will try to add a linux compatible level for test.
You should add the kernel compatible level into the script/config/config_##arch##.json for your own kernel
for example, current test repo is like:
"RendezvOS_Linux":{
"use":true,
"features":[
"RendezvOS_Linux"
],
"depend_module":[
"log"
],
"path":"modules/RendezvOS_Linux",
"git":"git@github.com:ZhiyuanSue/RendezvOS_Linux.git"
}
In that git repo, you should provide the syscall function and register the irq handler functions, and the main_init function, which is used for the kernel init part, it is first boot into the RendezvOS's 'main' and then boot into the kernel's main_init, etc.
Otherwise, the code might cannot pass the complie.
Besides, you should also add a modules/user code, RendezvOS now is in developing, so no filesystem can be used, and I add a 'link_app.py' to generate a link_app.S and using 'incbin' way to get the user test case.
The user repo and the script/make/user.mk is generated by the script/config/user.py and the script/config/user.json. and then using the make user can generate the user elf file.
But, if it's necessery, you should not using the incbin way, and then you need to change the scripts and set the user repo by yourself.
If you need the env, just run
./build_env.sh
the script will automatically install all what you need, some software might need the password of the computer.
First you need to config it,choose an arch, e.g.
make config ARCH=x86_64
now you can choose 'x86_64' or 'aarch64'
if you need the user test cases,just run
make user
which can be configured in script/script/user.json and script/script/user.py then
make run
no more other steps
if you have change the config under script/config/xxx.json, you should reconfig it,but no need to give the arch again
make config
using
make run LOG=true
to add the qemu log
as for the kernel log level, you should set in config##arch##.json, and should not set in make cmd
and using
make run DBG=true
to using gdb
and using
make run DUMP=true
make dump
to generate the dump file
and using
make run SMP=1(or any other other number)
to set the smp number
and using
meke run MEM_SIZE=1G
to set the memory as 1G
The config file, which is read by configure.py, is the config file for the kernel
if you want to change it ,just see what happened in the configure.py or you can try to build one for yourself.
unlike the toml file in rust, all the configure of rendezvos is set in config file ,and no more work for the kernel developer.
I reused some of the code from some open source projects, so I have to acknoledge them - U-boot(https://github.com/u-boot/u-boot): I reuse the dtb part and some definations of u-boot(and it use GPL2.0) - Linux(https://www.kernel.org/): I reuse the errno part from linux,maybe more,for lost of the common sence of my own might comes from Linux