Назад Вернуться к оглавлению. Далее

Книги и CD по Линукс можно заказать в интернет-магазине Bolero

17. Несколько ОС на одном компьютере или загрузка ОС по выбору

17.1. Предостережения
17.2. Разделы на диске и процесс загрузки
17.3. Выбор загрузчика
17.4. Подготовка разделов на диске
17.5. Windows NT-2000 и Линукс (загрузка через OS Loader от NT)
17.6. Использование загрузчика LILO OS Linux
17.7. Загрузка Линукс из MS-DOS с помощью loadlin.exe
17.8. Источники и ссылки

В этом разделе мы рассмотрим вопрос о том, как помирить кошку с собакой. Такую ласковую, пушистую, но гуляющую сама по себе кошечку-Windows, с внешне сердитой и лохматой, но становящейся со временем лучшим и самым преданным другом пользователя, собакой-Линукс.

Большинство из тех, кто начинает осваивать Линукс, являются уже опытными пользователями ОС Windows, чаще всего Windows 95 или 98. Действительно, пока еще вряд ли Линукс можно назвать той операционкой, с которой пользователь начинает свое знакомство с компьютером. И, естественно, если пользователь раньше работал с ОС Windows и решил поэкспериментировать с Линукс, то ему не хочется терять свою привычную среду и все, что было наработано, настроено и отлажено под Windows. К счастью, терять и не обязательно, потому что на одном компьютере вполне могут ужиться две и даже больше ОС (хватило бы места на диске!). Я расскажу в этом разделе о том, каким образом можно установить две и более ОС на одном компьютере.

Материал этого раздела основан на нескольких mini-HOWTO-руководствах, расположенных в /usr/doc/HOWTO/mini/Linux+{другая ОС} и некоторых материалах, опубликованных в Интернет. Список источников смотри в разделе 17.8.

17.1. Предостережения

Однако, прежде чем приступить к экспериментам по установке Линукс как второй ОС, очень рекомендую принять некоторые меры предосторожности. Дело в том, что Вам, возможно, придется произвести переразбиение диска, изменить загрузочные записи и поэкспериментировать с загрузочными и конфигурационными файлами. Все эти действия далеко не безобидны и результатом может стать то, что компьютер вообще перестанет загружаться. Сумеете ли Вы восстановить после этого всю нужную Вам информацию с диска - это еще вопрос. Мой опыт говорит о том, что оказаться в такой ситуации очень легко.

Поэтому, во-первых, необходимо изготовить загрузочную или спасательную дискету для Вашей старой системы (если Вы этого еще не сделали). Во-вторых, стоит сохранить все ценную для Вас информацию, наработанную в старой системе (сделать back-up всех ценных файлов). И, в-третьих, подготовить (разыскать, запасти) комплект установочных файлов для Вашей старой системы (я, думаю, для Линукс Вы такой комплект приготовили).

