Состав и загрузка операционной системы (на примере ос ms-dos). Загрузчик операционной системы GRUB: настройка, описание

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

Ubuntu Linux поверх Windows XP или Vista, Windows XP вместе с Vista, FreeBSD и Windows - можно придумать и гораздо больше комбинаций. Ничто не мешает, не только придумывать, но и реализовывать самые замысловатые комбинации операционных систем. Причем это можно делать не только на одном компьютере, но и на одном диске - емкость современных жестких дисков (они же HDD, они же винты, они же винчестеры) позволяет "впихнуть" на один такой диск хоть 20 различных операционных систем.

Немного теории

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

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

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

  1. Обнаружить на определенной файловой системе определенный программный файл (или файлы)
  2. Загрузить этот файл (или файлы) в оперативную память и передать им управление.

Такие программы-загрузчики бывают двух типов:

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

Из первых самый популярный загрузчик под названием GRUB. Он умеет загружать более десяти типов операционных систем. Самый распространенный среди "семейных" это ntldr - загрузчик ОС Windows 2k, XP, 2k3 и его новейшая версия bootmgr загружающий Windows Vista и Windows 7. Кроме этих двух существует еще десятка два различных загрузчиков.

Почему так много? Причина проста - пока еще не существует универсального загрузчика, пригодного на все случаи жизни.

К примеру, GRUB, самый мощный на сегодняшний день, не может загружать образы дисков в формате ISO, но это умеет делать syslinux.

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

Например, через один из "примитивных" загрузчиков ntldr можно при помощи простого трюка запустить любое количество других загрузчиков, а это дает возможность реализовать самые изощренные фантазии по мультизагрузке.

От старта одной лишь MS Windows, до запуска всех версий Windows, плюс десяток версий Linux, плюс BSD, плюс Apple, плюс десяток файлов-образов дисков и дискет, плюс …

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

Наличие большого количества загрузчиков и возможность их запуска друг из друга дают еще и вариативность при решении одной и той же задачи. Например, двойную загрузку Windows XP плюс Linux можно реализовать как минимум двумя путями - либо использованием одного загрузчика GRUB для обеих ОС, либо комбинацией загрузчиков ntldr + GRUB.

Еще немного теории

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

Та часть парадигмы компьютеров семейства IBM PC, которая относится к использованию дисков, определяет, что так называемое "сырое" дисковое пространство должно быть поделено на разделы, затем на этих разделах должны быть созданы файловые системы и только после этого, уже на эти файловые системы можно записывать программы и данные, в том числе операционные системы.

В рамках парадигмы IBM PC допускается деление "сырого" адресного пространства жесткого диска (HDD), на четыре первичных раздела. То есть, упрощенно говоря, применительно к нашей теме, на одном жестком диске можно разместить четыре операционные системы. Это очень мало. Однако не все так грустно. Уже давно эта проблема решена при помощи расширенных разделов. Расширенный раздел это первичный раздел диска, который можно поделить еще на 255 разделов.

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

От теории к практике

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

  1. Разделение диска на разделы
  2. Создание на разделах файловых систем
  3. Выбор основного загрузчика или комбинации загрузчиков
  4. Установка операционных систем

Вроде все коротко и просто. Но только на первый взгляд. Дело в том, что на каждом из этапов возможны различные варианты и итоге получается столько различных способов создания мультизагрузочной системы, что я даже не буду пытаться их рассмотреть.

Мы пойдем другим путем.

Просто ответим на вопросы:

  1. Как наилучшим образом разделить диск на разделы?
  2. Какие файловые системы выбрать?
  3. Какой загрузчик выбрать?

После многих лет работы и экспериментов на первый вопрос у меня ответ такой:

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

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

В чем преимущество такого подхода?

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

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

Вопрос второй - файловая система и размер первичного загрузочного раздела.

Если изначально планируется установка более чем двух или трех ОС, а также их регулярная переустановка, то лучше всего делать размер первичного раздела совсем небольшим 1-2 Гб, а файловую систему для этого раздела использовать FAT или FAT32. Никакую серьезную ОС на этот раздел не ставить, разве что-нибудь легкое типа MS DOS.

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

В более распространенном случае - когда устанавливается только две-три ОС, размер первичного раздела лучше выбрать таким, чтобы на него можно было установить ОС Windows с базовым набором программ, то есть не менее 10 - 15 Гб. Соответственно файловую систему в этом случае выбирать NTFS.

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

И, наконец, какой загрузчик использовать в качестве первичного.

Я уже давно остановил свой выбор на ntldr. Хотя он вполне "тупой", кроме Windows ничего больше не умеет загружать, но есть в нем одна интересная особенность - он может загружать файловые образы дисковых секторов (физические сектора диска, записанные в файл). А это означает, что ему можно скормить файл с головой любого другого загрузчика. То есть из ntldr можно загрузить любое количество других загрузчиков, достаточно сделать файлы с их головами и по списку скармливать их ntldr.
Примечание. "Голова" загрузчика это сектор MBR или Boot. Это может быть и более одного сектора, например голова GRUBа - 16 секторов начиная с MBR.

