7.3. Двойная загрузка

Многие пользователи настраивают свои компьютеры на загрузку Slackware Linux и другой операционной системы. Если у вас возникли трудности с настройкой своей системы, ниже мы представили несколько типичных сценариев двойной загрузки.

7.3.1. Windows

Настройка компьютера на использование MS Windows и Linux является, наверное, самым распространённым вариантом двойной загрузки. Для настройки такой загрузки существует много способов, однако в этом разделе мы опишем только два.

Часто при настройке систем с двойной загрузкой пользователи разрабатывают идеальный план, согласно которому всё должно работать, но забывают учесть порядок установки. Очень важно понимать, что операционные системы необходимо устанавливать в определённом порядке, чтобы можно было использовать двойную загрузку. Linux всегда предлагает взять под свой контроль над тем, что будет записано в главную загрузочную запись. Следовательно всегда рекомендуется устанавливать Linux в последнюю очередь. Первой необходимо установить Windows, поскольку она всегда принудительно помещает свой загрузчик в MBR, перезаписывая любую запись, которую Linux мог поместить туда.

7.3.1.1. С помощью LILO

Большинство людей предпочтут использовать LILO в качестве менеджера загрузки Linux и Windows. Как было сказано выше, вам следует сначала установить Windows, а потом - Linux.

Допустим, что в вашей системе есть только один жёсткий IDE-диск ёмкостью 40ГБ. Также допустим, что вам нужно выделить половину места на нём для Windows, а вторую половину - для Linux. Это вызовет ряд проблем с при попытке загрузить Linux.

   20GB   Windows boot (C:)
   1GB   Linux root (/)
   19GB  Linux /usr (/usr)

Для Linux вам кроме того нужно ещё выделить раздел под пространство для свопинга соответствующего размера. Как правило его размер составляет два объёма оперативной памяти. Таким образом в системе с 64МБ ОЗУ размер свопа будет составлять 128МБ и т.д. Размер пространства для свопинга является темой многих обсуждений в IRC и Usenet. Не существует по-настоящему “правильного” способа для его определения, однако вполне достачно будет придерживаться приведенного выше правила (в моей системе 512МБ ОЗУ и я вообще не использую своп - прим.переводчика).

После разметки диска вам следует приступить к установке Windows. После этого вы можете установить Linux. Особого внимания заслуживает установка LILO. Для установки LILO вам потребуется выбрать режим expert.

Запустите настройку нового LILO. Вам потребуется установить главную загрузочную запись (MBR) таким образом, чтобы её можно было использовать для выборочной загрузки одной из операционных систем. Используя меню, добавьте разделы с Linux и Windows (или DOS). После этого вы можете установить LILO.

Перезагрузите компьютер. Должен загрузиться LILO, представив вам меню, которое позволяет вам выбрать загружаемую операционную систему. Просто выберите название нужной вам ОС (эти названия были выбраны вами во время настройки LILO) и нажмите Enter.

LILO обладает хорошими возможностями в плане своей настройки. Он не ограничен загрузкой только Linux и DOS. Он в состоянии загрузить практически всё, что угодно. Страницы руководства lilo(8) и lilo.conf(5) содержат более подробную информацию.

Что делать, если LILO не работает? Есть ситуации, в которых на отдельных машинах LILO просто отказывается работать. К счастью есть ещё один способ для осуществления двойной загрузки Linux и Windows.

7.3.1.2. С помощью LOADLIN

Этот способ можно использовать в том случае, если LILO не работает в вашей системе, или если вы просто не хотите настраивать LILO. Этот способ является идеальным способом для пользователей, которые часто переустанавливают Windows. Потому что при каждой переустановке Windows последняя перезаписывает MBR, уничтожая при этом LILO. С использованием LOADLIN эта проблема вам не грозит. Самым большим недостатком этого способа является то, что с помощью LOADLIN вы можете загрузить только Linux.

Используя LOADLIN, вы можете устанавливать операционные системы в любом порядке. Будьте осторожны с установкой чего-либо в MBR, вам не нужно этого делать. LOADLIN работает только с загрузочным разделом Windows. Поэтому во время установки Slackware пропустите этап настройки LILO.

После установки операционной системы скопируйте файл loadlinX.zip (где X - это номер версии наподобие 16a) из домашнего каталога root'а на раздел с Windows. Также скопируйте туда образ ядра. Это вам понадобится выполнить в Linux. В примере ниже показано, как сделать это:

