Rev. 2006.04.15. Original updated source: http://www.insulae.net/doc/knoppix.poor.en.php

Knoppix from hard disk — Poor Man's Install


What is required
Prepare the disk
Prepare the Knoppix partition
A bit of condensed theory
Prepare the boot partition and install LILO
Change LILO version
Configure Knoppix and create a persistent home
Questions and unresolved things

Having an old idle 1,2 GB hard drive, I decided to try a Knoppix "poor man's install". In plain words, to copy the content of the Knoppix CD-ROM to a hard drive to get Knoppix load into RAM from disk, as normally were from CD, combining the higher speed of the hard drive with autoconfiguration, that allows booting the same disk and running the OS on different systems — different from installation, that prepares the OS to run on a specific machine (1).

Shorter, get the CD's content work from hard disk.

Quite satisfied, except for the few questions reported below, I wrote this guide to let me remember and repeat what I did, and show a hypothetical beginner, looking for something easy and usable as his first approach to Linux, the steps needed to make Knoppix 3.6 run from a disk or other bootable device. In principle, this information should adapt to other versions or to any live Linux distribution, that loads itself from CD-ROM to run in RAM.

It is even possible that simply changing the KNOPPIX/KNOPPIX file upgrades to a newer Knoppix version (if this one comes with a new kernel, you'd likely have to change it too).

What is required

A Linux system to carry out the operations described in the following. Since we are talking about a beginner, this could be an available Knoppix version on CD-ROM; or the very beginner can download the tomsrtbt floppy from www.toms.net/rb and, following simple instructions, have in a few minutes, without hassles, a running Linux mini-distribution (a basic knowledge of Unix environment and common commands is required). All Linux commands described below have been given under tomsrtbt.
Remember to tell the BIOS to boot from the device, floppy or o CD-ROM, that contains your choosen Linux system.

The ISO image, or the CD-ROM, of the Knoppix version to be copied on the destination hard disk.

Of course, an empty hard disk with at least 1.2 GByte. Even a bit less, if calculating space carefully.

Prepare the disk

Within tomsrtbt, I created four partitions on the hda drive:

# fdisk /dev/hda
Disk dev/hda: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

P    Device  B  Start  End  Blocks   Id System
1 /dev/hda1  *      1    6   12064+  83 Linux         - boot partition
2 /dev/hda2         7  413  850512   83 Linux         - partition for the KNOPPIX file
3 /dev/hda3       414  544  264096   82 Linux swap    - swap partition
4 /dev/hda4       545  621  155232   83 Linux         - home

reserving 10 MB for the boot partition, 800 MB for the one to store the Knoppix image, 256 MB for the swap partition, and the remaining 150 MB for the user's persistent home and configuration files.

About disk partitioning, more than a choice is possible.
I prudentially kept separate the boot and Knoppix partitions, that could coincide. In general, a small boot partition, distinct from the system one, is needed by old BIOS versions that don't allow to boot from partitions extending beyond cylinder 1024: but the Knoppix partition here created is far smaller.
The swap partition has been assigned 256 MB, twice the RAM of the intended destination computer, and also twice the ramdisk size specified in the LILO configuration.
The left space is for configuration files and the home directory of the knoppix user, corresponding to the default KDE session, that can't reside in the boot partition as Knoppix takes exclusive control over it (2). One can choose to keep the home directory and configuration files in two separate partitions or in the same one, and to write home content to the partition or to an image file, which can also reside in a FAT32 partition. For a discussion of the possible combinations of these choices and their resulting consequences, also relating to known bugs of some Knoppix versions, see the document mentioned in note (3).

Created these partitions, I formatted hda1, hda2 and hda4 as ext2 filesystems, hda3 as swap:

# mke2fs -c /dev/hda1
# mke2fs -c /dev/hda2
# mke2fs -c /dev/hda4

# mkswap -c /dev/hda3

Created lost+found directories in the hda[124] partitions may be deleted.

The swapon command, to activate swapping, is included in the operations performed by Knoppix initialization scripts.

Prepare the Knoppix partition

Under Windows I downloaded (taking almost one day with ADSL) the Knoppix 3.6 ISO image on a disk, mounted it under tomsrtbt as hdc1, and verified the MD5 checksum of the image:

/mnt/hdc1/Knoppix 3.6# more KNOPPIX_V3.6-2004-08-16-EN.iso.md5
5bc8e9fee2a8be0b7180fcf3e49b5386 *KNOPPIX_V3.6-2004-08-16-EN.iso

/mnt/hdc1/Knoppix 3.6# md5sum KNOPPIX_V3.6-2004-08-16-EN.iso
5bc8e9fee2a8be0b7180fcf3e49b5386  KNOPPIX_V3.6-2004-08-16-EN.iso

I mounted this image (note the -o loop option to mount a file) as a filesystem under /mnt/iso,

# mkdir /mnt/iso
# mount -t iso9660 -o loop /mnt/hdc1/"Knoppix 3.6"/KNOPPIX_V3.6-2004-08-16-EN.iso /mnt/iso

and copied its content to hda2, keeping file attributes and permissions:

# cp -afr /mnt/iso/* /mnt/hda2

Having a working Knoppix CD-ROM, one can copy its content to hda2. To avoid burning one, I used the ISO image as source.

I cleaned /mnt/hda2 from some unnecessary files (e.g. the boot directory and autorun.* files used to boot from CD-ROM, now useless), getting

# ls -alR /mnt/hda2
total 17
drwxr-xr-x   4 root     root         4096 Dec  5 17:55 .
drwxr-xr-x   5 505      100           160 Dec  5 19:07 ..
dr-xr-xr-x   2 root     root         4096 Dec  4 17:44 Demos
dr-xr-xr-x   3 root     root         4096 Dec  5 05:28 KNOPPIX
-r--r--r--   1 root     root          315 Dec  5 17:55 index.html

total 3124
dr-xr-xr-x   2 root     root         4096 Dec  4 17:44 .
drwxr-xr-x   4 root     root         4096 Dec  5 17:55 ..
-r--r--r--   1 root     root           55 Feb 20  2004 .directory
-r--r--r--   1 root     root         6421 May 14  2002 OpenSourceSong-LICENSE.txt
-r--r--r--   1 root     root          323 Aug 13  2001 OpenSourceSong-README.txt
-r--r--r--   1 root     root      3170106 Oct  4  2002 OpenSourceSong.ogg

total 709524
dr-xr-xr-x   3 root     root         4096 Dec  5 05:28 .
drwxr-xr-x   4 root     root         4096 Dec  5 17:55 ..
-r--r--r--   1 root     root     725253780 Aug 22 19:22 KNOPPIX
-r--r--r--   1 root     root        10130 May  9  2004 KNOPPIX-FAQ-EN.txt
-r--r--r--   1 root     root        10577 May  9  2004 KNOPPIX-FAQ-ES.txt
-r--r--r--   1 root     root        12056 May  9  2004 KNOPPIX-FAQ-FR.txt
-r--r--r--   1 root     root        11852 May  9  2004 KNOPPIX-FAQ-IT.txt
-r--r--r--   1 root     root         9733 May  9  2004 KNOPPIX-FAQ-NL.txt
-r--r--r--   1 root     root        11352 May  9  2004 KNOPPIX-FAQ.txt
-r--r--r--   1 root     root        18487 Oct  3  2003 LICENSE.txt
-r--r--r--   1 root     root         2207 Apr 27  2004 README_Security.txt
-rw-r--r--   1 root     root       338276 Dec  5 05:26 background.png
dr-xr-xr-x   2 root     root         4096 Aug 22 04:08 images
-r--r--r--   1 root     root         8634 Aug 22 04:06 index.html
-r--r--r--   1 root     root        10573 Aug 22 04:06 index_dk.html
-r--r--r--   1 root     root         8171 Aug 22 04:06 index_en.html
-r--r--r--   1 root     root        11835 Aug 22 04:06 index_es.html
-r--r--r--   1 root     root         9617 Aug 22 04:06 index_fr.html
-r--r--r--   1 root     root        10390 Aug 22 04:06 index_it.html
-r--r--r--   1 root     root        10580 Aug 22 04:06 index_jp.html
-r--r--r--   1 root     root        10437 Aug 22 04:06 index_nl.html
-r--r--r--   1 root     root        13131 Aug 22 04:06 index_ru.html
-r--r--r--   1 root     root         9946 Aug 21 06:25 knoppix-cheatcodes.txt
-r--r--r--   1 root     root           15 Aug 22 04:35 knoppix-version
-r--r--r--   1 root     root         2680 Aug 22 21:00 md5sums

total 216
dr-xr-xr-x   2 root     root         4096 Aug 22 04:08 .
dr-xr-xr-x   3 root     root         4096 Dec  5 05:28 ..
-r--r--r--   1 root     root         6148 Aug  4 10:01 .DS_Store
-r--r--r--   1 root     root       172842 Aug 22 02:56 knoppix-header.gif
-r--r--r--   1 root     root        15227 Aug 22 03:40 knoppix-logo.gif
-r--r--r--   1 root     root          934 Aug 22 02:46 sidefill.gif
-r--r--r--   1 root     root         2464 Aug 22 03:30 topleft.gif

Adjustments. After starting the KDE graphic environment, Knoppix looks in the hda2 partition for a file index.html to open in Konqueror. If needed, modify index.html to load in a frame the introductory page KNOPPIX/index_en.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">



<title>KNOPPIX 3.6</title>


<frameset rows="100%,*" framespacing=0 border=0>

<frame src="KNOPPIX/index_en.html" frameborder=0 scrolling="auto" noresize="noresize">



At start, Knoppix loads the image background.png and then the choosen KDE background. To have them coincide, I converted my preferred background default_blue.jpg in a PNG image saved as background.png in /mnt/hda2/KNOPPIX.

A bit of condensed theory

Mainly based on The Linux Bootdisk HOWTO, see footnotes.

The booting procedure of a PC starts running from ROM a program, the BIOS, that loads the content of sector 0, cylinder 0 from the boot disk and tries to execute it. This sector, named Master Boot Record (MBR), can either contain the start of an operating system kernel or a program called boot loader that will detect, load and run the kernel or take to other boot loaders installed in the first sectors of other partitions. A common boot loader for Linux systems is LILO.

The kernel initializes the device drivers and its internal data structures; then reads, from a special location in its image called ramdisk word, where and how to find the filesystem to mount as root. If it doesn't find a loadable image here, it halts.

Once loaded and mounted the root filesystem, a message like this is displayed:  VFS: mounted root (ext2) readonly.

Under some situations, for space and speed reasons, the kernel loads the root filesystem from a compressed file into a ramdisk, a portion of RAM structured to emulate a disk.

The loaded root filesystem contains what the kernel needs to continue the launch procedure. The kernel executes from /bin or /sbin the init program, which reads from the sysinit row in its configuration file /etc/inittab the name of a script that mounts the devices — and eventual filesystem images to expand the one just loaded — initializes the network, sets swapping and other basic system services, then returns back to init that enters the runlevel specified at the initdefault row in inittab. This row points to a program, usually getty, that handles communications between keyboard and screen and invokes the login program to manage user validation and sessions.

In a standard distribution the kernel usually corresponds to the vmlinuz file, and the root filesystem is stored in miniroot.gz.

Knoppix 3.6 allows to choose between the 2.4 e 2.6 kernel versions, corrisponding to the linux24 and linux26 files, that create a ramdisk where to load the root filesystems respectively compressed in minirt24.gz and minirt26.gz, which init procedures expand the filesystem with the content of the KNOPPIX/KNOPPIX image located in the partition passed by LILO to the kernel as a parameter.

Prepare the boot partition and install LILO

Now LILO must be installed to make the hda1 partition bootable.
Once consulted the huge documentation about LILO and its configuration, I mounted /dev/hda1 as /mnt/hda1 and copied in it the files linux24, linux26, minirt24.gz, minirt26.gz from the ISO image.

I created under /mnt/hda1 a directory etc where to put the following lilo.conf file,


  append="fromhd=/dev/hda2 ramdisk_size=100000 init=/etc/init home=/dev/hda4 myconf=/dev/hda4 apm=power-off lang=en"

  append="fromhd=/dev/hda2 ramdisk_size=100000 init=/etc/init home=/dev/hda4 myconf=/dev/hda4 apm=power-off lang=en"

compiled according the configuration file of the isolinux boot loader, found in the ISO image, to let the user select starting Knoppix with the kernel 2.4 or 2.6. This file is read when LILO is installed, then each time the system boots.

boot=/dev/hda instructs LILO to install in that device's Master Boot Record. Specifying a partition, e.g. boot=/dev/hda1, would install LILO in the first sector of this partition.
install=/boot/boot.b specifies the file to copy by the lilo command into the boot sector as the boot loader binary.
message=/boot/message tells LILO the path of a file with a message to display at boot,
map=/boot/map where to create the map file.
prompt tells to wait five seconds (timeout=50) for the user to select a boot option, writing its label name and entering Return or pressing an alias key, before starting the default selection (default=knoppix);
single-key allows to boot an image pressing the key specified by the alias entry in the related section.

Each image=kernel section corresponds to a kernel to boot, passing to it parameters in the append strings. The initrd entry specifies the path of the boot filesystem to load in memory, root the partition to mount as root, label and alias the identificatives to type or press to select this kernel.

With append, in our case LILO passes to the kernel the following parameters:
ramdisk_size=100000 with the size in bytes of the ramdisk to create (copied this value from the isolinux configuration);
apm=power-off (Advanced Power Management) to automatically shut down the computer on exit (idem);
init=/etc/init to tell where to look, in the root filesystem extracted from the file specified in the initrd directive, for the location of the init program that goes on with the initializazion;
fromhd=/dev/hda, tells which partition to search for the KNOPPIX/KNOPPIX image that will expand the filesystem;
home=/dev/hda4 specifies the partition where to find the user persistent home directory, further created;
myconf=/dev/hda4 specifies the partition that will store the configuration files created by Knoppix at user's request;
lang=en tells to use the English language.

Since lilo.conf refers to a /dev/hda, I made a directory dev under /mnt/hda1 where I copied the following from the /dev directory of the running tomsrtbt ramdisk,

# cp -dpR /dev/console /mnt/hda1/dev
# cp -dpR /dev/kmem /mnt/hda1/dev
# cp -dpR /dev/mem /mnt/hda1/dev
# cp -dpR /dev/null /mnt/hda1/dev
# cp -dpR /dev/ram0 /mnt/hda1/dev
# cp -dpR /dev/tty[0-6] /mnt/hda1/dev
# cp -dpR /dev/fd[01]* /mnt/hda1/dev
# cp -dpR /dev/hda* /mnt/hda1/dev
# cp -dpR /dev/hdb* /mnt/hda1/dev
# cp -dpR /dev/hdc* /mnt/hda1/dev
# cp -dpR /dev/hdd* /mnt/hda1/dev

to create the required dev structure on the boot partition (melius abundare quam deficere) using the options, suggested by the documentation,

-d, --no-dereference
Copy symbolic links as symbolic links rather than copying the files that they point to, and preserve hard link relationships between source files in the copies.

-p, --preserve
Preserve the original filesí owner, group, permissions, and timestamps.

-R, --recursive
Copy directories recursively. Different from -r, Copy directories recursively, copying all non-directories as if they were regular files.

Under /mnt/hda1 I created a boot directory and put the file boot.b in it. As LILO and boot.b versions must match, and I was going to install LILO from tomsrtbt, I copied this one from the tomsrtbt floppy (not the ramdisk) in /mnt/fd0:

# cp -afr /mnt/fd0/boot.b /mnt/hda1/boot

Tomsrtbt's LILO version requires, before installation, the presence in the directory specified by lilo.conf of its own boot.b, to copy in the boot sector as the boot loader. With other versions the lilo command is said to create boot.b automatically, or installs the boot loader directly into the MBR without creating boot.b.

I placed in /mnt/hda1/boot a message file like the following, with the message LILO displays at boot, before loading the kernel:


          Knoppix From Hard Disk




[1]  knoppix     boot Knoppix with Linux kernel 2.4
[2]  knoppix26   boot Knoppix with Linux kernel 2.6

     or press ENTER for default (1)

If the first character corresponds to hexadecimal FF (don't know how to write it, see questions) the screen clears before displaying the message.

The file /mnt/hda1/boot/map mentioned in lilo.conf, listed below, will be created by LILO during its installation.

At this point I had got the following structure:

# ls -alR /mnt/hda1
total 4000
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 .
drwxr-xr-x   5 505      100           160 Dec  5 19:07 ..
drwxr-xr-x   2 root     root         1024 Dec  5 19:21 boot
drwxr-xr-x   2 root     root         1024 Nov 22 15:39 dev
drwxr-xr-x   2 root     root         1024 Nov 22 15:57 etc
-r--r--r--   1 root     root      1018412 Aug 22 05:22 linux24
-r--r--r--   1 root     root      1458194 Nov 18 17:19 linux26
-r--r--r--   1 root     root       799962 Aug 22 05:22 minirt24.gz
-r--r--r--   1 root     root       789544 Nov 18 17:19 minirt26.gz

total 56
drwxr-xr-x   2 root     root         1024 Dec  5 19:21 .
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 ..
-rw-r--r--   1 root     root          512 Nov 22 15:59 boot.0300
-rwxr-xr-x   1 root     root         4536 Nov 25 21:03 boot.b
-rw-------   1 root     root        46592 Nov 27 19:24 map
-rwxr-xr-x   1 root     root          352 Nov 22 14:39 message

total 2
drwxr-xr-x   2 root     root         1024 Nov 22 15:39 .
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 ..
crwxr-xr-x   1 505      100        4,   0 Nov 22 14:17 console
brwxr-xr-x   1 505      100        2,   0 May 12  2001 fd0
brwxr-xr-x   1 505      100        2,  28 May 12  2001 fd0H1440
brwxr-xr-x   1 505      100        2,  40 May 12  2001 fd0h1440
brwxr-xr-x   1 505      100        2,  60 May 12  2001 fd0u1722
brwxr-xr-x   1 505      100        2,   1 May 12  2001 fd1
brwxr-xr-x   1 505      100        2,  29 May 12  2001 fd1H1440
brwxr-xr-x   1 505      100        2,  41 May 12  2001 fd1h1440
brwxr-xr-x   1 505      100        2,  61 May 12  2001 fd1u1722
brwxr-xr-x   1 505      100        3,   0 May 12  2001 hda
brwxr-xr-x   1 505      100        3,   1 May 12  2001 hda1
brwxr-xr-x   1 505      100        3,   2 May 12  2001 hda2
brwxr-xr-x   1 505      100        3,   3 May 12  2001 hda3
brwxr-xr-x   1 505      100        3,   4 May 12  2001 hda4
brwxr-xr-x   1 505      100        3,   5 May 12  2001 hda5
brwxr-xr-x   1 505      100        3,   6 May 12  2001 hda6
brwxr-xr-x   1 505      100        3,   7 May 12  2001 hda7
brwxr-xr-x   1 505      100        3,   8 May 12  2001 hda8
brwxr-xr-x   1 505      100        3,  64 May 12  2001 hdb
brwxr-xr-x   1 505      100        3,  65 May 12  2001 hdb1
brwxr-xr-x   1 505      100        3,  66 May 12  2001 hdb2
brwxr-xr-x   1 505      100        3,  67 May 12  2001 hdb3
brwxr-xr-x   1 505      100        3,  68 May 12  2001 hdb4
brwxr-xr-x   1 505      100        3,  69 May 12  2001 hdb5
brwxr-xr-x   1 505      100        3,  70 May 12  2001 hdb6
brwxr-xr-x   1 505      100        3,  71 May 12  2001 hdb7
brwxr-xr-x   1 505      100        3,  72 May 12  2001 hdb8
brwxr-xr-x   1 505      100       22,   0 May 12  2001 hdc
brwxr-xr-x   1 505      100       22,   1 May 12  2001 hdc1
brwxr-xr-x   1 505      100       22,   2 May 12  2001 hdc2
brwxr-xr-x   1 505      100       22,   3 May 12  2001 hdc3
brwxr-xr-x   1 505      100       22,   4 May 12  2001 hdc4
brwxr-xr-x   1 505      100       22,   5 May 12  2001 hdc5
brwxr-xr-x   1 505      100       22,   6 May 12  2001 hdc6
brwxr-xr-x   1 505      100       22,   7 May 12  2001 hdc7
brwxr-xr-x   1 505      100       22,   8 May 12  2001 hdc8
brwxr-xr-x   1 505      100       22,  64 May 12  2001 hdd
brwxr-xr-x   1 505      100       22,  65 May 12  2001 hdd1
brwxr-xr-x   1 505      100       22,  66 May 12  2001 hdd2
brwxr-xr-x   1 505      100       22,  67 May 12  2001 hdd3
brwxr-xr-x   1 505      100       22,  68 May 12  2001 hdd4
brwxr-xr-x   1 505      100       22,  69 May 12  2001 hdd5
brwxr-xr-x   1 505      100       22,  70 May 12  2001 hdd6
brwxr-xr-x   1 505      100       22,  71 May 12  2001 hdd7
brwxr-xr-x   1 505      100       22,  72 May 12  2001 hdd8
crwxr-xr-x   1 505      100        1,   2 May 12  2001 kmem
crwxr-xr-x   1 505      100        1,   1 May 12  2001 mem
crwxr-xr-x   1 505      100        1,   3 May 12  2001 null
brwxr-xr-x   1 505      100        1,   1 May 12  2001 ram
brwxr-xr-x   1 505      100        1,   0 May 12  2001 ram0
brwxr-xr-x   1 505      100        1,   1 May 12  2001 ram1
brwxr-xr-x   1 505      100        1,   2 May 12  2001 ram2
brwxr-xr-x   1 505      100        1,   3 May 12  2001 ram3
brwxr-xr-x   1 505      100        1,   4 May 12  2001 ram4
brwxr-xr-x   1 505      100        1,   5 May 12  2001 ram5
crwxr-xr-x   1 505      100        4,   0 May 12  2001 tty0
crw--w--w-   1 root     root       4,   1 Nov 22 15:35 tty1
crw--w--w-   1 root     root       4,   2 Nov 22 15:01 tty2
crw--w--w-   1 root     root       4,   3 Nov 22 14:56 tty3
crw--w--w-   1 root     root       4,   4 Nov 22 14:17 tty4
crwxr-xr-x   1 505      100        4,   5 Nov 22 14:17 tty5
crwxr-xr-x   1 505      100        4,   6 May 12  2001 tty6

total 3
drwxr-xr-x   2 root     root         1024 Nov 22 15:57 .
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 ..
-rwxr-xr-x   1 root     root          558 Nov 24 21:49 lilo.conf

Finally, LILO was installed giving the command

# lilo -r /mnt/hda1

with the -r option to have it look for lilo.conf in /mnt/hda1/etc, and interpret the paths specified in lilo.conf as relative to /dev/hda1.

LILO answered

Added knoppix (alias 1) *
Added knoppix26 (alias 2)

creating map and boot.0300 under /mnt/hda1/boot.

Every time lilo.conf, the kernel or the message file are modified, one has to uninstall LILO,

# lilo -r /mnt/hda1 -U /dev/hda

and re-install it,

# lilo - r /mnt/hda1

to update the map file.

Inserted finally the disk as primary master in a suitable computer (*), we can taste the inestimable satisfation of seeing our own message displayed, making us feel so hacker, followed by the fast succeeding multicolor text rows output by Knoppix while booting and configuring itself.

All this labor yields a fast Knoppix system, that can be configured and used in productive environments.

Note. The installed LILO was the minimal version coming with tomsrtbt. It doesn't have nothing to do with Knoppix but, except for the problem described in note (*), works the same.

Change LILO version

2006.04.15. Tried to install another LILO version to see if booting problems with this disk persist with a different version.

As a first problem, I didn't find a live distribution providing, with the LILO executable, the corresponding boot.b. I had read that such a file must reside in the specified directory before installation, somewhere else that it is created by the lilo command, so tried looking what happens without the file.

Presuming that LILO has to be uninstalled by the same version used to install it, I removed LILO with tomsrtbt:

# mkdir /mnt/hda1
# mount /dev/hda1 /mnt/hda1
# lilo -r /mnt/hda1 -U /dev/hda

then I renamed boot.b in a backup copy,

# cd /mnt/hda1/boot
# mv boot.b backup.boot.b

and tried reinstalling LILO,

# lilo - r /mnt/hda1

getting the error message

open /boot/boot.b
  No such file or directory

Thus, tomsrtbt's LILO wants its boot.b present in the directory mentioned in lilo.conf.

On the other hand, with SystemRescueCD the lilo command installs the boot loader directly into the MBR without creating boot.b or requiring its presence.

Rebooting from SystemRescueCD, launched the lilo command again, still without boot.b:

# mkdir /mnt/hda1
# mount -t ext2 /dev/hda1 /mnt/hda1
# lilo - r /mnt/hda1

(Note that in SystemRescueCD, instead than tomsrtbt, the mount command wants the filesystem type declared explicitly). The operating system coughs awful messages about a wrong /dev structure, that being copied from the tomsrtbt floppy may be different than expected, then announces the creation of the aliases specified in lilo.conf. LILO is successfully installed.

Rebooting the hard disk, the new LILO presents its own interactive boot menu, with options according lilo.conf.

After this experiment, since nothing had changed about the disk being unable to boot on some machines, I removed the new LILO and reinstalled tomsrtbt's one, returning to the previous situation.

Configure Knoppix and create a persistent home

Like any Linux system, Knoppix can be customized according our own preferences, choosing a particular background or making the KDE window manager look like Windows 98, for users who are familiar with it.

In this guide, the /dev/hda4 partition has been reserved to knoppix.sh and configs.tbz configuration files, created and updated by the system when the user selects Save Knoppix configuration from the KNOPPIX - Configure KDE menu and chooses hda4 as destination partition.

Selecting Create a persistent KNOPPIX home directory saves the user's home directory in a file knoppix.img, created in hda4 and automatically updated on exit. I assigned this fixed-size file 100 MB (4) on approximate 150 available, to leave some space to configuration files and eventual others. This directory can be accessed mounting knoppix.img, which contains an ext2 filesystem, within tomsrtbt or other Linux system:

# mkdir /mnt/hda4
# mkdir /mnt/home
# mount /dev/hda4 /mnt/hda4
# mount -o loop /mnt/hda4/knoppix.img /mnt/home
# cd /mnt/home
# ls -al

and so on.


I'm not claiming to have said all that was to say, and this is one of my first non-trivial tries with Linux. Some of what is described has been tried, some other only read and reported as understood. For instance, the A bit of condensed theory section is wholly based on reading rather than experience, and condensed reports are mostly imprecise. Therefore error, uncertainty and approximation may nest at many levels. Whoever noticed any, or would like to add observations or improvements, is welcome.


2006.04.15 Some notes added about changing installed LILO version.
2005.05.05 Added changelog.
2005.04.26 English version.
2004.12.01 Original document, in Italian.

Questions and unresolved things

How to insert at the beginning of the message file the screen clearing character? Tried tomshexd without result.

Does the KNOPPIX/KNOPPIX content expand the root filesystem initially loaded in the ramdisk, or re-create a new filesystem?

What is the format of the KNOPPIX file? how does it store a file system? I didn't succeed in mounting it as is.
A. This file contains a filesystem compressed with a special utility. See Remastering Knoppix on their site.

Is the swap partition actually used? I don't see any swapon mention between the output rows displayed when the system starts.

* On the old Pentium II 266 MHz I use to surf the Web and test my sites, where I wanted to run my prepared Knoppix, the disk doesn't boot for some obscure reasons. The same for another machine, an AMD K2 450 Mhz.

At boot, appears the frustrating message

Non bootable device - Replace the disk and press any key

and from the BIOS settings screen the disk is not recognized, even trying autodetect. This would look like a hardware problem, but

– on many tries, this disk booted twice;
– tomsrtbt sees, mounts, reads and writes the disk on this computer too;
– previously used as secondary master with one FAT32 partition, using Windows 98 SE on the primary master, this disk never gave any problem;
– on another machine, a Pentium III 800 MHz, this disk is recognized and booted regularly, and the system works, excluding that the problem may depend on errors in the operations above described.

Any suggestion or explanation about this mystery will be appreciated.

Under the hypothesis that the disk doesn't boot on every machine because of the reduced LILO version provided with tomsrtbt, I tried changing it with SystemRescueCD's version, without any improvement.

1. "how to put a Knoppix distribution onto a hard drive or a Compact Flash IDE drive without actually installing it. (The knoppix.net HowTo page uses the term "HD Based" to contrast this scenario with an "HD install"). A drive with such a "non-installed" OS is used just like a "live CD", with the drive serving in lieu of the CDROM. This allows the CDROM drive to be used for other things, and is typically faster and quieter than using the CDROM.
[...] Why not just do a normal hard drive installation? [...] one of the beauties of Knoppix is that it represents a complex unit that can be upgraded enmasse, with all local customization kept completely separate (not intermixed with the "installed" files). [...] there is an opportunity to adjust the default boot options to your liking, so you don't have to type in your desired kernel boot options every time you start Knoppix.
— Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

2. "Knoppix will take exclusive control of the partition it boots from, so saving configs to it or using it for your home directory will not work." — Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

3. "I chose to have a separate dedicated partition for the persistent home feature of Knoppix, rather than use the facility to create a loopback file for HOME that shares an existing partition. This makes it easier for me to deal with expanding the HOME partition if needed later, or to access HOME files in other contexts than the running Knoppix system. On the other hand, if you use the "knoppix.img" loopback file to save the HOME files in, you can use a single partition to share both it and the saved configuration files, knoppix.sh and configs.tbz." — Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

4. I initially assigned 140 MB to knoppix.img, but configs.tbz grew fast so saving new configurations soon became impossible. To keep my configuration, I moved the existing knoppix.img to another partition and created in hda4 a new one of only 100 MB. Then I mounted both files as filesystems and copied the old one's content to the new.


Georg O'Keefe, From Power Up To Bash Prompt

Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

Tom Fawcett, The Linux Bootdisk HOWTO. 3. Bootdisks and the boot process

Author: Gatto Selvaggio / Wild Cat. The author reserves for himself all appliable rights. Any use of this document by third parties is subject to a Creative Commons license. For any use not covered by this license, included commercial use, or in case of doubt, please ask. The aim of this document is being diffused, but if you earn on it, please let me share the income.

6003 hits since April 22, 2005