1

I have downloaded a MINIX 3 OS, and I run it in parallels desktop on my Mac pro. the MINIX3 is a .iso file, and I want to know how to write some program and pack it out to a .iso file. and run it by virtual machine(Parallels Desktop)?

what should I do?

I am a Android Developer.

krosshj
  • 855
  • 2
  • 11
  • 25
  • 2
    You could refer to the documentation on MMURTL V1.0 found at http://www.ipdatacorp.com/mmurtl/ for some ideas. – Benilda Key Oct 23 '14 at 03:57
  • 1
    I suppose you don't want to spend a few years locked in a dark room and start everything from scratch. You can reuse an existing OS kernel to pack your "program" with. See http://en.wikipedia.org/wiki/List_of_operating_systems#Non-proprietary, http://en.wikipedia.org/wiki/Boot_disk, http://en.wikipedia.org/wiki/Live_CD. What do you want to achieve beyond the colored "Hello World"? – xmojmr Oct 23 '14 at 10:34

2 Answers2

7

Writing a OS, even a simple command line one, is significantly different than application programming that you would see as an Android developer. Parallels Desktop and other virtual machines simulate an enviroment in which an operating system believes it is running on real hardware, so this would be the equivalent of writing a simple operating system on a raw PC.

Some examples of things that you will have to be familiar with to write an operating system from scratch are the following:

  • Knowledge of C and Assembly Programming
  • Knowledge of the target architecture (in this case, x86)
  • Knowledge of the boot process for the particular device

The knowledge needed to really be able to do all of this without a step by step guide takes years of learning and experience with how hardware and software interact, reading datasheets with sometimes missing documentation, etc. This is often experience that is not gained in application development. This is because in Operating Systems, you don't have many of the things you take for granted in application development, such as processes, input/output functions, datastructures such as hash-tables and maps, memory managment etc.

Don't panic! You don't need to know all of this to start developing a simple OS. You can start with a tutorial on how to write a simple operating system which will guide you through all the components and steps needed. There are several sites that provide this, but the best on in my opinion is the OsDev Wiki. There, you will find tutorials and information on OS development that will guide you through the entire process, as well as sample hobby OS's that people have made.

Rather than focus on a command line os that boots from an ISO image, I would go through the tutorial on the wiki found here: http://wiki.osdev.org/Bare_Bones. This will get you started with a very minimal "Hello World" operating system that boots from a floppy image, much simpler than ISO. The tutorial is quite in depth, going into the hardware and software interactions and the boot process.

It has always been my opinion that good developers, even ones who write web or android apps, understand the low level aspects such as assembly and hardware/software interaction. The absolute fastest way to learn such is through tutorials such as this.

Best of luck!

Dougvj
  • 6,409
  • 2
  • 23
  • 18
  • Thank you at all, I did also feel this is too difficult and complex. But I will try it in my best. – krosshj Oct 23 '14 at 07:22
0

I have come across a project called MikeOS (http://mikeos.sourceforge.net/)

As well I have found this tutorial on creating a simple bare bones OS that can be extended with inspiration from the MikeOS project.

Anyone with general programming and Linux skills should be able to follow it. http://mikeos.sourceforge.net/write-your-own-os.html

Samuel Meddows
  • 36,162
  • 12
  • 38
  • 36