PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__kernel.sec

qwiat cvs w pld-linux.org
Pią, 6 Maj 2005, 01:38:54 CEST


Author: qwiat
Date: Fri May  6 01:38:43 2005
New Revision: 5925

Modified:
   PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__kernel.sec
Log:
- poszerzenie rozdzialu o zarzadzanie modulami, i wyszukiwanie wlasciwego modulu


Modified: PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__kernel.sec
==============================================================================
--- PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__kernel.sec	(original)
+++ PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__kernel.sec	Fri May  6 01:38:43 2005
@@ -22,7 +22,7 @@
 </section>
 
 	<section id="konfiguracja_kernel_poco">
-		<title>Moduły jądra - po co nam one</title>
+		<title>Moduły jądra - czym są?</title>
 		<para>Sterowniki mogą być wkompilowane do wnętrza jądra lub
 		wydzielone jako osobne obiekty - moduły. Moduły jądra zostały stworzone po to by kernel zajmował mało pamięci operacyjnej i był zarazem uniwersalny. Ułatwiają one także prace ludziom zaangażowanym w rozwój jądra i dodatkowych modułów (nie potrzeba kompilować całego kernela by sprawdzić zmiany, wystarczy tylko sam moduł) Wyobraź sobie sytuację, w której masz wkompilowane do niego wszystko, a twój system nie posiada urządzeń, które kernel potrafi obsłużyć. Jest to duże marnotrawstwo, ponieważ w pamięci znajdą się nie potrzebne nam funkcje. Dodać należy fakt, ograniczenia wielkości jądra (można to zmienić odpowiednimi przeróbkami źródeł via Red Hat). Dlatego lubimy moduły. Dają nam one możliwość wyboru między tym co niezbędne, a brakiem wsparcia dla urządzeń. Podsumowując. Nie potrzebujesz to nie używasz.</para>
 		<para>By móc używać modułów potrzebujesz dwóch rzeczy. Kernela z wkompilowaną opcją <option>Loadable module support</option> oraz sterowników skompilowanych jako moduły. Ponieważ używasz PLD to nie masz co się głowić ponieważ wszystko to masz u siebie w systemie.</para>
@@ -41,44 +41,160 @@
 		</para>
 	</section>
 
