0.SPIS TRESCI | 3.POSTINSTALL

 

 

„Jajko na miękko” – czyli jak postawić jądro żeby się nie stłukło !!!

 

Motto:

Zanim zaczniemy jakąkolwiek przygodę radzę się dobrze zastanowić, czy tego chcemy ?!

Instalacja jądra może nam przysporzyć nielada kłopotów, a z normalnego człeka zrobić

frustrata i życiowego degenerata J - pod warunkiem, że będzie to system PLD.

 

[Dokumentacja dotyczy jąder z serii 2.4 i 2.6]

 

Prelekcja

 

Zadania jądra (kernela):

 

 

Budowa:

 

 

Moduły:

 

      powodują jego obciążenie i zajmują cenną pamięć.

insmod  załadowanie modułu do pamięci

rmmod  usuwa moduł

lsmod    wyświetla listę załadowanych modułów

depmodtworzy bazę modułów dostępnych w systemie    

 

[Moduł wolno usuwać tylko wtedy, gdy żaden proces ani żaden inny moduł nie korzysta z niego!]

 

Jakie jądro wybrać ??

 

 

Wybór dla zwykłego śmiertelnika jest oczywisty – wybierze kernela stabilnego.

Osoby, które lubią eksperymentować pokuszą się o wersje nieparzyste tym bardziej, że

wychodzą one bardzo często.

 

 

A skąd je pobrać ??

 

- kernel-headers-numer.wersji.rpm

- kernel-source-numer.wersji.rpm

 

Co pobrać ??

 

No właśnie!!!. Pobieramy wersje jąder sprawdzonych i nie chodzi mi tu o stabilne. Lepiej nie raz jest zassać wersje

z niższym numerkiem np. 2.4.28, niż najnowsze 2.6.9 jak to miało miejsce w moim przypadku.

Różnica jest taka, że przyjdzie nam przy wersji najwyższej uaktualniać dość dużo narzędzi, żeby można było skompilować dane jajko.

 

Które pobrać ??

 

Mamy do wyboru:

                       linux-numer.wersji.tar.gz

                        linux-numer.wersji.bz2

Różnią się one tylko metodą archiwizacji.

 

 

Archiwizery i kompresory

 

     Archiwizujemy pliki komendą: 

           

            tar   -cvf   archiwum.tar   pliki

            tar   -czvf   archiwum.tar.gz  pliki

            tar   - cjvf   archiwum.tar.bz2  pliki   

 

Rozpakowujemy:

           

            tar   -xvf   archiwum.tar   pliki

            tar   -xzvf   archiwum.tar.gz  pliki

            tar   -xjvf   archiwum.tar.bz2  pliki   

 

Archiwizujemy pliki komendą: 

 

gzip  plik

 

Rozpakowujemy:

 

            gunzip plik

 

Archiwizujemy pliki komendą: 

 

bzip2  plik

 

Rozpakowujemy:

 

            bunzip2 plik

To tyle dygresji powracamy do naszego jąderka

 

Meritum

 

Zabieramy się do pracy!!!

 

  1. Kopiujemy naszego kernela do /usr/src
  2. Rozpakowujemy w zależności od archiwum (patrz wyżej) np.

tar   –zxvf   linux-numer.wersji.tar.gz

  1. Aby nasze jądro można było spokojnie skompilować musimy mieć zainstalowane

pakiety:

-         make, bin86,egcs, glibc-devel

Te są najbardziej podstawowe. W zależności od jądra,

przyjdzie nam również zaktualizować kilka narzędzi.

Aby o tym się dowiedzieć przechodzimy do katalogu:

 

/usr/src/linux-nemer.wersji/Documentation/Changes

 

i weryfikujemy ostatnie wymagania – mogły się zmienić!

 

Zawartość pliku Changes dla jądra 2.6.9

 

 narzędzie

minimalna wersja

jak sprawdzić ?

o     Gnu C   