Примечание. В том случае если голова загрузчика более одного сектора, копировать в файл для ntldr нужно только первый сектор (MBR сектор), поскольку ntldr может загружать только односекторные файлы. Это накладывает ограничение на количество одновременно установленных загрузчиков с "длинной", головой. То есть в схеме с ntldr нельзя использовать два GRUBа.

Схема мультизагрузочной системы выглядит следующим образом:

Для редких случаев - маленький первичный раздел с файловой системой FAT или FAT32 и без ОС, только загрузчик. При этом все ОС устанавливаются в логические разделы расширенного раздела.

Для более распространенных случаев - небольшой первичный раздел с файловой системой NTFS, куда устанавливается ОС Windows и загрузчик. Остальные пара-тройка ОС в логические разделы расширенного раздела.

Все очень просто.

Примечания

Если вариант мультизагрузки совсем уж простой, что-то типа Linux поверх Windows, когда Linux устанавливается на компьютер где уже есть Windows, то можно не заморачиваться с ntldr. При установке любого современного, популярного дистрибутива Linux есть возможность автоматически установить загрузчик GRUB, а он умеет загружать обе эти ОС.

Установить загрузчик ntldr можно вручную, отдельно от ОС Windows. Однако установить его можно только на раздел с файловыми системами FAT, FAT32 или NTFS. При установке ntldr нужно помнить, что его голова записывается в Boot сектор, а потому для его старта нужен еще и стандартный предзагрузчик типа MS DOS в MBR секторе (то есть выполняющий "прыжок" на Boot сектор). Если в MBR была записана голова другого загрузчика (например, GRUBа), то помимо установки ntldr нужно еще записать предзагрузчик Microsoft в MBR. Один из способов сделать это команда fdisk /mbr . Естественно, что fdisk в данном случае от компании Microsoft (из MS DOS).

Хотя при установке любой современной ОС, можно создавать разделы и файловые системы непосредственно в процессе установки, тем не менее, я советую делать это отдельно. Сначала при помощи программы типа fdisk или Partition Magic создаете нужные разделы, а уже затем запускаете установку ОС и в процессе указываете раздел, куда нужно ставить систему.

При установке любой ОС на мультизагрузочную систему нужно быть очень внимательным на этапе выбора типа разметки диска и выбора раздела. Некоторые установщики, например c диска Ubuntu Live, по умолчанию предлагают опции типа "установка на весь диск" или "автоматическая разметка диска". Если пропустить эти опции, то ваша мультизагрузочная система будет уничтожена. Также нужно быть аккуратным, когда вручную указываешь установщику раздел для установки - по невнимательности можно записать новую ОС в используемый раздел и тогда все, что на нем было ранее, будет уничтожено.

Прежде чем устанавливать новую ОС или новый загрузчик заранее приготовьте "ремкомплект" - набор данных и программ, который позволит вам восстановить загрузку системы в ее текущем состоянии. Может, получиться так, что после установки новой ОС или нового загрузчика, часть старых ОС не будет загружаться.

Мультизагрузка с флеш-диска, по своей организации, ничем не отличается от описанной здесь загрузки с HDD. С той лишь поправкой, что на флеш-диске нецелесообразно устанавливать файловые системы иные, чем FAT / FAT32. Если используется USB HDD, то с ним можно работать так же как с обычным HDD.

Однако загрузиться с флеш или USB диска можно не на каждом компьютере. Будьте готовы к тому, что на каком-либо компьютере вы не сможете это сделать. Чаще всего такие проблемы возникают с компьютерами, на которых используются BIOS Award или чипсеты nVidia, SiS, Amd. Реже всего проблема загрузки возникает, если на материнской плате BIOS AMI и чипсет Intel.

Яндекс Кошелек № 410011416229354 . Или на телефон +7 918-16-26-331 .

Даже небольшая сумма может помочь написанию новых статей:)

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

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

    Загрузчик операционной системы;

    Системные файлы IO.SYS и MSDOS.SYS ;

    Драйверы устройств.

    Командный процессор MS DOS (файл COMMAND.COM);

    Внешние команды MS DOS .

Кроме того, MS-DOS, как и все другие операционные системы для IBM PC , использует встроенное программное обеспечение компьютера, именуемое Базовой Системой Ввода-Вывода (BIOS).

Рассмотрим указанные программные модули в том порядке, в каком они загружаются в оперативную память после включения ПК.

Базовая система ввода-вывода - это самый низкий уровень управления, своего рода интерфейс между аппаратными средствами компьютера и программами. BIOS управляет непосредственно аппаратурой компьютера и избавляет другие программы от знания деталей того, как это делается. Программы BIOS записываются в ПЗУ компьютера фирмой-производителем и осуществляют:

    самотестирование компьютера при его включении (программа POST);

    инициализацию, т.е. настойку компьютерного оборудования (определяется конфигурация компьютера, устанавливаются необходимые значения некоторых регистров);

    выполнение обслуживающих функций и обработку аппаратных прерываний;

    загрузку операционной системы, записанной на магнитном диске (программа BOOT).

Сразу после включения компьютера начинает работать программа POST, проверяя работоспособность оперативной памяти и других компонентов компьютера. Затем BIOS производит инициализацию и пытается считать с диска в дисководе А: программу-загрузчик операционной системы, чтобы передать ей управление и продолжить процесс загрузки DOS. При отсутствии необходимых файлов или самого гибкого диска поиск продолжается на жестких дисках С:, D:, Е: и т.д. Если загрузочный (или, иными словами, системный) диск не найден, сообщение об этом выдается на монитор.

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

Загрузчик операционной системы - это очень короткая программа, находящаяся в первом секторе каждой дискеты и жесткого диска (винчестера) с операционной системой MS DOS. Функция этой программы заключается в считывании с загрузочного диска в оперативную память системных файлов DOS.

Системный файл IO.SYS - это расширение BIOS. Этот модуль настраивает операционную систему на конкретную конфигурацию вычислительного комплекса и позволяет подключать новые драйверы к нестандартным устройствам ввода-вывода,

Системный файл MSDOS.SYS - модуль обработки прерываний. В основном он обслуживает файловую систему и распоряжается распределением оперативной памяти.

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

При успешной загрузке системных файлов программный модуль IO.SYS устанавливает требуемую конфигурацию вычислительной системы. С этой целью он помещает в оперативную память компьютера драйверы внешних устройств.

Драйверы внешних устройств представляют собой отдельные программные файлы, обеспечивающие операции взаимодействия с внешними устройствами. Перечень подключаемых драйверов содержится в файле конфигурации CONFIG.SYS. .

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

Файлы с расширением.ВАТ играют при работе в системной среде особую роль. Они содержат совокупность ко­манд операционной системы или имен исполняемых файлов. После запуска файла с расширением.ВАТ все записанные в нем команды выполняются автоматически одна за другой.

Если файл AUTOEXEC.BAT не найден в корневом каталоге диска, с которого загружается операционная система, то MS DOS запрашивает у пользователя текущую дату и время.

После выполнения файла AUTOEXEC.BAT процесс загрузки операционной системы заканчивается. Командный процессор выдает приглашение, показывающее, что MS-DOS готова к приему команд. Приглашение обычно имеет вид А:\> или, например,С:\>, если загрузка производилась с жесткого диска.

MultiBoot – программа, восстанавливающая загрузчик операционной системы. По сути это графическая оболочка для системных утилит BcdBoot, BcdEdit и BootSect.

Достаточно скачать бесплатно MultiBoot, чтобы спасти систему, если она не загружается после установки более старой системы. Такое постоянно происходит, если пользоватеть устанавливает Windows XP параллельно Vista или Seven. Загрузчик более новой ОС просто стирается и кажется, будто вот он, конец. Но MultiBoot поможет избежать проблем. С его помощью можно организовать возможность загрузки одной из нескольких систем на выбор.

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

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

Эта статья посвящена не правилам установки какой-либо операционной системы, а тем предварительным действиям, которые необходимо произвести с Вашим компьютером, чтобы иметь возможность установки нескольких операционных систем.

Не будем заострять внимание на необходимости установки нескольких операционных систем. Каждый руководствуется своими доводами.

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

И для начала небольшой экскурс в принципы хранения информации на жестком диске вообще.

Как хранится информация на жестком диске?

Жесткий диск, как и всякое другое блочное устройство, хранит информацию фиксированными порциями, которые называются блоками. Блок является наименьшей порцией данных, имеющей уникальный адрес на жестком диске. Обмен информацией с жестким диском предполагает указание этого адреса в качестве параметра команды, выдаваемой контроллеру. Размер блока со временем стал стандартным для всех жестких дисков — 512 байт.

Для организации систем дисковое адресное пространство блоков разделяется на части, называемые разделами (partitions). Разделы полностью подобны целому диску в том, что они состоят из смежных блоков. Благодаря такой организации для описания раздела достаточно указания начала раздела и его длины в блоках. Разделы являются контейнерами всего своего содержимого. Этим содержимым является, как правило, файловая система. Под файловой системой с точки зрения диска понимается система разметки блоков для хранения файлов. После того, как на разделе создана файловая система и в ней размещены файлы операционной системы, раздел может стать загружаемым. Загружаемый раздел имеет в своем первом блоке небольшую программу, которая производит загрузку операционной системы.

Диск разбивается на разделы программным путем. То есть вы можете создать произвольную конфигурацию разделов. Информация о разбиении диска хранится в самом первом блоке жесткого диска, называемым главной загрузочной записью (Master Boot Record (MBR)).

Исторически сложилось, что диск может быть разделен на четыре раздела с целью изолировать разные операционные системы, если таковые появятся. Точнее, MBR содержит таблицу, в которой могут быть описаны четыре раздела. Только один из четырех разделов имеет право быть помеченным как активный, что будет означать, что код загрузки должен загрузить в память первый сектор именно этого раздела и передать туда управление.

Решение

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

Как это сделать?

