Cygwin
Eine Unix-Umgebung für Windows

von Katharina Lüthke & Ernst Paunzen (Ausgabe 08/2, Juni 2008)

Mit Dank an Alexander Berndl, Tibor Rudas, Dieter Stampfer & Christian Stütz für die fachliche Unterstützung

 

Windows und Linux gemeinsam in einer Umgebung betreiben und gleichzeitig mit Anwendungen beider Betriebssysteme arbeiten? Mit Cygwin ist möglich, was sich viele PC-Nutzer wünschen: Programme, die üblicherweise nur unter Systemen wie GNU/Linux, BSD und Unix laufen, können auch unter Microsoft Windows1) genutzt werden.

Das Programmpaket Cygwin mit allen seinen Bibliotheken übersetzt dabei die Systemaufrufe von Unix-Programmen in für Windows verständliche Befehle. Somit kann ein Unix-/Linux-Betriebssystem eigenständig und ohne duales Bootverfahren2) unter Windows betrieben werden. Das Kernstück von Cygwin ist die so genannte Cygwin DLL (cygwin1.dll), eine Bibliothek, welche UNIX SVR4 und BSD (Versionen des Unix-Betriebssystems) sowie POSIX-APIs3) unter Windows zur Verfügung stellt. Dadurch können viele Programme, die für Unix geschrieben wurden, nach einer erneuten Kompilierung4) auch unter Windows ausgeführt werden.

Die Entstehung von Cygwin

Begonnen wurde die Entwicklung von Cygwin im Jahre 1995 von Steve Chamberlain, einem Programmierer der Softwarefirma Cygnus. Um Windows-Benutzern die Möglichkeit zu geben, auch mit Linux-Programmen zu arbeiten, sah er eine Lösung in einer Bibliothek zwischen dem jeweiligen Unix-Programm und Windows vor, also einem Application-Layer. Chamberlain gab dieser Bibliothek den Namen Cygwin, zusammengesetzt aus den Begriffen Cygnus und Windows. In weiterer Folge wurden die Programmbibliotheken des GNU-Projektes5) inkludiert und damit wurde Cygwin von vielen weiteren Entwicklern vorangetrieben. Die Firma Red Hat kaufte im Jahre 1999 Cygnus und entwickelt seitdem gemeinsam mit einer großen Anzahl an Benutzern das Programmpaket kontinuierlich weiter.

Was kann Cygwin?

Grundsätzlich kann jedes gewünschte Unix-/Linux-Programm unter Cygwin ausgeführt werden. Cygwin enthält bereits eine Reihe von gängigen Unix-Programmen wie zum Beispiel eine bash-Shell (Kommandozeile), die Texteditoren nano, emacs und vim, das Textsatzsystem TeX, rsync zur Synchronisation von Daten, den GNU C/C++ Compiler (GCC), das X Window-System XFree86, den Webserver Apache 2.0 oder den SSH-Client und Server OpenSSH. Eine komplette Liste aller verfügbaren Pakete ist unter dem Link www.cygwin.com/packages/ abrufbar.

Eines ist wohl klar: Allein aufgrund des Kommandozeileninterpreters bash oder des Texteditor vim wird man Cygwin wohl eher nicht installieren (was natürlich möglich ist, wenn man auf bash oder vim einfach nicht verzichten möchte ?). Denn auch Windows besitzt eine Kommandozeile, die cmd.exe, ein DOS-Fenster, das im Windows-Programmordner unter Zubehör/ Eingabeaufforderung zu finden ist. Von dort lässt sich das Betriebssystem, wie bei Unix-Systemen, durch eine Vielzahl von Kommandos bedienen. Allerdings sind Geschwindigkeit, Anzahl, Funktionalität und Kombinationsmöglichkeiten der Windows-Kommandos nicht mit Unix-Systemen vergleichbar. Sowohl in Cygwin als auch in Windows sind über die entsprechende Kommandozeile Befehle und Programme des jeweils anderen Systems ausführbar. So wird beispielsweise der Windows-Editor NotePad in Cygwin mit dem Befehl /cygdrive/c/windows/notepad.exe gestartet. Da Cygwin im Allgemeinen die Windows-Pfadvariablen übernimmt und die Dateiendung .exe automatisch anhängt, genügt auch ein einfaches notepad.

Wozu braucht man Cygwin?

