How to start OS Development

Thilina Madushan
3 min readJul 25, 2020

Extend Josh OS within Linux

How startup the computer?

When start the computer firstly,BIOS firmware copy to the RAM and call the CPU for execute that. After that firmware give the instruction for call to the boot sector in the hard disk.Now execute OS.

Josh-OS interface

Now we learn how to develop OS using JOSH OS,

Josh OS is real-mode operating system and it is a single tasking operating system.

First you install followings for the OS development

  1. nasm
  2. qemu / virtual box

You can use following command for that

sudo apt-get install nasm

sudo apt-get install qemu

I feel virtual box is good because of that I use it for my works.After that all we start our work for run the JOSH OS.

Step 1:

Download the kernel code and boot strap loader code and save it as assembly language source file format in desktop .

Step 2:

Convert it to bin format

nasm -elf64 kernel.asm -o kernel.bin -f bin

nasm -elf64 boot.asm -o boot.bin -f bin

Step 3:

Go to the media folder and create the folder as myfloppy or some thing .

cd /media

sudo mkdir myfloppy

Step 4:

Go to the desktop directory and give following command for create 1440kb myfloppy.img file.

mkfs.msdos -C myfloppy.img 1440

Step 5:

Mount the myfloppy.img file and myfloppy folder

sudo mount -o loop myfloppy.img /media/myfloppy/

Step 6:

Check file System name of that mounted virtual device

df -h

In my case it is /dev/loop0

Step 7:

Copy the boot.bin file into the boot sector of the disk.

sudo dd if=./boot.bin of=/dev/loop0

Step 8:

Copy the kernel.bin file into the disk.

sudo cp kernel.bin /media/myfloppy/

Step 9:

If you want check it use following code.

ls -l /media/myfloppy/

Step 10:

Unmount the myfloppy device and remove the myfloppy folder in media directory.

sudo umount /media/myfloppy/

sudo rm -rf /media/myfloppy/

Now , myfloppy.img file is a bootable file.You can try it using virtual box or qemu application.

After all you can start to develop the JOSH-OS using Assembly language.

In our case, boot.bin work as a boot strap loader .It is the part of executed one first of all other OS code.

If you want to add new features to JOSH ,edit the kernel.asm file and create the bootable file again.

click here to get my codes and img file.

Reference:

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Thilina Madushan
Thilina Madushan

Written by Thilina Madushan

Software Engineering undergraduate at University of Kelaniya

Responses (1)

Write a response