Установка на одном компьютере нескольких операционных систем уже давно не вызывает ни у кого проблем. В случае установки "нуб-френдли" Linux-дистрибутивов (Ubuntu например) после установки Windows даже делать ничего не надо - установщик сам найдет и добавит в загрузчик опцию загрузки Windows. В случае установки Windows ПОСЛЕ Linux - тоже не особо хлопотно, просто переустановить GRUB и добавить туда Windows (вручную либо конфигуратором).
Но несколько дней назад я поставил себе цель - установить себе ДВЕ Windows XP и ДВЕ Kubuntu 7.10. Зачем? На Linux пока туговато с профессиональным аудио, поэтому одна копия Windows отходит исключительно под звук. Вторая Windows - для "всего остального" - игры то бишь. Зачем мне две Ubuntu? Одна - для "всего" (интернет, почта итд), другая - исключительно под KDevelop - только среда разработки и ничего лишнего. Короче, чтоб не засирать системы.
И вот, решил я поставить сей наборчик. Загрузился с LiveCD, разметил диск. Надо сказать, меня неприятно удивило то, что Windows XP не может установиться на логический раздел. Да, начиная с SP2 загрузчик поддерживает логические диски, поэтому
загрузить "винду" с логического диска можно (при условии, что
загрузчик (NTLDR, boot.ini) лежит на
активном Primary NTFS/FAT32 разделе). А вот
установить ее туда никак не получится.
Итак, первая проблема, с которой сталкиваются при установке двух Windows XP на разные разделы/диски - это буквы дисков. Установщик Windows назначает буквы разделам по порядку - то есть при установке винды НЕ на первый раздел буквой системного диска может оказаться D:, E: или любая другая буква. Обходится это ограничение очень просто - fdisk'ом помечаем разделы, которые нужно спрятать, как "Hidden NTFS" (код 17). После этого установщик Windows назначает букву C: нужному вам диску. Если вы используете GRUB для загрузки операционных систем - тогда нужно еще отметить, что после возврата спрятанных разделов в нормальное состояние, операционная система, которая была установлена на таком разделе, автоматически затирает загрузочную дорожку. Это происходит один раз для каждой спрятаной таким образом операционной системы - после разовой загрузки каждой из них можно смело снова устанавливать GRUB, не боясь, что его затрет сильно умная винда.
Вторая проблема - это буквы дисков после возврата спрятанных разделов в исходное состояние. В отличие от Ubuntu (которая монтирует разделы по их UUID), Windows просто монтирует разделы по порядку, как и ее установщик. То есть после возврата спрятаных разделов в исходное состояние винда, установленая НЕ на первом разделе, начнет валиться. Это происходит потому что, несмотря на то, что загрузчик грузит ее с нужного раздела (благодаря boot.ini, который указывает на нужный раздел), уже загруженная винда в процессе загрузки настроек грузит их с того раздела, что она определила как диск С:. То есть фактически половина загрузки проходит с нужного раздела, половина - с чужого. Лечится это следующим образом - запускается редактор реестра и исправляются буквы дисков в
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
например, чтобы сообщить системе правильную букву диска, нужно найти ее родной раздел (например, диск E) и переименовать "\DosDevices\E:" в "\DosDevices\C:", а "\DosDevices\C:" переименовать в "\DosDevices\E:". Проделав такую операцию для каждой "сбившейся с пути истинного" операционной системы и перезагрузки все системы начинают работать как надо.
После виндов можно устанавливать и Linux, тут проблем никаких не возникнет. Одна из прелестей Linux в том, что ее можно загнуть как угодно и она даже не вякнет.
Далее вам, возможно, захочется иметь общие файлы для всех операционных систем. Например у меня есть 80-гиговый раздел, который монтируется как /home в обе Ubuntu и как L: в винде. Для того, чтобы монтировать ext2/3 диски под виндой, нужно скачать
ext2 IFS или
ext2 fsd Open-Source driver. После этого можно назначать буквы ext2/3 дискам. Например у меня на 80-гиговом разделе есть четыре папки - /burillo (/home/burillo в "обычной" Ubuntu), /dev (/home/dev в Ubuntu с KDevelop), /win (L:\win\ в "обычной" винде) и /audio (L:\audio\ в винде, заточеной под звук). В этом случае переустановка теперь не так страшна, так как можно сохранить все настройки.
Чтобы еще больше разгрузить Windows-системы, можно поставить символические ссылки на Linux-раздел. Довольно большое количество народу считает, что Windows не поддерживает символические ссылки. Это не так. Начиная с Windows 2000 NTFS (версия v3.0) поддерживает символические ссылки (правда, с некоторыми ограничениями), просто Microsoft не находила им применения и видимо считала, что пользователям они тоже не нужны (если включить отображение скрытых и защищенных файлов в Windows Vista, можно увидеть, что она вся покрыта символическими ссылками с папками а-ля Windows XP - для того, чтобы старые программы могли корректно работать с новой организацией файлов). В стандартном комплекте Windows в недрах системных директорий лежит консольная утилита для создания символических ссылок, однако я рекомендую воспользоваться программой
NTFS Link. Таким образом, часть моих пользовательских папок ("Мои документы", "Рабочий стол"), а также некоторые программы на самом деле обитают на 80-гиговом ext3 разделе. Но винде об этом знать не обязательно :-))
PS
очень важно при работе с символическими ссылками в NTFSВ то время, как сама Windows поддерживает символические ссылки, подавляющее большинство программ и не подозревает об их существовании. Поэтому если например через Windows Explorer начать удалять ссылку на папку - удалится не ссылка, удалится
содержимое папки. Это происходит потому, что Windows Explorer автоматически переходит по ссылке, потому что не знает что такое символическая ссылка. Для удаления ссылки нужно воспользоваться контекстным меню, которое появляется после установки NTFS Link.