o     Gnu make

o     binutils

o     util-linux

o     module-init-tools

o     e2fsprogs

o     jfsutils

o     reiserfsprogs

o     xfsprogs   

o     pcmcia-cs

o     quota-tools

o     PPP  

o     isdn4k-utils

o     nfs-utils

o     procps

o     oprofile                    

2.95.3

3.79.1

2.12

2.10o

0.9.10

1.29

1.1.3

3.6.3

2.6.0

3.1.21

3.09

2.4.0

3.1pre1

1.0.5

3.2.0

0.5.3

# gcc --version

# make --version

# ld -v

# fdformat --version

# depmod -V

# tune2fs

# fsck.jfs -V

# reiserfsck -V 2>&1|grep reiserfsprogs

# xfs_db -V

# cardmgr -V

# quota -V

# pppd --version

# isdnctrl 2>&1|grep version

# showmount --version

# ps --version

# oprofiled –version

 

Łatanie jądra (patchowanie).

[Łatać jądro możemy tylko przed jego kompilacją!]

 

Nie ma systemu idealnego!. Tak jest też w przypadku systemu LINUX. Podczas tworzenia jądra autorom zdarzają się „dziury” J

Jak je naprawić?

bunzip2  patch_na_jadro.bz2

 

Kilka słów o samym programie patch

 

patch –p1 < patch_na_jądro             lub  

patch –p0 < patch_na_jądro

 

 

Na przykład, załóżmy, że nazwą pliku w łacie jest „/usr/src/linux/arch/boot”. Użycie opcji  -p” lub „-p0”

daje niezmienioną  nazwę, natomiast „-p1” daje „usr/src/linux/arch/boot  (bez początkowego ukośnika /),

„-p4” daje „arch/boot, a niepodanie parametru „-p” – „boot”.

Czyli parametr „-px” 'obcina' x początkowych parametrów ścieżki.

 

Jeżeli dodajesz patcha z katalogu programu (np /usr/src/linux) to:

patch -p1 < patch_na_jądro

ale jeżeli jesteś katalog wyżej (np w /usr/src dla źródeł linuxa) to:

patch -p0 < patch_na_jądro

 

Warto też pobrać patcha grsecurity-numer.patch ze strony http://grsecurity.com , który posiada

mnóstwo zabezpieczeń sieciowych, a także łata niedoskonałości twórców jądra.

Niestety na chwilę obecną jest dostępna wersja dla jąder do 2.6.7

W moim przypadku do jądra 2.6.9 zostały pobrane z www.kernel.org następujące patche:

1)  patch-2.6.10-rc2.bz2

2)  patch-2.6.10-rc2-bk15.bz2

3)  2.6.10-rc2-mm4.bz2

Okazało się,  że nie można było dodać wszystkich trzech!!!.

Pierwszy i drugi lub pierwszy i trzeci – w takich konfiguracjach jądro dało się skompilować.

W momencie, kiedy chcieliśmy dodać trzeci na pozostałe dwa lub drugi na pozostałe robiła

się niezła „kaszana” gdyż patch chciał zastępować wpisy poprzedniego.

Pojawiały się komunikaty w stylu:

 

Reversed (or previously applied) patch detected! Assume -R? [n]

 

Ja dodałem pierwszy i trzeci, gdyż patch 2.6.10-rc2-mm4.bz2 zawierał więcej poprawek od drugiego. J

 

Konfiguracja jądra !!!

 

Przechodzimy do katalogu (pod warunkiem, że rozpakowaliśmy tam jądro) /usr/src/linux-numer.wesj/

i wydajemy jedną z komend:

 

            make config

 

Ta opcja jest dla hardcorowców. Będziemy musieli przejść przez wszystkie możliwości odpowiadając na pytanie yes lub no!

 

            make menuconfig

 

Przyjemne menu graficzne, będziemy mogli zaznaczać interesujące nas opcje. POLECAM!

