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

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
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.

:)

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:53:16

Auf der ersten Partition sind dann Android und normaler Linux Kernel?

Joe58

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

Beitrag von Joe58 » 24.06.2019 19:58:16

Nee, dort ist nur der Linux Kernel (/dev/cardblksd1) 64 MB Größe die Partition.
Android, also das System auf /dev/cardblksd2 Größe 512 MB
Androids Cache /dev/block/cardblksd3 Größe 256 MB
Android Partition für die Apps /dev/block/cardblksd4 Größe 1 GB

Auf dem USB-Stick ist eine Partition mit Debian armhf System.

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 20:15:27

Was ist das eigentlich für ein seltsamer cardblk treiber. Ich kann den bei mir nirgendwo finden.

Ok root=/dev/cardblksd1 kann natürlich nicht funktionieren, da ist kein System drauf. Trotzdem sollte er es mounten können und dann melden dass keine init zu finden ist.

Joe58

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

Beitrag von Joe58 » 24.06.2019 20:23:41

Also soll ich jetzt das initrd.img.gz komplett entpackt bei INITRAMFS_SOURCE= packen und dann die root=/dev/sda1 angeben?

Habe dann custom Kernel mit initramfs armhf und root=/dev/sda1.

Der custom Kernel bootet garnicht erst durch, das initramfs ist zu groß?

Code: Alles auswählen

[    1.476900@1] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    1.482879@1] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    1.489623@1] NET: Registered protocol family 1
Anscheinend liegt es an das initramfs, sobald ich eins von Android entpackt in den Ordner des CONFIG_INITRAMFS_SOURCE= packe, zeigt das Tablet Fehler an, welche nach /system/bin etc. suchen. Also Android typische Fehler. :(

guennid

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

Beitrag von guennid » 24.06.2019 20:50:29

king-crash hat geschrieben:- Meine config vom aktuellen kernel
- Alles raus: initrams support, loadable module support
Wie eggy schon sagte: nicht die Begriffe durcheinanderbringen! Ich sprach von initrd (CONFIG_BLK_DEV_INITRD), nicht von initramfs.

Ein Kern ohne

Code: Alles auswählen

CONFIG_BLK_DEV_INITRD=yes
bootet nicht. bzw. es bedarf erheblicher Eingriffe und nicht nur des Weglassens einiger Module, wenn er's doch ohne tun soll. Und mit dieser Option benötigt der Kern udev.

Ich sage nicht, dass er auf eine initrd verzichten soll. Ich weise nur darauf hin, dass es alles andere als trivial ist, das so einrichten zu wollen.

Grüße, Günther

Antworten