PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__geninitrd.sec
qwiat
cvs w pld-linux.org
Nie, 27 Mar 2005, 23:25:35 CEST
Author: qwiat
Date: Sun Mar 27 23:25:33 2005
New Revision: 5640
Modified:
PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__geninitrd.sec
Log:
- przepisanie na nowo calego opisu
Modified: PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__geninitrd.sec
==============================================================================
--- PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__geninitrd.sec (original)
+++ PLD-doc/book/pl_book__konfiguracja/pl_konfiguracja__geninitrd.sec Sun Mar 27 23:25:33 2005
@@ -3,117 +3,170 @@
<title>geninitrd</title>
<section id="konfiguracja_geninitrd_wstep">
<title>Wstęp</title>
- <para>
- Zdarza się czasami, że potrzebujemy uruchomić
- <productname>PLD</productname> z naszego dysku twardego
- w innym komputerze. Jeśli drugi komputer posiada inną płytę
- główną lub inny system plików, niemal pewne jest to że system
- się nie uruchomi. Ujrzymy na ekranie komunikat jądra o błędzie:
- </para>
- <screen>Kernel panic: VFS: Unable to mount root fs...</screen>
- <para>
- Jądro mówi nam, że nie może zamontować głównego systemu plików. Dzieje się tak
- wtedy gdy nie potrafi obsłużyć kontrolera pamięci masowych
- (<hardware>IDE</hardware>/<hardware>SCSI</hardware>/<hardware>RAID</hardware>)
- lub odczytać systemu plików dla tej partycji.
- </para>
- <para>
- W PLD i wielu innych dystrybucjach sterowniki tego typu umieszczane są w
- specjalnym "obrazie" zamiast we wnętrzu jądra. Obraz ten przechowywany jest w
- katalogu <filename>/boot</filename> i nazywa się zazwyczaj:
- "<filename>initrd</filename>". Jest on wczytywany przez
- bootloader w trakcie startu systemu. Obraz ten zawiera sterowniki konieczne
- do uruchomienia systemu na komputerze na którym był instalowany. Dla innej
- maszyny należy wygenerować taki obraz na nowo.
- </para>
+ <para>
+ Zdarza się czasami, że potrzebujemy uruchomić
+ <productname>PLD</productname> z dysku twardego na innym
+ komputerze, jeśli druga maszyna posiada inną płytę główną
+ lub kontroler HDD, to niemal pewne jest to że system
+ się nie uruchomi. Ujrzymy na ekranie komunikat jądra
+ o błędzie:
+ </para>
+ <screen>Kernel panic: VFS: Unable to mount root fs...</screen>
+ <para>
+ Jądro mówi nam, że nie może zamontować głównego systemu plików,
+ gdyż nie ma jak wczytać odpowiedniego sterownika kontrolera
+ pamięci masowych:
+ <hardware>IDE</hardware>/<hardware>SCSI</hardware>/<hardware>RAID</hardware>.
+ W PLD 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ł wymagane moduły
+ muszą zostać wcześniej umieszczone w specjalnym "obrazie"
+ nazywanym <emphasis>initrd</emphasis> (initial ramdisk),
+ który jest wczytywany przez bootloader.
+ Initrd jest tworzony w trakcie instalacji systemu, jednak
+ w późniejszym czasie jesteśmy zdani na siebie.
+ </para>
+ <para>
+ Obraz przechowywany jest w katalogu <filename>/boot</filename>
+ i zwykle nazywa się <filename>initrd-{$wersja_jądra}.gz</filename>,
+ do niego zaś prowadzi łącze o nazwie <filename>initrd</filename>.
+ </para>
+ <para>
+ Uwaga! Oprócz sterownika kontrolera będziemy musieli dodać
+ moduł obsługi systemu plików dla partycji "/".
+ </para>
</section>
- <section id="konfiguracja_geninitrd_przygotowanie">
- <title>Przygotowanie</title>
- <para>
- Będziemy potrzebować dystrybucję uruchamianą z płyty CD. Do tego będzie się
- nadawała się niemal każda taka dystrybucja np.: <productname>PLDLiveCD</productname>
- lub <productname>RescueCD</productname>.
- Podłączamy dysk twardy do docelowego komputera. Po uruchomieniu
- systemu z płytki musimy dostać się na główny system plików (/) - opis
- jak to zrobić znajduje się w <xref linkend="administracja_rescue" />
- </para>
+
+
+
+ <section id="konfiguracja_geninitrd_automatyczna">
+ <title>Automatyczne generowanie initrd</title>
+ <para>
+ Cały proces możemy zautomatyzować, podłączając dysk do
+ docelowej maszyny, musimy wtedy posłużyć inną dystrybucją
+ i wykonać operację chroot-a - opis jak to zrobić znajduje
+ się tutaj <xref linkend="administracja_rescue" />.
+ 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>.
+ </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>
+ i ustawiamy jaki rodzaj urządzenia (<hardware>SCSI</hardware>,
+ <hardware>IDE</hardware>, <hardware>RAID</hardware>) ma
+ być automatycznie wykrywany:
+<screen>## Do install SCSI modules (if / is on SCSI partition)?
+PROBESCSI=yes
+
+## Do install IDE modules (if / is on IDE partition)?
+PROBEIDE=yes
+
+## Do install RAID modules (if RAID is used)?
+PROBERAID=yes</screen>
+ Następnie montujemy pseudo-system plików <filename>/proc</filename>:
+ </para>
+ <screen># mount /proc</screen>
+ <para>
+ Teraz przyszedł czas na wygenerowanie obrazu. Używamy do tego
+ programu <command>geninitrd</command>:
+ </para>
+ <para>
+ <command>geninitrd [opcje] {$nowy_initrd} {$wersja_jądra}</command>
+ np.:
+ </para>
+ <screen># geninitrd -v /boot/initrd_nowy 2.6.7</screen>
</section>
- <section id="konfiguracja_geninitrd_generowanie">
- <title>Automatyczne generowanie initrd</title>
- <para>
- Poniższe czynności są konieczne do wykonania jeśli sprzęt i system plików mają
- zostać wykryte automatycznie. 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> i ustawiamy jaki rodzaj urządzenia ma być
- wykrywany (<hardware>IDE</hardware>, <hardware>SCSI</hardware>, <hardware>RAID</hardware>). Następnie montujemy pseudo-system plików <filename>/proc</filename>:
- </para>
- <screen># mount /proc</screen>
- <para>
- Teraz przyszedł czas na wygenerowanie pliku <filename>initrd</filename>. Używamy do tego programu
- geninitrd: <command>geninitrd [opcje] nowy_initrd numer_wersji_jądra</command>
- np.:
- </para>
- <screen># geninitrd -v /boot/initrd_nowy 2.6.7</screen>
- <para>
- Program wykrywa sprzęt i załącza właściwe moduły do tworzonego initrd.
- Następnie usuwamy łącze symboliczne o nazwie "<filename>/boot/initrd</filename>" wskazujące
- na stary obraz i tworzymy łącze wskazujące na nowy:
- </para>
+
+
+ <section id="konfiguracja_geninitrd_reczna">
+ <title>Ręczne generowanie initrd</title>
+ <para>
+ Ta operacja może być przeprowadzona z dowolnego komputera,
+ 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,
+ np. w sytuacji problemu z automatycznym wykryciem wymaganych
+ sterowników.
+ </para>
+ <para>
+ Możemy wpisać listę koniecznych modułów do odpowiedniej
+ sekcji w pliku <filename>/etc/sysconfig/geninitrd</filename>:
+
+<screen>## Basic modules to be loaded
+BASICMODULES=""
+
+## Modules that should be loaded before anything (i.e. jbd for ext3)
+PREMODS=""</screen>
+
+
+ lub zmodyfikować wywołanie geninitrd poprzez użycie
+ parametru <emphasis>--with</emphasis>:
+ </para>
+ <para>
+ <command>geninitrd [opcje] --with={$nazwa_modułu}
+ {$nowy_initrd} {$wersja_jądra}</command>
+ </para>
+ <para>
+ np.:
+ </para>
+<screen># geninitrd -v --with=ext3 --with=pdc202xx_new /boot/initrd_nowy 2.6.7</screen>
+ <para>
+ Powyższe wywołanie wymusi dodanie dodatkowo modułów obsługi
+ systemu plików ext3 i kontrolera <hardware>IDE</hardware>
+ PDC20268 firmy Promise.
+ </para>
+ </section>
+
+
+ <section id="konfiguracja_geninitrd_uniwersalne">
+ <title>Generowanie uniwersalnego initrd</title>
+ <para>
+ Częste zmiany używanego obrazu initrd mogą być uciążliwe.
+ Można to obejść łącząc do jednego obrazu większą ilość
+ modułów przy pomocy opcji
+ <emphasis>--with</emphasis> - tak jak to
+ przedstawiono w powyższym rozdziale.
+ 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
+ sterowniki.
+ </para>
+ </section>
+
+ <section id="konfiguracja_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>
- Końcową 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. Po tej czynności uaktualniamy bootloader.
- W przypadku LILO 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>
- <para>
- Następnie jeżeli mamy zainstalowane lilo wydajemy polecenie:
- </para>
- <screen># lilo</screen>
- <para>
- W przypadku gruba nic nie musimy robić.
- </para>
- <para>
- Może się tak zdażyć, że <command>geninitrd</command> nie doda nam do <filename>/boot/initrd</filename> jakiegoś
- potrzebnego modułu - w tym celu aby wymusić włączanie danego modułu do
- initrd należy wpisać go do odpowiedniej sekcji w
- <filename>/etc/sysconfig/geninitrd</filename>
- </para>
- <para>
- Na koniec restartujemy komputer i system powinien uruchomić się bez problemu.
- Od tej pory, po ponownym podłączeniu dysku do tego komputera, wystarczy
- jedynie zmieniać wskazanie łącza syblolicznego na odpowiedni obraz initrd i
- zaktualizować bootloader.
- </para>
- </section>
- <section id="konfiguracja_geninitrd_uniwersalne">
- <title>Generowanie uniwersalnego initrd</title>
- <para>
- Częste zmiany używanego obrazu initrd mogą być uciążliwe. Można to obejść
- łącząc do initrd więcej modułów. W tym wypadku proces generowania może być
- przeprowadzony zarówno na naszym jak i na docelowym komputerze. Proces jego
- tworzenia przebiega bardzo podobnie, w opisie poprzedniego podrozdziału należy
- zmodyfikować wywołanie <command>geninitrd</command>:
- </para>
- <screen>geninitrd [opcje] --with=nazwa_modulu nowy_initrd numer_wersji_jądra</screen>
- <para>
- np.:
- </para>
- <screen># geninitrd -v --with=ext3 --with=pdc202xx_new /boot/initrd_nowy 2.6.7</screen>
- <para>
- Powyższe wywołanie doda dodatkowo moduły obsługi systemu plików ext3 i
- kontrolera <hardware>IDE</hardware> PDC20268 firmy Promise. Ręcznego wskazywania modułów do
- załączenia używa się też w wypadku problemów z autodetekcją kontrolera
- przez geninitrd.
- </para>
- <para>
- Warto pamiętać żeby nie przesadzać z ilością załączanych modułów, może to
- spowodować wolniejszy start systemu i niepotrzebne zużycie pamięci
- operacyjnej przez nieużywane moduły.
- </para>
+ <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>
+ <para>
+ Następnie (o ile mamy zainstalowane LILO) wydajemy polecenie:
+ </para>
+ <screen># lilo</screen>
+ <para>
+ W przypadku <productname>Grub-a</productname> nic nie musimy robić.
+ </para>
+ <para>
+ Na koniec restartujemy komputer i system powinien uruchomić
+ się bez problemu.
+ </para>
</section>
</section>
Więcej informacji o liście dyskusyjnej pld-doc