В статье Брайана Уилсона «VMware как средство разработки», опубликованной в журнале Sys Admin в марте 2001 г., было описано, как с помощью VMware осуществить эмуляцию машины Windows, работающей поверх Linux. Взглянув на его подход немного под другим углом, можно сказать, что это неплохой способ добиться большего от вашего аппаратного обеспечения. Зачем беспокоиться, скажете вы, ведь «железо» настолько дешево, что можно пойти и купить за небольшие деньги еще один системный блок. Пока я обдумывал эту статью, мне попадались на глаза объявления, предлагающие полностью укомплектованные системы за 800 долларов, оперативную память объемом 256 Мбайт за 80 долларов, а жесткий диск емкостью 30 Гбайт - всего за 60 долларов. Да, аппаратное обеспечение до неприличия дешево, однако я обнаружил, что вовсе не деньги, а пространство является для меня ограничивающим фактором. Свободное место на моем рабочем столе закончилось гораздо раньше денег для покупки оборудования. Поэтому я выбрал старую добрую технологию альтернативной загрузки Linux, позволившую по-настоящему эффективно использовать имеющееся в моем распоряжении «железо». Иногда невозможно обойтись без «родных» ОС; в других случаях аппаратное обеспечение из-за недостаточной производительности не справляется с накладными расходами, обусловленными применением эмуляторов или виртуальных машин. Я предлагаю вашему вниманию методику быстрой настройки компьютера для получения возможности альтернативной загрузки Windows 98, Linux и Intel Solaris без дополнительных накладных расходов.
Альтернативноcть означает, что в момент начальной загрузки компьютера вы можете выбрать для работы ту или иную операционную систему. Работая в какой-то одной ОС, например, играя в компьютерные игры, вы в любой момент можете выполнить перезагрузку и перейти на другую ОС. В большинстве из них имеются свои загрузчики, я же чаще всего использую Linux LILO по причине его гибкости и широты предоставляемых возможностей. Материал данной статьи предполагает, что читатель умеет выполнять настраиваемую установку Windows 98, Linux и Intel Solaris. Основные требования для аппаратного обеспечения - совместимость с этими ОС, наличие устройства CD-ROM, дисковода для гибких дисков, а также жесткого диска емкостью от 6 Гбайт, на котором еще не созданы разделы. Если диск уже разделен, то при выполнении описываемых далее шагов придется следовать духу предлагаемого описания, внося по ходу необходимые изменения. Что касается программного обеспечения, то я использовал Windows 98, Red Hat 6.2 и Intel Solaris 8, 6/00. Описываемую ниже методику мне довелось испытать на многих машинах при реализации альтернативной загрузки этих трех ОС. Некоторые отличия возможны в связи с тем, что Solaris в разной степени поддерживает то или иное оборудование. Хочу также сказать, что предлагаемая методика отражает мое личное видение данного вопроса; возможно, существуют и другие способы. С удовольствием познакомлюсь с ними. Главное правило - перед процедурой разбиения диска на разделы всегда необходимо создавать резервную копию данных.
Краткое описание шагов:
- установите Windows;
- установите Linux в дополнительный раздел;
- установите Solaris;
- настройте LILO.
Мы пройдем с вами по всем пунктам описываемой ниже процедуры, после чего я разъясню, почему некоторые шаги были выполнены так, а не иначе. Основная проблема заключается в том, что Solaris во время своей установки буквально «нарезает» жесткий диск, оставляя его в состоянии, непригодном для работы с Linux. Следуя данной методике, мне удавалось установить три ОС с поддержкой альтернативной загрузки менее чем за 6 ч.
РАЗБИЕНИЕ НА РАЗДЕЛЫ
Кое-что необходимо знать перед тем, как заняться процедурой разбиения диска на разделы. Прежде всего, следует сделать резервную копию данных. Для создания разделов на жестком диске каждая ОС предлагает свое средство. В Windows, Linux и Solaris все они называются fdisk, однако имеют различные возможности и интерфейсы. Пользуйтесь средством из состава той ОС, которую вы устанавливаете. ОС Windows допускает основной и дополнительный разделы. Последний можно, в свою очередь, разбить на более мелкие логические разделы. Основному разделу на первом жестком диске будет присвоено имя c:, остальным назначены буквы устройств в соответствии с правилами Windows.
Загрузочный раздел многих версий Linux (исключая самые последние) и Solaris должен быть расположен до 1023-го цилиндра жесткого диска. Утилита fdisk из Linux организует либо четыре основных раздела, либо три основных и один дополнительный. Как и в Windows, дополнительный может быть разбит на подразделы. Жесткий диск необходимо подключить к первому каналу IDE в качестве главного устройства. Операционной системе Solaris во время установки нужен один основной раздел, который затем будет разбит ею на два. Первый раздел допускает разбиение на подразделы от 0 до 7; подраздел 2 является «перекрывающим» и не должен изменяться пользователем. Как Linux, так и Solaris предоставляют весьма мощные средства fdisk, с помощью которых пользователь может указывать параметры для каждого раздела в отдельности: в частности, отметить, что данный раздел предназначен для Windows.
ОБЩАЯ ПРОЦЕДУРА
Шаг 1: установка Windows. Выполните обычную установку Windows 98 согласно руководству пользователя. При разбиении жесткого диска на разделы для менеджера загрузки следует отвести область в пределах до 1023 цилиндра с учетом упомянутого ограничения. Поскольку жесткий диск еще не разделен, во время начальной загрузки запустите утилиту fdisk, создайте раздел и затем выйдите из нее. После этого надо перезагрузить компьютер, отформатировать созданный раздел с помощью команды format c: и запустить программу установки Windows. OC Windows разместится в разделе 1.
Шаг 2: установка Linux. Произведите дальнейшее разбиение жесткого диска на разделы. Определите раздел 4 как дополнительный, разбив его по своему усмотрению для последующей установки Linux. Вам понадобятся как минимум два логических раздела: один — для /, другой — для swap. Многие пользователи определяют еще несколько разделов, среди которых наиболее распространен /home. Выполните установку. Сделайте загрузочную дискету - она вам пригодится в дальнейшем при перенастройке LILO. Обычно я устанавливаю Linux в раздел с большими номерами цилиндров для того, чтобы после завершения установок порядок нумерации разделов соответствовал порядку нумерации цилиндров. В пользу этого говорит и тот факт, что Linux допускает размещение в верхней области жесткого диска (за 1023 цилиндром). Solaris не позволяет этого сделать, поэтому я помещаю его в область с низкими номерами цилиндров. Для нашего примера будем считать, что выделены два раздела: 5 - под /, а 6 - для swap.
Шаг 2а: внесение изменений в файлы Linux. Прежде чем мы приступим к установке Solaris, необходимо отредактировать некоторые файлы в составе Linux. Первым делом /etc/lilo.conf следует сделать корневым. Замените в нем строку для загрузки Linux /dev/hda5 на строку /dev/hda9. Пример файла etc/lilo.conf приведен в Листинге 1. Затем отредактируйте /etc/fstab. Строку с hda5 замените на строку с hda9, а строку подкачки — с hda6 на hda10. Отредактированный файл /etc/fstab приведен в Листинге 2. Данные изменения обусловлены способом установки Solaris. Дальнейшие мои действия примите на веру. Выполните команду fdisk /dev/hda и удалите дополнительный раздел, при этом разделы / и свопинга swap также будут удалены. Это обусловлено особенностями установки Solaris. Мы восстановим их позже, так что данные не будут потеряны. Не забудьте записать номера начальных и конечных цилиндров для разделов / и swap. Если все сделано правильно, то единственным видимым разделом на жестком диске будет раздел 1, выделенный под Windows.
Шаг 3: установка Solaris 8. Вставьте дистрибутив для ОС Solaris и выполните загрузку компьютера. При этом сразу же начнется установка Solaris. Запустите fdisk и определите для Solaris раздел 2. Учтите важный нюанс, связанный с граничными цилиндрами. Оставьте буфер из пары цилиндров между конечным цилиндром раздела Windows и начальным цилиндром раздела Solaris. Кроме того, еще один буфер следует оставить между окончанием раздела Solaris и началом раздела Linux. Интервал в два цилиндра с каждой стороны выбран мною эмпирически. Если же вы не зарезервируете буфер, установка потерпит неудачу. Все, что вам потребуется, установите в раздел 2. Имейте в виду, что Solaris поделит раздел 2 на разделы 2 и 3. В процессе установки у вас будет возможность взглянуть на размещение файловой системы. Раздел 2 будет разбит следующим образом: / в s0, swap в s1, overlap в s2, а /export/home в s7. Эти четыре подраздела соответствуют четырем изменениям, которые мы внесли в несколько строк на шаге 2а. После того как Solaris будет установлена, Linux будет распознавать hda5 как hda9. При использовании более четырех разделов в Solaris придется внести в шаг 2а соответствующие коррективы. Выполните перезагрузку. Обратите внимание (см. Листинг 3), как выглядит таблица разделов после установки Solaris, особенно на буферы по границам раздела Solaris.
Шаг 4: диспетчер загрузки. К настоящему моменту на вашем компьютере установлены все три ОС, но работоспособны лишь Windows и Solaris. Мы исправим эту ситуацию и сделаем все три ОС доступными, сконфигурировав LILO. Еще раз запустите установку Linux до начала разделения жесткого диска. Воспользуйтесь fdisk для восстановления ранее удаленных разделов. Позаботьтесь о правильности вводимых номеров цилиндров. Вместо fdisk не используйте disk druid - это утилита удобна для разбиения на разделы, однако она не позволяет манипулировать номерами цилиндров, что как раз и необходимо в данный момент. Вы увидите несколько предупреждений о том, что логические и физические начальные границы разделов не совпадают. Нас это не касается. Сохраните обновленные разделы диска и перезагрузите компьютер, используя загрузочную дискету, созданную вами ранее. Наберите в командной строке LILO строку linux root=/dev/hda9 и войдите в систему. Отредактируйте /etc/lilo.conf, добавив в конец такие строки: other=/dev/hda3 и label=solaris. Затем запустите LILO со специальным ключом: lilo -P ignore. Опция -P ignore предписывает LILO игнорировать все с ее точки зрения испорченные таблицы разделов (у нас они появляются из-за Solaris).
РАБОТА С ТРЕМЯ ОС
Сейчас у вас в распоряжении машина, на которой можно загрузить Windows, Linux и Solaris. После включения, получив обычные сообщения BIOS, компьютер, наконец, выдает командный запрос LILO:. Если вы быстро нажмете на клавишу tab, то увидите список всех доступных ОС. Выберите ту, которая вам нужна, и нажмите enter. Система станет загружаться абсолютно так же, как если бы она была единственной на компьютере. Для перехода на другую ОС необходимо перезагрузить машину. При таком подходе вы бесплатно получаете по сути три компьютера в одном корпусе. Для этого пришлось всего лишь воспользоваться средствами из состава различных ОС.
Некоторые действия поначалу могли показаться вам абсолютно лишенными смысла, однако они становятся более понятными, если учесть особенности данных ОС, в первую очередь Solaris. Для двух ОС систему альтернативной загрузки установить достаточно просто. Windows и Linux или Windows и Solaris инсталлируется легко, если, конечно, они поддерживают применяемое оборудование. Гораздо труднее совместить Linux и Solaris 8. Замечу, что вопросом альтернативной загрузки трех ОС на одном компьютере я занимаюсь много лет. С Solaris 7 в некоторых отношениях было проще: Linux не выдавал сообщений об ошибках, которые появляются при работе с Solaris 8, и к тому же ей требовался один основной раздел. Определенное затруднение, правда, представлял тот факт, что «родной» раздел Solaris воспринимался Linux как собственный раздел подкачки. Обычно это не слишком большая проблема, однако в случае Red Hat 6.2, а также некоторых других систем вы не сможете контролировать, какая часть пространства подкачки используется.
Во время установки Linux переформатирует все разделы подкачки, которые она обнаруживает. Это означает, что дистрибутив Solaris теряется, поскольку Linux использует это место на диске в качестве пространства для подкачки, так что надежда остается только на вашу резервную копию данных. В случае версии Solaris 2.7 я сначала устанавливал Windows, затем Solaris, а потом уже Linux. Во время установки Linux приходилось менять тип раздела Solaris на FAT32 или на нечто подобное, после чего установку можно было завершить. При таком способе Linux принимает этот раздел за раздел Windows и «оставляет его в покое» (хотя на самом деле там размещен только Solaris). После завершения установки и последующей перезагрузки я восстанавливаю прежний тип раздела и настраиваю LILO для загрузки всех трех ОС. В случае Solaris 8 данный прием не срабатывает. Если вы попытаетесь что-либо изменить в разделах Solaris с помощью fdisk, то испортите загрузочную запись Solaris и сделаете загрузку невозможной. В качестве отступления от темы замечу, что мое последнее утверждение, возможно, не всегда справедливо. Напомню, что для работы с разделами я пользовался fdisk из состава Linux. В некоторых версиях Linux имеются утилиты cfdisk и sfdisk. Будучи более сложными в использовании, они предоставляют и более широкие возможности для работы с разделами. Очень может быть, что эти средства позволяют изменять разбиение диска, оставляя при этом Solaris работоспособным. Однако, поскольку они не поставляются со всеми версиями, я не экспериментировал с ними. К тому же Linux не удается установить на диск, если появляется проблема граничных цилиндров, которую создает Solaris. Другими словами, Solaris не может быть установлен прежде Linux.
Еще одна трудность, связанная с Solaris: для этой ОС требуется два раздела на жестком диске. Напомню, что мы определили раздел 1 для Windows, а 4 - как дополнительный раздел для Linux. Поскольку использоваться могут только четыре раздела, для Solaris в данной схеме остаются разделы 2 и 3. Первоначально ей выделяется раздел 2, а раздел 3 она добавит сама во время установки. Итак, раздел 1 выделен под Windows, разделы 2 и 3 под Solaris, а дополнительный раздел 4, допускающий разбиение на логические разделы, выделен для Linux. Все они должны занимать область в пределах до 1023 цилиндра, если, конечно, ваш дистрибутив Linux не умеет обходить эту проблему. Наконец, учитывайте особенности способа, каким Solaris выполняет разбиение раздела 2. В результате: некоторые применяемые при загрузке файлы требуют редактирования из-за того, что вы определили ряд разделов во время установки Solaris. Однако при использовании fdisk все они видны как один раздел. Это слегка сбивает с толку, но если хорошо представлять себе процесс загрузки, то все становится понятным.
ДРУГИЕ ВАРИАНТЫ
Подобную процедуру я проделывал и для системы с двумя жесткими дисками - в этом случае все значительно упрощается. Я помещаю Linux на второй жесткий диск и с учетом этого вношу коррективы. Сперва установите Windows в раздел 1 на первом диске, а Solaris в раздел 2, который затем станет 2 и 3. Затем разместите Linux на hdb. Поскольку вы не собираетесь устанавливать Linux на hda, у вас не возникнет трудностей с таблицей разделов.
ЗАКЛЮЧЕНИЕ
Описанная мною процедура позволяет получить машину, на которой можно загружать любую из трех различных операционных систем. Это позволяет сэкономить много места на вашем рабочем столе и существенно уменьшает вес аппаратуры, если вы работаете в дороге. Процедура довольно-таки сложная, зато не требует от вас никаких расходов. Будьте внимательны, так как совершенная ошибка может привести к возврату на несколько шагов или к необходимости начать процедуру заново. Всегда делайте резервную копию ваших данных перед тем, как будете заниматься чем-либо подобным.
Брайан Голлшнейдер работает над кандидатской диссертацией по электрофизике в Мэрилэндском университете. С ним можно связаться по адресу: gollsneb@glue.umd.edu.