Nanoos - A C++ asm(x86) Hobby OS developed using g++
Nano OSAn object oriented OS written in C++ and assembly. How toI recommend trying out the floppy disk image(very recent) first. Please download the disk image. use qemu or bochs to boot the image. After you satisfied your self please join the project and checkout the source. Play around and understand what is happening where. then discuss here and try to implement small chunks and small functionality. I will suggest try out modifying the shell code to add few more commands. Next modify IStream subsystem to handle int, pointer, HEX etc... Present FeaturesMulti boot compliant (tested with GRUB) Hope it will work with syslinux too C++ minimal run time is present written as object oriented kernel 32-bit protected mode Memory manager for physical memory only CPU detection, Memory detection and IDE hard disk detection IDE hard disk read is possible Partion table parsing is in-built to IDE code FAT16 Partitions are recognised now Multi Tasking(kernel threads) round-robin scheduling with priority To DoMemory manager will be re-written using paging(first priority) Chris Gheezee's Malloc implementation based on heap implemented. Multi tasking (second priority) thread join need to be proper (see thread_catcher()) application loading atleast elf and coff binary.(third priority) I am planning to create a driver template so that it will be easy to write drivers floppy driver IDE driver ( See changelog bellow) network stack (might be mu-tcp/ip) ether net driver for rtl series and NE2k NFS client side (too ambitious ) Modify IStream and OStream for better functionality. specially implemet getstring() in cin Filesystem atleast FAT-16 will be nice. (any help on this with reference to the present code will be highly appreciated) Somany more Note Help me to grow this embryo remember this is not going to compete with any other OS This is purely for Experimentation and Learning, Covered under GNU GPL-V2 if you find this interesting and want to contribute, I will be happy to accept your code Screen ShotsNanoOS Booting the GRUB screen NanoOS Shell with remains of other tasks NanoOS Shell Prompt ready NanoOS Shell Showing Tasks with there states and parent and number of children NanoOS shell showing pci info in qemu( my BOCHS doesnt have PCI ???) change log9th december 2008: Kmalloc kfre krealloc implementation based on Chris gheeze's Heap based first fit allocator 18th december 2008: rudimentary dma and fdc code ported. 5th January 2009 : IDE hard disk driver is implmented. ( Only Reading) This works under BOCHS but not Under Qemu, I don't know Why??? 7th January 2009 : IDE driver in read_sector a minor bug is fixed, Partition Scanning is implemented. 13th January 2009 : IDE driver now works fine under BOCHS and qemu. cpuinfo now displays properly. 9th February 209 : A rudimentary FAT16 is implmented, It now only be used to check if the Kernel recognizes FAT16 partition or not. The Image Works with qemu. For details how to PLease Check the Wiki. 11th March 2010 : Few modification to malloc family in kheap.cpp Initial PCI code but not working, initial tasking code not tested, Use of class template for singleton class. multiboot class is derived from singleton template. 20th March 2010 : Multitasking of 4 task for done. This is just to test the context switch is working correctly. :) enjoy. 30th April 2010 : Task/thread functions are accepting parameter. And thread exit is handled, 7th June 2010 : Basic Thread join is working. 10th June 2010: the Directory structure is changed and the build process is changed from Bash script to Makefile. 19th June 2010 : Initial PCI stuff added pci.cpp pci.h pcidef.h
comments powered by Disqus
MINIX 3 is a free, open-source, operating system designed to be highly reliable, flexible, and secure. It is based on a tiny microkernel running in kernel mode with the rest of the operating system running as a collection of isolated, protected, processes in user mode.
The Genode operating-system framework provides a uniform API for applications on top of 8 existing microkernels/hypervisors: Linux, L4ka::Pistachio, L4/Fiasco, OKL4, NOVA, Fiasco.OC, Codezero, and a custom kernel for ARM SoCs. For developers, the framework provides an easy way to target multiple different kernels instead of tying the development to a particular kernel technology.
Ubuntu is a fork of Debian. Its main goal is to make easy to use Linux desktop. It provides stylish and intuitive user interface called Unity. All of the editions of Ubuntu share common infrastructure and software, making Ubuntu a unique platform that scales from consumer electronics to the desktop, and into the cloud for enterprise computing. It comes installed with a wide range of software. It supports 32 bit and 64 bit architecture.
VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. VirtualBox runs on Windows, Linux, Macintosh, and Solaris hosts and supports a large number of guest operating systems. So, for example, you can run Windows and Linux on your Mac. VirtualBox is a so-called hosted hypervisor. It requires an existing operating system to be installed. It can thus run alongside existing applications on that host.
The Xen hypervisor is a layer of software running directly on computer hardware replacing the operating system thereby allowing the computer hardware to run multiple guest operating systems concurrently. It suppors x86, x86-64, Itanium, Power PC, and ARM processors allow the Xen hypervisor to run on a wide variety of computing devices.
Debian is a free operating system (OS) for your computer. An operating system is the set of basic programs and utilities that make your computer run. Debian provides more than a pure OS: it comes with over 29000 packages, precompiled software bundled up in a nice format for easy installation on your machine.
Tizen is an open source, standards-based software platform for multiple device categories, including smartphones, tablets, netbooks, in-vehicle infotainment devices, smart TVs, wearable and more. Tizen offers an innovative operating system, applications, and a user experience that consumers can take from device to device.
Unicorn is an HTTP server for Rack applications designed to only serve fast clients on low-latency, high-bandwidth connections and take advantage of features in Unix/Unix-like kernels. Load balancing is done entirely by the operating system kernel. Requests never pile up behind a busy worker process. Does not care if your application is thread-safe or not, workers all run within their own isolated address space and only serve one client at a time for maximum robustness.
wxWidgets is a C++ library that lets developers create applications for Windows, OS X, Linux and UNIX on 32-bit and 64-bit architectures as well as several mobile platforms including Windows Mobile, iPhone SDK and embedded GTK+. It has the usual basic controls such as text and bitmap buttons, text entry, scrolling list, combobox, checkbox, and so on. Additional to that Powerful event system, Printing facility etc..