Loadersystem

ИЛИ

КАК УСТАНОВИТЬ НЕСКОЛЬКО ОC НА ОДНОМ КОМПЬЮТЕРЕ

Оглавление:

[Статьи на тему...]

[Загрузчик Lilo]

[NT loader]

[Операционные системы]

Компьютерные комплектущие

[Разные статьи]

Полезное

Одежда

Для дачи

Отдых

Lilo mini-Howto

Miroslav Skoric

         m.skoric@eunet.yu
      

Перевод: Станислав Рогин, SWSoft Pte Ltd.

История изменений
Издание v3.00 24 July 2000 Под редакцией: ms

LILO - это наиболее распространенная версия загрузчика Linux (Linux Loader) для x86-процессоров; Я буду называть его Lilo, вместо LILO в этом документе, потому что мне не нравятся заглавные буквы. Этот файл описывает несколько стандартных конфигураций Lilo. Этот документ может рассматриваться как дополнение к Руководству Пользователя Lilo. Я думаю, что примеры будут достаточно информативны, даже если ваши настройки мало похожи на мои. Я надеюсь, мои труды уберегут вас от проблем. Lilo достаточно хорошо документирован, и если вдруг кого-то заинтерисуют детали, то читайте файлы в каталоге /usr/doc/lilo*


Эта версия Lilo mini-HOWTO основана на работе Cameron Spitzer (cls@truffula.sj.ca.us) и Alessandro Rubini (rubini@linux.it).


1. Авторские права

Авторские права на русский перевод этого текста принадлежат ї 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу


2. Введение

По той причине, что документация в исходных текстах Lilo (та, что находится в каталоге /usr/doc/lilo-версия) очень сложна для понимания, у многих пользователей возникают некоторые проблемы при написании собственного файла /etc/lilo.conf. Этот документ предназначен для того, чтобы поддержать их и дать минимальную информацию, а также привести 5 примеров инсталляции Lilo:

  • Первый пример: классическая инсталляция "Linux и что-то еще".

  • Следующий пример покажет, как установить Lilo на винчестер, подключенный к /dev/hdc, который загрузится как /dev/hda. Это обычно бывает нужно, когда вы устанавливаете новый Linux на вашей уже работающей машине. В нем также описано, как загружаться со SCSI-дисков, когда ваш BIOS достаточно современен.

  • Третий пример показывает, как загрузить Linux, чей корневой раздел не доступен BIOS.

  • Следующий пример используется для больших дисков, с которыми проблемы и у BIOS-а и у DOS-а (этот пример уже немного устарел).

  • Последний пример показывает, как восстановить поврежденный диск, если повреждение было нанесено путем установки другой операционной системы.

Автор последних трех примеров - Cameron, cls@truffula.sj.ca.us>, он и писал оригинал документа. Alessandro rubini@linux.it> сопроводитель документа на текущий момент, не запускает на своей машине ничего кроме Linux, поэтому он не может ни проверить, ни дополнить примеры сам. Надеюсь не надо напоминать, что любые отзывы принимаются с радостью.


3. Дополнительная информация и стандартная установка

Когда Lilo загружает систему, он использует вызовы BIOS для загрузки ядра Linux с диска (IDE, флоппи или что-либо еще). Таким образом, ядро должно находиться в некотором месте на диске, доступном BIOS.

Во время загрузки ядра Lilo не имеет возможности читать данные файловой системы, поэтому все, что вы напишете в файле /etc/lilo.conf преобразовывается во время инсталляции (в момент исполнения команды /sbin/lilo). Время инсталляции - это то время, когда программа строит таблицы, содержащие список секторов, в которых находятся файлы для загрузки операционной системы. Как следствие этого, все эти файлы должны находиться на разделе, доступном BIOS (обычно все эти файлы находятся в каталоге /boot, то есть только корневая файловая система вашего Linux-а должна быть доступна BIOS). Вы должны переинсталлировать загрузчик (то есть запускать /sbin/lilo) каждый раз, когда изменяете настройку Lilo. Когда вы пересобираете ядро и перезаписываете старый образ ядра, вы должны переустанавливать Lilo.