Все современные операционные системы содержат программы разбивки диска на разделы. В DOS и Windows это — FDISK.EXE. Но эти программы не дружат с инородными файловыми системами. То есть с помощью FDISK от Windows Вы сможете создать раздел только с Windows-совместимой файловой системой (FAT16, FAT32), а для Linux нет. Сами файловые системы этими программами не создаются в принципе (необходимо форматирование), но они ставят метку в MBR о типе файловой системы. И FDISK от Windows ставит только метки FAT(16/32). Но этот тип может быть неподдерживаемым устанавливаемой операционной системой. Хотя на FAT16, кажется, устанавливаются все системы. Кроме того с помощью FDISK от Windows можно создать только два раздела «Primary DOS partition» и «Extended DOS partition». Первый из них (primary) — это обычный досовый диск C:. Второй — это контейнер логических дисков. Которые в нем болтаются в виде цепочки подразделов. Хотя не запрещено создавать несколько Primary DOS partition, важно чтобы загружаемым был только один из них. Еще более важно то, что если у Вас уже есть раздел с инородной файловой системой, то FDISK от Windows может его просто не увидеть. И в случает модернизации MBR с помощью этой программы раздел с чужой файловой системой может быть потерян. Несколько лучше дела с программами типа FDISK у других операционных систем. Они имеют представление о FAT(16/32), но часто ничего не знают о какой-нибудь другой экзотике вроде себя. Поэтому пользоваться такими программами, при наличии нескольких разделов с разными несовместимыми файловыми системами, следует очень осторожно. А лучше вообще их не трогать, а воспользоваться универсальными программами разбивки. (Перечислять их не буду, так нашел универсальное средство — FDISK и менеджер загрузки операционных систем в одном флаконе. О котором ниже.)

Отметим еще одно важное обстоятельство. Когда на чистый жесткий диск устанавливается DOS, то при загрузке нет никаких альтернатив в выборе операционных систем. Поэтому загрузчик выглядит весьма примитивно, ему не надо спрашивать у пользователя, какую систему тот хочет загрузить. С желанием иметь сразу несколько систем возникает необходимость заводить программу, позволяющую выбирать систему для загрузки. В случае OS/2 предлагается ставить Boot Manager, который умеет выбирать системы, но он занимает один цилиндр диска и один раздел в таблице разделов. В более общем случае можно поставить System Commander, но эта программа тоже довольно громоздка и, что более критично, она располагается в разделе DOS, что может привести к печальным последствиям в случае вирусов или просто сбоев в файловой системе DOS.

Универсальное средство

Более года назад я нашел в интернете очень мощное универсальное средство, которое сочетает в себе менеджер загрузки со встроенным редактором диска и утилитой типа FDISK — Это SyMon — System Monitor (Монитор Операционных Систем).

Монитор представляет собой программу, позволяющую организовывать на диске до 36 разделов и размещать в них до 20 операционных систем. Как уже было сказано ранее, основным препятствием для подобных улучшений является проблема сохранения совместимости с существующим программным обеспечением. Первое, чего требует совместимость, — это представление всего четырех разделов в таблице, находящейся в MBR. Снятие этого ограничения осуществляется путем организации внутренней таблицы разделов, принадлежащей исключительно монитору и неизвестной другим программам. Поскольку все существующие операционные системы изначально рассчитаны на совместимость с таблицей разделов, находящейся в MBR, то они не занимают более четырех разделов. Учитывая это обстоятельство, можно использовать все разделы из внутренней таблицы монитора, выбирая, однако, для каждой операционной системы любые четыре из них. Таким образом, для монитора описание операционной системы заключается в указании разделов, которые должны быть помещены в MBR и указания активного раздела, с которого надо производить загрузку. Для организации и содержания 36 разделов монитор имеет встроенные мощные средства. Эти средства доступны вам всегда, независимо от того, какими операционными системами вы предпочитаете пользоваться. К этим средствам относятся: редактор разделов и автопоиск разделов. Монитор размещается на нулевой дорожке жесткого диска, которая для современных жестких дисков составляет ~32K. Эта дорожка не используется, так как ее первый блок — это MBR, и поэтому он не может принадлежать какому-либо разделу. Разделы принято выравнивать на границу цилиндров. В случае нулевого цилиндра это невозможно из-за MBR, но жертвовать целым цилиндром слишком накладно, поэтому самый первый раздел на диске начинается с первой дорожки, оставляя нулевую дорожку свободной. Это позволяет разместить на ней монитор без ущерба для уже установленных операционных систем. В соответствии с требованиями совместимости таблица разделов для MBR компонуется всякий раз при старте операционной системы. То есть каждый раз происходит запись первого блока диска. Если в вашем биосе стоит защита от вирусов, то она выдаст предупреждение. Разумеется, такое предупреждение, выдаваемое каждый раз при запуске любой системы, очень быстро вам надоест. Поэтому эту защиту лучше отключить. Это не сильно ослабит иммунитет вашего компьютера, потому что поврежденный вирусом монитор просто не заработает и физически не даст вам загрузить системы, которая могла бы стать жертвой вируса. После старта монитор предоставляет вам меню для выбора операционной системы. Помимо загрузки операционной системы можно выбрать также загрузку с дискеты или другого жесткого диска. На компьютерах с ATX блоком питания можно также выключить питание компьютера, что иногда бывает весьма удобно. Выбор из меню является повседневной операцией каждого пользователя. Но помимо выбора операционной системы можно воспользоваться любым из инструментов монитора. К ним относятся:

  • Редактор разделов (FDISK)
  • Редактор диска
  • Автопоиск разделов
  • Установка пароля на доступ к инструментам

Некоторые замечания

Начинающим мультисистемщикам следует знать, что BIOS видит только первые 8 ГБ Вашего жесткого диска. Для работы с дисками большего объема все современные системы уже не пользуются BIOS’ом, а используют собственные драйвера для работы с дисками. Поэтому ограничение в 8ГБ на них не распространяется. Но следует понимать, что прежде чем система сможет использовать собственный драйвер, она должна как минимум его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS’ом. Это и вызывает ограничения на размещение многих систем за пределами 8ГБ, они не могут оттуда загружаться, но могут читать и писать туда информацию. То есть загрузочный раздел должен находится в пределах первых 8 ГБ. А MS-DOS вообще может запускаться только из первых 2 ГБ!

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

Описываемый, Монитор Операционных Систем, создает собственные дополнительные таблицы. Используя которые, вышеуказанная проблема может быть решена для некоторых операционных систем. На сайте поддержки SyMon , содержится специальная утилита для операционной системы QNX.

Где взять?

SyMon существует в двух версиях Lite и Pro. Различаются наличием редактора диска. В интернете версии весят чуть более 60 и 90 кБ соответственно. Он бесплатен, имеет русский интерфейс и подробную документацию. Закачать его можно по адресу http://symon.ru .

Впечатления от использования

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

P.S. При подготовки этой статьи была использована документация программы.

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

Универсальный инструмент для не универсальных систем

Прежде всего начнём разбираться с наименования GNU GRUB. Эта аббревиатура с английского переводится как "главный унифицированный загрузчик". Его создателем является некоммерческая организация «Проект GNU», которая прославилась в IT-сфере своими свободно распространяемым программным обеспечением. Сам же GRUB по своей сути представляет меню выбора загрузки нужной пользователю ОС из целого перечня поддерживаемых систем:

  • Linux.
  • FreeBSD.
  • Solaris.

При этом GRUB сможет работать даже с Windows. Однако для запуска подобных систем, которые не поддерживаются напрямую данным начальным загрузчиком, есть свои особенные нюансы, которые мы изучим чуть позже во всех деталях и подробностях.

Путь развития технологии

Непрерывно растущая популярность GRUB была основополагающей причиной, побуждающей неуклонно развивать и совершенствовать загрузчик в дальнейшем. Самая первая версия загрузчика, именовавшаяся как GRUB Legacy, до сих пор отлично справляется с задачами унифицированного загрузчика для UNIX-подобных систем. Широкая поддержка серьёзных компаний (наподобие RedHat и Novell) и серверных дистрибутивов обеспечили ей ещё продолжительный срок существования в целом.

Однако даже это обстоятельство совершенно никак не повлияло на дальнейшее совершенствование загрузчика, благодаря чему пользователи получили последнюю на данный момент времени версию GRUB 2. Будучи переписанным с чистой строки, GRUB 2 едва ли обладает хоть чем-то общим с устаревшим GRUB Legacy, кроме самого названия. Сегодня, будучи по умолчанию используемой с версии 9.10 операционной системе Ubuntu, GRUB второй ревизии благодаря своей более совершенной и мощной структуре полностью остановил какую-либо дальнейшую разработку уже и так отлично себя зарекомендовавшей в прошлом Legacy.

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

  • Скриптовая поддержка (циклов, условий, переменных и функций).
  • Графический интерфейс добавляет возможность гибких изменений внешнего вида загрузчика под индивидуальный вкус пользователя (GRUB 2 может быть легко изменён от чёрно-белой таблицы до стильного разноцветного окна).
  • Возможность динамичной подгрузки модулей. Это позволит расширять функционал не на сборочном этапе, а непосредственно во время выполнения.
  • Совместимость с разными архитектурами.
  • Добавлена поддержка загрузки Mac OS.
  • Добавлена стабильная работа с такими файловыми системами, как: FAT16 , FAT32 , NTFS , любая версия ext , XFS и ISO
  • Кроссплатформенный тип установки даст возможность инсталлировать GRUB2 с другой архитектуры
  • Введение безопасного режима в случае возникновения проблемных ситуаций.
  • Исправлены ошибки от старой GRUB Legacy, которые изначально не могли быть пофиксены из-за требований

Все слышали о LILO?

Разумеется, не единым лишь GRUB"ом ограничивается выбор пользователей среди загрузчиков ОС. Подобным аналогом является LILO - начальный загрузчик Linux (LInux LOader), который до сих пор не утрачивает полностью свою актуальность. Однако же в пользу GRUB следует учесть несколько отличительных особенностей, которыми прямой конкурент пока что похвастаться определённо не может:

  • LILO поддерживает лишь 16 конфигураций загрузки, когда GRUB имеет поддержку неограниченного числа таких конфигов.
  • GRUB может загружаться по локальной сети, чего не скажешь о LILO.
  • Наконец, у LILO нет того самого командного интерактивного интерфейса, к удобству которого уже давно привыкли пользователи последней версии GRUB.

