Debian posiada swoją własną metodę kompilacji jądra i powiązanych z nim modułów. Zobacz również Debian i kernel, Rozdział 2.7.
Użycie gcc
, binutils
i modutils
z
Debiana unstable może pomóc przy kompilacji najnowszych wydań
jądra systemu Linux. Zobacz
/usr/share/doc/kernel-package/README.gz
, szczególnie koniec, aby
uzyskać oficjalne informacje.
Od zawsze kompilacja jądra była trudnym tematem, który nawet najbardziej zaawansowanych developerów może wprowadzić w zakłopotanie:
/etc/mkinitrd/mkinitrd.conf
.
Bądź ostrożny i zawsze polegaj na
/usr/share/doc/kernel-package/README.gz
napisanym przez Manoj i
Kent'a. Upewnij się, że zdobyłeś najnowszą wersję pakietu unstable
kernel-package
, jeśli chcesz kompilować najnowszą wersję jądra.
initrd nie jest wymagane dla jądra kompilowanego tylko dla jednej
maszyny. Używam tego od czasu, kiedy chcę aby moje jądro było niemal takie
samo, jak to dostarczane przez pakiety kernel-image. Jeśli używasz
initrd, powinieneś przeczytać mkinitrd(8)
i
mkinitrd.conf(5)
. Zobacz również http://bugs.debian.org/149236
.
Śledź uważnie raporty o błędach w kernel-package
,
gcc
, binutils
i modutils
. W miarę
możliwości używaj ich nowych wersji.
Kompilacja spersonalizowanego jądra ze źródeł pod Debianem wymaga specjalnej
uwagi. Użyj nowego --append_to_version wraz z
make-kpkg
, aby zbudować obrazy jądra wielokrotnego użytku.
# apt-get install debhelper modutils kernel-package libncurses5-dev # apt-get install kernel-source-2.4.18 # użyj najnowszej wersji # apt-get install fakeroot # vi /etc/kernel-pkg.conf # wpisz nazwisko i e-mail $ cd /usr/src # stwórz katalog $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 $ cd kernel-source-2.4.18 # jeżeli są to źródła Twojego jądra $ cp /boot/config-2.4.18-386 .config # ustaw obecny plik konfiguracyjny jako domyślny $ make menuconfig # wybierz potrzebne Ci opcje $ make-kpkg clean # musi być uruchomione (per: man make-kpkg) $ fakeroot make-kpkg --append_to_version -486 --initrd \ --revision=rev.01 kernel_image \ modules_image # modules_image używa się dla pcmcia-cs* itd. $ cd .. # dpkg -i kernel-image*.deb pcmcia-cs*.deb # instalacja
make-kpkg kernel_image właściwie wykonuje make oldconfig i make dep. Nie używaj --initrd jeżeli initrd nie jest używane.
Jeżeli ktoś chce używać modułów z pcmcia-cs lub bez pcmcia, powinien wybrać „General setup —>”, następnie „PCMCIA/CardBus support —>” przy make menuconfig i ustawić konfigurację na „< > PCMCIA/CardBus support” (np. odznaczyć pole).
Na maszynie z SMP (Simetric Multi processing), ustaw CONCURRENCY_LEVEL zgodnie
z kernel-pkg.conf(5)
.
Pobierz źródła z:
http://www.kernel.org/
http://pcmcia-cs.sourceforge.net/
lub użyj równoważnych źródeł z Debiana i postępuj następująco:
# cd /usr/src # tar xfvz linux-whatever.tar.gz # rm -rf linux # ln -s linux-whatever linux # tar xfvz pcmcia-cs-whatever.tar.gz # ln -s pcmcia-cs-whatever pcmcia # cd linux # make menuconfig ... konfiguracja jądra ... # make dep # make bzImage ... edycja lilo / grub ... ... przeniesienie /usr/src/linux/arch/i386/boot/bzImage do /boot ... ... uruchomienie /sbin/lilo lub równoważnego polecenia dla grub # make modules; make modules_install # cd ../pcmcia # make config # make all # make install ... dodanie niezbędnych nazw modułów do /etc/modules # shutdown -r now ... wystartowanie systemu z nowym jądrem ...
Większość „zwykłych” programów nie potrzebuje plików
nagłówkowych jądra, a nawet może się popsuć jeśli użyjesz ich bezpośrednio;
zamiast tego powinny być skompilowane z plikami nagłówkowymi, z którymi
zbudowano/skompilowano glibc
, które są wersjami z
/usr/include/linux
i /usr/include/asm
systemu Debian.
Nie twórz więc dowiązań symbolicznych do katalogów w
/usr/src/linux
z /usr/include/linux
i
/usr/include/asm
, jak jest to sugerowane w pewnych przestarzałych
dokumentach.
Jeżeli szczególnie potrzebujesz plików nagłówkowych jądra dla
aplikacji zależnych od jądra, zmień plik/pliki Makefile, tak aby ich ścieżki do
plików dołączanych (include) wskazywały na
katalog-specjalnych-plików-nagłówkowych-jądra/include/linux
i
katalog-specjalnych-plików-nagłókowych-jądra/include/asm
.
Nowe jądra 2.4 w Debianie, dostarczone przez
kernel-image-2.4.NN
są bardzo zmodularyzowane. Musisz
się upewnić czy moduły te są aktywne, aby jądro działało tak, jak zamierzałeś.
W następnej części, jako szybkie rozwiązania, prezentuję wiele przykładów pliku
/etc/modules
. Jednakże, lepszą metodą rozwiązywania problemów z
modułami jest przypisanie ich, jako nazw zastępczych (aliasów) dla urządzeń, w
plikach w /etc/modutils/
. Niektóre moduły mogą być automatycznie
aktywowane przez programy rozpoznające sprzęt, takie jak discover
.
Więcej na ten temat tutaj: Wykrywanie
sprzętu dla X, Rozdział 9.4.2.
Zobacz Documentation/*.txt
w źródłach Linuksa aby zdobyć
szczegółowe informacje.
/etc/modules
musi zawierać następujące wpisy, aby urządzenia
PCMCIA mogły działać:
# sterownik ISA PnP isa-pnp # Niskopoziomowy sterownik PCMCIA # yenta_socket # w moim przypadku nie jest potrzebny
O resztę zadbają skrypty PCMCIA (z pakietu pcmcia-cs
),
depmod
i kmod
. Wydaje mi się, że potrzebowałem
isa-pnp
ponieważ mój laptop jest starym ISA-PCMCIA. Nowsze
laptopy z CardBus/PCMCIA być może tego nie wymagają.
Zdanie wspaniałomyślnego Miquela van Smoorenburga miquels@cistron.nl
:
„Po prostu wyrzuciłem całość pcmcia z laptopa w pracy, włącznie z
cardmgr itd. Następnie zainstalowałem jądro 2.4 ze wsparciem dla cardbus, i
nowy pakiet hotplug
z woody'ego.
Jeśli masz 32-bitowe karty, nie potrzebujesz pakietu pcmcia ; 2.4 ma wbudowaną obsługę tych kart. Zwykły sterownik tulip powinien pracować dobrze z Twoją kartą dlink.
—Mike.”
Zobacz: Linux
PCMCIA HOWTO
oraz Konfiguracja sieci i PCMCIA,
Rozdział 10.9.5.
[NIE SPRAWDZANE] /etc/modules
musi zawierać następujące wpisy, aby
urządzenia SCSI mogły działać:
# rdzeń SCSI scsi_mod # ogólny sterownik SCSI sg # dysk SCSI sd_mod # wszystkie inne niezbędne moduły ...
depmod
zajmie się niektórymi z powyższych modułów.
/etc/modules
musi zawierać nastepujące wpisy dla działania
dodatkowych funkcji sieciowych:
# net/ipv-4 ip_gre ipip # net/ipv-4/netfilter # iptable (in order) ip_tables ip_conntrack ip_conntrack_ftp iptable_nat iptable_filter iptable_mangle # ip_nat_ftp ip_queue # ipt_LOG ipt_MARK ipt_MASQUERADE ipt_MIRROR ipt_REDIRECT ipt_REJECT ipt_TCPMSS ipt_TOS ipt_limit ipt_mac ipt_mark ipt_multiport ipt_owner ipt_state ipt_tcpmss ipt_tos ipt_unclean # #ipchains #ipfwadm
Powyższe wpisy mogą nie być zoptymalizowane. depmod
zajmie się
cześcią z wyżej wymienionych modułów.
Umożliwienie księgowania systemu plików z EXT3 FS przy użyciu Debianowego pakietu prekompilowanego obrazu jądra ( > 2.4.17) wymaga następujących kroków:
# cd /etc; mv fstab fstab.old # sed 's/ext2/ext3,ext2/g' <fstab.old >fstab # vi /etc/fstab ... ustaw typ głównego systemu plików na „auto” zamiast „ext3,ext2” # cd /etc/mkinitrd # echo jbd >>modules # echo ext3 >>modules # echo ext2 >>modules # cd / # apt-get update; apt-get install kernel-image-2.4.17-686-smp ... zainstaluj najnowsze jądro i ustaw bootowanie (uruchom tu lilo) # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... i tak dla wszystkich systemów plików EXT2 konwertowanych na EXT3 # shutdown -r now
Teraz księgowanie EXT3 już działa. Używając ext3,ext2 jako wpis
„typ” w fstab
zapewniasz bezpieczny powrót
do EXT2, jeżeli jądro nie wspiera EXT3 dla partycji innych niż główna.
Jeżeli wcześniej zainstalowałeś sobie jądro 2.4 i nie chcesz go
przeinstalowywać, wykonaj powyższe kroki aż do poleceń apt-get
,
następnie:
# mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp # lilo # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... dla wszystkich, którzy przekonwertowali EXT2 FS do EXT3 # shutdown -r now
Teraz księgowanie EXT3 już działa.
Jeżeli /etc/mkinitrd/modules
nie zostało ustawione, podczas
uruchomienia mkinitrd
i chciałbyś dodać jakieś moduły w czasie
startu to :
... przy zgłoszeniu initrd, aby uzyskać powłokę (5 sek.), wciśnij RETURN # insmod jbd # insmod ext3 # modprobe ext3 zajmie się wszystkim # insmod ext2 # ^D ... kontynuuj uruchamianie.
Na ekranie uruchamiania pojawia się (dmesg
), „cramfs:
wrong magic”, ale jest to uznawane za nieszkodliwe. Ten problem
został rozwiązany w Sarge (2002/10). Zobacz http://bugs.debian.org/135537
i
EXT3
File System mini-HOWTO
lub
/usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz
w celu
uzyskania dalszych informacji.
W niektórych systemach donoszone jest o doświadczaniu poważnych blokad jądra, gdy używane jest EXT3, ale ja nie miałem problemów (przynajmniej z 2.4.17).
Z nieznanych przyczyn, wsparcie dla modułu RTL-8139 nie nazywa się już rtl8139,
tylko 8139too. Po prostu wyedytuj swój /etc/modules
by uwzględnić
tę zmianę przy zmianie jądra 2.2 na 2.4.
Dla kernel-image-2.4.*
, wsparcie portu równoległego jest
udostępniane jako moduł. Uaktywniasz je przez:
# modprobe lp # echo lp >> /etc/modules
Zobacz Documentation/parport.txt
w źródłach Linuksa.
Zachowanie jądra systemu Linux może być zmieniane „w locie” przy pomocy systemu plików proc.
Podstawowych informacji o zmianach parametrów jądra przez system plików
/proc
szukaj w źródłach Linuksa w
Documentation/sysctl/*
.
Zobacz kilka przykładów dla modyfikacji parametrów jądra w
/etc/init.d/networking
i Dziwne kłopoty z dostępem do witryn WWW.,
Rozdział 3.7.5.
By dowiedzieć się jak ustawić konfigurację jądra poprzez system plików
/proc
podczas uruchamiania zobacz do sysctl.conf(5)
.
Zazwyczaj wykorzystywany jest do tego skrypt /etc/init.d/procps.sh
uruchamiany z /etc/rcS.d/S30procps.sh
.
Jądro Linuksa może zgłaszać problem „Za dużo otwartych plików”. Spowodowane jest to małą domyślną wartością (8096) dla file-max. Aby naprawić ten problem, wywołaj następujące polecenie jako root:
# echo "65536" > /proc/sys/fs/file-max # dla jąder 2.2 i 2.4 # echo "131072" > /proc/sys/fs/inode-max # tylko dla jąder 2.2
lub by zmienić to na stałe umieść następujące wpisy w
/etc/sysctl.conf
:
file-max=65536 # dla jąder 2.2 i 2.4 inode-max=131072 # tylko dla jąder 2.2
Możesz zmienić przedziały czasu między operacjami dyskowymi przy pomocy systemu plików proc. Następująco skrócimy je z domyślnych pięciu sekund do sekundy.
# echo "40 0 0 0 100 30000 60 0 0" > /proc/sys/vm/bdflush
Może to trochę negatywnie wpływać na osiągi pliku wejścia/wyjścia. Ale zabezpiecza to zawartość pliku, z wyjątkiem ostatniej sekundy, co i tak jest krótszym czasem, niż domyślne pięć sekund. Działa to nawet dla systemu plików z księgowaniem.
Dla niektórych starych systemów z małą ilością pamięci, użyteczne wciąż może być uruchomienie, przy pomocy systemu plików proc, przydzielania nieosiągalnej w danym momencie pamięci:
# echo 1 > /proc/sys/vm/overcommit_memory
Debian Reference
CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTCosamu@debian.org
fenio@o2.pl