3.1. Куда мне установить Lilo?

Директива boot= в файле /etc/lilo.conf указывает Lilo, где должен находиться его главный загрузчик (primary boot loader). В общем случае, вы можете выбрать либо главный загрузочный сектор (master boot record) (/dev/hda) или загрузочный сектор корневого раздела вашего Linux-а (это обычно /dev/hda1 или /dev/hda2).

Если у вас есть другая операционная система на вашем жестком диске, вам лучше установить Lilo в загрузочный сектор вашей корневой файловой системы вместо MBR. В этом случае вы должны пометить ваш корневой раздел, как "загружаемый" ("bootable"), используя команду "a" в программе fdisk или команду "b" в программе cfdisk. Если вы не измените свой MBR, вам будет проще убрать свой Linux и Lilo, если это понадобится.

Конечно всегда можно избежать "правил" подобных вышеупомянутому. Вы можете установить Lilo в MBR, даже если у вас установлена другая система. Например, если вы установили Windows NT 4.0, как первую операционную систему на вашей машине, тогда загрузчик NT будет записан в MBR, т.о. ваш NT должен был загружаться без проблем. После установки Linux и выбора - установить Lilo в MBR, Lilo перепишет загрузчик NT. В следующий раз при загрузке машины вы не сможете загрузить NT. Но нет никаких проблем. Вы просто должны отредактировать ваш /etc/lilo.conf и добавить новую запись для NT. В следующий раз, перезагрузив систему, вы увидите в Lilo запись для меню.


3.2. Как я должен настроить мои IDE-диски?

Я лично не использую настройки LBA и LARGE в BIOS-е (но у меня на машине только Linux); это одни из самых ужасных изобретений, вызванное неэффективностью мира PC. Такое решение требует, чтобы ядро находилось на первых 1024 цилиндрах винчестера, но это не проблема, потому что вы разбиваете диск на разделы, и выделяете под корневой раздел небольшое пространство (что вы и должны всегда делать в любом случае).

Если на вашем диске есть другая операционная система, то вам наверно нельзя будет изменить настройки BIOS, иначе эта ОС перестанет работать. Все последние версии Lilo понимают настройки LBA и LARGE.

Заметьте, что ключевое слово "linear" в файле /etc/lilo.conf может помочь решить проблемы геометрии винчестера. Эта команда инструктирует Lilo использовать линейные адреса секторов, вместо троек сектор/головка/цилиндр. Преобразование из линейных в трехмерные адреса во время загрузки немного замедляет этот процесс, но он становится менее уязвим с точки зрения проблем геометрии.

Если у вас более, чем один винчестер, и некоторые из них используются только Linux-ом, и не включаются в процесс загрузки, вы можете сказать BIOS, что их нет. Ваша система будет загружаться быстрее, а Linux автоматически определит их наличие при загрузке. Я часто меняю винчестеры в моих компьютерах, не никогда не трогаю конфигурацию BIOS.


3.3. Что можно делать в момент загрузки?

Когда вы видите приглашение Lilo, вы можете нажать <Tab> для того, чтобы увидеть список возможных вариантов. Если Lilo не настроен на интерактивный режим, то нажмите и держите <Alt> или <Shift> до появления сообщения "LILO".

