Gentoo Logo

Migracja na Gentoo Linux 2.6

Spis treści:

1.  Wprowadzenie

Co nowego w Linuksie 2.6?

To nie jest łatwe pytanie. Linux 2.6 jest rezultatem ponad 2-letniego rozwoju i stabilizacji kilku cech. Architektonicznie także różni się nieco od swojego odpowiednika, Linuksa 2.4. Niektóre z głównych zmian są wyszczególnione poniżej:

  • Polepszenie interaktywności schedulera procesów: Linux 2.6 pracuje bardzo płynnie na desktopach oraz radzi sobie znacznie lepiej pod obciążeniem niż 2.4.
  • Skalowalność: Linux skaluje się znacznie lepiej na małych urządzeniach osadzonych (ang. embedded devices) jak i na systemach wieloprocesorowych.
  • Wydajność: Szybkość popularnych aplikacji wzrosła.
  • Wsparcie sprzętowe: Żaden inny system operacyjny nie wspiera tylu architektur oraz urządzeń sprzętowych co Linux.

Joseph Pranevich napisał bardzo szczegółowy dokument, The Wonderful World Of Linux 2.6, który warto przeczytać. Jeśli jesteśmy zainteresowani szczegółami technicznymi, możemy spojrzeć do The post-halloween document - lecz należy pamiętać, że w pewnym sensie ten dokument jest już przestarzały.

Gentoo i 2.6

Od wydania Gentoo 2005.0, domyślnym jądrem jest najnowsze jądro serii 2.6. Domyślny profil jest brany z /etc/make.profiles, który od 2005.0 lub wyżej powinien być dowiązaniem symbolicznym do /usr/portage/profiles/default-linux/x86/2005.0 gdzie znajdują się różne ważne ustawienia systemowe.

Jeśli używamy profilu 2.4, wtedy należy zmienić profil na taki, który wspiera jądro 2.6, za pomocą:

Listing 1.1: Zmiana profilu

# rm -f /etc/make.profile
# ln -snf /usr/portage/profiles/default-linux/x86/2005.1
/etc/make.profile

Co to jest udev?

W przeszłości Gentoo zmuszało użytkowników do używania devfs w celu zarządzania katalogiem /dev, który zawiera szereg interfejsów urządzeń, które umożliwiają aplikacjom systemowym komunikację (poprzez jądro) ze sprzętem.

devfs jest dobrym modelem, jednakże zawiera pewne wewnętrzne problemy, więc został usunięty głównego stabilnego drzewa (2.6.13).

udev jest nowym sposobem zarządzania węzłami urządzeń. Rozwiązuje problemy poprzedniego menedżera urządzeń.

Powyższe zdania mogą nie brzmieć zbyt zrozumiale, ale bez obaw, ciężko pracujący deweloperzy Gentoo położyli ogromny nacisk na to, aby odejście od devfs było naprawdę łatwe. Po więcej informacji należy zajrzeć do dokumentu Praca z udev w Gentoo.

Co to jest ALSA?

Istnieje bardzo duże prawdopodobieństwo, że w jądrach serii 2.4 do obsługi karty dźwiękowej używaliśmy sterowników OSS (Open Sound System). Obecnie OSS jest zastępowane przez lepszy zbiór sterowników: ALSA.

ALSA (Advanced Linux Sound Architecture) jest nowym zbiorem sterowników kart dźwiękowych z nowym i ulepszonym interfejsem API, obecnym w jądrze 2.6. ALSA jest zgodna wstecz z aplikacjami OSS, pod warunkiem, że odpowiednio skonfigurujemy jądro!

Uwaga: Jeśli nie posiadamy jakichkolwiek urządzeń dźwiękowych, to możemy bezpiecznie ominąć wszelkie polecenia związane z ALSA.

Co to jest LVM?

Logical Volume Management (LVM) jest zestawem narzędzi pozwalających na zarządzanie pamięcią dyskową w bardzo elastyczny sposób. Pośród innych rzeczy, pozwala nam ono na rozbudowaną kontrolę nad partycjami (np. zmiana rozmiaru bez konieczności ponownego uruchamiania komputera) oraz wykonywanie operacji, takich jak przełączanie urządzeń, w bardzo prosty sposób. LVM działa jako alternatywa dla standardowego, opartego na podziale dysku na partycje zarządzania dysku.

Wsparcie dla LVM historycznie zostało wdrożone w Linuksie 2.4. Linuksa 2.6 cechuje nowa wersja LVM, nazwana LVM2. Proces przejścia na LVM2 wymaga instalacji nowych wersji narzędzi, których można używać z poziomu użytkownika (co omówione zostanie w dalszej części dokumentu) bez straty danych!

