Lilo, Initrd und dann "/" nur im RAM

Post Reply
Message
Author
Otto

Lilo, Initrd und dann "/" nur im RAM

#1 Post by Otto »

Lilo startet die Initrd von Platte, dort wird linuxrc ausgeführt. Danach wird automatisch die Festplatte als "/" gemountet und /sbin/init ausgeführt.

Ich möchte jedoch das die Festplatte nicht als "/" gemountet wird, stattdessen möchte ich in der linuxrc eine Ramdisk (tmpfs mit variabler Größe) anlegen. Diese soll dann als "/" gemountet werden.

Problem: lilo erwartet als "root="-Parameter ein Device, das nach dem Mounten das "/"-Dateisystem enthält, damit dort /sbin/init ausgeführt werden kann.

Wird linuxrc nicht beendet, so kann man zwar eine Ramdisk /tmpfs anlegen, dort alle nötigen Dateien anlegen mit pivot_root (und chroot) dorhin wechseln, aber /sbin/init kann nicht gestartet werden. Es wird erkannt das der Aufruf nicht vom Kernel selbst stammt.

Geht das mit lilo?
Was muss bei root= für tmpfs angegeben werden? (Syslinux kennt root=ramfs, ich bin jedoch auf lilo angewiesen, denn die Festplatte ist ein DOC (DiskOnChip), der lilo benötigt. Der DOC ist langsam!)
Wie teile ich lilo mit, dass er das Dateisystem nur remounten soll, damit der Inhalt dieser Ramdisk erhalten bleibt?
Google führte mich nur zu Beispielen mit dem Normalfall Festplatte als "/". Irgendwelche Links, die mir helfen könnten?

TIA
Otto

petameta
prolinux-forum-admin
Posts: 1294
Joined: 14. Feb 2003 13:19

Re: Lilo, Initrd und dann

#2 Post by petameta »

Ich geb mal zwei Tips für Suchwörter: "pivot_root" (Kernel 2.4.x) oder "real-root-dev" (Kernel 2.2.x). Der Trick ist, in der initrd das root zu wechseln.

Ich habe zwar isolinux genommen, weil ich von CD starte, aber sollte für lilo ähnlich aussehen:

init=/linuxrc
root=/dev/ram0
boot=/dev/cdrom:iso9660 (das ist natürlich anders bei Dir)
ramdisk_size=xxx (in kb)

petameta
prolinux-forum-admin
Posts: 1294
Joined: 14. Feb 2003 13:19

Re: Lilo, Initrd und dann

#3 Post by petameta »

Hups sorry habe nicht genau genug gelesen, das mit dem pivot_root hast Du ja schon.

Guck mal hier, sind Anleitungen für Boot-CDs, geben aber trotzdem wichtige Hinweise:

http://hints.linuxfromscratch.org/hints.shtml

Vor allem eine Zeile ähnlich dieser hier muß ans Ende des /linuxrc:

exec /usr/sbin/chroot . /sbin/init < dev/console > dev/console 2>&1

Otto

Re: Lilo, Initrd und dann

#4 Post by Otto »

Danke für den Hinweis:

Die Lösung ist einfach:
in /etc/lilo.conf: append = "root=/dev/ram init=/linuxrc rw"
in linuxrc: mount -n -t tmpfs /dev/ram /mnt
Unter /mnt werden die Dateien für "/" angelegt.

Einziges Problem init will anscheinend das Dateisystem checken und möchte es als ro gemountet haben. Werde es mit remount probieren.

Post Reply