Если вы выберете загрузку ядра Linux, вы можете добавить аргументы в командной строке после имени системы, которую вы выберете. У ядра достаточно аргументов командной строки. Все они описаны в документе "BootPrompt-HOWTO", автор Paul Gortmaker, я не буду пересказывать его работу здесь. Но некоторые аргументы достаточно важны, и их необходимо здесь описать:

  • root=: вы можете указать Linux подключить корневой раздел, отличный от того, что написано в lilo.conf. Например, в моей системе, есть маленький раздел, в котором находится минимальная установка Linux, и я смогу загрузить систему, даже если, по ошибке, полностью испорчу основной корневой раздел.

  • init=: ядра Linux версии 1.3.43 и новее могут исполнить команду, отличную от запуска /sbin/init, в соответствии с тем, что написано в командной строке. Если у вас возникают проблемы в процессе загрузки, вы можете получить доступ к чистой системе, набрав в командной строке init=/bin/sh (когда вы получите приглашение оболочки (shell prompt) вам скорее всего понадобится подключить диски: попробуйте "mount -w -n -o remount /; mount -a", и не забудьте сделать "umount -a" перед выключением компьютера).

  • Число: введя ядру в командной строке число, вы заставляете init запуститься на специфическом рабочем уровне (run-level) (по умолчанию обычно это бывают 3 или 2, в соответствии с тем, какой у вас дистрибутив). Прочтите документацию по команде init, изучите файлы /etc/inittab и /etc/rc*.d для дальнейших экспериментов.


3.4. Как мне убрать Lilo?

Когда Lilo перезаписывает загрузочный сектор, он оставляет резервную копию в файле /boot/boot.xxyy, где xxyy - главное и зависимое число устройства (major and minor numbers), в шестнадцатеричном виде. Вы можете увидеть главное и зависимое число вашего диска или раздела, набрав команду "ls -l /dev/device". Например, первый сектор устройства /dev/hda (главное число - 3, зависимое - 0) будет записано в файл /boot/boot.0300, установка Lilo на /dev/fd0 создает файл /boot/boot.0200 и установка на устройство /dev/sdb3 (главное число - 8, зависимое - 19) создаст файл /boot/boot.0813. Заметьте, что Lilo не создаст резервную копию, если файл уже существует, поэтому вам не надо беспокоиться о сохранности этой копии при переустановке Lilo (например, после сборки нового ядра). Резервные копии в каталоге /boot/ всегда отражают общую ситуацию до установки Lilo.

Если вам надо деинсталлировать Lilo (например, в очень неудачном случае - деинсталляции Linux), вам достаточно восстановить исходный загрузочный сектор. Если Lilo установлен в /dev/hda, просто наберите "dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1" (Я лично делаю "cat /boot/boot.0300 > /dev/hda", но это не совсем безопасно, так как это восстановит и стандартную таблицу разделов, которую вы могли изменить со времени сохранения загрузочного сектора). Эта команда значительно проще, чем "fdisk /mbr" из DOS-а: она позволяет вам начисто удалить Linux с диска без загрузки чего-либо, кроме Linux-а. После удаления Lilo не забудьте запустить команду fdisk Linux-а для удаления всех Linux-разделов (fdisk в DOS-е не удаляет не-DOS разделы) (Примечание переводчика: Это не верно для так называемого DOS 7.0, встроенного в Windows 95/98).

Если вы установили Lilo в корневой раздел (например, в /dev/hda2), ничего особенного не надо делать для деинсталляции Lilo. Просто уберите с диска все Linux-разделы при помощи fdisk. Вы также должны пометить DOS-раздел загружаемым (bootable).


4. Простая конфигурация

Многие установки Lilo используют файл, подобный приведенному ниже:

boot = /dev/hda   # или ваш корневой раздел
delay = 10        # задержка, в десятых долях секунды для возможности ввода команд
vga = 0           # необязательный параметр используйте "vga=1" для разрешения 80x50
#linear           # используйте ключевое слово "linear" в случае проблем с геометрией диска.

image = /boot/vmlinux  # ваш файл zImage
  root = /dev/hda1     # ваш корневой раздел
  label = Linux        # или любое приятное вам название
  read-only            # подключить(mount) в режиме только чтение