Jeśli w chwili obecnej nie używamy LVM, wtedy przejście na LVM2 nie stosuje się dla nas. W takim wypadku bezpiecznie możemy zignorować każdą część tego dokumentu odwołującą się do LVM lub LVM2. Uaktualnienie do Linuksa 2.6 nie wymaga przechowywania danych na partycjach LVM - możemy trzymać dane tak jak zawsze na normalnych partycjach.

Jeśli nie używamy LVM, ale uważamy, że pomysł LVM2 brzmi świetnie, wtedy możemy przekształcić dyski później, według wskazówek zawartych w dokumencie Instalacja LVM2 w Gentoo. Obecnie skoncentrujmy się tylko na płynnym przejściu na Linuksa 2.6.

2.  Przygotowania

Aktualizacja systemu

Niektóre zmiany wprowadzone wraz z Linuksem 2.6 wymagały również zmian w podstawowych aplikacjach systemowych. Przed kontynuacją należy upewnić się, że system jest aktualny. Aby być tego w 100% pewnym należy tam gdzie to możliwe uaktualnić wszystkie pakiety systemowe oraz world.

W szczególności należy się upewnić, że mamy najnowsze stabilne wersje pakietów:

  • sys-apps/baselayout
  • sys-apps/util-linux
  • sys-kernel/genkernel (tylko w przypadku jeśli chcemy używać genkernela)

Listing 2.1: Aktualizacja wszytkich pakietów world

# emerge --sync
# emerge -ua world

modutils a module-init-tools

sys-apps/modutils jest pakietem, który dostarcza narzędzi takich jak modprobe, rmmod i insmod dla Linuksa 2.4.

Linux 2.6 wprowadza nowy format modułów, a zatem wymaga nowych narzędzi do obsługi tych modułów. Są one zebrane w pakiecie sys-apps/module-init-tools.

Powinniśmy teraz usunąć modutils i zainstalować module-init-tools:

Listing 2.2: Przełączanie z modutils do module-init-tools

# emerge --unmerge sys-apps/modutils
# emerge module-init-tools

Uwaga: Bez obaw - pomimo że usunęliśmy modutils, module-init-tools zapewniają zgodność wstecz z Linuksem 2.4, więc nadal będziemy mogli załadować system Linux 2.4 i zarządzać modułami dla tego jądra.

Uwaga: Z tego powodu jeśli module-init-tools są już zainstalowane wraz z istniejącym jądrem Linux 2.4, to w takim wypadku nie należy się martwić - system już jest gotowy do obsługi modułów Linuksa 2.6.

Instalowanie udev

Niczego nie musimy konfigurować. Po prostu, aby zainstalować udev, używamy polecenia emerge:

Listing 2.3: Instalowanie udev

# emerge -a udev

Następnie, aby dowiedzieć się o różnicach pomiędzy udev a devfs, powinniśmy przeczytać Praca z udev w Gentoo.

Sprawdzanie niezbędnych węzłów urządzeń

Podczas uruchamiania komputera, system wymaga niektórych niezbędnych węzłów urządzeń. Jako, że udev nie jest zawarty w jądrze, więc nie jest on uruchamiany natychmiastowo. Aby to obejść należy się upewnić, że posiadamy niezbędne węzły urządzeń na dysku.

Pliki "stage" powinny stworzyć wymagane urządzenia podczas wstępnej instalacji. Jednakże niektórzy użytkownicy powiadomili nas o tym, że nie w tym rzecz. Skorzystamy z okazji, aby sprawdzić czy odpowiednie pliki urządzeń istnieją, stworzymy je jeśli nie będą istnieć.

Ponieważ istniejący menedżer urządzeń zostanie zamontowany w /dev, więc nie mamy do niego bezpośredniego dostępu. Zamontujemy więc partycję głównego systemu plików w innej lokalizacji i stamtąd dostaniemy się do katalogu /dev.

Listing 2.4: Montowanie głównego systemu plików i wyświetlanie urządzeń statycznych

# mkdir -p /mnt/temp
# mount -o bind / /mnt/temp
# cd /mnt/temp/dev
# ls -l console null

Jeśli powyższe polecenie ls wyświetliło, że console lub null nie istnieją, wtedy należy je stworzyć tak jak pokazano poniżej.

Listing 2.5: Tworzenie brakujących węzłów 'console' i 'null'

# mknod -m 660 console c 5 1
# mknod -m 660 null c 1 3

Teraz powinniśmy odmontować przed chwilą zamontowaną partycję głównego systemu plików, nawet jeśli nie musieliśmy tworzyć tych urządzeń:

Listing 2.6: Odmontowywanie partycji głównego systemu plików

# cd
# umount /mnt/temp
# rmdir /mnt/temp

Instalowanie narzędzi ALSA

ALSA wymaga zainstalowania pewnych pakietów, aby aplikacje mogły używać interfejsu API ALSA. Te pakiety pozwalają także na sterowanie poziomami głośności miksera. Instalujemy następujące narzędzia:

