Ramdisk vom USB-Stick einhängen unmöglich!

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von eggy » 24.06.2019 15:17:55

Mal versuchen erstmal nen minimal Kernel ohne initrd zu bauen? Also alles was nicht unbedingt gebraucht wird abschalten, alles andere fest einkompilieren lassen.

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 15:26:50

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:

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$ 
Diesmal am PC mit dem mkimage Programm, welches dem Kernel Archiv beiliegt. Funktioniert wieder nicht. :(

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#
Der Bootloader lädt das Image im RAM, aber will es nicht booten. :P

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 15:29:06

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

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von JTH » 24.06.2019 15:38:06

Joe58 hat geschrieben: ↑ zum Beitrag ↑
24.06.2019 15:29:06
WOW es hat gefunzt!!
Top :THX:
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
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!

Beitrag von king-crash » 24.06.2019 16:33:12

Wenn der Kernel richtig gebaut ist brauchst du keine initrd.

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 16:47:43

Ich habe die initrd aber lieber seperat. Ich muss diese auch andauernd modifizieren.

Benutzeravatar
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!

Beitrag von king-crash » 24.06.2019 17:21:53

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?

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 17:46:07

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?

guennid

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von guennid » 24.06.2019 17:57:21

eggy hat geschrieben:Mal versuchen erstmal nen minimal Kernel ohne initrd zu bauen?
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 Debianequivs 'nen udev-dummy erzeugen. Hier laufen einige Maschinen mit Eigenbau-Kern ohne initrd und ohne udev.

Grüße, Günther

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 18:11:04

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. ;)

Benutzeravatar
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!

Beitrag von king-crash » 24.06.2019 18:17:34

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.

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 18:26:37

Genau Schritt für Schritt. :)

Also hier die Kernel Konfigurationsdatei: NoPaste-Eintrag40779

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.

guennid

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von guennid » 24.06.2019 18:37:04

devfs - welches seit 2.6 deprecated ist.
Genauer: devtmpfs und devtmpfs-mount - Totgesagte leben länger! :wink:

Aber ich halte mich da lieber zurück - ich habe keine Ahnung von Tablets. :wink:

Grüße, Günther

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von eggy » 24.06.2019 18:41:05

@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

guennid

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von guennid » 24.06.2019 18:48:47

eggy hat geschrieben:sobald der Kernel sauber durchgebootet ist
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.

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 18:50:14

@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.

Benutzeravatar
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!

Beitrag von king-crash » 24.06.2019 19:01:12

guennid hat geschrieben: ↑ zum Beitrag ↑
24.06.2019 18:48:47
eggy hat geschrieben:sobald der Kernel sauber durchgebootet ist
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.
Bitte teste doch das doch einfach bei dir selbst.
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...

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 19:11:09

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?

Benutzeravatar
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!

Beitrag von king-crash » 24.06.2019 19:16:29

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.

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 19:25:20

Ich habe in der U-Boot Befehlszeile folgendes eingegeben:

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
Ergibt:

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 
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. :)

Benutzeravatar
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!

Beitrag von king-crash » 24.06.2019 19:29:38

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:

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

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 19:36:15

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!

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 19:45:22

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)

Benutzeravatar
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!

Beitrag von king-crash » 24.06.2019 19:47:01

Hat die SD Karte 4 Partitionen?
Auf welcher Partition ist was?

Joe58

Re: Ramdisk vom USB-Stick einhängen unmöglich!

Beitrag von Joe58 » 24.06.2019 19:50:42

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.

:)

Antworten