+	<section id="konfiguracja_kernel_jaki_modul">
+		<title>Określenie modułu dla urządzenia</title>
+		<para>
+			Odnalezienie nazwy modułu obsługującego nasz sprzęt jest
+			sporym utrudnieniem dla początkujących, istnieje jednak kilka
+			sprawdzonych sposobów by na to zaradzić. Czasami, potrzebna nam
+			informacja, znajduje się w dokumentacji urządzenia. Jeśli tak
+			nie zdobędziemy szukanych informacji to możemy spróbować użyć którąś z
+			poniższych metod:		
+		</para>
+		<para>
+
+			<itemizedlist>
+				<listitem>
+					<para>
+						Na własne oczy - jeśli mamy dostęp do sprzętu to możemy
+						obejrzeć urządzenie, zwykle są tam podane wszystkie wymagane
+						informacje.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<command>lspci</command> - program ten wyświetla listę
+						 wykrytych urządzeń PCI wraz z dodatkowymi informacjami.
+						 Warto użyć tu dodatkowo opcji
+						"-v" - "-vv" w celu zwiększenia ilości danych.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Komunikaty jądra - są to dosyć cenne informacje, możemy
+						je odczytać w dzienniku kernela: <filename>/var/log/kernel</filename>
+						lub przejrzeć to co zwraca program dmesg:
+						<screen># dmesg | less</screen>
+					</para>
+				</listitem>
+			</itemizedlist>
+		</para>
+		<para>
+			Kiedy uzyskaliśmy informacje o sprzęcie, pozostaje nam odnaleźć moduł:
+			<itemizedlist>
+				<listitem>
+					<para>
+						<command>pcidev</command> - program który stara się wykryć
+						używany przez nas sprzęt
+						oraz podaje nazwę sugerowanego modułu. Należy wywołać program z
+						parametrem wskazującym o interesujące nas urządzenie np:
+						<screen># pcidev agp
+10de01e0 nvidia-agp nVidia Corporation|nForce2 AGP (different version?)</screen>
+						drugi zwrócony łańcuch jest nazwą szukanego modułu. Aby
+						otrzymać listę parametrów jakie przyjmuje program należy uruchomić
+						go bez parametru.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Internet - można założyć, że ktoś się już spotkał z podobnym
+						problemem. Mamy do dyspozycji sporą skarbnicę wiedzy:
+						WWW, listy i grupy dyskusyjne.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Po nazwie modułu: <command>modprobe -l {$słowo_kluczowe}</command>
+						- tak możemy próbować odnaleźć moduł wg. szukanego klucza np:
+<screen># modprobe -l *snd*
+/lib/modules/2.6.11.6-4/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko.gz
+/lib/modules/2.6.11.6-4/kernel/sound/pcmcia/vx/snd-vxp440.ko.gz
+/lib/modules/2.6.11.6-4/kernel/sound/pcmcia/vx/snd-vx-cs.ko.gz
+/lib/modules/2.6.11.6-4/kernel/sound/pcmcia/vx/snd-vxpocket.ko.gz
+/lib/modules/2.6.11.6-4/kernel/sound/drivers/snd-serial-u16550.ko.gz
+/lib/modules/2.6.11.6-4/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko.gz
+/lib/modules/2.6.11.6-4/kernel/sound/drivers/mpu401/snd-mpu401.ko.gz
+</screen>
+						
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<command>modinfo</command> - program ten zwraca informacje o
+						module, którego nazwę podajemy jako parametr. Program jest
+						pomocny jeśli zawęziliśmy listę pasujących modułów do kilku
+						pozycji.
+					</para>
+				</listitem>				
+			</itemizedlist>
+			Kiedy sądzimy że odnaleźliśmy właściwy moduł możemy go bez obaw wczytać
+			i przetestować nasze urządzenie, jeśli próba zakończyła się sukcesem to
+			możemy go zapisać jego nazwę do odpowiedniego pliku.				 
+		</para>
+	</section>
+
+
+
+	<section id="konfiguracja_kernel_zarzadzanie">
+		<title>Zarządzanie modułami</title>
+		<para>
+			Moduły są ze sobą powiązane i załadowanie danego modułu załaduje
+			moduły od niego zależne (jeśli takie są), podobnie jest z ich usuwaniem z pamięci.
+			Do zarządzania modułami zaleca się używanie programu <command>modprobe</command>
+			z odpowiednimi parametrami zamiast programów <command>insmod</command> i
+			<command>rmmod</command>
+		</para>
+		<para>
+			Listę załadowanych modułów i zależności między nimi otrzymamy
+			po wydaniu polecenia <command>lsmod</command> np:
+			<screen># lsmod
+Module                  Size  Used by
+lp                      8644  0
+parport                29896  1 lp
+ext3                  119304  1
+amd74xx                11676  0 [permanent]
+psmouse                34840  0
+ide_core              109560  2 ide_disk,amd74xx
+ide_disk               14336  9</screen>
+		</para>
+		<para>
+			Wczytanie modułu do pamięci:
+			<screen># modprobe ne2k-pci</screen>
+			Usuwanie modułu z pamięci (możliwe tylko jesli nie jest używany):
+			<screen># modprobe -r ne2k-pci</screen>
+			Wyświetlenie listy modułów zależnych od podanego:
+			<screen># modprobe --show-depends ne2k-pci
+insmod /lib/modules/2.6.11.6-4/kernel/drivers/net/8390.ko.gz
+insmod /lib/modules/2.6.11.6-4/kernel/drivers/net/ne2k-pci.ko.gz</screen>
+			Wyświetlenie listy dostępnych modułów:
+			<screen># modprobe -l</screen>
+		</para>
+		<para>
+			Po "ręcznym" załadowaniu modułu do pamięci będzie on
+			dostępny do czasu ponownego uruchomienia komputera, aby 
+			moduł był automatyczni ładowany przy starcie systemu musimy
+			go dodać do jednego z plików konfiguracji: <filename>/etc/modules</filename>
+			lub <filename>/etc/modprobe.conf</filename>.			
+		</para>
+	</section>
+
 
 	<section id="konfiguracja_kernel_modules">
 		<title><filename>/etc/modules</filename></title>
