Hallo liebe Liebenden ) ,
Ich habe heute (erst) gelesen, daß Debian ein neues Portierungs-Projekt für die Opteron(AMD) Architektur eröffnet hat. Außerdem hat Debian ja so einige Portierungen am laufen.
Ich würde jetzt gerne wissen, wie eine Portierung bei Debian so "funktioniert"?
Ich denke mal, daß sie die Sourcen vom Kernel und dann von den anderen Tools nehmen und kompilieren und fixen und kompilieren und fixen ...!?
Ich stelle mir das ungefähr so vor:
a) Man nehme eine Maschine dieser Architektur (z.B. einen PC mit einem Opteron),
b) Man packe Linux + Entwicklungs-Tools drauf,
c) Man übersetze die Debian Pakete nach und nach für diese Architektur,
d) Man teste die Pakete
e) Man gehe zurück zu c)
Doch irgendwie scheint da noch etwas zu fehlen (in meinem Gedankengang)!?
Denn irgendwo muß das mit irgendwas anfangen. Was braucht man zuerst: den Compiler für die Architektur oder den Kernel? Oder muß man zuerst irgendwelche Bibliotheken haben(nur dann welche)?
Kann man auf einer Pentium-Maschine für einen Opteron Sourcen übersetzen?
Wenn irgendjemand mir hier weiterhelfen könnte, wär ich sehr froh, denn ich habe mal die Linux-Doku Seiten durchforstet und nix dafür gefunden.
Meine Motivation hinter den Fragen ist: Ich stelle mir so ein Portierungs-Projekt sehr spannend vor und würde sehr gerne bei Debian aushelfen. Doch dafür muß ich wissen, wie ich das mache und wo ich ansetzen muß.
Bin wirklich gespannt auf eure Antworten
euer debian_noob
Portierung, wie macht man das?
-
- Beiträge: 89
- Registriert: 09.09.2003 14:10:20
- Wohnort: D'dorf
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Das ganze nennt man "Bootstrapping". Man braucht immer zuerst den Compiler, und zwar als sog. CrossCompiler. Also ein Compiler, der auf der einen Plattform, Code fur eine andere erzeugt. Damit compiliert man dann z.B. auf einem AMD Athlon einen Kernel für AMD64. Das gleiche macht man mit den minimalen Userland, und dann kann man den anderen Rechner normalerweise schon damit booten. Man muss natürlich evtl. Bugs in den Programmen beheben...
Dann erzeugt man mit dem CrossCompiler einen nativen Compiler für AMD64, und dann erzeugt man aus dem crosscompilierten nativen Compiler einen vollständig nativen Compiler, indem man ihn auf der AMD64 Maschine einfach mit sich selbst compiliert. An dieser Stelle ist der sog. Break-Even-Point erreicht: Man kann auf der neuen Plattform alles selber compilieren...
Alles weitere ist dann einfach....
Patrick
Dann erzeugt man mit dem CrossCompiler einen nativen Compiler für AMD64, und dann erzeugt man aus dem crosscompilierten nativen Compiler einen vollständig nativen Compiler, indem man ihn auf der AMD64 Maschine einfach mit sich selbst compiliert. An dieser Stelle ist der sog. Break-Even-Point erreicht: Man kann auf der neuen Plattform alles selber compilieren...
Alles weitere ist dann einfach....
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
-
- Beiträge: 89
- Registriert: 09.09.2003 14:10:20
- Wohnort: D'dorf
Bootstrapping?
Hallo,
pdreker: Danke für deine Antwort, es hat schon mal den Weg aufgezeigt!
Ich habe mal nach Bootstrapping gegoogelt und habe nur Dokus über die Startup-Sequenz von Linux/BSD gefunden, wie z.B. hier:
http://www.nondot.org/sabre/os/files/Bo ... pping.html
Gibt es irgendwo eine Doku über das Bootstrapping (die Portierung) von dem du sprachst? Irgendeine HOWTO?
Bei den ganzen Portierungen rund um Linux/BSD muß das "Port-Geschäft" ja mal "aufgezeichnet", dokumentiert worden sein?
Danke für eure Antworten
debian_noob
*dersichjetztdransetztundgccfuercrosscompilinguebersetzt*
pdreker: Danke für deine Antwort, es hat schon mal den Weg aufgezeigt!
Ich habe mal nach Bootstrapping gegoogelt und habe nur Dokus über die Startup-Sequenz von Linux/BSD gefunden, wie z.B. hier:
http://www.nondot.org/sabre/os/files/Bo ... pping.html
Gibt es irgendwo eine Doku über das Bootstrapping (die Portierung) von dem du sprachst? Irgendeine HOWTO?
Bei den ganzen Portierungen rund um Linux/BSD muß das "Port-Geschäft" ja mal "aufgezeichnet", dokumentiert worden sein?
Danke für eure Antworten
debian_noob
*dersichjetztdransetztundgccfuercrosscompilinguebersetzt*
-
- Beiträge: 89
- Registriert: 09.09.2003 14:10:20
- Wohnort: D'dorf
Etwas falsch gemacht?
Schönen guten Tag,
Gibt es nun eine Doku über das Portieren oder nicht?
Oder antwortet mir hier keiner, weil ich irgendwas irgendwie falsch gemacht habe(in der Fragestellung)?
Ist sowieso eigenartig: Ich habe die obigen Fragen in einer ML gestellt und auch dort hat mir nur einer geantwortet. Wieso? Kennt sich kaum einer aus mit diesen Sachen? Wie kann es dann bitte sein, dass Linux/BSD usw auf mehr als 60(!!) Plattformen laufen?
Schönen Tag noch
debian_noob
Gibt es nun eine Doku über das Portieren oder nicht?
Oder antwortet mir hier keiner, weil ich irgendwas irgendwie falsch gemacht habe(in der Fragestellung)?
Ist sowieso eigenartig: Ich habe die obigen Fragen in einer ML gestellt und auch dort hat mir nur einer geantwortet. Wieso? Kennt sich kaum einer aus mit diesen Sachen? Wie kann es dann bitte sein, dass Linux/BSD usw auf mehr als 60(!!) Plattformen laufen?
Schönen Tag noch
debian_noob
-
- Beiträge: 89
- Registriert: 09.09.2003 14:10:20
- Wohnort: D'dorf
Offene Fragen
Hallo Dookie, hallo Forumsteilnehmer,
Ich habe zuerst einmal Schwierigkeiten mit dem Begriff "Bootstrapping". Suche ich danach bei Google, finde ich nur Dokus und Berichte über
a) den Bootvorgang von Linux(oder *BSD)
b) das Aufsetzen von einer Installation auf einem reinen System (z.B. das Linux from Scratch auf einer "sauberen", formatierten Festplatte)
http://www.nondot.org/sabre/os/files/Bo ... pping.html
c) das Aufsetzen eines Netzwerks
http://www.infrastructures.org/papers/ bootstrap/bootstrap.html
usw usf
aber nichts, was auf den Prozeß, das pdreker beschrieb, hindeutet.
Irgendetwas scheint da nicht zu stimmen, oder ich habe etwas falsch verstanden!?!
Eine weitere Frage ist: pdreker beschrieb den Prozeß so, daß man dann auf der Maschine arbeitet, für die man portiert. Gibt es die Möglichkeit, das man zuerst nur mit dem CrossCompiler arbeitet? Also z.B. auf ner Intel Maschine für Sparcs übersetzt, aber schon Ergebnisse(ablaufbare Programme) erzeugt, die verwertbar sind, womit schon gearbeitet werden kann?
Eine weitere Frage ist: Kann man eigentlich jedes GNU-Tool Cross-kompilieren? Oder wie findet man heraus, für welche Architektur dieses Tool übersetzbar ist(makefiles usw)? Muß man sich darauf vorbereiten sehr viel mit den Makefiles zu hacken, oder ist die "Fähigkeit" der Übersetzbarkeit für eine andere Architektur schon "standardmäßig" gegeben?
(Ach, gäbe es doch nur eine Art Handbuch dafür, dann könnte ich RTFM machen, und nicht hier die Leute "aufhalten")
Ich habe zuerst einmal Schwierigkeiten mit dem Begriff "Bootstrapping". Suche ich danach bei Google, finde ich nur Dokus und Berichte über
a) den Bootvorgang von Linux(oder *BSD)
b) das Aufsetzen von einer Installation auf einem reinen System (z.B. das Linux from Scratch auf einer "sauberen", formatierten Festplatte)
http://www.nondot.org/sabre/os/files/Bo ... pping.html
c) das Aufsetzen eines Netzwerks
http://www.infrastructures.org/papers/ bootstrap/bootstrap.html
usw usf
aber nichts, was auf den Prozeß, das pdreker beschrieb, hindeutet.
Irgendetwas scheint da nicht zu stimmen, oder ich habe etwas falsch verstanden!?!
Eine weitere Frage ist: pdreker beschrieb den Prozeß so, daß man dann auf der Maschine arbeitet, für die man portiert. Gibt es die Möglichkeit, das man zuerst nur mit dem CrossCompiler arbeitet? Also z.B. auf ner Intel Maschine für Sparcs übersetzt, aber schon Ergebnisse(ablaufbare Programme) erzeugt, die verwertbar sind, womit schon gearbeitet werden kann?
Eine weitere Frage ist: Kann man eigentlich jedes GNU-Tool Cross-kompilieren? Oder wie findet man heraus, für welche Architektur dieses Tool übersetzbar ist(makefiles usw)? Muß man sich darauf vorbereiten sehr viel mit den Makefiles zu hacken, oder ist die "Fähigkeit" der Übersetzbarkeit für eine andere Architektur schon "standardmäßig" gegeben?
(Ach, gäbe es doch nur eine Art Handbuch dafür, dann könnte ich RTFM machen, und nicht hier die Leute "aufhalten")
Hi nochmal,
pdreker hat den Begriff wohl irgendwo aufgeschnappt, bzw hier etwas unglücklich gewählt. Also nicht in dem Begriff verbeissen.
Natürlich kannst Du mit einem Crosscompiler ausführbaren Code erzeugen, der ist eben nur auf der Maschine ausführbar für die er compiliert wurde, ausser du arbeitest mit einem Emulator, dann kannst Du den Code auch mit dem Emulator testen. Dies wird oft bei Programmen für EPCs gemacht.
Um vor Überaschungen sicher zu sein, kommt man aber früher oder später nicht darum herum den Code auf einer reelen Mashiene zu testen.
Jedes GNU-Tool kann man sicher Cross-kompilieren. Das hat aber nix mit GNU zu tun. Du kannst jedes Programm, das keine Assemblerroutinen für einen bestimmten Prozessor enthält Crosscompilieren. Sofern es für das selbe OS nur auf einer anderen Rechnerarchitektur bestimmt ist und keine platformspezifischen Besonderheiten voraussetzt muss es dann auch laufen.
Gruß
Dookie
pdreker hat den Begriff wohl irgendwo aufgeschnappt, bzw hier etwas unglücklich gewählt. Also nicht in dem Begriff verbeissen.
Natürlich kannst Du mit einem Crosscompiler ausführbaren Code erzeugen, der ist eben nur auf der Maschine ausführbar für die er compiliert wurde, ausser du arbeitest mit einem Emulator, dann kannst Du den Code auch mit dem Emulator testen. Dies wird oft bei Programmen für EPCs gemacht.
Um vor Überaschungen sicher zu sein, kommt man aber früher oder später nicht darum herum den Code auf einer reelen Mashiene zu testen.
Jedes GNU-Tool kann man sicher Cross-kompilieren. Das hat aber nix mit GNU zu tun. Du kannst jedes Programm, das keine Assemblerroutinen für einen bestimmten Prozessor enthält Crosscompilieren. Sofern es für das selbe OS nur auf einer anderen Rechnerarchitektur bestimmt ist und keine platformspezifischen Besonderheiten voraussetzt muss es dann auch laufen.
Gruß
Dookie