I had reached the stage where I'd decided that perhaps Fedora, as nice as it was, was maybe too heavyweight to have as my standard Linux box. I'd also seen the merit in using Tiny Core itself as the platform for some of the kernel recompilation work I'd been doing.
I'd seen good reviews of Linux Mint so I decided to migrate my standard Linux box to a dual boot system that would let me run Linux Mint 15 or Tiny Core.
The hardware is a Shuttle PC (I like the form factor!) with a Core 2 duo 2.13GHz CPU and 4GB RAM. It's currently fitted with two 250GB drives, but I thought I'd start out just using one of them.
Linux Mint 15 uses Grub2 as its boot loader. This article essentially shows how to add Tiny Core to the boot menu.
I decided to manually partition one of the disks for both operating systems as shown:
Partition size Use 1 20GB Tiny Core System 2 100GB Tiny Core /home & /opt 3 60GB Linux Mint 15 4 5GB Swap
I formatted the first three partitions as ext4 file systems.
I booted Linux Mint 15 from the Live CD and ran the installer to install it onto the third partition - /dev/sda3. It installed Grub2 as the boot loader.
I already had an existing installation of Tiny Core on another hard drive. I moved the /tce directory onto /dev/sda1 and the /opt and /home directories onto /dev/sda2.
This was the bit that took me a little while to sort out - how to get Grub2 to boot Tiny Core. It turned out to be straight forward. Grub2 has a number of configuration files that you can edit after which you have to run update-grub to update the actual configuration file that it uses (/boot/grub/grub.cfg).
By default Grub2 just booted straight into Linux Mint. It was possible to get it to show a boot menu at the start by holding down the shift key on the keyboard as things started up, but I wanted the menu shown every time. This behaviour is set in the file /etc/default/grub. This starts:
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 #GRUB_HIDDEN_TIMEOUT=0 #GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" ......
...and all I did was comment out the two lines to do with GRUB_HIDDEN_TIMEOUT
Running update-grub and then rebooting produced an opening boot menu.
The second and final step was to create the menu entry for Tiny Core.
update-grub runs a whole series of scripts to create the grub.cfg file. These operate on the files stored in /etc/grub.d. One file there (40_custom) is there for additional menu entries. My edited version is:
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. # Tiny Core menuentry 'Tiny Core' { insmod ext2 set root='(hd0,1)' linux /tce/boot/vmlinuz kmap=qwerty/uk opt=sda2 home=sda2 xvesa=1440x900x32 initrd /tce/boot/core.gz }
The entries are fairly self-explanatory:
insmod ext2 | tells Grub to use the ext2 file system module as our root file system is an ext4 filing system. (ext2 handles ext2/3/4). |
set root= | tells Grub that the root filing system is stored on the first hard disk (sda), partition 1. |
linux... | gives the path to the kernel and includes all our boot parameters. |
initrd... | gives the path to the core.gz file. |
Having edited the file, running update-grub completes the process.
[Back]
Any comments? email me. Last update June 2013