This guide is adapted from http://reboot.pro/topic/14547-linux-load-your-root-partition-to-ram-and-boot-it/
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
:
cp /etc/fstab /etc/fstab.bak
find the line specifing the root partition and change it in:
none / tmpfs defaults 0 0* save
Step 5: edit the local script in your initramfs: cd /usr/share/initramfs-tools/scripts/* make a backup of /usr/share/initramfs-tools/scripts/local cp local local.bak* modify local, find this line:
# FIXME This has no error checking
# Mount root
mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
change it to:
# 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 cp -f local.bak localStep 6:
- modify this file (needs a better solution) /boot/grub/grub.cfg* copy the first boot entry and replace the /initrd line with this: /initrd /boot/initrd.img-ramboot* label the new entry 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
For me—running Debian 11 (bullseye)—this line:
/initrd /initrd.img-ramboot
should be:
/initrd /boot/initrd.img-ramboot
Otherwise, it works perfectly on my machine.
It's worth a mention that the screen will display only a flashing cursor for about a minute while it loads the system contents into ram. Could easily be mistaken for a frozen computer.
I have my Debian system fully installed on USB and use this method. Running in normal (non-ram) mode takes Firefox 7 seconds to load, and running on Ramboot, <2 seconds, so it definitely does speed things up.
Anyone know of a way to sync the ram back to the disk? Would be awesome to then have the ability to retain persistence if the user chose to at the end of their session.
Thanks so much for this guide and glad you've kept it up all these years!