ИЛИ КАК УСТАНОВИТЬ НЕСКОЛЬКО ОC НА ОДНОМ КОМПЬЮТЕРЕ |
||||||||||
Lilo mini-Howto
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@metalab.unc.edu>, или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу <linux-howto@asplinux.ru> 2. ВведениеПо той причине, что документация в исходных текстах Lilo (та, что находится в каталоге /usr/doc/lilo-версия) очень сложна для понимания, у многих пользователей возникают некоторые проблемы при написании собственного файла /etc/lilo.conf. Этот документ предназначен для того, чтобы поддержать их и дать минимальную информацию, а также привести 5 примеров инсталляции Lilo:
Автор последних трех примеров - 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, я не буду пересказывать его работу здесь. Но некоторые аргументы достаточно важны, и их необходимо здесь описать:
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:
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:. |