Entstehung des Linux Kernel

1657 Wörter [ 14 Screenshots ] [ 47 Versionen ] [ 9 Weblinks ] - Aktualisiert: 2023-12-22 Seite erstellt: 2001-10-04 [SB]

 


Entwicklung von Linux

Zeigt Tux und unterstützte CPU Architekturen von Linux 1986 programmierte Linus (Benedict) Torvalds einen eigenen Treiber für seinen Floppy-Controller. Dabei setzte er sich intensiv mit hardwarenaher Programmierung auseinander und lernte so seinen Sinclair Computer mit Q-DOS besser kennen. Zusätzlich erstellte er seine eigenen Programmier-Tools. Als 1991 die 386-Intel PCs modern wurden, schaffte er sich ebenfalls ein solches Gerät an um sich mit der Programmierung von 386 CPUs auseinander zusetzen. Als Betriebssystem wurde das Unix-verwandte MINIX eingesetzt, Unix kannte er bereits 1990 aus seiner Universität. Minix wurde von Andrew Tanenbaum als Lehrsystem entwickelt und kam besonders an Universitäten zum Einsatz. Das von A. Tanenbaum verfasste Buch "Operating Systems: Design and Implementation" handelt von Konzepten und Minix, das zu seiner Lieblingslektüre wurde. Der Quellcode von Minix ist offen, jegliche Modifikationen daran aber den Lizenzbedingungen unterworfen.

Weil er das mitgelieferte Terminal-Emulatorprogramm in Minix nicht akzeptabel fand, begann er sein Projekt um einen eigenen, besseren Terminal Emulator mit mehr Funktionen auf Hardwareebene zu programmieren. Dazu erstellte er u.a. in Assembler Treiber für den Datenträgerzugriff und das Dateisystem. Mit diesen wurde es möglich mit dem Programm Uploads und Downloads aus dem Internet vorzunehmen. Im Laufe der Entwicklung mehrten sich die Funktionen des Terminal-Programm und er musste die Entscheidung treffen, aus dem Programm ein eigenständiges Betriebssystem zu programmieren. Sein von Minix abgewandeltes Betriebssystem wurde vom Kernel aus vollkommen neu programmiert, für ihn sinnvolle Konzepte aus Minix wurden übernommen. Nach langen Programmierabenden war es soweit. Am 17. September 1991 wurde Freax in der Version 0.01 fertig gestellt, als Entwicklungsumgebung kam noch das MINIX für 386er zum Einsatz. Darin enthalten war bereits die GNU Shell bash und der GNU C-Compiler gcc von Richard Stallman, die zu den Standard Programmen für das inzwischen in Linux umbenannte Betriebssystem zählen. Weil Linux vor allem aus dem GNU Software Pool profitiert, wird es allgemein GNU/Linux genannt.

Nach etwa 6 Monaten wurde Freax eher beiläufig in Linux umgetauft. Schon am 3. Juli 1991 hatte er in der Minix-Newsgroup nach den POSIX Standards gefragt, am 25. August 1991 stellte er sein Projekt öffentlich vor und bat um Vorschläge für weitere Funktionen und Erweiterungen. Der Sourcecode wurde per FTP frei zugänglich gemacht. Über die Mailinglist "Linux-activists@niksula.hut.fi" und der Newsgroup "comp.os.minix" wurde am Anfang Kontakt zu Interessierten und Programmierern gehalten um Fortschritte mitzuteilen. Später wurden eine eigene Mailinglist und Foren gegründet. Im Lauf der Entwicklung erhielt er gewünschte Postkarten aus aller Welt mit Dankesworten. Das Projekt entwickelte in der Internet Community eine starke Eigendynamik und trug sich praktisch selbst. Die Rechte an dem Markennamen Linux wurde nach einem rechtlichen Zwischenfall Linus Torvalds übertragen und später auf mehrere Personen verteilt, so das die Weiterentwicklung gewährleistet ist und eine "feindliche Übernahme" ziemlich unmöglich wird. Die Symbolfigur " Tux der Pinguin" wurde gewählt, weil Torvalds in einem finnischen Zoo von einem Pinguin gebissen wurde. Das eigenwillige Tier hatte ihn so beeindruckt, das er seinem Betriebssystem diese Leitfigur gab. Für Linux gab es am Anfang kein Installationsskript geschweige den ein grafisches Installationsmenü. Um die Installation von Linux zu erleichtern und automatisieren stellte Owen LeBlanc vom Manchester Computing Centre die MCC Interim Releases öffentlich bereit- der Vorreiter der heutigen Distributionen.

Dateistruktur (1. Ebene) von Linux und Derivaten

/ - Root-Verzeichnis
/bin - Systemprogramme
/boot - Kernel, Bootmanager
/cdrom - Mount-Point für CD-ROM (optional)
/dev - Gerätedateien
/etc - Konfigurationsdateien
/floppy - Mount-Point für FDD (optional)
/home - Benutzerverzeichnis
/lib - Shared Libraries
/mnt - Mount Verzeichnis
/opt - Zusätzliche Installationen, GUI
/proc - Systeminformationen
/root - root Benutzerverzeichnis
/sbin - Systemprogramme für root
/tmp - Temporäre Dateien
/usr - Anwendungsprogramme für GUI, Quellcode, etc.
/var - Verschiedenes, einige Logdateien


Kleine Referenz der Shell Befehle

mount - Einbinden eines Dateisystem
umount - Entfernen eines Dateisystem
fdisk - Partitionierung der Festplatte erstellen oder verändern
hdparm - Parameter der Festplatte anzeigen oder verändern
rm - Dateien löschen
ls - Verzeichnisinhalt anzeigen, mit Unterverzeichnissen
dir - Verzeichnisinhalt anzeigen
cd - Verzeichnis wechseln
dd - Bit-basierendes kopieren von Daten oder Festplatten
ps - Zeigt die aktiven Prozesse
df - Anzeige des freien Speicherplatz der Festplatte
find - Suchen nach Dateien oder Verzeichnissen
mkdir - Verzeichnis erstellen
mv - Umbenennen oder verschieben von Dateien
vi - Editor mit Befehls- und Textmodus
killall - Prozesse nach Name beenden
ifconfig - Konfiguration der Netzwerkkarte
netstat - Informationen über die Netzwerkverbindungen
mc - Dateimanager mit grafischer Oberfläche



Die Vorteile einer freien Entwicklung und Verteilung liegen u.a. in der Benutzerorientierung weil keine unnötigen Features integriert werden, die keiner benötigt. Das geschieht durch die dynamische Entwicklung, bei der im Prinzip aus 1.000 aktuellen Ideen nur die am meisten benötigten Features akzeptiert und in den offiziellen Systemkern aufgenommen werden. Um allen Anforderungen gerecht zu werden, existiert die Kernel Serie 2.2.x (max. 2 GByte RAM adressierbar) neben der neueren 2.4.x (max. 64 GByte RAM adressierbar) in Koexistenz. Durch die dynamische Entwicklung ist ein starrer Marketingplan an dem man verbissen hängt unwichtig. Ausserdem werden neue Versionen erst bei bewährter Zuverlässigkeit herausgegeben und nicht wenn der Zeitplan den verkaufsgünstigsten Zeitpunkt bestimmt. Während Linux 0.01 mit den grundlegendsten Bestandteilen und Befehlen aus 10.000 Code-Zeilen bestand, ist der Quellcode nun in Version 2.4.9 auf etwa 3,7 Millionen Code-Zeilen inklusive vieler Hardware Treiber angewachsen. Linux hält die Spezifikationen für System V und BSD Unix Programme ein.

Einige Betriebssystem Firmen nutzen die Offenheit um neue Eigenschaften hinzuzusteuern wie bei der Dateisystemunterstützung durch SGI mit XFS. Linux und verwandte Betriebssysteme sind erst durch die Arbeit der Internet Community, der weltweiten Entwicklergemeinde, entstanden und zunehmend durch IT-Firmen unterstützt. Deswegen gibt es so genannte Entwicklerkernel mit ungeraden Versionsnummer wie 2.3 und Stable Releases mit geraden Nummern wie 2.4 für den stabilen Endnutzer/Unternehmenseinsatz. In dem Usenet-Posting vom 14. Oktober 1996 kündigte Matthias Ettrich das Projekt Kool Desktop Environment (KDE) an. Für die Entwicklung wird die GUI-Bibliothek Qt von Trolltech verwendet. Das erste Release erschien im Juli 1998, das zweite Release im Oktober 2000, im April 2002 das dritte KDE Hauptrelease. Das KDE ist neben dem gnome Desktop eine der am meisten eingesetzten Benutzeroberflächen.

Schätzungen zufolge gibt es Anfang 2001 mindestens 10 Millionen Linux Benutzer weltweit- Tendenz stark steigend. Seit etwa 1997/1998 wird Linux von der IT-Branche verstärkt als Alternative angesehen. In den Jahren 2000/2001 wird die Vermutung geäußert, das Linux auch die bestehenden kommerziellen Unix Varianten nach und nach ablösen könnte und weiterhin an Zustimmung gewinnt. Im heterogenen Netzwerk arbeitet Linux durch die native Unterstützung der Netzwerk Protokolle hervorragend mit Macintosh, Novell und Windows zusammen.

Die General Public License Version 1 wurde 1989 von Richard M. Stallmann gegründet. 1991 wurde die GPL Version 2 von der Free Software Foundation verfasst, seitdem ist der Linux Kernel unter diese Lizenz gestellt. Am 29. Juni 2007 kam die endgültige Fassung der GPL Version 3 heraus. Das Lizenzmodell GPL dem Linux unterliegt, bietet dem Entwickler weit reichende Freiheiten und breite Technologietransfers da Wissen offen weitergegeben wird. Durch die offene Entwicklung verbessern CodeAudits stetig die Qualität des Quellcodes. Durch gegenseitige Code Sichtungen erhöht sich zudem die Software Sicherheit und es besteht keine Abhängigkeit von einem proprietären Hersteller. Viele Linux Derivate sind auf den Websites der Distributoren und Projekte mit FTP oder HTTP zum kostenlosen Download verfügbar, es fallen nur die Internetkosten an. Über redundant ausgelegte Mirror Server lassen sich die meist als ISO Image vorliegenden Software ebenfalls erreichen.

Ziele


- Besseres MINIX als MINIX zu schaffen (war damit unzufrieden)
- Unix-verwandtes Betriebssystem für PC
- Open Source Entwicklung
- Programmierung gemeinsam mit vielen Entwicklern aus aller Welt
- Entwicklung nach den Bedürfnissen der Benutzer

Linus Torvalds arbeitete vom März 1997 bis Juni 2003 für den Chiphersteller Transmeta, bekannt für den Crusoe Prozessor. Er verließ die Firma und wechselte zum OSDL (Open Source Development Lab) um sich hauptsächlich um die Weiterentwicklung des Linux Kernel 2.6.x zu kümmern und zog nach Portland, Oregon. Das OSDL und die Free Standards Group schlossen sich im Januar 2007 zur Linux Foundation zusammen. Linus Torvalds ist weiterhin aktiver Betreuer und Haupt-Entwickler des Linux-Kernel seit 1991.

Distributoren

Ein Distributor ist meist ein Entwicklerteam, dass aufbauend vom Linux- Systemkern (Kernel) ein Installationsfertiges Softwarepaket anbietet. Enthalten sind neben dem individuell anpassbaren Systemkern zahlreiche zusätzliche Anwendungen, Treiber und Assistenten, die mit der eigens entwickelten Installationsroutine bequem installiert und konfiguriert werden können. Diese Distribution wird per Internet in Form von ISO Images oder auf CD-ROM bzw. DVD-ROM kostengünstig zur Verfügung gestellt. Das eingenommene Geld wird für die Entwickler und den Support benötigt. Oft sind Firmen die eine auf Linux basierende Distribution anbieten ebenfalls in anderen Open Source Projekten tätig.
Um eine Linux-Distribution zu installieren, existiert jede mögliche Installationsweise. Das Booten der Installationsroutine von CD-ROM nach dem El-Torito Standard, DVD, von Diskette (komplett inzwischen eher selten), per Netzwerk oder FTP-Server werden nach dem Bootvorgang direkt unterstützt. Von den großen Anbietern von Linux-Distributionen haben sich neue entwickelt, die auf sehr spezielle Einsatzgebiete ausgerichtet sind, etwa Data-Recovery oder Software-Router.



