Skip to content

Instantly share code, notes, and snippets.

@weidi
Forked from avinash-oza/boot-from-ram-debian.md
Last active September 11, 2024 14:46
Show Gist options
  • Save weidi/4d3dc0bf4c7c7d820aa7a33e43fed15b to your computer and use it in GitHub Desktop.
Save weidi/4d3dc0bf4c7c7d820aa7a33e43fed15b to your computer and use it in GitHub Desktop.
How to boot from RAM on debian

Booting Debian from a RAM disk

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: cp /usr/share/initramfs-tools/scripts/local /usr/share/initramfs-tools/scripts/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
mv /usr/share/initramfs-tools/scripts/local /usr/share/initramfs-tools/scripts/local.createramdisk
mv /usr/share/initramfs-tools/scripts/local.bak /usr/share/initramfs-tools/scripts/local

Step 6:

  • update Grub.cfg to show new initramfs
ln -s /boot/vmlinuz-<version number> /boot/vmlinuz-<version number>-ramboot
update-grub

Step 7:

  • reboot
  • choose standart boot (no ramdisk)
  • choose RAMBOOT and all your files on the root partition will be loaded to a tmpfs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment