Возвращение к XP от Vista

 | 14.02

Мой Компьютер, №15 (519), 01.09.2008

Я не стану разводить диспут на тему, что же все-таки лучше, Windows XP или Windows Vista, но коль уж имеется желание установить старую добрую «хрюшку» рядом с Вистой, мы это сделаем. Пусть каждый для себя ответит на тот вопрос, зачем это ему нужно, ведь кто-то вынужден работать за ПК совместно с человеком, которого Виста целиком устраивает, а у кого-то не работает программа, заточенная под XP. Единственное, что стоит разъяснить, так это причину проблемы, но сначала позвольте вам напомнить, как происходит загрузка компьютера. Это, на мой взгляд, ключевой момент (хоть я и не Наталья Сумская :-).

Причина всех бед

Итак, непосредственно после нажатия кнопки Power BIOS проводит так называемую процедуру POST (самодиагностика при старте), которая при обнаружении аппаратной неисправности основных узлов должна пропищать специальные коды. После «поста» системный BIOS детектирует загрузочное устройство, им может быть дискета, CD-ROM, жесткий диск и USB-периферия. Обнаружив несколько жестких дисков установленных в системе, BIOS выбирает из них основной (это можно задать в CMOS Setup) и ищет на нем первый сектор, который находится на нулевой дорожке. В первом секторе хранится главная загрузочная запись MBR (Master Boot Record), которая при обнаружении считывается в ОЗУ. После того как BIOS считала MBR в ОЗУ, дальнейший ход загрузки компьютера выполняет микрокод, хранящийся в MBR. Считанная в ОЗУ MBR сканирует таблицу разделов (Partition Table) и находит в ней первичный активный раздел. Чаще всего таковым оказывается раздел, получающий в ОС семейства Windows буквенное имя С: (у Linux это hda0). Найдя этот раздел, MBR загружает в ОЗУ код загрузчика ОС, хранящийся в самом первом секторе первичного активного раздела. Еще этот сектор называют нулевым, поскольку отсчет секторов на HDD начинается с нуля, но по сути он первый.

В этом месте я немного отвлекусь и замечу, что в случае, если вы сделаете активным не первый раздел (обычно получающий в ОС имя С:), а второй, он в загруженной Windows все равно получит имя С:. Microsoft в своем репертуаре, в очередной раз сбила с толку пользователей, наделив разделы буквенными именами, вот в Linux все по-человечески. Если попытаться загрузить компьютер, на котором отсутствует таблица разделов и главная загрузочная запись, то вы получите ошибку BIOS — сообщение о том, что операционной системы нет (Operation System is Missing). В процессе инсталляции ОС в первый сектор первичного активного раздела (загрузочного) записывается так называемый загрузчик операционной системы, который выглядит как обычный файл с атрибутами «только для чтения» и «защищенный системный». В Windows 9x этот файл назывался bootsect.dos и также записывался в первый сектор активного раздела, в системах семейства NT он переименован в ntldr и у него гораздо больше возможностей, нежели у предшественника. Так, например, ntldr работает в паре с файлом boot.ini, что позволяет загружать операционные системы, указывая, где расположены системные файлы (это называется ARC-имена). В процессе загрузки ntldr считывает из файла boot.ini то, на каком контроллере, диске и разделе находятся такие файлы, как ntoskrnl. А если одновременно установить Windows 98 и Windows NT, в самом низу этого файла появляется запись вида «C:=»Windows 98″», которая на этапе выбора загрузки ОС из списка передает управление файлу bootsect.dos.

Если вы установите Windows NT после установки Windows 9x, то инсталлятор сохранит копию загрузчика bootsect.dos на диске С: и запишет на его место ntldr, который, руководствуясь файлом boot.ini, уже знает о присутствии Windows 9x. В случае, если вы поступите наоборот, инсталлятор старушки Win 98 перезапишет ntldr своим bootsect.dos, который, конечно же, ничего не знает об NT-системе. С Вистой дела обстоят примерно таким же образом: при инсталляции к уже установленной ОС Windows NT Виста «подберет» ее, а вот в обратном случае все будет куда хуже.

Сначала я хотел вам предложить вариант с программой SyMon, о которой писалось в статье «20 ОС? Не вопрос!», она-то способна в два счета помочь юзеру создать на HDD до 36 разделов (20 из них основных) и расставить в них операционные системы с их загрузчиками и загрузочными файлами. Но программа рассчитана на продвинутых пользователей и для полного ввода в курс дела потребовалось бы исписать страниц пять, прежде чем пользователь поймет, что к чему. Поэтому все производимые действия мы проведем подручными средствами, понадобятся лишь два диска с дистрибутивами и, возможно, менеджер разделов (Partition Magic или Acronis Disk Director).

Легенда — имеется компьютер с установленной операционной системой Windows Vista, на него требуется установить Windows XP (но это может быть и Win2k, и 2003 Server). Дабы усложнить задание и сделать ситуацию более реалистичной, представим, что Виста проинсталлирована на единственный раздел жесткого диска, как обычно бывает при покупке нового ПК.

Задача — создать еще один раздел и установить в него Windows XP, но так, чтобы в процессе загрузки Windows Vista ее загрузочное меню отображало две установленные операционные системы.

Что к чему

Рис. 1

Рис. 2

Как создать два раздела из одного, на котором, собственно, и установлена операционная система, уже неоднократно писалось, но вкратце напомню. Нужно сначала укоротить раздел С: с конца, а затем на свободном пространстве создать раздел (основной или расширенный — решать вам, это в нашем случае несущественно). В этот раздел мы и будем устанавливать Windows XP. Обратите внимание, как выглядит раздел С: с установленной Вистой (рис. 1) и он же, но только с Windows XP (рис. 2). Понятное дело, новая операционная система принесла с собой более сложную организацию загрузочных файлов. Устанавливаем на раздел D: Windows XP и смотрим, что у нас получилось (рис. 3). Видно, что добавились некоторые файлы, но самое главное — в первый сектор загрузочного раздела был записан загрузчик ntldr, который ровным счетом ничего не знает о существовании Висты, поскольку берет все данные о загрузке из файла boot.ini.

Рис. 3

Рис. 4

После установки Windows XP она загружается без предоставления какого-либо меню выбора операционных систем, будто кроме ее загрузочных файлов на разделе С: ничего не существует. Наша первая задача — инвертировать ситуацию и заставить загружаться подобным образом Висту, чтобы она ничего не подозревала об установленной «хрюшке». Итак, берем в руки установочный диск Windows Vista и загружаемся с него. На первом этапе загрузки я бы вам посоветовал избрать в качестве основной раскладки английскую, поскольку нам будет нужна командная строка, а она, как известно, изъясняться по-русски еще не научилась (рис. 4). После нажатия клавиши «Далее» нужно нажать на ссылку «Восстановление системы» (рис. 5), и мы попадаем в диалоговое окошко, которое предлагает нам выбрать ту Висту, которую нужно восстановить (это если их несколько). Смело нажимаем кнопку «Далее» и в следующем диалоге выбираем командную строку (рис. 6).

Рис. 5

Рис. 6

В командной строке нужно ввести команду Х:bootBootsect.exe /NT60 All, которая и восстановит оригинальный загрузчик Висты, чтобы мы могли загрузиться. Дальнейшие манипуляции мы будем производить уже из-под нее, в ипостаси администратора или, как любят говаривать линуксоиды, супервайзера. Будьте внимательны, в моем примере указана буква привода Х:, а если на вашей машине два раздела и один оптический привод, скорей всего, это будет E:. Набирайте в строке Exit и нажимайте кнопку «Перезагрузка», по умолчанию у вас загрузится Виста, еще не предлагая перечень установленных ОС.

Командуем в строке

Когда операционная система загрузится, идите прямиком в меню Пуск, там заходите в меню Все программы — Стандартные — командная строка, делайте правый клик и запускайте строку от имени администратора (рис. 7). Перед началом работы в строке я бы хотел остановиться на программе, с которой нам придется работать, она называется Bcdedit.exe и проживает по адресу %SystemDrive%%SystemRoot%System32. Программа называется редактор хранилища данных конфигурации загрузки, что достаточно красноречиво говорит о ее предназначении. Синтаксис этой программы можно узнать по команде bcdedit /?. Кстати, насчет справочной системы командной строки: если вы хотите узнать что-то о программе bcdedit.exe или какой-то другой, недостаточно давать запрос вида bcdedit /?. Для более детального изучения синтаксиса команд после названия программы нужно задавать те команды, которыми вы будете управлять, вот пример: bcdedit delete /?. Такой запрос подробно расскажет вам о том, какие тонкости есть у удаления параметров записей. Итак, начнем колдовать.

Первая команда — это bcdedit /create {ntldr} /d «Наша любимая ХРюшка». Этой командой мы приказываем создать запись с идентификатором {ntldr} и названием в меню выбора «произвольное имя». Единственное условие состоит в том, что имя ОС должно быть взято в кавычки (на латинской раскладке).

Вторая команда — это bcdedit /set {ntldr} device partition=C:. Эта команда производит запись в хранилище данных о том, что загружаться мы будем с физического устройства раздела С:.

Третья команда — это bcdedit /set {ntldr} path ntldr, она устанавливает путь к файлу из корня загрузочного раздела. Обратите особое внимание на то, что слэш перед ntldr не прямой, а обратный; в случае неправильного синтаксиса команда не будет выполнена. По сути, это запись о том, что в момент выбора загрузчик Висты передает свои полномочия файлу ntldr (как в старые добрые времена).

Рис. 7

Рис. 8

Четвертая команда — bcdedit /displayorder {ntldr} /addlast — завершает наш марафон и указывает, какой ОС стоять первой в списке: новомодной Висте или старой доброй «хрюшке»; по истечении тридцати секунд эта ОС начнет загрузку.

Как видите, всего четыре несложные команды, и дело в шляпе (рис. 8). Теперь при загрузке операционной системы вам будет представлено полноценное меню загрузки операционных систем. Конечно, прежнее редактирование файла boot.ini было куда проще, нежели работа с командной строкой при полном отсутствии дружеского интерфейса с пользователем. Это еще раз подчеркивает то, что программисты стараются поглубже скрыть те настройки, которые абсолютно не нужны простому смертному… может, это и к добру.

Рис. 9

Вы можете посмотреть на количество записей в хранилище

Мой Компьютер, №15 (519), 01.09.2008

Я не стану разводить диспут на тему, что же все-таки лучше, Windows XP или Windows Vista, но коль уж имеется желание установить старую добрую «хрюшку» рядом с Вистой, мы это сделаем. Пусть каждый для себя ответит на тот вопрос, зачем это ему нужно, ведь кто-то вынужден работать за ПК совместно с человеком, которого Виста целиком устраивает, а у кого-то не работает программа, заточенная под XP. Единственное, что стоит разъяснить, так это причину проблемы, но сначала позвольте вам напомнить, как происходит загрузка компьютера. Это, на мой взгляд, ключевой момент (хоть я и не Наталья Сумская :-).

Причина всех бед

Итак, непосредственно после нажатия кнопки Power BIOS проводит так называемую процедуру POST (самодиагностика при старте), которая при обнаружении аппаратной неисправности основных узлов должна пропищать специальные коды. После «поста» системный BIOS детектирует загрузочное устройство, им может быть дискета, CD-ROM, жесткий диск и USB-периферия. Обнаружив несколько жестких дисков установленных в системе, BIOS выбирает из них основной (это можно задать в CMOS Setup) и ищет на нем первый сектор, который находится на нулевой дорожке. В первом секторе хранится главная загрузочная запись MBR (Master Boot Record), которая при обнаружении считывается в ОЗУ. После того как BIOS считала MBR в ОЗУ, дальнейший ход загрузки компьютера выполняет микрокод, хранящийся в MBR. Считанная в ОЗУ MBR сканирует таблицу разделов (Partition Table) и находит в ней первичный активный раздел. Чаще всего таковым оказывается раздел, получающий в ОС семейства Windows буквенное имя С: (у Linux это hda0). Найдя этот раздел, MBR загружает в ОЗУ код загрузчика ОС, хранящийся в самом первом секторе первичного активного раздела. Еще этот сектор называют нулевым, поскольку отсчет секторов на HDD начинается с нуля, но по сути он первый.

В этом месте я немного отвлекусь и замечу, что в случае, если вы сделаете активным не первый раздел (обычно получающий в ОС имя С:), а второй, он в загруженной Windows все равно получит имя С:. Microsoft в своем репертуаре, в очередной раз сбила с толку пользователей, наделив разделы буквенными именами, вот в Linux все по-человечески. Если попытаться загрузить компьютер, на котором отсутствует таблица разделов и главная загрузочная запись, то вы получите ошибку BIOS — сообщение о том, что операционной системы нет (Operation System is Missing). В процессе инсталляции ОС в первый сектор первичного активного раздела (загрузочного) записывается так называемый загрузчик операционной системы, который выглядит как обычный файл с атрибутами «только для чтения» и «защищенный системный». В Windows 9x этот файл назывался bootsect.dos и также записывался в первый сектор активного раздела, в системах семейства NT он переименован в ntldr и у него гораздо больше возможностей, нежели у предшественника. Так, например, ntldr работает в паре с файлом boot.ini, что позволяет загружать операционные системы, указывая, где расположены системные файлы (это называется ARC-имена). В процессе загрузки ntldr считывает из файла boot.ini то, на каком контроллере, диске и разделе находятся такие файлы, как ntoskrnl. А если одновременно установить Windows 98 и Windows NT, в самом низу этого файла появляется запись вида «C:=»Windows 98″», которая на этапе выбора загрузки ОС из списка передает управление файлу bootsect.dos.

Если вы установите Windows NT после установки Windows 9x, то инсталлятор сохранит копию загрузчика bootsect.dos на диске С: и запишет на его место ntldr, который, руководствуясь файлом boot.ini, уже знает о присутствии Windows 9x. В случае, если вы поступите наоборот, инсталлятор старушки Win 98 перезапишет ntldr своим bootsect.dos, который, конечно же, ничего не знает об NT-системе. С Вистой дела обстоят примерно таким же образом: при инсталляции к уже установленной ОС Windows NT Виста «подберет» ее, а вот в обратном случае все будет куда хуже.

Сначала я хотел вам предложить вариант с программой SyMon, о которой писалось в статье «20 ОС? Не вопрос!», она-то способна в два счета помочь юзеру создать на HDD до 36 разделов (20 из них основных) и расставить в них операционные системы с их загрузчиками и загрузочными файлами. Но программа рассчитана на продвинутых пользователей и для полного ввода в курс дела потребовалось бы исписать страниц пять, прежде чем пользователь поймет, что к чему. Поэтому все производимые действия мы проведем подручными средствами, понадобятся лишь два диска с дистрибутивами и, возможно, менеджер разделов (Partition Magic или Acronis Disk Director).

Легенда — имеется компьютер с установленной операционной системой Windows Vista, на него требуется установить Windows XP (но это может быть и Win2k, и 2003 Server). Дабы усложнить задание и сделать ситуацию более реалистичной, представим, что Виста проинсталлирована на единственный раздел жесткого диска, как обычно бывает при покупке нового ПК.

Задача — создать еще один раздел и установить в него Windows XP, но так, чтобы в процессе загрузки Windows Vista ее загрузочное меню отображало две установленные операционные системы.

Что к чему