other = /dev/hda4   # ваш dos-раздел (если есть)
  table = /dev/hda  # текущая таблица разделов (partition table)
  label = dos       # или любое другое неприятное вам название

У вас может быть несколько секций "image" и "other" - столько, сколько захотите. Не очень распространенная ситуация - иметь несколько образов ядер, настроенных в файле lilo.conf, если только вы не занимаетесь разработкой частей ядра (kernel development).


4.1. Как справиться с большими ядрами

Если вы собираете "zImage"-ядро, и оно больше половины мегабайта (достаточно частое явление для ядер версии 2.1), то вам нужно собрать вместо zImage, большой zImage ("make bzImage") при помощи команды: "make bzImage". Для загрузки большого ядра не надо ничего дополнительно делать, но у вас должна быть версия Lilo18 или более новая . Если у вас старая версия, обновите (upgrade) пакет Lilo.


4.2. Другие источники информации

В дополнение к документации по Lilo существует набор мини-HOWTO, которые вам могут пригодиться. Все они имеют название "Linux+что-то ещеOS", для нескольких операционных систем. В них описывается сосуществование Linux и других операционных систем. Например, "NT OS Loader + Linux mini-HOWTO" (автор Bernd Reichert) описывает, как добавить запись для Linux в существующее меню загрузки NT. Также документ "Multiboot-with-LILO" описывает, как различные виды Windows могут сосуществовать с Linux. Здесь мы будем говорить о том, как добавить запись для Windows NT в существующее меню Lilo.


4.3. Как загрузить Windows NT из меню Lilo

Здесь я предлагаю вам способ, как можно добавить пункты в меню Lilo для того, чтобы загрузить Linux или NT:

  • Прежде всего я предложил бы установить свежий дистрибутив Windows NT 4.0 на ваш жесткий диск. Я предполагаю, что вы уже сделали резервную копию важных данных, тогда установка NT должна пройти без проблем. Во времы установки NT, инсталлятор не спросит вас, где разместить загрузчик NT. Он будет помещен в MBR (Главная загрузочная запись) на вашем жестком диске. Имеется возможность восстановить предыдущее содержимое MBR (например от предыдущего содержимого Lilo). Я предложил бы вам (до инсталляции NT) загрузить компьютер с дискеты DOS, имеющей программу FDISK. В командной строке a:\ введите: fdisk /mbr и снова перезагрузите компьютер (без дискеты).

  • После успешной установки NT, вы увидите, что система использует целый жесткий диск или определенный раздел жесткого диска (в зависимости от того, что вы выбрали в процессе установки). Т.е. рекомендуется 'сжать' раздел, где находится NT, чтобы освободить некоторое пространство на диске. На этом свободном пространстве вы установите Linux. После того, как ваш NT сконфигурирован и запускается, вы должны загрузить компьютер, используя дискету с утилитой Partition Magic. Это графическая утилита позволяет видеть все разделы на всех жестких дисках, которые у вас имеются. Вы сможете изменить разделы, не потеряв данные. Первое - сделайте ваши существующие разделы меньшего размера, т.о. вы получите некоторое свободное место на диске для других целей. Хотя я вам советую сделать резервную копию до того, как вы будете делать любые изменения разделов, я обычно делаю 'сжатие' разделов NT, когда NT установлена не полностью (т.е. если появится необходимость, то повторный запуск установки не вызовет проблем). Partition Magic (или другая подобная утилита) будет 'сжимать' ваши данные на NT разделе (NTFS или FAT) в начало или в конец раздела. Вы можете сами выбрать, где размещать данные - в начале или в конце диска (я предпочитаю, чтобы данные NT раздела были в начале, т.ч. в конце диска будет свободное пространство). После 'сжатия' вы можете перезагрузить систему (NT), чтобы проверить результат: используйте для этого Проводник Windows или Disk Administrator.

  • Пока все хорошо. Следующий шаг - установка Linux. Возмите ваш дистрибутив RedHat (я надеюсь, что с другими пакетами подобно), поместите установочный диск в устройство и перезагрузите компьютер. Когда вы выберите тип установки (Gnome или KDE Workstation, Custom и т.п.) можно выбрать запланированные заранее компоненты для установки, но я рекомендую сначала установить Workstation. Это лучше, т.к. установка Linux будет автоматически искать свободное пространство на (первом) жестком диске, сделайте все разделы необходимые Linux, отформатируйте их должным образом и выберите большинство опций по умолчанию, так установка пройдет лучше (позже, если вы хотите, вы можете или добавить отсутствующие компоненты, или переустановить Linux, выбрав Custom). Lilo запишется в MBR.

  • После окончания установки Linux, вы должны перезагрузить компьютер и после перезагрузки вы увидите только Lilo, с единственным пунктом "Linux" в меню загрузки (или может быть больше, чем один пункт, в случае, когда у вас многопроцессорная система). Но не паникуйте! Ваш Windows NT находится там, где вы его установили. Вам будет необходимо найти и отредактировать файл /etc/lilo.conf. Сначала, когда вы откроете этот файл, вы увидите только одну (или больше) записей для загрузки Linux. Вы должны точно знать расположение (читай: раздел), где установлен Windows NT, т.о. вы должны добавить соответствующую запись в файл /etc/lilo.conf. После того, как вы это сделаете, перезапустите Lilo, и при следующей перезагрузке вы увидите обе записи 'linux' и 'nt' в меню Lilo.


