SVN: PLD-doc/book/pl_book__kernel-urzadzenia/pl_kernel-urzadzenia__geninitrd.sec

qwiat qwiat w pld-linux.org
Nie, 14 Sty 2007, 20:18:50 CET


Author: qwiat
Date: Sun Jan 14 20:18:49 2007
New Revision: 8164

Modified:
   PLD-doc/book/pl_book__kernel-urzadzenia/pl_kernel-urzadzenia__geninitrd.sec
Log:
- poprzenoszone akapity pomiedzy sekcjami
- bardziej szczegolowe opisy
- wiecej informacji o geninitrd
- mniej chrooto-centrycznie
- masa kosmetyki


Modified: PLD-doc/book/pl_book__kernel-urzadzenia/pl_kernel-urzadzenia__geninitrd.sec
==============================================================================
--- PLD-doc/book/pl_book__kernel-urzadzenia/pl_kernel-urzadzenia__geninitrd.sec	(original)
+++ PLD-doc/book/pl_book__kernel-urzadzenia/pl_kernel-urzadzenia__geninitrd.sec	Sun Jan 14 20:18:49 2007
@@ -7,78 +7,98 @@
 			W PLD wszystkie możliwe sterowniki są dostępne w
 			postaci tzw. modułów, przez co nie są one "widoczne" dla
 			jądra w trakcie startu systemu. Aby system wystartował
-			wymaganych jest kilka modułów koniecznych do zamontowania
-			głównego systemu plików, są to moduły kontrolera urządzeń
-			masowych (IDE/SCSI/RAID) oraz systemu plików na głównej
-			partycji systemowej (rootfs): "/". 
+			wymaganych jest kilka modułów i innych komponentów
+			koniecznych do zamontowania głównego systemu plików
+			(root filesystem):
+			<itemizedlist>
+				<listitem>
+					<para>
+						moduły kontrolera urządzeń
+						masowych (IDE/SATA/SCSI) np.: <literal>sata_nv</literal>,
+						<literal>sata_sil</literal>, <literal>sd_mod</literal> 
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						systemu plików na głównej
+						partycji systemowej np.: <literal>xfs</literal>,
+						<literal>reiserfs</literal>
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						elementy konieczne do złożenia woluminów
+						opartych o LVM lub programowy RAID
+					</para>
+				</listitem>
+			</itemizedlist>
 		</para>
 		<para>
 			Jedynym sposobem dostarczenia tych sterowników jest
 			umieszczenie ich w specjalnym "obrazie" zwanym
 			<literal>initrd</literal> (initial ramdisk). Obraz ten jest
-			plikiem wczytywanym przez bootloader, tak więc oprócz initrd
-			musimy właściwie skonfigurować bootloader.
+			plikiem wczytywanym przez bootloader, tak więc dodatkowo
+			musimy właściwie skonfigurować bootloader - wskazać położenie obrazu. 
 			Obraz przechowywany jest w katalogu <filename>/boot</filename>
-			i zwykle nazywa się <filename>initrd-{$wersja_jądra}.gz</filename>,
+			i ma nazwę <filename>initrd-{$wersja_jądra}.gz</filename>,
 			do niego zaś prowadzi łącze o nazwie <filename>initrd</filename>.
 		</para>
 		<para>
-			Initrd jest tworzony przy każdej instalacji
-			systemu, lub instalacji/aktualizacji kernela. Bywa jednak, że 
-			nasz obraz nie jest wygenerowany prawidłowo i jesteśmy
-			zmuszeni do utworzenia go samodzielnie. Źle utworzony
-			uniemożliwi uruchomienie systemu, ujrzymy wtedy następujący
-			komunikat:
+			Initrd jest tworzony przy każdej instalacji/aktualizacji
+			kernela. Bywa jednak, że nasz obraz nie jest wygenerowany
+			prawidłowo i jesteśmy zmuszeni do utworzenia go samodzielnie.
+			Źle utworzony uniemożliwi uruchomienie systemu, ujrzymy
+			wtedy następujący komunikat:
 			<screen>Kernel panic: VFS: Unable to mount root fs...</screen>	
 			Jądro mówi nam, że nie może zamontować głównego systemu plików,
