Jeśli chodzi o dowolny system operacyjny Linux, w tym Ubuntu, ludzie mają tendencję do rozróżniania terminów jądro i system operacyjny . Jest to poprawne w przypadku systemu Windows i rodziny OS X, ale dlaczego jest tak rozpowszechniony wśród społeczności Linux? Czy istnieje sposób na aktualizację jądra systemu operacyjnego bez aktualizacji samego systemu operacyjnego? Lub odwrotnie? Jeśli tak, jak może to być przydatne?
9
Odpowiedzi:
Cały system GNU / Linux jest zbudowany przy użyciu podejścia modułowego. Przeważnie możesz ulepszyć ( wymienić ogólnie) pojedynczy moduł bez dotykania innych. Omawiany moduł może być bootloaderem, jądrem, powłoką, poleceniem, środowiskiem graficznym, aplikacją GUI, czymkolwiek…
Oczywiście jest to prawdą, o ile jesteś w stanie poprawnie zarządzać zależnościami. W zestawie dystrybucji wokół Ubuntu APT służy do automatycznego rozwiązywania zależności.
Możesz zainstalować inną wersję jądra za pomocą polecenia:
Tak długo, jak pozwala na to APT, powinieneś być w stanie zrestartować się i używać wybranej wersji jądra, niezależnie od tego, czy jest to wersja ogólna, lowlatency itp. Albo sam zbudujesz wersję jądra, np. Real-Time Linux i używasz go z bieżącym systemem .
źródło
/etc/issue
dostarczonym przezbase-files
pakiet. Jak już pisałem, nie ma to związku z wersją jądra.Jak wiadomo Kernel jest ważną częścią systemu operacyjnego, w dystrybucjach GNU / Linux można łatwo aktualizować jądro bez dotykania innej części systemu operacyjnego. Jednak po prostu aktualizujemy część naszego systemu operacyjnego.
System operacyjny składa się z dwóch części: przestrzeni jądra i przestrzeni użytkownika.
Tak, możesz zaktualizować przestrzeń jądra bez dotykania przestrzeni użytkownika, jeśli tylko nowa wersja jest kompatybilna z bieżącą przestrzenią użytkownika.
A jeśli chodzi o aktualizację narzędzi przestrzeni użytkownika, to kolejne tak.
Kiedy biegniesz:
Jeśli dostępna była aktualizacja jądra, otrzymasz:
więc aktualizujesz tylko przestrzeń użytkownika i uruchamiasz coś takiego
aktualizujesz wszystko, łącznie z jądrem.
Aby zaktualizować tylko jądro do nowszej wersji, użyj czegoś takiego:
aby znaleźć listę nowszych jąder, a następnie zainstaluj ją jako nowy pakiet, na przykład:
źródło
sudo apt upgrade
zaktualizuje także jądro, jeśli są dostępne nowe wersje.sudo apt full-upgrade
dobrze usunie pakiety, coasudo apt upgrade
nie zrobisz.upgrade
podkomendy nie instaluje on żadnego nowego pakietu, nie usuwa również żadnych pakietów, dlatego używamydist-upgrade
. przynajmniejapt-get
działa w ten sposób;) więc zaktualizowałem moje polecenia, aby zapobiec nieporozumieniom.apt
poleceniem, po krótkim badaniu wydaje się, że twoja odpowiedź jest teraz poprawnaapt
i radzęapt-get
sobie z tym inaczej, patrz hiroom2.com/2016/05/20/ubuntu-16-04-debian-8-apt -polecenie /… . Tak więc trochę wiedzy dla nas obu ...Najpierw kilka wyjaśnień, ponieważ czuję, że nie rozumiesz, jak powstały systemy GNU / Linux. Miejcie ze sobą, jeśli nie jest to dla was nic nowego:
„Jądro” to nie tylko kolejny program, który działa, ale jest to część systemu operacyjnego zapewniająca podstawowe funkcje: jeśli chcesz uruchomić program (powiedzmy, że wpisujesz „ls” w wierszu poleceń), plik binarny musi zostać załadowany z dysku (który obejmuje niektóre operacje systemu plików w celu zlokalizowania go i pewne operacje na plikach w celu jego odczytania), następnie tworzone jest „środowisko procesowe”: pamięć jest przydzielana, wydawany jest numer procesu itp. itd. Wszystkie poprzednie działania (FS, odczyt z pliku, ...) są obsługiwane przez biblioteki systemowe, ale te ostatnie są funkcjami jądra. W pewnym sensie jądro „jest systemem operacyjnym”, a wszystko inne to tylko dekoracja wokół niego.
„Linux” jest w rzeczywistości (tylko!) Jądrem bez innych części systemu operacyjnego. Linus Torvalds zaczął pisać go, biorąc jądro Andrew OS Tanenbaumsa MINIX i uzupełniając go tak, aby było pełnowartościowym i naprawdę sprawnym jądrem. Do dnia dzisiejszego Linus (i wielu innych, którzy współuczestniczą / wnieśli swój wkład), którzy rozwijają to jądro. To jądro jest nadal bardzo podobne do UNIX, ale NIE JEST jądro UNIX.
„GNU” powstało jako inicjatywa „ulepszenia” wielu popularnych komend UNIX. Nie będę dyskutować, czy im się udało, czy nie, ale na pewno napisali dużo oprogramowania i kiedyś mieli zbiór programów narzędziowych. Zaczęli nawet opracowywać własne jądro systemu operacyjnego (HURD), które opierało się głównie na systemie UNIX, ale było zdecydowanie inne. Ale do dnia dzisiejszego HURD jest na wczesnym etapie rozwoju i prawie nie działa. „GNU” btw. jest skrótem od „GNU (is) Not UNIX” - próbowali przezwyciężyć niektóre (postrzegane lub rzeczywiste) ograniczenia UNIX-a z zamiarem stworzenia następcy UNIX-a (ponownie: nie chcę wchodzić w dyskusję, jeśli się powiedzie lub nie - nie obchodzi mnie, czy jest to „lepsze” czy „gorsze”, ale zdecydowanie jest inne!).
Tak więc, z zestawem narzędzi pozbawionych jądra i jądrem pozbawionym zestawu narzędzi, naturalnym rozwiązaniem było połączenie tych dwóch elementów: GNU / Linux.
Mimo to, aby mieć działający (i działający) system operacyjny, potrzebujesz czegoś więcej niż tylko jądra i zestawu narzędzi: potrzebujesz systemu zarządzania pakietami, procedur instalacji, konfiguracji szablonów, potrzebujesz ...
Kilka różnych osób (lub ich grup) doszło do tego wniosku i wykorzystało kombinację GNU / Linux do stworzenia systemu GNU / Linux, który im się podoba, dodając dokładnie to, o czym mówiłem powyżej: stworzyli menedżera pakietów, system pakowania , procedury instalacji i co więcej. Te różne grupy (odpowiednio wyniki ich wysiłków) są tym, czym są różne rozkłady. Obecnie istnieją trzy różne menedżery pakietów (odpowiednie dla Debiana i systemów pochodnych, takich jak * ubuntu, rpm dla RedHat i systemów pochodnych, takich jak Fedora, CentOS i więcej, pacman dla ArchLinux), ale wszystkie one po prostu zarządzają pakietami oprogramowania, które jest (zasadniczo) to samo: jak się nazywa, gdy wydajesz „ls” lub „df” itp.,
Tak więc „w zasadzie” możesz aktualizować jądro samodzielnie, tak jak ludzie, którzy stworzyli dystrybucję z różnych wersji całego oprogramowania, o którym mówiłem powyżej.
Ale to jest naprawdę duże, ALE: ponieważ jest nie tylko jądro i dodatkowe oprogramowanie, ale wiele innych rzeczy, o których należy pamiętać, takich jak narzędzia do konfiguracji systemu (systemd, z których niektóre dystrybucje korzystają, a niektóre nie), sieć narzędzia do zarządzania, takie jak NetworkManager, który z kolei zależy od niektórych wersji biblioteki GNOME itp. itd. - „dystrybucja” jest dość złożoną rzeczą i istnieje szansa, że jeśli spróbujesz zaktualizować jądro, zaktualizujesz wiele inne rzeczy z powodu wielu współzależności.
Mimo to, a także „w zasadzie”, jak wyżej: możesz również stworzyć własną dystrybucję, pobierając wszystkie źródła, kompilując je, znajdując działający zestaw kombinacji wersji, wdrażając system pakowania (lub wykorzystując jeden z istniejących) ) - i tak dalej, dopóki nie będzie można rozpowszechniać, instalować i konfigurować systemu. To właśnie robią twórcy dystrybucji, takich jak Ubuntu, i to nie jest cud - po prostu dużo złożonej pracy, więc w rzeczywistości większość użytkowników unika tego i używa czegoś, co jest gotowe do użycia.
Mam nadzieję, że to odpowiada na twoje pytanie.
źródło
Najprostsza odpowiedź nie ma nic wspólnego z Ubuntu; jest to związane ze sposobem budowania GNU / Linux. Jeśli spróbujesz spojrzeć na to jak na programistę systemu, zobaczysz dwa światy oddzielone ostrymi ramkami (ABI).
Świat jądra, w którym pracują programiści niskiego poziomu, jest systemem sam w sobie. Ma wszystko, co zwykle można znaleźć w zwykłej aplikacji. Jedyną różnicą jest to, że użytkownik nie jest faktyczną osobą korzystającą z maszyny, ale światem przestrzeni użytkownika. „Aplikacja” jądra to pośrednik, serwer korzystający z maszyny - duch w powłoce.
Teraz przestrzeń użytkownika to normalny świat, w którym bawi się każdy użytkownik i programista. Ma sztywne interfejsy API, reguły, pliki i, co najważniejsze, abstrakcyjny, dziecinny obraz komputera, na którym działa. Ponieważ użytkownik widzi tylko tę część, a to stanowi 99% wielkości dystrybucji, łatwo jest źle nazwać ją System operacyjny. Właściwą nomenklaturę można nazwać dystrybucją oprogramowania, utworzoną przez jakiś byt (Canonical, Fedora itp.), Za pomocą jądra (Linux, HURD, BSD itp.) I zbudowaną przy użyciu zestawu narzędzi (zwykle dostarczanych przez GNU ).
Aby odpowiedzieć na twoje pytanie, w GNU / Linux (tak jak w Windows i OSX, zaufaj mi), możesz zmienić jądro, nie tylko wersję, ale całą architekturę (jądro Linux, jądro HURD) i tak długo, jak długo ABI nie jest dotknięty, nigdy nie dokonaj żadnej zmiany w świecie użytkowników ... W czasach, gdy prawdziwy człowiek musiał zbudować jądro ze źródeł, możesz przejść kilka takich zmian, aby uzyskać kiepską kamerę internetową USB pracować ... Teraz z modułowym jądrem wystarczy zainstalować moduł, a otrzymasz zupełnie nowy świat jądra, z ABI (czasem) rozszerzonym o nowe funkcje ...
Znowu to samo dla przestrzeni użytkownika. Kiedy instalujesz nową aplikację, powiedzmy, z repozytorium Ubuntu, w 99% przypadków, Twoim największym problemem jest kompatybilność innych komponentów przestrzeni użytkownika, a nie samego jądra. Są przypadki, w których wersja jądra dyktuje (poprzez ABI) zakres rzeczy, które można zainstalować w przestrzeni użytkownika, ale celem (przynajmniej dla programistów) jest to, aby odejść ...
Kolejną rzeczą do rozważenia jest to, że możesz (i jest to dość łatwe) zbudować własną, specjalną, jedyną w swoim rodzaju dystrybucję GNU / Linux. Zdobądź jądro, kilka prostych skryptów, kilka aplikacji i gotowe. To takie proste (spójrz na dystrybucje OpenWRT GNU / Linux, dla sprzętu sieciowego, cała dystrybucja mieści się w około 16 Mb lub więcej).
źródło
Sądzę, że są trzymane osobno, ponieważ jądro jest kluczową częścią. Jądro z regresją lub po prostu nieudaną aktualizacją może wyrządzić sporo szkód. Możesz chcieć aktualizować go rzadziej; lub dopiero po pewnym czasie, aby upewnić się, że nikt nie zgłasza niepokojących błędów.
Również niektórzy zaawansowani lub profesjonalni użytkownicy ponownie kompilują jądro, aby zmodyfikować jego zachowanie, aby lepiej odpowiadało ich potrzebom. W takim przypadku oczywiście nie chcesz, aby była automatycznie zastępowana wersją fabryczną przy każdej aktualizacji.
źródło