Es gibt sicher viele Gründe, Unix-Anwendungen auch unter Windows-Systemen auszuführen, beispielsweise wenn man als Windows-User Unix-Systeme kennen lernen möchte, oder wenn man eine ganz bestimmte Unix-Anwendung unter Windows anwenden will, oder aber, wenn unter Windows keine vergleichbare Alternative zur Verfügung steht.

OpenSSH

Eine der häufigsten Anwendungen von Cygwin ist der Einsatz von OpenSSH (Open Secure Shell). OpenSSH ist eine Zusammenstellung von Computerprogrammen, die verschlüsselte Verbindungen über ein Computernetzwerk mittels des SSH-Protokolls ermöglichen. Sie verschlüsseln Passwörter sowie die gesamte Verbindung, um Mithören (eavesdropping), das Umleiten von Verbindungen (connection hijacking) und ähnliche Angriffe zu unterbinden.

Zusätzlich bietet OpenSSH neben einer großen Anzahl sicherer Tunnel- und Authentifikationsmöglichkeiten die Unterstützung für alle SSH-Protokollversionen an (siehe hierzu auch Comment-Artikel Secure Shell (SSH) - Kommunikation im Flüsterton in Comment 00/3, Seite 23).

Damit stehen dann auf dem Windows-System die benötigten Klienten ssh (als Ersatz für rsh, rlogin und telnet), scp (als Ersatz für rcp) und sftp (als Ersatz für ftp) sowie vor allem die Server sshd und sftp-server für interaktives Login und Dateitransfer zu Verfügung. Zwar gibt es auch unter Windows einige Klienten (z. B. PuTTY, WinSCP, ...), die aber jeder für sich nicht so leistungsfähig sind und außerdem über keine Server verfügen. Alle nativen Windows-Server für SSH sind kostenpflichtig.

An der Universität Wien wird OpenSSH als Basis für das Software Deployment System der Fakultätsunterstützung eingesetzt (siehe Comment 07/3, Seite 15). Die gesamte Kommunikation zwischen dem zentralen Cluster (Organon) und dem lokalen Klienten, auf dem ein ssh-Dienst unter Cygwin läuft, ist dadurch verschlüsselt.

Anwendung findet OpenSSH auch in Bezug auf die Nutzung der Fileservices des ZID (www.univie.ac.at/ZID/fileservices/). Soll der Zugriff auf einen Share per SFTP (SSH File Transfer Protocol) erfolgen, was eine sichere Datenübertragung erlaubt, wird die Verbindung zum Server mit Hilfe eines SFTP-Klientenprogramms aufgebaut. Unter Microsoft Windows muss dafür ein eigenes Programm installiert werden. Hierfür eignet sich z. B. Cygwin OpenSSH.

Webserver

Eine interessante Anwendungsmöglichkeit für Webentwickler bietet Cygwin mit dem Paket Apache 2.0. Mit dem Apache HTTP Server können Webseiten lokal getestet werden, d.h. ohne sie vorher auf den entfernten Server hochzuladen. Somit steht Anwendern eine reale Webserver-Umgebung lokal auf dem Rechner zur Verfügung. Der Vorteil ist, dass Seiten oder Applikationen so schon vorher unter Echt-Bedingungen getestet werden können, ohne auf eine Verbindung zum Server angewiesen zu sein und ohne, dass jemand anderes darauf Zugriff hat. Die Webserver-Umgebung kann auch erweitert werden, indem man zusätzlich Programmiersprachen (z. B. Perl), Datenbanken (z. B. MySQL) oder Admin-Hilfen (z. B. PHPMyAdmin) integriert.

X Window

Möchte man Unix-Programme mit einer grafischen Oberfläche bedienen, benötigt man dazu einen X-Server. Das X Window-System ist ein System für grafische Darstellungen und Benutzeroberflächen, wobei von einem Bildschirm aus gleichzeitig mehrere über das Netz erreichbare Unix-Rechner angesprochen werden können. Auf dem eigenen Bildschirm können dann mehrere Fenster nebeneinander verwendet werden, in denen Unix-Prozesse gleichzeitig laufen. Der Rechner, auf dem die Ein- und Ausgabe erfolgt, wird als X-Server bezeichnet, als X-Client dagegen der Rechner, auf dem die Applikation läuft, die die Ein- und Ausgabe verarbeitet.