5. Настройка hdc для загрузки, как hda, и использование опции bios=

Lilo позволяет установить ядро на одно устройство и заставить BIOS читать его с другого устройства. Например, я часто устанавливаю Linux на диск, подключенный к hdc (главный диск на вторичном IDE-контроллере) и загрузиться с него, как с системы на другом компьютере. Я скопировал инсталляционный диск на маленький раздел, поэтому могу запустить команду chroot на виртуальной консоли для установки Lilo на hdc, пока я занимаюсь чем-то другим.

Файл lilo.conf, который я использую для инсталляции Lilo выглядит примерно так:

# Этот файл должен использоваться для системы, видящей этот диск как /dev/hdc
boot = /dev/hdc   # перезаписать MBR на hdc
disk = /dev/hdc   # Указать, как hdc будет выглядеть в системе:
   bios = 0x80    #  BIOS увидит его, как первый диск
delay = 0
vga = 0

image = /boot/vmlinux  # это уже на /dev/hdc1
  root = /dev/hda1     # но во время загрузки это будет hda1
  label = Linux
  read-only

Этот конфигурационный файл должен читаться Lilo, запускаемым с /dev/hdc1. Таблицы Lilo, которые будут записаны в загрузочный сектор (/dev/hdc), должны описывать файлы в каталоге /boot (который в свою очередь находится на hdc); эти файлы будут доступны при доступе к hda, когда диск будет загружен в виде отдельной системы.

Я назвал этот файл /mnt/etc/lilo.conf.hdc (/mnt - это место, куда был подключен диск hdc во время инсталляции). Я устанавливаю Lilo командой "cd /mnt; chroot . sbin/lilo -C /etc/lilo.conf.hdc". Читайте документацию по chroot, если эта команда вам не понятна.

Директива "bios=" в файле lilo.conf нужна для того, чтобы указать Lilo, что думает о ваших устройствах Lilo. Вызовы BIOS определяют флоппи-диски и жесткие диски номерами: 0x00 и 0x01 означают флоппи-дисководы, 0x80 и более означают винчестеры (старые версии BIOS могли работать только с двумя дисками). Поэтому "bios = 0x80" в предыдущем примере означает "использовать 0x80 в вызовах BIOS при доступе к /dev/hdc".