[UWAGA: Aby korzystać z tej opcji musimy mieć zainstalowane narzędzie ncurses wraz z bibliotekami.

 Są to biblioteki do rysowania ramek. W systemie PLD możemy sprawdzić czy mamy

 zainstalowane wydając komendę:

rpm  –qa  |  grep  ncurses   lub 

find  /  -name  ‘ncursese*’  -print

 Dla systemu PLD będziemy potrzebowali:

ncurses-numer.wersji.rpm

ncurses-ext-numer.wersji.rpm

ncurses-devel-numer.wersji.rpm

 Możemy też zainstalować ze źródeł

            http://ftp.gnu.org/pub/gnu/ncurses/  

]

 

            make xconfig

 

Menu graficzne oparte na bibliotece Qt

 

make gconfig

 

Zbliżone wyglądem do xconfig, lecz oparte o GTK+

[Powyższe dwie opcje można zastosować jeżeli mamy zainstalowane w systemie xWindowsy]

 

Po wydaniu jednego z powyższych poleceń zaznaczamy opcje w jądrze.

 

Podaruję sobie tutaj wymienianie wszystkich opcji jądra.

            - dla zainteresowanych podaję nasz plik z konfiguracji jajka 2.6

                        .config

            Teraz wystarczy skopiować go do katalogu, gdzie rozpakowaliśmy naszego kernela.

            Wydać polecenie np. make menuconfig i zobaczyć nasze zaznaczone opcje.

 

Możemy również skorzystać ze starego pliku .config wygenerowanego przez make menuconfig dla serii 2.4

            - jest tylko jedno „ale” – przed skopiowaniem musimy dodać do niego kilka krytycznych opcji:

 

CONFIG_INPUT=y
CONFIG_VT=y
CONFIG_VGA_CONSOLE=y
CONFIG_VT_CONSOLE=y

 

            - jeżeli tego nie zrobimy czeka nas po reboot ciemność J

 

Do każdego wyboru zazwyczaj w jajku jest help J

 

Można się posiłkować poniższymi linkami:

- http://www.linux.sky.pl/teksty/kernel.html

- http://www.kattserv.neostrada.pl/Linux/JADRO/jadrook.htm

 

Kompilacja jądra.  

 

Aby przystąpić do kompilacji wydajemy komendy:

Dla jądra 2.4:

           

make dep                                           - zrobi nam wszystkie powiązania

            make clean                                        - wyczyści wszystkie „śmieci” z kernela

            make bzImage (lub zImage)             - spakuje nam jądro odpowiednio: mocniej (lub mniej)  

 

Dla jądra 2.6 wystarczy wydać polecenie:

           

make bzImage                                   - dobrze spakuje nam jądro J

 

[Dla jąder 2.6 jest dostępna dodatkowa opcja make help. Warto zapoznać się z innymi opcjami kompilacji.]

 

Nasze skompilowane jąderko leży w katalogu /usr/src/linux-numer.wersji/arch/i386/boot/

Szukamy tam pliku bzImage lub zImage zależnie od metody kompilacji.

 

Jak już mamy spakowane jądro przechodzimy do kompilacja i instalacji modułów, jeżeli oczywiście

zaznaczyliśmy w opcjach jądra instalację danych pakietów jako moduły (opcja M).

Wydajemy polecenie :

 

            make modules                                               - kompilowanie modułów

            make modules_install                                   - instalowanie modułów          

 

[UWAGA: Jeżeli kompilujemy jądro o tym samym numerze jak wcześniej przed wydaniem polecenia

                  make modules_install usuwamy poprzednio zainstalowane moduły z katalogu:

.                       /lib/modules/numer.wersji/

      Przechodzimy do katalogu /lib/modules/ i wydajemy polecenie:

rm   –r  numer.wersji     

                  Zabieg ten uchroni nas  przed nadpisanie modułów. I komunikatem Unresolved symbol… J   

]

 

