initrd mounten
Das müsste so gehen:
So habe ich eine initrd aus dem Wiki gemountet, aber ich weiß es nicht mehr genau
Bitte korrigieren, wen ich falsch liege !
Gruß
Code: Alles auswählen
mv <imagedatei> <imagedatei.gz>
gunzip <imagedatei.gz>
mount -o loop <imagedatei>
Bitte korrigieren, wen ich falsch liege !
Gruß
hi,
mounten kann ich sie nicht, aber evt. reicht es, sie auszupacken:
anschliessend enthält das Verzeichnis initrd-test den Inhalt der initrd.
Es sieht aus wie gemountet, ist aber in Wirklichkeit kopiert.
mounten kann ich sie nicht, aber evt. reicht es, sie auszupacken:
Code: Alles auswählen
mv <imagedatei> <imagedatei.gz>
gunzip <imagedatei.gz>
mkdir initrd-test
cd initrd-test
cpio --extract < ../<imagedatei>
Es sieht aus wie gemountet, ist aber in Wirklichkeit kopiert.
Beware of programmers who carry screwdrivers.
- KBDCALLS
- Moderator
- Beiträge: 22456
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Eigentlich braucht die Initrd nicht zu entpacken. Zum Erstellen gibt es ja Tools die dir das abnehemen.
Initramfs-tool und yaird
Beide bauen im cpio Format
Dann gibt es noch die initrd-tools . Das darin enthaltene mkinitrd baut die Initrd im cramfs Format , welches man mounten kann , per loop . Dieses wird für Kernel 2.4.xx benutzt und bis Kernel 2.6.12. Ab Kernel 2.6.13 setzt Debian die beiden erstgenannten ein , wobei die initramfs-tools der Standard sind.
Initramfs-tool und yaird
Beide bauen im cpio Format
Dann gibt es noch die initrd-tools . Das darin enthaltene mkinitrd baut die Initrd im cramfs Format , welches man mounten kann , per loop . Dieses wird für Kernel 2.4.xx benutzt und bis Kernel 2.6.12. Ab Kernel 2.6.13 setzt Debian die beiden erstgenannten ein , wobei die initramfs-tools der Standard sind.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
- KBDCALLS
- Moderator
- Beiträge: 22456
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Welchen Kernel benutzt usw. Normalerweise reicht ein dpkg-reconfigure linux-image-2.6.18-4.486 aus Du mußt schon etwas mehr an Infos geben.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
hi,
Möchtest du eine funktionierende initrd von einem "großen"
Rechner abspecken und dann auf einen "kleinen" kopieren?
Dann probier doch mal, den ausgepackten Verzeichnisbaum
mit "cpio --create" wieder einzupacken. Danach noch ein "gzip"
und fertig. Müsste doch eigentlich gehen?
ABER: für ein Mini-Linux würde ich komplett auf die Ramdisk
verzichten und gleich einen passenden Kernel bauen.
Möchtest du eine funktionierende initrd von einem "großen"
Rechner abspecken und dann auf einen "kleinen" kopieren?
Dann probier doch mal, den ausgepackten Verzeichnisbaum
mit "cpio --create" wieder einzupacken. Danach noch ein "gzip"
und fertig. Müsste doch eigentlich gehen?
ABER: für ein Mini-Linux würde ich komplett auf die Ramdisk
verzichten und gleich einen passenden Kernel bauen.
Beware of programmers who carry screwdrivers.
Es geht um das hier:
http://www.debianforum.de/forum/viewtopic.php?t=84795
Die Dienste laufen und liefern auch aus, nur, komme ich mit den initrd bauen nicht vorwärts.
Kernel sollte ein 2.6.18-4-686 sein, bzw kann auch ein 2.6.21-686 sein. Sogenau habe ich derzeit nicht auf den Kernel geschaut.
http://www.debianforum.de/forum/viewtopic.php?t=84795
Die Dienste laufen und liefern auch aus, nur, komme ich mit den initrd bauen nicht vorwärts.
Kernel sollte ein 2.6.18-4-686 sein, bzw kann auch ein 2.6.21-686 sein. Sogenau habe ich derzeit nicht auf den Kernel geschaut.
mfg
wotan
wotan
moin, moin,
also ich geh mal davon aus, daß du einen normalen PC hast, auf dem
Etch mit dem Debian-Kernel 2.6.18... installiert ist. Der Rechner soll
vom Netz booten und komplett in der initrd laufen.
Für den Anfang würde ich erstmal die initrd lokal zum Laufen bringen,
und zwar mit einer modifizierten Standard-Debian-initrd. Meine hatte
yaird erzeugt, aber das Prinzip sollte auch für andere Tools passen.
Zusätzlich braucht man das Paket "busybox-static", weil da praktisch
alles was man im Mini-System braucht, in einer Datei drin ist.
Erstmal braucht man ein Arbeitsverzeichnis auf einer Partition, auf der
man Devices erzeugen darf. Da schreibt man sich ein kleines Script "mkrd":
dann packt man die Debian-initrd aus (z.B.):
jetzt befindet sich in "rootdir" das root-Verzeichnis des Mini-Systems.
Die entscheidende Änderung ist eine zusätzliche Zeile ganz am Ende
der Datei "rootdir/init", nämlich der Start einer Shell:
Dann kopiert man sich alle Programme, die man gerne hätte, nach
"rootdir/bin" und die benötigten libs nach "rootdir/lib". Oder man
nimmt für den Anfang busybox, was viele Kommandos in einer Datei
unterbringt und je nachdem, wie es aufgerufen wird, ausführt:
Jetzt kann man die neue initrd einpacken und nach /boot kopieren:
Als nächstes braucht man einen Grub-Eintrag mit der neuen initrd:
Die root...-Zeile ist für Grub, der Kernel benutzt ja die initrd.
"root=/dev/hda5" steht trotzdem da, weil nämlich das System ganz
normal (weiter-)bootet, wenn man die dash-Shell beendet -- mega
praktisch zum Testen, auf geht's:
viel Spaß!
also ich geh mal davon aus, daß du einen normalen PC hast, auf dem
Etch mit dem Debian-Kernel 2.6.18... installiert ist. Der Rechner soll
vom Netz booten und komplett in der initrd laufen.
Für den Anfang würde ich erstmal die initrd lokal zum Laufen bringen,
und zwar mit einer modifizierten Standard-Debian-initrd. Meine hatte
yaird erzeugt, aber das Prinzip sollte auch für andere Tools passen.
Zusätzlich braucht man das Paket "busybox-static", weil da praktisch
alles was man im Mini-System braucht, in einer Datei drin ist.
Erstmal braucht man ein Arbeitsverzeichnis auf einer Partition, auf der
man Devices erzeugen darf. Da schreibt man sich ein kleines Script "mkrd":
Code: Alles auswählen
#!/bin/sh
# mkrd: initrd-einpack-Script
cd rootdir
find . > ../files
cpio --create --format=newc < ../files > ../initrd-mini
cd ..
rm initrd-mini.gz
gzip initrd-mini
cp -p initrd-mini.gz /boot
Code: Alles auswählen
cp -p /boot/initrd.img-2.6.18-4-k7 ./initrd.img-2.6.18-4-k7.gz
gunzip initrd.img-2.6.18-4-k7.gz
mkdir rootdir
cd rootdir
cpio --extract < ./initrd.img-2.6.18-4-k7
Die entscheidende Änderung ist eine zusätzliche Zeile ganz am Ende
der Datei "rootdir/init", nämlich der Start einer Shell:
Code: Alles auswählen
(...)
/bin/mount -n \
$ro \
-t ext3 \
-o 'errors=remount-ro' \
'/dev/hda5' \
'/mnt'
/bin/dash # neu: die Shell des Mini-Systems
switchroot "$@"
"rootdir/bin" und die benötigten libs nach "rootdir/lib". Oder man
nimmt für den Anfang busybox, was viele Kommandos in einer Datei
unterbringt und je nachdem, wie es aufgerufen wird, ausführt:
Code: Alles auswählen
cd rootdir/bin
cp -p /bin/busybox .
ln -s busybox ls
ln -s busybox df
ln -s busybox fdisk
... usw. ...
Code: Alles auswählen
./mkrd
Code: Alles auswählen
title Debian GNU/Linux, 2.6.18-4-k7, Ramdisk-System
root (hd0,4)
kernel /boot/vmlinuz-2.6.18-4-k7 root=/dev/hda5 ro
initrd /boot/initrd-mini.gz
"root=/dev/hda5" steht trotzdem da, weil nämlich das System ganz
normal (weiter-)bootet, wenn man die dash-Shell beendet -- mega
praktisch zum Testen, auf geht's:
Code: Alles auswählen
shutdown -r now
Beware of programmers who carry screwdrivers.