gelöst -- / -> tmpfs?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

gelöst -- / -> tmpfs?

Beitrag von KingBonecrusher » 27.06.2008 15:45:29

Hi!

Da ich genug RAM habe wollte ich mein root Dateisystem in den Speicher hauen. Also komplett. Mein Debian mit XFCE4 und allem Krempel hat nur 647MB. Meine Idee war im early_userland ein tmpfs mit 800MB anzulegen, von /dev/sda1 alles nach /new_root (800MB tmpfs) zu kopieren. Danach dann eben mit pivot_root nach /new-root wechseln.

Ist meine Idee soweit Ok, oder meint Ihr das wesentlich besser lösen zu können?

Ich habe das schon probiert, soweit klappt das auch, nur ist dann mein tmpfs, also das neue / Schreibgeschützt.
Das war aber auch nicht im early_userland, sondern von einer LiveCD!

Code: Alles auswählen

mount -t tmfps none /new_root -o size=800m
<datein kopieren>
cd /new-root
pivot_root . /  (hier bekomme ich ein "Device Busy, geht aber trotzdem"
exec chroot . sh <dev/console >dev/console 2>&1
umount /dev/sda1
Das System läuft auch gut, nur / ist dann Schreibgeschützt. Obwohl mount ein rw als opt anzeigt!
Ich wäre über Infos und Links zu diesem Thema, root Dateisystem im RAM dankbar...

mfg
Zuletzt geändert von KingBonecrusher am 30.06.2008 08:42:34, insgesamt 1-mal geändert.

Benutzeravatar
bse
Beiträge: 468
Registriert: 19.03.2006 19:58:00
Lizenz eigener Beiträge: MIT Lizenz

Re: / -> tmpfs?

Beitrag von bse » 27.06.2008 19:29:12

Also erst mal: solang du "genug" RAM hast, wird jede Datei eh nur einmal von der Platte geladen und ist dann im Cache, im RAM. Ich bezweifle also den Sinn. Aber gut.

Kann es sein, dass deine /etc/mtab einfach nicht passt? Verlässlicher als die Ausgabe von mount ist da der Inhalt von /proc/mounts.

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: / -> tmpfs?

Beitrag von KingBonecrusher » 28.06.2008 16:24:37

Also ich würde das gerne über die initramfs lösen. Habe auch schon ein Script geschrieben. Also mein Script lädt ein 750MB tmpfs Laufwerk. Die Daten aus dem / von der HDD werden erfolgreich auf das tmpfs kopiert. Leider startet das System nicht von dem mountpoint! Glaube ich muss da ein /dev/ Device haben.

old_root -> /new_root

Der Kernel startet folgendermaßen:

Code: Alles auswählen

root=/new_root 
Ich werde das mal probieren über eine ramdisk. Dann habe ich zumindest ein direkts Device zum ansprechen.

mfg

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: / -> tmpfs?

Beitrag von KingBonecrusher » 28.06.2008 22:37:00

Klappt leider alles nicht :-( Gibts keinen weg schon im early_userland das root Datensystem in den ram zu werfen? mfg...

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Re: gelöst -- / -> tmpfs?

Beitrag von KingBonecrusher » 30.06.2008 09:39:13

So, habe das Problem gelöst und ein Quick & Dirty Script dafür erstellt. Zu finden sind diese Vorlagen in /usr/share/doc/initramfs-tools/examples/scripts/example-script. In dieses Script den Code unter "Do the wotk here" und danach ab damit nach /etc/initramfs-tools/scripts/local-top/ und natürlich ausführbar machen!

Code: Alles auswählen

mkdir /old_root
mount -o size=750m,mode=0755 -t tmpfs tmpfs /root
mount -t ext3 /dev/sda1 /old_root
cp -r /old_root/ /root/
umount /old_root
rm -rf old_root
Es muss unbedingt /root sein im Script, ist so FEST im Script in der initrd vorgesehen. Desweiteren muss der Parameter ROOT=/sbin in grub gesetzt werden. Ja, ich weiss /sbin ist als root Laufwerk völlig falschen, erzeugt aber einen Fehler und der Bootprozess bleibt nicht bei "Waiting for root Device" hängen... Ich denke mal das kann man alles besser lösen, aber so klappt das erstmal. Ach ja, aus der /etc/fstab alles auskommentieren.

Ach ja, die initrd muss natürlich auch neu erzeugt werden und dem Kernel übergeben werden:

Code: Alles auswählen

mkinitramfs -o /boot/test.img
Danach startet das System direkt aus dem Speicher richtig fix. Programme sind sofort da. Also RICHTIG schnell das ganze!!

Antworten