Единственной общей особенностью обоих загрузчиков является необходимость каждый раз компилировать все внесённые изменения в меню. Функция автоматического сохранения издавна отсутствовала в фирменном загрузчике Linux. GRUB 2 также не может похвастаться столь удобной фичей. Но даже учитывая этот неудобный для повседневного использования нюанс, LILO по нескольким пунктам проигрывает своему конкуренту, благодаря чему тот получает все более широкое распространение среди домашних компьютеров пользователей.

Установка GRUB: все нюансы и подробности процесса

С самого начала убедитесь, что у вас имеется либо установленная Ubuntu, либо имеется её загрузочный диск (LiveCD). Запустив систему, необходимо вызвать терминал сочетанием клавиш Ctrl+Alt+F2, после чего прописать в нём следующие команды:

Sudo add-apt-repository ppa:cjwatson/grub,

Sudo add-get update && sudo add-get install grub2,

Sudo update-grub2.

И даже если у вас не установлена Ubuntu, но имеется LiveCD, то процедура остаётся одна и та же с одной лишь крохотной разницей. Загрузившись именно с этого выберите опцию "Попробовать Ubuntu" - так вы запустите систему без каких-либо изменений на своём компьютере. После этого продолжайте устанавливать загрузчик GRUB по той же схеме с этапа вызова терминала.

Проверить установленную версию загрузчика можно командой grub-install -v , а также непосредственно при самой загрузке Ubuntu.

Алгоритм запуска GRUB

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

  • код основного загрузчика (446 байт);
  • таблицу разделов с описанием как основных, так и вторичных разделов жёсткого диска (64 байта).

Из-за малого объёма сектора MBR, запуск GRUB укладывается в два условных этапа:

  1. В MBR размещается ссылка к конфигурационному файлу (который может находиться в любом жёстком диске, на усмотрение самого пользователя). Именно по ней и будет определяться весь загрузочный этап, начинающийся на втором этапе.
  2. Их конфигурационного файла учитываются все настройки и данные, необходимые для работы GRUB. Если же на втором этапе конфигурационный файл не был найден, то процесс загрузки будет прекращён и пользователю уже придётся вручную выбирать загрузочную конфигурацию из командной строки.

Такая структура загрузки позволяет быть GRUB"у более широко конфигурируемым и гибким, нежели множество других аналогов, в которых этот процесс упрощён до максимальной компактности.

Наиболее часто используемые консольные команды

Немалый простор рабочих возможностей в консольном режиме последней версии GNU GRUB, настройка и конфигурационные возможности также не оставят равнодушными пользователей. Для того чтобы попасть в него, достаточно нажать клавишу «С» во время отображения загрузочного меню, после чего останется лишь верно ввести нужные вам команды:

Команды Описание Пример ввода в консоль
ls Универсальная команда для работы со списками жёстких дисков и разделов. Может использоваться для вывода содержимого папки. ls /boot/grub
Её использование даст полную информацию абсолютно о любом разделе. При этом будет указан тип файловой системы на нём, его метка, UUID, а также дата внесения последних изменений.
cat Вывод информации о содержимом конкретно указанного файла. cat /путь/имя_файла
linux Аналог kernel-команды GRUB из старой-доброй версии Legacy, позволяющей загружать указанное ядро Linux.

linux файл_ядра

опция1=значение

опция2 опция3

chainloader Передача контроля загрузки другому загрузчику по цепочке. Загрузчик будет искаться исключительно в разделе, который задан в качестве root (разумеется, с указанием конкретного исполнительного файла).

chainloader /путь/ имя_файла

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

*,* - номер диска и номер раздела на нем соответственно

set Чаще всего благодаря своей стабильности и работоспособности используется для переназначения root-раздела на диске.

set root= (hd*,*)

*,* - номер диска и номер раздела на нем соответственно

search

Команда поиска раздела UUID, метке или же по конкретно заданному файлу. Для задания поисковых параметров используются следующие ключи:

  • u (или --fs-uuid) - поиск раздела по UUID;
  • l (или --label) - поиск по метке раздела;
  • f (или --file) - поиск по определенному файлу;
  • n (или --no-floppy) - пропуск при проверке флоппи-дисковода;
  • s (или --set) - установить найденный раздел в качестве значения заданной переменной.

Команда пригодится в случае, если нумерация дисков и разделов "полетит", из-за чего команда set root либо приведёт в никуда, либо в не тот раздел не того диска.

search -u uuid_нужного_раздела

search -l метка раздела

search -f /путь/имя файла

lsfonts Отображение перечня загруженных на настоящий момент шрифтов. lsfonts
help Используется для вывода всего списка доступных help
Либо для вывода команд, начинающихся на определённую комбинацию символов.

help s - вывод справки на все команды, начинающиеся на s.

help set - отображение справки о команде set.

terminal_output.console Переключение на чёрно-белую цветовую гамму отображения. terminal_output.console
background_image

Изменение фонового изображения в реальном времени. Помогает лишь в подборе такого варианта оформления шрифтов, чтобы те были различимы на заданном фоне.

