Автоматизация переключения между ОС при мультисистемной загрузке

Переключение между Linux и Windows без необходимости вмешательства вручную

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

Марк Картер, специалист по настройке производительности WebSphere MQ/JMS, IBM United Kingdom

Марк Картер (Marc Carter) — специалист по настройке производительности в команде WepSphere MQ JMS, работает в представительстве IBM в Хёрсли (Великобритания). Марк работает с командой разработчиков, оценивая новые версии WebSphere MQ, а также предоставляет клиентам консультации по вопросам проектирования, установки и настройки данного продукта. Кроме того, он долгие годы работает над системами автоматизации внутренних тестов.



Фил Уиллоуби, XMS-разработчик, IBM

Фил Уиллоуби работает в команде разработчиков клиентов службы сообщений IBM, разрабатывая API XMS для C и C++. Он специализируется на написании высокопроизводительного переносимого кода на C.



27.05.2008

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

Предполагается, что вы уже установили несколько операционных систем и настроили мультисистемную загрузку при помощи GRUB. Программа GRUB (GRand Unified Bootloader - основной унифицированный загрузчик) загружается при запуске компьютера и передает управление ядру операционной системы. Ссылку на документацию по настройке GRUB вы можете найти в разделе Ресурсы.

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

  • Microsoft® Windows XP Professional
  • Microsoft Windows Server 2003
  • Debian Linux 3.1 (Sarge)
  • Red Hat Enterprise Server (RHES) 3
  • GRUB 0.97; другие загрузчики могут не подойти

Шаг 1. Настройка разделов диска

Перед началом настройки убедитесь в наличии резервных копий системы и загрузочного компакт-диска для восстановления. Если при выполнении приведенных ниже инструкций произойдет какая-либо ошибка, операционная система может перестать загружаться. Если такой риск для вас неприемлем, не пытайтесь повторить действия, описанные в данной статье!

Создание раздела Bootcontrol

Создайте на одном из жестких дисков небольшой раздел. Все операционные системы, между которыми вы хотите переключаться, должны поддерживать чтение и запись в файловую систему этого раздела. Мы выбрали файловую систему FAT32. Хотя для системы Bootcontrol требуется менее 1 МБ места на диске, минимальный размер раздела FAT32 по умолчанию составляет 256 МБ, поэтому большая часть раздела останется неиспользованной.

Если на жестком диске нет достаточного количества невыделенного дискового пространства, то вы можете уменьшить или удалить существующие разделы. В Linux это можно сделать при помощи утилиты GNU parted. Если в результате работы parted изменится порядок разделов, то может потребоваться редактирование файла /etc/fstab. Более подробная информация по этому вопросу содержится в документации по работе утилиты parted.

Результат нашей работы утилиты parted показан в листинге 1.

Листинг 1. Создание необходимых разделов.
repton:~# cat /etc/fstab
# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda2 / ext3 defaults 0 1
/dev/hda6 /home ext3 defaults 0 2
/dev/hda7 /opt ext3 defaults 0 2
/dev/hda5 none swap sw 0 0
/dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
repton:~# umount /home
repton:~# parted
Using /dev/hda
(parted) print
Disk geometry for /dev/hda: 0.000-57231.562 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 18412.734 primary ntfs boot
2 18418.271 25085.874 primary ext3
3 25085.874 57231.562 extended
5 25085.905 26458.615 logical linux-swap
6 26458.646 49999.174 logical ext3
7 49999.206 57231.562 logical ext3
(parted) resize 6 26458 49739
(parted) mkpartfs logical fat32 49739 49999
(parted) print
Disk geometry for /dev/hda: 0.000-57231.562 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 18412.734 primary ntfs boot
2 18418.271 25085.874 primary ext3
3 25085.874 57231.562 extended
5 25085.905 26458.615 logical linux-swap
6 26458.646 49740.314 logical ext3
8 49740.346 49999.174 logical fat32
7 49999.206 57231.562 logical ext3
(parted) q
repton:~# mount /home

Монтирование раздела в Linux

Смонтируйте в Linux созданный раздел управления. В нашем случае потребовалось добавить в файл /etc/fstab следующую строку:

# <файловая система> <точка монтирования> <тип> <параметры> <дамп> <номер для fsck>
/dev/hda8 /boot/control vfat umask=022,dmask=022,fmask=022 0 2

Затем создайте точку монтирования и смонтируйте раздел следующими командами:

mkdir /boot/control
mount /boot/control

Вам также потребуется обновить данные о структуре диска, которые хранит GRUB. В нашем примере это было сделано командой grub-install /dev/hda.

Монтирование раздела в Windows

Убедитесь, что изменения разделов не вызвали проблем, перезагрузившись в Windows вручную. Затем назначьте букву тома созданному вами разделу. В современных версиях Windows необходимо использовать соответствующую программу управления компьютером (щелкните правой кнопкой мыши по значку Мой компьютер и выберите Управление). В более старых версиях выберите Пуск > Администрирование.

На рисунке 1 показан пример назначения буквы W загрузочному разделу.

Рисунок 1. Назначение буквы тома загрузочному разделу в Windows
Назначение буквы тома загрузочному разделу в Windows

Шаг 2. Перенаправление загрузочного меню GRUB

