Mam dwa dyski IDE i jeden dysk SCSI. Dysku SCSI nie widać w BIOS-ie. LILO używa BIOS-owych odwołań i widzi tylko te dyski, które widzi także BIOS. Mój głupi AMI BIOS może wystartować tylko z "A:" lub "C:". Mój główny system plików jest na partycji na dysku SCSI.
Rozwiązanie:
Zapisz jądro, plik z odwzorowaniem (map file) i chain loader
na partycji Linux-owej na pierwszym dysku IDE. Zauważ, że nie
potrzebne jest, aby trzymać jądro na swojej partycji z głównym
systemem plików.
Druga partycja na moim pierwszym dysku IDE (/dev/hda2) jest
zamontowana na /u2.
Oto mój plik /etc/lilo.conf:
# Zainstaluj rekord startowy LILO w Master Boot Record
# na pierwszym dysku IDE.
#
boot = /dev/hda
# /sbin/lilo (instalator) kopiuje rekord startowy LILO z następującego
# pliku do MBR.
install = /u2/etc/lilo/boot.b
#
# Napisałem swoje menu startowe. LILO je tam znajduje.
message = /u2/etc/lilo/message
# Instalator stworzy następujący plik.
# Mówi on programowi ładującemu, gdzie znajduje się jądro.
#
map = /u2/etc/lilo/map
compact
prompt
# Zaczekaj 10 sekund, a potem załaduj jądro 1.2.1 jako domyślne
timeout = 100
# Jądro jest zapisane tam, gdzie BIOS je zobaczy poleceniem:
# cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
image = /u2/z1.2.1
label = 1.2.1
# LILO informuje jądro, aby zamontowało pierwszą partycję dysku SCSI
# jako główny system plików.
# BIOS nie musi jej widzieć.
root = /dev/sda1
# Ta partycja będzie sprawdzona i ponownie zamontowana przez /etc/rc.d/rc.S
read-only
# Temu samemu jądru można przekazać, aby zmontowało inną partycję
# jako główny system plików. Mam awaryjną konfigurację na /u2.
image = /u2/z1.2.1
label = 1.2.1-hda2
root = /dev/hda2
read-only
# Trzymałem stare jądro ze Slackware w razie gdybym stworzył
# jakieś nie działające nowe jądro. Właściwie potrzebowałem tego
# jeden raz.
image = /u2/z1.0.9
label = 1.0.9
root = /dev/sda1
read-only
# Moja partycja DR-DOS-a 6
other = /dev/hda1
loader=/u2/etc/lilo/chain.b
label = dos
alias = m
System w moim biurze ma jeden dysk IDE 1GB.
BIOS może widzieć tylko pierwsze 504 MB dysku IDE.
(Gdzie MB oznacza 2^10 bajtów a nie 10^6 bajtów.)
Tak więc mam MS-DOS na partycji 350 MB /dev/hda1 i
główny system plików Linux-a na partycji 120 MB /dev/hda.
MS-DOS nie był w stanie się poprawnie zainstalować kiedy dysk był jeszcze świeży. Novell DOS 7 miał te same problemy. Na szczęście dla mnie, "Options by IBM" zapomnieli włożyć dysietki "OnTrack" do pudełka z dyskiem. Dysk miał przyjść z produktem zwanym "OnTrack Disk Manager". Jeśli tylko masz MS-DOS-a, sądze, że musisz tego użyć.
A więc zrobiłem tablicę partycji Linux-owym fdisk-iem.
MS-DOS 6.2 nie chciał się zainstalować na /dev/hda1.
Pisał coś jak:
'this release of MS-DOS is for new installations. Your computer already has MS-DOS [co było nieprawdą, bo dysk był czysty] so you need to get an upgrade release from your dealer.'
Co za palant! Uruchomiłem Linux-owego fdisk-a jeszcze raz i skasowałem parytcję pierwszą z tablicy partycji. To zadowoliło MS-DOS-a 6.2, który stworzył dokładnie tę samą partycję pierwszą, którą właśnie skasowałem i zainstalował się. MS-DOS 6.2 zapisał swój Master Boot Record na dysk, ale nie mógł wystartować.
Na szczęście miałem jądro ze Slackware na dyskietce (zrobioną przez program instalacyjny Slackware "setup"), wystartowałem Linux-a i zapisałem LILO na zepsuty MBR DOS-a. To działa.
Oto plik /etc/lilo.conf jakiego użyłem:
boot = /dev/hda
map = /lilo-map
delay = 100
ramdisk = 0 # Wyłącza ramdisk w jądrze Slackware
kernel
timeout = 100
prompt
disk = /dev/hda # BIOS widzi tylko pierwsze 500 MB.
bios=0x80 # podaje pierwszy dysk IDE.
sectors = 63 # weź te liczby z dokumentacji twojego
heads= 16 # dysku twardego
cylinders = 2100
image = /vmlinuz
append = "hd=2100,16,63" # To jest opcjonalne.
root = /dev/hda2
label = linux
read-only
vga = extended
other = /dev/hda1
label = msdos
table = /dev/hda
loader = /boot/chain.b
## koniec
Po tym, jak zainstalowałem te systemy, stwierdziłem, że partycja
zawierająca zImage, boot.p, map, chain.b i plik z komunikatami
może używać systemu plików msdos, tak długo dopóki nie jest
potraktowana "stacker-em" czy "doublespace-m". Tak więc mogłem
zrobić partycję DOS-ową na /dev/hda1 o poj. 500 MB.
Dowiedziałem się także, że "OnTrack" zapisałby tablicę partycji poczynając od kilku tuzinów bajtów od początku dysku, zamiast zacząć na samym początku dysku, i że jest możliwe tak przerobić sterownik Linux-owy do IDE, żeby sobie poradził z tym problemem. Ale instalacja z prekompilowanym jądrem ze Slackware nie byłaby możliwa. Ostatecznie IBM przysłał mi dyskietkę "OnTrack". Zadzwoniłem do serwisu technicznego "OnTrack". Powiedzieli, że Linux jest popsuty, bo nie używa BIOS-u. Oddałem im dyskietkę spowrotem.
Potem zainstalowałem Windows 95 w moim biurze. Rozwaliły mój ładny LILO MBR w pył, ale zostawiły moją partycję Linux-ową w spokoju. Jądra długo się ładują z dyskietek, więc zrobiłem dyskietkę z działającym na niej ustawieniem LILO, która mogła startować moje jądro z dysku IDE.
W ten sposób stworzyłem dyskietkę LILO:
fdformat /dev/fd0H1440 # utwórz ścieżki na dyskietce
mkfs /dev/fd0 1440 # utwórz na niej stsem plików minix
mkdir /3 # stwórz katalog, żeby ją zamontować
mount /dev/fd0 /3 # zamontuj dyskietkę
cp -p /boot/chain.b /3 # przekopiuj chain loader
lilo -C /etc/lilo.flop # zainstaluj LILO i mapę systemu na dyskietce
umount /3 # odmontuj dyskietkę
Zauważ, że DYSKIETKA MUSI BYĆ ZAMONTOWANA KIEDY URUCHAMIASZ NA NIEJ INSTALATORA tak, żeby LILO mogło zapisać swoją mapę prawidłowo.
Oto plik /etc/lilo.flop. Jest prawie identyczny z
poprzednim:
# Tworzy dyskietkę, która może ładować jądra z dysku twardego.
boot = /dev/fd0
map = /3/lilo-map
delay = 100
ramdisk = 0 # Wyłącza ramdisk w jądrze ze Slackware
timeout = 100
prompt
disk = /dev/hda # Dysk 1 GB, BIOS widzi tylko 500 MB
bios=0x80
sectors = 63
heads = 16
cylinders = 2100
image = /vmlinuz
append = "hd=2100,16,63"
root = /dev/hda2
label = linux
read-only
vga = extended
other = /dev/hda1
label = msdos
table = /dev/hda
loader = /3/chain.b
## koniec
Ostatecznie, potrzebowałem MS-DOS-a 6.2 w moim systemie biurowym, ale nie chciałem dotykać pierwszego dysku. Dodałem kontroler SCSI i dysk, stworzyłem na nim Linux-owym mkdosfs-em plik systemów msdos i Windows 95 widzi to jako "D:". Ale oczywiście MS-DOS nie wystartuje z "D:". To nie jest problem jeśli masz LILO. Dodałem:
other = /dev/sda1
label = d6.2
table = /dev/sda
loader = /boot/any_d.b
do lilo.conf z przykładu 2. MS-DOS 6.2 działa i myśli, że
jest na"C:" a Windows 95 jest na "D:".
Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:
Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują się na
tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem
ftp.ippt.gov.pl/pub/Linux/JTZ/
Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to
wyślij list o treści subscribe jtz Imię Nazwisko na adres
listproc@ippt.gov.pl