GithubHelp home page GithubHelp logo

dalalsunil1986 / fotix Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nlightnfotis/fotix

0.0 0.0 0.0 105 KB

My very own UNIX clone, for education/self-amusement.

License: BSD 3-Clause "New" or "Revised" License

Shell 1.89% C 91.14% Assembly 6.31% Makefile 0.66%

fotix's Introduction

fotix is a unix like clone.
Copyright (c) 2013 - 2016 Fotis Koutoulakis

Introduction

fotix is a unix like kernel that I made, mostly for self-education / self-amusement.

Features:

  • Interrupt handling.
  • Multitasking capable
  • Some (primal) memory management
  • A (primal) scheduler

Instructions

Prerequisites

To build fotix, you should have a cross-compiler. I personally used GCC-4.9 for my development purposes, targeted at i586. It goes without saying that you should also have binutils. You can get a basic toolchain installed by running the script at utils/prepare_toolchain.sh. You should also have nasm.

To build the iso, you should also have installed grub-mkrescue and xorriso. To run the iso, you can use any virtual machine hypervisor, although I personally use QEMU, and the one-step-build script is automated to use QEMU.

Building instructions

If you do have all that, just run make at the top of the project's root directory and then run the build.sh script (as root). This will create an ISO, and run it with QEMU.

If you don't want to use QEMU, simply modify build.sh to not delete the iso image, so that you can use it with another hypervisor, or just replace QEMU with your favourite hypervisor.

I should have a cross compiler built (along with binutils)

  • There is one at earth. It is under $HOME/bin/cross/
  • To use it for the session I have to do export PATH="$HOME/bin/cross/bin:$PATH"

Known bugs

  • When a fork()-ed process attemtps to run, we get a page fault, which results on a kernel panic.

Notes

02:50:34 nlightnfotis@earth ~/osdev/fotix $ cloc .
      37 text files.
      37 unique files.
     353 files ignored.

http://cloc.sourceforge.net v 1.56  T=1.0 s (33.0 files/s, 3337.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               14            325            428           1488
C/C++ Header                    13            130            190            459
Assembly                         4             39             48            190
make                             1              6              2             14
Bourne Shell                     1              3              4             11
-------------------------------------------------------------------------------
SUM:                            33            503            672           2162
-------------------------------------------------------------------------------

TODO

  • Implement IPC
  • Implement threading
  • Improve memory management
  • Implement a shell
  • Improve the scheduler

LICENSE

fotix is distributed under the BSD 3-Clause license. See file LICENSE for more info.

fotix's People

Contributors

nlightnfotis avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.