Hallo, auf meinem DE2-114 Board läuft uClinux für den Nios II. Ich kann eine SD-Karte mounten und Dateien lesen und schreiben. Nun möchte ich gerne, dass die SD-Karte als root-file-system fungiert. Dazu habe ich die Schritte aus dem Altera-Wiki befolgt (http://www.alterawiki.com/wiki/Root_Device). In Schritt 7 sthet nun: [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support <== unselect Wenn ich nun "make" mache, dann wird das "vmImage" erstellt aber kein "zImage". Fehlermeldung: "*** No rule to make target `image.zimage.all'" Wie bekomme ich nun den Kernel auf das Bord? Irgendwie muss die cpu ja den Kernel laden und die SD-Karte mounten. Ich bin ganz neu in dem Thema und weiß nicht wie ich nun weiter vorgehen soll. Ich hoffe Ihr könnt mir irgendwie weiter helfen. Mit freundlichem Gruß Jan
Eine RAM-Disk brauchst du dafür nicht zwangsläufig. Wichtig ist nur, dass die SD/MMC-Treiber fest in den Kernel mit einkompiliert sind. Sonst hast du das Henne-Ei-Problem. Also in der Kernel-Konfiguration gucken, dass ein Stern (*) vor den Treibern steht und kein "M". Gruß Marius
Danke schon mal für deine Antwort! :) Die treiber habe ich fest im Kernel: <*> SPI support -> <*> Altera SPI Controler -*- Utilities for Bitbanging SPI masters <*> MMC/SD/SDIO card support -> <*> MMC block device driver (8) Number of minors per block device [*] Use bounce buffer for simple hosts <*> MMC/SD/SDIO over SPI Die SD-Karte habe ich so formatiert: $ mke2fs /dev/sdb $ mount /dev/sdb /mnt $ cd /mnt $ zcat /path/to/initramfs_data.cpio | cpio -id $ cd / $ umount /mnt Muss ich in Qsys ein onchip-ram implementieren und ein .hex-file zuweisen, dass irgendwie den Kernel in das sdram kopiert? Ein "zImage" genneriert er mir ja nicht :/
:
Bearbeitet durch User
Du brauchst natürlich eine Art Bootloader, der den Kernel in den SDRAM kopiert. Gruß Marius
Ich kopiere das zImage momentan direkt in den sdram, also brauche ich im Moment keinen BootLoader. Das Problem ist, dass die Kernel Commands (bootargs = "debug console=ttyAL0,115200 rootfstype=ext3 root=/dev/mmcblk0p1 rootwait rw") nur ausgeführt werden wenn keine init-Datei im initramfs vorhanden ist. Wenn ich vor dem Build des Kernels den ordner "INI" in "INI_" umbennene, dann kann er diesen nicht mit kompilieren und die SD-Karte wird als rootfs eingebunden. Das kann ja aber nicht die "saubere" Lösung sein. Wie kann ich also das erzeugen der INI-Datei unterbinden? mfG Jan
Wofür brauchst du denn eigentlich eine initrd? Dass die Kernel-Commandline komplett ignoriert wird, ist mir eigentlich noch nicht untergekommen. Was passiert, wenn du dem Kernel per Commandline das "noinitrd" als Parameter übergibst? Gruß Marius
Moin, Das scheint mir irgendein alteraspezifisches Problem zu sein. Wenn man das nicht loesen will, dann wuerd' mir noch die Moeglichkeit einfallen, mittels "switch_root" (busybox oder auch util-linux) Kommando aus dem initramfs auf ein anderes rootfs "umzuschalten". Gruss WK
Er ignoriert die Kernel-Commandline nicht komplett, aber er guckt halt ob ein init-file vorhanden ist und nur wenn das nicht da ist verwendet er "root=/dev/mmcblk0p1". Das habe ich hier gelesen (http://famschmid.net/uclinuxtutorial_nios.html#initramfs) und das stimmt auch. Die frage ist nun, wie stelle ich ein, dass kein init-file erstellt wird? In der Kernel-Config gibt es unter "Core Applications" die Option "init", jedoch macht es keinen Unterschied ob ich diese aktiviere oder nicht.
Ich habe es jetzt hinbekommen :) ich musst zwischendurch mal "make clean" machen, da er sonst die einstellung "[ ] init" nicht beachtet hat. Der nächste Schritt ist nun einen Bootloader zu implementirern, welcher das "zImage" von der SD-Karte in den SDRAM schiebt und startet..
Nachtrag: Der schöne Weg ist: [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support <== unselect Wenn dann kein zImage erzeugt wird -> "LINUXTARGET=zImage make linux". Wichtig, bei mmc over spi "rootwait" in den Kernal Command String setzen, da die SD-Karte lange braucht um zu regieren.. Nur falls mal jemand das gleiche Problem haben sollte ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.