In Cygwin sind mittlerweile das X Window-System Xfree86, die Arbeitsoberflächen GNOME, KDE, WindowMaker und FVWM sowie verschiedene Graphikbibliotheken (GTK+, OpenGL, ...) integriert. Die X Window-Applikationen kann man auch ohne Linux-Arbeitsoberfläche am Windows-Desktop darstellen.

Sprachen

Folgende Interpreter- und Compilersprachen können unter Cygwin verwendet werden (GNU- bzw. Mingw-Projekt): Ada, C/C++, D, Fortran, Java, Modula 2, Objective-C, Pascal, Perl und Python. Mit Hilfe dieser Sprachen in Verbindung mit den X Window-Komponenten eignet sich Cygwin auch hervorragend zur Entwicklung von Programmen mit einer graphischen Benutzeroberfläche. Zudem verfügt Cygwin über eine komplette WIN32 API-Schnittstelle, sodass man auch Windows-kompatible Anwendungen programmieren kann.

Texteditoren

Wer auch unter Cygwin auf einen zusätzlichen Texteditor nicht verzichten möchte, hat die Möglichkeit, auf bekannte Programme wie z. B. nano, vim oder emacs zuzugreifen. nano ist sehr einfach zu handhaben und unterstützt alle grundlegenden Bearbeitungsfunktionen wie Bearbeiten, Ausschneiden, Springen, Kopieren und Speichern. vim und emacs verfügen über weitaus mehr Möglichkeiten, wobei vim vor allem durch seine verschiedenen Betriebs-Modi (Normal-Modus, Einfüge-Modus, ?) auffällt, zwischen denen während der Bearbeitung gewechselt werden muss. Auch emacs verfügt über mehrere Betriebsarten, z. B. kann emacs als HTML-Editor verwendet werden, der auch Syntaxüberprüfungen vornimmt. Weitere Funktionen von vim und emacs sind Blockediting, Programme aus dem Editor heraus kompilieren und ausführen sowie E-Mails versenden.

Installation von Cygwin

Unter dem Link www.cygwin.com

kann man mit Klick auf den Link Install or update now! das Setup-Programm auf den eigenen Rechner downloaden. Erst wenn die darin enthaltene Datei setup.exe ausgeführt wird, öffnet sich das Installer-Programm, welches in Folge die Softwarepakete - entweder als Standardauswahl oder benutzerdefiniert - aus dem Internet herunterlädt.

Voreinstellungen wählen

Wählen Sie die Option Install from Internet. Der Installationsvorgang wird komplett über ein graphisches Benutzerfenster gesteuert. Es wird keine zusätzliche Partition auf der Festplatte benötigt, eine Installation zum Beispiel unter C:\Cygwin oder im Verzeichnis C:\Programme\Cygwin funktioniert problemlos. Die anderen Einstellungen (für welche Benutzer die Installation zur Verfügung stehen soll und in welchem Format Textdateien interpretiert werden sollen) können in der Standardauswahl belassen werden.

Nun möchte das Setup-Programm wissen, wo es die herunter geladenen Dateien ablegen soll. Die komplette Installation ist etwa 170 MB groß. Wählen Sie hierfür ein Verzeichnis auf Ihrer Festplatte.

Es folgt eine Abfrage, ob ein Proxy-Server verwendet werden soll. Wenn Sie sich nicht in einem Firmennetzwerk befinden, ist Direct Connection in der Regel die richtige Wahl.

In der Liste der Mirror-Server im Fenster Available Download Sites empfiehlt es sich, den Mirror ftp://ftp.univie.ac.at der Universität Wien auszuwählen.

Pakete installieren

Nun sind alle Voreinstellungen getätigt (das Setup merkt sich diese Auswahl auch bei einem erneuten Aufruf) und das Programm bietet im Fenster Select Packages eine komplette Liste aller zur Verfügung stehenden Pakete an, von denen einige bereits standardmäßig ausgewählt sind. Hierzu zählen alle unter Base gelisteten Pakete, z. B. bash (Shell), cygwin-doc (Cygwin-Dokumentation), man (allgemeine Dokumentationen zu Befehlen und Programmen), gzip (Kompressionsprogramm) und tar (Dateiarchivierung). Mit Klick auf das Plus-Zeichen vor Base wird die komplette Liste angezeigt.

