Wie kommt das , das Linux auf total dubioser verschiedner Hardware läuft?
-
die grundvoraussetzung ist in der tat ein c compiler, der code für die ziel-cpu erzeugen kann.
-
BegeisterJunge schrieb:
Ja aber muss nich eine Mindestsystemanforderung vorhanden sein? Ein gewöhnlicher Toaster wird keine CPU haben? Und es gibt sicher CPUs auf denen eine Linux Kernel geschweigeden OS portierbar ist, und wenn dann vll. schleppend langsam oder?
Was muss den vorhanden sein? Ein C-Compileer für die CPU? Genügen Arbeitsspeicher, genügend ROM bzw. HD Platz?
Ja, eine CPU waere praktisch, da Toast leider noch keinen binaercode ausfuehren kann - wohl erst in Variante 2.0 dann. Aber daran wird noch gearbeitet.
Ne, mal im ernst:
Wie stellst du dir Software vor? Ein Betriebssystem ist nur ein einfaches Programm dass auf einer CPU ausgefuehrt wird. Da ist keine Magie dabei. Wenn der Toaster keine CPU hat, tja, was soll dann den Code ausfuehren?Und wenn er eine CPU hat, dann muss man natuerlich Maschinencode dafuer generieren koennen. Dazu braucht man natuerlich wiederum einen Compiler.
Dann muss man die Hardware ansprechen koennen - dafuer gibt es Hardware Interfaces die man dann in der Software ansprechen muss. Das bedeutet man braucht Treiber fuer die Hardware.
Aber ob wir jetzt von einem Toaster, einem Handy oder einem High-End PC reden - das Prinzip ist exakt gleich.
-
Naja ne HD braucht es nicht mal, das System kann auch auf einen ROM sein.
Oder auch komplett im RAM. Die ist bei den Rechnern des Echelon der Fall. Eine Einheit hat rund 64GB Ram und keine HD. Das OS liegt im RAM und die zu verarbeitenden Daten auch. Das macht extrem schnelle Rechenoperationen moeglich.Also man kann alles moegliche portieren, wenn es sich lohnt. Wenn ein Lichschalter RAM haette und Du schnell schaltest, kann darauf auch Linux laufen
Ivo
-
Trodzem muss dann für jede CPU bzw. Hardware ein extra Code geschrieben werden.. Linux als Paket anzubieten welche auf jede CPU läuft ist nich möglich denk ich oder..
-
Wenn die CPU abwaertskompatibel ist und fuer die Vorgaengerversion ein Linuxkernel vorhanden war, sollte es gehen.
Am Beispiel der i386 Reihe, Du kannst ja auch den Kernel auf einen i586 installieren.
Ivo
-
Die Architektur ist halt halbwegs sauber. Architekturabhängiger Code befindet sich nur unter arch/ und include/asm/. Entsprechend musst du die Teile portieren für eine neue Architektur (und vermutliche eigene Treiber schreiben und einen Bootloader).
-
Eben das mein ich... Hardware architekturen können sich ja drastisch von einandern unterscheiden, deswegen müssen man Linux in der Basis auch arg modifizieren, und für jede Hardware architektur einen art Kernel Wrapper schreiben!?
-
BegeisterJunge schrieb:
Wäre das theoretisch möglich das Windows das auch könnte?
kann es. windoofs ist auch modular aufgebaut und hat z.b. einen hardware abstraction layer. noch bevor linux den hobbykellern entschlüpfte, gab es schon win-nt versionen für mips, power-pc, dec-alpha usw. die werden aber nicht mehr weiter gepflegt, weil mickrosoft damit zu wenig geld gemacht hat.
Ivo schrieb:
Ich stelle mir gerade mal Windows ME auf einen NSA Satelliten vor...
wie stellt man sich sowas vor?
-
naja, eigentlich kann man jede software auf jedem system zum laufen bekommen solange es genug speicher gibt. alle funktionalitaet kann emuliert werden. linux macht das nicht anders.
http://www.youtube.com/watch?v=Vz9UtiTqaoI
ich weiss dass jetzt manche sagen dass das nicht das gleiche ist wie portieren, wuerde aber MS als basis linux nehmen (ohne dass es jemand sieht) und darauf mit nem emu xp laufen lassen, wuerde es niemand wirklich stoeren, genau so wie beim MacOSX ein *nix/BSD system drunter haengt.
-
rapso schrieb:
naja, eigentlich kann man jede software auf jedem system zum laufen bekommen solange es genug speicher gibt. alle funktionalitaet kann emuliert werden.
wenn es das nicht schon geben würde, dann hättest du soeben Java erfunden.
-
Der erste NT-Kernel, wurde sogar auf Nicht-x86-CPUs entwickelt. Wurde ja dann eher auf x86 nachträglich portiert, als man merkte, das x86 doch den Markt dominieren wird. Denn ursprünglich wurde der NT-Kernel auf Intels damaligen RISC-CPUs entwickelt (weiß die CPU-Bezeichnung nicht mehr).
Der NT-Kernel ist schon sehr gut. Er wird leider immer durch die negativen Meldungen von Sicherheitslöchern im IE und ActiveX überschattet. Dabei haben diese doch nichts mit dem Kernel zu tun.
Aber auch WinCE ist ja hoch portabel. Z.B. gibt es ja auch für SEGAs Dreamcast (SuperHitachi-CPU) das WinCE mit DirectX 6. Zwar ist WinCE nicht das Basis-System der Dreamcast, aber ist optional und wird von der jeweiligen Spiele-GD-ROM gebootet.
Linux ist also hier keine Ausnahme.
-
-fricky- schrieb:
rapso schrieb:
naja, eigentlich kann man jede software auf jedem system zum laufen bekommen solange es genug speicher gibt. alle funktionalitaet kann emuliert werden.
wenn es das nicht schon geben würde, dann hättest du soeben Java erfunden.
naja, java ist eine programmiersprache. aus der sicht hast du das selbe mit basic usw. auch schon gehabt.
-
Bulli schrieb:
Der erste NT-Kernel, wurde sogar auf Nicht-x86-CPUs entwickelt. Wurde ja dann eher auf x86 nachträglich portiert, als man merkte, das x86 doch den Markt dominieren wird. Denn ursprünglich wurde der NT-Kernel auf Intels damaligen RISC-CPUs entwickelt (weiß die CPU-Bezeichnung nicht mehr).
Ich glaube der war fuer ALPHA cpus gemacht, nicht von intel.
Der NT-Kernel ist schon sehr gut. Er wird leider immer durch die negativen Meldungen von Sicherheitslöchern im IE und ActiveX überschattet. Dabei haben diese doch nichts mit dem Kernel zu tun.
Aber auch WinCE ist ja hoch portabel. Z.B. gibt es ja auch für SEGAs Dreamcast (SuperHitachi-CPU) das WinCE mit DirectX 6.
NT is basis fuer alle aktuellen MS kernel, somit laeuft das ding auch auf der xbox *Hehe*
-
rapso schrieb:
naja, java ist eine programmiersprache.
nicht nur, sondern auch eine software-cpu, speichermanagement und das ganze drumherum. ähnlich wie ein emulater z.b, nur dass nichts bestehendes nachgebildet, sondern ein eigenes system geschaffen wurde.
-
-fricky- schrieb:
rapso schrieb:
naja, java ist eine programmiersprache.
nicht nur, sondern auch eine software-cpu, speichermanagement und das ganze drumherum. ähnlich wie ein emulater z.b, nur dass nichts bestehendes nachgebildet, sondern ein eigenes system geschaffen wurde.
du sprichst wohl von der virtual machine fuer java(Bytecode). ja, die kann man genau wie jedes andere OS auf alle systeme portieren sofern genug speicher vorhanden ist.
-
rapso schrieb:
Bulli schrieb:
Der erste NT-Kernel, wurde sogar auf Nicht-x86-CPUs entwickelt. Wurde ja dann eher auf x86 nachträglich portiert, als man merkte, das x86 doch den Markt dominieren wird. Denn ursprünglich wurde der NT-Kernel auf Intels damaligen RISC-CPUs entwickelt (weiß die CPU-Bezeichnung nicht mehr).
Ich glaube der war fuer ALPHA cpus gemacht, nicht von intel.
Habe nochmal nachgeschaut, es war der i860 codenamed N10 (or "N-Ten").
http://www.winsupersite.com/reviews/winserver2k3_gold1.asp schrieb:
"We checked the first code pieces in around mid-December 1988," Lucovsky said, "and had a very basic system kind of booting on a simulator of the Intel i860 (which was codenamed "N-Ten") by January." In fact, this is where NT actually got its name, Lucovsky revealed, adding that the "new technology" moniker was added after the fact in a rare spurt of product marketing by the original NT team members. "Originally, we were targeting NT to the Intel i860, a RISC processor that was horribly behind schedule. Because we didn't have any i860 machines in-house to test on, we used an i860 simulator. That's why we called it NT, because it worked on the 'N-Ten.'"