Обратите внимание: команда не изменяет настроек оформления - изображение остаётся на фоне только лишь на текущем сеансе до следующего выключения.

background_image /путь/имя_файла

boot Загрузить компьютер. boot
reboot Перезагрузить компьютер. reboot
Выключить компьютер. halt

Послеустановочный GRUB: настройка и полезный в работе софт

Основным конфигурационным файлом в GRUB2, в отличие от предыдущей версии Legacy, является не /boot/grub/menu.lst , а уже /boot/grub/grub.cfg. Однако напрямую его редактировать бессмысленно - он будете генерироваться с каждым сохранённым изменением в файле настроек /etc/default/grub и в директории скриптов /etc/grub.d.

В /etc/default/grub настройка в основном ограничена изменением стандартного пункта загрузки и/или времени показа меню:

  • За первый пункт изменений отвечает параметр GRUB_DEFAULT , значением которого обозначается номер пункта в меню загрузки. Выбирая какой-либо другой пункт, пользователь должен знать его очерёдность из общего списка (для этого нужно просмотреть содержимое /boot/grub/grub.cfg и найти по счёту нужную запись). При этом не стоит забывать правила нумерации: первому пункту присваивается значение 0, второму - 1, третьему - 2 и так далее.
  • За задержку отображения меню загрузки отвечает параметр GRUB_TIMEOUT , чьё присвоенное значение в кавычках обозначает количество секунд, в течение которых эта заставка появится. В редактировании этого параметра есть одна хитрая особенность: выставив значение "-1", заставка будет висеть ровно до тех пор, пока пользователь не выберет какой-либо пункт.

Набор скриптов в /etc/grub.d находят на компьютере все установленные системы и ядра, формируя загрузочное меню в grub.cfg. За поиск ядер и других ОС соответственно отвечают два основных: 10_linux и 30_os-prober. Файл 40_custom позволяет изменить GRUB путём добавления собственных пунктов загрузки, что полезно для работы с особыми типами запуска системы (обратите внимание, что при любых изменениях он должен заканчиваться пустой строкой, иначе последний пункт загрузки из всех предложенных банально не будет отображён).

Однако ещё более простой способ отредактировать GRUB в системе Ubuntu - утилита Grub-Customizer. Благодаря своей простоте и интуитивно понятному интерфейсу, это наилучший вариант для настройки загрузчика, более всего подходящий неопытным новичкам. Для установки запускаем терминал (Ctrl+Alt+T), затем поочерёдно вводим в нём следующие команды:

Sudo add-apt-repository ppa:danielrichter2007/grub-customizer,

Sudo add-get update,

Sudo add-get install grub-customizer.

И хоть перевод программы Grub-Customizer оставляет желать наилучшего исполнения, разобраться в ней очень легко:

  • List configuration - настройки меню при загрузке системы. Тут осуществляется изменение очерёдность его пунктов.
  • Основные настройки - выбор системы, загружаемой по умолчанию, а также определение времени ожидания.
  • Внешний вид - редактирование внешнего оформления загрузочного меню.

Помимо всего разнообразия настроек, пользователю непременно стоит обратить внимание и на отлично зарекомендовавший себя софт для работы с GRUB, настройка и диагностика которого станет существенно комфортнее:

  • Super Grub Disk - простой и удобный инструмент для быстрого восстановления загрузчика. При этом умеет работать не только лишь с GRUB и LILO, но даже и с самой Windows. Запускается с CD, флешки или же дискеты.
  • GParted - редактор разделов дисковых разделов, запускающийся непосредственно с CD. С её помощью можно проводить такие операции с разделами и файловыми системами на них, как: создание, удаление, изменение размера, проверка, перемещение и копирование.
  • SystemRescueCD - дистрибутив Linux, специальным образом предназначенный для аварийного восстановления.
  • TestDisk - утилита, позволяющая диагностировать и восстанавливать как отдельные разделы, так и загрузочные диски целиком.

Как загрузчик управится с ОС Windows?

Напрямую, к сожалению, GRUB никоим образом не может загружать Windows x86 (64-битная версия также не исключение), из-за чего приходится создавать соответствующий цепной механизм запуска. Для этого в конфигурационном файле grub.cfg необходимо добавить несколько строк определённых команд:

Title Windows,

Rootnoverify (hd*,*),

Chainloader +1,

Пример и подробное описание последней как раз было приведено в таблице консольных команд. Теперь же настал тот самый практичный случай, когда она пригодится в работе. Однако до неё имеется ещё пара не менее важных для загрузки Windows строк:

  • rootnoverify (hd*,*) - тот же самый аналог set root . Она информирует GRUB о местоположении раздела, на котором находится следующая часть загрузочного кода, однако не монтирует его (по той ясной причине, что для GRUB это сделать невозможно). Обратите в очередной раз внимание, что часть (hd*,*) - это номер диска и номер раздела соответственно, на котором установлена ОС Windows.
  • makeactive - команда предоставляет указанному корневому разделу статус загрузочного.

Теперь та самая команда chainloader +1, которое передаёт весь дальнейший контроль загрузки непосредственно загрузчику Windows.

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

