Installing KolibriOS on a HD drive / CF card
This guide provides a step-by-step walkthrough for installing KolibriOS on a standard storage device, ensuring a direct path to the KolibriOS boot screen.
| Asset | Technology |
|---|---|
| Firmware | legacy BIOS, no UEFI |
| Mass storage device | a PATA HDD or CF card |
| Boot loader | direct, without multiboot menu |
It will describe at each stage the tools and commands to use for:
- formatting the volume
- installing a bootloader
- configuring the bootloader
- copying the OS image
- installing the additional applications present on the CD
All commands should be run using a Linux environment. This involves one of the following options:
- Option 1: temporarily connect the target storage device to a computer running Linux; once KolibriOS is installed on the storage device, you will need to reconnect it to the computer it is intended to boot; the advantage of this approach, for those who already have a working Linux machine, is that they can work in their own familiar environment;
- Option 2: temporarily boot the computer on which you wish to install KolibriOS from a Linux LiveCD (or a USB stick – for example, Linux Mint Debian Edition 6, 32-bit version); the advantage of this method is that it avoids having to move the storage device back and forth between machines several times in a row, in the event that something does not work the first time round.
Most of the applications used here (lsblk, dd, fdisk, mkfs) are installed by default in Linux distributions. Many of the commands in this guide will therefore work straight away. The distribution’s package manager will allow users to install any missing applications themselves (this will likely be the case for install-mbr and syslinux).
As we will be performing low-level operations (erasing, partitioning, formatting, mounting/unmounting), we will need to work as the privileged root user:
$ sudo -i
Lastly, the KolibriOS CD image will also need to have been downloaded.
⚠️ This guide assumes that this image is located in a local ~/Downloads/ folder.
TL;DR
For quick reference, here is the full list of commands entered. A detailed explanation of each is provided below.
$ sudo -i
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
└─sda1 part vfat 245M KOLIBRI_OS
# dd bs=1M count=245 if='/dev/zero' of='/dev/sda' oflag=direct status=progress 256901120 bytes (257 MB, 245 MiB) copied, 47 s, 5,4 MB/s 245+0 records in 245+0 records out 256901120 bytes (257 MB, 245 MiB) copied, 47,1447 s, 5,4 MB/s
# dd bs=1M count=2 if='/dev/zero' of='/dev/sda' oflag=direct status=progress
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
# fdisk /dev/sda Welcome to fdisk (util-linux 2.37.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xd0692c6a.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-501759, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-501759, default 501759):
Created a new partition 1 of type 'Linux' and of size 244 MiB.
Command (m for help): a Selected partition 1 The bootable flag on partition 1 is enabled now.
Command (m for help): t Selected partition 1 Hex code or alias (type L to list all): 0E Changed type of partition 'Linux' to 'W95 FAT16 (LBA)'.
Command (m for help): p Disk /dev/sda: 245 MiB, 256901120 bytes, 501760 sectors Disk model: STEC M2T CF 1.1. Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xd0692c6a Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 501759 499712 244M e W95 FAT16 (LBA)
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
└─sda1 part 244M
# mkfs.fat -v -F 16 -n KolibriOS /dev/sda1 mkfs.fat 4.2 (2021-01-31) mkfs.fat: Warning: lowercase labels might not work properly on some systems /dev/sda1 has 255 heads and 63 sectors per track, hidden sectors 0x0800; logical sector size is 512, using 0xf8 media descriptor, with 499653 sectors drive number 0x80; filesystem has 2 16-bit FATs and 8 sectors per cluster. FAT size is 248 sectors, and provides 62389 clusters. There are 8 reserved sectors. Root directory contains 512 slots and uses 32 sectors. Volume ID is 634d88f5, volume label KolibriOS.
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
└─sda1 part vfat 244M KolibriOS
# install-mbr -v -i n -p D -t 0 /dev/sda Copying code from <internal> Modifying parameters.
# mkdir /mnt/HDD_KOLIBRI # mount /dev/sda1 /mnt/HDD_KOLIBRI/ # mkdir /mnt/HDD_KOLIBRI/syslinux/ # ls -lah /mnt/HDD_KOLIBRI/ total 20K drwxr-xr-x 3 root root 16K Jan 1 1970 . drwxr-xr-x 1 root root 42 Apr 24 12:36 .. drwxr-xr-x 2 root root 4,0K Apr 24 12:39 syslinux
# umount /mnt/HDD_KOLIBRI/ # syslinux -d /syslinux/ -i /dev/sda1 Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63)
# mount /dev/sda1 /mnt/HDD_KOLIBRI/ # ls -lah /mnt/HDD_KOLIBRI/syslinux/ total 200K drwxr-xr-x 2 root root 4,0K Apr 24 12:39 . drwxr-xr-x 3 root root 16K Jan 1 1970 .. -r-xr-xr-x 1 root root 117K Apr 24 2026 ldlinux.c32 -r-xr-xr-x 1 root root 59K Apr 24 2026 ldlinux.sys
# cd ~/Downloads/Kolibri-latest-iso/ # mkdir /mnt/ISO_KOLIBRI # mount -r kolibri.iso /mnt/ISO_KOLIBRI/
# cp /mnt/ISO_KOLIBRI/HD_Load/memdisk /mnt/HDD_KOLIBRI/syslinux/ # cp /mnt/ISO_KOLIBRI/kolibri.img /mnt/HDD_KOLIBRI/syslinux/
# ls -lah /mnt/HDD_KOLIBRI/syslinux/ total 1,7M drwxr-xr-x 2 root root 4,0K Apr 24 12:58 . drwxr-xr-x 3 root root 16K Jan 1 1970 .. -rwxr-xr-x 1 root root 1,5M Apr 24 12:57 kolibri.img -r-xr-xr-x 1 root root 117K Apr 24 2026 ldlinux.c32 -r-xr-xr-x 1 root root 59K Apr 24 2026 ldlinux.sys -rwxr-xr-x 1 root root 20K Apr 24 12:58 memdisk
# nano /mnt/HDD_KOLIBRI/syslinux/syslinux.cfg
DEFAULT Boot_Kolibri
LABEL Boot_Kolibri
KERNEL /syslinux/memdisk
APPEND initrd=/syslinux/kolibri.img
# cat /mnt/HDD_KOLIBRI/syslinux/syslinux.cfg
DEFAULT Boot_Kolibri
LABEL Boot_Kolibri
KERNEL /syslinux/memdisk
APPEND initrd=/syslinux/kolibri.img
# ls -lah /mnt/HDD_KOLIBRI/syslinux/ total 1,7M drwxr-xr-x 2 root root 4,0K Apr 24 13:11 . drwxr-xr-x 5 root root 16K Jan 1 1970 .. -rwxr-xr-x 1 root root 1,5M Apr 24 12:57 kolibri.img -r-xr-xr-x 1 root root 117K Apr 24 2026 ldlinux.c32 -r-xr-xr-x 1 root root 59K Apr 24 2026 ldlinux.sys -rwxr-xr-x 1 root root 20K Apr 24 12:58 memdisk -rwxr-xr-x 1 root root 111 Apr 24 13:11 syslinux.cfg
# cp -r /mnt/ISO_KOLIBRI/Docs /mnt/HDD_KOLIBRI/ # cp -r /mnt/ISO_KOLIBRI/kolibrios /mnt/HDD_KOLIBRI/
# ls -lah /mnt/HDD_KOLIBRI/ total 28K drwxr-xr-x 5 root root 16K Jan 1 1970 . drwxr-xr-x 1 root root 64 Apr 24 12:55 .. drwxr-xr-x 2 root root 4,0K Apr 24 13:01 Docs drwxr-xr-x 17 root root 4,0K Apr 24 13:01 kolibrios drwxr-xr-x 2 root root 4,0K Apr 24 12:58 syslinux
# umount /mnt/ISO_KOLIBRI /mnt/HDD_KOLIBRI # rmdir /mnt/ISO_KOLIBRI /mnt/HDD_KOLIBRI
# reboot
Identifying the volume
The target configuration is straightforward, i.e. a computer equipped with:
- a single operating system (KolibriOS),
- a single boot drive.
Of course, it is possible to add more drives, or create additional partitions, or install multiple operating systems in a multi-boot configuration on the same drive. This is compatible with the explanations given on this page. However, the best approach is to start by following the KISS principle — Keep It Simple, Stupid.
Therefore, a storage device is used here exclusively for KolibriOS. In the example described here, the mass storage device is an industrial-grade Compact Flash card with a capacity of 245 MiB (256 MB), connected via Parallel ATA (also known as PATA or IDE) to the motherboard. It could just as easily be any PATA HDD; the principle would remain the same. The lsblk command displays the name of this target mass storage device from the list of all block devices (floppies, hard drives, USB sticks, other flash memory drives) that may be connected to the machine at that time:
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
└─sda1 part vfat 245M KOLIBRI_OS
Exercise caution when identifying the target storage device; the mass storage device must be specified without error in all subsequent commands; specifying the wrong drive will result in irrecoverable data loss.
🔺 Using the wrong name could result in the accidental destruction of data on another hard drive, for instance. The privileged root user can do anything, including causing damage.
The previous output shows:
- the device’s name and storage capacity, which makes it easy to identify; as a side note, it can be seen here that KolibriOS has already been installed on the first partition /dev/sda1 for the purposes of writing this guide; whatever may already exist on your own storage device will appear in the same place;
- its position in the list of block devices; in this example, it is /dev/sda, i.e. the first (or only) one detected by the operating system on the machine.
Please note, do not rely on this after every reboot: leaving a simple USB stick plugged into the machine can alter this order. If you follow the instructions in this guide several times, please take care and use lsblk to check the position of your target mass storage device each time.
Wiping the volume
We will erase the entire storage device, ensuring that no trace of previous data remains. The dd utility is used for that purpose. Once again, take care to specify the correct target to write to. If a mistake were made here, dd would destroy the data on another hard drive.
This step is optional, as creating a new partition table, as described later in this guide, is usually sufficient to overwrite the previously existing file systems. However, actually removing all traces prevents warning messages that may appear when recreating the partitions in exactly the same locations, as the utilities may then be concerned about finding pre-existing data there. The purpose of this optional step is therefore to ensure we are fully covered.
# dd bs=1M count=245 if='/dev/zero' of='/dev/sda' oflag=direct status=progress 256901120 bytes (257 MB, 245 MiB) copied, 47 s, 5,4 MB/s 245+0 records in 245+0 records out 256901120 bytes (257 MB, 245 MiB) copied, 47,1447 s, 5,4 MB/s
The previous output shows that dd has erased 245 blocks of 1 MiB each, i.e. the entire CF card. For small-capacity storage devices, this operation takes only a few tens of seconds and ensures that you are starting with a completely blank device.
However, if you are working on a larger hard drive, and unless there is a genuine need to erase all the data, it may be sensible to limit the dd operation to just the first two megabytes; that should be enough to delete at least the file system metadata on the first primary partition. The following command might therefore be preferable; it differs from the previous one only in the number of megabytes processed; it will take just one or two seconds to run:
# dd bs=1M count=2 if='/dev/zero' of='/dev/sda' oflag=direct status=progress
In either case, lsblk can be called again to check the result:
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
In this updated view, the first partition, sda1, has disappeared, and with it the previous installation of KolibriOS on that volume. We are therefore effectively starting from a wiped mass storage device.
Partitioning the volume
To format a hard drive, it is not strictly necessary to create partitions on it; a file system can be created straight away on a block device, without a partition table. However, many BIOSes are unable to boot a computer from a so-called superfloppy volume that lacks a partition table. Therefore, we are partitioning the drive to ensure boot compatibility, rather than to divide the storage space.
The fdisk utility is used for this task of creating a new partition table. As before, the target assigned to fdisk is the one we identified earlier using lsblk.
# fdisk /dev/sda Welcome to fdisk (util-linux 2.37.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xd0692c6a.
2048 sectors (1 MiB) are reserved (i.e. mostly unused, except for the MBR — Master Boot Record — which contains the partition table) at the start of the disk before the first partition is written. The -c=dos option (obsolete) can be used to set the reserved space before the start of this first partition to no more than 63 sectors (31.5 KB). This saves a bit of space, but it no longer guarantees that no write operation will span two erase blocks at a time, which is a drawback when working with flash memory technology.
Let’s now create a new blank partition, simply by confirming the default settings in fdisk:
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-501759, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-501759, default 501759):
Created a new partition 1 of type 'Linux' and of size 244 MiB.
By keeping the default settings defined by fdisk, we ensure that the creation of this new partition is as straightforward as possible:
- located at the first position,
- being of type primary, not logical,
- occupying all the available free space on the storage device.
We’re now going to customise it a little. First, by setting the boot flag for this partition in the partition table. The bootloader in the MBR uses this flag to know which partition the second loader is located on.
Command (m for help): a Selected partition 1 The bootable flag on partition 1 is enabled now.
Next, we will change the ID of the file system that is to be installed on this partition at a later stage. By default, fdisk had assigned it the EXT file system ID, which is specific to Linux. We will replace this with the FAT16 ID:
Command (m for help): t Selected partition 1 Hex code or alias (type L to list all): 0E Changed type of partition 'Linux' to 'W95 FAT16 (LBA)'.
The next step is to view a summary of our previous choices, before they are written to the storage device by fdisk:
Command (m for help): p Disk /dev/sda: 245 MiB, 256901120 bytes, 501760 sectors Disk model: STEC M2T CF 1.1. Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xd0692c6a Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 501759 499712 244M e W95 FAT16 (LBA)
The output shows that we are creating:
- a first partition (/dev/sda1),
- starting from the two thousand forty-ninth sector (numbering starts from zero),
- occupying the entire 245 MiB of our CF card (with the exception of the first 1024 KiB),
- and finally intended to hold a FAT16 file system.
At this stage, everything is ready, but fdisk has not yet actually written anything to the storage device. If in doubt, exit the application without any consequences by pressing the letter q. Otherwise, to apply the new partition table and actually create it on the storage device, press the letter w, for ‘write’:
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
The lsblk command allows us to verify that the newly created partition actually exists:
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
└─sda1 part 244M
Note that lsblk does not rely on the ID of the filesystem that the partition is intended to hold, as long as that filesystem has not yet been created on it. That is why it does not yet confirm that the partition is formatted as FAT16. In fact, at this stage, the partition has not yet been formatted. We will do that in the next step.
Formatting the volume
For a volume of up to 256 MiB (268 MB), formatting in FAT16 keeps the cluster size to no more than 8 sectors (4 KB), which is not a problem even with lots of small files. For larger volumes, one might have opted for FAT32 to avoid unreasonably increasing the minimum cluster size.
The mkfs utility is used here with three arguments:
- the desired FAT variant,
- the volume name (optional — maximum 13 characters — upper-case letters preferred),
- and finally the target, which is not the CF card itself (/dev/sda), but actually the first partition created on it (/dev/sda1).
# mkfs.fat -v -F 16 -n KolibriOS /dev/sda1 mkfs.fat 4.2 (2021-01-31) mkfs.fat: Warning: lowercase labels might not work properly on some systems /dev/sda1 has 255 heads and 63 sectors per track, hidden sectors 0x0800; logical sector size is 512, using 0xf8 media descriptor, with 499653 sectors drive number 0x80; filesystem has 2 16-bit FATs and 8 sectors per cluster. FAT size is 248 sectors, and provides 62389 clusters. There are 8 reserved sectors. Root directory contains 512 slots and uses 32 sectors. Volume ID is 634d88f5, volume label KolibriOS.
lsblk may be called again to check the result:
# lsblk -o model,name,type,fstype,size,label
MODEL NAME TYPE FSTYPE SIZE LABEL
fd0 disk 4K
STEC M2T CF 1.1.0 sda disk 245M
└─sda1 part vfat 244M KolibriOS
The file system type selected and the name given to the volume are now displayed in plain text.
Configuring the bootloader
Thanks to their simple design, the install-mbr and syslinux utilities make it easy to:
- place an x86 real-mode loader in the first 440 bytes of the now-partitioned and formatted mass storage device,
- hand over control to the KolibriOS ISO image so that it can take full control of the machine.
Four steps now need to be carried out:
- install the bootloader in the MBR without overwriting the partition table created previously at offset 446 (i.e. starting from the 447th byte); the DOS version of syslinux does this for us; the Linux version lacks this option, which means we have to use the install-mbr utility here;
- install the syslinux bootloader (it stores itself in the Volume Boot Record and in the LDLINUX.SYS file it creates in the specified directory);
- copy the system image (kolibri.img) from which to boot, and the utility (memdisk) used to load it into RAM;
- finally, create a configuration text file, which must be named SYSLINUX.CFG, instructing syslinux how to hand over control to KolibriOS.
install-mbr bootloader
Essentially, the bootloader injected by install-mbr into the first 440 bytes of the Master Boot Record is limited to:
- identifying the primary partition marked with the boot flag,
- handing control over to the code contained in the Volume Boot Record, located in the first sector of that partition.
# install-mbr -v -i n -p D -t 0 /dev/sda Copying code from <internal> Modifying parameters.
Note that the target passed as an argument to install-mbr is the storage device itself (/dev/sda), where the bootloader is to be written to the MBR, and not the partition (/dev/sda1).
syslinux bootloader
The syslinux utility writes its executable file, LDLINUX.SYS, to the specified directory. This executable takes its commands from the SYSLINUX.CFG configuration file. Written to the VBR by syslinux, a loader merely acts as a relay between the MBR bootloader and the LDLINUX.SYS executable.
⚠️ If it does not exist, syslinux will not be able to create its own installation directory.
Let’s start by mounting the FAT file system on the storage device, so that we can create the folder there manually:
# mkdir /mnt/HDD_KOLIBRI # mount /dev/sda1 /mnt/HDD_KOLIBRI/ # mkdir /mnt/HDD_KOLIBRI/syslinux/ # ls -lah /mnt/HDD_KOLIBRI/ total 20K drwxr-xr-x 3 root root 16K Jan 1 1970 . drwxr-xr-x 1 root root 42 Apr 24 12:36 .. drwxr-xr-x 2 root root 4,0K Apr 24 12:39 syslinux
Let’s run the syslinux installation command, specifying the folder where it should be installed, but first, let’s unmount the mass storage file system. This step is an explicit requirement of the syslinux documentation.
# umount /mnt/HDD_KOLIBRI/ # syslinux -d /syslinux/ -i /dev/sda1 Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63) Hidden (2048) does not match sectors (63)
The syslinux warning is caused by the partition being aligned to the first megabyte, rather than the first 63 sectors as in the original DOS fdisk utility. It has no practical impact and can simply be ignored when booting from a BIOS that accesses mass storage using LBA addressing.
Let’s check that the LDLINUX.SYS file has been saved correctly in the specified directory:
# mount /dev/sda1 /mnt/HDD_KOLIBRI/ # ls -lah /mnt/HDD_KOLIBRI/syslinux/ total 200K drwxr-xr-x 2 root root 4,0K Apr 24 12:39 . drwxr-xr-x 3 root root 16K Jan 1 1970 .. -r-xr-xr-x 1 root root 117K Apr 24 2026 ldlinux.c32 -r-xr-xr-x 1 root root 59K Apr 24 2026 ldlinux.sys
In our use case, where we merely want to boot KolibriOS without any options, the advanced features of syslinux, contained in the LDLINUX.C32 library, will likely never be called. However, the presence of this file does not cause any issues.
Installation of the files provided by KolibriOS
With the mass storage file system still mounted, let’s mount the KolibriOS CD ISO image in parallel:
# cd ~/Downloads/Kolibri-latest-iso/ # mkdir /mnt/ISO_KOLIBRI # mount -r kolibri.iso /mnt/ISO_KOLIBRI/
From the CD’s file system, let’s copy the memdisk executable and the kolibri.img disk image. The former creates the RAM disk in memory, which is populated with the latter.
# cp /mnt/ISO_KOLIBRI/HD_Load/memdisk /mnt/HDD_KOLIBRI/syslinux/ # cp /mnt/ISO_KOLIBRI/kolibri.img /mnt/HDD_KOLIBRI/syslinux/
Let’s check that both files have been saved correctly in the specified directory:
# ls -lah /mnt/HDD_KOLIBRI/syslinux/ total 1,7M drwxr-xr-x 2 root root 4,0K Apr 24 12:58 . drwxr-xr-x 3 root root 16K Jan 1 1970 .. -rwxr-xr-x 1 root root 1,5M Apr 24 12:57 kolibri.img -r-xr-xr-x 1 root root 117K Apr 24 2026 ldlinux.c32 -r-xr-xr-x 1 root root 59K Apr 24 2026 ldlinux.sys -rwxr-xr-x 1 root root 20K Apr 24 12:58 memdisk
Syslinux configuration file
In the same directory, all that remains is to create the SYSLINUX.CFG configuration file:
# nano /mnt/HDD_KOLIBRI/syslinux/syslinux.cfg
The commands to include in the configuration file are as follows:
DEFAULT Boot_Kolibri
LABEL Boot_Kolibri
KERNEL /syslinux/memdisk
APPEND initrd=/syslinux/kolibri.img
We could have used a single line script to start KolibriOS, as the syntax supported by syslinux is flexible. The four-line script used here simply follows the best practices set out in the documentation.
Just to be on the safe side, let’s check that the configuration file has been saved correctly:
# cat /mnt/HDD_KOLIBRI/syslinux/syslinux.cfg
DEFAULT Boot_Kolibri
LABEL Boot_Kolibri
KERNEL /syslinux/memdisk
APPEND initrd=/syslinux/kolibri.img
Let’s check one last time that all the files are in the same directory:
# ls -lah /mnt/HDD_KOLIBRI/syslinux/ total 1,7M drwxr-xr-x 2 root root 4,0K Apr 24 13:11 . drwxr-xr-x 5 root root 16K Jan 1 1970 .. -rwxr-xr-x 1 root root 1,5M Apr 24 12:57 kolibri.img -r-xr-xr-x 1 root root 117K Apr 24 2026 ldlinux.c32 -r-xr-xr-x 1 root root 59K Apr 24 2026 ldlinux.sys -rwxr-xr-x 1 root root 20K Apr 24 12:58 memdisk -rwxr-xr-x 1 root root 111 Apr 24 13:11 syslinux.cfg
Installing additional applications
The KolibriOS CD includes a collection of additional applications occupying several dozen megabytes. There is enough free space on our storage device to copy this entire catalogue. Once running KolibriOS, it will later be easy to point the App+ application to this directory, without needing the CD itself. Let’s also copy the documentation provided on the CD:
# cp -r /mnt/ISO_KOLIBRI/Docs /mnt/HDD_KOLIBRI/ # cp -r /mnt/ISO_KOLIBRI/kolibrios /mnt/HDD_KOLIBRI/
Let’s check whether the copy was successful:
# ls -lah /mnt/HDD_KOLIBRI/ total 28K drwxr-xr-x 5 root root 16K Jan 1 1970 . drwxr-xr-x 1 root root 64 Apr 24 12:55 .. drwxr-xr-x 2 root root 4,0K Apr 24 13:01 Docs drwxr-xr-x 17 root root 4,0K Apr 24 13:01 kolibrios drwxr-xr-x 2 root root 4,0K Apr 24 12:58 syslinux
Rebooting the host
The following steps only apply if you were working on your own machine, and not from a LiveCD, where changes are by design not persistent.
# umount /mnt/ISO_KOLIBRI /mnt/HDD_KOLIBRI # rmdir /mnt/ISO_KOLIBRI /mnt/HDD_KOLIBRI
On the other hand, if the mass storage device has been prepared on the target machine using a LiveCD, it is now time to reboot.
# reboot
Enjoy KolibriOS then!