Wenn es um ein Linux-Betriebssystem geht, einschließlich Ubuntu, werden häufig die Begriffe Kernel und Betriebssystem unterschieden . Dies ist für Windows und die OS X-Familie richtig, aber warum ist es in der Linux-Community so weit verbreitet? Gibt es eine Möglichkeit, den Betriebssystemkernel zu aktualisieren, ohne dass das Betriebssystem selbst aktualisiert wird? Oder umgekehrt? Wenn ja, wie kann das nützlich sein?
9
Antworten:
Das gesamte GNU / Linux-System wird nach dem modularen Ansatz aufgebaut. Sie können ein einzelnes Modul meistens aktualisieren ( im Allgemeinen ersetzen ), ohne andere zu berühren. Das betreffende Modul kann ein Bootloader, ein Kernel, eine Shell, ein Befehl, eine Desktop-Umgebung, eine GUI-Anwendung usw. sein.
Dies gilt natürlich, solange Sie Abhängigkeiten korrekt verwalten können. In den Distributionen rund um Ubuntu wird APT verwendet, um Abhängigkeiten automatisch aufzulösen.
Sie können eine andere Kernelversion mit dem folgenden Befehl installieren:
Solange APT dies zulässt, sollten Sie in der Lage sein, eine ausgewählte Version des Kernels neu zu starten und zu verwenden, sei es generisch, mit geringer Latenz usw. Oder Sie erstellen selbst eine Kernelversion, z. B. das Echtzeit-Linux , und verwenden sie mit Ihrem aktuellen System .
quelle
/etc/issue
vombase-files
Paket bereitgestellt wird . Wie ich bereits geschrieben habe, hat es nichts mit der Kernel-Version zu tun.Wie Sie wissen, ist der Kernel ein wichtiger Bestandteil des Betriebssystems. In GNU / Linux-Distributionen können Sie den Kernel problemlos aktualisieren, ohne einen anderen Teil des Betriebssystems zu berühren. Wir aktualisieren jedoch einfach einen Teil unseres Betriebssystems.
Ein Betriebssystem besteht aus zwei Teilen: Kernel Space und User Space.
Ja, Sie können Ihren Kernel-Speicherplatz aktualisieren, ohne Ihren Benutzerbereich zu berühren, wenn nur die neue Version mit Ihrem aktuellen Benutzerbereich kompatibel ist.
Und was das Aktualisieren von User Space-Tools betrifft, ist es ein weiteres Ja.
Wenn Sie laufen:
Wenn ein Update für den Kernel verfügbar war, erhalten Sie:
Sie aktualisieren also nur Ihren Benutzerbereich und wenn Sie so etwas ausführen
Sie aktualisieren alles, einschließlich des Kernels.
Um nur Ihren Kernel auf eine neuere Version zu aktualisieren, verwenden Sie Folgendes:
Um eine Liste neuerer Kernel zu finden, installieren Sie sie als neues Paket. Beispiel:
quelle
sudo apt upgrade
aktualisiert auch den Kernel, wenn neue Versionen verfügbar sind.sudo apt full-upgrade
Packeges Arsch gut entfernen, wasasudo apt upgrade
nicht tun wird.upgrade
ich den Unterbefehl verwende, werden keine neuen Pakete installiert. Außerdem werden keine Pakete entfernt. Deshalb verwenden wir diese Optiondist-upgrade
.apt-get
funktioniert zumindest so;) also habe ich meine befehle aktualisiert, um verwirrungen zu vermeiden.apt
Befehl, nach einer kurzen Recherche sieht es so aus, als ob Ihre Antwort jetzt korrekt istapt
und Sieapt-get
die Sache anders behandeln, siehe hiroom2.com/2016/05/20/ubuntu-16-04-debian-8-apt -Befehl /… . Also etwas Wissen für uns beide ...Zunächst ein paar Klarstellungen, weil ich spüre, dass Sie nicht verstehen, wie GNU / Linux-Systeme entstanden sind. Nehmen Sie mit, wenn dies für Sie nichts Neues ist:
"Kernel" ist nicht nur ein anderes Programm, das ausgeführt wird, sondern es ist der Teil des Betriebssystems, der die Basisfunktionen bereitstellt: Wenn Sie ein Programm starten möchten (z. B. geben Sie "ls" in die Befehlszeile ein), muss die Binärdatei geladen werden Von der Festplatte (einschließlich einiger Dateisystemoperationen zum Auffinden und einiger Dateiverwaltung zum Lesen) wird eine "Prozessumgebung" erstellt: Speicher wird zugewiesen, eine Prozessnummer wird ausgegeben usw. usw. Alle früheren Aktivitäten (FS, Lesen aus Datei, ...) werden von Systembibliotheken verarbeitet, letztere sind Kernelfunktionen. In gewissem Sinne ist der Kernel "das Betriebssystem" und alles andere ist nur eine Dekoration.
"Linux" ist in der Tat (nur!) Ein Kernel ohne andere Teile eines Betriebssystems. Linus Torvalds begann mit dem Schreiben, indem er Andrew Tanenbaums MINIX Template OS-Kernel nahm und vervollständigte, so dass es ein ausgewachsener und wirklich funktionsfähiger Kernel war. Bis heute gibt es Linus (und viele andere, die dazu beitragen / beigetragen haben), die diesen Kernel entwickeln. Dieser Kernel ist UNIX immer noch sehr ähnlich, aber KEIN UNIX-Kernel.
"GNU" wurde als Initiative gestartet, um viele gängige UNIX-Befehle zu "verbessern". Ich werde nicht diskutieren, ob sie erfolgreich waren oder nicht, aber sie haben definitiv viel Software geschrieben und hatten irgendwann eine Sammlung von Hilfsprogrammen. Sie begannen sogar, einen eigenen OS-Kernel (HURD) zu entwickeln, der weitgehend auf UNIX basierte, aber definitiv anders war. Aber bis heute ist HURD in seiner frühen Entwicklung und kaum eine funktionierende Lösung. "GNU" übrigens. ist die Abkürzung für "GNU (is) Not UNIX" - sie haben versucht, einige (wahrgenommene oder reale) Einschränkungen von UNIX zu überwinden, um einen Nachfolger für UNIX zu schaffen (wieder: Ich möchte nicht an der Diskussion teilnehmen, wenn sie erfolgreich waren oder nicht - es ist mir egal, ob es "besser" oder "schlechter" ist, aber es ist definitiv anders!).
Bei einer Reihe von Tools ohne Kernel und einem Kernel ohne Toolset war es eine natürliche Entwicklung, diese beiden zusammenzufügen: GNU / Linux wurde erstellt.
Um ein funktionierendes (und funktionsfähiges) Betriebssystem zu haben, benötigen Sie jedoch mehr als nur einen Kernel und ein Toolset: Sie benötigen ein Paketverwaltungssystem, Sie benötigen Installationsverfahren, Sie benötigen Vorlagenkonfigurationen, Sie benötigen ...
Mehrere verschiedene Personen (oder Gruppen davon) kamen zu diesem Schluss und verwendeten die GNU / Linux-Kombination, um ein GNU / Linux-System nach ihren Wünschen zu erstellen, indem sie genau die Dinge hinzufügten, über die ich oben gesprochen habe: Sie erstellten einen Paketmanager, ein Verpackungssystem , Installationsverfahren und was mehr. Diese verschiedenen Gruppen (bzw. die Ergebnisse ihrer Bemühungen) sind die verschiedenen Verteilungen. Heute gibt es drei verschiedene Paketmanager (passend für Debian und abgeleitete Systeme wie * ubuntu, rpm für RedHat und abgeleitete Systeme wie Fedora, CentOS und mehr, pacman für ArchLinux), aber alle diese verwalten nur Softwarepakete, die (im Wesentlichen) das gleiche: was heißt, wenn Sie "ls" oder "df" usw. ausgeben,
"Im Prinzip" können Sie also den Kernel alleine aktualisieren, so wie es die Leute getan haben, die eine Distribution aus verschiedenen Versionen aller oben genannten Software erstellt haben.
Aber, und das ist ein wirklich großes ABER: weil es nicht nur den Kernel und einige zusätzliche Software gibt, sondern auch viele andere Dinge, die zu beachten sind, wie Systemkonfigurationstools (systemd, die einige Distributionen verwenden und andere nicht), Netzwerk Management-Tools wie NetworkManager, die wiederum von einigen Versionen der GNOME-Bibliothek usw. usw. abhängen - eine "Distribution" ist eine ziemlich komplexe Sache, und wenn Sie versuchen, den Kernel zu aktualisieren, werden Sie wahrscheinlich viele aktualisieren andere Dinge wegen der vielen Abhängigkeiten.
Trotzdem und auch "im Prinzip" wie oben: Sie können auch Ihre eigene Distribution erstellen, indem Sie alle Quellen herunterladen, kompilieren, einen funktionierenden Satz von Versionskombinationen finden, ein Verpackungssystem einrichten (oder eines der vorhandenen verwenden) ) - und so weiter, bis Sie ein verteilbares, installierbares und konfigurierbares System haben. Dies ist, was die Entwickler von Distributionen wie Ubuntu tun, und es ist kein Wunder - nur eine Menge komplexer Arbeit. In Wirklichkeit scheuen die meisten Benutzer dies und verwenden etwas, das sie können, indem sie es verwenden.
Ich hoffe das beantwortet deine Frage.
quelle
Die einfachste Antwort hat nichts mit Ubuntu zu tun. Es hängt mit der Art und Weise zusammen, wie GNU / Linux erstellt wird. Wenn Sie versuchen, es als Systementwickler zu betrachten, sehen Sie zwei Welten, die jeweils durch einen scharfen Rand (ABI) getrennt sind.
Die Kernel-Welt, in der Low-Level-Entwickler arbeiten, ist ein eigenständiges System. Es hat alles, was Sie normalerweise in einer regulären Anwendung finden würden. Der einzige Unterschied besteht darin, dass der Benutzer nicht die tatsächliche Person ist, die die Maschine verwendet, sondern die Welt des Benutzerraums. Die "Anwendung" des Kernels ist der Middle-Man, der Server, der die Maschine verwendet - der Geist in der Shell.
Jetzt ist der Benutzerraum die normale Welt, auf der alltägliche Benutzer und Entwickler spielen. Es verfügt über starre APIs, Regeln, Dateien und vor allem über ein abstraktes, kindisches Image des Computers, auf dem es ausgeführt wird. Da der Benutzer nur diesen Teil sieht und dieser 99% der Verteilungsgröße ausmacht, kann er leicht als Betriebssystem falsch bezeichnet werden. Die richtige Nomenklatur besteht darin, es als Software-Distribution zu bezeichnen, die von einer Entität (Canonical, Fedora usw.) unter Verwendung eines Kernels (Linux, HURD, BSD usw.) erstellt und mit einer Reihe von Tools (normalerweise von GNU bereitgestellt) erstellt wurde ).
Um Ihre Frage zu beantworten, können Sie in GNU / Linux (genau wie in Windows und OSX, vertrauen Sie mir) den Kernel ändern, nicht nur die Version, sondern die gesamte Architektur (Linux-Kernel, vs HURD-Kernel) und solange Der ABI wird nicht berührt, nehmen Sie niemals eine einzige Änderung in der Benutzerwelt vor ... Früher, als der echte Mann den Kernel aus Quellen erstellen musste, konnten Sie mehrere Änderungen wie diese vornehmen, um eine beschissene USB-Webcam zu erhalten um zu arbeiten ... Jetzt müssen Sie mit dem modularen Kernel nur noch ein Modul installieren und erhalten eine brandneue Kernelwelt, in der der ABI (manchmal) um neue Funktionen erweitert wird ...
Wieder das gleiche für den Userspace. Wenn Sie eine neue Anwendung installieren, beispielsweise aus einem Ubuntu-Repository, besteht Ihre größte Sorge in 99% der Fälle in der Kompatibilität der anderen Userspace-Komponenten und nicht des eigentlichen Kernels. Es gibt Fälle, in denen die Kernel-Version (über ABI) den Umfang der Dinge vorschreibt, die im Benutzerbereich installiert werden können, aber das Ziel (zumindest für die Entwickler) ist es, dies zu beseitigen ...
Eine andere Sache, über die Sie nachdenken sollten: Sie können (und es ist ziemlich einfach) Ihre eigene, spezielle, einzigartige GNU / Linux-Distribution erstellen. Holen Sie sich einen Kernel, einige einfache Skripte, mehrere Apps und schon sind Sie fertig. Es ist einfach so einfach (werfen Sie einen Blick auf die OpenWRT GNU / Linux-Distributionen, für Netzwerkgeräte passt die gesamte Distribution in etwa 16 MB).
quelle
Ich denke, sie werden getrennt gehalten, weil der Kernel ein kritischer Teil ist. Ein Kernel mit einer Regression oder nur einem fehlgeschlagenen Update kann ziemlich viel Schaden anrichten. Möglicherweise möchten Sie es weniger häufig aktualisieren. oder erst, nachdem Sie einige Zeit gewartet haben, um sicherzustellen, dass niemand besorgniserregende Fehler meldet.
Einige fortgeschrittene oder professionelle Benutzer kompilieren den Kernel neu, um sein Verhalten an ihre Bedürfnisse anzupassen. In diesem Fall möchten Sie natürlich nicht, dass es bei jedem Upgrade automatisch durch die Werksversion ersetzt wird.
quelle