Gujin is hosted by Get gujin boot/system loader at SourceForge.net. Fast, secure and Free Open Source software downloads

Version v2.8.5


What is Gujin

Here is the description you can find at Freshmeat:
Gujin is a PC boot loader which can analyze your partitions and filesystems.
It finds the Linux kernel images available, as well as other bootable partitions (for *BSD, MS-DOS, Windows, etc.), files (*.kgz) and bootable disk images (*.bdi), and displays a graphical menu for selecting which system to boot.
Gujin boots Linux kernel using the documented interface, like LILO and GRUB, so it doesn't need any other pre-installed bootloader. It can also directly load gzip'ed ELF32 or ELF64 files, with a simple interface to collect real-mode BIOS data. There is no need to execute anything after making a new kernel: just copy the kernel image file into the "/boot" directory, with a standard name.
Gujin is written almost entirely in C with GCC, and it fully executes in real mode to be as compatible as possible.

And here is Gujin's OSDev Wiki, and Linux Wiki.

You can download the source code (you will need also gcc-4.5.1/gmp-5.0.1/mpfr-2.4.2/mpc-0.8.1/binutils-2.20.1 to get the same binaries), download the pre-compiled pack for installation, the RPM or DEB packages (generated by the distribution toolchain), and/or the precompiled standard/debug executable in here.

If you have any question about Gujin, please ask them on a public list/forum (the ones on sourceforge should do the job, or use the list "gujin-users" at "lists.sourceforge.net" if you do not want to register SourceForge), I simply cannot find the time to answer same questions by E-mail more than once, and then spend time to write FAQs. Why Ask Questions in Public?


Free advertisement

Want to do something your grandchildrens will thank you for?
STOP eating fish! See The End Of The Line DVD.


Do not forget the other freedom, The Freedom of Information.
Your Right To Know for U.K., read the book! Or freedominfo.org for other countries.
The day I support Europe institutions is the day they enforce a strong Freedom of Information Act, see RMR.


How to install

The number of choices seems to be a problem for new users, because the installer tries to support every possible need - but it is in fact quite simple.

Install as the main bootloader of a PC:
Then, use the Gujin package (.deb/.rpm) and your package manager. For instance on debian, right-click on the .deb file and select "Open with GDebi", or type "dpkg -i gujin*.deb".
For Fedora, you can type "yum localinstall gujin*.rpm". This method also handle upgrading Gujin, by uninstalling the previous version and installing the new one. Unlike the Grub package, you can safely uninstall the Gujin package and your system will stay bootable using the bootloader which was previously installed.
Because the upgrading method uninstall the previous version (and restore the previous bootloader) and then install the new version, you always keep the initial bootloader ready if you want to get rid of Gujin.
The Gujin installer may create the file /boot/gujin.cmd if it detects special booting options in /proc/cmdline. See file gujin.cmd in install*.tar.gz for real world examples.

For all other choices, you need to execute the Gujin installer as root in a console.
To get that executable, you either install the package as previously, or copy the executable from the file install*.tar.gz in the /sbin directory. If you install manually, also copy the manual file gujin.8 in /usr/share/man/man8/.
If you want to have the Gujin package installed (to access /sbin/gujin installer) but keep Grub/LILO as your main bootloader, just type: /sbin/gujin --remove /boot/gujin.ebios after installing the package.
If you want to know which bootloader is currently installed in a device, just type: /sbin/gujin --report /dev/sda