Listing 2.7: Instalowanie narzędzi i bibliotek ALSA

# emerge -a alsa-lib alsa-utils alsa-tools alsa-headers alsa-oss

3.  Instalowanie źródeł Linux 2.6

Wybór oraz instalacja jądra

Po pierwsze należy zainstalować wybrane źródła jądra 2.6. Dwoma jądrami 2.6 wspieranymi przez Gentoo są obecnie gentoo-sources (dla desktopów) oraz hardened-sources (dla serwerów). Istnieją jeszcze inne, których szczegółowy opis znajduje się w dokumencie Omówienie źródeł jądra dostępnych w Gentoo.

W tym przewodniku używamy jako przykładu gentoo-sources. Instalujemy wybrane źródła jądra przy pomocy narzędzia emerge:

Listing 3.1: Instalowanie gentoo-sources

# emerge -a gentoo-sources
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild  NS   ] sys-kernel/gentoo-sources-2.6.10-r4

Do you want me to merge these packages? [Yes/No] y

Podczas wykonywania powyższego polecenia, jeśli emerge zwróci nam, że chce zainstalować wersję 2.4 gentoo-sources (np. gentoo-sources-2.4.26), wtedy znaczy to tyle, że używamy złego profilu. Aby przełączyć się na profil oparty na jądrze 2.6 należy posłużyć się Przewodnikiem po aktualizacji Gentoo.

Aktualizacja dowiązania symbolicznego /usr/src/linux

Różne komponenty Gentoo bazują na (lub chcą się skompilować z) /usr/src/linux, będącym dowiązaniem symbolicznym do źródeł jądra, którego obecnie używamy.

Następnie uaktualnimy dowiązanie /usr/src/linux do miejsca w którym znajdują się nowo zainstalowane źródła jądra. Kontynuując:

Listing 3.2: Aktualizacja dowiązania /usr/src/linux

# cd /usr/src
# ln -sfn linux-2.6.10-gentoo-r4 linux

4.  Znane pułapki podczas przesiadki na Linuksa 2.6

Przed przystąpieniem do konfiguracji jądra, spróbujemy wyszczególnić najczęstsze błędy podczas przesiadki na Linuksa 2.6, gdyż niektóre z tych punktów będą miały wpływ na sposób konfiguracji jądra.

Uwaga: Nie wszystkie punkty są niezbędne na tym etapie, ale wyszczególnimy je wszystkie w jednym miejscu, po to abyśmy mogli się odnieść do nich później.

Nie należy używać polecenia "make oldconfig" z plikiem konfiguracyjnym '.config' jądra 2.4

Uwaga: Jeśli nie wiemy co to znaczy nie należy się tym przejmować, gdyż nie zrobimy tego błędu, jeśli podążymy poprawnie za pozostałą częścią tego przewodnika.

Będziemy musieli odpowiedzieć na wiele pytań, ponieważ istnieje ogromna ilość zmian. Wielu użytkowników próbujących wykonać polecenie make oldconfig z plikiem konfiguracyjnym jądra 2.4 kończy na stworzeniu niedziałającego jądra (np. brak wyjścia na monitorze, brak wejścia z klawiatury, itd.). Należy oszczędzić sobie kłopotu i użyć tradycyjnej metody konfiguracji - menuconfig.

Nie należy używać ide-scsi w celu nagrania na CD lub DVD

W Linuksie 2.4, jedynym sposobem, aby otrzymać dobre rezultaty nagrania CD lub DVD należało załączyć (raczej brzydką) emulację ide-scsi. Na szczęście warstwa IDE w Linuksie 2.6 została rozszerzona tak, aby lepiej wspierała nagrywarki CD/DVD.

Aby uaktywnić nagrywanie CD nie trzeba załączać żadnych dodatkowych opcji. Wystarczy nie załączać ide-scsi jak dawniej.

PC Speaker jest teraz konfigurowalną opcją

Nie otrzymamy żadnych sygnałów dźwiękowych z konsoli (lub żadnej innej odpowiedzi z PC speakera) jeśli nie załączymy nowej opcji PC speaker (CONFIG_INPUT_PCSPKR):

Listing 4.1: Miejsce opcji PC speaker

Device Drivers  --->
 Input device support  --->
  [*] Misc
   <*>   PC Speaker support

Uwaga: Poprzez "PC speaker", odnosimy się do analogowego głośnika, który brzęczy podczas startu systemu, nie odnosimy się do standardowych urządzeń dźwiękowych grających muzykę, itd.

Nowy sterownik urządzeń blokowych USB Storage sprawia czasem problemy

Niedawno nowy sterownik urządzeń USB storage został dodany do jądra. Podczas pisania tego tekstu, ten sterownik ("ub") jest nadal we wczesnym stadium rozwoju i niektórzy użytkownicy uważają, że jest nierzetelny. Jeśli mamy problemy z dostępem do dysku twardego, czytnika kart, aparatu cyfrowego lub dysku flash podpiętych do USB wtedy powinniśmy powrócić do starszego sterownika typu SCSI:

