Forum: PC Hard- und Software IPKG Linux Paketmanager -> Server?


von LinuxDAU (Gast)


Lesenswert?

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

von foo (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von user (Gast)


Lesenswert?

oder sowas wie µClinux

von LinuxDAU (Gast)


Lesenswert?

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.

von Simon S. (-schumi-)


Lesenswert?

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.

von Omega G. (omega) Benutzerseite


Lesenswert?

Also zumindest für Debian bekommst du auch für ARM9 fertige Binärpakete.

von LinuxDAU (Gast)


Lesenswert?

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?

von Omega G. (omega) Benutzerseite


Lesenswert?

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.

von LinuxDAU (Gast)


Lesenswert?

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

von Omega G. (omega) Benutzerseite


Lesenswert?

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.

von LinuxDAU (Gast)


Lesenswert?

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?

von Omega G. (omega) Benutzerseite


Lesenswert?

Den kannst du nehmen, wenn der auf deinem Board läuft. Erzähle doch mal 
bisschen was über dein Board.

von LinuxDAU (Gast)


Lesenswert?

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.

von Omega G. (omega) Benutzerseite


Lesenswert?

Du musst nicht mehrere Partitionen haben. Du kannst auch alles (außer 
swap) auf einer haben.

von LinuxDAU (Gast)


Lesenswert?

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?

von Omega G. (omega) Benutzerseite


Lesenswert?

Dann lass' sie mal weg. Ich kann dir nicht mehr genau sagen wofür ich 
die gebraucht habe.

von LinuxDAU (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von LinuxDAU (Gast)


Lesenswert?

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.

von LinuxDAU (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.