Эта директива Lilo может быть применима и в другой ситуации: когда, например, ваш BIOS имеет возможность загружаться со SCSI-дисков вместо IDE. Когда есть и IDE-, и SCSI-устройства, Lilo не может определить, к которому будет относиться цифра 0x80, потому что пользователь выбирает порядок в конфигурационных меню BIOS, и они не доступны во время работы Linux.

По умолчанию Lilo считает, что IDE-диски идут первыми, поэтому, в противном случае, в файле /etc/lilo.conf должно находиться примерно следующее:

disk = /dev/sda bios = 0x80


6. Использование Lilo, когда BIOS не видит корневой раздел

У меня два IDE-диска, и один SCSI. SCSI-диск не виден из BIOS. Загрузчик Linux, Lilo, использует вызовы BIOS и может видеть только те диски, которые видит BIOS. Мой глупый AMI BIOS может загрузиться только с "A:" или "C:" Моя корневая файловая система находится на SCSI-диске.

Решение состоит в том, чтобы держать ядро, файл таблиц (map file) и цепочный загрузчик (chain loader) в Linux-разделе на первом IDE-диске. Заметьте, что необязательно в этом случае иметь ядро на корневом разделе.

Второй раздел на моем первом IDE-диске (/dev/hda2, Linux-раздел для загрузки системы) подключен к /u2. Вот файл /etc/lilo.conf, который я использовал.

#  Установка Lilo на MBR
#  первого IDE-диска.
#
boot = /dev/hda
#  /sbin/lilo (установщик) копирует загрузочную запись Lilo
#  из следующего файла в месторасположение MBR.
install = /u2/etc/lilo/boot.b
#
#  Я написал сложное загрузочное меню.  Lilo найдет его здесь.
message = /u2/etc/lilo/message
#  Установщик создаст следующий файл. Он подскажет
#  загрузчику, где находятся блоки ядра.
map = /u2/etc/lilo/map
compact
prompt
#  Ожидать 10 секунд, затем загрузить ядро версии 1.2.1 по умолчанию.
timeout = 100
#  Ядро можно скопировать туда, где его увидит BIOS командой:
#      cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
image = /u2/z1.2.1
        label = 1.2.1
#  Lilo указывает ядру - подключить первый раздел на SCSI
#  в качестве корневого. Для этого BIOS не обязательно должен его видеть.
        root = /dev/sda1
#  Этот раздел будет проверен и переподключен (remount) в скрипте /etc/rc.d/rc.S
        read-only
#  Я оставил старое ядро Slackware на случай, если я соберу нерабочее ядро
#  Кстати, мне это пригодилось
image = /u2/z1.0.9
        label = 1.0.9
        root = /dev/sda1
        read-only
#  Мой раздел с DR-DOS 6.
other = /dev/hda1
        loader=/u2/etc/lilo/chain.b
        label = dos
        alias = m


7. Использование Lilo, когда BIOS не видит загрузить корневой раздел

У меня на работе в системе установлен IDE-диск размером 1Гб. BIOS может видеть только первые 504 Мб этого диска. (Здесь Мб означает 2**10 байт, а не 10**6.) Поэтому у меня MS-DOS на 350 Мб разделе /dev/hda1 и мой корневой раздел Linux размером 120 Мб - /dev/hda2.

MS-DOS не смог установиться правильно, когда диск был чистый. У Novell DOS 7 была та же проблема. К счастью для меня, "Аксессуары от IBM" были неполными - забыли положить дискету с программой "OnTrack" в коробку с винчестером. Винчестер должен был поставляться с продуктом под названием "OnTrack Disk Manager." Если у вас только MSDOS, я думаю, вам он понадобится.

Поэтому я создал таблицу разделов при помощи команды fdisk в Linux-е. MSDOS-6.2 отказался от инсталляции в /dev/hda1. Он сказал что-то типа "Эта версия MS-DOS только для новых установок, а на вашем компьютере уже есть MS-DOS, поэтому получите версию обновления (upgrade release) от вашего дилера." А на самом деле диск был новый.

