Advertising

Author Topic: Linux - Load your root partition to RAM and boot it  (Read 4692 times)

Offline way12go

  • Sr. Member
  • ****
  • Posts: 479
  • Life is a unique pattern.
Linux - Load your root partition to RAM and boot it
« on: November 29, 2014, 01:46:36 pm »
Code: [Select]
http://reboot.pro/topic/14547-linux-load-your-root-partition-to-ram-and-boot-it/
This tutorial will guide you through the steps to modify your initramfs to load all files from / to a tmpfs. This will only work with Debian 5 or newer and Ubuntu 9 ? or any unix thats supports booting from a initramfs. Since this is a virtual filesystem in RAM, not a virtual harddisk, this has many advantages.

What you need:
* lots of RAM
* Debian based distribution or any that supports booting from initramfs
* mkinitramfs or a tool to build a new initramfs
* some linux knowledge
* no need to create an image
* no need for Grub4Dos
* no need for a "special driver"

Step 1:
Choose a distribution thats supports booting from initramfs. (like ubuntu)

Step 2:
Install to harddisk. Make sure you split it into multiple partitions (/, /boot, /home, swap, ...).

Step 3:
Boot your new system, install updates, drivers if neccessary (this will improve performance), strip it down to the minimum. Every file will be loaded to RAM ! A fresh install uses about 2 GB auf harddisk-space.

Step 4:
modify /etc/fstab :
* make a backup

Code: [Select]
cp /etc/fstab /etc/fstab.bak
find the line specifing the root partition and change it in:

Code: [Select]
none / tmpfs defaults 0 0
* save

Step 5:
edit the local script in your initramfs:

Code: [Select]
cd /usr/share/initramfs-tools/scripts/
* make a backup of /usr/share/initramfs-tools/scripts/local

Code: [Select]
cp local local.bak
* modify local, find this line:

Code: [Select]
# FIXME This has no error checking

# Mount root

mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}

* change it to:

Code: [Select]
# FIXME This has no error checking

# Mount root

#mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}

mkdir /ramboottmp

mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /ramboottmp

mount -t tmpfs -o size=100% none ${rootmnt}

cd ${rootmnt}

cp -rfa /ramboottmp/* ${rootmnt}

umount /ramboottmp

* save
* execute, or rebuild initramfs

mkinitramfs -o /boot/initrd.img-ramboot

* replace modified local with original file

Code: [Select]
cp -f local.bak local
Step 6:
* modify this file (needs a better solution)

Code: [Select]
/boot/grub/grub.cfg
* copy the first boot entry and replace the /initrd line with this:

Code: [Select]
/initrd /initrd.img-ramdisk
* label the new entrie as RAMBOOT
This will boot our generated initramfs instead the original one.
Step 7:
* reboot
* choose standart boot (no ramdisk)
* choose RAMBOOT and all your files on the root partition will be loaded to a tmpfs

Results:
Test setup:
*Kernel : Linux 2.6.38-8-generic (i686)
*Compiled : #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011
*Distribution : Ubuntu 11.04
*no graphics driver
*Desktop HP 8100E
*Core i7 860
*4GB Memory 2 Modules (DDR3)
*WDVeliciraptor 10k rpm 160GB

*the initrd is a ramfs:
** Ramfs will grow dynamically,
it will grow until theres no more free RAM, it may crash your system
** tmpfs will not grow dynamically,
it will grow until it reaches the maximum size you specified or theres no more free space in RAM or on your swap device. If both are full you will receive the error: “No space left on device".

* I don't use the rootfs to keep things simple
changes in /scripts/local are simple, you can still use any kind of disk-encryption, softraid, ...

Life is a unique pattern.

Offline way12go

  • Sr. Member
  • ****
  • Posts: 479
  • Life is a unique pattern.
Re: Linux - Load your root partition to RAM and boot it
« Reply #1 on: November 29, 2014, 01:51:39 pm »
Does this apply to Sparkylinux?
Life is a unique pattern.