Windows NT и Linux : загрузка через OS Loader от NT
В этом разделе, говоря о Windows NT, я все время буду иметь в виду и Windows 2000, так как в части установки Linux между ними различий нет. Будем предполагать, что Windows NT установлена в разделе /dev/hda2 (как вы помните, /dev/hda1 предлагалось отвести под FAT16-раздел). Раз ОС Windows NT на вашем компьютере уже установлена, значит и загрузчик OS Loader тоже уже установлен, а, следовательно, вполне логично использовать его и для загрузки Linux. Я надеюсь, что вы сделали резервную копию всей ценной для вас информации с жесткого диска(ов). После этого можно перейти к установке Linux. Этапы установки можно описать следующим образом.
Если вы не сделали этого ранее, то до начала каких-либо действий по инсталляции Linux изготовьте загрузочные дискеты для загрузки и восстановления Windows NT. Для создания загрузочной дискеты достаточно скопировать на отформатированную дискету файлы ntldr, ntdetect.com и boot.ini из корневого каталога загрузочного диска. Программу создания дискеты аварийного восстановления для Windows 2000 можно запустить из панели управления (команда Архивация данных), а в Windows NT 4.0 я ее сумел найти только с помощью поиска в справочной системе (ищите "Создание диска аварийного восстановления").
С помощью программы Partition Magic освободите часть дискового пространства и создайте на свободном месте раздел типа ext2 (файловая система Linux) и swap-раздел. О том, что надо при этом учесть, было рассказано выше.
Проведите процедуру инсталляции Linux, следуя рекомендациям, прилагаемым к имеющемуся у вас дистрибутиву. В ходе процедуры инсталляции учтите следующее:
- во-первых, в процессе установки надо обязательно изготовить загрузочную дискету, для чего при запросе о создании загрузочного диска выбрать команду Yes, make a BOOT DISK (Создать загрузочный диск). Этот диск понадобится вам на одном из следующих этапов. Кроме того, в последующем можно будет просто использовать эту дискету для загрузки Linux. Это тоже вариант загрузки, тем более что, в отличие от загрузочной дискеты ДОС, после загрузки система уже о дискете не вспоминает, ее можно убрать из дисковода (даже размонтировать не требуется) и использовать дисковод для работы с обычными дискетами. Однако этот метод все же не совсем удобен, так что я не предлагаю вам использовать его постоянно. Только как запасной! Но это потом, а при настройке многовариантной загрузки он будет просто необходим!
во-вторых, при установке Linux надо установить LILO не в главный загрузочный сектор диска (Master Boot Record), а в первый сектор того раздела, который вы отвели для корневого раздела Linux. Для определенности предположим, что Linux устанавливается в первый сектор раздела /dev/hda3.
В принципе, если вы установите LILO в MBR, то и это не смертельно, конечный результат (загрузка через NT Loader) может быть достигнут и в этом случае, но потребуется больше усилий. Дело в том, что формат MBR, создаваемого LILO и Windows (DOS), различен. Поэтому если вы поставите LILO в MBR, вам придется потом восстановить MBR от Windows. На всякий случай я позже расскажу, как это делается, но лучше будет, если вы сразу поставите LILO в первый сектор его собственного раздела.
После завершения инсталляции загрузите Linux с помощью загрузочной дискеты (если вы установили LILO в раздел Linux и не трогали MBR, то другой возможности загрузить Linux у вас пока нет).
Скопируйте загрузочный сектор Linux в файл; он понадобится для того, чтобы загрузчик Windows NT/2000 мог запускать Linux. Для этого надо смонтировать чистую дискету, например, так:
[root]# mount -t vfat /dev/fda1 /mnt/floppy
перейти в каталог /mnt/floppy
[root]# cd /mnt/floppy
и выполнить команду
[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1
которая позволяет записать содержимое загрузочного сектора диска /dev/hda3 в файл /mnt/floppy/bootsect.lnx.
Примечание. Хочу заметить, что если диск C: (/dev/hda1) отформатирован в системе FAT, то можно сразу создать файл bootsect.lnx в корневом каталоге диска C:. Отмечу, что я не знаю (не пробовал) можно ли будет загружаться без дискеты, если первый раздел загрузочного диска отформатирован в NTFS. Но думаю, что проблем и здесь не будет, кроме необходимости переноса boot-сектора через дискету, поскольку пока что поставляемые в дистрибутиве варианты ядра не поддерживают NTFS.
Далее необходимо перезагрузиться, чтобы запустить Windows NT, для чего даем в Linux команду:
[root]# shutdown -h now
Поскольку главная загрузочная запись не была изменена, должна загрузиться Windows NT. После завершения загрузки необходимо перенести файл /mnt/floppy/bootsect.lnx в корневой каталог диска C:, точнее — в корневой каталог того раздела, с которого загружается Windows NT. В зависимости от того, как вы устанавливали Windows NT, это может быть как FAT16-раздел, так и NTFS-раздел. Признаком нужного раздела является наличие в нем файлов ntldr и boot.ini (эти файлы могут быть скрытыми!). Файлу bootsect.lnx можно присвоить атрибут read-only.
После завершения загрузки NT найдите файл boot.ini в корневом каталоге и добавьте в него следующую строчку:
C:\bootsect.lnx="LINUX"
(естественно, что в кавычках вы можете поставить все, что вам угодно).
Осталось перезапустить компьютер еще раз, причем при загрузке вы уже будете иметь возможность выбрать Linux для загрузки. После этого будет запущен LILO, который загрузит Linux.
Теперь отдельно рассмотрим случай, когда вы (по ошибке или намеренно) установили LILO в главную загрузочную запись диска (Master Boot Record, MBR). В этом случае загрузочная запись Windows NT (или 2000) будет затерта, и загрузить Windows NT (см. шаг 6 выше) уже будет невозможно. Если вы все еще намерены пользоваться загрузчиком OS Loader от NT, а не LILO, последовательность действий несколько изменяется: вместо шага 6 необходимо проделать следующее.
Загрузите Windows NT с загрузочных дискет (см. шаг 1). При этом необходимо выбрать в меню загрузчика команду Recover, а затем — режим Command mode. При запросе следует зарегистрироваться с учетной записью администратора системы (Administrator).
Восстановите главную загрузочную запись диска. Для этого можно дать команду fdisk /mbr. У меня получалось, хотя в некоторых статьях утверждается, что восстановить таким образом MBR удается не всегда. В Windows 2000 имеются специальные команды fixboot и fixmbr (они запускаются из консоли восстановления, см. справку). Выполните их обе в указанном порядке. Теперь Windows 2000 снова будет загружаться нормально.
Перезапустите компьютер с загрузочной дискеты Linux и зарегистрируйтесь в системе с полномочиями администратора (root).
Введите команду cd /etc и откройте файл lilo.conf. В начале этого файла есть ссылка на загрузочный раздел по умолчанию, например, /dev/hda.
С помощью любого редактора, например, CoolEdit из Midnight Commander, следует заменить это значение указанием на диск и раздел, куда была установлена Linux (точнее, указанием на тот диск и раздел, который монтируется как корневой в Linux). Если Linux установлена в раздел /dev/hdc1, то именно это и следует записать, т. е. поменять /dev/hda на /dev/hdc1. Если вы не помните, куда именно установлена Linux, найдите последнюю переменную файла /etc/lilo.conf — переменную image. В ней хранится нужное значение.
Выполнить команду /sbin/lilo для записи загрузчика в раздел /dev/hdc1 (команду lilo нужно выполнить без аргументов). Будет выдано предупреждение о том, что раздел не является первым на диске. Именно это нам и нужно, чтобы загрузочная запись Windows 2000 осталась в целости и сохранности.
Выполнить шаги 6–8 приведенного выше алгоритма.
Легко догадаться, что только что приведенная сложная последовательность операций с двумя лишними перезагрузками потребовалась только для того, чтобы перенести загрузочный сектор Linux из MBR в первый сектор раздела, отведенного для Linux, и восстановить MBR от Windows.
Все, на этом установка завершена, и вы имеете возможность на этапе загрузки выбирать ту ОС, которая будет осуществлять управление вашим компьютером в данном сеансе работы.