Najnowsze jądro Linuksa. Budowanie jądra w Ubuntu. Instrukcja krok po kroku. Skąd pobrać jądro Linux
Od dawna chciałem napisać artykuł o tym, jak zbudować jądro Linuksa. A teraz nadszedł ten moment.
Właściwie, po co budować jądro, jeśli dystrybucja zapewnia doskonale użyteczne jądro?
Na przykład w celu wykorzystania najnowszych sterowników i rozwiązań dostarczonych w nowym jądrze, gdy tylko stara gałąź jest dostępna w dystrybucji. Na przykład, aby dostosować go do swojego sprzętu i trochę przyspieszyć pracę. 3.11 zrobiłem dla siebie, ponieważ zawiera zestaw łatek usprawniających pracę z kartami graficznymi ATI, a jestem posiadaczem jednej z nich.
Napisano wiele artykułów o asemblerze jądra, więc nie będę wdawał się w szczegóły, a jedynie napiszę, jak sam składam jądro.
Przede wszystkim musisz pobrać archiwum z kodami źródłowymi żądanej wersji jądra Linux.
Na stronie https://www.kernel.org/ możesz pobrać żądaną wersję. Opiszę proces budowania i instalacji na przykładzie wersji 3.11.0.
Wskazane jest zbudowanie jądra w katalogu specjalnie stworzonym do tego celu pod nieuprzywilejowanym użytkownikiem. Kompiluję w folderze ~src/linux/wersja-linux
Przed kompilacją upewnij się, że wszystkie zależności niezbędne do kompilacji są zainstalowane i że w katalogu kompilacji jest około 3 GB wolnego miejsca.
Oto lista pakietów do pomyślnej kompilacji (dla Debiana/Ubuntu):
gcc, robić- Niezbędne narzędzia do montażu i łączenia. Najlepiej jedna z najnowszych dostępnych wersji gcc.
libncurses5-dev- potrzebne do działania menuconfig
cache- pozwala przyspieszyć ponowny montaż
Jeśli chcesz użyć graficznego konfiguratora jądra, powinieneś również zainstalować pakiety do rozwoju QT, na przykład libqt4-dev, g++, konfiguracja-pkg.
Lzop, lz4c- jeśli interesują Cię alternatywne mechanizmy kompresji jądra i initramfs.
Zakłada się, że bieżący katalog jest katalogiem rozpakowanego jądra.
Po przygotowaniu środowiska kompilacji należy wygenerować konfigurację jądra. Aktualną konfigurację można obejrzeć w następujący sposób:
Cat /boot/config-`uname -r`
Zcat /proc/config.gz
W zasadzie możesz użyć aktualnej konfiguracji, edytując ją w jednym z programów konfiguracyjnych. Skopiuj go do katalogu, w którym rozpakowano archiwum z jądrem i zmień jego nazwę na .config
cp /boot/config-`uname -r` .config
Lubię xconfig, uważam go za najwygodniejszy.
Utwórz xconfig
Poprzednio skopiowane jest ładowane automatycznie .config, który służy jako nasza baza do konfiguracji. Jest wiele wskazówek dotyczących konfiguracji jądra, polecam tylko wybór wersji procesora, wyłączenie sterowników sprzętowych, których tam nie ma, można również wybrać dodatkowe moduły, takie jak zram i algorytm kompresji, ja wybrałem lz4 jako najszybszy.
Po zapisaniu konfiguracji możesz rozpocząć kompilację.
Jeśli jesteś zbyt leniwy, aby ręcznie skonfigurować jądro, możesz dokonać automatycznej konfiguracji za pomocą informacji o załadowanych modułach: make localmodconfig
Teraz drugim głównym krokiem jest kompilacja jądra i modułów. Wykonywane w jednym poleceniu:
Make -j4 CC="ccache gcc" bzImage moduły
Gdzie -j4 odpowiada liczbie rdzeni procesora w Twojej konfiguracji.
Kompilacja nie potrwa długo, jeśli sprzęt jest wystarczająco wydajny, a konfiguracja jądra dystrybucji nie jest używana. Na moim laptopie z procesorem AMD Phenom P820 i sześcioma gigabajtami pamięci RAM kompilacja trwa około pół godziny.
Ostatnim krokiem jest zainstalowanie jądra i modułów.
Sudo sed -i.bak "s/MODULES=most/MODULES=dep/" /etc/initramfs-tools/initramfs.conf
Jest to konieczne w celu zmniejszenia rozmiaru pliku initrd poprzez uwzględnienie tylko modułów niezbędnych do załadowania.
Instalację można również wykonać jednym poleceniem:
sudo sprawiają, że moduły_instalacji są instalowane
Lub zainstaluj wszystko ręcznie. Najpierw moduły
sudo make modules_install
Następnie rdzeń
Wersja=`awk "NR<=3 {printf "%s.",$NF}" < Makefile | sed "s/\.$//"`
w ten sposób otrzymujemy wersję jądra z Makefile
sudo cp arch/`uname -m`/boot/bzImage /boot/vmlinuz-$version sudo cp .config /boot/config-$version sudo cp System.map /boot/System.map-$version sudo update-initramfs - c -k $wersja sudo update-grub
Na koniec dołączam skrypt automatyzujący proces.
Podczas konfiguracji konfiguracji może zadać kilka pytań, aby domyślnie odpowiedzieć, wystarczy nacisnąć Enter.
Szczęśliwa kompilacja.
Dlaczego ktoś miałby chcieć skompilować nowe jądro? Często nie jest to konieczne, ponieważ domyślne jądro dostarczane z Debianem obsługuje większość konfiguracji. Ponadto Debian często oferuje kilka alternatywnych jąder. Więc możesz chcieć najpierw sprawdzić, czy istnieje alternatywny pakiet obrazu jądra, który lepiej odpowiada twojemu sprzętowi. Jednak może być przydatne skompilowanie nowego jądra w celu:
Nie bój się kompilować jądra. To zabawne i opłacalne.
Aby skompilować jądro w sposób Debiana, potrzebujesz kilku pakietów: i kilku innych, które prawdopodobnie są już zainstalowane (zobacz pełną listę).
Ta metoda utworzy plik .deb źródła jądra, a jeśli masz niestandardowe moduły, utworzy również zsynchronizowany zależny plik .deb. Jest to lepszy sposób zarządzania obrazami jądra; będzie przechowywać jądro, System.map i dziennik aktywnego pliku konfiguracyjnego dla kompilacji.
Pamiętaj, że nie mieć skompilować jądro w „sposób Debiana”; ale okazuje się, że używanie systemu pakietów do zarządzania jądrem jest w rzeczywistości bezpieczniejsze i łatwiejsze. W rzeczywistości możesz pobrać źródła jądra bezpośrednio z Linusa zamiast z , ale nadal używać metody kompilacji.
Pamiętaj, że pełną dokumentację dotyczącą używania znajdziesz pod adresem . Ta sekcja zawiera tylko krótki samouczek.
W dalszej części założymy, że masz wolną rękę nad swoją maszyną i wypakujesz źródła jądra gdzieś w twoim katalogu domowym. Zakładamy również, że wersja twojego jądra to 3.16. Upewnij się, że jesteś w katalogu, w którym chcesz rozpakować źródła jądra, rozpakuj je za pomocą i przejdź do katalogu, który zostanie utworzony.
Teraz możesz skonfigurować swoje jądro. Uruchom, jeśli X11 jest zainstalowane, skonfigurowane i uruchomione; uruchom inaczej (musisz zainstalować). Poświęć trochę czasu na przeczytanie pomocy online i dokonaj starannego wyboru. W razie wątpliwości zazwyczaj lepiej jest dołączyć sterownik urządzenia (oprogramowanie, które zarządza sprzętowymi urządzeniami peryferyjnymi, takimi jak karty Ethernet, kontrolery SCSI itd.), którego nie jesteś pewien. Bądź ostrożny: inne opcje, niezwiązane z konkretnym sprzętem, należy pozostawić z wartością domyślną, jeśli ich nie rozumiesz. Nie zapomnij wybrać "Ładowarki modułów jądra" w "Obsługa modułów ładowalnych" (domyślnie nie jest zaznaczone). Jeśli nie zostanie uwzględniony, instalacja Debiana będzie miała problemy.
Wyczyść drzewo źródłowe i zresetuj parametry. Aby to zrobić, zrób.
Teraz skompiluj jądro: . Numer wersji „1.0” można dowolnie zmieniać; jest to tylko numer wersji, którego będziesz używać do śledzenia kompilacji jądra. Podobnie możesz umieścić dowolne słowo w miejscu „niestandardowe” (np. nazwę hosta). Kompilacja jądra może zająć trochę czasu, w zależności od mocy twojego komputera.
Po zakończeniu kompilacji możesz zainstalować własne jądro jak każdy pakiet. Jako root wykonaj . Część jest opcjonalną pod-architekturą, w zależności od ustawionych opcji jądra. zainstaluje jądro wraz z kilkoma innymi ładnymi plikami pomocniczymi. Na przykład, zostanie poprawnie zainstalowany (pomocny przy debugowaniu problemów z jądrem) i zostanie zainstalowany, zawierający aktualny zestaw konfiguracyjny. Twój nowy pakiet jądra jest również wystarczająco sprytny, aby automatycznie aktualizować program ładujący, aby używał nowego jądra. Jeśli utworzyłeś pakiet modułów, musisz również zainstalować ten pakiet.
Nadszedł czas na ponowne uruchomienie systemu: przeczytaj uważnie wszelkie ostrzeżenia, które mogły spowodować powyższy krok, a następnie .
Więcej informacji na temat jądra Debiana i kompilacji jądra można znaleźć w Podręczniku jądra Debiana Linux. Aby uzyskać więcej informacji na temat programu , przeczytaj szczegółową dokumentację w .
Jeśli pamiętasz, nie tak dawno nauczyliśmy się budować jądro FreeBSD ze źródeł. Pytanie brzmi, dlaczego nie nauczyć się robić tego samego z jądrem Linuksa? Powody budowania jądra Linuksa ze źródeł są generalnie takie same - uzyskanie najnowszej wersji jądra, pilne zastosowanie łatek bezpieczeństwa, optymalizacja pod kątem konkretnych zadań i konkretnego sprzętu, a także chęć wzięcia udziału w rozwoju jądra, nawet w roli QA.
Ważny! Postępowanie zgodnie z instrukcjami zawartymi w tym poście może spowodować utratę Twoich danych. Twórz kopie zapasowe i pamiętaj, że robisz wszystko na własne ryzyko i ryzyko. Wszystko opisane poniżej zostało przetestowane na Ubuntu 14.04 LTS. Ale w innych wersjach Ubuntu, a także w innych dystrybucjach Linuksa, różnice powinny być minimalne.
Konfigurowanie bootloadera
Edytuj /etc/default/grub w ten sposób:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=prawda
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i-s2>/dev/null ||echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="cichy plusk"
GRUB_CMDLINE_LINUX=""
Po edycji mówimy:
sudo update-grub
W rezultacie przed uruchomieniem systemu zostaniesz poproszony przez 10 sekund o wybranie jądra, z którym chcesz uruchomić system. Bardzo przydatne, jeśli pomieszałeś się z konfiguracją jądra i chcesz uruchomić system z poprzednią wersją!
Zainstaluj zależności
Będziemy potrzebować co najmniej następujących pakietów:
sudoapt-get installgitgccmakebc fakeroot dpkg-dev\
libncurses5-dev libssl-dev
Jednak w wielu systemach wszystkie z nich będą już obecne.
Uzyskiwanie źródła
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.6.4.tar.xz
tar-xz-xvf linux-4.6.4.tar.xz
cd linux-4.6.4
Lub, jeśli chcesz mieć najnowsze wersje, możesz pobrać źródło bezpośrednio z Git:
# Lustro: https://github.com/torvalds/linux
klon git'git://git.kernel.org/pub/scm/linux/kernel/git/'\
'torvalds/linux.git'
cd linux
Sądząc po tym, że nie mogłem znaleźć tagu v4.6.4 w Git, wydania jądra Linuksa są tworzone wyłącznie w postaci skompresowanych archiwów tar.
Jeśli zamiast jądra waniliowego chciałbyś zbudować jądro z łatami z Canonical:
klon git git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
cd ubuntu-zaufany
tag git|mniej
git kasa Ubuntu-lts-4.4.0-31.50_14.04.1
Z własnego doświadczenia, jeśli używasz Ubuntu, możesz bezpiecznie korzystać z jądra waniliowego. Jest mało prawdopodobne, że będziesz miał z tym jakiekolwiek problemy.
Notatka: Co ciekawe, z istniejących, stosunkowo popularnych dystrybucji Linuksa, jedynie Gentoo, Slackware i Arch Linux wydają się używać jądra bez własnych poprawek.
W każdym razie, teraz masz kod źródłowy.
Kompilacja i instalacja jądra
Wybierz opcje, z którymi zostanie zbudowane jądro:
W razie potrzeby zmień ustawienia, kliknij Zapisz, a następnie Zakończ. W efekcie powstanie plik zawierający wybrane przez nas parametry.
Na aktualizacja kernel (czy już używasz jakiegoś jądra?) wygodnie jest wziąć konfigurację bieżącego jądra i ustawić nowe opcje na ich domyślne wartości:
zcat/proc/config.gz > ./.config
utwórz olddefconfig
Na koniec zbieramy:
make-j4 bindeb-pkg LOCALVERSION=-custom
Rdzeń montowany jest dość długo. Na moim laptopie montaż trwał 1 godzinę i 15 minut. Jednak od tego czasu o Resztę poświęca się na budowanie gigantycznego pakietu jądra z symbolami debugowania.
Ręczna budowa i konfiguracja jądra Linux
Składanie tego pakietu może zostać wyłączone przez zakomentowanie parametru CONFIG_DEBUG_INFO w konfiguracji. Pamiętaj tylko, że ten pakiet jest wymagany przez SystemTap i inne przydatne narzędzia.
Oprócz samego jądra możesz również zbierać dokumentację:
# jest też `make pdfdocs` i inne, zobacz `make help`
tworzyć htmldocs
Dokumentacja przeglądarki chromium/DocBook/index.html
Po zakończeniu montażu pomocniczy katalog widzimy coś takiego:
linux-firmware-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-headers-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom-dbg_4.4.13-custom-1_amd64.deb
linux-libc-dev_4.4.13-custom-1_amd64.deb
Umieszczamy wszystkie pakiety deb z wyjątkiem wersji dbg jądra ze zwykłymi i restartujemy. Po ponownym uruchomieniu patrzymy na dane wyjściowe polecenia. Upewniamy się, że naprawdę uruchomiliśmy nowe jądro. Jeśli coś jest nie tak z nowym jądrem, w bootloaderze po prostu wybieramy to, z którego system był wcześniej uruchamiany. Po uruchomieniu ze starym jądrem szybko usuwamy pakiety nowego jądra i voila - system wrócił do poprzedniego stanu.
Dodatkowo po załadowaniu nowego jądra możesz uruchomić na nim testy:
sudomake kselftest
sudomake kselftest-clean
Gratulacje, wiesz już, jak zbudować jądro Linuksa!
Wniosek
Materiały na temat wnętrza jądra Linux:
- KernelNewbies.org, witryna dla początkujących w jądrze Linuksa z własną listą dyskusyjną, kanałem IRC, forum, wiki i nie tylko;
- LKML.org, strona umożliwiająca wygodne czytanie listy dyskusyjnej programistów jądra Linuksa przez przeglądarkę. Uważaj, często psuje to formatowanie liter! W tym sensie archiwum list dyskusyjnych na marc.info jest znacznie lepsze;
- Linux Cross Reference, witryna umożliwiająca wygodne odczytywanie kodu jądra systemu Linux przez przeglądarkę;
- Książka Linux Kernel Development, 3rd Edition to najnowsza książka na temat jądra Linuksa w języku angielskim (2010, jądro 2.6.x), jest tłumaczona na język rosyjski;
- Książka Linux-Treiber entwickeln, 4th Edition jest nowsza (2015, kernel 4.x), ale jest napisana w języku niemieckim i nie ma tłumaczenia;
- Bezpłatna książka Linux Insides autorstwa Alexandra Kuleshov a.k.a @0xAX wygląda na najbardziej dostępną i aktualną, ale obecnie jest w trakcie pisania;
- Czasami możesz znaleźć coś przydatnego w Linux Kernel HTML Documentation, oficjalnej dokumentacji ze źródeł jądra Linux;
- Przykłady do książki Linux Device Drivers, 3rd Edition, która stara się być na bieżąco, plus źródła dla czwartej edycji, która jest w trakcie pisania;
Czy budujesz jądro ze źródeł, a jeśli tak, to dlaczego?
Dodatek: Możesz być także zainteresowany artykułem Skandaliczna prawda o debugowaniu kodu jądra w systemie Linux.
Tagi: Linux, Ring0.
Kompilacja jądra Linux
Jak zbudować jądro Linuksa? Budowanie jądra LinuxTak więc, jeśli nadal potrzebujesz mieć własne jądro, zacznijmy kompilować!
Jeśli masz już zainstalowany serwer X (komputer domowy), możesz przejść do witryny w ulubionej przeglądarce i pobrać żądaną wersję w archiwum tar.gz (skompresowanym gzip). Jeśli pracujesz w konsoli (na przykład nie masz jeszcze zainstalowanego serwera X lub konfigurujesz serwer), możesz użyć przeglądarki tekstowej (na przykład elinki). Możesz także użyć standardowego menedżera pobierania wget:
Konfiguracja jądra. Kompilacja.
|
maj 2017
Marzec 2017
kwiecień 2016
Marzec 2016
Październik 2013
wrzesień 2013
Maj 2013
Marzec 2013
Listopad 2012
lipiec 2012
czerwiec 2012
kwiecień 2012
Marzec 2012
Luty 2012
kwiecień 2011
Marzec 2011
Luty 2011
styczeń 2011
grudzień 2010
Listopad 2010
Październik 2010
wrzesień 2010
Sierpień 2010
lipiec 2010
czerwiec 2010
maj 2010
kwiecień 2010
Marzec 2010
Losowy:
Wirtualne planetarium Stellarium: przegląd nowych funkcji
BOINC: obliczenia dla nauki
Gambas: Podstawowy rozwój na Linuksie
Schematy szeregowe SSH 2.0
Linuxnow.ru: Plany na przyszłość
Nagle kończy Ci się wolne miejsce na dysku? Być może problem tkwi w logach.
Koledzy: wszyscy
Linux dla każdego
Nasze banery:
Ustaw baner
Konfiguracja jądra Linux
Sprawdzanie pakietów źródłowych
Ponowna kompilacja jądra wymaga jego źródeł.
Blog o administracji systemem. Artykuły o Linux, Windows, pamięci NetApp i wirtualizacji.
Red Hat umieszcza źródła jądra w pojedynczym pakiecie rpm, ale nie jest instalowany domyślnie. Nazwa tego pakietu:
kernel-source-2.4.2-2.1386.rpm
Oprócz kodu źródłowego, aby ponownie skompilować jądro, potrzebujesz kompilatora, który składa się z dwóch komponentów:
uczynić użyteczność;
kompilatorem samego języka C jest gcc lub egcs.
Tworzenie kopii zapasowej aktualnego jądra odbywa się w trzech etapach:
1. Utworzenie kopii zapasowej źródeł jądra, która pozwala na jej przywrócenie w przypadku uszkodzenia konfiguracji.
2. Utworzenie kopii zapasowej samego jądra jako znanego sposobu działania uruchamiania systemu.
3. Utworzenie nowego wpisu dla programu ładującego systemu operacyjnego, za pomocą którego można uruchomić system z kopii zapasowej jądra.
Tworzenie kopii zapasowej źródła odbywa się poprzez skopiowanie katalogu źródeł jądra na dysk. Odzyskiwanie odbywa się poprzez kopiowanie w przeciwnym kierunku.
Kiedy jądro jest rekompilowane, stare jądro jest zapisywane do pliku z rozszerzeniem .old. Jednak ta kopia jądra nie może być jeszcze użyta do uruchomienia systemu. To wyjaśnia konieczność wykonania powyższych operacji.
Program ładujący system operacyjny typu LILO, powszechnie używany do uruchamiania Linuksa, jest konfigurowany przez dowiązanie do pliku jądra w głównym systemie plików.
Po utworzeniu kopii zapasowej jądra, musisz dodać kolejny wpis do pliku /etc/lilo.conf, aby umożliwić uruchomienie Linuksa ze starym jądrem:
otwórz plik /etc/lilo. conf w edytorze tekstu
utwórz kopię całej partycji;
zmień dwie pozycje w kopii:
zamień nazwę pliku jądra na nazwę jego kopii zapasowej (wraz z rozszerzeniem);
zamień etykietę partycji na coś takiego jak linux. oryginalny (oryginalny Linux) lub linux-poprzedni (stary Linux).
wiersze rozpoczynające się od initrd należy zastąpić odpowiednimi wartościami zastępczymi, takimi jak initrd-2 .4.2-2. oryg. obraz;
zapisz zmiany w /etc/lilo. por.
wpisz polecenie /sbin/lilo, aby wprowadzić nowy wpis w bootloaderze. Po uruchomieniu polecenia lilo na ekranie wyświetlane są etykiety obrazów wprowadzonych do programu ładującego systemu operacyjnego.
Następnym razem, gdy system zostanie ponownie uruchomiony, nowy identyfikator jądra zostanie wyświetlony w podpowiedzi programu ładującego LILO.
Konfiguracja nowego jądra
Konfiguracja decyduje, które funkcje należy uwzględnić w jądrze, a których nie, i tak dalej. Możesz wybrać pomiędzy konfiguracją starego jądra a instalacją/konfiguracją nowego. Na przykład, używając Red Hat Linux 7.1, możesz ponownie skonfigurować istniejące jądro 2.4.2 z nowymi opcjami. Możesz także pobrać i zainstalować nowe jądro 2.4.4. Chociaż szczegóły konfiguracji różnią się w obu przypadkach, użyte narzędzia i sama metodologia konfiguracji są takie same.
Linux ma trzy oddzielne narzędzia konfiguracyjne, z których każde ma swoją własną charakterystykę.
Narzędzie z interfejsem wiersza poleceń. Użytkownik konsekwentnie odpowiada na pytania dotyczące funkcji, które należy uwzględnić w jądrze. To narzędzie jest przydatne dla tych, którzy wiedzą, jak pracować z jądrem i dla tych, którzy mają skrypty konfiguracyjne dla tego narzędzia.
Narzędzie z menu trybu tekstowego. Wielopoziomowe menu tego narzędzia umożliwia ustawienie i ponowną instalację parametrów jądra w dowolnej kolejności.
Narzędzie GUI. Jest to najbardziej atrakcyjne narzędzie, ale działa tylko w graficznym systemie X Window.
Wymienione narzędzia tworzą ten sam plik konfiguracyjny, który jest używany przez narzędzie make podczas kompilowania pełnego lub częściowego jądra.
Opcje jądra
Przeglądając ustawienia w dowolnym programie konfiguracyjnym (wiersz poleceń, tekstowy lub GUI), musisz jasno określić wpływ tych ustawień na działanie jądra.
Identyfikacja parametrów w każdym programie jest inna, ale we wszystkich trzech prezentowany jest ten sam zestaw. Parametry podzielone są na dwie główne grupy:
modułowy;
niemodułowy.
Jeśli blok programu odpowiadający temu parametrowi nie jest załadowany jako moduł jądra, może to być jedna z dwóch rzeczy:
[*] integralna część jądra;
Integralna część jądra.
Znaki w nawiasach kwadratowych (wraz z nawiasami) odpowiadają etykietom opcji w menu programów konfiguracyjnych (z wyjątkiem narzędzia wiersza poleceń).
W przypadku parametrów modułowych istnieją trzy opcje ustawienia (zgodnie z ich reprezentacją w menu narzędzi konfiguracyjnych):
<>nie jest zawarty w jądrze i nie jest tworzony jako moduł, który można załadować później:
<*>jest zawarty w jądrze, więc nie ma potrzeby późniejszego ładowania go jako modułu:
<М>Dołączone jako moduł, ale nie jako część jądra. Blok można zainstalować lub usunąć z jądra w dowolnym momencie.
Czasami wartości parametru nie można zmienić, dopóki nie zostanie ustawiony inny parametr. Na przykład możesz zainstalować obsługę określonego urządzenia SCSI dopiero po włączeniu obsługi tych urządzeń w ogóle.
Kiedy niezbędne narzędzia (narzędzie make i kompilator gcc) oraz teksty źródłowe są zainstalowane w systemie, możesz uruchomić jedno z narzędzi konfiguracyjnych i rozpocząć konfigurację jądra.
Konfigurator GUI
Uruchamianie narzędzia konfiguracyjnego z interfejsem graficznym odbywa się w następującej kolejności.
Uruchom system X Windows (z dowolnym środowiskiem graficznym i pulpitem).
Otwórz okno emulatora terminala (okno wiersza poleceń).
Podobnie jak w przypadku uruchomienia poprzedniego narzędzia, na ekranie pojawi się kilka komunikatów o kompilacji narzędzia, a po kilku minutach otworzy się jego główne okno.
Ryż. 8. Narzędzie konfiguracyjne jądra z interfejsem graficznym: przyciski menu do ustawiania wartości parametrów
Narzędzie graficzne nie różni się zbytnio od narzędzia menuconf ig. Tutaj opcje są również podzielone na kategorie; kliknięcie określonej kategorii otwiera okno dialogowe z listą opcji, z których każda może być ustawiona na wartość określającą, czy odpowiednie narzędzie powinno być używane jako część jądra, jako ładowalny moduł, czy wcale.
Takie okno dialogowe pokazano na ryc.
Ryż. 9. Okna dialogowe, takie jak ten, ustawiają opcje konfiguracji jądra
Jądro 2.4.2 w systemie Red Hat Linux domyślnie obsługuje symetryczną architekturę wieloprocesorową. Musisz ustawić odpowiednią opcję na n, jeśli twój komputer ma tylko jeden procesor.
Po prawej stronie każdej opcji znajduje się przycisk Pomoc.
Dużą zaletą graficznego narzędzia konfiguracyjnego (szczególnie dla początkujących konfiguratorów jądra) jest to, że menu wyświetla zależności między różnymi opcjami. Na przykład w sekcji Blokuj urządzenia nie można zainstalować obsługi RAID wbudowanej w jądro, dopóki nie zostanie włączona opcja Obsługa wielu sterowników urządzeń.
Jeśli w narzędziu menuconfig zależność parametrów od siebie jest pokazana przez wcięcie nazw parametrów w menu, to w narzędziu graficznym ustawienie niedozwolonych kombinacji parametrów jest po prostu niemożliwe. Praca z narzędziem graficznym pomaga zrozumieć zależności między różnymi modułami.
Na końcu głównego menu narzędzia graficznego znajdują się polecenia podobne do odpowiednich poleceń narzędzia z menu trybu tekstowego.
Zapisz i wyjdź (wyjdź z zapisaniem). Utworzenie pliku konfiguracyjnego jądra i zamknięcie narzędzia.
Wyjdź bez zapisywania. Zamykanie narzędzia bez tworzenia pliku konfiguracyjnego jądra.
Bez utworzenia pliku konfiguracyjnego jądra przy użyciu jednego z wymienionych narzędzi, ponowna kompilacja jądra nie jest możliwa.
Załaduj konfigurację z pliku. Ładowanie utworzonego wcześniej pliku konfiguracyjnego.
Zapisz konfigurację do pliku. Zapisanie danych konfiguracyjnych do pliku o podanej nazwie (do dalszego wykorzystania lub przekazania koledze). Nie wpływa to na konieczność wykonania polecenia Save and Exit, które tworzy plik konfiguracyjny do rekompilacji jądra.
Kompilowanie i uruchamianie nowego jądra
Po zakończeniu konfiguracji należy sprawdzić, czy w katalogu /usr/src/linux-2 .4.2 znajduje się nowy plik konfiguracyjny (.config) (w zależności od numeru wersji). Jeśli plik konfiguracyjny .config jest na swoim miejscu, możesz użyć polecenia make, aby ponownie skompilować jądro.
Zazwyczaj ponowna kompilacja jądra trwa od 15 minut do kilku godzin. Zależy to od szybkości procesora, ilości pamięci RAM i wielu innych czynników, dlatego wygodnie jest połączyć wszystkie polecenia wprowadzone podczas kompilacji w jedno, oddzielone średnikiem, tak aby były wykonywane sekwencyjnie.
Rozpoczęcie procesu rekompilacji
Poniższe polecenia mają na celu utworzenie nowego jądra poprzez rekompilację wszystkich jego modułów i zapisanie ich w odpowiednich katalogach systemowych. (Tam będą dostępne dla poleceń jądra.)
Aby ponownie skompilować system, zostaną wprowadzone następujące polecenia.
# make dep; oczyścić; zrobić bzlmage; tworzyć moduły; make modules_install
Każdą komendę make można wprowadzić osobno, po zakończeniu poprzedniej.
Po wprowadzeniu tych poleceń na ekranie będą migać linie opisujące katalogi, do których uzyskuje dostęp program make, czyli uruchomienie kompilatora gcc. do kompilowania różnych plików źródłowych i łączenia różnych bloków. Wykonanie każdego z tych poleceń zajmie kilka minut.
Możesz teraz utworzyć dyskietkę startową dla nowego jądra za pomocą polecenia
Przed wykonaniem tego polecenia musisz włożyć sformatowaną dyskietkę do napędu. Gotowy dysk startowy musi zostać przetestowany. Uruchom ponownie komputer bez wyjmowania dyskietki z napędu.
Po wykonaniu poleceń kompilacji jądra i powrocie do wiersza poleceń, tworzone jest nowe jądro. Aby uruchomić system z nowym jądrem, należy go przenieść do standardowego katalogu, z którego będzie uruchamiany. Odbywa się to poprzez wpisanie polecenia
# cf /usr/src/linux-2.4.2/arch/i386/boot/bzlmage /boot/vmlinuz-2.4.2-2
Na koniec, aby zaktualizować mapę rozruchową, uruchom polecenie lilo:
Możesz podać numer wersji w nazwie obrazu jądra do skopiowania. Ważne jest, aby nazwa tego pliku była zgodna z nazwą określoną w pliku /etc/lilo.conf.
Testowanie nowego jądra
Po przeniesieniu nowego pliku jądra do katalogu domyślnego (określonego w pliku lilo.conf), system może zostać zrestartowany z tym jądrem.
Natychmiast po ponownym uruchomieniu sprawdź działanie nowych narzędzi, dla których rozpoczęto rekompilację. Możesz wykonać następujące czynności.
Porównanie objętości starych i nowych rdzeni. Należy sprawdzić ilość pamięci zajmowanej przez system operacyjny, wydając polecenie free.
Montowanie systemu plików lub próba uzyskania dostępu do urządzenia bez ładowania modułu jądra do jego obsługi (jeśli obsługa tego urządzenia jest wbudowana w jądro).
Korzystanie z zasobów sieciowych (takich jak aliasy IP), których nie było w starym jądrze.
Może być konieczne sprawdzenie znacznika czasu bieżącego pliku jądra. Aby to zrobić, wpisz polecenie uname. Pozwala to upewnić się, że system aktualnie działa ze zrekompilowanym jądrem. Znacznik czasu i data jądra muszą odpowiadać czasowi jego ponownej kompilacji.
Jeśli odpowiedź z polecenia uname wskazuje, że system nie został uruchomiony z nowym jądrem, zajrzyj do programu ładującego LILO. Sprawdź, czy nazwa jądra startowego jest poprawna w pliku /etc/lilo.conf.
ZOBACZ WIĘCEJ:
Kompilowanie i instalowanie jądra Linux ze źródeł w Debianie
Materiał z Bryansk Linux Users Group i www.rm.pp.ru
Każda dystrybucja ma swoją specyfikę budowy jądra, a ten artykuł skupia się dokładnie na tym, jak to zrobić w Debian Etch. Ujawnia również pytanie, jak zastosować tę lub inną łatkę do jądra, gdy jest to konieczne do obsługi określonej funkcjonalności lub nowego sprzętu w systemie. Artykuł przeznaczony jest przede wszystkim dla bardziej zaawansowanych użytkowników i nie ma gwarancji, że ta metoda będzie działać tak, jak powinna, a wszystkie opisane działania i odpowiedzialność spadają na Ciebie.
- Notatka
- Metoda pierwsza. Wbudowanie jądra w pakiety .deb
- Nakładanie łatek
- Konfiguracja jądra
- Kompilacja jądra
- Instalowanie nowego jądra
- Metoda druga. "tradycyjny sposób
- Problemy
- Spinki do mankietów
Notatka
Opisane zostaną dwie metody budowania jądra. Wariant kompilacji pakietów .deb, które mogą być zainstalowane w twoim lub innym systemie, zostanie opisany jako pierwszy.
Druga metoda to tak zwany „tradycyjny” sposób.
Metoda pierwsza. Wbudowanie jądra w pakiety .deb
Instalowanie niezbędnych pakietów do kompilacji jądra
Najpierw zaktualizujmy listy pakietów:
# apt-pobierz aktualizację
Zainstaluj potrzebne nam pakiety:
# apt-get install pakiet jądra libncurses5-dev fakeroot wget bzip2 build-essential
Pobieranie źródeł jądra
Przejdź do katalogu /usr/src, przejdź do www.kernel.org i wybierz żądaną wersję jądra. W takim przypadku rozpatrzona zostanie wersja linux-2.6.23.1.tar.bz2. Ściąganie:
# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2
Rozpakuj źródła i utwórz dowiązanie symboliczne:
# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (usuń poprzednie dowiązanie symboliczne) # ln -s linux-2.6.23.1 linux # cd /usr/src/linux
Nakładanie łatek
Opcjonalne i niepotrzebnie tego nie rób!
Czasami wymagane są sterowniki lub funkcje, które nie są obsługiwane w bieżącym jądrze, takie jak technologia wirtualizacji lub inne specyfikacje, których nie ma w bieżącej wersji. W każdym razie jest to korygowane przez nałożenie tak zwanych łatek (jeśli istnieją).
Załóżmy, że pobrałeś wymaganą łatkę (nazwijmy ją na przykład patch.bz2) do /usr/src. Zastosuj pobraną łatkę do naszych źródeł (nadal powinieneś znajdować się w katalogu /usr/src/linux):
# bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | łatka-p1
Pierwsze polecenie to tylko test i żadne zmiany nie zostaną zastosowane do źródeł. Jeśli po pierwszym poleceniu nie zostaną zwrócone żadne błędy, możesz uruchomić drugie polecenie, aby zastosować poprawkę. W żadnym wypadku nie wykonuj drugiego polecenia, jeśli po pierwszym pojawiły się błędy!
W ten sposób możesz zastosować łaty do źródeł jądra. Na przykład niektóre funkcje są dostępne tylko w jądrze 2.6.23.8, a źródła nie zawierały niezbędnej funkcjonalności, ale została wydana łatka-2.6.23.8.bz2. Możesz zastosować tę poprawkę do źródeł jądra 2.6.23, ale nie 2.6.23.1, 2.6.23.3 itd. Więcej na ten temat można przeczytać na:
Prefiksy (prepatche) - odpowiedniki wydań alfa; poprawki muszą być zastosowane do źródeł pełnej poprzedniej wersji z wersją 3-cyfrową (na przykład łatę 2.6.12-rc4 można zastosować do źródeł w wersji 2.6.11, ale nie do wersji 2.6.11.10.)
Oznacza to, że jeśli chcemy zbudować jądro 2.6.23.8, musimy pobrać źródła dla wersji 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6. 23.tar.gz) zastosowany w drugi sposób "tradycyjny" sposób!
Zastosuj patch-2.6.23.8.bz2 do jądra 2.6.23:
# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/ src/patch-2.6.23.8.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | łatka-p1
Konfiguracja jądra
Dobrym pomysłem jest użycie istniejącego pliku konfiguracyjnego działającego jądra również dla nowego. Dlatego kopiujemy istniejącą konfigurację do /usr/src/linux:
# make clean && make mrproper # cp /boot/config-`uname -r` ./.config
# make menuconfig
po czym zostanie załadowane graficzne menu konfiguracji jądra. Wybierz "Załaduj alternatywny plik konfiguracyjny" w menu konfiguratora i kliknij "OK". Następnie (jeśli to konieczne) wprowadź niezbędne zmiany w konfiguracji jądra, poruszając się po menu (szczegóły konfiguracji jądra można znaleźć na www.google.com). Kiedy skończysz i naciśniesz "Exit", pojawi się pytanie "Czy chcesz zapisać swoją nową konfigurację jądra?", a my odpowiemy twierdząco "Tak".
Budowanie jądra Linux
Kompilacja jądra
Budowanie jądra odbywa się za pomocą zaledwie dwóch poleceń:
# make-kpkg clean # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headers
Po --append-to-version= możesz wpisać dowolną nazwę, ale musi zaczynać się znakiem minus (-) i nie może zawierać spacji.
Proces kompilowania i budowania pakietów .deb może zająć dość dużo czasu. Wszystko będzie zależeć od konfiguracji jądra i możliwości twojego procesora.
Rozwiązanie problemu z tworzeniem initrd.img
Ostatnio w Debianie pojawił się błąd polegający na tym, że po zainstalowaniu pakietów z jądrami zbudowanymi w opisany tutaj sposób nie jest tworzony odpowiadający im plik /boot/initrd.img. Aby naprawić już zainstalowane jądro, będziesz musiał ręcznie utworzyć initrd.img:
update-initramfs -c -k<полная-версия-ядра>
Aby rozwiązać problem "na przyszłość" - skomentuj, jak pokazano, drugi z zacytowanych poniżej wierszy w pliku /etc/kernel/postinst.d/initramfs-tools:
# kernel-package przekazuje dodatkowy argument; hack, aby nie uruchamiać się w pakiecie jądra #[ -z "$2" ] || wyjście 0
Instalowanie nowego jądra
Gdy kompilacja jądra zakończy się pomyślnie, w katalogu /usr/src zostaną utworzone dwa pakiety .deb:
# cd /usr/src # ls -l
linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - aktualne jądro i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - nagłówki jądra potrzebne do budowy innych modułów (na przykład podczas budowania modułów sterowników nVidia). Instalowanie ich:
# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb
(Te pakiety można teraz zainstalować w innym systemie bez konieczności ponownego ich budowania.)
Wszystko, instalacja zakończona, menu bootloadera, instalacja nowego RAM-dysku i jądra zrobią się automatycznie. Pozostaje tylko zrestartować:
Metoda druga. "tradycyjny sposób
Wszystkie punkty opisane powyżej wykonujemy PRZED punktem „Kompilacja jądra”.
# make all # make modules_install # make install
Jak zwykle kompilacja może zająć dużo czasu, w zależności od konfiguracji jądra i możliwości procesora.
Główną wadą tej metody jest to, że jeśli często aktualizujesz jądra, po pewnym czasie zgromadzi się ich duża liczba i będziesz chciał usunąć nieużywane. Aby to ułatwić, możesz zbudować jądro i inne pliki, które są instalowane w systemie, używając poleceń "make modules_install" i "make install" w pakiecie deb (lub raczej dwóch, począwszy od jądra 2.6.27), tak jak w pierwszym metody, ale użyjemy tutaj ze skryptami jądra:
# make all # make deb-pkg
W katalogu o jeden poziom powyżej katalogu źródłowego pojawią się dwa pliki .deb. Jądro skompilowałem w katalogu /usr/src/linux-2.6.27.10 i dostałem pliki w katalogu /usr/src/
# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.deb
Jądro jest instalowane za pomocą polecenia
# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.deb
Stare ziarna można usunąć np. z synaptic
Następne kroki
Jądro jest zbudowane i zainstalowane, ale nawet teraz musisz utworzyć dysk RAM (bez którego jądro po prostu się nie uruchomi) i musisz zaktualizować bootloader GRUB. Aby to zrobić, wykonaj następujące czynności:
# depmod 2.6.23.1 # apt-get install yaird
Zainstaluj dysk RAM:
# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1
Zaktualizujmy bootloader łatwo i bezboleśnie:
Wszystko, bootloader i nowe jądro gotowe, pozostaje tylko zrestartować:
Problemy
Jeśli po ponownym uruchomieniu, wybrane nowe jądro nie uruchamia się, uruchom ponownie i wybierz poprzednie jądro, a następnie spróbuj ponownie przejść przez cały proces, aby zbudować działające jądro. W takim przypadku nie zapomnij usunąć wierszy niedziałającego jądra w /boot/grub/menu.lst.
Kompilacja jądra LinuxPo co w ogóle kompilować jądro? Możliwe jest również włączenie obsługi ponad 4 gigabajtów pamięci RAM bez zmiany głębi bitowej systemu. Tak więc, jeśli nadal potrzebujesz mieć własne jądro, zacznijmy kompilować! Pobieranie kodu źródłowego jądra. Rozpakowanie archiwum kodu źródłowego. Konfiguracja jądra. make config - tryb konsoli konfiguratora. make menuconfig - tryb konsoli jako lista. make xconfig - tryb graficzny. Po dokonaniu niezbędnych zmian zapisz ustawienia i wyjdź z konfiguratora. Kompilacja. Konfiguracja i kompilacja jądra LinuxJądro jest zainstalowane. Aby pojawił się na liście grub(2), wpisz (jako root) KernelCheck - kompilacja jądra bez wchodzenia do konsoli. |
maj 2017
Marzec 2017
kwiecień 2016
Marzec 2016
Październik 2013
wrzesień 2013
Maj 2013
Marzec 2013
Listopad 2012
lipiec 2012
czerwiec 2012
kwiecień 2012
Marzec 2012
Luty 2012
kwiecień 2011
Marzec 2011
Luty 2011
styczeń 2011
grudzień 2010
Listopad 2010
Październik 2010
wrzesień 2010
Sierpień 2010
lipiec 2010
czerwiec 2010
maj 2010
kwiecień 2010
Marzec 2010
Losowy:
Aurorae: silnik do dekoracji okien dla KDE
Sblog zostanie przepisany w .NET
Linuxnow.ru: Plany na przyszłość
Bolgenos. Odrzucenie Teleconu
GRUB 2 Szybkie odzyskiwanie
Free Software Foundation i copyleft.
Koledzy: wszyscy
Linux dla każdego
Nasze banery:
Ustaw baner
Pytanie brzmi, dlaczego nie nauczyć się robić tego samego z jądrem Linuksa? Powody budowania jądra Linuksa ze źródeł są generalnie takie same - uzyskanie najnowszej wersji jądra, pilne zastosowanie łatek bezpieczeństwa, optymalizacja pod kątem konkretnych zadań i konkretnego sprzętu, a także chęć wzięcia udziału w rozwoju jądra, nawet w roli QA.
Ważny! Postępowanie zgodnie z instrukcjami zawartymi w tym poście może spowodować utratę Twoich danych. Twórz kopie zapasowe i pamiętaj, że robisz wszystko na własne ryzyko i ryzyko. Wszystko opisane poniżej zostało przetestowane na Ubuntu 14.04 LTS. Ale w innych wersjach Ubuntu, a także w innych dystrybucjach Linuksa, różnice powinny być minimalne.
Konfigurowanie bootloadera
Edytuj /etc/default/grub w ten sposób:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=prawda
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR =` lsb_release -i -s 2 > /dev/null || echo Debiana
GRUB_CMDLINE_LINUX_DEFAULT="cichy plusk"
GRUB_CMDLINE_LINUX=""
Po edycji mówimy:
sudo update-grub
W rezultacie przed uruchomieniem systemu zostaniesz poproszony przez 10 sekund o wybranie jądra, z którym chcesz uruchomić system. Bardzo przydatne, jeśli pomieszałeś się z konfiguracją jądra i chcesz uruchomić system z poprzednią wersją!
Zainstaluj zależności
Będziemy potrzebować co najmniej następujących pakietów:
sudo apt-get install git gcc make bc fakeroot dpkg-dev \
libncurses5-dev libssl-dev
Jednak w wielu systemach wszystkie z nich będą już obecne.
Uzyskiwanie źródła
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.6.4.tar.xz
tar --xz -xvf linux-4.6.4.tar.xz
cd linux-4.6.4
Lub, jeśli chcesz mieć najnowsze wersje, możesz pobrać źródło bezpośrednio z Git :
# Lustro: https://github.com/torvalds/linux
git klon „git://git.kernel.org/pub/scm/linux/kernel/git/”\
"torvalds/linux.git"
cd linux
Sądząc po tym, że nie mogłem znaleźć tagu v4.6.4 w Git, wydania jądra Linuksa są tworzone wyłącznie w postaci skompresowanych archiwów tar.
Jeśli zamiast jądra waniliowego chciałbyś zbudować jądro z łatami z Canonical:
klon git git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
cd ubuntu-zaufany
tag git | mniej
git kasa Ubuntu-lts-4.4.0-31.50_14.04.1
Z własnego doświadczenia, jeśli używasz Ubuntu, możesz bezpiecznie korzystać z jądra waniliowego. Jest mało prawdopodobne, że będziesz miał z tym jakiekolwiek problemy.
Notatka: Co ciekawe, z istniejących, stosunkowo popularnych dystrybucji Linuksa, jedynie Gentoo, Slackware i Arch Linux wydają się używać jądra bez własnych poprawek.
W każdym razie, teraz masz kod źródłowy.
Kompilacja i instalacja jądra
Wybierz opcje, z którymi zostanie zbudowane jądro:
utwórz konfigurację menu
W razie potrzeby zmień ustawienia, kliknij Zapisz, a następnie Zakończ. Spowoduje to utworzenie pliku .config zawierającego wybrane przez nas opcje.
Na aktualizacja kernel (czy już używasz jakiegoś jądra?) wygodnie jest wziąć konfigurację bieżącego jądra i ustawić nowe opcje na ich domyślne wartości:
zcat /proc/config.gz > ./.config
utwórz olddefconfig
Na koniec zbieramy:
make -j4 bindeb-pkg LOCALVERSION=-custom
Rdzeń montowany jest dość długo. Na moim laptopie montaż trwał 1 godzinę i 15 minut. Jednak od tego czasu o Resztę poświęca się na budowanie gigantycznego pakietu jądra z symbolami debugowania. Składanie tego pakietu może zostać wyłączone przez zakomentowanie parametru CONFIG_DEBUG_INFO w konfiguracji. Pamiętaj tylko, że ten pakiet jest wymagany przez SystemTap i inne przydatne narzędzia.
Oprócz samego jądra możesz również zbierać dokumentację:
# jest też `make pdfdocs` i inne, zobacz `make help`
tworzyć htmldocs
Dokumentacja przeglądarki chromium/ DocBook/ index.html
Po zakończeniu montażu pomocniczy katalog widzimy coś takiego:
linux-firmware-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-headers-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom_4.4.13-custom-1_amd64.deb
linux-image-4.4.13-custom-dbg_4.4.13-custom-1_amd64.deb
linux-libc-dev_4.4.13-custom-1_amd64.deb
Umieszczamy wszystkie pakiety deb z wyjątkiem wersji dbg jądra ze zwykłym sudo dpkg -i i uruchom ponownie. Po ponownym uruchomieniu spójrz na dane wyjściowe polecenia uname-a. Upewniamy się, że naprawdę uruchomiliśmy nowe jądro. Jeśli coś jest nie tak z nowym jądrem, w bootloaderze po prostu wybieramy to, z którego system był wcześniej uruchamiany. Po uruchomieniu ze starym jądrem szybko usuwamy pakiety nowego jądra i voila - system wrócił do poprzedniego stanu.
W połowie marca, po prawie dwóch miesiącach rozwoju i siedmiu kandydatach do wydania, Linus Torvalds przedstawił nową wersję jądra 4.5. Oprócz poprawek w wydaniu jest naprawdę wiele nowych rzeczy. Zmiany objęły wszystkie podsystemy - dysk, pamięć, usługi systemowe i sieciowe, zabezpieczenia i oczywiście sterowniki dla nowych urządzeń. Spróbujmy zająć się niektórymi z najciekawszych.
O wydaniu
Wersja jądra 4.4 została wydana stosunkowo niedawno, na początku stycznia 2016 r., ale w tym krótkim czasie zgromadziła się duża liczba dodatków. I choć Linus nazwał nowe wydanie „normalnym”, widać, że w porównaniu do wersji 4.4, rozmiar łatki urósł prawie o jedną trzecią – 70 MB wobec 49 MB. W opracowaniu wzięło udział około 1528 osób, które dokonały ok. 13 tys. poprawek. W ponad 11 tys. plików dodano 1 146 727, usunięto 854 589 linii kodu. W 4,4 było odpowiednio 714 106 i 4710 010 linii. Prawie połowa (45%) wszystkich zmian dotyczy sterowników urządzeń, 17% dotyczy kodu architektur sprzętowych, 14% dotyczy stosu sieciowego, 4% - systemów plików, a 3% dotyczy wewnętrznych podsystemów jądra. Doug Ledford z Red Hat wniósł najwięcej wierszy, wykonując większość prac porządkowych (7,7%), Tomi Valkeinen z Texas Instruments, który pracował nad obsługą podarchitektury OMAP (5,3%), trzech programistów skupiło się na sterownikach graficznych AMD: Eric Huang - 3,3 %, Alex Deucher – 2,4%, a yanyang1 – 1,6%. Liderzy zestawu zmian - Linus Walleij z Linaro, który zaimplementował wiele niskopoziomowych zmian, w tym do obsługiwanego przez siebie GPIO (2,0%), Arnd Bergmann, który wykonał dużo pracy na rzecz wsparcia ARM (1,9%) oraz Leo Kim, który pracował na sterowniku wilc1000 (1,7%). Tak jak poprzednio, wiele korporacji jest zainteresowanych rozwojem rdzenia. Prace nad wersją 4.5 wspierało ponad 200 firm, m.in. Red Hat, Intel, AMD, Texas Instruments, Linaro, Linux Foundation, Samsung, IBM, Google. Większość z nich rozwija wsparcie dla swoich urządzeń oraz powiązanych podsystemów i narzędzi, ale na przykład Google tradycyjnie wprowadza wiele zmian w podsystemie sieciowym Linux.Jądro i sterowniki
Przenoszenie złożonego i źle utrzymanego kodu napisanego w asemblerze (x86/asm) do C było kontynuowane w wersji 4.0. Jądro można teraz zbudować z opcją -fsanitize=undefined. Sam parametr pojawił się dwa lata temu w GCC 4.9+ i aktywuje tryb debugowania UBSan (Undefined Behavior Sanitizer), który wykrywa niezdefiniowane zachowanie właściwe dla języków C i C++: użycie niestatycznych zmiennych przed inicjalizacją, dzielenie przez zero, przepełnienie liczby całkowitej i tak dalej. Kompilator zazwyczaj zakłada, że takie operacje nigdy nie wystąpią, a jeśli tak się stanie, wynik może być dowolny i zależy od samego kompilatora. Teraz kompilator wykrywa takie sytuacje, generuje „błąd wykonania:” (możesz wyłączyć -fno-sanitize-recover) i kontynuuje wykonywanie. Domyślnie w każdym asemblerze systemu operacyjnego wszystkie biblioteki są ładowane na określone adresy, co ułatwia przeprowadzenie ataku. W celu zwiększenia bezpieczeństwa stosuje się szereg technologii, jedną z nich jest losowe przesunięcie podczas wywoływania mmap(), zaimplementowane w postaci ASLR (Address Space Layout Randomization). Technologia ASLR po raz pierwszy pojawiła się w Linuksie w 2005 roku w jądrze 2.6 i dała 8-bitowe przesunięcie dla systemów 32-bitowych (czyli 256 opcji adresowych, choć w rzeczywistości mniej), a dla x64 - przesunięcie jest już 28-bitowe. W przypadku x64 jest wystarczająco dużo opcji, ale w przypadku systemów 32-bitowych, w tym Androida, dziś to zdecydowanie za mało. Istnieją już znane exploity, które mogą wychwycić adres. W wyniku poszukiwań rozwiązania problemu została napisana łatka pozwalająca ustawić większą losowość dla ASLR, poprzez /proc/sys/vm/mmap_rnd_bits i /proc/sys/vm/mmap_rnd_compat_bits (na systemach x64 dla procesów x86). Dla każdej architektury określone są wartości minimalne i maksymalne, biorąc pod uwagę dostępną przestrzeń adresową. Dla x86 wartość może wynosić od 8 do 16 bitów lub od 28 do 32 (dla wersji x64). Domyślne opcje można ustawić podczas budowania jądra.Konfiguracja ASLR w nowym jądrze Rozszerzone możliwości sterownika DRM dla kart graficznych NVIDIA (Nouveau) i Intel (obsługa przyszłej generacji układów Kaby Lake), dodano obsługę nowych kart dźwiękowych, kontrolerów USB i akceleratorów kryptograficznych. Producenci kart graficznych Intel i NVIDIA już dawno zrezygnowali z używania UMS (Userspace Mode Setting) w swoich sterownikach open source na rzecz KMS (Kernel Mode Setting), teraz przyszła kolej na sterownik ATI Radeon, który usunął kod trybu UMS. Od wersji 3.9 można było ją włączyć za pomocą parametru DRM_RADEON_UMS lub ustawiając radeon.modeset=0 w GRUB-ie. Teraz pozostaje tylko KMS (ustawienie trybu jądra). Należy to wziąć pod uwagę, jeśli musisz korzystać ze starszych sterowników lub trybu UMS (UMS czasami wykazuje lepszą wydajność). Dodano eksperymentalne wsparcie dla technologii dynamicznego zarządzania energią PowerPlay do sterownika AMDGPU, aby poprawić wydajność GPU dla procesorów graficznych Tonga i Fiji oraz zintegrowanych Carrizo i Stoney. W trybie PowerPlay GPU uruchamia się w trybie niskiego zużycia energii, ale jeśli obciążenie podsystemu graficznego wzrasta, automatycznie zwiększa częstotliwość. Domyślnie PowerPlay jest wyłączony, aby go włączyć, należy przekazać parametr amdgpu.powerplay=1 do jądra. Nowa wersja Media controller API rozszerza wsparcie dla urządzeń Video4Linux i pozwala na wykorzystanie funkcjonalności kontrolera multimediów w innych podsystemach, takich jak DVB, ALSA i IIO. Wiele zrobiono w KVM (Kernel-Based Virtual Machine), aby wspierać architekturę s390 (teraz może używać do 248 vCPU), ARM/ARM64 i poprawić wydajność x86 w Hyper-V.
Instalowanie jądra 4.5 w Ubuntu
Najłatwiejszym sposobem na zapoznanie się z nowym jądrem jest skorzystanie z kompilacji zespołu jądra Ubuntu. Po obszernych testach nowe jądro trafia do ppa:canonical-kernel-team/ppa , ale zwykle zajmuje to trochę czasu. $ wget -c http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500-generic_4.5.0-040500.201603140130_amd64.deb http://kernel .ubuntu.com/~kernel-ppa/mainline/v4.5-wily/linux-headers-4.5.0-040500_4.5.0-040500.201603140130_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline /v4.5-wily/linux-image-4.5.0-040500-generic_4.5.0-040500.201603140130_amd64.deb $ sudo dpkg -i linux*.deb Możemy pracować po restarcie.Wsparcie ramienia
Komputery ARM są wykorzystywane jako miniserwery do określonych zadań lub jako sterowniki automatyki, co czyni je bardzo popularnymi i poszukiwanymi. Społeczność Linux ARM stała się jedną z najbardziej aktywnych w ciągu ostatnich pięciu lat, wykonując ogromną pracę, aby wspierać 32-bitowe platformy ARM, które zajmują znaczny udział w rynku, a prace te zostały ogólnie zakończone wraz z wydaniem 4.5. Oddział. Wcześniej dla każdego urządzenia ARM konieczne było zbudowanie własnego jądra, zapewniającego obsługę tylko niektórych urządzeń. Problem w tym, że urządzenia stały się bardziej złożone, pojawiła się możliwość zmiany konfiguracji, a sami użytkownicy na urządzeniach ARM chcieli korzystać ze zwykłych dystrybucji bez zbędnych gestów. Ale w końcu mieliśmy kilkaset opcji budowania jądra, co bardzo utrudnia korzystanie z Linuksa. W wyniku oczyszczenia i refaktoryzacji dużej ilości kodu stało się możliwe uwzględnienie w jądrze kodu wsparcia ARMv6 i ARMv7, czyli teraz możemy zbudować uniwersalne jądro, które może uruchamiać się na obu systemach. Tutaj chyba trzeba przypomnieć ostatnio promowaną specyfikację Device Tree, która powstała w ramach rozwoju Open Firmware. Drzewo urządzeń umożliwia konfigurowanie sprzętu podczas uruchamiania systemu za pomocą specjalnych plików dts przechowywanych w /boot/dtbs i zmianę ustawień bez przebudowy jądra. Korzystanie z drzewa urządzeń staje się obowiązkowe dla wszystkich nowych rozwiązań ARM, a nie tylko dla urządzeń. Wszystko to razem daje pewność, że w przyszłości dystrybucje Linuksa będą mogły być bezpiecznie uruchamiane na dowolnym urządzeniu ARM. Równolegle Greg Kroah-Hartman z Linux Foundation opublikował łatkę, która implementuje podobną funkcję we wczesnych wersjach jądra. W arch/arm64 znajdujemy kod, który zapewnia obsługę nowej 64-bitowej architektury ARM (ARMv8). Dodano nowe funkcje dla wszystkich popularnych architektur ARM - Allwinner, Amlogic, Samsung, Qualcomm oraz wsparcie dla nowych płyt ARM od różnych programistów.Usługi systemowe
Aby uzyskać dostęp do danych oprogramowania układowego UEFI (Unified Extensible Firmware Interface) w systemie Linux, używany jest specjalny system pseudoplików efivars (konfigurowany przez EFIVAR_FS), który jest montowany w /sys/firmware/efi/efivars . W niektórych implementacjach podczas wykonywania polecenia rm -rf /* usuwano również zawartość tego katalogu, co prowadziło do zniszczenia oprogramowania układowego. Firmy - twórcy urządzeń nie uważają tego za poważną wadę, ponieważ sytuacja oczywiście nie jest najczęstsza i jest mało prawdopodobne, aby jakikolwiek użytkownik pomyślał, aby to sprawdzić. Niemniej jednak istnieje problem, a twórcy wirusów mogą naprawdę skorzystać z tej możliwości. Jądro 4.5 dodaje teraz specjalną ochronę do katalogu /sys/firmware/efi/efivars, aby zapobiec usuwaniu znajdujących się w nim plików.Nadal dostępne tylko dla członków
Opcja 1. Dołącz do społeczności „strony”, aby przeczytać wszystkie materiały na stronie
Członkostwo w społeczności w wyznaczonym okresie zapewni ci dostęp do WSZYSTKICH materiałów hakerskich, zwiększy osobistą skumulowaną zniżkę i pozwoli na zgromadzenie profesjonalnej oceny Xakep Score!
Rdzeń(Język angielski) jądro) jest tym, wokół czego zbudowane jest wszystko inne. To właśnie nazywa się Linux. Teraz słowo Linux w życiu codziennym nazywa się zbudowanym na nim systemem operacyjnym, choć w dobrym sensie nazywa się to GNU/Linux (jądro Linuxa i oprogramowanie z projektu GNU, który jest rozwijany od wielu dziesięcioleci).
Ubuntu używa jądra z dużą liczbą poprawek, z których niektóre dodają niestabilne i eksperymentalne funkcje.
Każde wydanie Ubuntu ma swoją własną wersję jądra. Wersje LTS od 10.04 były w stanie zaktualizować jądro do wersji zawartych w nowszych wydaniach.
Wersja Ubuntu | Wersja jądra |
---|---|
4.10 | 2.6.9 |
5.04 | 2.6.11 |
5.10 | 2.6.13 |
6.06LTS | 2.6.15 |
6.10 | 2.6.18 |
7.04 | 2.6.19 |
7.10 | 2.6.20 |
8.04LTS | 2.6.24 |
8.10 | 2.6.27 |
9.04 | 2.6.28 |
9.10 | 2.6.31 |
10.04LTS | 2.6.32 |
10.10 | 2.6.35 |
11.04 | 2.6.38 |
11.10 | 3.0.4 |
12.04LTS | 3.2 |
12.10 | 3.5 |
13.04 | 3.8 |
13.10 | 3.11 |
14.04LTS | 3.13 |
14.10 | 3.16 |
15.04 | 3.19 |
widelce
Numeracja wersji jądra Ubuntu i na stronie kernel.org nie zgadzają się, ponieważ programiści z Canonical dodają wersję mikro, aby wskazać dodane poprawki. Na przykład wersja 3.2.0-23 oznaczałaby, że jądro oparte jest na gałęzi 3.2, która ma 23 łaty.
W repozytorium Ubuntu obsługiwane są następujące typy jąder:
Jądro generic-pae pozwala 32-bitowemu systemowi na użycie do 64 GB całkowitej pamięci RAM, przydzielając nie więcej niż 4 GB na potrzeby konkretnego procesu, podczas gdy proste jądro ogólne działa z nie więcej niż 4 GB pamięci RAM.
Jądro 64-bitowe umożliwia adresowanie do 1 TB pamięci zużywanej przez procesy.
Jeśli potrzebujesz zaktualizować jądro do nowszej wersji głównej (zwykle wynika to z faktu, że nowe wersje dodają obsługę nowego sprzętu, eliminują regresje), możesz skorzystać z oficjalnie wspieranego archiwum http://kernel.ubuntu.com/ ~jądro-ppa/główna linia/ .
Kompilacja jądra
Budowanie jądra ze źródeł wymaga pewnych umiejętności i wiedzy na temat działania systemu operacyjnego.
Zanim zaczniesz budować jądro, musisz zainstalować następujące pakiety:
Niezbędna kompilacja fakeroot ncurses-dev libssl-dev
Wszystkie dalsze czynności należy wykonać w imieniu superużytkownika:
sudo suPobieranie kodu źródłowego
Kod źródłowy jądra używanego przez Ubuntu można uzyskać, instalując pakiet linux-source:
apt-get zainstaluj źródło linuxPo instalacji w katalogu /usr/src powstanie archiwum o nazwie linux-source-verify_kernels.tar.bz2.
Możesz również pobrać archiwum z kodem źródłowym jądra ze strony kernel.org.
Podczas pobierania jądra ze strony kernel.org będziesz musiał zaaplikować do niego łatki
Konfiguracja
Rozpakuj powstałe archiwum i dla wygody utwórz dowiązanie symboliczne do wynikowego katalogu:
cd / usr/ src tar xjf ./ linux-source-3.2.0.tar.bz2 ln -s ./ linux-source-3.2.0 ./ linux cd ./ linuxAby uprościć proces konfiguracji jądra, możesz skopiować ustawienia bieżącego.