Bootes is a 16 bit operating system written in x86 assembler that was intended to become a scriptable boot loader similar to GRUB.
The project started out of curiosity and ended up becoming a bachelor degree thesys.
To be presented for the thesys, it gained the more aggressive name "iOS" before some one else used it! Bootes proved to be a successful project for its new purpose of gaining University points.
It has been discontinued since then (2003) and is now open for learning purposes. Bit and pieces of functionalities will be collected and put together in the GitHub repository of this project. The original intentions for Bootes was to boot a C++ operating system (codenamed Chaos) that was never realized.
The repository contains a pre-build image of a bootable floppy disk that can be used to run Bootes without the need of building it.
Download and install the latest version of BOCHS. OS X users can use Homebrew and follow the instructions of brew install bochs
.
Run BOCHS from the bin directory.
At this point BOCHS should load the provided bochsrc.txt configuration file and start Bootes.
If for some reason you still have a hardware floppy disk reader, you can create a bootable Bootes floppy disk following this checklist:
- Build Bootes (see later)
- Format the floppy with FAT12
- Copy the file
bin/objects/Stage2
to the root of the floppy disk. This must be the first file written to the disk and must not be renamed or modified - Use the command
dd -if=bin/Stage1.FAT12 of=<floppy> count=1
to write the Stage1 to the boot sector (I don't remember how that file got created)<floppy>
is something like/dev/fd0
in Unix systems and\\.\a
for Windows- The
dd
command for Windows is available here
At this point you should have a bootable floppy disk. If left inserted when rebooting the machine, Bootes should run.
It should also be possible to install Bootes on a FAT32 formatted hard disk but instructions for that should be reconstructed.
Once in Bootes you should be presented with a prompt. Bootes uses name spaced commands and has tab completion!
You can also use the tab
key to cycle through all sub-namespaces.
Explore available commands with:
iOS.Script.InfoNamespace()
gives a list of available namespaces.iOS.Script.InfoNamespace("iOS.IO.Console")
will list all functions in theiOS.IO.Console
namespace.
There is a special directive to get documentation on a command:
help iOS.IO.Console.Write
will give a description of theiOS.IO.Console.Write
command
Hello wordl with shell variable usage:
myvar = "Hello world!\n"
iOS.IO.Console.Write( myvar )
To shutdown the machine:
iOS.Machine.Shutdown()
oriOS.Machine.Reboot()
There may be more secrets in Bootes like a bare-bone graphical interface and the actual ability to boot something. The mysterious startup.ios
file was also used for something. More instructions may be added in the future.
To build Bootes you need FASM. There is also a working OS X FASM version in the FASM message board (by Zab, you'll need to register to the board to download the file).
The building process is described in Makefile.bat
for a Windows console, it's reported here:
fasm Stage1\Stage1.asm bin\objects\Stage1
to build the Stage1fasm Stage2\Stage2.asm bin\objects\Stage2
to build the Stage2fasm Stage1\Loaders\Stage1.Loader.FAT32.asm bin\objects\Stage1.Loader.FAT32
to build something unknowncopy bin\objects\Stage1/b + bin\objects\Stage2/b bin\Bootes.img
Windows command to concatenate 2 files using binary mode to read them
MIT License