Listing 4.2: Wyłączanie ub

Device Drivers  --->
 Block devices  --->
  < > Low Performance USB Block driver

Uwaga: Starszy sterownik typu SCSI (USB Mass Storage support) jest domyślnie załączony. Sterownik ten może być znaleziony w "Device Drivers --> USB support", lecz nie zadziała on pod obecność sterownika ub wkompilowanego w jądro.

usbdevfs przemianowany na usbfs

Jeśli w pliku /etc/fstab mamy wpis, który montuje system plików urządzenia USB, to należy zmienić w tym wpisie system plików z usbdevfs na usbfs.

Uwaga: Ostatnie jądra 2.4 pozwalają na używanie "usbfs" oraz "usbdevfs", więc zmieniając system plików będziemy zgodni z poprzednimi wersjami.

Nie należy zmieniać poziomu uprzejmości (ang. renice) środowiska X

Użytkownicy desktopów 2.4 bardzo często przerabiają system tak, aby środowisko X było uruchamiane z wyższym priorytetem, gdyż w niektórych przypadkach prowadzi to do poprawy wydajności desktopu.

W 2.6 scheduler został gruntownie przebudowany co zmieniło jego zachowanie. Jeśli nadal chcielibyśmy uruchamiać środowisko X na wyższym priorytecie, wtedy zarządca wykona to co do niego należy (uruchomi display server na bardzo wysokim priorytecie), a my zauważymy konsekwencje w postaci jąkających się i wolno ładujących się aplikacji, ponieważ procesor będzie poświęcał za dużo mocy obliczeniowej tylko i wyłącznie na X-y.

W Linuksie 2.6, aby uzyskać dobrą interaktywność nie trzeba już zmieniać poziomu "uprzejmości" aplikacji desktopowych. Należy usunąć przeróbki z "niceness"!

Plik konfiguracyjny X11 powinien używać /dev/input/mice dla myszy PS/2 i USB

Jedną z domyślnych zmian, którą wprowadza udev jest inna struktura węzłów urządzeń myszy. Poprzednio używaliśmy /dev/psaux i /dev/mouse. Teraz będziemy mieli węzły takie jak /dev/input/mouse0, /dev/input/mouse1 i zbiorczy węzeł /dev/input/mice, który łączy ruchy wszystkich myszy.

Ponieważ stare konfiguracje X-ów typowo odnoszą się do /dev/mouse lub /dev/psaux, podczas uruchamiania X11 może zostać wyświetlony błąd podobny do poniższego:

Listing 4.3: Częsty błąd podczas uruchamiania po raz pierwszy X-ów na systemie udev

(EE) xf86OpenSerial: Cannot open device /dev/mouse
        No such file or directory.
(EE) Mouse0: cannot open input device
(EE) PreInit failed for input device "Mouse0"
No core pointer

Aby to naprawić należy otworzyć plik konfiguracyjny X11 w ulubionym edytorze i zaktualizować wpis dla myszki InputDevice, tak aby używać urządzenia /dev/input/mice. Przykład znajduje się poniżej:

Listing 4.4: Otwieranie pliku konfiguracyjnego X11

# nano -w /etc/X11/xorg.conf

Uwaga: Jeśli nadal używamy XFree86, naszym plikiem konfiguracyjnym będzie /etc/X11/XF86Config.

Listing 4.5: Przykładowa część InputDevice myszy

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mice"
EndSection

Uwaga: Jeśli używamy myszy podłączonej do portu szeregowego, to nazwą nowego urządzenia będzie /dev/tts/0 zamiast /dev/ttyS0.

Nowe sterowniki Serial-ATA (SATA) nazywają inaczej urządzenia

Jeśli pod Linuksem 2.4 używaliśmy oryginalnych sterowników Serial ATA, wtedy prawdopodobnie zauważyliśmy, że urządzenia SATA nazywały się chociażby /dev/hde.

Linux 2.6 wprowadza nowe sterowniki SATA (libata), które bazują na podsystemie SCSI. Jako, że sterowniki są oparte na SCSI, więc dyski SATA pojawią się teraz jako urządzenia SCSI. Pierwszy dysk SATA zostanie nazwany /dev/sda. Należy więc uaktualnić plik /etc/fstab oraz pamiętać o tym podczas wybierania parametrów ładowania jądra root i real_root.

Uwaga: libata został zawarty w ostatnich wersjach Linuksa 2.4, więc nowe nazewnictwo może być już znane.

bootsplash nie jest już rozwijany

Jeśli używaliśmy jądra gentoo-sources-2.4, mogliśmy korzystać z zespołu funkcji bootsplash w celu otrzymania kolorowego bufora ramki konsoli.