Install on a USB hard disk, USB stick or a SD-card which is currently mounted on /media/usbdisk:
just type: /sbin/gujin /media/usbdisk/gujin.ebios
Install on a USB hard disk, and format that device:
The main advantage of formating (to FAT) the device is that the complete content is written to known values, the device will be able to boot on BIOS which are more buggy. Other advantage is that the FAT filesystem is created to have aligned data blocks in all cases, so should be quicker to use.
To install that way, you have first to backup all the files you want to keep (they will all be erased), locate and unmount that device (should be something like /dev/sdX with X being a letter), remove all partitions of that device (gparted or fdisk) and then type: /sbin/gujin --mbr /dev/sdX
Install on a USB stick or a SD-card (as superfloppy), and format that device:
Even if those devices can be treated as USB hard disk like the precedent choice, most have the "removable" bit set in their USB description and will boot with more BIOS if they do not have any partition defined, like a floppy disk.
To install that way, you have first to backup all the files you want to keep (they will all be erased), locate and unmount that device (should be something like /dev/sdX with X being a letter), check that the device do not have any partition defined, and then type: /sbin/gujin /dev/sdX
Install a minimalistic bootloader on a PC with a single Linux distribution
If you have a PC with a single disk and a single Linux distribution on an ext2/3/4 filesystem, there is no need to have a full menu, or even a menu at all. You can install by:
/sbin/gujin -t tinyext4.bin /boot/minigujin.ebios
At boot, Gujin will search for the newest kernel (by modification date) and load it without any question.
The Linux parameters can be written inside /boot/minigujin.ebios with the --cmdline='' parameters, or be written in the /boot/gujin.cmd file. If the newest kernel has a problem, you can interrupt its load (and so load an older kernel) by pressing Control-Break.
Install as the El-Torito bootloader of a live CDROM/DVD
Just use the provided gujin.bcd in install*.tar.gz as your El-Torito boot file, or the file minigujin.bcd if you do not want any menu.
You can regenerate those two *.bcd file, for instance to add a command line (if not using /boot/gujin.cmd) by:
/sbin/gujin gujin.bcd --cmdline=""
/sbin/gujin -t minigujin.bcd --stop_emulation=2 --cmdline=""
There is a lot of other options to /sbin/gujin, but they are not needed in the general case, and you should ignore them if its is the first time you are trying the Gujin bootloader.
  • Documentation

    The documentation (FAQ & HowTo) is in file README.htm in the source tar file.
    Gujin also has its "man" page in section 8: "man 8 gujin"
    Note also the file "install.txt" and the help given by --help/-h option of the "gujin" and "gzcopy" software included.

    You basically have three flavour of the same Gujin bootloader, pre-compiled inside the "gujin" installer executable for ease of use:

    One of the problem of using Gujin is that there is only one command line editable and stored, so it is difficult to manage multiple distributions with different command lines.
    I have added a small executable named "gujin-cmdline" to insert an "embedded command line" into some free space of vmlinuz files (i.e. the end of the bootsector). The starting marker is simply "cmdline:" and the string has to be zero terminated, it has to be located below the first vmlinuz parameter. The maximum space there is currently 296 bytes.
    This embedded command line can only be edited under Linux, use as:
    ./gujin-cmdline /boot/bzImage+2.6.24 # to display this embedded command line
    ./gujin-cmdline /boot/bzImage+2.6.24 "root=/dev/sda6" # to set it
    Gujin will erase this field from memory before running the kernel, so Linux will never see the difference. Other bootloaders will not see any difference neither.

    In short, to make all this possible, I wrote a GCC interface to the PC BIOS and all the library functions needed to easily boot a kernel.
    I also wrote a DOS interface to be used if you booted a rescue DOS floppy or if you choose "return to DOS" in Windows 3.x/9x. This DOS software should work everywhere but will not be able to start Linux in a Windows DOS box - you do not want to do that anyways (too many open files not properly closed, so a scandisk at boot).
    I am using a completely re-written GZIP (decompression only) library, 100% compatible with GZIP and zlib and a small Linux/UNIX "gzcopy" application to edit the comment field of GZIP files.
    The main reason for the rewrite is a smaller program size, it has been seriously tested (10 CD-ROM full of .tar.gz decompressed and CRC checked), but if anyone find a problem (else than CDROM not readable or a file renamed to *.gz after being compressed with another tool) I will be glad to hear from it.
    I am also using a completely re-written E2/3/4FS (read only, only fixed size inodes) library, a DOS FAT12/16/32 (read only) and a ISO9660 library to search for and load kernels; they have been tested extensively (E2FS, E3FS with 1 & 4 Kbytes blocks, lot of DOS filesystems, CDROM and DVDROM), no problem has been found.
    There isn't any NTFS nor CDROM/UDF support.
    The system to access the video interface, which can handle in graphic modes CGA/EGA only, VGA only, VESA1 only and VESA2+ video card is unique to Gujin.
    Four types of mouse are detected, for fun you can even have a joystick on a VT320 when using the serial interface - I have to make a screen shoot one day!
    The size of this bootloader (only one file) is in between 50 and 250 Kbytes, depending on the compile time options.

    Screen Shoots

    Screenshots are not easy to take in the real BIOS environment, but fortunately DosEmu is here, to give you some idea of what you get, just before switching to graphic (if verbose mode is active):
    boot image

    You should check at least once that this information is correct, for instance note that here, I have a partition 45667938 sectors (i.e. 21 Gbytes) bigger than the filesystem it contains (a 22 Gbytes partition where I copied the Damn Small Linux bootable CDROM by "cat /dev/cdrom ⊃ /dev/hda8" - obviouly a lot of wasted space for this 100 Mb CDROM); you can then uncheck the "verbose" box in the setup screen for a "quick" boot.

    Just after switching to graphic, you will see something like this if you have a Linux distribution with a memtest floppy image and three kernels, a Redmond system, a CDROM image inside a partition, and the demo standalone *.kgz on a floppy:
    main image

    Then, if a mouse/joystick has been detected, you can click to one of the highlighted fields to either switch to another video mode or boot a kernel, else you can use the keyboard interface (keys '+', '-','/', '*' ... , and function keys).
    Note that those kernels have been found automagically, they are not described in any "/etc/gujin.conf" file: this file do not and will never exist.

    If you press "space" or the "setup" field (on the top right), you can setup the display and remove some fields (click on checkboxes):
    setup image

    So you get by re-clicking setup or re-pressing space:
    simple image

    The setup screen has a lot more checkboxes, to search kernel and/or MBR, to search on floppy disks or on BIOS disks or only on IDE...:
    setup2 image

    To show a screenshot of Gujin menu with CDROM/DVDs, I need to use another emulator: Bochs.
    This one is slower but simulate correctly the (first session only) of CDROMs. If you want to generate more complex CDROMs than this one, you should read the few commands lines of target "CDall" and/or "CD_BDI" in file Makefile.
    main Bochs image

    You can also change the language used at run time by typing Control T - look at "messages.h" file to help supporting/correcting your own language...
    french setup image

    At the end (press the end key or click on the button) you get some command, last one being "uninstall" to remove Gujin and restore the old boot process. Here, that option is not enabled because dosemu has booted from a floppy, so there isn't any saved boot sector:
    cmd image

    You can also get more unusual video modes, like text mode 40x25:
    mode0 image

    16 colors video modes in VGA only graphic:
    sixteen color image

    or even 4 colors video modes (2 Bit Per Pixel but in dosemu):
    four color image

    Yes, that is the same software, the same floppy!

    By the way, if you do, on a test floppy:
    ./gujin --full /dev/fd0 --serial=com1,9600,n,8,1
    put this floppy in the PC to boot, and link the two PCs by a crossed serial line (fully wired null-modem) (with or without two modems and a phone line in between), you can type:
    serial connection

    The "serial initialisation failed" is due to no answer received whatsoever when interrogating the terminal type - Gujin then assumes a monochrome VT100 terminal. If you have a more powerful terminal, like a color VT430, or a VT420 which can do 132 columns and 48 lines, be sure to connect it before the identification code is asked (physical terminal autodetection).

    You can start minicom/GtkTerm/PuTTY and set it to /dev/ttyS0, 9600 bauds, no parity 8 bits, no hardware flow control and get:
    serial menu

    Active/clickable fields are underlined, as usual.

    Selecting a kernel will really boot it (you will have the console on your serial line) - you will need to setup getty to accept connection on serial line (in /etc/inittab) if you want to connect (see also /etc/securetty).

    Have fun!


    Comments to Etienne Lorrain.
    Donate to gujin boot/system loader   Donate to this project

    Last modified 2010-12-03


    [frdm] Support SFLC

    Gujin is hosted by Get gujin boot/system loader at SourceForge.net. Fast, secure and Free Open Source software downloads