-			gdyż brakuje mu jakiegoś sterownika. Może się to zdarzyć
-			jeśli nasz sprzęt nie został prawidłowo wykryty lub próbujemy
+			gdyż brakuje mu jakiegoś komponentu. Może się to zdarzyć,
+			że nasz sprzęt nie został prawidłowo wykryty lub próbujemy
 			uruchomić  PLD z naszego dysku na innym komputerze
 			(o innym kontrolerze urządzeń masowych).
 		</para>
+		<para>
+			Systemu nie można uruchomić więc musimy skorzystać z operacji
+			chroot-a, możemy w tym celu użyć dowolnej dystrybucji
+			linuksa jednak chyba najwygodniejsze będzie użycie
+			<productname>PLD-Live</productname> lub
+			<productname>RescueCD</productname>.
+		</para>
 	</section>
+
 	<section id="kernel-urzadzenia_geninitrd_przygotowanie">
 		<title>Przygotowanie</title>
 		<para>
 			Poniżej przedstawiono trzy metody generowania initrd. W
-			większości wypadków najwygodniejszy będzie pierwszy sposób, w
-			przypadku dwóch pozostałych musimy znać nasz sprzęt i system
-			plików partycji "/" aby wskazać nazwy właściwych modułów.
+			większości wypadków wystarczy nam pierwszy ze sposobów,
+			pozostałe są trudniejsze gdyż musimy znać nasz sprzęt i
+			system plików partycji "/".
 			Jeśli obraz nie jest tworzony prawidłowo przez pierwszą
-			metodę musimy się zadowolić dwoma pozostałymi, co więcej
-			będziemy musieli powtarzać całą operację po każdorazowej
-			instalacji nowej wersji jądra. Druga i trzecia metoda
-			mają jedną zasadniczą przewagę nad pierwszą - mogą być
-			przeprowadzane na dowolnej maszynie.
+			metodę musimy się zadowolić dwoma pozostałymi. Druga
+			i trzecia metoda mają jedną zasadniczą przewagę nad
+			pierwszą - mogą być przeprowadzane na dowolnej maszynie.
 		</para>
 		<para>
+			W dwóch pierwszych metodach użyjemy skryptu
+			<filename>/sbin/geninitrd</filename> z pakietu
+			<filename>geninitrd</filename>. Jest to wygodny automat,
+			który stara się wykryć sprzęt, system plików i czy główny
+			system plików jest stworzony na LVM/soft RAID. Skrypt geninird wymaga
+			prawidłowych wpisów w <filename>/etc/fstab</filename> i
+			podmontowanwego <filename>/proc</filename>. Tak więc jeśli
+			generujemy initrd w systemie typu chroot to wydajemy
+			polecenie (z chroota):
+		</para>
+		<screen># mount /proc</screen>
+		<para>
 			Opis wykrywania sprzętu i dobierania właściwych modułów
-			opisano w <xref linkend="kernel-urzadzenia_moduly_zarzadzanie" />. Przy
-			tworzeniu initrd przeważnie musimy skorzystać z operacji
-			chroot-a, możemy użyć dowolnej dystrybucji linuksa jednak chyba
-			najwygodniejsze będzie użycie systemu uruchamianego z
-			płyty CD np.: <productname>PLD-Live</productname> lub
-			<productname>RescueCD</productname>. Opis procedury chroota
-			z płyty typu Live znajdziemy w <xref linkend="administracja_rescue" />.
+			opisano w <xref linkend="kernel-urzadzenia_moduly_zarzadzanie" />.
 		</para>
 	</section>
-
-
 		
 	<section id="kernel-urzadzenia_geninitrd_automatyczna">
 	<title>Automatyczne generowanie initrd</title>
 		<para>