Wygląda na to, że deweloper bootsplasha stracił zainteresowanie tym projektem, tłumacząc się problemami z projektowaniem. Jednakże deweloper Gentoo Michał Januszewski stworzył następcę bootsplasha, gensplash, który jest zawarty w jądrze gentoo-sources-2.6. W celu zapoznania się z instalacją oraz konfiguracją gensplasha należy posłużyć się dokumentem Gensplash in 5 easy steps.

Sterowniki I2C są zawarte w jądrze

Jeśli używamy lm-sensors, aby monitorować temperatury systemu i poziom baterii, to poprzednio, w celu dostarczenia wsparcia sprzętowego, musieliśmy zainstalować pakiet i2c.

Sterowniki sprzętu I2C są zawarte w jądrze Linux 2.6, więc żaden zewnętrzny pakiet i2c nie jest wymagany. Należy pamiętać o wkompilowaniu w jądro specyficznych urządzeń I2C. Wtedy będziemy mogli korzystać z lm-sensors jak zwykle.

5.  Konfiguracja, kompilacja i instalacja jądra

Tak jak w Linuksie 2.4, z kompilacją jądra możemy sobie poradzić na 2 sposoby.

  1. Domyślną metodą jest ręczna konfiguracja jądra. Może to brzmieć zniechęcająco, ale to jest preferowana metoda pod warunkiem, że znamy nasz system. Jeśli chcemy skonfigurować jądro ręcznie, to należy przejść do następnego rozdziału.
  2. Alternatywnie można użyć narzędzia genkernel, aby on automatycznie skonfigurował, skompilował i zainstalował jądro. Jeśli chcemy użyć genkernela, wtedy należy opuścić następny rozdział i przejść do rozdziału Używanie genkernela.

6.  Domyślnie: Ręczna konfiguracja

Konfiguracja jądra

Zajmiemy się teraz konfiguracją jądra. Otwieramy menuconfig:

Listing 6.1: Wywoływanie menuconfig

# cd /usr/src/linux
# make menuconfig

Prawdopodobnie zapoznaliśmy się już z menuconfig podczas konfiguracji jąder 2.4. Na szczęście wizerunek nie zmienił się prawie wcale, lecz można zaobserwować znacznie lepszą organizację opcji jądra oraz dużo nowych opcji, których nie było w 2.4.

Należy się upewnić, że mamy załączone następujące opcje jądra:

Listing 6.2: Wymagana opcje jądra

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(wymagane dla wsparcia udev):
General setup  --->
 [*] Support for hot-pluggable devices

(wymagane dla wsparcia ALSA):
Device Drivers  --->
 Sound  --->
  <*> Sound card support
  Advanced Linux Sound Architecture  --->
   <M> Advanced Linux Sound Architecture
   <M> Sequencer support
   <M> OSS Mixer API
   [*] OSS Sequencer API
   (nie należy zapomnieć o wyborze karty dźwiękowej z
podmenu!)

(wymagane jeśli używamy LVM do zarządzania dyskami):
Device Drivers  --->
 Multi-device support (RAID and LVM)  --->
  [*] Multiple devices driver support (RAID and LVM)
   <*>   Device mapper support

Ostrzeżenie: Poprzednio mogliśmy załączać wsparcie dla systemu plików /dev (teraz oznaczone jako OBSOLETE). Nie należy załączać wsparcia devfs. Zainstalowaliśmy udev, którego będziemy używać zamiast devfs.

Należy także pamiętać o włączeniu wsparcia dla systemów plików, których używamy i dla sprzętu obecnego w komputerze. Jeśli chcemy korzystać z DMA, należy się upewnić, że załączyliśmy wsparcie dla kontrolera IDE naszej płyty głównej. Po więcej informacji należy spojrzeć do rozdziału Konfiguracja jądra z Podręcznika Gentoo.

Kompilacja jądra

Po skonfigurowaniu przystępujemy do kompilacji jądra:

Listing 6.3: Kompilacja źródeł jądra

# make && make modules_install

Uwaga: Podczas kompilacji Linuksa 2.4 powinno się jeszcze wykonać polecenie make dep czego z Linuksem 2.6 już nie trzeba robić.

Czekamy na zakończenie kompilacji jądra (obserwując bardziej czytelne wyjście kompilacji).

Instalowanie jądra

Następnym krokiem jest zamontowanie partycji /boot i skopiowanie obrazu jądra. Konfigurację bootloadera musimy zaktualizować ręcznie.

Listing 6.4: Instalowanie jądra

# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.10-gentoo-r4

Należy zauważyć, że powyższe polecenia są tylko przykładowe, powinno się wykonać zwykłe polecenia aktualizacji jądra poprzez polecenia z Podręcznika Gentoo (rozdział Konfiguracja jądra).

