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