Hallo, ich habe hier einen SAM9G45 (ARM9) auf einer Testplatine. Hierfür habe ich mir ein Linux compiliert was soweit auch geklappt hat. Nun möchte ich das Linux etwas ausbaufähig haben, sodass ich über den Paketmanager "IPKG" (die datei selbst heißt ipkg-cl) parkete wie z.B. Apache nachinstallieren kann. IPKG muss dafür konfiguriert werden irgendwo seine pakete herzubekommen - und genau dafür fehlt mir das Wissen wo man die Links herbekommt. Ich finde Pakete für fertige hardware, (und damit verbundene fertiges Linux/ software, aber das bringt mir in meinem Spezialfall nichts. Ich benötige eigentlich einen Server der mir rein den quellcode zur Verfügungstellt. Kompilieren müsste der IPKG das von selbst mit dem GCC, den ich anbiete. Ein paketmanager ist bequem wegen der abhängigkeiten, dewegen vermute ich, dass sowas auch dazu genutzt wird, um nicht vorcompilierte Dateien Anwendungen zu installieren... bin ich damit auf dem Holzweg? Wenn nein, wo liegt die software im netz? ich freue mich auf wildeste konversationen! :-) lg
ipkg wird meines Wissens nach nicht mehr gewartet, als Nachfolger eignet sich opkg. Aber weder ipkg noch opkg compilieren dir irgendwas, sondern installieren Binärpakete.
LinuxDAU schrieb: > Ich benötige eigentlich einen Server der mir rein den quellcode zur > Verfügungstellt. dann solltest du eventuell überlege auf eine Quelltext Distri wie Gentoo zu gehen.
OK, also bin ich auf solch einem system darauf angewiesen die pakete selbst zu entpacken, zu ".configure"n und zu "make install"en. Hmmh. Hmmh. Hmmh. hmmh.
oder OpenWRT Die haben ein tolles Buldroot, das zumindest für bereits bekannt Geräte sehr einfach zu bedienen ist (habs für TL-WR841N und TL-MR3020 Wlan-Router benutzt). opkg ist das auch dabei.
Also zumindest für Debian bekommst du auch für ARM9 fertige Binärpakete.
Wo bekommt man denn z.B. ein Debian für ARM9 her? ich seh da leider überhaupt nicht durch :-( Kommt nach so einer Compilierung auch direkt ein Flash-Image raus mit root-fs und alles drum und dran?
Kompilieren musst du nur den Kernel. Das root fs kannst du z.B. mit debootstrap erstellen, der erste Schritt geht ganz einfach und schnell z.B. mit einem ganz normalen x86 Rechner. Den zweiten Schritt musst du dann auf dem ARM System ausführen. Einfach ein init=/bin/sh im bootloader anhängen und debootstrap --second-stage o.ä. ausführen. Der Aufruf für debootstrap auf dem Rechner kann dann z.B. so aussehen:
1 | debootstrap --no-check-gpg --arch=armel --verbose --variant=minbase --include=module-init-tools,udev,netbase,ifupdown,iproute,openssh-server,dhcpcd,iputils-ping,wget,net-tools,ntpdate,uboot-mkimage,uboot-envtools,vim,usbutils squeeze /mnt/ http://ftp.de.debian.org/debian |
Wobei das root fs in /mnt erstellt wird.
Hallo Omega, der Hinweis mit dem debootstrap-dingens klingt echt gut, aber ganz ehrlich: da ist man völlig verloren. Ich habs gegoogelt und bin relativ schnell auf http://packages.debian.org/search?keywords=debootstrap gestoßen. Schön - und nun?? Anhand deiner kommandozeile und der Zielarchitektur suche ich nach dem begriff "armel" und entscheide mich für etwas "stable"s. Z.B. Wheezy: http://packages.debian.org/wheezy/cdebootstrap Dort ist man das erste mal aufgeworfen und wird mit "armel" und "armhf" konfrontiert. Es verusrsacht unsicherheit. ich bleibe bei "armel". http://packages.debian.org/wheezy/armel/cdebootstrap/download Der Anweisung zu folge setzt ich mir den link per copy&pase selbst zusammen und lande auf einem FTP-Server: http://ftp2.de.debian.org/debian/pool/main/c/cdebootstrap/ Von der Auswahl überwältigt greife ich nach der neusten Version in der "armel" vorkommt: http://ftp2.de.debian.org/debian/pool/main/c/cdebootstrap/cdebootstrap_0.5.10_armel.deb ääähm und nun? jetzt habe ich in meinem Home-Verzeichnis eine cdebootstrap_0.5.10_armel.deb. Das hat nichts mehr mit dem Aufruf in deiner Kommandozeile zu tun. Tut mir leid, ich habe mich auf dem Weg zu dieser Datei geschätze 10k mal falsch entscheiden können. Meine Sicherheit konvergiert gegen null. Schneller als jede exponentialfunktion. Kann man diese datei jetzt überhaupt ausführen? was bedeutet die dateiendung .deb? Aaach herje :-(
Okay, zugegeben mit meinem Post vorher wird keiner ohne Erfahrung damit ein System aufsetzen können. Vielleicht sollte ich mal eine Schritt für Schritt Anleitung schreiben und auf meine Webseite stellen. 1. Grundlagen: Du benötigst ein Linux auf deinem Rechner. Ich verwende da Debian. debootstrap wird da einfach mit "sudo apt-get install debootstrap" installiert. 2. Massenspeicher vorbereiten: Vermutlich willst du ein Linux auf SD Karte installieren. Du partitionierst dir die SD Karte wie du es brauchst. Ich habe es meistens so aufgeteilt, dass die erste Partition das root fs wird und entsprechend die größte ist. Die nächste ist vorgesehen für den Kernel (oder manchmal auch mehrere Kernel), die letzte ist dann swap. Bei mir ergibt sich auf einer 4 GB Karte folgende Aufteilung:
1 | /dev/mmcblk0p1 1 447 3590496 83 Linux |
2 | /dev/mmcblk0p2 448 452 40162+ 83 Linux |
3 | /dev/mmcblk0p3 453 474 176715 82 Linux swap / Solaris |
Partitionieren kannst du z.B. mit fdisk oder cfdisk. Anschließend müssen die Partitionen formatiert werden. Wie ist dir überlassen. 3. Debootstrap anwenden: Als erstes mountest du dein zukünftiges root fs, z.B. auf /mnt. Jetzt kannst den den Befehl von vorher einfach ausführen, ohne zu verstehen was der bewirkt. arch gibt die Zielarchitektur an. ARM9 fällt unter "armel". Hättest du einen ARM mit FPU, wie zum Beispiel den Tegra2, der einen Cortex A9 Kern enthält, würde "armel" zwar funktionieren, aber "armhf" nutzt diese FPU. Was in den meisten fällen schneller sein sollte. variant legt die Debianvariante fest. Minbase, beinhaltet nur das Minmalsystem und sonst nichts. Ergibt etwa 200MByte. include damit kannst du manuell extra Pakete hinzufügen. Am besten du fügst noch ein --foreign ein. Das gibt an, dass die Zielarchitektur anders ist, als die die du momentan verwendest. Ansonsten gibt es am Ende einen Fehler. squeeze ist die Debianversion. Du könntest auch lenny oder wheezy installieren. squeeze läuft bei mir problemloser auf ARM als wheezy. mnt ist der Zielpfad des root fs Abschließend wird der Quellserver angegeben. Jetzt lädt debootstrap alle Pakete runter, und entpackt diese. Das einrichten muss auf deinem Zielsystem passieren. 4. System einrichten: Du umountest deine Speicherkarte und steckst sie an dein ARM System. Dort hast du vermutlich uBoot als bootloader. Da musst du den Parameter bootargs anpassen. Meistens steht da sowas
1 | console=ttyS1,921600n8 noinitrd rw root=/dev/mmcblk0p1 rootwait |
Mach daraus ein
1 | console=ttyS1,921600n8 noinitrd rw root=/dev/mmcblk0p1 rootwait init=/bin/sh |
Mit "printenv" bekommst du die aktuellen Werte angezeigt.
1 | setenv bootargs console=ttyS1,921600n8 noinitrd rw root=/dev/mmcblk0p1 rootwait init=/bin/sh |
setzt dir den Parameter neu. Mit "boot" lässt du das System booten. Wenn alles gut geht wirst du mit "ls" ein Verzeichnis debootstrap finden. Da kannst du reinwechseln und "./debootstrap --second-stage" ausführen. Das installiert dir das System fertig. 5. Abschließendes: Bevor du das System neu startest solltest du mit "passwd" ein root Passwort setzen. Sonst kommst du nicht mehr rein. Ansonsten einrichten was du sonst noch brauchst: Netzwerk, fstab, initab etc. Jetzt neu starten und es sollte in ein Debian booten. Die .deb Pakete kannst du mit dpkg -i datei.deb installieren. Oder einfach apt-get nutzen.
ok, von der ausführlichkeit her ist das jetzt seeehr nett :-) Viiiielen dank!! Ich kann dir erst in ein paar stunden sagen ob das so funktioniert. Ich werde allerdings ein paar andere umwege gehen, da ich in einer VM arbeite und auf die SD-Karte keinen USB2.0-Zugriff habe :-( Mir stellt sich noch die frage nach dem Kernel. Welchen nehmen und woher? Zur Zeit habe ich ein Linux 2.6.33 Kernel compiliert und sozusagen fertig als "uImage" vorliegen. Kann ich das einfach weiter nehmen, oder brauch ich etwas aktuelleres?
Den kannst du nehmen, wenn der auf deinem Board läuft. Erzähle doch mal bisschen was über dein Board.
Es ist ein http://shop.in-circuit.de/products/Home/ICnova-CPU-Module/6/ICnova-SAM9G45-OEM Die mitgelieferte Software ist leider sehr unzureichend für meinen Zweck. Da drauf läuft erstmal so gut wie nix :-( Sagmal.. deine SD-Kartenaufteilung? MUSS die so sein, oder reicht eine einzelne root-Partition. Ohne SD-Karten zugriff wirds nämlich leicht unangenehm :-( hab gerade ein ext2 fs als Datei gemounted. aber wie man die Datei jetzt weiter partitionieren kann... keine ahnung :-( Das ist ja nur die partition ansich. Das Image brenn ich dann immer direkt auf die Partition der SD-Karte (unter Windows) - was bisher super funktioniert hat.
Du musst nicht mehrere Partitionen haben. Du kannst auch alles (außer swap) auf einer haben.
Deine Kommandozeile meckert: debootstrap --no-check-gpg ..... Er kennt das "--no-check-gpg" Laut google soll man einfach das neuste debootstrap installieren. das habe ich getan, denn vorher wars ja nicht aufm system -.- zusätzlich habe ich "apt-get upgrade debootstrap" aufgerufen, und da hats mir minutenlang u.a. irgendwelche OpenOffice-Pakete runtergeladen, geholfen hats nix. kann man die option weglassen?
Dann lass' sie mal weg. Ich kann dir nicht mehr genau sagen wofür ich die gebraucht habe.
Aaaalso... hab jetzt ein 1GB ext2 system auf der karte das von debootstrap erstellt wurde. das "uImage" habe ich händisch reinkopiert. Mein uBoot aufruf ist stark verschieden von dem, was du angegeben hast, deswegen finde ich es erwähnenswert: Mein uBoot ist bereits auf das booten von SD-Karte konfiguriert und "bootcmd" ist auf "mmc rescan 0; ext2load mmc 0:1 0x70400000 /boot/uImage; setenv bootargs rootfstype=ext2 root=/dev/mmcblk0p1 rootwait ro; bootm" gesetzt. Das initialisiert die SD-Karte, lädt das Kernelimage, sagt bescheid, dass ext2 zu erwarten ist und da SD-Karte geht das ganze anfangs nur readonly. (keine ahnung warum... sonst gibts kernel panic..) So wie ich das verstehe muss ich das commando so umändern "mmc rescan 0; ext2load mmc 0:1 0x70400000 /boot/uImage; setenv bootargs noinitrd ro rootfstype=ext2 root=/dev/mmcblk0p1 rootwait init=/bin/sh; bootm" bzw zum händisch booten die einzelnen stufen manuell ausführen. Nunja: er kommt soweit, dass er das rootfs mounted (ro) und dann hat der Kernel panik, nachdem er 148K Speicher freigegeben hat -.- mein Kernel ist mit der OABI kompiliert... ist das evtl ein problem? so wie ich das sehe startest du mit dem init=/bin/sh sofort die shell. Wen die für EABI ist.... öööhm. Kernel umkompilieren? wie findet man raus welche ABI ein system bzw eine exe nutzt?
Soweit ich weiß, muß entweder ALLES mit OABI bzw. EABI compiliert sein, sonst funktioniert nix. Also Kernel, Executables und Bibliotheken. Wenn Du nur einen Kernel mit OABI hast bzw. finden kannst, muß auch alles andere OABI compiliert sein. Wie man in einer fertigen Bibliothek oder einem Programm das application binary interface herausfindet, kann ich leider auch nicht aus dem Stegreif beantworten. Für die alten iPAQs gab es zum Beispiel Familiar Linux, dort ist alles OABI und auch neue Programme muss man dem entsprechenden Compiler übersetzen. Bei Familiar war auch IPKG als Standard-Packagemanager dabei, für vorgefertigte Pakete habe ich es auch benutzt. Eigene Programme habe ich auf dem Rechner Cross-compiliert, mich auf dem Board via SSH eingeloggt und dann mittels wget vom Rechner-Webserver übertragen. Den Umweg über IPKG würde ich dafür auch als zu umständlich halten. Jörg
Hallo, ich habe ENDLICH meinen kernel für EABI zum kompilieren bekommen :-) Jetzt sieht soweit erstmal alles toll aus. Denn es gibt kein Kernel-Panic mehr. jedoch muss ich, wie oben erwähnt, um von der SD-Karte booten zu können, das ganze als "ro" starten, anstatt als "rw". ohne "ro" gibts KernelPanic^3. Das jetzige Problem ist die Debian Grundinstallation: es fehlt ein funktionstüctiges "mount" für ein anständiges "mount -o remount,rw /". warning: can't open /etc/mtab: No such file or directory mount: can't find / in /etc/fstab or /etc/mtab ./debootstrap --second-stage murkst natürlich rum, da es nicht auf einen ReadOnly-Dateisystem agieren möchte. kann mir jemand helfen, das root-verzeichnis als rw zu remounten? es existiert die datei "etc/fstab" Ich vermute die muss mit entsprechendem Inhalt gefüllt werden. Zur Zeit ist die SD karte nicht weiter partitioniert.
Oh man... habe gerade in /etc/fstab eine magische zeile geschrieben: "/dev/mmcblk0p1 / ext2 defaults 1 1" Was auch immer das tut, es tut. sd-karte ist als rw geremounted und die installation rudert grade heftigst auf der sd-karte rum :-O meine güte. welch teufelszeug^^
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.