Getting Started

To start using JNode you have two options:

  1. Download the latest released CD-ROM image
  2. Download the latest sources and build them

Getting the latest released CD-ROM image

  • Download the bootable CDROM image from here.
  • Unzip it
  • Burn it to CD-ROM
  • Boot a test PC from it or start in in VMWare

Getting the latest sources and building them

  • Checkout the jnode module from GitHub. See the GitHub jnode repository page for details.
  • Build JNode using the build.bat (on windows) or (on unix) script.
    Without parameters, these scripts will give all build options. You probably want to use the cd-x86 option that builds the CD-ROM image.
  • Boot a test PC from it or start in in VMWare

Getting nightly builds

  • Download the nightly-builds
  • You can also get the sources and a ready-to-use vmx file for VMWare

Running JNode

Once JNode has booted, you will see a JNode > command prompt. See the shell reference for available commands.

The 20 minute guided tour.

This is a quick guide to get started with JNode. It will help you to download a JNode boot image, and explain how to use it. It also will give you get you started with exploring JNode's capabilities and give you some tips on how to use the JNode user interfaces.

To start with, you need to download a JNode boot image. Go to this page and click on the link for the latest version. This will take you to a page with the downloadable files for the version. The page also has a link to a page listing the JNode hardware requirements.

At this point, you have two choices. You can create a bootable CD ROM and then run JNode on real hardware by booting your PC from the CD ROM drive. Alternatively, you can run JNode on virtual PC using VMWare.

To run JNode on real hardware:

  1. Download the "gzip compressed ISO image" from the JNode download page.
  2. Uncompress the ISO image using "gunzip".
  3. Use your favorite CD burning software to burn the ISO image onto a blank CD ROM.
  4. Shutdown your PC.
  5. Put the JNode boot CD into the CD drive
  6. Boot from the CD, following the PC manufacturer's instructions.

To run JNode from VMWare:

  1. Download a free copy of VMware-Player. (You can also use the free VMware-Server which allows to modify the VM parameters and so on, or you buy one of the more advanced VMWare products.)
  2. Install VMWare following the instructions provided.
  3. Download the "gzip compressed ISO image" and the "vmx" file from the JNode download page.
  4. Uncompress the ISO image using "gunzip", and make sure that the image is in the same directory as the "vmx" file.
  5. Launch VMWare, browse to find the JNode "vmx" file, and launch it as described in the VMWare user guide.

When you start up JNode, the first thing you will see after the BIOS messages is the Grub bootloader menu allowing you to select between various JNode configurations. If you have at 500MB or more of RAM (or 500MB assigned to the VM if you are using VMware), we recommend the "JNode (all plugins)" configuration. This allows you to run the GUI. Otherwise, we recommend the "JNode (default)" or "JNode (minimal shell)" configurations. (For more information on the available JNode configurations, ...).

Assuming that you choose one of the recommended configurations, JNode will go through the bootstrap sequence, and start up a text console running a command shell, allowing you to issue commands. The initial command will look like this:

JNode />

Try a couple of commands to get you started:

JNode /> dir

will list the JNode root directory,

JNode /> alias

will list the commands available to you, and

JNode /> help <command>

will show you a command's online help and usage informatiom.

There are a few more useful things to see:

  • Entering ALT+F7 (press the ALT and F7 keys at the same time) will switch to the logger console. Entering ALT+F1 switches you back to the shell console.
  • Entering SHIFT+UP-ARROW and SHIFT+DOWN-ARROW scroll the current console backwards and forwards.
  • Entering TAB performs command name and argument completion.
  • Entering UP-ARROW and DOWN-ARROW allows you to choose commands from the command history.

The JNode completion mechanism is more sophisticated than the analogs in typical Linux and Windows shells. In addition to performing command name and file name completion, it can do completion of command options and context sensitive argument completion. For example, if you want to set up your network card using the "dhcp" command, you don't need to go hunting for the name of the JNode network device. Instead, enter the following:

JNode /> dhcp eth<TAB>

The completer will show a list of known ethernet devices allowing you to select the appropriate one. In this case, there is typically one name only, so this will be added to the command string.

For more information on using the shell, please refer to the JNode Shell page,

I bet you are bored with text consoles by now, and you are eager to see the JNode GUI. You can start it as follows:

JNode /> gc
JNode /> startawt

The GUI is intended to be intuitive, so give it a go. It currently includes a "Text Console" app for entering commands, and a couple of games. If you have problems with the GUI, ALT+F12 should kill the GUI and drop you back to the text console.

By the way, you can switch the font rendering method used by the GUI before you run "startawt", as follows:

JNode /> set jnode.font.renderer ttf|bdf

