Linux / on tmpfs
Linux / on tmpfs Release status: stable [box doku] | |
---|---|
Description | Boot your linux to RAM |
Author(s) | siro |
Last Version | 1 |
Original Artikel
http://www.silentpcreview.com/forums/viewtopic.php?t=48568
Worum gehts ?
Ziel ist es das rootfs / beim booten in eine Ramdisk / als tmpfs zu einzuhängen.
Vorteile:
- Schnelle Dateizugriffe
- System ist immer im Originalzustand, Änderungen werden nicht dauerhaft gespeichert
- Bei Ausschalten der Festplatten im PC:
- Keine Geräuschentwicklung
- Geringerer Stromverbrauch
- Längere Lebensdauer der Platten/ Flash
Nachteile:
- Boot dauert lange (1-2 Minuten)
- Speichern / Updates sind umständlicher
- Bei Stromausfall Datenverlust
- Großer Speicherplatz-Verbrauch im RAM (je nach Größe der root- Partition) (2 GB sind OK, bei >8GB im PC)
Ramdisk / tmpfs
http://de.wikipedia.org/wiki/Tmpfs
http://de.wikipedia.org/wiki/Ramdisk
'tmpfs (engl. für Temporary File System) ist ein Dateisystem, das in vielen Unix-artigen Betriebssystemen als verbesserter Ersatz für eine Ramdisk eingesetzt wird. Im Gegensatz zur Ramdisk bei der realer Arbeitsspeicher verwendet wird, wird bei tmpfs virtueller Arbeitsspeicher statt der Festplatte als Speicher benutzt.'
Wie gehts ?
Möglichkeit A:
- 1. Distribution mit Live-Cd installieren. Die root-Partition ( / )möglichst klein halten. /home und /boot auf separate Partitionen. /swap nicht vergessen.
- 2. Nach der Installation in das installierte System wechseln mit chroot:
/dev/sdaX (root-Partition) und /dev/sdaY (boot-Partition) anpassen ! sudo -s mkdir /mnt/boot mount /dev/sdaX /mnt/ mount /dev/sdaY /mnt/boot mount -o bind /dev /mnt/dev mount -t proc /proc /mnt/proc mount -o bind /sys /mnt/sys chroot /mnt /bin/bash cp /etc/fstab /etc/fstab.old nano /etc/fstab
- 3. /etc/fstab anpassen:
Die Zeile mit dem Eintrag / ändern in:
none / tmpfs defaults 0 0
- 4. Das local-script in initramfs ändern (gibs da nen besseren weg ??)
cp /usr/share/initramfs-tools/scripts/local /usr/share/initramfs-tools/scripts/local.bak nano /usr/share/initramfs-tools/scripts/local
- 5. Dateien beim starten kopieren lassen
Die Zeile mit
# FIXME This has no error checking # Mount root mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
auskommentieren und diesen Text einfügen:
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
- 6. Initramdisk bauen lassen
mkinitramfs -o /boot/initrd.img-ramdisk
- 7. Aufräumen
mv /usr/share/initramfs-tools/scripts/local /usr/share/initramfs-tools/scripts/local.ram mv /usr/share/initramfs-tools/scripts/local.bak /usr/share/initramfs-tools/scripts/local
- 8. grub.cfg / menu.lst ändern (update-grub geht nicht ?)
Booteintrag kopieren und die Zeile ändern in
/initrd /initrd.img-ramdisk
- 9. Alles umounten
exit umount /mnt/dev umount /mnt/proc umount /mnt/sys umount /mnt/boot umount /mnt/ reboot
- 9. Beim booten neuen Booteintrag mit erstellter initrd auswählen und einige Zeit warten.
Ergebnis
tiotest (scheint fehlerhaft zu sein...)
In VM getested:
root in tmpfs:
Lesen/Schreiben Rand/Seq > 900 MB/s
CPU load 100% (die VM bremst...)
root auf /dev/sda:
Schreiben Rand 25 MB/s
Schreiben Seq 60 MB/s
CPU load 10% - 100%