30. Mai 2002: Erstmals haben sich mehrere große Distributoren sich zu einer großen Gemeinschaft vereinigt (siehe News-Notiz). Unter dem Namen UnitedLinux wurde eine gemeinsame Basis für die einheitliche Entwicklung einer Linux-Distribution gegründet. Elemente davon sind Richtlinien der Linux Standard Base. Alle Teilnehmer der Partnerschaft lassen ihre Erfahrungen im Businessbereich und Technisches Wissen mit einfließen um im Serverbereich den Marktanteil auszubauen. Desktop Versionen für Endkunden werden die Distributoren separat bereitstellen. Zur Comdex im November 2002 haben die Initiatoren gemeinsam die fertige Version 1.0 vorgestellt. United Linux 1.0 ist damit LSB 1.2 und OpenI18N konform und fliesst in den zukünftigen Versionen als Standard ein. Am 21.06.2006 wurde die Linux Standard Base 3.1 veröffentlicht. Diese bringt neue Richtlinien für Desktop-Anwendungen, ein eigenes Software Development Kit (SDK) ist verfügbar und die Zertifizierung für Produkte nach LSB 3.1 sind möglich.

Netcraft stellte in einer News vom 05.12.2005 die Anteile der Linux Distributionen auf Web Servern heraus. Red Hat kommt auf etwa 34%, gefolgt von Debian mit 25% und grösstem Wachstum, Fedora 16%, SuSE 11%, Cobalt 7%, gentoo 3%, Mandriva und Centos mit je 2%.

 


Screenshots

Entstehung des Linux Kernel Screenshot 1Entstehung des Linux Kernel Screenshot 2Entstehung des Linux Kernel Screenshot 3Entstehung des Linux Kernel Screenshot 4
Linux Kernel 2.6 Kernel QuelldateienLinux Kernel 2.6 mit "make xconfig" grafisch konfigurieren (1)Linux Kernel 2.6 mit "make xconfig" grafisch konfigurieren (2)Linux Kernel 2.6 mit "make config" textbasierend konfigurieren
Entstehung des Linux Kernel Screenshot 5Entstehung des Linux Kernel Screenshot 6Entstehung des Linux Kernel Screenshot 7Entstehung des Linux Kernel Screenshot 8
Linux KernelstrukturLinux Standard Base Website 2016GNU Website 2016GitHub (Linus Torvalds) Website 2016
Entstehung des Linux Kernel Screenshot 9Entstehung des Linux Kernel Screenshot 10Entstehung des Linux Kernel Screenshot 11Entstehung des Linux Kernel Screenshot 12
UnitedLinux Website 2016Linux Foundation Website 2016kernel.org Website 2007kernel.org Website 2010
Entstehung des Linux Kernel Screenshot 13Entstehung des Linux Kernel Screenshot 14
kernel.org Website 2015kernel.org Website 2016

Versionen