Podczas aktualizacji konfiguracji bootloadera nie należy usuwać starego wpisu wskazującego na jądro 2.4. Tym sposobem łatwo będziemy mogli przełączać się pomiędzy nimi dwoma jeśli coś nie zadziała.

Następnie przechodzimy do rozdziału Konfiguracja modułów.

7.  Alternatywnie: Używanie genkernela

Jeśli preferujemy użycie skryptu genkernel zamiast ręcznej kompilacji jądra, zapewne uszczęśliwi nas fakt, że proces tworzenia jądra 2.6 przez skrypt genkernel jest bardzo podobny do procesu tworzenia jądra 2.4.

Wywołujemy genkernela jak pokazano poniżej:

Listing 7.1: Wywoływanie genkernela z niektórymi popularnymi argumentami

# genkernel --udev --menuconfig --bootloader=grub all

W powyższym przykładzie korzystamy z możliwości otwarcia menuconfig, co pozwoli nam dostosować konfigurację jądra (jeśli sobie tego życzymy) i umożliwi, po kompilacji, uaktualnienie konfiguracji bootloadera Grub.

Powinniśmy wybrać odpowiadające nam argumenty genkernela, ale nie należy zapomnieć o argumencie --udev! Po dodatkowe informacje należy spojrzeć do Konfiguracji jądra genkernel oraz rozdziału Konfiguracja jądra z Podręcznika Gentoo.

Jeśli wybierzemy ręczne uaktualnienie bootloadera, wtedy musimy pamiętać o dodaniu parametru jądra udev. Przykładowa część pliku konfiguracyjnego Gruba jest pokazana poniżej, ale należy tak dobrać parametr real_root, aby pasował do naszego systemu.

Listing 7.2: Przykładowy plik konfiguracyjny Gruba dla genkernela + udev

title Gentoo Linux (2.6 kernel)
root (hd0,0)
kernel /kernel-2.6.10-gentoo-r4 udev root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3
initrd /initrd-2.6.10-gentoo-r4

8.  Konfiguracja modułów

Instalowanie zewnętrznych modułów

Wielu użytkowników dodatkowo jest uzależniona od modułów jądra, które są skompilowane na zewnątrz drzewa jądra. Typowymi przykładami są binarne sterowniki graficzne ATI oraz Nvidia. Teraz należy zainstalować te moduły, zostaną ona skompilowane ze źródłami 2.6 znalezionymi w /usr/src/linux. Dla wszystkich zewnętrznych modułów używanych wraz z jądrem 2.4 zwykle wystarcza emerge nazwa_pakietu.

Po więcej informacji sięgamy do rozdziału Konfiguracja jądra z Podręcznika Gentoo.

Automatyczne ładowanie modułów

Niektóre komponenty możemy mieć skompilowane jako moduły (w przeciwieństwie do tych wkompilowanych w jądro) i chcielibyśmy, tak jak w 2.4, je automatycznie ładować podczas startu systemu. Jeśli zainstalowaliśmy zewnętrzne moduły z drzewa Portage (jak opisane powyżej) prawdopodobnie również będziemy chcieli je ładować automatycznie podczas startu systemu.

Podobnie jak w przypadku 2.4 otwieramy plik /etc/modules.autoload.d/kernel-2.6 w ulubionym edytorze i wpisujemy nazwy modułów, które mają się automatycznie ładować.

Listing 8.1: Otwieranie listy automatycznego ładowania modułów w nano

# nano -w /etc/modules.autoload.d/kernel-2.6

Listing 8.2: Przykładowa lista automatycznego ładowania modułów 3c59x i nvidia

# /etc/modules.autoload.d/kernel-2.6:  kernel modules to load when system
# boots.
#
# Note that this file is for 2.6 kernels.
#
# Add the names of modules that you'd like to load when the system
# starts into this file, one per line.  Comments begin with # and
# are ignored.  Read man modules.autoload for additional details.

3c59x
nvidia

9.  Przesiadka z LVM na LVM2

Aktualizacja do narzędzi LVM2

Uwaga: Jeśli nie używamy LVM do zarządzania pamięciową dyskową, wtedy możemy bezpiecznie opuścić ten fragment i przejść do następnego rozdziału.

Na szczęście aktualizacja z narzędzi użytkownika LVM1 do wersji LVM2 jest bardzo prosta:

Listing 9.1: Aktualizacja narzędzi użytkownika z LVM1 do LVM2

# emerge --unmerge lvm-user
# emerge lvm2

Uwaga: Będziemy musieli ponownie zainstalować lvm-user w przypadku gdy planujemy ponownie uruchamiać system z jądrem serii 2.4, ponieważ pakiet lvm2 nie poradzi sobie w takim przypadku.

10.  Uruchamianie systemu Linux 2.6

Nadszedł czas, aby uruchomić Linuksa 2.6. Zamykamy wszystkie aplikacje i uruchamiamy ponownie:

