uKernel is intended to be the kernel of the DeforaOS Operating System.
This project is in a very early stage and only targets the Intel 32-bit architecture for the moment (x86). Support for the Intel 64-bit architecture is in progress (amd64).
First, when compiling from the source code repository, make sure that the Git submodules have been initialized and checked out as required:
$ git submodule init
$ git submodule update
Then, the Makefiles must be generated for the current platform. This can be
performed with configure(1)
from the DeforaOS configure project, found at
https://www.defora.org/os/project/16/configure (or on the Github mirror at
https://github.com/DeforaOS/configure). The procedure is then as follows:
$ configure
Please refer to the documentation of DeforaOS configure for further instructions.
Once this done, to build uKernel for the Intel 32-bit architecture, simply run:
$ make ARCH="i386" CC="/path/to/compiler"
To build uKernel for the Intel 64-bit architecture, this would be:
$ make ARCH="amd64" CC="/path/to/compiler"
The "CC" parameter is only required if a compiler other than the default is necessary. When using GCC, it is normally recommended to use a compiler specifically targeted for this purpose.
The resulting kernel is located in src/kernel/uKernel.bin
. On the i386 and
amd64 platforms, it produces a multiboot-compliant kernel file.
Note that it is also possible to build uKernel outside of the source tree, by using the "OBJDIR" variable as follows:
$ make ARCH="i386" OBJDIR="$PWD/obj-i386/"
(note that the trailing slash is required)
To test uKernel for the Intel 32-bit platform:
$ qemu-system-i386 -kernel src/kernel/uKernel.bin
It is also possible to leverage the generic loader:
$ qemu-system-i386 -kernel src/loader/uLoader.bin -initrd src/kernel/uKernel.bin
On the Intel 64-bit platform, the loader is actually required:
$ qemu-system-x86_64 -kernel src/loader/uLoader.bin -initrd src/kernel/uKernel.bin
The build system will automatically try to create a bootable ISO image in
src/DeforaOS.iso
on supported platforms.
On Intel-based platforms (i386, amd64) this currently requires GNU GRUB and the corresponding dependencies (eg xorriso) to be installed.