Zusätzlich zu diesen Paketen können beliebige weitere Programme und Werkzeuge auswählt werden. Es ist möglich, alle zur Verfügung stehenden Pakete zu installieren, indem man ganz oben in der Liste bei All einmal auf Default klickt, sodass an dessen Stelle Install erscheint. Dies ist jedoch nicht zu empfehlen, da man kaum alle Pakete benötigt und die Installation mehrere Gigabyte in Anspruch nehmen würde. Es ist stattdessen wesentlich sinnvoller, einzelne Komponenten unter den Kategorien direkt auszuwählen. Hier sollte man allerdings ungefähr wissen, welche Pakete man für die gewünschte Anwendung benötigt.

OpenSSH wird in der Standardeinstellung nicht installiert, hierzu muss man unter Net die entsprechenden Komponenten auswählen. Öffnen Sie mit Klick auf das Plus die ganze Liste und suchen die Pakete openssh und openssl aus, indem Sie vor dem gewünschten Paket einmal auf Skip klicken. Es erscheint die Versionsnummer der aktuell gängigen Fassung eines Paketes. Bei weiteren Klicks auf die Nummer werden alle zur Verfügung stehenden Versionen angezeigt bzw. die Auswahl wieder deaktiviert (Skip). Bei Auswahl eines Paketes, das in Abhängigkeit mit anderen Paketen steht, werden diese Pakete automatisch mit ausgewählt.

Ebenfalls manuell müssen die X Window-Pakete xorg-x11-base und xterm unter der Kategorie X11 ausgewählt werden. Für den Apache-Webserver installieren sie das Paket apache2 aus der Kategorie Web. Die Texteditoren vim, emacs und nano sind unter Editors zu finden.

Nachdem Sie die gewünschten Pakete ausgewählt haben, klicken Sie auf Next. Im letzten Schritt der Installation können Sie ein Cygwin-Icon auf dem Desktop anlegen. Cygwin erstellt zudem einen Eintrag unter Programme/Cygwin/Cygwin Bash Shell im Startmenü. Um den Vorgang abzuschließen, klicken Sie auf Finish.

Ansichten im Setup

Um sich einen besseren Überblick über alle Pakete bzw. über deren Status zu verschaffen, gibt es im Setup-Fenster rechts oben den Button View. Die Standardeinstellung ist Category, bei der die Pakete nach Kategorien aufgelistet sind. Darüber hinaus gibt es noch die Ansichten Full (zeigt alle Pakete in einer Liste), Partial (zeigt eine Liste aller Pakete, die geändert, sprich installiert, aktualisiert oder entfernt, werden sollen), Up To Date (zeigt alle bereits installierten Pakete) und Not Installed (zeigt alle Pakete, die nicht installiert sind oder gerade installiert werden sollen).

Cygwin konfigurieren

Mit Hilfe des Setups lässt sich Cygwin in weiterer Folge auch konfigurieren. Es stehen verschiedene Möglichkeiten zur Verfügung, die Programmpakete an die eigenen Bedürfnisse anzupassen. So lassen sich noch nicht installierte Pakete jederzeit nachträglich einspielen sowie bereits ausgewählte Pakete aktualisieren oder eine ganz bestimmte Version eines Paketes downloaden. Analog können nicht mehr gewünschte Pakete auch wieder deinstalliert werden.

Eine ausführliche und leicht verständliche Installationsanleitung wird unter dem Link www.tanmar.info/content/view/24/1/ angeboten. Empfehlenswert für Einsteiger ist auch der Artikel Linux-Shell-Befehle unter Windows üben - Brauchbare Windows-Shell aus dem EasyLinux Magazin unter www.easylinux.de/Artikel/ausgabe/2005/05/018-cygwin/index.html.

Cygwin und Pakete aktualisieren

Wenn Sie mit Cygwin arbeiten, ist es von Zeit zu Zeit ratsam, nicht nur die einzelnen Pakete, sondern auch die setup.exe zu aktualisieren. Hierzu gehen Sie wieder auf die Seite www.cygwin.com und klicken auf den Link Install or update now!

Laufwerke

Unter Cygwin werden alle Windows-Laufwerke automatisch erkannt und unter /cygdrive/# zur Verfügung gestellt (Lesen und Schreiben). Das gilt auch für Laufwerke, die unter NTFS formatiert sind - ein großer Vorteil von Cygwin gegenüber Linux-Distributionen, die von/auf NTFS-Partitionen zwar lesen, aber standardmäßig nur mit HIlfe von zusätzlichen Programmen (ntfs-3g, www.ntfs-3g.org) schreiben können.

