PageRenderTime 24ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/README.md

https://gitlab.com/bluehole/nanoos
Markdown | 119 lines | 74 code | 45 blank | 0 comment | 0 complexity | 61eda44a52c51df41fa34d6592662f70 MD5 | raw file
  1. # nanoos
  2. Automatically exported from code.google.com/p/nanoos
  3. Please Contribute to this project
  4. It is really Nice and my pleasure that there are some new OS projects based out of Nano OS e.g K++ by Patrick Plenefisch. My sincere thanks to Patrick and welcome to the fun world of machines.
  5. if you are interested please contact me
  6. Please put your comments at Comments
  7. <b>Nano OS</b>
  8. An object oriented OS written in C++ and assembly.
  9. <b>How to</b>
  10. I recommend trying out the floppy disk image(very recent) first. Please download the disk image. use qemu or bochs to boot the image.
  11. 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.
  12. I will suggest try out modifying the shell code to add few more commands.
  13. Next modify IStream subsystem to handle int, pointer, HEX etc...
  14. <b>Present Features<b>
  15. Multi boot compliant (tested with GRUB) Hope it will work with syslinux too
  16. C++ minimal run time is present
  17. written as object oriented kernel
  18. 32-bit protected mode
  19. Memory manager for physical memory only
  20. CPU detection, Memory detection and IDE hard disk detection
  21. IDE hard disk read is possible
  22. Partion table parsing is in-built to IDE code
  23. FAT16 Partitions are recognised now
  24. Multi Tasking(kernel threads)
  25. round-robin scheduling with priority
  26. Rudimentary Ethernet(NE2k) driver
  27. <b>To Do</b>
  28. Memory manager will be re-written using paging(first priority)
  29. Chris Gheezee's Malloc implementation based on heap implemented.
  30. Multi tasking (second priority)
  31. thread join need to be proper (see thread_catcher())
  32. application loading atleast elf and coff binary.(third priority)
  33. I am planning to create a driver template so that it will be easy to write drivers
  34. floppy driver
  35. IDE driver ( See changelog bellow)
  36. network stack (might be mu-tcp/ip)
  37. ether net driver for rtl series and NE2k
  38. NFS client side (too ambitious )
  39. Modify IStream and OStream for better functionality. specially implemet getstring() in cin
  40. Filesystem atleast FAT-16 will be nice. (any help on this with reference to the present code will be highly appreciated)
  41. Somany more
  42. <b>Note</b>
  43. Help me to grow this embryo
  44. K++ https://bitbucket.org/byteit101/k/overview is written based on NanoOS with good additions. Thanks Patrick Plenefisch
  45. remember this is not going to compete with any other OS
  46. This is purely for Experimentation and Learning, Covered under GNU GPL-V2
  47. if you find this interesting and want to contribute, I will be happy to accept your code
  48. Screen Shots
  49. NanoOS Booting the GRUB screen
  50. http://nanoos.googlecode.com/files/nanoos-grub.png
  51. NanoOS Shell with remains of other tasks
  52. http://nanoos.googlecode.com/files/nanoos-shell1.png
  53. NanoOS Shell Prompt ready
  54. http://nanoos.googlecode.com/files/nanoos-shell2.png
  55. NanoOS Shell Showing Tasks with there states and parent and number of children
  56. http://nanoos.googlecode.com/files/nanoos-tasks.png
  57. NanoOS shell showing pci info in qemu( my BOCHS doesnt have PCI ???)
  58. http://nanoos.googlecode.com/files/nanos-pci-listing.png
  59. change log
  60. 9th december 2008: Kmalloc kfre krealloc implementation based on Chris gheeze's Heap based first fit allocator
  61. 18th december 2008: rudimentary dma and fdc code ported.
  62. 5th January 2009 : IDE hard disk driver is implmented. ( Only Reading) This works under BOCHS but not Under Qemu, I don't know Why???
  63. 7th January 2009 : IDE driver in read_sector a minor bug is fixed, Partition Scanning is implemented.
  64. 13th January 2009 : IDE driver now works fine under BOCHS and qemu. cpuinfo now displays properly.
  65. 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.
  66. 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.
  67. 20th March 2010 : Multitasking of 4 task for done. This is just to test the context switch is working correctly. :) enjoy.
  68. 30th April 2010 : Task/thread functions are accepting parameter. And thread exit is handled,
  69. 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.
  70. 19th June 2010 : Initial PCI stuff added pci.cpp pci.h pcidef.h
  71. 13th July 2012 : Now uses GRUB-2 based ISO use 'make iso2' for make. Some how I think i managed to put the IDE driver working but in alpha stage. If you can help me then please do so.
  72. 20th July 2012 : Boot using BOCHS or QEMU. ATA driver is working and can display the root directory of each partitions identified as fat16. on the shell prompt type "ide" to see the physical disks and "sysdriveinfo" to see the details.
  73. 3rd august 2012: Basic RTL8139 PCI driver implementation, The driver is not firing IRQ.
  74. 22nd August 2012: Now The RTL8139 driver fires interrupt.