Какая неудача! Поэтому я снова запустил fdisk в Linux-е снова и удалил раздел 1. Удовлетворенная этим MS-DOS 6.2 создала такой же в точности раздел, который я только что удалил и туда себя установила. MS-DOS 6.2 также записала свой MBR на диск, но он не загружался.

К счастью, у меня было ядро Slackware на флоппи (созданное программой установки дистрибутива Slackware), поэтому я загрузил Linux и перезаписал Lilo поверх сломанного MBR MS-DOS-а. И все заработало. Вот файл /etc/lilo.conf, который я использовал:

boot = /dev/hda
map = /lilo-map
delay = 100
ramdisk = 0             # Отключить электронный диск (ramdisk) в ядре Slackware
timeout = 100
prompt
disk = /dev/hda         # BIOS видит только первые 500 Мб.
   bios = 0x80          # выбрать первый IDE.
   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 = /boot/chain.b

После того, как я это все установил, я выяснил, что раздел, содержащий файлы zImage, boot.b, map, chain.b и файлы сообщений, может иметь файловую систему msdos, если только она не испорчена "Stacker"-ом или "Doublespace"-ом. Поэтому мой раздел DOS на /dev/hda1 мог стать размером 500 Мб.

Я также выяснил, что система "OnTrack" записала бы таблицу разделов немного в другое место, чем обычно, и, возможно, для совместимости изменила IDE-драйвер Linux-а. Но установка этого "OnTrack" сделала бы невозможной загрузку со стандартного ядра, входящего в поставку Slackware. Кстати, потом IBM прислал мне дискету с "OnTrack". Я позвонил в службу поддержки OnTrack. Они сказали мне, что Linux - плохая система, потому что не использует BIOS. Я выкинул их дискету.


8. Загрузка с аварийного флоппи-диска

Затем, я установил Windows-95 в моем офисе. Она напрочь затерла мой прекрасный MBR Lilo, но оставила мои разделы с Linux в покое. Ядра долго загружаются с флоппи, поэтому я поработал над настройками, чтобы флоппи мог загружать ядро с IDE-диска.

Я сделал этот флоппи примерно так:

  fdformat /dev/fd0H1440      #  отформатировать диск
  mkfs -t minix /dev/fd0 1440 #  создать файловую систему minix
  mount /dev/fd0 /mnt         #  подключить диск к стандартной временной точке
  cp -p /boot/chain.b /mnt    #  скопировать цепочный загрузчик (chain loader) на диск
  lilo -C /etc/lilo.flop      #  установить Lilo и его таблицы на дискету.
  umount /mnt

Заметьте, что дискета должна быть подключена к системе во время запуска инсталлятора Lilo, чтобы Lilo мог правильно построить свои таблицы.

Ниже приведен файл /etc/lilo.flop. Он почти такой же, как и предыдущий:

#  Создает флоппи, который может загружать ядра с IDE.
boot = /dev/fd0
map = /mnt/lilo-map
delay = 100
ramdisk = 0
timeout = 100
prompt
disk = /dev/hda     # 1 Гб IDE, BIOS видит только первые 500 Мб.
   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 = /mnt/chain.b

И последнее. Мне понадобилась MS-DOS 6.2 в моей офисной системе, но я не хотел трогать первый диск. Я установил SCSI-контроллер и диск, создал там файловую систему msdos при помощи команды mkdosfs, и Windows-95 увидел его как "D:". Но, конечно, MSDOS не мог загрузиться с D:. Это не проблема, когда у вас есть Lilo. Я добавил следующее в файл lilo.conf из Примера 2.

other = /dev/sda1
  label = d6.2
  table = /dev/sda
  loader = /boot/any_d.b

С этим дополнением MSDOS-6.2 работает и думает, что он на диске C:, а Windows-95 - на D:.



Hosted by uCoz