Fazit

Cygwin eignet sich hervorragend, um in die Welt von Linux unter einer reinen Windows-Umgebung hineinzuschnuppern. Die in diesem Artikel angesprochenen Anwendungsbeispiele stellen dabei nur eine kleine Auswahl der zur Verfügung stehenden Pakete und deren Einsatzmöglichkeiten dar. Viele weitere Anwendungen, zum Beispiel für den Bereich der Naturwissenschaften, sind nur für Unix/Linux-Betriebssysteme erhältlich. Wer gerne an einem Windows-System arbeitet oder wem nur ein Windows-Rechner zu Verfügung steht, kann solche speziellen Applikationen bequem unter Cygwin testen und ausführen, ohne den täglichen Betrieb zu stören bzw. andere Windows-Anwendungen zu beeinflussen.

Der systemische Aufwand einer Cygwin-Installation hält sich dabei in Grenzen: Erforderlich ist ausreichend Speicherplatz auf einer (Windows)-Festplatte; das Basispaket umfasst gerade einmal 170 MB. Wie bereits erwähnt, kann auf die Einrichtung einer komplexen Dual-Boot-Lösung (siehe Fußnote 2) verzichtet werden. Ein weiterer Vorteil ist, dass man Cygwin somit auch bequem wieder "loswerden" kann.

Cygwin ist keine "abgespeckte Spaß-Linux-Distribution", sondern eine professionelle Entwicklungsumgebung, in der eine große Anzahl an Programmiersprachen innerhalb vieler graphischen Linux-Oberflächen zur Verfügung steht. Der direkte Zugriff auf NTFS (Windows)-Partitionen und die volle Funktionalität aller Windows (DOS)-Befehle auf der Kommandozeile sind weitere Zugaben. Wer Interesse an Cygwin gefunden hat, findet im Kasten Links & Literatur einige Cygwin-Anleitungen für Einsteiger und Fortgeschrittene sowie Hinweise auf Grundlagenliteratur.

 

Mögliche Probleme und kleine Fallen

LF versus CR LF

In der elektronischen Datenverarbeitung ist für den Zeilenumbruch in Texten ein Steuerzeichen vorgesehen. Windows-Dateien verwenden CR LF als Zeilentrenner, Unix dagegen nur LF. Obwohl bereits viele Programme in Unix und Windows mit der jeweils anderen Variante umgehen können, kann es damit Probleme geben. Um dem entgegenzuwirken, kennt Cygwin zwei Arten, Verzeichnisse anzubieten: binary oder text. Mit dem Kommando mount kann man den aktuellen Zustand abfragen. Bei der Textoption wird versucht, die Dateien bei jedem Zugriff so zu konvertieren, dass das Programm die bevorzugte Variante bekommt. Dies ist jedoch nicht empfehlenswert, da die Konvertierung unter Umständen die Dateien zerstören kann, z. B. binäre Dateien oder Bilder.

Pfade

Die Darstellung von Dateinamen unterscheidet sich wesentlich zwischen Unix und Windows. Während Windows den verkehrten Schrägstrich \ als Trenner zwischen Verzeichnissen verwendet und Laufwerksbuchstaben benötigt, verwendet Unix den Schrägstrich / und alle Dateien sind in einem einzigen Baum unter / zu finden. Daher auch die Notwendigkeit, Daten auf anderen Laufwerken als /cygdrive/c/ anzusprechen. Auf der anderen Seite entspricht das Verzeichnis / von Cygwin einem Unterverzeichnis in Windows (meist C:\Cygwin).

In vielen Fällen kann Cygwin die notwendigen Übersetzungen selbst ausführen (z. B. werden die Pfade in der Umgebungsvariable PATH automatisch angepasst).In machen Fällen muss man das aber selbst tun. Dabei hilft das Kommando cygpath: Der Aufruf notepad /etc/passwd führt zu Datei nicht gefunden, da Notepad einen Windows-Pfad erwartet. Mit cygpath -w /etc/passwd erhält man diesen (C:\Cygwin\etc\passwd). Durch Verwendung der "Backticks" kann man den Namen direkt in das Kommando übergeben: notepad `cygpath -w /etc/passwd`

Groß- und Kleinschreibung

