# Debian i jądro systemu

## Czy mogę skompilować i zainstalować jądro systemu bez dostosowywania go do specyfiki Debiana?

Tak.

Z jednym tylko zastrzeżeniem: biblioteki języka C w systemie Debian są budowane z wykorzystaniem najnowszych stabilnych wersji plików nagłówkowych jądra systemu. Jeśli chcesz skompilować program z wykorzystaniem nowszych plików nagłówkowych jądra niż te ze stabilnej wersji, stoisz przed wyborem pomiędzy uaktualnieniem pakietu zawierającego pliki nagłówkowe (`libc6-dev`), a użyciem nowych plików nagłówkowych, które znajdują się w katalogu z rozpakowanymi plikami źródłowymi jądra. Jeżeli pliki źródłowe jądra znajdują się w katalogu `/usr/src/linux/`, wtedy przy kompilowaniu do polecenia musisz dodać opcję `-I/usr/src/linux/include/`.

## Jakich narzędzi dostarcza system Debian w celu budowania własnych wersji jądra systemu?

Użytkownicy którzy pragną zbudować własną wersję jądra systemu mogą pobrać i zainstalować pakiet `kernel-package`. Zawiera on skrypt wykonujący kompilację i umożliwia stworzenie pakietu Debiana z gotowym jądrem przy pomocy polecenia

    make-kpkg kernel_image

, które należy wpisać znajdując się w katalogu z plikami źródłowymi jądra. Więcej informacji można uzyskać przy pomocy polecenia

    make-kpkg --help

lub podręcznika systemowego

make-kpkg

1.

Ponieważ opisany pakiet nie zawiera plików źródłowych jądra, użytkownicy muszą pobrać je oddzielnie z wybranego przez siebie serwera lub w postaci pakietu Debiana jeśli pakiet kernel-source-wersja jest dostępny (gdzie wersja to numer pożądanej wersji jądra).

Szczegółowe instrukcje dotyczące korzystania z pakietu `kernel-package` można znaleźć w pliku `/usr/share/doc/kernel-package/README.gz`. W skrócie powinno się:

- Rozpakować pliki źródłowe jądra i przenieść się do nowo powstałego katalogu przy pomocy polecenia `cd`.

- Dostosować konfigurację jądra do własnych potrzeb przy pomocy jednego z poniższych poleceń:

  - `make config` (interfejs tekstowy zadający kolejno pytania).

  - `make menuconfig` (interfejs tekstowy wykorzystujący bibliotekę ncurses z opcjami pogrupowanymi w menu). Aby móc korzystać z tego polecenia musisz mieć zainstalowany pakiet `libncurses5-dev`.

  - `make xconfig` (interfejs graficzny X11). Korzystanie z tej opcji wymaga zainstalowania istotnych pakietów związanych z X11 i Tcl/Tk.

  Wykorzystanie któregokolwiek z powyższych poleceń spowoduje utworzenie nowego pliku `.config` w katalogu z plikami źródłowymi.

- Wprowadzić polecenie: `make-kpkg -rev TwojaNazwa.N kernel_image`, przy czym N oznacza nadany przez Ciebie numer. Stworzony w wyniku tak przeprowadzonej kompilacji pakiet z jądrem będzie posiadał unikatowy stworzony przez Ciebie symbol wersji TwojaNazwa.1, np.: `kernel-image-2.2.14_TwojaNazwa.1_i386.deb` dla jądra w wersji 2.2.14.

- Zainstalować stworzony w ten sposób pakiet.

  - Uruchom `dpkg --install /usr/src/kernel-image-VVV_Custom.N.deb` aby zainstalować jądro. Skrypt instalacyjny:

    - uruchomi program ładujący system, LILO (jeśli ten jest zainstalowany),

    - zainstaluje skompilowane przez Ciebie jądro w katalogu /boot pod nazwą vmlinuz_VVV-TwojaNazwa.N i stworzy odpowiednie dowiązania symboliczne.

    - zapyta użytkownika czy wykonać dyskietkę startową. Dyskietka taka zawiera jedynie plik z jądrem. Aby dowiedzieć się więcej zobacz custombootdisk.

  - Aby wykorzystać jeden z pozostałych programów ładujących system takich jak `grub` czy `loadlin`, skopiuj ten plik w inne miejsce (np. do katalogu /boot/grub lub na partycję z systemem plików `MS-DOS`).

## W jaki sposób mogę wykonać własną wersję dyskietki startowej?

Do tego celu możesz z powodzeniem posłużyć się pakietem `boot-floppies`, który znajduje się w sekcji `admin` zasobów FTP Debiana. Skrypt powłoki znajdujący się w tym pakiecie tworzy dyskietki startowe w formacie `SYSLINUX`. Są to dyskietki z systemem plików `MS-DOS`, których główny rekord startowy został zmodyfikowany tak aby bezpośrednio ładował jądro Linuksa (lub innego systemu w zależności od definicji zawartej w pliku syslinux.cfg znajdującym się na dyskietce). Pozostałe skrypty w tym pakiecie służą do tworzenia dyskietek awaryjnych lub instalacyjnych.

Więcej informacji znajdziesz w pliku `/usr/doc/boot-floppies/README` po zainstalowaniu pakietu `boot-floppies`.

## Jakie narzędzia udostępnia Debian do obsługi modułów?

Pakiet Debiana `modconf` udostępnia skrypt powłoki (`/usr/sbin/modconf`), który może być wykorzystywany do dostosowywania konfiguracji modułów dla własnych potrzeb. Skrypt ten oferuje interfejs oparty o menu, który pyta użytkownika o szczegóły dotyczące modułów sterowników urządzeń w systemie. Uzyskane odpowiedzi służą do stworzenia odpowiednich wpisów w pliku `/etc/modules.conf` (który zawiera listę aliasów/skrótów i parametry które zostaną użyte przy ładowaniu modułów). Są również konieczne do stworzenia plików znajdujących się w katalogu `/etc/modutils/` oraz zawartości pliku `/etc/modules` (który zawiera listę modułów ładowanych w czasie startu systemu).

Podobnie jak (nowe) pliki Configure.help, które teraz pomagają przy tworzeniu własnych wersji jądra, pakiet modconf zawiera pliki pomocy (znajdujące się w katalogu `/usr/lib/modules_help/`), które dostarczają szczegółowych informacji na temat parametrów właściwych dla poszczególnych modułów.

## Czy mogę bezpiecznie odinstalować pakiet ze starym jądrem?

Tak. Skrypt `kernel-image-NNN.prerm` sprawdza, czy jądro które chcesz usunąć nie jest tym, którego właśnie używasz. W każdym przypadku możesz usunąć pakiety z niechcianym jądrem używając polecenia

    dpkg --purge --force-remove-essential kernel-image-VVV

(zastępując oczywiście "VVV" numerem wersji jądra)