-			Przeważnie sprzęt i używany system plików partycji
-			"/"  mogą zostać wykryte automatycznie. Proces ten zaczynamy
-			od podłączenia dysku twardego do docelowej maszyny i
-			posłużenia się inną dystrybucją w celu wykonania operacji
-			chroota. 
-		</para>
-		<para>
-			Jeśli zmieniły się nazwy urządzeń masowych po podłączeniu dysku
-			twardego do innej maszyny, należy dokonać stosownych
-			poprawek w pliku <filename>/etc/fstab</filename>. W razie
-			potrzeby edytujemy też plik <filename>/etc/sysconfig/geninitrd</filename>
+			W razie potrzeby edytujemy plik <filename>/etc/sysconfig/geninitrd</filename>
 			i ustawiamy jaki rodzaj urządzenia (<hardware>SCSI</hardware>,
 			<hardware>IDE</hardware>, <hardware>RAID</hardware>) ma
 			być automatycznie wykrywany:		
@@ -90,31 +110,28 @@
 
 ## Do install RAID modules (if RAID is used)?
 PROBERAID=yes</screen>
-			Następnie montujemy pseudo-system plików <filename>/proc</filename>:
+			Teraz przyszedł czas na wygenerowanie obrazu wg schematu
 		</para>
-		<screen># mount /proc</screen>
 		<para>
-			Teraz przyszedł czas na wygenerowanie obrazu. Używamy do tego
-			programu <command>geninitrd</command>:
+			<command>geninitrd  [opcje]  {$initrd}  {$wersja_jądra}</command> 
+			np.:
 		</para>
+		<screen># geninitrd -v -f /boot/initrd-2.6.16.35-1.gz 2.6.16.35-1</screen>
 		<para>
-			<command>geninitrd  [opcje]  {$nowy_initrd}  {$wersja_jądra}</command> 
-			np.:
+			Parametr <option>-v</option> odpowiada za "gadatliuwość" programu,
+			zaś <option>-f</option> wymusza nadpisanie istniejącego obrazu.
 		</para>
-		<screen># geninitrd -v /boot/initrd_nowy 2.6.7</screen>
 	</section>
 
 
 	<section id="kernel-urzadzenia_geninitrd_reczna">
 	<title>Ręczne generowanie initrd</title>
 		<para>
-			Jeśli nie jest to macierzysta maszyna użyjemy dowolnej
-			dystrybucji i operacji chroot-a. Metoda ta wymaga precyzyjnej
-			znajomości używanego sprzętu i systemu plików, gdyż sami
-			musimy wskazać odpowiednie moduły. Jest jednak konieczna,
-			w przypadku problemów z automatycznym wykryciem wymaganych
-			sterowników lub jeśli chcemy operację wykonać na innej
-			maszynie niż docelowa.
+			Metoda ta wymaga precyzyjnej znajomości używanego sprzętu
+			i systemu plików, gdyż sami musimy wskazać odpowiednie
+			moduły. Jest jednak konieczna, w przypadku problemów z
+			automatycznym wykryciem wymaganych sterowników lub jeśli
+			chcemy operację wykonać na innej maszynie niż docelowa.
 		</para>
 		<para>
 			Możemy wpisać listę koniecznych modułów do odpowiedniej
@@ -132,7 +149,7 @@
 		</para>
 		<para>
 			<command>geninitrd [opcje]  --with={$nazwa_modułu}
-			{$nowy_initrd}  {$wersja_jądra}</command>
+			{$initrd}  {$wersja_jądra}</command>
 		</para>
 		<para>
 			Dużym ułatwieniem zadania jest automatyczne dołączanie
@@ -141,24 +158,25 @@
 			systemu plików ext3 i kontrolera <hardware>IDE</hardware>
 			PDC20268 firmy Promise:
 		</para>
-<screen># geninitrd -v --with=ext3 --with=pdc202xx_new  /boot/initrd_nowy 2.6.7</screen>
+<screen># geninitrd -v --with=ext3 --with=pdc202xx_new  /boot/initrd-2.6.16.35-1.gz 2.6.16.35-1</screen>
 	</section>
 
 
 	<section id="kernel-urzadzenia_geninitrd_modyfikacja">
 	<title>Gdy zawiedzie geninitrd</title>
 		<para>
