[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]
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
file:///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:
--initrd wymaga specjalnej łatki dla Debiana: cramfs.
Nie, wcale nie, wszystko co musisz zrobić aby użyć innego systemu plików
niż CRAMFS, to ustawienie MKIMAGE w /etc/mkinitrd/mkinitrd.conf
.
Bądź ostrożny i zawsze polegaj na
file:///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:
Linux: http://www.kernel.org/
pcmcia-cs: 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
file:///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
[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]
Debian Reference (version 1)
This translation is based on old version of Debian Reference (English, version 1.x), well before Sat, 26 Jan 2008.osamu#at#debian.org
fenio@o2.pl