If you have questions or you just want to talk to us, please consider joining our IRC channel (#[email protected]). We're all very friendly and try to help everyone *g*

If you find a bug, we would really appreciate you posting a bug report via our bug tracker. You can also enter support and feature requests there.

Feel free to continue trying out JNode. If you have the time and the skills, please consider joining us to make it better.

Booting from the network

2 options are available here

Network boot disk

If you do not have a bootable network card, you can create a network boot disk instead. See the GRUB manual for details, or use ROM-o-matic or the GRUB network boot-disk creator.

NIC-based network boot

To boot JNode from the network, you will need a bootable network card, a DHCP/BOOTP and TFTP server setup.

  • Set the TFTP base directory to <JNode dir>/all/build/x86/netboot
  • Set the boot file to nbgrub-<card> where <card> is the card you are using
  • Set DHCP option 150 to (nd)/menu-nb.lst

Booting from USB memory stick

This guide shows you how to boot JNode from an USB memory stick.
You'll need a Windows machine to build on and a clean USB memory stick (it may be wiped!).

Step 1: Build a JNode iso image (e.g. build cd-x86-lite)
Step 2: Download XBoot.
Step 3: Run XBoot with Administrator rights
Step 4: Open file: select the ISO created in step 1. Choose "Add grub4dos using iso emulation".
Step 5: Click "Create USB"

XBoot will now install a bootloader (choose the default) and prepare the USB memory stick.
After then, eject the memory stick and give it a try.

When it boots, you'll first have to choose JNode from the menu. Then the familiar JNode Grub boot menu appears.

Eclipse Howto

This chapter explains how to use the Eclipse 3.2 IDE with JNode.


JNode contains several Eclipse projects within a single SVN module. To checkout and import these projects into Eclipse, execute the following steps:

  1. Checkout the jnode module from SVN using any SVN tool you like.
    Look at the sourceforge SVN page for more details.
  2. Start Eclipse
  3. Select File - Import. You wil get this screen.

  4. Select "Existing project into workspace".
  5. Enter the root directory of the imported jnode CVS module in this screen.

    The listed projects will appear when the root directory has been selected.

  6. Select Finish
  7. You will end up with all projects into your Eclipse workspace like this:


You can build JNode within Eclipse by using the build.xml Ant file found in the JNode-All project. However, due to the memory requirements of the build process, it is better to run the build from the commandline using build.bat (on windows) or (on unix).

Running in Bochs

Running JNode in Bochs does not seem to work out of the box yet. It fails on setting CPU register CR4 into 4Mb paging mode.
A compile setting that enables 4Mb pages is known to solve this problem. To enable this settings, running configure with the --enable-4meg-pages argument or add #define BX_SUPPORT_4MEG_PAGES 1 to config.h.

Running in KVM


If you have a CPU with hardware virtualization support you can run JNode in kvm wich is much faster than vmware-[player|server] (at least for me). You need a CPU that either supports Intel's IVT (aka Vanderpool) or AMD's AMD-V (aka Pacifica).


egrep '^flags.*(vmx|svm)' /proc/cpuinfo"

you can easily check if your CPU supports VT or not. If you receive output your CPU is supported, else it is not. If your CPU is supported also check that VT is enabled in your system bios.

Load the kvm modules matching your CPU, either "modprobe kvm_intel" or "modprobe kvm_amd", install kvm user tools and setup permissions so users may run kvm (Have a look at a HOWTO for your distro for details: Ubuntu, Gentoo).

Once you have setup everything you can start kvm from the commandline (I think there are GUI frontends too, but I'm using the command line). You should be carefull though, acpi in JNode seems to kill kvm, so allways disable acpi. I also had to deactivate the kvm-irqchip as it trashed JNode. The command that works for me is:

kvm -m 768 -cdrom jnode-x86-lite.iso -no-acpi -no-kvm-irqchip -serial stdout -net none -std-vga

The "-serial" switch is optional but I need it for kdb (kernel debugger). If you want to use the Vesa mode of JNode you should also use "-std-vga", overwise you will not have a vesa mode. Set the memory whatever you like (768MB is my default).

Things that still need to be tested:

  • "-drive/-hda/.." allow to supply harddisks, test if this works too
  • "-smp n" allows to give n cores to kvm (difficult as JNode is not SMP safe atm)
  • "-audio/soundhw" allows sound emulation
  • test "-usb/.."
  • Test network. Atm I'm missing some kernel modules so I deactivated network for the moment.
  • Test gdb with kvm. This should be more fun than using qemu Smiling
  • Test other CPUs, especially the qemu64 (i.e. 64bit CPU) support once JNode's 64bit version works again
  • Running in parallels

    I found an only way to run JNode with parallels.

    In Options->Emulation flags, there is a parameter called Acceleration level that takes 3 values :
    - disabled : JNode will work but that's very slow
    - normal : JNode won't boot (freeze at "Detected 1 processor")
    - high : JNode won't boot (freeze at "Detected 1 processor")

    Running in VBox

    You can now run JNode on virtual box too. ACPI is not working but you'll get a prompt and can use JNode.

    TODO: Test network, usb,...

    Running in Virtual PC

    This page will discripe how to run JNode in Virtual PC

    At the current state JNode doesn't run in Virtual PC.

    Running in VMWare

    Basic Procedure

    The JNode build process creates a VMWare compatible ".vmx" file that allows you to run JNode using recent releases of VMWare Player.

    Assuming that you build JNode using the "cd-x86-lite" target, the build will create an ISO format CDROM image called "jnode-x86-lite.iso" in the "all/build/cdroms/" directory. In the same directory, the build also generates a file called "jnode-x86-lite.iso.vmx" for use with VMWare. To boot JNode from this ".iso" file, simply run the player as follows:

      $ vmplayer all/build/cdroms/jnode-x86-lite.iso.vmx

    Altering the VMWare virtual machine configuration

    By default, the generated ".vmx" file configures a virtual machine with a virtual CDROM for the ISO, a bridged virtual ethernet and a virtual serial port that is connected to a "debugger.txt" file. If you want to configure the VMWare virtual machine differently, the simplest option is to buy VMWare Workstation and use its graphical interfaces to configure and run JNode. (Copy the generated ".vmx" file to a different location, and use that as the starting point.)

    If you don't want to pay for VMWare Workstation, you can achieve the same effect by changing the ".vmx" file by hand. However, changes you make that way will be clobbered next time you run the "build" script. The solution is to do the following:

    This procedure assumes some changes in a patch that is waiting to be committed.

    1. Create a file containing the VMX properties that you want to add or replace. Put this file somewhere that won't be clobbered by "build clean".
    2. Copy the "" file to "".
    3. Open the "jnode.properies" file in a text editor.
    4. Find the line that starts "#vmware.vmx.overrides=".
    5. Remove the "#" and replace the characters after the "=" with the override file's pathname.
    6. Save the file.
    7. Run "build cd-x86-lite" (or whatever you normally use to build a CDROM image).

    This should create the "jnode-x86-lite.iso.vmx" file with the VMX settings from your file as overrides to the default settings.

    Unfortunately, VMWare have not released any documentation for the myriad VMX settings. The best 3rd-party documentation that I can find is the website. There are also various "builder" applications around, but they don't look all that good.

    VMWare disks and Boot device order
    If you add a VMWare virtual (or real) disk drive, the VMWare virtual machine's BIOS will try to boot from that drive. Unless you have set up the drive to be bootable, this won't work. The easy way to fix this is to change VMWare's BIOS settings to alter the boot device order.

    1. Run vmplayer as above.
    2. Quickly click the VMWare window to give it keyboard focus and hit [F2]. (You have small window to do this ... just a second or two!).
    3. In the BIOS settings screen, select the "Booting" panel and move the "cdrom" to the top; i.e. the first device to be tried.
    4. Save the BIOS settings to the virtual NVRAM and exit the BIOS settings editor to continue the boot.

    By default the NVRAM settings are stored in the "JNode.nvram" file in "all/build/cdroms" directory, and will be clobbered when you run "build clean". If this is a problem, create a VMX override (see above) with a "nvram" entry that uses a different location for the file.

    Running on a PC

    To run JNode on a PC using the bootable CDROM, your PC must comply with the following specifications:

    • Pentium or above CPU
      128Mb RAM or more (i'm not sure what the minimum is)
    • Bootable CDROM drive that supports El-Torito harddisk emulation
    • VGA compatible video card
    • Keyboard

    The GRUB Boot Menu

    The first JNode related information you will see after booting from a JNode CDROM image is the GRUB bootloader page. The GNU GRUB bootloader is responsible for selecting a JNode configuration from a menu, loading the corresponding kernel image and parameters into RAM and causing the JNode kernel to start executing.

    When GRUB starts, it displays the bootloader page and pauses for a few seconds. If you do nothing, GRUB will automatically load and start the default configuration. Pressing any key at this point will interrupt the automatic boot sequence and allow you to select a specific configuration. You can use the UP-ARROW and DOWN-ARROW to choose a JNode configuration, then hit ENTER to boot it up.

    There are a number of JNode configurations in the menu:

    • The configurations that include "MP" in the description enable JNode's multiprocessor support on a capable machine. Since JNode's multiprocessor support is not fully functional, you should probably avoid these configurations for now.
    • The configurations the include "GUI" in the description will start up the JNode GUI. Configurations without this tag will start up the JNode command shell on a text console.
    • The other difference between the configurations is in the sets of plugins that they load. In general, loading more plugins will cause JNode to use more RAM.

    It is currently not a good idea to boot JNode straight to the GUI. If want to run the GUI, it is best to boot the one of the non-GUI configurations; typically "JNode (all plugins)". Then from the text console, run the following commands:

    JNode /> gc

    JNode /> startawt