# mkdir /win
# mount -t vfat /dev/hda1 /win
# mkdir /win/linux
# cd /root
# cp loadlin* /win/linux
# cp /boot/vmlinuz /win/linux
# cd /win/linuz
# unzip loadlin16a.zip

При этом на разделе Windows будет создан каталог C:\LINUX (подразумевается, что это /dev/hda1). Также в него будут скопированы рабочие файлы LOADLIN. После этого вам нужно будет перезагрузиться в Windows, чтобы настроить меню загрузки.

В Windows откройте окно с командной строкой. Сначала нам нужно убедиться в том, что система не настроена на загрузку графического интерфейса.

C:\> cd \
C:\> attrib -r -a -s -h MSDOS.SYS
C:\> edit MSDOS.SYS

Добавьте в файл следующую строку:

BootGUI=0

После этого сохраните файл и закройте редактор. Теперь отредактируйте файл C:\AUTOEXEC.BAT, добавив в него меню загрузки. Ниже представлен пример с куском файла AUTOEXEC.BAT, реализующий загрузочное меню:

cls
echo System Boot Menu
echo.
echo 1 - Linux
echo 2 - Windows
echo.
choice /c:12 "Selection? -> "
if errorlevel 2 goto WIN
if errorlevel 1 goto LINUX
:LINUX
cls
echo "Starting Linux..."
cd \linux
loadlin c:\linux\vmlinuz root=/dev/hda2 ro
goto END
:WIN
cls
echo "Starting Windows..."
win
goto END
:END

Самой важной строкой является строка, запускающая LOADLIN. В ней мы указываем загружаемое ядро, корневой раздел Linux и то, что сначала его нужно примонтировать в режиме только для чтения.

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

7.3.1.3. Устаревший хак для Windows NT

Это последний общий вариант двойной загрузки. В давние времена LILO не мог загрузить Windows NT. Для этого пользователям Linux нужно было хакать NTLDR, что вызывало ещё больше проблем, чем при настройке двойной загрузки Windows 9x и Linux. Следует понимать, что следующие инструкции являются устаревшими. LILO научился загружать Windows NT/2000/XP/2003 много лет назад. Однако, если вы используете старую машину, вам может понадобиться воспользоваться этим хаком.

  1. Установите Windows NT.

  2. Установите Linux, убедившись при этом, что LILO установлен в суперблок раздела Linux.

  3. Извлеките первые 512 байт корневого раздела Linux и сохраните их в виде файла на разделе Windows NT.

  4. Отредактируйте файл C:\BOOT.INI в Windows NT, добавив в него пункт Linux.

Установка Windows NT обязательно должна быть выполнена перед установкой Linux. После этого потребуется немного повозиться. Извлечение первых 512 байт раздела Linux на самом деле проще, чем это может показаться на первый взгляд. Для этого вы должны находится в Linux. При условии, что разделом Linux является /dev/hda2, выполните следующую команду:

# dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=1 count=512

Вот и всё. Теперь вам нужно скопировать bootsect.lnx на раздел Windows NT. Однако здесь мы можем столкнуться с другой проблемой. В Linux не поддерживается запись в файловую систему NTFS. Если вы установили Windows NT и отформатировали диск в NTFS, вам придётся скопировать этот файл на дискету с FAT, а затем прочитать её из Windows NT. Если вы отформатировали диск с Windows NT в FAT, мы можете просто примонтировать этот раздел в Linux и скопировать туда файл. В любом случае вам нужно будет переложить файл /tmp/bootsect.lnx с раздела Linux в C:\BOOTSECT.LNX на разделе Windows NT.

Последний этап заключается в добавлении нового пункта в меню загрузки Windows NT. В Windows NT откройте окно с командной строкой.

C:\WINNT> cd \
C:\> attrib -r -a -s -h boot.ini
C:\> edit boot.ini

Добавьте в конец файла следующую сроку:

C:\bootsect.lnx="Slackware Linux"

Сохраните изменения и закройте редактор. После перезагрузки Windows NT вы увидите в меню загрузки системы новый пункт c Linux. Выберите его, чтобы загрузить Linux.

7.3.2. Linux

Да, люди на самом деле так поступают. Это определённо самый простой способ реализации двойной загрузки. Вы можете просто использовать LILO и добавить новые пункты в файл /etc/lilo.conf. Это всё, что нужно сделать.