Случается и так, что на жёстком диске установлена не одна, а две или даже больше версий Windows. И тогда осуществить стабильный запуск без дополнительных команд скрытия/показа (hide/unhide ) разделов просто нереально. Суть такова, что если в конфигурационном файле GRUB прописано скрытие какого-либо раздела накопителя, то Windows банально не сможет его прочесть. А если раздел видимый, то с него соответственно можно будет загрузиться.

При наличии нескольких операционных систем сначала определитесь, какой именно экземпляр вы желаете загрузить, затем проверьте её точное расположение - необходимо знать, на каком разделе жёсткого диска она установлена. К примеру, имеются две различные версии Windows, расположенных соответственно на первом и втором разделах одного накопителя, и пользователю нужно загрузить именно вторую. Для этого в файле menu.lst нужно внести следующие изменения:

Title Windows,

Unhide (hd0,1),

Rootnoverify (hd0,1),

Chainloader +1,

В сравнении с предыдущим образцом кода были добавлены команды hide и unhide , благодаря которым пользователь сможет загрузить нужную операционную систему с заданного раздела жёсткого диска.

Переустановка GRUB на случай критических неполадок

Даже в случае технических неполадок восстановить GRUB совершенно несложная задача. Для начала загружаем установочный LiveCD, открываем терминал сочетанием клавиш CTRL +ALT +T.

После этого поочерёдно вводим команды:

  • sudo grub-install /dev/sda - установка GRUB непосредственно в MBR (sda - загрузочный диск);
  • sudo update-grub - поиск других загрузочных записей на жестком диске (к примеру, Windows).

Теперь остаётся лишь перезагрузить компьютер и убедиться в полной работоспособности переустановленного загрузчика.

Вопрос о защите от зацикливания перезагрузки

Необходимость в подобной интегрированной в загрузчик GRUB системе защиты появляется тогда, когда размеры логов, расположенных в каталоге /var/log, из-за неконтролируемой записи информации в них растут до непозволительных объёмов. В нормально работающей системе предусмотрены специальные сервисы, архивирующие и подчищающие эти логи в автоматическом режиме. Таким образом, в большинстве случаев пользователю абсолютно не нужно тратить время, контролируя их объём.

Однако эти же службы запускаются лишь после загрузки операционной системы. До этого размеры лог-файлов абсолютно ничем не мониторятся, из-за чего в случае непредвиденного падения системы и дальнейших перезагрузок логи будут только лишь расти в объёме. И этот неконтролируемый их рост будет продолжаться ровно столько, сколько длятся перезагрузки из-за сбоя в системе. Впоследствии это всё может привести к полному заполнению того раздела, на котором расположен каталог /var/log, что чревато зависанием системы наглухо и невозможности запуска даже режима восстановления.

Именно от этого катастрофического положения и спасает интегрированная в GRUB система защиты от циклических перезагрузок, вывода "зависшее" меню GRUB, ожидающее явного вмешательства пользователя. Сама защита ориентируется на значение переменной recordfail, прописанного в скрипте /boot/grub/grub.cfg. В ходе каждой загрузки она устанавливается как recordfail=1 , а на финальной загрузочной стадии сбрасывается до recordfail=0 . И если именно такого сброса не произошло, то автоматическая загрузка полностью предотвращается и активируется та самая защита GRUB.

Для этого в /etc/defaul/grub находим переменную GRUB_RECORDFAIL_TIMEOUT и присваиваем ей значение в то количество секунд, в течение которых меню GRUB будет ждать вмешательства пользователя в случае отсутствия сброса recordfail с 1 до 0. После чего сохраняем изменения командой sudo update-grub , отключив тем самым защиту от зацикленной перезагрузки.

Кому это может быть полезно? Только для станций и серверов, в которых отсутствует клавиатура для ввода-вывода информации. Без неё, в случае подобных проблем, загрузка системы вообще бывает невозможна. Случаи зацикливания загрузки не так уж распространены и возникают в основном либо из-за проблем с питанием, либо из-за неполадок в программном обеспечении.

Деинсталляция GRUB и возвращение к Windows: быстро, просто и безболезненно

В случае если возникнет вопрос "Как удалить GRUB и оставить загрузчик другой операционной системы?", то в первую очередь пользователю потребуется её установочный диск/флешка. Разберём всё на конкретном простом примере: пользователь удаляет со своего компьютера Linux, оставляя в итоге одну лишь Windows, но при этом не может её загрузить ввиду ошибки Grub error . Для полного решения проблемы необходимо восстановить загрузчик Windows x86/64 bit:

  1. Загружаемся с установочного накопителя, предварительно выставив в его на первом приоритете при загрузке в BIOS
  2. Загрузившись с установочного носителя, выбираем раздел восстановления системы.
  3. Из появившегося списка инструментов выбираем командную строку, в которой пропишем поочерёдно следующие команды:
  • BOOTREC.EXE /FixBoot.
  • BOOTREC.EXE /FixMbr.

Так как удалить GRUB можно в течение нескольких действий, то после всех успешно проведённых операций перезагружаем компьютер и без каких-либо проблем работаем уже в Windows-системе.