-		<para>Plik ten zawiera listę modułów, które zostaną załadowane podczas startu systemu lub przy zmianie poziomu uruchomienia systemu.</para>
-		<para>Np. Załadownie sterownika karty muzycznej znajdującej się na płycie głównej. Najpierw musimy wiedzieć jaki moduł mamy załadować. Można szukać różnymi metodami, ale najlepsza jest chyba <literal>google</literal>. Jeżeli wiesz mniej więcej jak nazywa się moduł, to spróbuj wyszukać wydając polecenie</para>
-			<screen># modprobe -l *audio*
-/lib/modules/2.6.5-1/kernel/sound/oss/via82cxxx_audio.ko
-/lib/modules/2.6.5-1/kernel/sound/oss/nm256_audio.ko
-/lib/modules/2.6.5-1/kernel/sound/oss/i810_audio.ko
-/lib/modules/2.6.5-1/kernel/sound/oss/btaudio.ko
-/lib/modules/2.6.5-1/kernel/sound/usb/snd-usb-audio.ko
-/lib/modules/2.6.5-1/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko
-/lib/modules/2.6.5-1/kernel/drivers/usb/class/audio.ko
-/lib/modules/2.6.5-1/kernel/drivers/media/video/tvaudio.k</screen>
-    			<para>Otrzymaliśmy listę modułów pasujących do wzorca bez ich ładowania. Mój chipset na płycie głównej to via82*, więc próbuję czy zadziała z moja kartą dźwiękową.</para>
-			<screen>modprobe via82cxxx_audio</screen>
-			<para>Moduł załadował się bez błędów, dlatego zapuszczam jakąś muzyczkę by sprawdzić czy działa. Ponieważ wszystko się udało i chciałbym, żeby moja karta muzyczna była zawsze w pogotowiu więc dopisuje ją do <filename>/etc/modules</filename> przykładowo w taki sposób.</para>
+		<para>Plik ten zawiera listę modułów, które zostaną załadowane podczas startu
+		systemu. Znając nazwę modułu
+		możemy dodać ją do tego pliku np:</para>
 			<screen>echo "via82cxxx_audio" >> /etc/modules</screen>
-		<para>Warto zapoznać się także z następującymi poleceniami operującymi na modułach:</para>
-			<informaltable frame="all"><tgroup cols="2">
-					<thead><row>
-							<entry>Polecenie</entry>
-							<entry>Jego krótki opis</entry>
-					</row></thead>
-					<tbody><row>
-							<entry><command>lsmod</command></entry><entry>wyświetla wszystkie w danej chwili załadowane moduły</entry>
-						</row>
-						<row>
-							<entry><command>modinfo</command></entry><entry>podaje opis modułu podany przez jego twórcę</entry>
-						</row>
-						<row>
-							<entry><command>insmod</command></entry><entry>instaluje moduł do działającej wersji jądra</entry>
-						</row>
-						<row>
-							<entry><command>depmod</command></entry><entry>tworzenie pliku zależności do podanego jądra</entry>
-						</row>
-			</tbody></tgroup></informaltable>
+		<para>
+			W pliku tym umieszcza się zwykle moduły nie wymagające
+			dodatkowych parametrów, do tego celu używa się pliku
+			<filename>/etc/modprobe.conf</filename>
+		</para>
 	</section>
+	
+	
+	
+	
 	<section id="konfiguracja_kernel_modules_modules">
 		<title><filename>/etc/modprobe.conf</filename></title>
 		<para>Plik jest rozszerzeniem pliku <filename>/etc/modules</filename> i ma on bardzo dużo opcji. Dlatego po szerszą lekturę zapraszam do <command>man</command>, a w tym tekście omówię tylko niewielki fragment możliwości konfiguracji. Warto dodać iż we wcześniejszych wersjach kernela ( &lt; 2.6.0) plik nazywał się <filename>/etc/modules.conf</filename>.</para>




Więcej informacji o liście dyskusyjnej pld-doc