Q. Próbuje wystartować system z dyskietki, ale nic się nie dzieje. Co mam zrobić?
Zajrzyj do działu Rozwiązywanie problemów powyżej.
Q. Jak działają dyskietki startowe dystrybucji Slackware/Debian/RedHat?
Zajrzyj do działu Jak to robią profesjonaliści powyżej.
Q. W jaki sposób stworzyć dyskietkę startową ze sterownikiem XYZ?
Najłatwiej zdobyć jądro z dystrybucji Slackware. Jądra Slackware zawierają sterowniki do jak największej ilości urządzeń, więc jeśli posiadasz kontroler IDE lub SCSI, istnieją duże szanse, że sterownik do urządzenia jest dołączony do jednego z jąder Slackware.
Przejdz do katalogu a1 i wybierz jądro odpowiednie dla posiadanego
typu kontrolera. Sprawdz w pliku xxxxkern.cfg dla odpowiedniego jądra
czy zawiera ono odpowiednie sterowniki. Jeśli urządzenie jest na tej liście,
to jądro to powinno wystartować twój system. Ściągnij plik xxxxkern.tgz i
skopiuj go na dyskietkę, tak jak opisano powyżej, w dziale na temat
tworzenia dyskietek startowych.
Następnie musisz sprawdzić główne urządzenie tego jądra, korzystając z komendy rdev:
rdev zImage
Komenda rdev wyświetli aktualne główne urządzenie dla tego jądra.
Jeśli nie odpowiada ono twojemu głównemu urządzeniu, użyj rdev aby
je zmienić. Na przykład jądro korzysta z /dev/sda2, ale moja
główna partycja SCSI znajduje się na urządzeniu /dev/sda8.
Aby zmienić główne urządzenie na dyskietkę, musisz użyć komendy:
rdev zImage /dev/fd0
Informacje na temat tworzenia głównych dyskietek Slackware wykraczają poza zakres tego dokumentu, więc sugeruje zajrzeć do Linux Install Guide lub zdobyć dystrybucję Slackware. Zobacz także dział ``Odnośniki'' w tym HOWTO.
Q. Jak uaktualnić jądro na mojej dyskietce?
Jeśli dyskietka startowa nie zawiera systemu plików, po prostu skopiuj jądro
za pomocą komendy dd. W przypadku dyskietki startowej/głównej użyj
komendy cp. Zajrzyj do działu ``Startowanie'' aby dowiedzieć się
szczegółów na temat tworzenia dyskietki startowej. Ten opis odnosi się także
do uaktualniania jądra.
Q. Jak dodać nowe pliki do mojej głównej dyskietki?
Najprostszym sposobem jest skopiowanie systeku plików z dyskietki z powrotem do użytego URZĄDZENIA (z działu Tworzenie systemu plików powyżej). Następnie zamontuj system plików i dokonaj zmian. Musisz wiedzieć, w którym bloku zaczynał się system plików i ile bloków zajmował:
dd if=/dev/fd0 bs=1k skip=POCZĄTEK count=BLOKI | gunzip > URZĄDZENIE
mount -t ext2 URZĄDZENIE /mnt
Po dokonaniu zmian, postępuj tak jak poprzednio (w dziale Tworzenie dyskietki) i przenieś główny system plików z powrotem na dyskietkę. Nie musisz przenosić ponownie jądra czy ponownie przeliczać słowa ramdysku jeśli nie zmieniłeś pozycji nowego systemu plików.
Q. Jak mogę usunąć LILO aby ponownie korzystać ze startowania DOS?
Tak na prawdę ten temat nie dotyczy dyskietek startowych, ale ludzie często o to pytają. Z poziomu Linuxa możesz użyć komendy:
/sbin/lilo -u
Możesz także wykorzystać dd aby przenieść kopię zapasową stworzoną
przez LILO z powrotem do bootsektora. Zajrzyj do dokumentacji LILO, jeśli
chcesz się dowiedzieć jak to zrobić.
Z poziomu systemu DOS lub Windows możesz skorzystać z polecenia DOS'a:
FDISK /MBR
MBR oznacza Master Boot Record i zastępuje bootsektor nowym DOS'owym, nie zmieniając przy tym tablicy partycji. Niektórzy puryści nie zgadzają się z tym, ale nawet autor LILO, Werner Almesberger, sugeruje to rozwiązanie. Jest ono proste, no i działa.
Q. Jak mogę wystartować system jeśli zgubiłem jądro oraz moją dyskietkę startową?
Jeśli nie masz dyskietki startowej, to najprostszym sposobem będzie zdobycie odpowiedniego jądra Slackware jak to opisano powyżej w odpowiedzi na pytanie ``Jak mogę stworzyć dyskietkę startową ze sterownikiem XXX?''. Następnie możesz wystartować komputer używając tego jądra i naprawić wszystkie problemy.
Jądro to może nie mieć ustawionego odpowiedniego głównego urządzenia. Na przykład typowe jądro SCSI Slackware za główne urządzenie uznaje /dev/sda2, a moja główna partycja Linuxowa to /dev/sda8. W tej sytuacji główne urządzenie w jądrze musi zostać zmienione.
Główne urządzenie oraz wartość słowa ramdysku możesz zmienić nawet wtedy, gdy posiadasz jedynie jądro i jakiś inny system operacyjny, na przykład DOS.
Polecenie rdev zmienia ustawienia poprzez zmianę wartości konkretnych
bajtów w pliku jądra, więc możesz zrobić to samo, jeśli tylko posiadasz
edytor heksadecymalny pracujący pod innym działającym systemem
-- przykładowo Norton Disk Editor z pakietu Norton Utilities pod DOS.
Następnie musisz sprawdzić i, jeśli to konieczne, zmienić wartości pod
następującymi przesunięciami:
HEX DEC OPIS
0x01F8 504 Młodszy bajt słowa ramdysku
0x01F9 505 Starszy bajt słowa ramdysku
0x01FC 508 Poboczny numer urządzenia - patrz niżej
0X01FD 509 Główny numer urządzenia - patrz niżej
Znaczenie słowa ramdysku zostało opisane w dziale Ustawianie słowa ramdysku powyżej.
Poboczny i głowny numer musi odpowiadać urządzeniu, na którym znajduje się główny system plików. Niektóre najczęściej używane wartości to:
DEVICE GŁÓWNY POBOCZNY
/dev/fd0 2 0 Pierwsza stacja dysków
/dev/hda1 3 1 Pierwsza partycja na pierwszym dysku IDE
/dev/sda1 8 1 Pierwsza partycja na pierwszym dysku SCSI
/dev/sda8 8 8 Ósma partycja na pierwszym dysku SCSI
Gdy już ustawisz odpowiednie wartości, możesz zapisać plik na dyskietce
korzystając z Norton Utilities Disk Editor, albo programu rawrite.exe,
który znajduje się we wszystkich dystrybucjach. Jest to program DOS'owy
który zapisuje dane w czystej postaci zaczynając od boot sektora dyskietki,
zamiast zapisywać do systemu plików. Jeśli używasz Norton Utilities, musisz
zapisać plik do fizycznej dyskietki zaczynając od jej początku.
Q. W jaki sposób mogę stworzyć dodatkowe kopie dyskietek?
Jako że nośniki magnetyczne z czasem tracą swe właściwości, powinieneś posiadać kilka kopii swoich dyskietek ratunkowych, w razie gdyby oryginały uległy uszkodzeniu.
Najprostszą metodą tworzenia kopii każdej dyskietki, włączając w to
dyskietki startowe czy narzędziowe, jest użycie komendy dd aby
skopiować zawartość oryginalnej dyskietki do pliku na dysku twardym, a
następnie użyć tej samej komendy aby skopiować plik z powrotem na dyskietkę.
Zauważ, że nie powinieneś montować dyskietek, ponieważ dd korzysta
bezpośrednio z urządzenia.
Aby skopiować oryginał, użyj polecenia:
dd if=URZĄDZENIE of=PLIK
gdzie URZĄDZENIE jest nazwą urządzenia stacji dyskietek
a PLIK jest nazwą docelowego pliku na twardym dysku
Pominięcie parametru count powoduje skopowanie całej dyskietki
(2880 bloków jeśli jest to dyskietka HD).
Aby skopiować plik spowrotem na dyskietkę, włóż dyskietkę do stacji i użyj komendy:
dd if=PLIK of=URZĄDZENIE
Zauważ, że powyższy opis zakłada, że posiadasz tylko jedną stację dysków. Jeśli posiadasz dwa napędy tego samego typu, możesz skopiować dyskietki używając komendy:
dd if=/dev/fd0 of=/dev/fd1
Q. Jak wystartować system bez wpisywania za każdym razem "ahaxxxx,nn,nn,nn"?
Jeśli dysk nie może zostać automatycznie wykryty, koniecznie jest dostarczenie parametrów do jądra, takich jak:
aha152x=0x340,11,3,1
Ten parametr może zostać dostarczony na kilka sposobów, korzystając z LILO:
lock'' aby linia poleceń została
zachowana jako domyślna, używana przy każdym starcie systemu.
append= w pliku konfiguracyjnym LILO. Pamiętaj, że
parametr musi zostać ujęty w cudzysłowy.
Przykładaowa linia poleceń dla podanego powyżej parametru może wyglądać następująco:
zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock
Przekaże ona opcje urządzenia do jądra, ustawi w jądrze główne urządzenie na /dev/sda1 i zapisze linie poleceń do użycia przy każdym następnym starcie systemu.
Przykładowa opcja append wygląda następująco
append = "aha152x=0x340,11,3,1"
Pamiętaj, że parametr w linii poleceń nie może być ujęty w cudzyłowy,
ale musi być ujęty w cudzysłowy jeśli występuje w opcji append.
Pamiętaj także, że w jądrze musi znajdować się sterownik dla podanego typu
urządzenia. Jeśli tak nie jest, będziesz musiał przekompilować jądro
aby zawierało odpowiednie sterowniki. Szczegóły na temat rekompilacji jądra
znajdziesz w pliku README w katalogu /usr/src/linux oraz w
Linux FAQ i Installation HOWTO. Ewentualnie możesz zdobyć odpowiednie jądro
dla tego urządzenia i zainstalować je.
Przed ekperymentami z LILO zalecane jest zapoznanie się z jego dokumentacją.
Nieprawidłowe użycie opcji BOOT może uszkodzić partycję.
Q. Podczas staru otrzymuje komunikat błędu "A: cannot execute
B". Co to oznacza?
W niektórych przypadkach ścieżki do plików są na stałe zapisane w niektórych
programach. Nie zdarza się to zawsze, ale może wyjaśnić dlaczego program nie
może zostać odnaleziony w twoim systemie nawet jeśli jesteś pewien że się
tam znajduje. Możesz sprawdzić, czy program ma zapisaną na stałe lokalizację
jakiegoś innego programu korzystając z komendy strings i przepuszczając
jej wyjście przez filtr grep.
Niektóre znane przypadki zapisanych na stałe lokalizacji:
shutdown mają zapisaną na stałe lokalizację
/etc/reboot, tak więc reboot musi zostać umieszczony
w katalogu /etc.
init.
Aby naprawić ten problem przenieś program do odpowiedniego katalogu, lub
zmień pliki konfiguracyjne (np. inittab) aby wskazywały na poprawny
katalog. Jeśli masz wątpliwości, umieść program w tym samym katalogu,
w którym znajdował się na dysku twardym oraz użyj tych samych plików
inittab i /etc/rc.d.
Q. Moje jądro posiada obsługę ramdysku, ale inicjuje go z wielkością 0K.
W takiej sytuacji podczas startu systemu pojawi się informacja:
Ramdisk driver initialized : 16 ramdisks of 0K size
Dzieje się tak dlatego, że rozmiar ramdysko został ustawiony na 0 przez jądro podczas startu systemu. Najprawdopodobniej dzieje się tak przez parametr w pliku konfiguracyjnym LILO:
ramdisk= 0
Który w starszych dystrybucjach został umieszczany w przykładowym pliku konfiguracyjnym LILO. Jeśli posiadasz taką linię, usuń ją.
Skutki korzystania z ramdysku o rozmiarze 0K są nieprzewidywalne i mogą doprowadzić do błędów jądra.