И еще одна важная рекомендация: если что-то пошло не так, не паникуйте. Могу поделиться своим печальным опытом: когда я первый раз устанавливал Линукс на компьютере, на котором стояла Windows NT, я быстренько потерял возможность ее загружать, и, не разобравшись в ситуации, посчитал, что ничего другого не остается, как отформатировать диск и установить все заново. Теперь-то я понимаю, что мог бы все восстановить, если бы не принял поспешного решения. Поэтому могу Вас уверить, что Вернер Альмесбергер прав, когда в своем руководстве по загрузчику LILO дает следующие советы тому, кто оказался в затруднительной ситуации:

  • Не паникуйте. Если что-то не работает, попробуйте выяснить, что не так, перепроверьте свои предположения и только затем пытайтесь внести необходимые исправления.
  • Читайте документацию. Особенно в тех случаях, когда то, что делает система, не соответствует тому, что Вы от нее ожидаете.

    После того, как необходимые меры предосторожности приняты, необходимо решить, каким образом Вы будете осуществлять много-вариантную загрузку, и подготовить диск к установке нескольких ОС, для чего разбить его на соответствующее число разделов (partition). Но прежде, чем перейти к конкретным процедурам подготовки диска, надо хотя бы кратко рассмотреть устройство диска и процедуры загрузки ОС, чтобы не вклинивать теоретические вопросы и объяснения в изложение конкретных процедур. У кого не хватает терпения на чтение этих теорий, тот может пропустить их и перейти сразу к вопросу о выборе программы-загрузчика.

    17.2. Разделы на диске и процесс загрузки

    Что такое "геометрия диска"?

    Как Вы знаете, жесткие диски представляют собой несколько пластин с магнитным покрытием, расположенных на одной оси и вращающихся с большой скоростью. Считывание/запись информации осуществляется с помощью головок диска, расположенных одна под другой между пластинами и перемещающихся от центра к краям пластин. Окружность на магнитной пластине, которую описывает головка при вращении пластин, называется дорожкой, а совокупность таких дорожек, расположенных одна под другой (определяемая каждым фиксированным положением головок), называется цилиндром. Каждая дорожка разбита на сектора, и в сектор можно записать 512 байт полезной информации. Поэтому диски часто характеризуются совокупностью трех цифр: числом цилиндров/числом дорожек в цилиндре/числом секторов на дорожке или C/H/S (от первых букв соответствующих английских терминов: цилиндр, головка, сектор). Эти три цифры называют "геометрией диска". Диск с геометрией C/H/S/ имеет объем C*H*S*512 байт.

    Диски являются блочными устройствами, то есть считывание и запись информации производится блоками и минимальный размер блока равен одному сектору (512 байт). Для того, чтобы записать информацию на диск, надо "позиционировать головку", то есть указать контроллеру, в какой сектор эту информацию записать. Сектора как раз адресуются путем указания номера цилиндра, номера считывающей головки (или дорожки) и порядкового номера сектора на дорожке.

    Разделы диска и таблица разбиения диска

    Физические диски в Intel-системах принято разбивать на разделы. Повелось это, кажется, из-за того, что первые версии MS-DOS не могли обеспечить доступ к большим дискам (а объемы дисков росли быстрее, чем возможности ДОС). Тогда придумали разбиение дисков на разделы. Для этого в нулевой сектор диска (нулевой сектор первой дорожки на нулевом цилиндре) стали записывать так называемую таблицу разбиения диска на разделы (partition table). Каждый раздел может трактоваться как отдельный физический диск. В частности, в разные разделы могут быть установлены разные операционные системы.

    Таблица разделов содержит 4 записи по 16 байт для 4 разделов, которые называют первичными. Каждая запись имеет следующую структуру:

    struct partition {
        char active;    /* 0x80: раздел активный (загрузочный), 0: не активный */
        char begin[3];  /* CHS первого сектора */
        char type;	    /* тип раздела (например, 83 - LINUX_NATIVE,
    		    /* 82 - LINUX_SWAP, 85 - LINUX_EXTENDED) */
        char end[3];    /* CHS последнего сектора */
        int start;      /* 32-битовый номер начального сектора (счет начинается с 0) */
        int length;     /* число секторов в разделе (32 бита) */
     };
    
    (где CHS означает Cylinder/Head/Sector).

    Таблица разделов диска создается обычно с помощью программы fdisk. В ОС Linux имеется как стандартная программа fdisk (которая, впрочем, существенно отличается от программы fdisk в MS-DOS и Windows), так и еще две программы для работы с разделами диска: cfdisk и sfdisk. Программа cfdisk, как и fdisk, предназначена для работы с таблицей разделов диска: она не обращает никакого внимания на информацию, которая уже имеется на диске. Отличается она только несколько более удобным интерфейсом, предоставляющим пользователю не просто подсказку по командам, а систему меню. Программа sfdisk обладает несколько более широкими возможностями, в частности, она позволяет произвести некоторые операции над существующими разделами диска.

    DOS использует поля begin и end таблицы разбиения диска и функции прерывания 13 BIOS (Int 13h) для доступа к диску, и поэтому не может использовать диски объемом более 8.4 ГБ, даже с новым BIOS (об этом будет рассказано ниже), а разделы не могут быть более 2.1 ГБ, из-за ограничений файловой системы FAT16.

    Линукс использует только поля start и length таблицы разбиения диска и поддерживает разделы, содержащие до 2^32 секторов, т.е. размер раздела может достигать 2 ТераБайт.

    Поскольку в MBR только 4 строки для задания разделов, то число первичных разделов на диске с самого начала ограничено: их может быть не более 4. Когда стало ясно, что и 4-х разделов мало, были изобретены логические разделы. Для этого один из первичных разделов объявляется "расширенным" (тип раздела - 5 или F или 85 в шестнадцатиричной системе) и в нем создаются "логические разделы". Расширенные разделы сами по себе не используются, они могут лишь хранить логические разделы. Первый сектор расширенного раздела хранит таблицу разделов с четырьмя входами: один используется для логического раздела, другой для еще одного расширенного раздела, а два не используются. Каждый расширенный раздел имеет свою таблицу разбиения, в которой, как и в первичном расширенном разделе, используются только две строки, задающие один логический и один расширенный раздел. Таким образом получается цепочка из таблиц разделов, где первая описывает три основных раздела, а каждая следующая - один логический раздел и положение следующей таблицы.

    Программа sfdisk в Линукс показывает всю цепочку:

    [root]# sfdisk -l -x /dev/hda
    
    Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track
    Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
    
       Device Boot Start     End   #cyls   #blocks   Id  System
    /dev/hda1   *      0+    189     190-  1526143+   6  FAT16
    /dev/hda2        190     783     594   4771305    5  Extended
    /dev/hda3          0       -       0         0    0  Empty
    /dev/hda4          0       -       0         0    0  Empty
    
    /dev/hda5        190+    380     191-  1534176    6  FAT16
        -            381     783     403   3237097+   5  Extended
        -            190     189       0         0    0  Empty
        -            190     189       0         0    0  Empty
    
    /dev/hda6        381+    783     403-  3237066    7  HPFS/NTFS
        -            381     380       0         0    0  Empty
        -            381     380       0         0    0  Empty
        -            381     380       0         0    0  Empty
    

    Число логических разделов в принципе не ограничено, потому что каждый логический раздел может содержать таблицу разделов и вложенные логические разделы. Однако, реально ограничения все же существуют, например, Линукс может работать не более, чем с 15 разделами на SCSI-дисках и не более, чем с 63-мя разделами на IDE-дисках.

    Расширенный раздел как на физическом диске, так и в расширенном разделе вложенного расширенного раздела (предыдущего уровня) может быть только один: ни одна из существующих программ разбиения дисков (fdisk и ее более усовершенствованные аналоги) не умеет создавать более одного расширенного раздела.

    В Linux диск в целом (то есть физический диск) доступен по имени устройства /dev/hda, /dev/hdb, /dev/sda, и т.п. Первичные разделы обозначаются дополнительной цифрой в имени устройства: /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda4, а логические разделы в Linux доступны по именам /dev/hda5, /dev/hda6 ... (начиная с номера 5). Из сказанного выше должно быть ясно, почему могут быть пропущены имена /dev/hda3 и /dev/hda4 (третий и четвертый первичные разделы просто не были созданы) и сразу после /dev/hda2 Вы увидите /dev/hda5 (логический раздел в расширенном разделе /dev/hda2), а далее нумерация идет последовательно.

    В Windows логические разделы получают однобуквенные имена, начиная с последнего задействованного имени первичного раздела. Если, например, имеется один жесткий диск с двумя простыми первичными разделами (C: и D:) и одним расширенным разделом, в котором созданы два логических раздела, то эти логические разделы именуются E: и F:. Впрочем, в Windows NT и 2000 с помощью администратора дисков разделам могут быть присвоены другие буквенные имена.

    Процесс загрузки ОС фирмы Microsoft

    Какую бы операционную систему мы ни рассматривали, для того, чтобы ОС могла начать управлять компьютером, ее необходимо загрузить в оперативную память. Поэтому давайте кратко рассмотрим, как происходит процесс загрузки разных ОС. Поскольку нас интересует только загрузка с жестких дисков, то мы не будем рассматривать особенности загрузки с дискеты, CD-ROM и по сети. Начнем с ОС фирмы Microsoft : доброй старой MS-DOS и Windows (не забывайте, что разработка и совершенствование персональных компьютеров шло параллельно с развитием ОС от Microsoft и ОС оказывала сильное влияние на те решения, которые принимались разработчиками аппаратуры).

    Как Вы знаете, при включении компьютера вначале запускается программа POST (Power On Self Test). Она определяет количество доступной памяти, тестирует ее, определяет наличие других компонент (клавиатура, винчестер...), инициализирует карты адаптеров. На экране обычно появляются сообщения о количестве памяти, о ее тестировании, перечень обнаруженных устройств (гибкие и жесткие диски, процессор, COM-порты и т.д.).

    После завершения тестирования (POST) выдает int 19h, которое пытается найти загрузочное устройство. Поиск производится в том порядке, который определен в Setup BIOS, и осуществляется путем опроса нулевых секторов соответствующих устройств. Если диск является загрузочным, то в его нулевом секторе находится главная загрузочная запись - Master Boot Record (MBR). Последние два байта MBR - это "магическое число", которое является признаком того, что данный сектор есть MBR, а, следовательно, диск является загрузочным. Кроме "магического числа" MBR содержит таблицу разделов диска, о которой уже было сказано выше, и маленькую программу - первичный загрузчик, обьемом всего 446 (0x1BE) байт.

    На следующем рисунке представлена структура главного загрузочного сектора, создаваемого при инсталляции Windows.

                        +------------------------+
                  0x000 |                        |
                        |      Program code      |
                        |                        |
                        |                        |
                        |------------------------|
                  0x1BE |    Partition table     |
                        |                        |
                        |------------------------|
                  0x1FE | Magic number (0xAA55)  |
                        +------------------------+
    

    MS-DOS, Windows95 и NT записывают DOS MBR при инсталляции. Стандартное для MS содержимое MBR можно также записать командой fdisk /mbr.

    Но вернемся к описанию процесса загрузки. Прерывание 19h BIOS загружает первичный загрузчик в память компьютера и передает управление этой программе. Но такой маленькой программе не под силу загрузить ОС, все, что она может сделать, - это загрузить в память более мощную программу - вторичный загрузчик.

    Для этого она ищет в таблице разделов активный раздел и считывает в память вторичный загрузчик, который располагается начиная с первого логического сектора активного раздела. Обратите внимание на слово "начиная". Дело в том, эта вторичный загрузчик в разных системах имеет разную длину.

    В разделе, отформатированном под файловую систему FAT, вторичный загрузчик занимает один сектор (512 байт). В разделе, отформатированном под файловую систему NTFS, вторичный загрузчик занимает уже несколько секторов (сколько именно, я не могу сказать).

    Вторичный загрузчик загружает первый слой программ, необходимых для запуска операционной системы. В случае MS DOS программа-загрузчик загружает IO.SYS по адресу 700h, затем MSDOS.SYS и передает управление разделу SYSINIT модуля IO.SYS.

    Если по каким-либо причинам на диске не найден активный раздел, процесс загрузки продолжается обработкой прерывания 18h. Эта ветвь реально используется очень редко, но такой "крючок" может быть очень полезен в некоторых ситуациях. При удаленной загрузке, когда операционная система загружается с сервера, это прерывание перенаправляется на ROM сетевой карты программой POST.

    Для других ОС от Microsoft процесс загрузки происходит аналогично:

    1. Windows95 загружается так же, как и DOS, но заменяет IO.SYS и MSDOS.SYS своими файлами. DOS'овские сохраняются в файлах IO.DOS и MSDOS.DOS соответственно. Когда Вы выбираете загрузку сохраненного DOS, Windows95 переименовывает свои файлы в файлы с расширением *.W40 и восстанавливает первоначальные имена дос-овских системных файлов. Процесс продолжается с загрузки дос-овского IO.SYS. Таким образом, загрузочные сектора DOS и Windows95 одинаковые.

    2. Windows NT4 использует MBR DOS, но заменяет загрузочную запись активного раздела таким образом, что вместо IO.SYS загружается NTLDR. Это уже мощная программа, которая многое может сделать. В частности, она находит файл boot.ini и, если параметр timeout > 0, предлагает меню загрузки.

      Каждая строка секции [operating systems] файла boot.ini определяет один из вариантов загрузки и строится по шаблону
      адрес_вторичного_загрузчика="название_варианта".

      Адресом вторичного загрузчика может являться указание на конкретный раздел диска или на файл загрузчика. Вот пример файла boot.ini:

      [operating systems]
      multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 RUS"
      multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 RUS [VGA mode]" /basevideo /sos
      C:\="Microsoft Windows"
      C:\BOOTSECT.LNX="Linux"
      
      Если пользователь выбирает NT, то выполняется загрузка по адресу раздела, указанному в строке. В строке, соответствующей MS DOS указан просто диск "C:\", так как имя загрузочного файла берется по умолчанию: bootsect.dos. Файл грузится в память и загрузка продолжается так, как если бы загрузочная запись раздела была загружена программным кодом из MBR.

      Для загрузки других систем можно воспользоваться таким же приемом. Для этого в boot.ini нужно добавить строки, содержащие ссылки на другие загрузочные файлы. При выборе такой строки будет загружаться соответствующая ОС. В приведенном выше примере этим способом обеспечивается загрузка Линукс. Для этого в файле C:\BOOTSECT.LNX должно быть предварительно записано содержимое загрузочной записи, создаваемой Линукс (точнее - lilo).

    Проблемы с большими дисками

    В MS-DOS и первых версиях Windows доступ к дискам был организован через прерывание 13 (INT13) BIOS (в том числе на этапе начальной загрузки ОС). При этом использовалась адресация секторов на диске на основе указания номеров цилиндра, головки и сектора на дорожке (C/H/S). (Заметим в скобках, что нумерацию физических цилиндров и дорожек принято начинать с 0, а сектора на дорожке нумеруют, начиная с 1.) Однако, практически головок было не более 16-ти, а число секторов на дорожке - не более 63, и хотя для указания цилиндра использовалось 10 бит, все равно BIOS не мог работать с дисками объемом более 1024*63*16*512 =528 МБайт.

    Для преодоления этого ограничения стали применять разные хитрые приемы. Например, Extended CHS (ECHS) или "Large disk support" (иногда обозначается просто как "Large") использует незанятые биты номера головки и номера сектора на дорожке для увеличения числа адресуемых цилиндров. Но на данный момент и DOS, и Windows 95 не поддерживает 256 считывающих головок, поэтому можно использовать "фальшивую геометрию диска" только в 1024 цилиндра, 128 считывающих головок и 63 сектора/дорожку. Трансляцию Extended CHS в реальный CHS-адрес (который может иметь до 8192 цилиндров) осуществляет BIOS. Это позволяет работать с дисками, объемом до 8192*16*63*512 = 4227858432 байт или 4,2 ГБ.

    Но разработчики все увеличивали плотность записи на диск, число пластин и дорожек, изобретали другие способы увеличения объема дисков. В частности, число секторов на дорожках стало разным (на более длинных дорожках, расположенных ближе к краю пластин, число секторов стали увеличивать). В результате три числа C/H/S уже перестали правильно отражать "геометрию диска", а старые версии BIOS перестали обеспечивать доступ ко всему дисковому пространству.

    Тогда придумали другой прием для работы с большими дисками через INT13 - линейную адресацию блоков ("Linear Block Addressing" или LBA). Если не вдаваться в подробности, то можно сказать, что все сектора на диске нумеруются последовательно, начиная с нулевого сектора на первой дорожке нулевого цилиндра. Вместо CHS-адреса каждый сектор получает логический адрес - просто его порядковый номер в общем массиве секторов. Нумерация логических секторов начинается с нуля, причем нулевой сектор содержит главную загрузочную запись (MBR). В BIOS Setup поддержка преобразования линейного номера в CHS-адрес обозначается как "поддержка LBA". Таким образом в новых версиях BIOS обычно имеется выбор из трех вариантов: "Large", "LBA" и "Normal" (последнее означает, что трансляция не производится).

    Но и в режиме LBA обращение к физическому диску все равно осуществляется через функции INT13, которые используют 3D нотацию (c,h,s). Точнее: AH - выбор операции, CH - младшие 8 бит номера цилиндра, CL - 7-6 биты соответствуют старшим битам номера цилиндра, 5-0 биты соответствуют номеру сектора, DH - номер считывающей головки и DL - номер диска (80h или 81h). В силу этого возникает ограничение на возможный объем диска: BIOS, и, следовательно, MS-DOS и ранние версии Windows, не могли адресовать диски объемом более 8,5 гигабайт.

    Надо заметить, что указанное ограничение относится только к дискам с интерфейсом IDE. В контроллерах SCSI-дисков номер сектора переводится в команды SCSI, а далее сам диск находит нужную позицию, поэтому такого ограничения на объем диска не возникает.

    Еще раз хочется отметить, что все перечисленные ограничения существенны только на этапе загрузки ОС, поскольку сама Линукс и последние версии Windows при работе с дисками уже не используют прерывание 13 BIOS, а используют собственные драйвера для работы с дисками. Но прежде чем система сможет использовать собственный драйвер, она должна как минимум его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS'ом. Это и вызывает ограничения на размещение многих систем за пределами 8GB, они не могут оттуда загружаться, хотя после успешной загрузки могут работать с дисками гораздо большего обьема. Для того, чтобы понять, как можно обойти эти ограничения, нам потребуются некоторые знания о том, как происходит загрузка ОС Линукс.

    Загрузчик lilo из дистрибутива ОС Линукс

    В любом дистрибутиве ОС Линукс имеется программа-загрузчик, которая называется lilo (LInux LOader).

    Загрузчик lilo создан Вернером Альмесбергером (Werner Almesberger). Он не зависит от конкретной операционной системы. Lilo может загружать ядро Линукс как с дискеты, так и с жесткого диска, а также может загружать другие операционные системы: PC/MS-DOS, DR DOS, OS/2, Windows 95-98, Windows NT, 386BSD, SCO UNIX, Unixware и так далее. Может быть задан выбор до 16 разных операционных систем на этапе загрузки.

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

  • Программа /sbin/lilo, которая запускается из-под Линукс, служит для того, чтобы записать всю информацию, необходимую на этапе загрузки, в соответствующие места. Ее необходимо перезапускать каждый раз после внесения изменений в ядро или в конфигурационный файл lilo.
  • Различные служебные файлы, которые нужны lilo во время загрузки. Эти файлы обычно располагаются в каталоге /boot. Самые важные из них - это собственно загрузчик (смотри ниже) и map-файл (/boot/map), в котором указывается местоположение ядра. Еще один важный файл - это файл конфигурации lilo, который обычно имеет имя /etc/lilo.conf.
  • Собственно загрузчик - это та часть lilo, которая первой загружается в память через прерывание BIOS, и которая загружает ядро Линукс или загрузочный сектор другой операционной системы. Загрузчик тоже состоит из двух частей. Первая часть записывается в загрузочный сектор и служит для загрузки второй части, которая значительно больше по размеру. Обе части обычно хранятся на диске в файле /boot/boot.b.

    Надо иметь в виду, что формат загрузочного сектора, создаваемого lilo, отличается от формата DOS MBR, так что если записать загрузочный сектор lilo в MBR, то ранее установленные системы от Microsoft перестанут загружаться (если не принять дополнительных мер).

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

    Загрузочный сектор lilo при инсталляции системы можно разместить в следующих местах:

    • загрузочный сектор дискеты в формате Linux (/dev/fd0, ...).
    • MBR первого жесткого диска (/dev/hda, /dev/sda,...).
    • загрузочный сектор первичного раздела файловой системы Linux на первом жестком диске (/dev/hda1, ...).
    • загрузочный сектор логического раздела в расширенном разделе первого жесткого диска (/dev/hda5, ...). Правда большинство программ типа FDISK не предполагают, что можно загружаться из расширенного раздела и отказываются объявлять его активным. Поэтому в состав LILO включена специальная программа (activate), которая позволяет обойти это ограничение. Но программа fdisk из дистрибутива Линукс поддерживает возможность активизации расширенного раздела. Для этого надо использовать либо опцию -b, либо переменную BOOT.
    Загрузочный сектор LILO не может быть размещен в следующих местах:
    • загрузочный сектор дискеты или первичного раздела, отформатированных в других файловых системах.
    • в swap-разделе Линукс.
    • на втором жестком диске.

    Кроме того, имейте в виду, что lilo во время загрузки нужны еще следующие файлы:

    • /boot/boot.b
    • /boot/map (создается при запуске /sbin/lilo)
    • все версии ядра (в том числе те, которые Вы будете устанавливать впоследствии)
    • загрузочные сектора других операционных систем, которые будут загружаться через lilo
    • выдаваемые при загрузке сообщения (если таковые определены)

    Следовательно, как загрузочный сектор lilo, так и перечисленные файлы должны находиться в пределах первых 1024 цилиндров на жестком диске, так как они должны быть доступны через BIOS.

    На этом мы закончим рассмотрение теоретических вопросов и перейдем к практическим задачам по выбору многовариантного загрузчика.

    17.3. Выбор загрузчика

    Прежде, чем приступать к установке второй (или большего числа) ОС, надо выбрать способ организации выбора ОС на этапе загрузки компьютера. Эту задачу решают программы-загрузчики. Существует несколько программ такого рода, которые перечисляются ниже:

  • Раз уж речь у нас идет о Линукс, то первым делом надо упомянуть программу LILO, о которой мы кое-что рассказали в предыдущем разделе и которая входит в состав любого дистрибутива Линукс. С ее помощью можно организовать выбор загружаемой ОС. Однако, на мой взгляд, загрузчик LILO не очень удобен. Одним из его недостатков является то, что меню выбора загрузки не отображается на мониторе, если не нажать дополнительную клавишу. Надо сказать, что я ставил LILO версии 0.21, который входил в состав Black Cat Linux 6.02. По некоторым отзывам на первый вариант настоящей статьи в версию 7.0 Red Hat Linux входит LILO, который уже выводит меню на экран.

  • Если у Вас до установки Линукс уже стояла ОС Windows NT, то вторым доступным для Вас загрузчиком является OS Loader от NT. По сравнению с LILO загрузчик OS Loader имеет, по-крайней мере, два преимущества. Во-первых, сохраняется вся старая конфигурация (у меня уже была возможность загружать по выбору Windows NT или Windows 95), и, во-вторых, можно установить Linux на диск, который не может быть загрузочным в Linux, например, второй диск на втором контроллере (Secondary Slave).

  • Если у Вас была установлена только ОС Windows 95 или 98 и не было Windows NT или Windows 2000, то OS Loader у Вас не установлен и единственной известной мне альтернативой LILO является использование программы-загрузчика Loadlin.exe (обычно поставляется вместе с дистрибутивом Линукса).

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

  • В составе дистрибутива OS/2 фирмы IBM имеется программа-загрузчик, которая называется Boot Manager. Во многих руководствах ее рекомендуют использовать для организации многовариантной загрузки.
  • Имеется еще программа System Commander, которая тоже часто упоминается в разных источниках.
  • Еще один многовариантный загрузчик входит в состав пакета PartitionMagic фирмы Power Quest, о котором мы будем говорить в следующем подразделе.

    Кроме перечисленных существуют и другие загрузчики, часть из которых можно найти в каталоге /public/ftp/pub/Linux/system/boot/loaders на сайте metalab.unc.edu. Но поскольку я этими программами не пользовался, то рассказать о них подробнее не могу, а поэтому мои последующие рекомендации будут основаны на использовании загрузчиков lilo, NT Loader и loadlin.exe.

    Итак, на мой взгляд, выбор варианта загрузки производится следующим образом:

    • Если у Вас установлена Windows NT или Windows 2000, то используйте NT Loader.
    • Если у Вас установлена Windows 95 OSR2 или Windows 98 на FAT32, и Вы не хотите ставить программу-загрузчик из другой ОС или от независимого разработчика, то Вы должны будете использовать loadlin.exe. Почему-то во многих HOWTO утверждается, что не нужно использовать LILO, если активный раздел у Вас форматирован в системе FAT32, хотя толкового объяснения этого феномена я не нашел. Но моя собственная попытка загружать Линукс через NT Loader, установленный в FAT32-разделе, окончилась неудачей. Так что мне тоже пришлось в этом случае воспользоваться программой loadlin.exe, которая с успехом справилась с задачей, и при этом вообще произвела на меня самое благоприятное впечатление, так что я очень рекомендую Вам применять ее для загрузки Линукс.

    В следующих разделах я расскажу о том, как установить Линукс, используя все три варианта загрузки: через загрузчик NT Loader (в разделе 17.5), загрузчик lilo (в разделе 17.6) и загрузчик loadlin.exe (в разделе 17.7). Но до установки загрузчика надо подготовить разделы на диске (или, по крайней мере, продумать, как их организовать).

    17.4. Подготовка разделов на диске

    Рекомендации по созданию разделов

    Рекомендации тут давать довольно сложно, так как во многом это зависит от воли хозяина диска. Но все же попробую сформулировать некоторые предложения. При этом диски и разделы буду именовать так, как это принято в Линукс, то есть /dev/hda, /dev/hdb и т.д. для дисков и /dev/hda1, /dev/hda2 и так далее для разделов на диске.

    Разбивать диск на разделы необходимо потому, что Windows и Линукс используют разные способы организации хранения информации на диске и разные способы организации доступа к этой информации. О том, как устроена файловая система в Линуксе, рассказано в разделе 21. Файловые системы Windows (FAT и NTFS) здесь не описываются, но, я думаю, Вы знаете, что организованы они совсем не так, как файловая система Линукс. Поэтому для каждой ОС лучше всего каждой операционной системе на диске выделить отдельный раздел (или два, как мы увидим ниже).

    Давайте вначале рассмотрим простой случай - когда объем Вашего диска не превышает 8,4 Гбайт (точнее - когда число цилиндров не превышает 1024). В этом случае все просто: Вы просто делите диск пропорционально тому, сколько места требуется для установки каждой из операционных систем, которые Вы хотите установить. Можете воспользоваться следующими данными о размерах дискового пространства, необходимого для установки операционных систем в стандартной конфигурации:

    Windows 95 100 Mb
    Windows 98 200 Mb
    Windows NT 200 Mb
    Windows 2000 700 Mb
    Linux Red Hat 6.2 (в режиме рабочей станции с KDE) 700 Mb

    Однако помните, что надо учесть не только обьем файлов самой операционной системы, но и того программного обеспечения, которое Вы планируете в ней запускать, а также оставить некоторый резерв для того ПО, которое Вы захотите установить в последующем (это неизбежно!). Учтите, что те 700 Мегабайт, которые указаны в приведенной выше таблице для Линукс, включают место для всего ПО, которое устанавливается вместе с Линукс по умолчанию, в том числе, например, мощный текстовый процессор Lyx. Оценки же, которые даны для Windows, касаются только самой ОС. Если, например, вместе с Windows 2000 установить MS Office 2000 в стандартной конфигурации, то места на диске потребуется много более гигабайта.

    Судя по моему опыту для нормальной работы с Windows 95-98, Windows NT и Линукс вполне достаточно выделить разделы обьемом 800-1000 Мегабайт, а вот для Windows 2000 требуется уже побольше.

    Не забывайте, что надо оставить немного места для swap-раздела Линукс. При выборе объема swap-раздела Линукс учтите следующее:

    1. В Линукс RAM и пространство swap складываются, образуя общую виртуальную память. Например, если у Вас 8 MB ОЗУ (RAM) и 12 MB swap-пространства, Вы имеете 20 MB виртуальной памяти.
    2. Для работы Линукс надо иметь по-крайней мере 16 MB виртуальной памяти, так что при 4 MB ОЗУ Вы должны выделить под swap не менее 12 MB.
    3. В Линукс размер одного swap-раздела не может превышать 128 MB. То есть раздел-то под swap Вы можете выделить произвольного размера, но Линукс не сможет использовать более 128 MB. Если Вы хотите иметь виртуальной памяти больше, надо создавать два swap-раздела.
    4. Рассчитывая размер пространства свопинга, имейте в виду, что слишком большое количество этого пространства может оказаться вовсе бесполезным. На компьютере с 16 MB ОЗУ при стандартной конфигурации Линукса и стандартного набора ПО вполне достаточно иметь 48 MB пространства свопинга, а для минимальной конфигурации Линукс можно обойтись вообще без swap-пространства. Конечно, точное значение этого параметра существенно зависит от того набора приложений, которое будет у Вас установлено.
    В общем, долгие размышления по поводу объема swap-раздела нужны только в том случае, если у Вас маленький диск и мало ОП. В противном случае для начала задайте размер swap-раздела таким образом, чтобы объем виртуальной памяти был не менее 128 МБайт (а если у Вас много оперативной памяти, то этот раздел вообще может оказаться ненужным).

    Мне кажется, что этих рекомендаций вполне достаточно для того, чтобы спланировать разбиение в случае одного небольшого диска. Рассмотрим теперь случай диска с числом цилиндров более 1024.

    Из того, что было сказано в предыдущих разделах, следует, что программы-загрузчики должны располагаться в пределах первых 1024-х цилиндров. Между прочим, NT Loader может располагаться не обязательно в NTFS-разделе, как и вообще не в том разделе, где расположены остальные файлы ОС. Как сказано выше, для Линукс тоже можно расположить каталог /boot в "нижних" цилиндрах, а остальное - где угодно.

    Поэтому в этом случае мои предложения сводятся к следующему:

    • загрузочные части всех систем от Microsoft поместить в первый первичный раздел диска, который отформатировать в системе FAT16 (в ДОС),
    • выделить swap-раздел для Линукс (рекомендации о его размерах даны выше),
    • следующий первичный раздел выделить для корневого каталога Линукс (/), размер которого сделать равным примерно 1 МБайту,
    • все остальное дисковое пространство сделать расширенным разделом,
    • в расширенном разделе создать логические разделы для каждой из устанавливаемых ОС: Windows 98, Windows NT или 2000, а также для каталогов /home и /usr ОС Линукс (в /home будут располагаться личные файлы пользователей, а в /usr устанавливаются все приложения).

    Конечно, если у Вас стоит только Windiws 95 c FAT16, то можете оставить ее в первом разделе. Если же у Вас была установлена Windows NT или FAT32, то наличие небольшого раздела с FAT16 будет не лишним. Во-первых, даже в случае любого краха системы Вы всегда сможете загрузиться с ДОС-овской загрузочной дискеты и хотя бы увидеть, что жесткий диск работоспособен (в принципе). А во-вторых, файловая система FAT16 видна из-под любой ОС, в том числе Линукс, так что этот раздел может служить для обмена файлами между разными системами. Но делать этот раздел большим не стоит - FAT16 очень нерационально использует дисковое пространство. Поэтому отведите под него, скажем, 256 или 512 МБайт.

    Эти рекомендации формулировались в предположении, что у Вас всего один жесткий диск. Если у Вас их 2, то все остается в силе, разве что раздел для Линукс и swap-раздел лучше расположить на разных физических дисках. Говорят, что от этого повышается быстродействие в Линукс (оно и понятно, головки меньше бегают).

    Более детальные рекомендации по разбиению диска Вы можете найти в [3].

    Программы для разбиения диска

    После того, как план разбиения составлен, осталось подобрать инструмент, с помощью которого это разбиение можно осуществить на практике. Наиболее известной программой разбиения диска является уже упоминавшаяся программа FDISK, варианты которой имеются во всех операционных системах. И ничего другого, может быть, и не требовалось бы, если бы речь шла о разбиении девственно чистого диска. Но мы рассматриваем случай, когда какая-то ОС на диске уже имеется и надо обеспечить переразбиение диска без потери информации на нем. FDISK для таких операций не подходит.

    В составе дистрибутивов Red Hat и BlackCat (как в других, не знаю, наверное тоже есть) имеется программа fips, которая служит для переразбиения диска. Однако отзывы, которые я слышал, не воодушевили меня на использование этой программы. Поэтому мой Вам совет - если хотите переразбить диск без потери информации, найдите программу PartitionMagic фирмы Power Quest (www.powerquest.com) и воспользуйтесь ею.

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

    Во-вторых, эта программа (даже в варианте для ДОС) предоставляет Вам удобный графический интерфейс, так что все осуществляемые действия Вы видите наглядно. Никакого сравнения с интерфейсом командной строки программы FDISK. Я пользовался 5-ой версией этой программы. Она отказывается работать под Windows 2000 и Windows NT, однако в ее дистрибутиве имеется возможность изготовить специальные дискеты (2 штуки), которые служат для загрузки компьютера в режиме ДОС (вариант Caldera DR-DOS) и последующего запуска программы. Эти дискеты прекрасно позволяют переразбить и диск, на котором запущена Windows NT/2000.

    При создании разделов необходимо следить за тем, чтобы границы разделов не пересекались.

    Я думаю, что приведенных данных достаточно для того, чтобы спланировать и осуществить разбиение диска на разделы. Более подробные пошаговые инструкции будут приведены в последующих разделах, где приводятся описания конкретных вариантов установки двух ОС на одном компьютере.


    Назад Вернуться к оглавлению. Далее

    В.А.Костромин
    Последние изменения
    в содержание файла внесены
    2 февраля 2001 г.
    TopList Aport Ranker