Разместите файл настроек GRUB /boot/grub/menu.lst в загрузочный раздел, в который имеют доступ на запись и Windows, и Linux. Это позволит изменять операционную систему, использующуюся по умолчанию, из обеих установленных систем. Чтобы GRUB смог найти конфигурационный файл, необходимо немного изменить исходный файл настроек.

Распечатайте исходный файл настроек. Если произойдет ошибка запуска GRUB, то вы сможете вручную ввести команды, необходимые для загрузки операционной системы. Более подробные сведения о работе GRUB представлены по ссылкам в разделе Ресурсы.

В своей тестовой системе мы сначала скопировали файл: cp /boot/grub/menu.lst /boot/control/menu.lstа затем добавили несколько строк (см. листинг 2) в исходный файл /boot/grub/menu.lst:

Листинг 2. Разрешение доступа к загрузочному файлу из обеих операционных систем.
title BOOTCONTROL REDIRECT : PLEASE WAIT
root (hd0,7)
configfile /menu.lst
boot

Убедитесь, что аргумент команды root подходит для вашей системы. Вкратце: диски нумеруются, начиная с нуля (а не обозначаются буквами от a до z), и нумерация разделов также начинается с нуля (а не с единицы). Так, например, раздел /dev/hda8 обозначается как (hd0,7). Мы убрали команду savedefault из всех остальных частей файла настроек, а чтобы операционная система запускалась через 10 секунд демонстрации экрана загрузки, изменили следующие параметры (более подробные сведения смотрите в документации по GRUB):

default 0
timeout 10

На этом изменение настроек GRUB закончено. Теперь проверьте, что система перезагружается и меню по-прежнему отображается корректно.

Наиболее частая ошибка на данном этапе — неверно указанные разделы. Проверьте, что номер раздела (младший номер, minor) в parted соответствует указанному в /etc/fstab, а в настройках GRUB (файл /boot/grub/menu.lst) указан тот же номер, но на единицу меньше.

Шаг 3. Настройка программы Bootcontrol

Загрузите архив, ссылка на который указана в разделе Загрузки, и разархивируйте его в раздел Bootcontrol. В архиве содержится основной скрипт переключения операционных систем, написанный на языке Perl, а также несколько примеров скриптов для переключения между ОС Windows и Linux. Для работы этих скриптов требуется, чтобы загрузочный раздел являлся рабочим каталогом.

Использование скрипта

Скрипт запускается следующим образом:

bootcontrol.pl <grub-config-file> <platform-title>

Параметр grub-config-file определяет путь к редактируемому файлу настроек. Обычно следует изменять файл menu.lst, однако вы можете протестировать правильность вносимых изменений на копии исходного файла.

Параметр platform-title используется как подстрока (регулярное выражение), которая ищется в параметрах title файла /boot/control/menu.lst. Регистр символов при поиске не учитывается, и скрипт bootcontrol.pl выбирает первое найденное вхождение данной подстроки. Если в качестве параметра platform-title указано число, то оно рассматривается как номер пункта в загрузочном меню, а не подстрока для поиска названия. Первый пункт в файле меню имеет нулевой номер.

Вспомогательные скрипты

Помимо bootcontrol.pl в архиве находятся еще два небольших скрипта-шаблона, упрощающие переключение между Windows и Linux. Введите в любой из операционных систем команду to_linux.pl или to_windows.pl. Скрипты не перезагружают операционную систему немедленно, но меняют в GRUB загружаемую по умолчанию операционную систему.

Шаг 4. Поддержка системы

Изменения или обновления установленных операционных систем могут повлиять на настройки, используемые программой Bootcontrol, поэтому после любого обновления, затрагивающего GRUB или ядро Linux, перезагружайте систему, чтобы убедиться в работоспособности загрузчика. Обновления могут изменить файл /boot/grub/menu.lst без внесения соответствующих изменений в файл /boot/control/menu.lst.


Загрузка

ОписаниеИмяРазмер
Sample scripts for this articlel-osswitch-bootcontrol.zip3KB

Ресурсы

Научиться

  • Оригинал статьи (EN).
  • На сайте программы GNU GRUB site есть все, что нужно знать для работы с этим загрузчиком.
  • Статья "Boot loader showdown: Getting to know LILO and GRUB" (EN) (developerWorks, август 2005) помогает понять различия между загрузчиками LILO и GRUB.
  • Пошаговое руководство "Getting to know GRUB" (EN) (developerWorks, январь 2001) иллюстрирует процесс установки и использование GRUB.
  • В статье "Installing and configuring Red Hat Linux" (EN) (developerWorks, апрель 2002) представлены полезные советы и хитрости.
  • В статье "Dual-booting Linux" (EN) (developerWorks, апрель 2002) рассказывается как с одного жесткого диска можно загружать и Linux, и другие операционные системы.(EN)
  • В разделе Linux сайта developerWorks вы найдете еще много ресурсов для Linux-разработчиков.
  • Оставайтесь в курсе событий с вебкастами и новостями developerWorks.(EN)

Получить продукты и технологии

  • GNU Parted — программа для создания, удаления, проверки, копирования и изменения размера разделов и файловых систем на них.(EN)
  • Пробные версии программного обеспечения IBM, которые можно загрузить напрямую с developerWorks, помогут вам в создании нового Linux-проекта.(EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


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

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=310518
ArticleTitle=Автоматизация переключения между ОС при мультисистемной загрузке
publish-date=05272008