Beachten muss man auch die Unterschiede in der Groß- und Kleinschreibung von Dateinamen. Während die Schreibweise bei Windows keine Rolle spielt, ist sie in Unix signifikant. Cygwin liegt irgendwie dazwischen, z. B. liefert die Eingabe ls -ld /cygdrive/c/WINDOWS/SYSTEM32` die richtigen Daten, obwohl das Verzeichnis /cygdrive/c/WINDOWS/system32 heißt.

Hingegen liefert die Eingabe ls -ld /cygdrive/c/WINDOWS/SY* eine Fehlermeldung: ls: cannot access /cygdrive/c/WINDOWS/SY*: No such file or directory

Multiuser / Benutzerverwaltung

Unix bezieht seine Information über Benutzer im Wesentlichen aus zwei Dateien:

/etc/passwd

/etc/groups

Diese werden bei der Installation mit Daten von Windows befüllt. Spätere Änderungen spiegeln sich darin nicht wieder. Mit Hilfe der Kommandos

mkpasswd

mkgroups

kann man diese Dateien aktualisieren. Weiters ist zu beachten, dass das Ändern der User-Rechte in einem laufenden Prozess (su) unter Cygwin nicht zuverlässig funktioniert. Bei Applikationen, die eine Aktualisierung benötigen (z. B. sshd), kann es dabei zu Schwierigkeiten kommen.

Heinrich Mislik

Links & Literatur

Cygwin-Hauptseite
www.cygwin.com

Cygwin - FAQ
http://cygwin.com/faq.html

Installation von Cygwin
www.tanmar.info/content/view/24/1/
www.easylinux.de/Artikel/ausgabe/2005/05/018-cygwin/index.html

OpenSSH unter Cygwin
http://hydra.geht.net/tino/howto/cygwin/cyg--ssh/
http://pigtail.net/LRP/printsrv/cygwin-sshd.html
www.webmasterpro.de/server/article/backup-sicheres-rsync-mit-cygwin-auf-windows.html

Apache unter Cygwin
http://httpd.apache.org/docs/2.0/

Cygwin/X
http://x.cygwin.com/

Cygwin/X - FAQ
http://x.cygwin.com/docs/faq/cygwin-x-faq.html

KDE unter Cygwin
http://kde-cygwin.sourceforge.net

GNOME unter Cygwin
http://cygnome.sourceforge.net

Grundlagenliteratur

Linux in a Nutshell, O'Reilly

Linux: Installation, Konfiguration, Anwendung, Addison-Wesley

Handbücher des ZID

Am ZID sind zudem die beiden Handbücher Unix - Eine Einführung um 4,00 Euro und Linux - Nutzung mit der grafischen Oberfläche KDE um 5,50 Euro für Studierende und MitarbeiterInnen der Uni Wien erhältlich, die am Helpdesk des ZID (NIG, Stiege II, 1. Stock, links, 1010 Wien, Universitätsstraße 7; MO - FR von 9:00 - 18:00 Uhr) erworben werden können.

 

1) Mittels Cygwin portierte Programme laufen unter Windows NT, Windows 2000, Windows XP, Windows Vista und Windows Server 2003 in den jeweiligen 32bit und 64bit-Versionen. Allerdings liegen nicht alle Werkzeuge in einer 64bit-Version vor.

2) Beim Dual-Boot-Verfahren werden zwei Systeme - Windows und Linux - auf verschiedenen Partitionen der Festplatte installiert; beim Einschalten wird das gewünschte Betriebssystem gewählt. Der Nachteil dabei ist, dass immer nur eines der beiden Systeme genutzt werden kann und jeder Wechsel einen Neustart erfordert.

3) Portable Operating System Interface; Schnittstelle zwischen Applikation und Betriebssystem

4) Bei der Kompilierung wird das in einer Quellsprache (z. B. C) geschriebene Programm in ein semantisch äquivalentes Programm in der Maschinensprache übersetzt, welches dann z. B. auch unter Windows ausgeführt werden kann.

5) Das GNU-Projekt wurde mit dem Ziel gegründet, ein vollständig freies Betriebssystem, genannt GNU ("GNU is not Unix"), zu entwickeln. Bekannt geworden ist das Projekt vor allen Dingen auch durch die GNU General Public License (GPL), unter der viele bekannte Softwareprojekte veröffentlicht werden.