<chapt id="kernel">Debian i jądro systemu

<sect id="non-debian-kernel">Czy mogę skompilować i zainstalować jądro systemu
bez dostosowywania go do specyfiki Debiana?

<p>Tak.

<p>Z jednym tylko zastrzeżeniem: biblioteki języka C w systemie Debian
są budowane z wykorzystaniem najnowszych <em>stabilnych</em> wersji plików
nagłówkowych <strong>jądra systemu</strong>. 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 (<package/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 
<file>/usr/src/linux/</file>, wtedy przy kompilowaniu do polecenia musisz 
dodać opcję <tt>-I/usr/src/linux/include/</tt>.

<sect id="customkernel">Jakich narzędzi dostarcza system Debian w celu 
budowania własnych wersji jądra systemu?

<p>Użytkownicy którzy pragną zbudować własną wersję jądra systemu mogą pobrać
i zainstalować pakiet <package/kernel-package/. Zawiera on skrypt wykonujący
kompilację i umożliwia stworzenie pakietu Debiana z gotowym jądrem przy pomocy
polecenia  <example>make-kpkg kernel_image</example>, 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 <example>make-kpkg --help</example>
lub podręcznika systemowego <manref name="make-kpkg" section="1">.

<p>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).

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

<list>
  <item>Rozpakować pliki źródłowe jądra i przenieść się do nowo powstałego
    katalogu przy pomocy polecenia <tt>cd</tt>.
  <item>Dostosować konfigurację jądra do własnych potrzeb przy pomocy jednego
  	z poniższych poleceń:
    <list>
      <item><tt>make config</tt>
        (interfejs tekstowy zadający kolejno pytania).
      <item><tt>make menuconfig</tt> (interfejs tekstowy wykorzystujący 
      	bibliotekę ncurses z opcjami pogrupowanymi w menu).
        Aby móc korzystać z tego polecenia musisz mieć
	    zainstalowany pakiet <package/libncurses5-dev/.
      <item><tt>make xconfig</tt>  (interfejs graficzny X11).
        Korzystanie z tej opcji wymaga zainstalowania istotnych pakietów
	    związanych z X11 i Tcl/Tk.
    </list>
    Wykorzystanie któregokolwiek z powyższych poleceń spowoduje utworzenie
    nowego pliku <tt>.config</tt> w katalogu z plikami źródłowymi.

  <item>Wprowadzić polecenie: <tt>make-kpkg -rev TwojaNazwa.N kernel_image
    </tt>, 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.:
    <tt>kernel-image-2.2.14_TwojaNazwa.1_i386.deb</tt> dla jądra w wersji
    2.2.14.

  <item>Zainstalować stworzony w ten sposób pakiet.
    <list>
      <item>Uruchom <tt>dpkg --install /usr/src/kernel-image-VVV_Custom.N.deb
        </tt> aby zainstalować jądro. Skrypt instalacyjny:
        <list>
          <item>uruchomi program ładujący system, LILO (jeśli ten jest
	    zainstalowany),
          <item>zainstaluje skompilowane przez Ciebie jądro w katalogu /boot 
	    pod nazwą vmlinuz_VVV-TwojaNazwa.N i stworzy odpowiednie
	    dowiązania symboliczne.
          <item>zapyta użytkownika czy wykonać dyskietkę startową. Dyskietka 
	    taka zawiera jedynie plik z jądrem. Aby dowiedzieć się więcej
	    zobacz <ref id="custombootdisk">.
        </list>
          <item>Aby wykorzystać jeden z pozostałych programów ładujących
	    system takich jak <package/grub/ czy <tt/loadlin/, skopiuj ten plik
	    w inne miejsce (np. do katalogu /boot/grub lub na partycję
	    z systemem plików <tt>MS-DOS</tt>).
    </list>
  </list>

<!-- TODO: check out a new source of details, this README isn't too useful,
I'm told (joy) -->
<sect id="custombootdisk">W jaki sposób mogę wykonać własną wersję dyskietki 
  startowej?

<p>Do tego celu możesz z powodzeniem posłużyć się pakietem 
<package/boot-floppies/, który znajduje się w sekcji <tt>admin</tt> zasobów
FTP Debiana. Skrypt powłoki znajdujący się w tym pakiecie tworzy
dyskietki startowe w formacie <tt>SYSLINUX</tt>. Są to dyskietki z systemem
plików <tt>MS-DOS</tt>, 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.

<p>Więcej informacji znajdziesz w pliku <tt>/usr/doc/boot-floppies/README</tt>
po zainstalowaniu pakietu <package/boot-floppies/.

<sect id="modules">Jakie narzędzia udostępnia Debian do obsługi modułów?

<p>Pakiet Debiana <package/modconf/ udostępnia skrypt powłoki
(<tt>/usr/sbin/modconf</tt>), 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 <tt>/etc/modules.conf</tt> (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 <tt>/etc/modutils/</tt>
oraz zawartości pliku <tt>/etc/modules</tt> (który zawiera listę modułów
ładowanych w czasie startu systemu).

<p>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 <tt>/usr/lib/modules_help/</tt>), które dostarczają
szczegółowych informacji na temat parametrów właściwych dla poszczególnych
modułów.

<sect id="removeoldkernel">Czy mogę bezpiecznie odinstalować pakiet ze starym
   jądrem?

<p>Tak. Skrypt <tt>kernel-image-NNN.prerm</tt> 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

<example>dpkg --purge --force-remove-essential kernel-image-VVV</example>

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