Review of piCore – a 25MB OS for the Raspberry Pi

Tiny Core is a minimalistic Linux distribution and piCore is the Raspberry Pi port. piCore runs entirely from RAM which means there is no installation process, in conventional terms. However, you are able to install programs (often called extensions in piCore’s nomenclature) which are saved onto a second partition on the SD card. Programs can be installed permanently on the SD card or they can be registered with the OS and then downloaded only when they are run.

There are three versions of piCore available, the simplest vanilla version, with no GUI or default SSH access; the vanilla version with SSH access; and the GUI version with a lightweight desktop. The most useful of the three is the last one and the one we will use here.

At the time of writing, piCore 5.3 is the latest version, however you can check the release announcements here. Download piCore-5.3-X.zip and unzip the file. You will also need to download Win32 Disk Imager. Extract the files from the Win32 Disk Imager kit.

Because piCore is a small Linux distribution, it will fit on small SD cards. I used a 1GB SD card, but a 512MB card would be sufficient. Insert the SD card into a card reader and run “Win32DiskImager.exe”.

Make sure the “Device” is set correctly to your SD card. Click the folder icon at the end of the “Image File” edit box and find “piCore-5.3-X.img” from the extracted piCore archive.

Double check that you have the correct device selected and click “Write”.

picore-Win32-Disk-Imager

The writing process shouldn’t take too long (less than one minute) as there isn’t much data to write! Eject the card safely from Windows, insert into your Pi, and power on.

picore-desktop

Once piCore is booted, you will need to expand the data partition to fill the rest of the SD card. If you don’t do this then you won’t be able to install any additional apps. This must be the first thing you do, if you attempt any other operations at this point, you could make the system unstable.

By default, the SD card has two partitions, one is the boot partition, the other is the data partition for the extensions. The first partition is used during boot and is then unmounted. This ensures that the system always boots clean and fast. The second partition is only a few megabytes by default and needs to be expanded.

Click on the terminal icon in the bar at the bottom of the screen. In the terminal, type:

sudo fdisk /dev/mmcblk0

Now list the partitions using the “p” command. The output will look something like this:

picore-fdisk

Take note of the Start cylinder for the partition “/dev/mmcblk0p2″, in this case 705. Now delete the second partition using the “d” command. This sounds drastic but this is the first step in re-sizing the partition. Now re-create the partition using the “n” command. Enter “p” for primary partition and 2 for the partition number. Enter the start cylinder number that you jotted down earlier, in my example 705. Accept the default last cylinder as this will give you the largest possible size for the partition. Write the new partition table to the disk using the “w” command and reboot.

After the reboot, expand the file system using:

sudo resize2fs /dev/mmcblk0p2

Now you are ready to install any additional programs you need. Click on the “Apps” icon (the grey circle with the blue arrow). Click “Apps” in the toolbar and navigate to “Cloud (remote)”, “Browse”. A list of the available apps will be displayed in the pane on the left. Click on an package to see information about it in the right-hand pane.

There are several different ways to install apps on piCore. The two principle methods are “OnBoot” and “OnDemand”. The “OnBoot” method is the closest to a normal installation that piCore offers. The app is copied into the second partition and at boot time it is installed and made available. The second method only installs the app when you actually run it.

To add a package to your system, find it in the package list, select the installation type and click “Go.” It is important that you read the comments given for each package as there can be some post installation steps that need to be performed before the package will work correctly.

picore-apps

One of the post installation steps will likely be to add some lines to the list of persistent files. Because the boot partition is unmounted after start-up, all the data including the “home” directory and any persistent data (like configuration files) need to be restored from a backup that is stored on the second partition.

You can see this in action when you shut down or reboot piCore. Click the power icon in the icon bar and select reboot or shutdown. By default, the “Backup Options” is set to “Backup”. This means that the persistent files (including certain config files) will be saved and restored at the next boot. If you pick “None” then any new files in your home directory will be lost. Try creating a simple file and then reboot piCore with “Backup Options” set to “None”; you will see that the file has been lost.

piCore certainly is minimalistic. In fact, it could be said it is too bare bones, and to make a working system requires some effort. It doesn’t support any modern web browsers, and the range of available apps is limited. Having said that, its minimalist approach suits the limited resources of the Raspberry Pi very well.

Why not dig out an old SD card and give piCore a try. If you have any questions or insights about piCore there is a Raspberry Pi forum at the Tiny Core website. Alternatively you can use the comments section below, and we will see if we can help.