Instalacja jądra.

 

Aby nasze wypociny doszły do skutku musimy wykonać szereg poniższych czynności, a oto one:

            - kopiujemy spakowane jądro z katalogu /usr/src/linux-numer.wersji/arch/i386/boot/ do  /boot

                       

cp   /usr/src/linux-numer.wersji/arch/i386/boot/bzImage  /boot/vlimuz-numer.wersji

           

- kopiujemy plik mapy z katalogu /usr/src/linux-numer.wersji/  do /boot

           

            cp   /usr/src/linux-numer.wersji/System.map  /boot/System.map-numer.wersji

           

- kasujemy poprzednie dowiązanie pliku System.map

           

            rm   /boot/System.map

 

- tworzymy nowe dowiązanie System.map do nowej mapy System.map-numer.wersji

 

            cd  /boot  - aby przejść do katalogu

            ln  –s  System.map-numer.wersji  System.map

 

 

Ładowanie jądra.

 

To już prawie koniec J. Pozostało nam dodanie wpisów do naszego bootloadera.

W systemie PLD mieliśmy zainstalowany bootloader LILO.

O to przepis jajka na miękko J

 

Edytujemy plik /etc/lilo.conf i dopisujemy kilka linijek:

 

boot=/dev/hda
prompt
timeout=50
default=PLD-2.28

 

menu-title = “PLD Linux”

menu-scheme = “wk:kc:ck:CK”

 

read-only

lba32

                 

                   image=/boot/vlimuz

                   root=/dev/hda1

                   label=PLD-2.2.8

                   initrd=/boot/initrd

                 

                   password = nasze_hasło

                   restricted

 

       #to zostało dopisane

 

                   image=/boot/vlimuz-numer.wersji

                   root=/dev/hda1

                   label=PLD-2.6.10

                   initrd=/boot/initrd

                       

Zapisujemy zmiany w pliku i przeładowujemy bootloadera wydając komendę:

           

            lilo -v

 

Więcej na temat LILO znajdziecie w:

- http://www.linux.sky.pl/maciek/bootloadery.html

- http://man.digipedia.pl/ptm/man5/lilo.conf.5.html

 

Robimy:

reboot  lub

shutdown  –r  now  

           

I gotowe!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

Teraz tylko pozostało się modlić, żeby jako się nie stłukło J

 

                                                                                                                     

Reasumpcja.

 

Ogólnie rzecz biorąc instalacja jądra 2.6.9 przysporzyła nam niezły ból głowy.

Brakowało co chwila jakiś bibliotek. Jak się udało dodać wymagane narzędzia to pojawiały

się kolejne problemy.

O wiele sprawniej poszła instalacja jądra 2.4 + patch grsecurity.

Mamy nadzieję, że ten krótki tutorial pozwoli przejść przez ten proces szybko i bezboleśnie, a „zielonym”       

użytkownikom zaoszczędzić mnóstwo czasu.

Oto niektóre problemy i jak je rozwiązaliśmy:

           

1) configure: error: C preprocessor "/lib/cpp" fails sanity check

           

    Jak pojawi się taki problem należy zainstalować kernel-headers lub glibc-kernel-headers

    Kluczem do odpowiedzi na problemy przy ./configure jest config.log

 

            2) error kernel.sysrq

           

                Należy w jądrze zaznaczyć opcję Magic SysRq key (Kernel hacking) i je przekompilować.

                Jeżeli interesuje nas co należy zmienić, żeby nie uruchamiać tej opcji, aby system nie zgłaszał błędów -

                plik /etc/sysctl.conf da nam odpowiedz.          

           

            3) Jeżeli zapomnieliśmy jak podzieliliśmy partycje na danym dysku komenda:

                       

                fdisk -l /dev/hda

           

                odświeży nam pamięć J

 

 

0.SPIS TRESCI | 5.KONFIGURACJA SIECI