Need help with OS67?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

SilverRainZ
610 Stars 107 Forks GNU General Public License v3.0 305 Commits 10 Opened issues

Description

An unix-like toy kernel

Services available

!
?

Need anything else?

Contributors list

# 90,156
gtk
irc-cli...
Markdow...
rust-bo...
285 commits
# 33,844
Linux
xlib
Firefox
cpp11
5 commits
# 574,672
C
Python
Shell
osdev
1 commit
# 43,682
Arch Li...
image-e...
markup-...
messeng...
1 commit
# 2,107
penetra...
python-...
sklearn
pca
1 commit

OS67

OS67 is a unix-like toy kernel, which comes with some user routines. (x86 based)

OS67

Build requirements

Platform: Linux

  • gnu make
  • nasm
  • gcc
  • binutils(ld, objcopy)
  • mkfs
  • bochs 2.6.7+

How to compile

git clone https://github.com/SilverRainZ/OS67.git
cd OS67
make init   # only for first time
make fs     # build root file system and user routines, root privilege required
make        # build kernel
make run    # run with bochs

Syscalls list

int _fork();
int _exit();
int _wait();
int _pipe(int *fd);
int _read(int fd, char *addr, uint32_t n);
int _kill(int pid);
int _exec(char *path, char **argv);
int _fstat(int fd, struct stat *stat);
int _chdir(char *path);
int _dup(int fd);
int _getpid();
int _sleep(uint32_t sec);
int _uptime();
int _open(char *path, uint32_t mode);
int _write(int fd, char *addr, uint32_t n);
int _mknod(char *path, uint32_t di);
int _unlink(char *path);
int _link(char *old, char *new);
int _mkdir(char *path);
int _close(int fd);

User routines list

  • sh: a simple shell, support IO redirect and pipe
  • ls: list files
  • cat: read from stdin and send it to stdout
  • mkdir: make directory
  • rm: remove file
  • ...

Write youself a user routine

  • add a new file in
    usr/
    :
    touch usr/newroutine.c
  • add a new value to
    UPROGS
    variable in
    Makefile
    as follow:
- UPROGS =  bin/cinit bin/sh bin/cat bin/ls bin/mkdir bin/rm
+ UPROGS =  bin/cinit bin/sh bin/cat bin/ls bin/mkdir bin/rm bin/newroutine
  • in newroutine.c you can use these header files:
    • usys.h: system call interfaces
    • uio.h: basic input output functions
    • string.h: basic string operate functions
  • make fs && make run
    then you can run your user routine

Bug report

See Issues · SilverRainZ/OS67

Please paste the kernel logs in the issue.

Uncomment macro

__LOG_ON
as follow to enable logging of specific file:
- // #define __LOG_ON 1
+ #define __LOG_ON 1

License

GNU General Public License Version 3

References

Thanks to

Just for fun.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.