Listing 10.1: Uruchamianie ponowne

# umount /boot
# reboot

Podczas ładowania systemu, jeśli prawidłowo podążaliśmy według instrukcji tego dokumentu, w bootlaoderze powinniśmy otrzymać do wyboru opcję uruchomienia systemu Linux 2.4 lub Linux 2.6. Wybieramy Linux 2.6.

Po uruchomieniu systemu należy sprawdzić czy wszystko działa. Jeśli popełniliśmy błąd podczas konfiguracji jądra, nie należy się tym przejmować można wrócić do rozdziału Konfiguracja, kompilacja i instalacja jądra, wykonać zmianę, ponownie skompilować i zainstalować jądro, po czym uruchamić ponownie system!

Konfiguracja i regulacja głośności ALSA

Zakończymy teraz konfigurację ALSA i zwiększymy głośność kanałów audio. Pakiety ALSA dostarczają użytecznego narzędzia, który sprawia, że proces ten jest całkiem prosty:

Listing 10.2: Wywoływanie narzędzia automatycznej konfiguracji ALSA

# alsaconf

Cały proces jest bardzo łatwy: pozwalamy na automatyczną aktualizację pliku /etc/modules.d/alsa i na ponowne załadowanie modułów ALSA. alsaconf wtedy zakończy działanie, jednakże jeśli posiadamy kilka urządzeń dźwiękowych zainstalowanych w systemie, należy uruchmić alsaconf kilka razy.

Następnie dodajemy alsasound do poziomu uruchamiania o nazwie 'boot', po to, aby poziomy głośności zostały zapamiętane przy wyłączaniu komputera i zostały odzyskane podczas ładowania systemu:

Listing 10.3: Dodawanie alsasound do poziomu uruchamiania o nazwie 'boot'

# rc-update add alsasound boot

Uwaga: Narzędzie alsaconf wybiera dla naszych urządzeń wstępne poziomy dźwięku. Jeśli będą one niepoprawne, można je w każdej chwili zmienić za pomocą narzędzia alsamixer.

Jakieś nagłe problemy?

Na tym etapie powinniśmy wrócić do rozdziału Znane pułapki podczas przesiadki na Linuksa 2.6, która może być użyteczna jeśli wystąpią jakiekolwiek nagłe problemy.

11.  Pliki nagłówka i NPTL

Udało się uruchomić Linuksa 2.6 i miejmy nadzieję, że wszystkie nasze problemy są już rozwiązane. Teraz zaktualizujemy pliki nagłówków jądra Linuksa i ponownie zainstalujemy glibc, po to aby aplikacje z obszaru użytkownika skorzystały z nowych funkcji jądra 2.6.

Listing 11.1: Aktualizacja pakietu linux-headers

# emerge -u linux-headers

Po aktualizacji pakietu z nagłówkami, powinniśmy ponownie zainstalować glibc. Możemy być zainteresowani nową funkcją - NPTL. NPTL jest nowym modelem wątkowym (ang. threading model) obecnym w Linuksie 2.6, który charakteryzuje się znacznie szybszymi czasami tworzenia i niszczenia wątków. Nie zrobi to różnicy na większości systemów, ale można to załączyć podczas przesiadki! Aby załączyć NPTL edytujemy /etc/make.conf, dodając nptl do zmiennych USE.

Ostrzeżenie: Jeśli załączymy flagę "nptlonly", należy być świadomym, że nie będziemy już mogli załadować jądra 2.4.

Teraz instalujemy ponownie glibc (wykonujemy to nawet jeśli nie załączyliśmy NPTL).

Listing 11.2: Ponowna instalacja glibc z nowymi nagłówkami jądra

# emerge -a glibc

Jeśli załączyliśmy NPTL, to istniejące pliki binarne nie będą go używać dopóki nie skompilujemy ich ponownie. Jednakże od tej pory jakiekolwiek skompilowane pliki binarne będą używać NPTL. Jeśli chcemy ponownie skompilować wszystkie pakiety to wykonujemy:

Listing 11.3: Ponowna kompilacja wszytkich pakietów w systemie

# emerge -e world

Alternatywnie możemy pozwolić naszemu systemowi "naturalnie" przekonwertować się na NPTL, po prostu podczas aktualizacji do nowszych wersji pakietów.

12.  Uwagi końcowe

Problemy?

Wykonaliśmy ogromną pracę, aby przesiąść się na Linuksa 2.6, czasem jest to nieuniknione, że rzeczy które przedtem sprawnie działały, dłużej nie będą funkcjonować tak jak oczekujemy.

Jeśli mamy jakiekolwiek problemy z jądrem 2.6, a problem ten nie występuje z Linuksem 2.4, wtedy należy wysłać błąd na Bugzillę. Zbadamy sprawę i jeśli dojdziemy do wniosku, że problemem jest jądro, wtedy możemy wysłać prośbę o zgłoszenie tego błędu do centralnej Bugzilli jądra.

