Migracja na Gentoo Linux 2.6
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.
-
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.
-
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)
General setup --->
[*] Support for hot-pluggable devices
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
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
|
|