-			Możemy zmodyfikować zawartość obrazu bez użycia skryptu
-			geninitrd, aby to zrobić rozpoczynamy od skopiowania initrd
-			w inne miejsce i rozpakowania go:
-<screen># gzip -d initrd-2.6.8.gz</screen>
+			Możemy zmodyfikować zawartość obrazu wygenerowanego
+			przez geninitrd, aby to zrobić rozpoczynamy od skopiowania
+			initrd w inne miejsce i rozpakowania go:
+<screen># gunzip initrd-2.6.16.35-1.gz</screen>
 			rozpakowany plik montujemy jako loop:
-<screen># mount -o loop initrd-2.6.8 initrd-src</screen>
+<screen>mkdir /tmp/initrd-src
+# mount -o loop initrd-2.6.16.35-1 /tmp/initrd-src</screen>
 		</para>
 		<para>
 			Tworzenie initrd rozpocznijmy od skopiowania zawartości
 			katalogu w inne miejsce:
-<screen># cp -a initrd-src initrd-moje
+<screen># cp -a /tmp/initrd-src initrd-moje
 cp: czytanie `initrd-src/bin/sh': Błąd wejścia/wyjścia</screen>
 			Pomimo tego błędu dobrze się skopiowało, warto jednak sprawdzić
 			uprawnienia i atrybuty pliku (ewentualnie poprawić na takie
@@ -178,33 +196,19 @@
 			Kompresujemy nowy initrd:
 <screen># gzip -9 initrd-nowy</screen>
 			Teraz już pozostało tylko skopiowanie pliku
-			<filename>initrd-nowy.gz</filename>	do
-			<filename>/boot</filename>.
+			<filename>initrd-nowy.gz</filename> do
+			<filename>/boot</filename> i nadanie mu odpowiedniej
+			nazwy.
 		</para>
 	</section>
 
 
-	<section id="kernel-urzadzenia_geninitrd_zakonczenie">
-	<title>Operacje końcowe</title>
-		<para>
-			Musimy usunąć łącze symboliczne o nazwie
-			"<filename>/boot/initrd</filename>" wskazujące
-			na stary obraz i tworzymy łącze wskazujące na nowy:
-		</para>
-	<screen># rm /boot/initrd
-# ln -s /boot/initrd_nowy /boot/initrd</screen>
-		<para>
-			Ostatnią czynnością jest odświeżenie bootloader-a, wcześniej
-			jednak musimy się upewnić, że wskazuje on na nowy initrd. Dowiemy
-			się tego przeglądając jego plik konfiguracji, w przypadku
-			<productname>LILO</productname> w pliku
-			<filename>/etc/lilo.conf</filename> odszukujemy linijkę
-			zaczynającą się od słowa "<literal>initrd</literal>", która
-			może wyglądać następująco:
-		</para>
-		<screen>initrd = /boot/initrd</screen>
+	<section id="kernel-urzadzenia_geninitrd_bootloader">
+	<title>Bootloader</title>
 		<para>
-			Następnie (o ile mamy zainstalowane LILO) wydajemy polecenie:
+			Musimy się upewnić czy łącze symboliczne
+			<filename>/boot/initrd</filename> wskazuje na prawidłowy obraz.
+			Jeśli używamy <productname>LiLo</productname> wydajemy polecenie:
 		</para>
 		<screen># lilo</screen>
 		<para>
@@ -231,8 +235,7 @@
 ## Modules that should be loaded before anything (i.e. jbd for ext3)
 PREMODS=""</screen>
 			możemy też użyć opcji
-			<emphasis>--with</emphasis> programu geninitrd, lub dodać
-			dodatkowe moduły przy "ręcznym" budowaniu obrazu.
+			<emphasis>--with</emphasis> programu geninitrd.
 			Warto pamiętać żeby nie przesadzać z ich ilością, może
 			to spowodować wolniejszy start systemu i niepotrzebne
 			zużycie pamięci operacyjnej przez nieużywane


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