Installing to a machine with 64MB RAM

From time to time I see posts from people who discover that Slackware 12.2 can not be installed on a computer with only 64MB of RAM by conventional means (using the bootable CD/DVD or a USB stick). The reason for this is that the size of the initial ramdisk (isolinux/initrd.img) has grown in size quite a bit, thanks to the addition of more network modules and support binaries.

My first reaction was, that Slackware 11 would be a better choice for machines that are old enough to have this little RAM, but then I received an email from Florian Kindl suggesting a split of the initrd.img file in two. His idea was to have two separate ramdisks (the better term would be “initramfs” which is the ramdisk type we use with the 2.6 kernels): one containing modules for the SMP kernel (hugesmp.s) and the other containing modules for the non-SMP kernels (huge.s and speakup.s) in the installer. Getting rid of the unwanted kernel modules frees up a lot of memory, allowing the kernel plus initrd to load in as little as 64MB of RAM.

I decided to play with that concept a bit. I created two initrd images, and updated isolinux/isolinux.cfg to reflect the use of two separate ramdisks.

This works great. I was able to boot a modified Slackware 12.2 installer on a computer that had 64MB of available RAM. There is an obvious disadvantage however. The combined size of these two separate initrd files is 9MB larger than the original single initrd image file. Since the Slackware CD set is severely space-constrained, adding 9MB in one place could mean that 9MB of files has to be removed from the Slackware tree (read: 9MB of Slackware packages needs to go).

So, I decided to take an alternative approach based on a tip from my buddy alphageek who suggested that 2.6 kernel modules will still work when they are gzipped (just like Slackware used to do for 2.4 kernels). I rebuilt the initrd.img file with gzipped kernel modules and tested this on a 64 MB computer.

What do you know… gzipping the kernel modules in the initrd increases the filesize of the initrd.img with less than 300 KB (not too bad), but after the Slackware installer loads the kernel plus initramfs, there is about 9MB of additional memory available compared to the original Slackware 12.2 installer. This means that this modified installer with it’s compressed kernel modules will work on a computer with 64 MB of available RAM… for good measure I tested with only 48MB of installed RAM, but that is just too little.

For those who have an old computer where the Slackware 12.2 CD fails to boot, showing “kernel out of memory”, I made the results of my experiments available:

  • A “mini-ISO” image file containing only the Slackware 12.2 installer can be downloaded at http://www.slackware.com/~alien/slackboot/mini/12.2/ . It is a small (28MB size) ISO image containing no packages at all, and it is meant for either a network install (using a NFS/HTTP/FTP server) or an install from a pre-mounted package directory on a local partition (harddisk or USB stick)
  • The rebuilt initrd.img file that contains gzipped kernel modules can be found here: http://www.slackware.com/~alien/slackboot/64mb_ram/12.2/ . You can use this iitrd.img file to re-master a Slackware CD or DVD when you remove the original “isolinux/initrd.img” file and replace it with my updated version.
  • At the same URL http://www.slackware.com/~alien/slackboot/64mb_ram/12.2/ I have also uploaded an updated “usbboot.img” file; this is the image file for a bootable USB stick. This USB bootable image  contains those same compressed kernel images which makes it possible to use on computers with only 64MB of RAM (although I have some doubt whether these old machines support booting from USB at all…)

If you have any remarks about the use of this modified Slackware installer, please let me know. I always like feedback, because it allows me to make things better.

Eric

5 thoughts on “Installing to a machine with 64MB RAM


  1. Pingback: Slackware 13.1 installation huge.s stops at kernel_thread_helper

  2. Hello Eric,

    I have asked on freenode #slackware how to handle initrd.img. I have laptop Toshiba 4090 XCDT with unmodified specifications. It has a great Mendocino Celeron CPU on 400 MHz, 64 MB RAM and only 2 GB of HDD which is also very slow. So I found two of solutions:
    1. Making old initrd smaller by deleting one module tree in lib/modules/2.xx.x-smp and repacking then replacing the old initrd.img in /isolinux on USB stick.
    # unpack old initrd image: first unzip, then extract with cpio
    mkdir oldinitrd
    cd oldinitrd
    cp cdcontents/isolinux/initrd.img initrd.img.gz
    gunzip initrd.img.gz
    cpio -i –make-directories ../newinitrd.img
    cd ..
    gzip -9 newinitrd.img
    mv newinitrd.img.gz cdcontents/isolinux/initrd.img
    2. In case above method does not work then just copy over initrd.img from Slackware 11.0 (2.6MB). Slackware 12.2 and 11.0 uses the same package system, and ends in .tgz
    For Slackware 13.0 use method #1 because #2 won’t work due to .txz packages that older versions wouldn’t recognize (message: package doesn’t end in .tgz, but you will not be able to see it in setup, and setup will finish too quick, so something must have gone wrong). Hope this will help someone.
    Greetings,
    Dino.


  3. Hai erica, i have a pentium III desktop at home. Its configuration as follows:
    700 MHz processor
    256 MB SDram
    32MB onboard memory
    40 GB HDD
    all i wanna know that slackware 12.2 is install this system or not.
    I tried to install many times, but at the last time os installation, the lilo boot loader installation gets fail. Its just failes to install the LILO . So i cant boot the os after installation.



Leave a Reply to Dino Cancel reply

Your email address will not be published. Required fields are marked *

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