Рис. 1

Рис. 2

Как создать два раздела из одного, на котором, собственно, и установлена операционная система, уже неоднократно писалось, но вкратце напомню. Нужно сначала укоротить раздел С: с конца, а затем на свободном пространстве создать раздел (основной или расширенный — решать вам, это в нашем случае несущественно). В этот раздел мы и будем устанавливать Windows XP. Обратите внимание, как выглядит раздел С: с установленной Вистой (рис. 1) и он же, но только с Windows XP (рис. 2). Понятное дело, новая операционная система принесла с собой более сложную организацию загрузочных файлов. Устанавливаем на раздел D: Windows XP и смотрим, что у нас получилось (рис. 3). Видно, что добавились некоторые файлы, но самое главное — в первый сектор загрузочного раздела был записан загрузчик ntldr, который ровным счетом ничего не знает о существовании Висты, поскольку берет все данные о загрузке из файла boot.ini.

Рис. 3

Рис. 4

После установки Windows XP она загружается без предоставления какого-либо меню выбора операционных систем, будто кроме ее загрузочных файлов на разделе С: ничего не существует. Наша первая задача — инвертировать ситуацию и заставить загружаться подобным образом Висту, чтобы она ничего не подозревала об установленной «хрюшке». Итак, берем в руки установочный диск Windows Vista и загружаемся с него. На первом этапе загрузки я бы вам посоветовал избрать в качестве основной раскладки английскую, поскольку нам будет нужна командная строка, а она, как известно, изъясняться по-русски еще не научилась (рис. 4). После нажатия клавиши «Далее» нужно нажать на ссылку «Восстановление системы» (рис. 5), и мы попадаем в диалоговое окошко, которое предлагает нам выбрать ту Висту, которую нужно восстановить (это если их несколько). Смело нажимаем кнопку «Далее» и в следующем диалоге выбираем командную строку (рис. 6).

Рис. 5

Рис. 6

В командной строке нужно ввести команду Х:bootBootsect.exe /NT60 All, которая и восстановит оригинальный загрузчик Висты, чтобы мы могли загрузиться. Дальнейшие манипуляции мы будем производить уже из-под нее, в ипостаси администратора или, как любят говаривать линуксоиды, супервайзера. Будьте внимательны, в моем примере указана буква привода Х:, а если на вашей машине два раздела и один оптический привод, скорей всего, это будет E:. Набирайте в строке Exit и нажимайте кнопку «Перезагрузка», по умолчанию у вас загрузится Виста, еще не предлагая перечень установленных ОС.

Командуем в строке

Когда операционная система загрузится, идите прямиком в меню Пуск, там заходите в меню Все программы — Стандартные — командная строка, делайте правый клик и запускайте строку от имени администратора (рис. 7). Перед началом работы в строке я бы хотел остановиться на программе, с которой нам придется работать, она называется Bcdedit.exe и проживает по адресу %SystemDrive%%SystemRoot%System32. Программа называется редактор хранилища данных конфигурации загрузки, что достаточно красноречиво говорит о ее предназначении. Синтаксис этой программы можно узнать по команде bcdedit /?. Кстати, насчет справочной системы командной строки: если вы хотите узнать что-то о программе bcdedit.exe или какой-то другой, недостаточно давать запрос вида bcdedit /?. Для более детального изучения синтаксиса команд после названия программы нужно задавать те команды, которыми вы будете управлять, вот пример: bcdedit delete /?. Такой запрос подробно расскажет вам о том, какие тонкости есть у удаления параметров записей. Итак, начнем колдовать.

Первая команда — это bcdedit /create {ntldr} /d «Наша любимая ХРюшка». Этой командой мы приказываем создать запись с идентификатором {ntldr} и названием в меню выбора «произвольное имя». Единственное условие состоит в том, что имя ОС должно быть взято в кавычки (на латинской раскладке).

Вторая команда — это bcdedit /set {ntldr} device partition=C:. Эта команда производит запись в хранилище данных о том, что загружаться мы будем с физического устройства раздела С:.

