How to install a Microcore version of the Tiny Core Linux

The Tiny Core Linux or TCL is very specific distribution. It’s designed to be nomadic. You can bring it with you and run it from a CD, a USB or even a hard disk. Moreover, you can mix and match different packages to build your own distribution.

When we using the Tiny Core Linux as a service tool, we often need a graphical environment. However, when we want to build some appliance or a server, we would like to have a text based system.

The Tiny Core Linux can be downloaded in the three different distributions. You can take any of them and begin this process. You only need to choose the Core only option in the startup menu.

The core only (or the Microcore) interface is the text based interface. We can just typing some commands here. However, that means that we will need least amount of the memory for a regular work.



Installation on the Microsoft Hyper-V host

I installed recently one TCL virtual server on the Microsoft Hyper-V host in the cluster and with an iSCSI connection to the storage. I used version 6.4.1 of the TCL, as there was some kernel panic problem with version 7.0.

I done whole process from the command line interface. I don’t need the graphical interface later, as this should be the application/Web server.

I booted the virtual machine from the Core CD. For this installation we must have the Internet connection. When you planning to work offline, you should download in advance the packages on your CD or an USB device and take them with you.

All packages have an extension TCE, shorten from the Tiny Core Extension. You can find them in on-line repository.


Downloading the installation package

We will download and install the package for the TCL installation on the hard disk. Our first command is tce-load -wi tc-install. We don’t need to type the extension TCE.

All my commands, that I typed, are colored in red. The command outputs are black. Here is an output of the first command:

tc@box:~$ tce-load -wi tc-install
tc-install.tcz.dep OK
fltk-1.3.tcz.dep OK
libXext.tcz.dep OK
libX11.tcz.dep OK
libxcb.tcz.dep OK
Downloading: libpng.tcz
Connecting to (
libpng.tcz 100% |*******************************| 94208 0:00:00 ETA
libpng.tcz: OK
Downloading: libjpeg-turbo.tcz
Connecting to (
libjpeg-turbo.tcz 100% |*******************************| 116k 0:00:00 ETA
libjpeg-turbo.tcz: OK
Downloading: libXdmcp.tcz
Connecting to (
libXdmcp.tcz 100% |*******************************| 20480 0:00:00 ETA
libXdmcp.tcz: OK
Downloading: libXau.tcz
Connecting to (
libXau.tcz 100% |*******************************| 12288 0:00:00 ETA
libXau.tcz: OK
Downloading: libxcb.tcz
Connecting to (
libxcb.tcz 100% |*******************************| 208k 0:00:00 ETA
libxcb.tcz: OK
Downloading: libX11.tcz
Connecting to (
libX11.tcz 100% |*******************************| 968k 0:00:00 ETA
libX11.tcz: OK
Downloading: libXext.tcz
Connecting to (
libXext.tcz 100% |*******************************| 28672 0:00:00 ETA
libXext.tcz: OK
Downloading: fltk-1.3.tcz
Connecting to (
fltk-1.3.tcz 100% |*******************************| 440k 0:00:00 ETA
fltk-1.3.tcz: OK
Downloading: perl5.tcz
Connecting to (
perl5.tcz 100% |*******************************| 12892k 0:00:00 ETA
perl5.tcz: OK
Downloading: dosfstools.tcz
Connecting to (
dosfstools.tcz 100% |*******************************| 57344 0:00:00 ETA
dosfstools.tcz: OK
Downloading: syslinux.tcz
Connecting to (
syslinux.tcz 100% |*******************************| 2284k 0:00:00 ETA
syslinux.tcz: OK
Downloading: tc-install.tcz
Connecting to (
tc-install.tcz 100% |*******************************| 20480 0:00:00 ETA
tc-install.tcz: OK

This process took couple minutes. It depends also on your Internet link.


Preparing an installation

Now we are ready to install TCL on the disk. We must run the installation script as the superuser – root.

tc@box:~$ sudo

The script will clear screens between steps. First screen is:

Core Installation. 
Install from [R]unning OS, from booted [C]drom, or from [I]so file. (r/c/i): c

As you can see, we choose C as we want to install from the CD-ROM we used to boot the virtual machine.

In case when we working with the virtual machines, we often using the iso image files. However, choosing an option Iso file will indicate that we have such file somewhere on our CD or on the network. From perspective of the virtual machine, we booted from the CD-ROM, not from iso file. Bear that in mind.

We must press the ENTER key to confirm our choice on every screen. So we will do here.

The next screen give us a choice for the installation type. We can choose the Frugal installation (that’s installation on the fixed hard disk) or two versions of the USB (removable media) installation.

Select install type for /mnt/sr0/boot/core.gz 
 * Use for frugal hard drive installations. 
Note: You will be prompted for disk/partion and formatting options. 
 * Use for pendrives. Your BIOS must support USB-HDD booting.
 * A single FAT partition will be made. 
Note: Requires dosfstools extension. 
Warning: This is a whole drive installation! 
 * Use for pendrives. Drive will be formatted into two FAT partitions. 
 * One small one for USB_ZIP boot compatibility, and used to hold Tiny Core.
 * The remaining partition will be used for backup & extensions. 
Note: Requires dosfstools and perl extensions. 
Warning: This is a whole drive installation! 
Select Install type [F]rugal, [H]DD, [Z]ip. (f/h/z): f

We will choose F for the Frugal installation. We building the virtual machine that will works permanently and from the hard disk.

The next step is to choose should we use a whole disk or just some already existing partition.

Select Target for Installation of core
 1. Whole Disk
 2. Partition Enter selection ( 1 - 2 ) or (q)uit: 1

When we didn’t made any partition before installation and we don’t plan to use same disk for the multiple operating systems, we should choose the first option – Whole disk.

When we choose this option, an installation script will prepare whole disk for us. And it doing that well.

On the next screen we will see all disks in the system and we should choose the right one. The hard disks are mostly described as sda, sdb and so one. The CD-ROM is sr0 and the floppy disk drive is fd0.

Select disk for core
 1. fd0
 2. sda
 3. sr0 
Enter selection ( 1 - 3 ) or (q)uit: 2

Our choice is the option number 2 – sda. Again we will type the number 2 and press the ENTER key.

The next step is to choose whether you want a bootloader. If you installing a TCL on the blank disk then you will need it.

Would you like to install a bootloader?
 Most people should answer yes unless they are trying to embed Core in to a different Linux distribution with an existing bootloader.
 Enter selection ( y, n ) or (q)uit: y

You need the bootloader on every system. As our system is empty we will choose Y(es).

In the next step we should choose the file format. Your choice will depends on the media type. If you want to install the TCL on the USB pen drive any similar memory drive, you should choose a non-journaling file system, like ext2 or vfat.

The ext3 and ext4 file systems are designed to be more robust on the data loss. Therefore they have more writing cycles on the disk. That can lead to the USB drive malfunction as an USB drive is not intended for the heavy writing operations.

Select Formatting Option for sda
 1. ext2
 2. ext3
 3. ext4
 4. vfat 
Enter selection ( 1 - 4 ) or (q)uit: 4

Although I installed this on the hard disk, I made mistake and typed 4. Eventually, that became good example for my post.

I have other project where the TCL is installed on the CF card. That CF card is the “hard disk” in the single board computer. With such “hard disk” I can’t use the ext3 or ext4 file systems or I will destroy the card itself with too many writes. Bear that in mind.

We have one more screen to configure. We can add some additional options that we want to be used every time we boot our system. Good example can be setting time zone or redirecting some directories to disk. If you are not aware, TCL works from memory. That is unique feature of this distribution.

Enter space separated boot options:
 Example: vga=normal syslog showapps waitusb=5 tce=sda1

I added parameter that will indicate that the directory for packages will be on the disk. That makes it permanent. When I download any package from the repository, it will stay in that directory, ready to be loaded in the offline mode.

I would like to make a note about the parameter waitusb=5. This parameter must be used whenever you are working with slow devices, like the USB drives. Moreover, the installation script is very smart. It will sense slower devices and add this parameter.

I found that this parameter is also very important when you installing the TCL on the Hyper-V host with iSCSI connector to the storage. It takes few seconds for the virtual disk to come online.

If you delete or omit this parameter and the try to use the TCL from the slow device, you will lost connection to your drive content after the boot. It will appear like you’re booting the stock core TCL version. All your applications and the customizations will be lost. Bear that in mind.

We made our choices. The installation script giving us last chance to cancel this operation.

Last chance to exit before destroying all data on sda
 Continue (y/..)? y

We want to build our new Linux server powered by the Tiny Core Linux and we will choose Y.


Installation in progress

Now you can sit back and relax, waiting for the installation script to finish. You can’t (and you shouldn’t) interrupt this process.

Writing zero's to beginning of /dev/sda 
Partitioning /dev/sda 
Formatting /dev/sda1 
mkfs.vfat 3.0.3 (18 May 2009) 
0+1 records in 
0+1 records out 
440 bytes (440B) copied, 0.020803 seconds, 20.7KB/s 
Applying syslinux. 
Setting up core image on /mnt/sda1 
Installation has completed 
Press Enter key to continue. 

Eventually, our new server is ready. In this moment, we have an installation of the stock Core server system. Maybe we added some customizations.


The unique parameter of every disk

Before we finish today story, I would like to underline two more things. First, take care about the parameter UUID. This is unique device identification.  Number behind it is unique for every disk in the system. This number will remain same for every single USB drives, wherever we use them. We can utilize this feature to indicate that our package library is on the disk with that specific identification.

Second interesting thing is path of the disk and the partition. As we expected, our disk is sda and the partition is sda1. That parameter also can be useful when we need to indicate the disk position in the system.

Moreover, when we need to move the disk from one system to another, this parameter sometime need to be updated manually. In such case, changing this name from sda to hda or sdb will preserve complete functionality of the installed TCL system on the new hardware.


3 thoughts on “How to install a Microcore version of the Tiny Core Linux

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.