Zakończenie

Mamy nadzieję, że migracja została zakończone pomyślnie i że jądro 2.6 działa bez problemów.

Chcielibyśmy złożyć podziękowania wielu użytkownikom, którzy efektywnie 'testowali' ten dokument, gdy był we wczesnym stadium rozwoju i dostarczyli opinii o tym jak przebiegł proces przesiadki. Przepraszamy za brak odpowiedzi na niektóre e-maile (a było ich naprawdę wiele). Wszystkie zostały przeczytane co pozwoliło na odpowiednie udoskonalenie tego dokumentu. A teraz delektujmy się naszym systemem wzbogaconym o jądro 2.6. :)

Usuwanie Linuksa 2.4 z systemu

Pracując przez jakiś czas na 2.6, możemy zdecydować się na usunięcie Linuksa 2.4. Odpowiednie kroki znajdują się poniżej. Należy kierować się tymi wskazówkami tylko w przypadku gdy jesteśmy pewni, że nie chcemy lub nie potrzebujemy używać ponownie jądra 2.4!

Kod źródłowy jądra 2.4 usuwamy za pomocą narzędzia emerge. Przykładowo zakładając, że używamy wersji 2.4 jąder vanilla-sources oraz gentoo-sources możemy posłużyć sie następującym poleceniem w celu ich usunięcia oraz pozostawienia wersji 2.6 nietkniętej:

Listing 12.1: Przykład: Usuwanie źródeł Linuksa 2.4

# emerge --unmerge =vanilla-sources-2.4.* =gentoo-sources-2.4.*

Portage nie wyczyści całkowcie źrodeł jądra 2.4, ponieważ podczas kompilacji tworzone są niektóre pliki tymczasowe. Bezpiecznie jest usunąć te pozostałości ręcznie następującym poleceniem:

Listing 12.2: Usuwanie pozostałych plików tymczasowych

# rm -rf /usr/src/linux-2.4.*

Możemy dodatkowo usunąć moduły i pliki informacyjne odnoszące sie do starej instalacji jądra 2.4, gdyż już nie są potrzebne.

Listing 12.3: Usuwanie poprzednio zainstalowanych modułów 2.4

# rm -rf /lib/modules/2.4.*

Pliki binarne jądra 2.4 używane do ładowania systemu również mogą być usunięte. Należy zamontować partycję /boot i usunąć te obrazy. Powinniśmy również uaktualnić konfigurację bootloadera, po to aby więcej nie odwoływał się do usuniętych obrazów jądra.

Niektórzy użytkownicy Linuksa 2.4 uprzednio zainstalowali pakiet alsa-driver, aby korzystać z nowych możliwości dźwiękowych zawartych w Linuksie 2.6. Jeśli jesteśmy jednym z nich i postąpiliśmy według wcześniejszej wskazówki, żeby wkompilować ALSA w źródła jądra 2.6 (w przeciwieństwie do pakietu alsa-driver), wtedy możemy bezpiecznie usunąć ten pakiet, aby zapobiec konfliktom.

Dodatkowo użytkownicy lm-sensors, którzy poprzednio używali pakietu i2c. Jak wcześniej zostało wspomniane sterowniki I2C są już zawarte w jądrze, więc ten pakiet może być usunięty w celu zapobieżenia konfliktom w przyszłości.

Demon zarządzający devfs, devfsd, należy również usunąć, gdyż teraz do zarządzania urządzeniami używamy udev.

Listing 12.4: Usuwanie alsa-driver, i2c i devfsd

# emerge --unmerge alsa-driver i2c devfsd

Jeśli używamy LVM1, to możemy zechcieć przekształcić nasze dane na format LVM2 w celu skorzystania z funkcji jakie niesie ze sobą LVM2. Jednakże ta operacja uniemożliwi dostęp do danych znajdujących się na partycji LVM z jądra 2.4. Jeśli nadal chcemy przekszałcić partycję (to jest zupełnie dobrowolne!), wtedy należy przestudiować stronę man narzędzia vgconvert, aby się dowiedzieć jak taką operację przeprowadzić. Przykład jest podany poniżej, gdzie main jest nazwą woluminu grupy.

Listing 12.5: Przekształcenie woluminu LVM1 na format LVM2

# vgconvert -M2 main


Drukuj

Zaktualizowano 5 marca 2008

Podsumowanie: Ten dokument pomaga podczas migracji z Linuksa 2.4 na Linuksa 2.6, z devfs na udev, z OSS na ALSA i z LVM na LVM2.

Daniel Drake
Autor

Sergey Galkin
Współpracownik

Sergey Kuleshov
Współpracownik

Xavier Neys
Redaktor

Benny Chuang
Redaktor

Mateusz Kotyrba
Tłumaczenie

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.