Go to file
Pierre Pronchery 4d0a4bcefc Allow a cross-compilation prefix to be specified
This is really revealing a bad design issue with the build system. The native
build of uKernel should not re-use the object files from the target. This can
only be expected to work when building the i386 or amd64 architectures on a
NetBSD/i386 or NetBSD/amd64 host, with the default toolchain.

More changes are required to fix this.
2019-05-16 23:52:28 +02:00
doc Build binutils in a loop as well 2019-05-09 17:22:06 +02:00
include Update the copyright notice 2019-05-02 04:56:44 +02:00
src Allow a cross-compilation prefix to be specified 2019-05-16 23:52:28 +02:00
tests Update the copyright notice 2019-03-27 03:56:58 +01:00
tools Register a couple more targets 2019-05-16 23:52:09 +02:00
.gitignore Ignore more object files 2018-06-08 11:23:38 -04:00
COPYING Import the 2-clause BSD license 2018-03-19 01:02:43 +01:00
project.conf Document how to build a cross-compiler 2019-03-27 01:49:52 +01:00
README.md Also list xorriso as a dependency for ISO images 2019-03-28 00:34:46 +01:00

DeforaOS uKernel

About uKernel

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).

Compiling uKernel

First, 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 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"

Testing uKernel

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

Generating ISO images

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.