This part contains the technical documentation of the JNode Operating System.
During the boot process of JNode, the kernel image is loaded by Grub and booted. After the bootstrapper code, we're running plain java code. The fist code executed is in org.jnode.boot.Main#vmMain() which initializes the JVM and starts the plugin system.
The basic device driver design involves 3 components:
There is a DeviceManager where all devices are registered. It delegates to DeviceToDriverMapper instances to find a suitable driver for a given device. Instances of this mapper interface use e.g. the PCI id of a device (in case of PCIDevice) to find a suitable driver. This is configurable via a configuration file.
For a device to operate there are the following resources available:
The filesystem support in JNode is split up into a generic part and a filesystem specific part. The role of the generic part is:
The role of the filesystem specific part is:
We should be more specific about what a filesystem is. JNode makes a distinction the a FileSystemType and a FileSystem. A FileSystemType has a name, can detect filesystems of its own type on a device and can create FileSystem instances for a specific device (usually a disk). A FileSystem implements storing/retrieving files and directories.
To access files in JNode, use the regular classes in the java.io package. They are connected to the JNode filesystem implementation. A direct connection to the filesystem implementation is not allowed.
This chapter details the FrameBuffer device design and the interfaces involved in the design.
All framebuffer devices must implement this API.
TODO write me.
TODO write me.
TODO write me.
TODO write me.
This chapter details the design of network devices and describe the interfaces involved.
Every network device must implement this API.
The API contains methods to get the hardware address of the device, send data through the device and get/set protocol address information.
When a network deivce receives data, it must deliver that data to the NetworkLayerManager. The AbstractNetworkDriver class (which is usually the baseclass for all network drivers) contains a helper method (onReceive) for this purpose.
This chapter will detail the interfaces involved in the network protocol layer.
This interface must be implemented by all network protocol handlers.
This interface must be implemented by OSI transport layer protocols.
This interface must be implemented by OSI link layer protocols.
To register a network layer, the network layer class must be specified in an extension of the "org.jnode.net.networkLayers" extension point.
This is usually done in the descriptor of the plugin that holds the network layer.
This chapter contains the specific technical operating system details about the various architectures that JNode is operating on.
The X86 architecture is targets the Intel IA32 architecture implemented by the Intel Pentium (and up) processors and the AMD Athlon/Duron (etc) processors.
This architecture uses a physical memory layout as given in the picture below.