Datum - Version
1991 Sept. - Freax 0.01 - benötigt noch Minix und speziellen gcc Kompiler, 230kb Source Code, inkl. Skripten und Header Dateien, minimale Version, mit Floppy-, Keyboard und Serial-Treiber, ext Dateisystem, 386-CPU Unterstützung, Unix-Shell bash
1991 Sept. - Freax 0.02 - bash und gcc wurden von MINIX portiert, benötigt 4 MByte RAM für das kompilieren von Software
1991 Okt. - Freax 0.03 - kleiner Anwenderkreis, gcc kann sich selbst auf Linux kompilieren, benötigt nur noch 2 MByte RAM für das kompilieren von Software
1991 Nov. - Freax 0.11 - internationales Entwickler Team, erster Festplatten-Treiber, mkfs/fsck/fdisk Programm, Hercules/MDA/CGA/EGA/VGA Grafik, US/German/French/Finnish Keyboard, Piepende Console, Linux ist jetzt eine eigene Entwicklungsumgebung
1992 Jan. - Freax 0.12 - erstmals Page-to-Disk Funktion eingebaut, Linux wird unter die GPL gestellt, Virtual Memory, Disk-Caching, POSIX Job-Control, mehrere Personen beteiligen sich an Programmierung, Multi-Threading Dateisystem,
1992 April - Linux 0.96 - Programmierer und Benutzer Zahl steigt an, X-Window System vom MIT wird erstmals eingesetzt
1994 März - Linux 1.0 - 4.500 KByte Source Code, inkl. Skripten und Header Dateien, mehr als 170.000 Zeilen Quellcode, ca. 100 Entwickler, ca. 100.000 Anwender, erste SCSI und Sound Treiber, erstmals netzwerkfähig, ext2 Dateisystem
1995 März - Linux 1.2 - 250.000 Zeilen Quellcode, etwa 50% davon sind Hardwaretreiber, Portierung auf Alpha-, Mips-, und SPARC-CPUs, erweiterte Netzwerkfunktionen wie IP-Forwarding und NFS, IPX, AppleTalk
1996 Juni - Linux 2.0 - 20.300 KByte Source Code, inkl. Skripten und Header Dateien, ca. 800.000 Zeilen Quellcode, Portierung auf m68k und PowerPC CPUs, Multiprozessorfähig bis 16 CPUs (experimentell), Symbolfigur "Tux der Pinguin" wird geboren
1997 April - Linux 2.1.32 - Torvalds lässt nach Rechts-Streit Linux als Warenzeichen registrieren
1999 Jan. - Linux 2.2.0 - 269 Entwickler arbeiten an Linux, ca. 10 Millionen Anwender, verbesserte SMP Unterstützung, hat als erstes Betriebssystem IPv6 Unterstützung, breite Softwareunterstützung durch Firmen, StarOffice, Netscape
2000 Juni - Linux 2.2.16 -
2001 Jan. - Linux Kernel 2.0.39 Release, enthält Bugfixes für Sicherheitslücken
2001 Jan. - Linux 2.4.0 - 375 Entwickler arbeiten an Linux, ca. 15 Millionen Anwender, läuft auf insgesamt 13 Hardware-Plattformenbessere Netzwerkunterstützung, bessere Performance in der Speicherverwaltung, verbesserte Hardware Unterstützung
2002 Jan. - Linux Kernel 2.5.2
2002 April - Linux Kernel 2.5.10
2002 June - Linux Kernel 2.5.20
2002 Aug. - Linux Kernel 2.5.30
2002 Oct. - Linux Kernel 2.5.40
2002 Nov. - Linux Kernel 2.5.50
2003 Feb. - Linux Kernel 2.5.60
2003 März - Linux Kernel 2.2.25
2003 May - Linux Kernel 2.5.70
2003 Juni - Linux 2.4.21 - Kernel 2.4.20 zu 2.4.21 : 1738 Code Änderungen
2003 Dez. - Linux Kernel 2.6.0 Release, optimiert für große Datenspeicher und hohen Datendurchsatz, TCP/IP optimiert, bessere Speicherverwaltung und Prozess-Scheduler, Verbesserung des Threadings, verbesserte Advanced Linux Sound Architecture (ALSA), enthält Security-Enhanced Linux (SELinux)
2004 Feb. - Linux Kernel 2.0.40 Release
2004 Feb. - Linux Kernel 2.2.26 Release, enthält Bugfixes für Sicherheitslücken, letztes 2.2 Release
2004 Dez. - Linux Kernel 2.6.10
2007 Feb. - Linux Kernel 2.6.20
2009 Juni - Linux Kernel 2.6.30
2009 Dez. - Linux Kernel 2.6.32 (Longterm release)
2010 Mai - Linux Kernel 2.6.34 (Longterm release)
2011 Mai - Linux Kernel 2.6.39
2011 Juli - Linux Kernel 3.0
2012 Jan. - Linux Kernel 3.2 (Longterm release)
2012 Mai - Linux Kernel 3.4 (Longterm release)
2013 Juni - Linux Kernel 3.10 (Longterm release)
2013 Nov. - Linux Kernel 3.12 (Longterm release)
2014 März - Linux Kernel 3.14 (Longterm release)
2014 Aug. - Linux Kernel 3.16 (Longterm release)
2014 Dez. - Linux Kernel 3.18 (Longterm release)
2015 Feb. - Linux Kernel 3.19
2015 April - Linux Kernel 4.0
2015 Juni - Linux Kernel 4.1 (Longterm release)
2016 Jan. - Linux Kernel 4.4 (Longterm release)
2016 Mai - Linux Kernel 4.6
2016 Aug. - Linux Kernel 4.7.1