Третья команда — это bcdedit /set {ntldr} path ntldr, она устанавливает путь к файлу из корня загрузочного раздела. Обратите особое внимание на то, что слэш перед ntldr не прямой, а обратный; в случае неправильного синтаксиса команда не будет выполнена. По сути, это запись о том, что в момент выбора загрузчик Висты передает свои полномочия файлу ntldr (как в старые добрые времена).

Рис. 7

Рис. 8

Четвертая команда — bcdedit /displayorder {ntldr} /addlast — завершает наш марафон и указывает, какой ОС стоять первой в списке: новомодной Висте или старой доброй «хрюшке»; по истечении тридцати секунд эта ОС начнет загрузку.

Как видите, всего четыре несложные команды, и дело в шляпе (рис. 8). Теперь при загрузке операционной системы вам будет представлено полноценное меню загрузки операционных систем. Конечно, прежнее редактирование файла boot.ini было куда проще, нежели работа с командной строкой при полном отсутствии дружеского интерфейса с пользователем. Это еще раз подчеркивает то, что программисты стараются поглубже скрыть те настройки, которые абсолютно не нужны простому смертному… может, это и к добру.

Рис. 9

Вы можете посмотреть на количество записей в хранилище командой bcdedit /enum, а если вам что-то не понравится, запись с идентификатором {ntldr} можно вообще удалить, делается это командой bcdedit /delete {ntldr} /f. Команда bcdedit /timeout XX позволит задать временной интервал, по истечении которого загрузится операционная система, установленная по умолчанию. Чтобы заставить нашу «хрюшку» стать в списке первой (а как же по-другому?), нужно набрать в строке такую команду: bcdedit /displayorder {ntldr} /addfirst — и теперь тридцать секунд придется ждать, чтобы началась загрузка Windows XP, а это уже совсем другое дело (рис. 9).

Напоследок

Вот, в принципе, и все, поставленная задача выполнена — или, как говорят танкисты, «цель уничтожена». Конечно, четыре команды мощнейшей программы bcdedit.exe не раскрыли и одного процента всех возможностей, но я надеюсь, что наш многоуважаемый Parad0x уделит ей отдельную статью, в которой научит юзеров гибко конфигурировать и настраивать записи хранилища данных конфигурации загрузки.

Рис. 10

Рис. 11

Для самых ленивых: у сторонних разработчиков имеются фронтенды для программы bcdedit.exe, которые способны предоставить пользователю нехитрый интерфейс, так что не придется напрягать фаланги пальцев и отстукивать по клавиатуре. В качестве примера могу привести парочку таких фронтов. Один из них — это Vista Boot Pro 3.3.0 (http://soft.oszone.net/files_soft/VistaBootPRO_3.3.0.exe). Программа распространяется бесплатно, имеет довольно привлекательный внешний вид и совершенно не тяжела даже для диалапщиков, ведь ее вес всего 1.6 Мб (рис. 10). Этот фронт интуитивно понятен, имеет полностью англоязычный интерфейс, но, к сожалению, некорректно отображает русскоязычные названия ОС. В качестве альтернативы Vista Boot Pro можно рассматривать фронт EasyBCD 1.7 (рис. 11). При достаточно легком весе (879 Кб) этот фронт также распространяется бесплатно и выполняет все манипуляции за своего ленивого хозяина, не желающего становиться PowerUser. Скачать программулину можно по прямой ссылке (http://soft.oszone.net/files_soft/EasyBCD1.7.exe). У этого фронта те же самые проблемы с отображением кириллицы, но зато у него побольше возможностей, он умеет организовывать совместную загрузку таких ОС, как Linux, WinPE, MacOS — и, конечно же, Windows.

Если у вас будут вопросы по теме, мыльте мне на мыло, отвечу всем.

Максим ДЕРКАЧ aka Astra

Robo User
Web-droid editor

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *