Ramdisk vom USB-Stick einhängen unmöglich!
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Mal versuchen erstmal nen minimal Kernel ohne initrd zu bauen? Also alles was nicht unbedingt gebraucht wird abschalten, alles andere fest einkompilieren lassen.
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Am Kernel kann es nicht liegen, weil der Bootloader ja bemängelt, dass etwas mit der Ramdisk nicht in Ordnung sein soll. Ich habe daher jetzt nochmals folgenden Befehl ausgeführt:
Diesmal am PC mit dem mkimage Programm, welches dem Kernel Archiv beiliegt. Funktioniert wieder nicht.
Der Bootloader lädt das Image im RAM, aber will es nicht booten.
Code: Alles auswählen
johannes@sharkoon:~/kernel/arch/arm/boot$ ./mkimage -n 'Ramdisk Image' -A arm -O linux -T ramdisk -C gzip -d /home/johannes/armhf-debian/boot/initrd.img.gz initramfs.uImage
Image Name: Ramdisk Image
Created: Mon Jun 24 15:20:45 2019
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 2641576 Bytes = 2579.66 kB = 2.52 MB
Load Address: 00000000
Entry Point: 00000000
johannes@sharkoon:~/kernel/arch/arm/boot$
Code: Alles auswählen
m6_yifang#fatload mmc 0 0x00000000 initramfs.uImage
reading initramfs.uImage
2641640 bytes read
m6_yifang#fatload mmc 0 0x82000000 uImage
reading uImage
3086088 bytes read
m6_yifang#bootm 0x82000000 0x00000000
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-3.0.8-ge9ca3e2
Image Type: ARM Linux Kernel Image (lzma compressed)
Data Size: 3086024 Bytes = 2.9 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Wrong Ramdisk Image Format
Ramdisk image is corrupt or invalid
m6_yifang#
Re: Ramdisk vom USB-Stick einhängen unmöglich!
WOW es hat gefunzt!!
Juhu! Der Fehler war folgender:
anstatt die Ramdisk im RAM bei 0x00000000 zu laden einfach bei 0x90000000 im RAM laden und dann diese booten.
Yes!
Danke nochmals für all Eure Hilfe! Hier geht es jetzt weiter, nachdem ich die Kernel Befehlszeile richtig gesetzt habe, mit Debian armhf auf diesem Tablet/Mainboard: viewtopic.php?f=15&t=173696
Juhu! Der Fehler war folgender:
anstatt die Ramdisk im RAM bei 0x00000000 zu laden einfach bei 0x90000000 im RAM laden und dann diese booten.
Yes!
Danke nochmals für all Eure Hilfe! Hier geht es jetzt weiter, nachdem ich die Kernel Befehlszeile richtig gesetzt habe, mit Debian armhf auf diesem Tablet/Mainboard: viewtopic.php?f=15&t=173696
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Wenn der Kernel richtig gebaut ist brauchst du keine initrd.
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Ich habe die initrd aber lieber seperat. Ich muss diese auch andauernd modifizieren.
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Nochmal: Du benötigst GAR KEINE.
Keine initrd, keine modifikationen. Du arbeitest einfach auf deinem normalen Dateisystem und der Kernel kann das direkt lesen.
Oder warum glaubst du eine zu brauchen?
Keine initrd, keine modifikationen. Du arbeitest einfach auf deinem normalen Dateisystem und der Kernel kann das direkt lesen.
Oder warum glaubst du eine zu brauchen?
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Hallo king-crash und danke für Deine Hilfe,
ich glaube eine zu brauchen, weil ich vom Kernel aus die init vom USB-Stick aufrufen will.
Ich habe vor Debian armhf auf das Tablet/Mainboard zu installieren.
Soll ich das init Shell Skript von debootstrap auf dem USB-Stick ausführen? Oder soll ich diese in dem Kernel Image integrieren?
Dachte das Laden des init Shell Skriptes im RAM und dann lädt der Kernel es aus dem RAM, macht Sinn.
Also Du schlägst vor auf dem USB-Stick zu arbeiten? Dort ist Debian armhf von debootstrap drauf.
Wie kann ich jetzt weiter machen?
ich glaube eine zu brauchen, weil ich vom Kernel aus die init vom USB-Stick aufrufen will.
Ich habe vor Debian armhf auf das Tablet/Mainboard zu installieren.
Soll ich das init Shell Skript von debootstrap auf dem USB-Stick ausführen? Oder soll ich diese in dem Kernel Image integrieren?
Dachte das Laden des init Shell Skriptes im RAM und dann lädt der Kernel es aus dem RAM, macht Sinn.
Also Du schlägst vor auf dem USB-Stick zu arbeiten? Dort ist Debian armhf von debootstrap drauf.
Wie kann ich jetzt weiter machen?
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Nach meinen Erfahrungen erfordert das bei Debian (was anderes kenne ich nicht) erhebliche Klimmzüge und den Verzicht auf udev. Weglassen von Modulen genügt nicht. Aber man kann es hinkriegen - ohne Frage. Für udev kann man sich über equivs 'nen udev-dummy erzeugen. Hier laufen einige Maschinen mit Eigenbau-Kern ohne initrd und ohne udev.eggy hat geschrieben:Mal versuchen erstmal nen minimal Kernel ohne initrd zu bauen?
Grüße, Günther
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Hallo guennid,
ich hatte mein Kernel wahlweise so gebaut, dass CONFIG_INITRAMFS_SOURCE=../initramfs leer war und eben kein CPIO Archiv in das Kernel Image integriert wurde.
Also was ist nun Euer Vorschlag?
1. Kernel Image mit initramfs Archiv.
2. Kernel Image und das Laden von initrd über dem Bootloader.
3. Kernel Image mit ohne initramfs.
4. Eurer Vorschlag.
Danke für kommende Ideen.
ich hatte mein Kernel wahlweise so gebaut, dass CONFIG_INITRAMFS_SOURCE=../initramfs leer war und eben kein CPIO Archiv in das Kernel Image integriert wurde.
Also was ist nun Euer Vorschlag?
1. Kernel Image mit initramfs Archiv.
2. Kernel Image und das Laden von initrd über dem Bootloader.
3. Kernel Image mit ohne initramfs.
4. Eurer Vorschlag.
Danke für kommende Ideen.
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Also erstmal Schritt für Schritt.
Das Ziel soll sein, dass ein Debian von der SD Karte bootet, richtig?
Stand jetzt hast du eine SD Karte auf der eine FAT Partition mit UBOOT und kernel und eine Systempartition sind. Der kernel startet zwar, kann aber das Dateisystem, das sich auf der 2. Partition befindet nicht mounten.
Korrigier mich wenn ich falsch liege und schreibe bitte die .config deines Kernels nach nopaste, dass wir die einsehen können.
Das Ziel soll sein, dass ein Debian von der SD Karte bootet, richtig?
Stand jetzt hast du eine SD Karte auf der eine FAT Partition mit UBOOT und kernel und eine Systempartition sind. Der kernel startet zwar, kann aber das Dateisystem, das sich auf der 2. Partition befindet nicht mounten.
Korrigier mich wenn ich falsch liege und schreibe bitte die .config deines Kernels nach nopaste, dass wir die einsehen können.
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Genau Schritt für Schritt.
Also hier die Kernel Konfigurationsdatei: 40779
Das Ziel soll sein, dass ein Debian entweder von der SD Karte oder aber von dem USB-Stick bootet.
Einschränkung: Der Bootloader kann nur was mit der SD Karte anfangen nicht mit dem USB-Stick.
Das Dateisystem mit allen debootstrap Dateien ist hier /dev/sda1 ext2 und könnte auch hier sein /dev/cardblksd2, aber nicht cardblksd1 der µSDKarte, weil dort das FAT32 Dateisystem für den Bootloader mit Kernel Image ist. U-Boot ist natürlich vor der FAT32 Partition der µSDKarte.
Der Kernel kann das Dateisystem nicht mounten, was auf dem USB-Stick ist und das was auf der µSDKarte war (2. Partition der µSDKarte).
Ich habe also vor, dass der Kernel das Dateisystem vom USB-Stick einhängt. Der USB-Stick hat nur eine ext2 Partition. Welche ein gesamten Debian armhf Baum von debootstrap enthält.
Also hier die Kernel Konfigurationsdatei: 40779
Das Ziel soll sein, dass ein Debian entweder von der SD Karte oder aber von dem USB-Stick bootet.
Einschränkung: Der Bootloader kann nur was mit der SD Karte anfangen nicht mit dem USB-Stick.
Das Dateisystem mit allen debootstrap Dateien ist hier /dev/sda1 ext2 und könnte auch hier sein /dev/cardblksd2, aber nicht cardblksd1 der µSDKarte, weil dort das FAT32 Dateisystem für den Bootloader mit Kernel Image ist. U-Boot ist natürlich vor der FAT32 Partition der µSDKarte.
Der Kernel kann das Dateisystem nicht mounten, was auf dem USB-Stick ist und das was auf der µSDKarte war (2. Partition der µSDKarte).
Ich habe also vor, dass der Kernel das Dateisystem vom USB-Stick einhängt. Der USB-Stick hat nur eine ext2 Partition. Welche ein gesamten Debian armhf Baum von debootstrap enthält.
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Genauer: devtmpfs und devtmpfs-mount - Totgesagte leben länger!devfs - welches seit 2.6 deprecated ist.
Aber ich halte mich da lieber zurück - ich habe keine Ahnung von Tablets.
Grüße, Günther
Re: Ramdisk vom USB-Stick einhängen unmöglich!
@guennid: es ging noch nicht um den finalen Betrieb (und auch da kann es dann sehr gut sein, dass das kleine Gerätchen kein udev haben wird). Der Vorteil anfangs erstmal nen Minimalsystem ohne initrd/initramfs zu bauen, ist dass man nen Großteil der Fehler schonmal ausgeschlossen hat, sobald der Kernel sauber durchgebootet ist. Wenn klar ist, dass es nicht am Kernel selbst liegt, nicht daran, dass man eine wichtige Komponente vergessen hat (kommt häufiger vor als man denkt), dann macht es Sinn das ganze stückweise auszudehnen, in dem man entweder weitere Module einzeln fest hinzufügt oder in dem funktionierenden Zustand eine einzige Kernkomponente als Modul baut und diese auf die initrd auslagert. Nach meiner Erfahrung nen strukturierteres Fehlerausschlussverfahren als "ändern wir mal mehr oder weniger wahlos Adressen und hoffen, dass es klappt"
@Joe58: initramfs!=initrd ... ich hab das Gefühl, da gibts ein kleines Durcheinander was die Begrifflichkeiten angeht
@Joe58: initramfs!=initrd ... ich hab das Gefühl, da gibts ein kleines Durcheinander was die Begrifflichkeiten angeht
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Und genau das macht meines Wissens nach kein Debian-Kern ohne initrd und die macht's nicht ohne udev. Hab' ich schon vor Jahren drauf hingewiesen, dass Debian es geschafft hat, den Kernel von udev abhängig zu machen - aber ich lasse mich gerne eines Besseren belehren, ich bin nur der Laie.eggy hat geschrieben:sobald der Kernel sauber durchgebootet ist
Re: Ramdisk vom USB-Stick einhängen unmöglich!
@eggy Ja die Begrifflichkeiten sind mir heute erst geläufig geworden. initrd = initramdisk und initramfs = initramfilesystem. Letzteres nutzt das Gerätchen standardmäßig. Meine Idee war es auf initrd zu setzen. Dann sollten wir also lieber bei initramfs bleiben? So wie es eigentlich schon vorher war? Dachte, dass das CPIO Archiv im Kernel Image besser auf einer Partition, also vom Kernel Image getrennt, besser aufgehoben ist.
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Bitte teste doch das doch einfach bei dir selbst.guennid hat geschrieben:24.06.2019 18:48:47Und genau das macht meines Wissens nach kein Debian-Kern ohne initrd und die macht's nicht ohne udev. Hab' ich schon vor Jahren drauf hingewiesen, dass Debian es geschafft hat, den Kernel von udev abhängig zu machen - aber ich lasse mich gerne eines Besseren belehren, ich bin nur der Laie.eggy hat geschrieben:sobald der Kernel sauber durchgebootet ist
Ich habe das gerade getan:
- Kernel 5.1 von Kernel.org
- Meine config vom aktuellen kernel
- Alles raus: initrams support, loadable module support, ( netzwerk und andere treiber dass es schneller geht )
- Und er bootet doch.
Ich habe auch mehrere ARM Boards, die ich so betreibe...
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Das heißt dann für mich, dass ich mein Kernel ohne alles was initramfs betrifft kompilieren und dann bequem vom USB-Stick aus das init Skript ausführen lasse?
Welche Kernel Konfigurationsoptionen muss ich nun abschalten?
CONFIG_INITRAMFS_SOURCE is not Set auf jeden Fall?
Und welche noch?
Welche Kernel Konfigurationsoptionen muss ich nun abschalten?
CONFIG_INITRAMFS_SOURCE is not Set auf jeden Fall?
Und welche noch?
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Die ext Treiber scheinen drin zu sein. Probiere mal als bootoption "root=/dev/cardblksd2".
Edit: Du musst nichts zwingend ausschalten. Nur nicht mit einer fehlerhaften initramfs starten und die richtigen Bootparameter mitgeben.
Edit: Du musst nichts zwingend ausschalten. Nur nicht mit einer fehlerhaften initramfs starten und die richtigen Bootparameter mitgeben.
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Ich habe in der U-Boot Befehlszeile folgendes eingegeben:
Ergibt:
Und das Tablet bootet jetzt nicht mehr neu, sondern bleibt an und ich muss mir jetzt Erstmal einen kleinen Torxschraubenzieher holen, um den Reset Knopf zu drücken.
Code: Alles auswählen
fatload mmc 0 0x82000000 kernel.uImage
Code: Alles auswählen
setenv bootargs debug console=ttyS0,115200n8 root=/dev/cardblksd2
Code: Alles auswählen
bootm
Code: Alles auswählen
[ 6.613617@0] Warning: unable to open an initial console.
[ 6.620604@1] 328001 80018001 80018001 80030000
[ 6.625204@1] 01000000 00000000 00000000 00000000
[ 6.629978@1] 00000000 00000000 00000000 00000000
[ 6.634752@1] 00000000 00000000 00000000 00000000
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Mindestens soweit wie in deinem ersten Post sollte er schon kommen, sonst hat sich etwas anderes verändert.
Also bitte den Zustand wie im ersten Post herstellen, dann allerdings die Argumente wie folgt:
Also bitte den Zustand wie im ersten Post herstellen, dann allerdings die Argumente wie folgt:
Code: Alles auswählen
console=ttyS0,115200n8 hlt no_console_suspend vmalloc=256m mem=1024m logo=osd1,loaded,panel,debug hdmitx=vdacoff,powermode1,unplug_powerdown a9_clk_max=800000000 root=/dev/cardblksd2 rootwait rootdelay=5
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Kommt folgendes, mit der gesamten Befehlszeile:
Code: Alles auswählen
[ 6.394242@0] Warning: unable to open an initial console.
[ 6.399330@0] Waiting 5sec before mounting root device...
[ 6.405779@0] cardblksd: cardblksd1 cardblksd2 cardblksd3 cardblksd4
[ 6.412174@1] monitor : INSERT
[ 6.414066@1] [extern_wifi_set_enable] in
[ 6.418036@1] WIFI Enable!
[ 6.420880@1]
[ 6.420883@1] SD/MMC initialization started......
[ 6.862954@0] sd_mmc_info->card_type=0
[ 6.862984@0] begin SDIO check ......
[ 6.865590@0] Actual delay time in sdio_voltage_validation() = 10 ms
[ 6.923130@0] Got RCA = 1
[ 6.925095@0] #this sdio card could not support read after write
[ 6.926261@0] sd_mmc_init() is completed successfully!
[ 6.931308@0] This SDIO card is working in Wide Bus and at 25MHz High Speed mode!
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Habe den Zustand wieder hergestellt indem ich root=/dev/cardblksd1 eingegeben habe:
Code: Alles auswählen
[ 6.538992@0] Warning: unable to open an initial console.
[ 6.544292@0] Waiting 5sec before mounting root device...
[ 11.557918@0] VFS: Cannot open root device "cardblksd1" or unknown-block(253,1)
[ 11.559587@0] Please append a correct "root=" boot option; here are the available partitions:
[ 11.568137@0] fd00 15611904 cardblksd driver: cardblk
[ 11.573832@0] fd01 65536 cardblksd1 00000000-0000-0000-0000-000000000000cardblksd1
[ 11.582424@0] fd02 524288 cardblksd2 00000000-0000-0000-0000-000000000000cardblksd2
[ 11.591015@0] fd03 262144 cardblksd3 00000000-0000-0000-0000-000000000000cardblksd3
[ 11.599609@0] fd04 1048576 cardblksd4 00000000-0000-0000-0000-000000000000cardblksd4
[ 11.608198@0] ** enable watchdog
[ 11.611409@0] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,1)
[ 11.620062@0] [<c02db18c>] (unwind_backtrace+0x0/0xfc) from [<c08103f4>] (panic+0x68/0x18c)
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Hat die SD Karte 4 Partitionen?
Auf welcher Partition ist was?
Auf welcher Partition ist was?
Re: Ramdisk vom USB-Stick einhängen unmöglich!
Ja die SD Karte hat vier Partitionen.
Die Erste ist FAT32 dort ist das Kernel Image.
Die Zweite ist ext2 dort habe ich das Android System derzeit deponiert.
Die Dritte ist ext2 dort hat Android seine Cache Partition.
Die Vierte ist ext2 dort ist für Android die /data also userdata Partition.
Also das Android kann ich von SD Karte prima booten.
Das armhf Debian ist auf dem USB-Stick, hatte den gerade nicht eingesteckt, deswegen kein sda.
Die Erste ist FAT32 dort ist das Kernel Image.
Die Zweite ist ext2 dort habe ich das Android System derzeit deponiert.
Die Dritte ist ext2 dort hat Android seine Cache Partition.
Die Vierte ist ext2 dort ist für Android die /data also userdata Partition.
Also das Android kann ich von SD Karte prima booten.
Das armhf Debian ist auf dem USB-Stick, hatte den gerade nicht eingesteckt, deswegen kein sda.