Загрузчик операционных систем: (multiboot system) — Windows, Linux

Содержание

Загрузчик нескольких операционных систем

Опытные пользователи Windows хорошо знакомы с программой EasyBCD — одним из лучших менеджеров загрузки операционных систем. На днях это приложение обновилось , теперь поддерживает grub2, EFI и Windows 8, обзавелось мультиязычным интерфейсом. Для тех кому EasyBCD пользоваться не приходилось поясним, что эта программа позволяет легко создавать загрузочное меню и загружать несколько операционных систем семейства Windows, GNU/Linux, MacOS X.

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

С помощью EasyBCD можно запустить не только ОС, уже установленную на жёстком диске компьютера, но и размещённую в образе CD/DVD-диска или дискеты, а также воспользоваться функцией загрузки по локальной сети.

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

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

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

Как отредактировать процесс загрузки нескольких операционных систем Windows, установленных на одном компьютере – об этом подробнее ниже.

Итак, имеем в нашем случае компьютер с установленными версиями Windows 7 и 8.1. При включении компьютера видим окно загрузчика с перечнем систем для выбора.

Каждый раз при загрузке компьютера попасть в нужную систему можно, сделав соответствующий выбор. В противном случае по истечении определённого времени – а по умолчанию это 30 секунд – автоматически будет загружена Windows, стоящая в списке первой. В нашем случае это Windows 7, поскольку она установлена на компьютер последней, и именно её загрузчик, как видим, встречает нас после запуска компьютера.

Что же, изменим это. Настроим автоматическую загрузку основной системы – Windows 8.1. Для этого, естественно, необходимо войти в неё.

Нам нужен раздел настроек «Система», и в Windows 8.1 в него можно попасть с помощью контекстного меню на кнопке «Пуск».

В окошке системы выбираем дополнительные параметры.

Попасть в раздел настроек «Система» в Windows 7 можно также с помощью контекстного меню, но вызванном на значке «Компьютер» в проводнике. В числе команд необходимо выбрать «Свойства».

В Windows 7 также выбираем дополнительные параметры.

Дальнейшие шаги в обоих системах идентичны.

В появившемся окне свойств системы во вкладке «Дополнительно» жмём кнопку параметров в последнем разделе «Загрузка и восстановление».

Теперь можно приступать к редактированию загрузки нескольких систем. Меняем загружаемую по умолчанию Windows из числа вариантов в выпадающем списке. В нашем случае предустановленную Windows 7 меняем на Windows 8.1.

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

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

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

Если вторая операционная система когда-то понадобится, войти в неё можно будет, сделав эту опцию снова активной.

После внесения изменений жмём «Ок» внизу этого окна, а также внизу окна свойств системы.

Всё – список загрузки операционных систем отредактирован.

Выше мы рассмотрели редактирование загрузки существующих операционных систем. Но нередко при запуске компьютера можем увидеть перечень операционных систем, которых уже на компьютере нет . Это естественное развитие событий после того, как вторая операционная система была удалена путём обычного форматирования раздела диска или уничтожения системных файлов вручную, но при этом запись о возможности её загрузки в конфигурации системы не убиралась. Загрузчик также может отображать вариант запуска несуществующей основной Windows после того, как система была переустановлена. Это, кстати, не основная, но одна из причин, почему системщики советуют осуществлять так называемую чистую установку Windows – без сохранения файлов предыдущей системы и с форматированием раздела диска.

В основной системе вызываем команду «Выполнить». В Windows 8.1 быстрый доступ к ней реализован в контекстном меню на кнопке «Пуск».

Нам нужен раздел конфигурации системы. Вводим в поле команды значение:

msconfig

Жмём «Ок».

В Windows 7 запустить окно конфигурации системы можно проще — прописав ключевой запрос в поисковом поле меню «Пуск».

Появится окно конфигурации системы, переходим на вкладку «Загрузка». Выбираем запись о загрузке несуществующей системы и удаляем её .

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

Внесённые изменения сохраняем кнопкой «Применить». После нажатия «Ок» система предложит перезагрузиться.

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

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

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

Установка Windows Xp + Windows 7

Для установки такой связки операционных систем нам понадобится специальный софт в лице EasyBCD. Если просто установить эти две операционные системы, то будет загружаться именно та, которую Вы поставили последней. Это происходит за счёт того, что Windows просто-напросто «затирает» загрузчики всех операционных систем, которые мирно «жили» до неё и оставляет лишь один для «себя любимой». Поэтому для начала мы качаем программку Easy BCD ( скачать ) и оставляем инсталлятор на каком-нибудь нейтральном файловом диске, или же её можно скачать после установки одной из версий Windows. Итак, приступаем к установке первой версии Windows (7 или ХP, неважно в какой последовательности). Когда первая версия Windows установлена, смело ставим вторую. Но, устанавливать ее, желательно на отдельный раздел. После установки второй ОС Windows , мы загружаемся и устанавливаем в систему ранее скачанную программку EasyBCD.

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

Когда Вы запустите программу EasyBCD, то увидите перед собой вот такое вот окно (рис.1):

Рис.1

Как Вы видите у нас имеется загрузчик Windows 7 , который определился по умолчанию, так как эта система была установлена второй и является текущей. Теперь нам необходимо добавить новую запись в загрузчик для того, чтобы во время включения копьютера, мы смогли увидеть строку с Windows XP и соответственно смогли загрузиться из-под неё. Для этого нажимаем на панели слева «Add New Entry», затем выбираем в пункте «Type» необходимую операционную систему (в данном случае это Windows XP), и жмём, уже справа, Add Entry.

Рис.2

Всё, запись в загрузчик добавлена, и когда Вы нажмёте на пункт View Settings, то увидите, что у Вас имеется уже две записи в загрузчике: Windows 7 и Windows XP. (рис.3)

Рис.3

Теперь можно смело перезагружать компьютер и загружаться из-под желаемой операционной системы.

Альтернатива при установке Linux + Windows (Xp, 7)

Такая «связка» встречается довольно часто, так как оторваться от «форточек» и ощутить вкус уверенного в себе «пингвина», желают многие. При таком варианте установки можно обойтись и без стороннего программного обеспечения, а воспользоваться стандартными средствами именно Linux. Для этого мы сначала устанавливаем Windows, старым добрым дедовским способом и без всяких хитромудростей. Затем, подходит чёред Linux, его мы устанавливаем вторым, опять же по причине удаления Windows всех «инородных» загрузчиков. Сразу хочу отметить тот факт, что в процессе установки Linux, перед Вами появится предложение «использовать весь диск», этого делать НЕ нужно, если Вам конечно дороги ваши данные. Необходимо же «откусить» отдельный раздел. После окончания установки Linux создаст загрузочное меню, где Вы сможете выбрать любую из операционных систем для загрузки. Но никто не лишает Вас права установки этих двух операционных систем с помощью EasyBCD.

Установка Linux + Windows + Win 7 + Другие системы

При таком варианте наиболее удобным методом будет являться, опять же EasyBCD. Только в данном случае нам необходимо создать запись в Add New Entry, для каждой из операционных систем, по примеру создания записи для Windows XP. На различных вкладках программы Вы можете перейти к созданию записей загрузчика, для Linux и Mac Os. (рис.4). Также при желании можно добавить и более старые операционные системы Windows: 95,98,NT и т.д.

Рис.4

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

Устанавливаем несколько операционных систем (EasyBCD)

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

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

Установка Windows Xp + Windows 7

Для установки такой связки операционных систем нам понадобится специальный софт в лице EasyBCD. Если просто установить эти две операционные системы, то будет загружаться именно та, которую Вы поставили последней. Это происходит за счёт того, что Windows просто-напросто «затирает» загрузчики всех операционных систем, которые мирно «жили» до неё и оставляет лишь один для «себя любимой». Поэтому для начала мы качаем программку Easy BCD (скачать) и оставляем инсталлятор на каком-нибудь нейтральном файловом диске, или же её можно скачать после установки одной из версий Windows. Итак, приступаем к установке первой версии Windows (7 или ХP, неважно в какой последовательности). Когда первая версия Windows установлена, смело ставим вторую. Но, устанавливать ее, желательно на отдельный раздел. После установки второй ОС Windows, мы загружаемся и устанавливаем в систему ранее скачанную программку EasyBCD.

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

Когда Вы запустите программу EasyBCD, то увидите перед собой вот такое вот окно (рис.1):

Рис.1

Как Вы видите у нас имеется загрузчик Windows 7, который определился по умолчанию, так как эта система была установлена второй и является текущей. Теперь нам необходимо добавить новую запись в загрузчик для того, чтобы во время включения копьютера, мы смогли увидеть строку с Windows XP и соответственно смогли загрузиться из-под неё. Для этого нажимаем на панели слева «Add New Entry», затем выбираем в пункте «Type» необходимую операционную систему (в данном случае это Windows XP), и жмём, уже справа, Add Entry.

Рис.2

Всё, запись в загрузчик добавлена, и когда Вы нажмёте на пункт View Settings, то увидите, что у Вас имеется уже две записи в загрузчике: Windows 7 и Windows XP. (рис.3)

Рис.3

Теперь можно смело перезагружать компьютер и загружаться из-под желаемой операционной системы.

Альтернатива при установке Linux + Windows (Xp, 7)

Такая «связка» встречается довольно часто, так как оторваться от «форточек» и ощутить вкус уверенного в себе «пингвина», желают многие. При таком варианте установки можно обойтись и без стороннего программного обеспечения, а воспользоваться стандартными средствами именно Linux. Для этого мы сначала устанавливаем Windows, старым добрым дедовским способом и без всяких хитромудростей. Затем, подходит чёред Linux, его мы устанавливаем вторым, опять же по причине удаления Windows всех «инородных» загрузчиков. Сразу хочу отметить тот факт, что в процессе установки Linux, перед Вами появится предложение «использовать весь диск», этого делать НЕ нужно, если Вам конечно дороги ваши данные. Необходимо же «откусить» отдельный раздел. После окончания установки Linux создаст загрузочное меню, где Вы сможете выбрать любую из операционных систем для загрузки. Но никто не лишает Вас права установки этих двух операционных систем с помощью EasyBCD.

Установка Linux + Windows + Win 7 + Другие системы

При таком варианте наиболее удобным методом будет являться, опять же EasyBCD. Только в данном случае нам необходимо создать запись в Add New Entry, для каждой из операционных систем, по примеру создания записи для Windows XP. На различных вкладках программы Вы можете перейти к созданию записей загрузчика, для Linux и Mac Os. (рис.4). Также при желании можно добавить и более старые операционные системы Windows: 95,98,NT и т.д.

Рис.4

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


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

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

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

Наиболее важный момент всей этой процедуры — это, конечно же, непосредственная загрузка в оперативную память ядра операционной системы. После того, как отработал код загрузчика BIOS, управление передается коду из загрузочного сектора (boot sector) активного раздела жесткого диска, хотя в ряде случаев загрузка операционной системы может производиться исключительно средствами кода, записанного в BIOS. Вместе с тем, само ядро загружаемой системы не обязательно берется загрузчиком с жесткого диска — существуют и другие способы, например, получение кода ядра по сети или через внешние порты компьютера (что особенно характерно для стадии отладки разрабатываемого ядра). Часто используется многоуровневая загрузка, когда процесс работы загрузчика плавно перетекает в процесс работы самого ядра операционной системы путем последовательного вызова нескольких загружающих друг друга программ.

В наше время, в силу существования множества разных операционных систем, имеется и большое количество их загрузчиков. Самый распространенный — это, пожалуй, NTLDR, загрузчик систем семейства Windows NT до Windows XP включительно. В новых версиях Windows применяется загрузчик Windows Boot Manager, пришедший на смену NTLDR. Наиболее распространенными загрузчиками в мире Linux являются LILO (LInux LOader) и GRUB (Grand Unified Bootloader). Загрузчик Mac OS X называется BootX, загрузчик Linux и Solaris для машин с архитектурой SPARC имеет название SILO (SPARC Improved bootLOader). Существует также ряд достаточно известных в узких кругах загрузчиков для встраиваемых операционных систем — Das U-Boot, uMon, RedBoot, SyMon.

Вадим СТАНКЕВИЧ,
[email protected]

Лучшие загрузчики Linux — Losst

После того как вы включаете компьютер, как только будет успешно завершено тестирование всего оборудования POST (Power On Self Test) BIOS попытается обнаружить диск с загрузчиком и прочитать дальнейшие инструкции из таблицы разделов MBR или GPT.

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

Содержание статьи:

Что такое загрузчик?

Загрузчик — это небольшая программа, которая помогает загрузить операционную систему в память. Без загрузчика это сделать намного сложнее.

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

Лучшие загрузчики для Linux

1. Grub

Загрузчик Grub самый популярный на данный момент. Он разработан на основе загрузчика созданного Эриком Стефаном Броленом. Grub может загружать практически все операционные системы, в том числе Linux, Windows и даже MacOS. Загрузчик поддерживает установку пароля, редактирование загрузочных записей во время работы, а синтаксис конфигурационного файла очень похож на Grub. Кроме того Grub поддерживает UEFI системы. Операционные системы в меню можно организовать в подпапки, можно загружаться с iso диска или даже по сети.

2. Burg

Загрузчик Burg основан на коде Grub и расшифровывается как Brand-new Unified loadeR from Grub. Ранее он считался самым новым и самым красивым загрузчиком. Он поддерживал различные темы и стили оформления, которые делали меню загрузки очень красивым. Но потом в Grub тоже была добавлена поддержка тем, а разработка Grub свернулась. На данный момент этот загрузчик устарел, он даже не поддерживает установку на раздел с Ext4. А ещё не известно поддерживает ли он UEFI, так как он давно не обновлялся, с этим тоже могут возникнуть проблемы.

 

2. LILO

 

Lilo или Linux Loader — это простой, но уже устаревший загрузчик для Linux и других операционных систем. Разработка загрузчика была прекращена в 2015 году. Он не поддерживает такие современные файловые системы, как Btrfs, не поддерживает таблицу разделов GPT, а следовательно и UEFI. Кроме того, в нём нет текстовой консоли для восстановления системы и не поддерживается загрузка по сети. Одно из преимуществ этого загрузчика — это простой файл конфигурации, поэтому он иногда ещё используется для загрузочных ISO образов, хотя там тоже намного популярнее syslinux.

4. Syslinux

Syslinux — это облегченный загрузчик, который используется чаще всего для загрузки с внешних носителей, LiveCD или по сети. Он поддерживает файловые системы FAT, Ext2/3/4 и Btrfs. Его не следует использовать как основной загрузчик для вашей системы, только для ISO образов, поскольку он может загружать только одну операционную систему, которая находится на том же разделе, где расположен загрузчик.

5. Systemd-boot

Это простой загрузчик от systemd, который умеет работать только с образами UEFI. Может использоваться для загрузки системы без Grub. Здесь нет никаких особенных функций, это просто меню, позволяющее выбрать необходимый EFI образ для загрузки. Например, образ ядра Linux или EFI Shell.

6. rEFInd

Это не совсем загрузчик в привычном понимании, а скорее менеджер загрузки, который указывает системе UEFI какую операционную систему стоит запустить, а также может попросить UEFI запустить ядро Linux из папки /boot. Таким образом этот загрузчик не делает никаких действий по загрузке, а просто обращается к UEFI. Зато у него красивый и современный интерфейс. Теперь это самый красивый загрузчик Linux, вместо Burg.

Выводы

Мы рассмотрели лучшие загрузчики Linux. Загрузчик позволяет управлять несколькими операционными системами на одном компьютере и выбирать какую из них вы хотите загрузить в определенный момент. Без него ваш компьютер не сможет загрузить ядро и другие файлы операционной системы.

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

Загрузчик операционных систем GRUB. Устанавливаем несколько операционных систем (EasyBCD)

Нередко случается, что любимая игра или программа отказывается запускаться на установленной операционной системе, а переустанавливать и работать в другой нет никакого желания. Как быть? Можно установить на ПК две операционных системы одновременно и спокойно выбирать какую именно из них загружать. Начинающие пользователи могут испугаться и отказаться от этого способа, однако заверим, что при правильных действиях установка нескольких ОС на один жесткий диск абсолютно безопасна и проста. Существует масса программ, позволяющих выбирать какую систему загружать, и с какими параметрами. Вы сможете установить Windows XP и Windows Vista на один ПК, и наслаждаться спокойной работой в нужной ОС.

Существует несколько способов установить несколько операционных систем на один ПК , однако все они имеют свои плюсы и минусы. Наиболее безопасный и простой — это установка ОС через эмулятор виртуального ПК (например

VMware Workstation или Virtual PC ). Однако этот способ более медлителен в использовании и не подойдет для частой работы в той же Vista. Суть способа в том, что на ПК с установленной операционной системой устанавливается специальная программа-эмулятор компьютера, в которой устанавливается еще одна ОС. Проблема заключается в том, что все принципы и блоки реального ПК эмулируются, тем самым давая лишнюю нагрузку на центральный процессор, давая ему лишнюю работу. Используя такой метод для установки нескольких ОС, вы не сможете насладиться полноценными играми и программами.

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

Итак, рассмотрим, в чем сложность установки нескольких ОС на один ПК. Дело в том, что каждая операционная система записывает на жесткий диск специальную загрузочную информацию, которая может быть утеряна при установке второй ОС на один и тот же компьютер. Также, могут быть утеряны системные папки и файлы, такие как Program Files и Windows в операционных системах Microsoft Windows.

Еще одним нюансом является тип файловой системы. К примеру Windows использует файловую систему NTFS, в то время как Linux — свой собственный формат разделов Ext. Поэтому, при установке нескольких ОС на один ПК может возникнуть проблема доступа к разделам жесткого диска. Поэтому, настоятельно рекомендуем начинающим пользователям ПК использовать специальный загрузчик, например Acronis OS Selector .

OS Selector — давно проверенный и очень надежный менеджер загрузок ОС, поэтому настоятельно рекомендуем скачать его перед установкой нескольких ОС.

Как установить несколько ОС на ПК

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

Первым делом, нужно определиться какие ОС мы собираемся устанавливать на компьютер и в какой последовательности. Например, если вам нужно установить Windows 98 и Windows XP на один копьютер, сначала нужно устанавливать Windows 98. После этого ставим XP в другой раздел и все. Если установить операционные системы в обратной последовательности, Windows 98 перезапишет загрузочную область XP.

Инструкция по установке нескольких ОС на ПК

1. Устанавливаем нужную операционную систему на ПК, устанавливаем необходимые драйвера.

2. Устанавливаем Acronis OS Selecter , с помощью встроенного Мастера установки.

Скачать Acrinis OS Selecter

Он ничем не отличается от обычных Мастеров, поэтому смело жмите

Далее (Next) , принимайте лицензионное соглашение. После установки Acronis OS Se lecter предложит создать аварийную дискету или компакт-диск. Если есть возможность, сделайте их, так как в случае возникновения неполадок они понадобятся для восстановления загрузочной области диска. Перезагружаем компьютер.

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

3. Теперь нам нужно установить другую операционную систему и восстановить загрузчик. Предположим, что мы будем устанавливать Windows 98 (именно в такой последовательности, чтобы показать, что загрузчик XP будет перезаписан и показать как восстанавливать загрузчик Acronis OS Selector .

Делаем все как всегда — вставляем установочный диск, устанавливаем Windows 98, устанавливаем драйвера.

4. В зависимости от программы-загрузчика, восстановление загрузочной области и вариантов загрузки ОС восстанавливается разными способами. В случае с Acronis OS Selector 8 , загрузка менеджера восстанавливается автоматически, пользователю следует лишь выбрать нужную ОС и продолжать работу. Некоторые менеджеры-загрузки нуждаются в загрузке со специальной дискеты, либо переустановки программы. Если у вас не запускается Acronis OS Selector, а сразу загружается Windows 98, установите программу и перезагрузите компьютер.

Таким методом, вы сможете установить несколько операционных систем на один компьютер, не затерев их. Этот способ работает как для систем Windows, так и Linux, поэтому никто не останется за бортом.

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

Давным-давно, когда я был маленьким работал в институтской лаборатории на большом компьютере СМ-3 (что-то вроде знаменитой PDP-11), bootstrapping (загрузка) ЭВМ выглядела так. В фотосчитыватель заправлялась коротенькая бумажная перфолента с пробитой на ней программой начальной загрузки, запускался процесс считывания, а дальше … как повезет.

Дело в том, что бумажная ленточка постепенно изнашивалась, начинала плохо читаться, и ЭВМ могла с первого раза «не завестись». В этом случае процесс нужно было повторять, порой несколько раз, до победного конца. Когда ленточка окончательно выходила из строя и машина никак не хотела «оживать», приходилось временно вводить программу начальной загрузки вручную при помощи расположенных на передней панели переключателей. Тут, главное, было не торопиться и не делать ошибок.

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

Основные определения и этапы загрузки операционной системы

Включение компьютера, POST, BootMonitor

Начальный этап загрузки операционной системы после включения компьютера начинается в BIOS (Basic Input/Output System — базовая система ввода-вывода). В настройках BIOS мы указываем загрузочное устройство, или ряд загрузочных устройств в порядке их приоритета. Возможны различные варианты загрузки и их комбинации: с жесткого диска, CD/DVD – диска, USB-flash и другие.

Сразу после прохождения POST (Power-On Self-Test — самотестирование после включения) BIOS компьютера начнет поочередно перебирать указанные загрузочные устройства до тех пор, пока на одном из них не найдет подходящую специальную запись, в которой содержится информация о дальнейших действиях.

Загрузчик 1-го уровня. Master Boot Record

Master Boot Record — главная загрузочная запись, расположена в первых физических секторах загрузочных устройств хранения. Она содержит таблицу разделов (Partition Table) и исполняемый код.

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

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

Загрузчик 2-го уровня. Partition Boot Sector

Следующим этапом загрузки компьютера является передача управления исполняемому коду, записанному в PBS (Partition Boot Sector — загрузочный сектор активного раздела). PBS расположен в первом секторе (секторах) соответствующего раздела диска. В коде PBS прописано имя файла загрузчика операционной системы, которому и передается управление на этом этапе.

Начальный этап загрузки операционной системы. Менеджер загрузки ОС

Первоначально в Linux загрузчиком являлся LILO (Linux Loader). В силу имевшихся в нем недостатков, главным из которых была неспособность понимать используемые в Linux файловые системы, позднее начал использоваться загрузчик GRUB (GRand Unified Bootloader) в котором недостатки LILO были исправлены.

Если речь идет о версиях Windows до Vista, например, Windows XP, то будет загружен Ntldr. Он, в свою очередь, считывает информацию из текстового файла Boot.ini, в котором записана информация об установленных операционных системах.

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

Завершающим этапом загрузки операционной системы является загрузка ядра ОС и передача ему управления.

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

Меня попросили помочь одному человеку купить и привести в порядок компьютер для дома. Товарищ этот на тот момент времени только-только вышел на пенсию, а до этого работал в должности начальника и компьютер видел, по большей части, издалека, на столе у своей секретарши. После выхода на пенсию у него появилось время и желание компьютер освоить. Ну что, по-моему, замечательно. Компьютер мы ему подобрали недорогой, но добротный и с хорошим, по тем временам, монитором. Я поставил и настроил кое-какие программы, показал как ими пользоваться. Господин обзавелся книжкой из серии «Что-то там для чайников » и мы расстались абсолютно довольные друг другом.

Примерно через неделю мой подопечный позвонил мне по телефону и чуть не плача сообщил, что все пропало и компьютер больше не работает. Благо, запираться он не стал и честно рассказал, как было дело. А дело было так. Товарищ полез исследовать содержимое своего компьютера и нашел в корне диска С:\ несколько подозрительных и «ненужных», на его взгляд, файлов. Он решил освободить место и файлики эти попросту удалил. Думаю, что все уже догадались, что это были boot.ini, ntldr, ntdetect и др. Поправить ситуацию сложности не представляло, разве что пришлось ехать к нему еще раз.

К слову сказать, для того, чтобы получить проблемы с загрузкой Windows XP, можно было и ничего не стирать, а слегка «подправить», например, boot.ini.

Видимо Microsoft как то узнала об этом случае и в следующей версии своей ОС решила припрятать файлы загрузчика получше.

Особенности загрузки операционных систем Windows Vista / 7 / 8

В Windows Vista или Windows 7 / 8 диспетчер загрузки называется Bootmgr. Он читает список установленных операционных систем не из простого текстового файла, коим является boot.ini, а из системного хранилища BCD (Boot Configuration Data), доступ к которому осуществляется посредством специальной утилиты bcdedit.exe .

Но это еще не все. Откроем “Управление компьютером” –> “Управление дисками” >

Процесс стандартной инсталляции операционной системы Windows Vista / 7 / 8 создает в начале диска дополнительный раздел «Зарезервировано системой». Ему не присваивается буква диска, благодаря чему, если не сделать дополнительных шагов, и сам раздел и его содержимое будут скрыты от пользователя. Этот основной раздел имеет статус «Системный» и «Активный» и, следовательно, удалить его тоже нельзя.

В Windows 7 размер такого раздела составляет 100 МБ, из которых занято около 30 МБ, в Windows 8 – уже 350 МБ, причем занято из них 105 МБ. Такая разница объясняется тем, что в Windows 8 на этот раздел перенесена папка “Recovery”.

Посмотрим содержимое раздела «Зарезервировано системой». Для этого назначим ему букву диска, например, «W» в “Управление дисками”. Дополнительно откроем «Панель управления» –> «Параметры папок» и на вкладке «Вид» снимем галку с «Скрывать защищенные системные файлы» и поставим отметку на «Показывать скрытые файлы, папки и диски».

Если в системе установлен файловый менеджер FAR Manager, то для просмотра можно воспользоваться им и не заниматься настройкой видимости скрытых файлов.

Так выглядит содержимое раздела «Зарезервировано системой» в Windows 8 >

Как и ожидалось, в корне раздела мы видим загрузчик Bootmgr.

А так выглядит часть содержимого папки «Boot» >

В папке мы находим базу хранилища данных конфигурации загрузки BCD и сопутствующие ей папки с языковыми файлами и файлами шрифтов.

Для полноты картины осталось сказать о том, какой раздел называется загрузочным. Ответ уже показан на картинке с томами Windows 7. Очевидно, что это раздел, на котором находятся все основные файлы операционной системы.

Ну что же, запомнить названия разделов диска очень легко по принципу «всё наоборот» — на системном нет системы (операционной), но расположен загрузчик третьего уровня, на загрузочном как раз отсутствует загрузчик, но находится сама система. Естественно, эта «запоминалка» работает только тогда, когда есть несколько разделов. Если раздел один, то он может быть сразу системным, активным и загрузочным.

Главной задачей загрузчика 3-го уровня, в роли которого выступает, в зависимости от типа ОС, Bootmgr, Ntldr или GRUB, является чтение с загрузочного диска и загрузка ядра операционной системы. Кроме того, в случае множественной загрузки, когда на компьютере установлено несколько операционных систем, загрузчик 3-го уровня позволяет выбирать нужную при каждом запуске компьютера.

Классической ошибкой, которой Microsoft посвятила , является установка Windows XP после Windows Vista / 7 /8. Установщик Windows XP помечает свой раздел как активный, после чего, во время загрузки, MBR передает управление PBS этого раздела а он, в свою очередь, — Ntldr. Загрузчик Windows XP ничего не знает о более поздних версиях операционных систем Windows и их загрузка становится невозможной. Лечится достаточно легко, но неискушенного пользователя такая ситуация может поставить в тупик.

Добавить к этому практически нечего и можно переходить непосредственно к редактированию загрузочного меню. Начнем с .

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

  1. Подскажите пожалуйста как именно лечить?:
    «Загрузчик Windows XP ничего не знает о более поздних версиях операционных систем Windows и их загрузка становится невозможной. Лечится достаточно легко, но неискушенного пользователя такая ситуация может поставить в тупик.»

    Поставил ХР после Vista на ноутбук — в итоге запуск системи доходит до начала загрузки ХР и все по новой перезагружаєтса, а если отключить (на время загрузки ОС) адаптер питания то все загружается нормально. Если загружать в безопасном режиме, то адаптер отключать не надо. Что ето может бить и как с етим бороться?

    ПОЖАЛУЙСТА ОТПИШИТЕ. ЗАРАНИЕ СПАСИБО. ИЗВИНИТЕ ЗА «ЛОМАННИЙ» РУССКИЙ.

  • По поводу влияния адаптера питания на загрузку ХР ничего не скажу — конкретных идей нет. По поводу восстановления загрузки Vista, если это актуально, то в конце поста есть ссылка на статью суппорта Microsoft (919529), посвященную непосредственно этой теме. Для восстановления потребуется установочный диск Vista. В командной строке с правами администратора нужно выполнить:
    Х:\boot\bootsect.exe /nt60 all
    где X: — буква оптического привода.
    А вот загрузку XP нужно будет добавлять вручную с помощью редактора . Набор команд будет таким:
    Bcdedit /create {ntldr} /d «Microsoft Windows XP»
    если данная команда завершиться неудачей, то:
    Bcdedit /set {ntldr} description «Microsoft Windows XP»
    далее:
    bcdedit /set {ntldr} device partition=X:
    Х: — буква диска раздела, на котором находятся файлы загрузчика XP, и путь к нему:
    bcdedit /set {ntldr} path \ntldr
    bcdedit /displayorder {ntldr} /addlast

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

  • Юрий! Боюсь, что тех сведений, которые Вы сообщили, явно недостаточно для каких-либо рекомендация. Какая Windows и о каких этапах идет речь? Уточните.

Доброго здоровья, Александр.
Как понять, предотвратить, а если повторится — правильно выйти из вот такой ситуации.
Ноутбук. Установлена Windows-7. После включения и ввода пароля выдал «missing operating system» — то бишь «отсутствует операционная система». Выключения с повторным включением дали тот же результат. Запуститься удалось только вынув и спустя некоторое время вставив аккумулятор.
Накануне, правда, имело место быть некорректное выключение: предварительно не были отключены флешка и модем. Раньше такая забывчивость тоже случалась, но подобного эффекта не было.
Буду признателен за доступный старому «чайнику» ответ (мне лет на десять больше, чем господину в забавном случае, но познакомился с КОМПом примерно в том же возрасте).

  • Владимир, здравствуйте. С наступающими праздниками и всех благ.
    В данной ситуации Вы сделали все правильно — сбросили «залипший» глюк.
    Как поется в песенке: «Одна дождинка — еще не дождь. Одна снежинка — еще не снег». Возможно, что ничего подобного больше и не произойдет. Вот если с запуском начнутся регулярные проблемы, тогда надо будет разбираться. А вообще, Windows 7 и выше достаточно устойчивы к нештатным выключениям.
    Что делать? Вы сами ответили на свой вопрос — стараться штатно отключать устройства. И если есть возможность подключить по USB внешний диск, то я обязательно сделал бы (на самом деле делаю достаточно регулярно) бекап системы, например с помощью .

Общие сведения

SyMon — это ПРЕВОСХОДНЫЙ загрузчик операционных систем. Гибкая система настроек и мощные встроенные средства позволят Вам установить и использовать любые предпочитаемые Вами операционные системы, причем практически в любом сочетании.

Историческая справка

В последнее время наметился разрыв между емкостью жестких дисков и размерами программ. Так, если в начале 1990х годов размер жесткого диска порядка 210Мб соответствовал системе Windows 3.1 размером около 15-20Мб, то сегодня диск размером 500Гб соответствует Windows Vista размером 2-3Гб. То есть, отношение емкости дисковой памяти к размеру современной ему системы возросло с 10-15 раз до 100-200 раз! И это при том, что производители операционных систем, в частности фирма Microsoft, стремятся включить в поставку ОС как можно больше функций, которые ранее реализовывались с помощью дополнительных программ. Таким образом, пользователи получили дешевую и большую дисковую память, которую необходимо осваивать.

А зачем вообще нужен SyMon?

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

Хочется хотя бы раз в жизни взглянуть на другие операционные системы. Нет ничего хуже, чем отсутствие свободы выбора. обучение навыкам работы в новых ОС;

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

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

Вы используете компьютер дома, чтобы заниматься работой? Или, возможно, у Вас есть другие важные домашние дела, связанные с компьютером? А ребенок хочет играть с ним? Вы опасаетесь, что его игры могут кончиться полной переустановкой ОС и заодно многих программ, которые Вам пришлось так долго настраивать? Нет ничего проще, чем поставить ребенку вторую ОС и поставить пароль на загрузку своей. Вы сможете полностью изолировать обе ОС друг от друга, так что дети не будут подпущены ни к одному Вашему файлу! Такое решение, к тому же, гораздо дешевле, чем покупка второго компьютера специально для детских шалостей. использование ОС на разных языках;

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

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

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

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

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

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

Как отредактировать процесс загрузки нескольких операционных систем Windows, установленных на одном компьютере – об этом подробнее ниже.

Итак, имеем в нашем случае компьютер с установленными версиями Windows 7 и 8.1. При включении компьютера видим окно загрузчика с перечнем систем для выбора.

Каждый раз при загрузке компьютера попасть в нужную систему можно, сделав соответствующий выбор. В противном случае по истечении определённого времени – а по умолчанию это 30 секунд – автоматически будет загружена Windows, стоящая в списке первой. В нашем случае это Windows 7 , поскольку она установлена на компьютер последней, и именно её загрузчик, как видим, встречает нас после запуска компьютера.

Что же, изменим это. Настроим автоматическую загрузку основной системы – Windows 8.1. Для этого, естественно, необходимо войти в неё.

Нам нужен раздел настроек , и в Windows 8.1 в него можно попасть с помощью контекстного меню на кнопке .

В окошке системы выбираем дополнительные параметры .

Попасть в раздел настроек в Windows 7 можно также с помощью контекстного меню, но вызванном на значке «Компьютер» в проводнике. В числе команд необходимо выбрать .

В Windows 7 также выбираем дополнительные параметры .

Дальнейшие шаги в обоих системах идентичны.

В появившемся окне свойств системы во вкладке «Дополнительно» жмём кнопку параметров в последнем разделе .

Теперь можно приступать к редактированию загрузки нескольких систем. Меняем загружаемую по умолчанию Windows из числа вариантов в выпадающем списке. В нашем случае предустановленную Windows 7 меняем на Windows 8.1.

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

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

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

Если вторая операционная система когда-то понадобится, войти в неё можно будет, сделав эту опцию снова активной .

После внесения изменений жмём «Ок» внизу этого окна, а также внизу окна свойств системы.

Всё – список загрузки операционных систем отредактирован.

Выше мы рассмотрели редактирование загрузки существующих операционных систем. Но нередко при запуске компьютера можем увидеть перечень операционных систем, которых уже на компьютере нет . Это естественное развитие событий после того, как вторая операционная система была удалена путём обычного форматирования раздела диска или уничтожения системных файлов вручную, но при этом запись о возможности её загрузки в конфигурации системы не убиралась. Загрузчик также может отображать вариант запуска несуществующей основной Windows после того, как система была переустановлена . Это, кстати, не основная, но одна из причин, почему системщики советуют осуществлять так называемую чистую установку Windows – без сохранения файлов предыдущей системы и с форматированием раздела диска.

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

В основной системе вызываем команду . В Windows 8.1 быстрый доступ к ней реализован в контекстном меню на кнопке .

Нам нужен раздел конфигурации системы . Вводим в поле команды значение:

Жмём «Ок» .

В Windows 7 запустить окно конфигурации системы можно проще — прописав ключевой запрос в поисковом поле меню .

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

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

Внесённые изменения сохраняем кнопкой . После нажатия «Ок» система предложит перезагрузиться .

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

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

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

Установка Windows Xp + Windows 7

Для установки такой связки операционных систем нам понадобится специальный софт в лице EasyBCD. Если просто установить эти две операционные системы, то будет загружаться именно та, которую Вы поставили последней. Это происходит за счёт того, что Windows просто-напросто «затирает» загрузчики всех операционных систем, которые мирно «жили» до неё и оставляет лишь один для «себя любимой». Поэтому для начала мы качаем программку Easy BCD (скачать ) и оставляем инсталлятор на каком-нибудь нейтральном файловом диске, или же её можно скачать после установки одной из версий Windows. Итак, приступаем к установке первой версии Windows (7 или ХP, неважно в какой последовательности). Когда первая версия Windows установлена, смело ставим вторую. Но, устанавливать ее, желательно на отдельный раздел. После установки второй ОС Windows , мы загружаемся и устанавливаем в систему ранее скачанную программку EasyBCD.

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

Когда Вы запустите программу EasyBCD, то увидите перед собой вот такое вот окно (рис.1):


Рис.1

Как Вы видите у нас имеется загрузчик Windows 7 , который определился по умолчанию, так как эта система была установлена второй и является текущей. Теперь нам необходимо добавить новую запись в загрузчик для того, чтобы во время включения копьютера, мы смогли увидеть строку с Windows XP и соответственно смогли загрузиться из-под неё. Для этого нажимаем на панели слева «Add New Entry» , затем выбираем в пункте «Type» необходимую операционную систему (в данном случае это Windows XP), и жмём, уже справа, Add Entry .


Рис.2

Всё, запись в загрузчик добавлена, и когда Вы нажмёте на пункт View Settings , то увидите, что у Вас имеется уже две записи в загрузчике: Windows 7 и Windows XP. (рис.3)


Рис.3

Теперь можно смело перезагружать компьютер и загружаться из-под желаемой операционной системы.

Альтернатива при установке Linux + Windows (Xp, 7)

Такая «связка» встречается довольно часто, так как оторваться от «форточек» и ощутить вкус уверенного в себе «пингвина», желают многие. При таком варианте установки можно обойтись и без стороннего программного обеспечения, а воспользоваться стандартными средствами именно Linux. Для этого мы сначала устанавливаем Windows, старым добрым дедовским способом и без всяких хитромудростей. Затем, подходит чёред Linux, его мы устанавливаем вторым, опять же по причине удаления Windows всех «инородных» загрузчиков. Сразу хочу отметить тот факт, что в процессе установки Linux, перед Вами появится предложение «использовать весь диск», этого делать НЕ нужно, если Вам конечно дороги ваши данные. Необходимо же «откусить» отдельный раздел. После окончания установки Linux создаст загрузочное меню, где Вы сможете выбрать любую из операционных систем для загрузки. Но никто не лишает Вас права установки этих двух операционных систем с помощью EasyBCD.

Установка Linux + Windows + Win 7 + Другие системы

При таком варианте наиболее удобным методом будет являться, опять же EasyBCD. Только в данном случае нам необходимо создать запись в Add New Entry, для каждой из операционных систем, по примеру создания записи для Windows XP. На различных вкладках программы Вы можете перейти к созданию записей загрузчика, для Linux и Mac Os. (рис.4). Также при желании можно добавить и более старые операционные системы Windows: 95,98,NT и т.д.


Рис.4

Минимальный multiboot загрузчик / Хабр

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

Я попытался объяснить всё в деталях и оставить код максимально простым, насколько это возможно. Если у вас возникли вопросы, предложения или какие-либо проблемы, пожалуйста, оставьте комментарий или создайте таску на GitHub. Исходный код доступен в репозитории.


Когда вы включаете компьютер, он загружает BIOS из специальной флэш памяти. BIOS запускает тесты самопроверки и инициализацию аппаратного обеспечения, затем он ищет загрузочные устройства. Если было найдено хотя бы одно, он передаёт контроль загрузчику, который является небольшой частью запускаемого кода, сохранённого в начале устройства хранения. Загрузчик определяет местоположение образа ядра, находящегося на устройстве, и загружает его в память. Ему также необходимо переключить процессор в так называемый защищённый режим, потому что x86 процессоры по умолчанию стартуют в очень ограниченном реальном режиме (чтобы быть совместимыми с программами из 1978).

Мы не будем писать загрузчик, потому что это сам по себе сложный проект (если вы действительно хотите это сделать, почитайте об этом здесь). Вместо этого мы будем использовать один из многих испытанных загрузчиков для загрузки нашего ядра с CD-ROM. Но какой?


К счастью, есть стандарт загрузчика: спецификация мультизагрузки. Наше ядро должно лишь указать, что поддерживает спецификацию и любой совместимый загрузчик сможет загрузить его. Мы будем использовать спецификацию Multiboot 2 (PDF)
вместе с известным загрузчиком GRUB 2.

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


Field Type Value
магическое число u32 0xE85250D6
архитектура u32 0 для i386, 4 для MIPS
длина заголовка u32 общий размер заголовка включая тэги
контрольная сумма u32 -(магическое число + архитектура + длина заголовка)
тэги variable
завершающий тэг (u16, u16, u32) (0, 0, 8)

В переводе на x86 ассемблер это будет выглядеть так (Intel синтаксис):

section .multiboot_header
header_start:
    dd 0xe85250d6                ; магическое число (multiboot 2)
    dd 0                         ; архитектура 0 (защищённый режим i386)
    dd header_end - header_start ; длина заголовка
    ; контрольная сумма
    dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start))

    ; вставьте опциональные `multiboot` тэги здесь

    ; требуюется завершающий тэг
    dw 0    ; тип
    dw 0    ; флаги
    dd 8    ; размер
header_end:

Если вы не знаете x86 ассемблер, то вот небольшая вводная:


  • заголовок будет записан в секцию, названную .multiboot_header (нам понадобится это позже),
  • header_start и header_end — это метки, которые указывают на месторасположение в памяти, мы используем их, чтобы вычислить длину заголовка,
  • dd означает define double (32bit) и dw означает define word (16bit). Они просто выводят указанные 32bit/16bit константы,
  • константа 0x100000000 в вычислении контрольной суммы — это небольшой хак, чтобы избежать предупреждений компилятора.

Мы уже можем собрать данный файл (который я назвал multiboot_header.asm) используя nasm.


Установка nasm на `archlinux`
[[email protected] ~]$ yaourt nasm
1 extra/nasm 2.13.02-1
    An 80x86 assembler designed for portability and modularity
2 extra/yasm 1.3.0-2
    A rewrite of NASM to allow for multiple syntax supported (NASM, TASM, GAS, etc.)
3 aur/intel2gas 1.3.3-7 (3) (0.20)
    Converts assembly language files between NASM and GNU assembler syntax
4 aur/nasm-git 20150726-1 (1) (0.00)
    80x86 assembler designed for portability and modularity
5 aur/sasm 3.9.0-1 (18) (0.61)
    Simple crossplatform IDE for NASM, MASM, GAS, FASM assembly languages
6 aur/yasm-git 1.3.0.r30.g6caf1518-1 (0) (0.00)
    A complete rewrite of the NASM assembler under the BSD License
==> Enter n° of packages to be installed (e.g., 1 2 3 or 1-3)
==> ---------------------------------------------------------
==> 1

[sudo] password for loomaclin: 
resolving dependencies...
looking for conflicting packages...

Packages (1) nasm-2.13.02-1

Total Download Size:   0.34 MiB
Total Installed Size:  2.65 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 nasm-2.13.02-1-x86_64                                                                                346.0 KiB  1123K/s 00:00 [#############################################################################] 100%
(1/1) checking keys in keyring                                                                                                 [#############################################################################] 100%
(1/1) checking package integrity                                                                                               [#############################################################################] 100%
(1/1) loading package files                                                                                                    [#############################################################################] 100%
(1/1) checking for file conflicts                                                                                              [#############################################################################] 100%
(1/1) checking available disk space                                                                                            [#############################################################################] 100%
:: Processing package changes...
(1/1) installing nasm                                                                                                          [#############################################################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
[[email protected] ~]$ nasm --version
NASM version 2.13.02 compiled on Dec 10 2017
[[email protected] ~]$ 

Следующая команда произведёт плоский двоичный файл, результирующий файл будет содержать 24 байта (в little endian, если вы работаете на x86 машине):

[[email protected] ~]$ cd IdeaProjects/
[[email protected] IdeaProjects]$ mkdir a_minimal_multiboot_kernel
[[email protected] IdeaProjects]$ cd a_minimal_multiboot_kernel/
[[email protected] a_minimal_multiboot_kernel]$ nano multiboot_header.asm
[[email protected] a_minimal_multiboot_kernel]$ nasm multiboot_header.asm 
[[email protected] a_minimal_multiboot_kernel]$ hexdump -x multiboot_header
0000000    50d6    e852    0000    0000    0018    0000    af12    17ad
0000010    0000    0000    0008    0000                                
0000018
[[email protected] a_minimal_multiboot_kernel]$ 

Чтобы загрузить наше ядро, мы должны добавить код, который сможет вызвать загрузчик. Давайте создадим файл boot.asm:

global start

section .text
bits 32
start:
    ; печатает `OK` на экране
    mov dword [0xb8000], 0x2f4b2f4f
    hlt

Здесь есть несколько новых команд:


  • global экспортирует метки (делает их публичными). Метка start будет входной точкой в наше ядро, она должна быть публичной,
  • .text секция — это секция по умолчанию для исполняемого кода,
  • bits 32 говорит о том, что следующие строки — это 32-битные инструкции. Это необходимо потому что процессор ещё находится в защищённом режиме, когда GRUB запускает наше ядро. Когда переключимся в Long mode в следующей статье, сможем запускать bits 64 (64-битные инструкции),
  • mov dword инструкция помещает 32-битную константу 0x2f4b2f4f в адрес памяти b8000 (это выводит OK на экран, объяснено будет в следующих статьях),
  • hlt — это инструкция, которая говорит процессору остановить выполнение команд.

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

[[email protected] a_minimal_multiboot_kernel]$ nano boot.asm
[[email protected] a_minimal_multiboot_kernel]$ nasm boot.asm 
[[email protected] a_minimal_multiboot_kernel]$ hexdump -x boot
0000000    05c7    8000    000b    2f4f    2f4b    00f4                
000000b
[[email protected] a_minimal_multiboot_kernel]$ ndisasm -b 32 boot
00000000  C70500800B004F2F  mov dword [dword 0xb8000],0x2f4b2f4f
         -4B2F
0000000A  F4                hlt
[[email protected] a_minimal_multiboot_kernel]$ 

Чтобы загрузить наш исполняемый файл позже через GRUB, он должен быть исполняемым ELF файлом. Поэтому необходимо с помощью nasm создать ELF объектные файлы вместо простых бинарников. Для этого мы просто добавляем в аргументы -f elf64.

Для создания самого ELF исполняемого кода мы должны связать объектные файлы. Будем использовать кастомный скрипт для связывания, называемый linker.ld:

ENTRY(start)

SECTIONS {
    . = 1M;

    .boot :
    {
        /* в начале оставим заголовк мультизагрузки */
        *(.multiboot_header)
    }

    .text :
    {
        *(.text)
    }
}

Переведём что написано на человеческий язык:


  • start — это точка входа, загрузчик перейдёт к этой метке после загрузки ядра,
  • . = 1M; уставливает адрес загрузки первой секции с 1-го мегабайта, это стандарт расположения для загрузки ядра,
  • исполняемая часть имеет две секции: в начале boot и .text после,
  • конечная секция .text будет содержать в себе все входящие секции .text,
  • секции, именованные как .multiboot_header, будут добавлены в первую выходную секцию (.boot), чтобы они располагались в начале исполняемого кода. Это необходимо, потому что GRUB ожидает найти заголовок мультизагрузки в начале файла.

Давайте создадим ELF объектные файлы и слинкуем их, используя вышеуказанный линкер скрипт:

[[email protected] a_minimal_multiboot_kernel]$ nasm -f elf64 multiboot_header.asm
[[email protected] a_minimal_multiboot_kernel]$ nasm -f elf64 boot.asm 
[[email protected] a_minimal_multiboot_kernel]$ ld -n -o kernel.bin -T linker.ld multiboot_header.o boot.o
[[email protected] a_minimal_multiboot_kernel]$ 

Очень важно передать -n (или --nmagic) флаг линкеру, который отключает автоматическое выравнивание секций в исполняемом файле. В противном случае линкер может выравнить страницу секции .boot в исполняемом файле. Если это произойдёт, GRUB не сможет найти заголовок мультизагрузки, потому что он будет находиться уже не в начале.

Воспользуемся командой objdump для того, чтобы вывести секции сгенерированного исполняемого файла и проверить, что .boot секция имеет наименьшее смещение в файле:

[[email protected] a_minimal_multiboot_kernel]$ objdump -h kernel.bin 

kernel.bin:     file format elf64-x86-64

Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .boot         00000018  0000000000100000  0000000000100000  00000080  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .text         0000000b  0000000000100020  0000000000100020  000000a0  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
[[email protected] a_minimal_multiboot_kernel]$ 

Примечание: команды ld и objdump платформо-зависимы. Если вы работаете не на x86_64 архитектуре, вы нуждаетесь в кросс компиляции binutils. После этого воспользуйтесь x86_64‑elf‑ld и x86_64‑elf‑objdump вместо ld и objdump соответственно.

Все персональные компьютеры, работающие на базе BIOS, знают, как загружаться с CD-ROM, так что нам необходимо создать загружаемый образ CD-ROM, содержащий наше ядро и файлы загрузчика GRUB в единственном файле, называемом ISO. Создайте следующую структуру директорий и скопируйте kernel.bin в директорию boot:

isofiles
└── boot
    ├── grub
    │   └── grub.cfg
    └── kernel.bin

grub.cfg указывает имя файла нашего ядра и совместимость с multiboot 2. Выглядит это так:

set timeout=0
set default=0

menuentry "my os" {
    multiboot2 /boot/kernel.bin
    boot
}

Исполняем команды:

[[email protected] a_minimal_multiboot_kernel]$ mkdir isofiles
[[email protected] a_minimal_multiboot_kernel]$ mkdir isofiles/boot
[[email protected] a_minimal_multiboot_kernel]$ mkdir isofiles/boot/grub
[[email protected] a_minimal_multiboot_kernel]$ cp kernel.bin isofiles/boot/
[[email protected] a_minimal_multiboot_kernel]$ nano grub.cfg
[[email protected] a_minimal_multiboot_kernel]$ cp grub.cfg isofiles/boot/grub/

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

[[email protected] a_minimal_multiboot_kernel]$ grub-mkrescue -o os.iso isofiles
xorriso 1.4.8 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:os.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 7675m free
Added to ISO image: directory '/'='/tmp/grub.jN4u6m'
xorriso : UPDATE : 898 files added in 1 seconds
Added to ISO image: directory '/'='/home/loomaclin/IdeaProjects/a_minimal_multiboot_kernel/isofiles'
xorriso : UPDATE : 902 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 512 bytes from file '/usr/lib/grub/i386-pc/boot_hybrid.img'
ISO image produced: 9920 sectors
Written to medium : 9920 sectors at LBA 0
Writing to 'stdio:os.iso' completed successfully.

Примечание: вызов grub-mkrescue может вызвать проблемы на некоторых платформах. Если она у вас не сработала, попробуйте следующие шаги:
  • запустить команду с --verbose,
  • удостовериться, что библиотека xorriso установлена (xorriso или libisoburn пакет).


На `Archlinux пришлось поставить `libisoburn`

[[email protected] a_minimal_multiboot_kernel]$ yaourt xorriso
1 extra/libisoburn 1.4.8-2
frontend for libraries libburn and libisofs
==> Enter n° of packages to be installed (e.g., 1 2 3 or 1-3)
==> — ==> 1

[sudo] password for loomaclin:
resolving dependencies…
looking for conflicting packages…

Packages (3) libburn-1.4.8-1 libisofs-1.4.8-1 libisoburn-1.4.8-2

Total Download Size: 1.15 MiB
Total Installed Size: 3.09 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages…
libburn-1.4.8-1-x86_64 259.7 KiB 911K/s 00:00 [#############################################################################] 100%
libisofs-1.4.8-1-x86_64 237.8 KiB 2.04M/s 00:00 [#############################################################################] 100%
libisoburn-1.4.8-2-x86_64 683.8 KiB 2.34M/s 00:00 [#############################################################################] 100%
(3/3) checking keys in keyring [#############################################################################] 100%
(3/3) checking package integrity [#############################################################################] 100%
(3/3) loading package files [#############################################################################] 100%
(3/3) checking for file conflicts [#############################################################################] 100%
(3/3) checking available disk space [#############################################################################] 100%
:: Processing package changes…
(1/3) installing libburn [#############################################################################] 100%
(2/3) installing libisofs [#############################################################################] 100%
(3/3) installing libisoburn


  • если вы используете EFI-систему, grub-mkrescue попробует создать EFI образ по умолчанию. Вы можете задать аргумент -d /usr/lib/grub/i386-pc, чтобы избавиться от этого поведения, или установить пакет mtools и получить работающий EFI образ
  • на некоторых системах команда названа grub2-mkrescue.

Пришло время загрузить нашу ОС. Для этого воспользуемся QEMU:

[[email protected] a_minimal_multiboot_kernel]$ qemu-system-x86_64 -cdrom os.iso 

(qemu-system-x86_64:10878): Gtk-WARNING **: Allocating size to GtkScrollbar 0x7f2337e5a280 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?

(qemu-system-x86_64:10878): Gtk-WARNING **: Allocating size to GtkScrollbar 0x7f2337e5a480 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?

(qemu-system-x86_64:10878): Gtk-WARNING **: Allocating size to GtkScrollbar 0x7f2337e5a680 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?

Появится окно эмулятора:

Обратите внимание на зелёный текст OK в верхнем левом углу. Если у вас это не работает, посмотрите секцию комментариев.

Резюмируем, что произошло:


  1. BIOS загружает загрузчик (GRUB) из виртуального CD-ROM (ISO).
  2. Загрузчик прочёл исполняемый код ядра и нашёл заголовок мультизагрузки.
  3. Скопировал секцию .boot и .text в память (по адресу 0x100000 и 0x100020).
  4. Переместился к точке входа (0x100020, это можно узнать вызвав objdump -f).
  5. Ядро вывело на экран текст OK зелёным цветом и остановило процессор.

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


Сейчас необходимо вызывать 4 команды в правильном порядке каждый раз, когда мы меняем файл. Это плохо. Давайте автоматизируем этот процесс, с помощью Makefile. Но для начала мы должны создать подходящую структуру директорий чтобы отделить архитектурно-зависимые файлы:

…
├── Makefile
└── src
    └── arch
        └── x86_64
            ├── multiboot_header.asm
            ├── boot.asm
            ├── linker.ld
            └── grub.cfg

Создаём:

[[email protected] a_minimal_multiboot_kernel]$ mkdir -p src/arch/x86_64
[[email protected] a_minimal_multiboot_kernel]$ cp multiboot_header.asm src/arch/x86_64/
[[email protected] a_minimal_multiboot_kernel]$ cp boot.asm src/arch/x86_64/
[[email protected] a_minimal_multiboot_kernel]$ cp linker.ld src/arch/x86_64/
[[email protected] a_minimal_multiboot_kernel]$ cp grub.cfg src/arch/x86_64/
[[email protected] a_minimal_multiboot_kernel]$ nano Makefile

Makefile должен иметь следующий вид:

arch ?= x86_64
kernel := build/kernel-$(arch).bin
iso := build/os-$(arch).iso

linker_script := src/arch/$(arch)/linker.ld
grub_cfg := src/arch/$(arch)/grub.cfg
assembly_source_files := $(wildcard src/arch/$(arch)/*.asm)
assembly_object_files := $(patsubst src/arch/$(arch)/%.asm, \
    build/arch/$(arch)/%.o, $(assembly_source_files))

.PHONY: all clean run iso

all: $(kernel)

clean:
    @rm -r build

run: $(iso)
    @qemu-system-x86_64 -cdrom $(iso)

iso: $(iso)

$(iso): $(kernel) $(grub_cfg)
    @mkdir -p build/isofiles/boot/grub
    @cp $(kernel) build/isofiles/boot/kernel.bin
    @cp $(grub_cfg) build/isofiles/boot/grub
    @grub-mkrescue -o $(iso) build/isofiles 2> /dev/null
    @rm -r build/isofiles

$(kernel): $(assembly_object_files) $(linker_script)
    @ld -n -T $(linker_script) -o $(kernel) $(assembly_object_files)

# compile assembly files
build/arch/$(arch)/%.o: src/arch/$(arch)/%.asm
    @mkdir -p $(shell dirname [email protected])
    @nasm -felf64 $< -o [email protected]

Некоторые комментарии (если вы не работали до этого с make, посмотрите makefile туториал):


  • $(wildcard src/arch/$(arch)/*.asm) выбирает все файлы ассемблера в директории src/arch/$(arch), так что вам не нужно обновлять Makefile при добавлении файлов,
  • операция patsubst для assembly_object_files просто переводит src/arch/$(arch)/XYZ.asm в build/arch/$(arch)/XYZ.o,
  • таргеты сборки$< и [email protected] это автоматически выводимые переменные,
  • если вы используете кросс-комплированные binutils просто замените ld на x86_64-elf-ld.

Теперь мы можем вызвать make и все обновлённые файлы ассемблера будут скомпилированы и скомпонованы. Команда make iso также создаёт ISO образ, а make run в дополнение запускает QEMU.


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



  1. Формула из таблицы -(magic + architecture + header_length) создает отрицательное значение, которое не влезает в 32 бита. С помощью вычитания из 0x100000000 мы оставляем значение положительным без изменения вычтенного значения. В результате без дополнительного знакового бита результат помещается в 32 бита и компилятор счастлив 🙂
  2. Мы не хотим загружать ядро по офсету 0x0, так как много специфичных областей памяти может быть расположено до метки в 1 мегабайт (для примера, так называемый VGA буфер по адресу 0xb8000, который мы используем чтобы вывести OK на экран).

Как приукрасить стандартный загрузчик Ubuntu

Продвинутым пользователям Ubuntu известно, что новые дистрибутивы этого Linux’a используют универсальный загрузчик Grub2. Почему он универсальный? Потому что позволяет загружать как родную операционную систему Linux, так и любую ОС из семейства Windows  или Mac OS. Если, к примеру, у вас на компьютере стоит несколько операционных систем, то любую из них можно загрузить с помощью Grub2. Также известно, что Ubuntu обладает очень гибкой настройкой, поэтому рассмотрим в этой статье способ, как приукрасить загрузочное меню Grub2.

Для этой цели мы будем использовать специальную утилиту под названием BURG — это графически стилизованный загрузчик основанный на базе Grub2. С помощью BURG вы сможете превратить стандартное меню загрузчика:

в достаточно интересное и привлекательное:

Установка BURG.

Первое что необходимо — это добавить источник PPA. Для этого наберите в терминале следующую команду:

sudo add-apt-repository ppa:bean123ch/burg && sudo apt-get update

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

sudo apt-get update

Также могут помочь следующие команды:

sudo gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 55708F1EE06803C5
sudo gpg --armor --export 55708F1EE06803C5 | apt-key add -

У меня проблема исчезла после ввода первой команды.

После завершения закройте терминал и запустите менеджер пакетов Synaptic. Вы сможете найти его в меню Система (System) -> Администрирование (Administration) -> Менеджер пакетов Synaptic (Synaptic Package Manager). Далее воспользуйтесь поиском и найдите пакет с именем «burg», отметьте его для установки с помощью правой кнопки мышки, как это указано на рисунке и нажмите на кнопку Применить (Apply).

Примечание: Использование менеджера пакетов Synaptic при установке Burg позволит избежать определенных проблем.

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

Во втором окне необходимо указать Burg раздел, куда его нужно установить, соответственно на этом же разделе должен находиться и загрузчик Grub2. Выберите раздел, на котором установлен ваш Linux. В случае если у вас есть отдельный раздел /boot, на котором находиться загрузчик, то выберите его.

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

sudo update-burg

Установка и настройка завершена. Вы можете теперь перезагрузить ваш компьютер и меню загрузчика Grub2 измениться на меню Burg. В этом меню можно воспользоваться следующими клавишами: F1 — вызов справки по остальным клавишам, F2 — вызов списка тем окна загрузчика, которые вы можете использовать и F3 — изменение разрешения экрана загрузчика.

Установка дополнительных тем меню загрузчика.

Найдите и скачайте понравившуюся тему для Burg. После того как тема будет скачана, ее необходимо просто скопировать в папку с темами Burg. Для этого наберите в терминале следующую команду:

sudo cp путь_к_файлу_темы/Fortune-BURG-v03.tar.gz /boot/burg/themes

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

sudo update-burg

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

Также рекомендую прочитать:

Загрузка… Исправление

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

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

не имеет подписи

Что ж, не беспокойтесь, поскольку в этом руководстве будут рассмотрены различные решения, которые вы можете реализовать.Но прежде чем мы перейдем к этому, вы можете узнать больше о причине сообщения об ошибке.

Причина появления сообщения об ошибке «Загрузчик операционной системы не имеет подписи»?

Эта ошибка может возникать по разным причинам. Вот некоторые из них —

  • Плохой / неаутентичный файл загрузочного образа : ошибка вызвана неправильным / неаутентичным файлом загрузочного образа, который компьютер не распознает. В современных компьютерах для загрузки используется режим UEFI вместо режима BIOS (устаревшего).В этом режиме загрузки есть функция Secure Boot , которая при включении определяет, является ли загрузочный образ подлинным или нет.
  • Windows, установленная в режиме BIOS: Если вы пытаетесь загрузить операционную систему, установленную в режиме BIOS (устаревший режим), не загрузится, если включена безопасная загрузка. Так что будьте осторожны с этим.

Теперь, чтобы исправить эту ошибку, вы можете попробовать разные вещи.

Примечание:

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

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

Решение 1. Выполнение аппаратного сброса

Вы можете выполнить полный сброс компьютера и посмотреть, избавится ли он от этой ошибки. Если вы используете настольный компьютер, поэтому для выполнения аппаратного сброса необходимо выключить компьютер.Удалите все периферийные устройства. Затем отсоедините кабель питания и нажмите и удерживайте кнопку питания в течение 15-20 секунд. Это приведет к полному сбросу вашего компьютера до заводских настроек по умолчанию.

Если это портативный компьютер, то вам необходимо выключить ноутбук, отсоединить кабель переменного тока и аккумулятор. Затем вам нужно нажать и удерживать кнопку питания в течение 15-20 секунд. Это выполнит полную перезагрузку вашего ноутбука. Я надеюсь, что после этого ваша ошибка будет исправлена, но если это не так, вы можете попробовать другие решения, перечисленные ниже.

Решение 2. Сбросьте BIOS

Второе решение, которое вы можете попробовать, — это сбросить BIOS. Что ж, у каждого производителя свой интерфейс настроек BIOS, но я расскажу, как это сделать на компьютере Dell. Вот как это сделать:

  1. Выключите компьютер. Затем включите его и сразу несколько раз нажмите F2 .
  2. Это приведет вас к настройкам BIOS .
  3. Теперь прокрутите вниз, и вы увидите опцию Restore Settings или BIOS Defaults .Нажмите на это. Восстановить настройки BIOS по умолчанию

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

Решение 3. Измените последовательность загрузки

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

  1. Прежде всего, вам нужно перейти в настройки BIOS .
  2. Оттуда выберите режим Legacy вместо режима UEFI .
  3. Если это не изолирует проблему, вы можете отключить опцию Secure Boot . Отключить безопасную загрузку

Решение 4. Сбросить Windows 10

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

  1. Чтобы получить доступ к WinRE , вам придется два раза принудительно выключить компьютер. Для этого вам нужно нажать и удерживать кнопку питания , пока ваш компьютер не выключится. Сделайте это дважды, и вы получите доступ к Windows Recovery Environment . После того, как вы включите его в третий раз, вы сможете получить доступ к Windows Recovery Environment .
  2. После этого вы должны выбрать опцию Устранение неполадок и оттуда вы должны выбрать « Reset this PC ». Сброс ПК
  3. На следующем экране вы должны выбрать « Keep my files / Remove Everything» ».

После этого ваш компьютер перезагрузится. Для завершения процесса потребуется некоторое время, так что наберитесь терпения. Ваша ошибка должна исчезнуть после перезагрузки Windows 10.

Что такое загрузчик? — Определение из Техопедии

Что означает загрузчик?

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

Techopedia объясняет погрузчик

Загрузчик — это компонент операционной системы, который выполняет задачу подготовки программы или приложения к выполнению в ОС.Он делает это, считывая содержимое исполняемого файла и затем сохраняя эти инструкции в ОЗУ, а также любые элементы библиотеки, которые должны находиться в памяти для выполнения программы. По этой причине прямо перед запуском большинства программ появляется экран-заставка, часто показывающий, что происходит в фоновом режиме, то есть то, что загрузчик в данный момент загружает в память. Когда все это будет сделано, программа готова к выполнению. Для небольших программ этот процесс почти мгновенен, но для больших и сложных приложений с большими библиотеками, необходимыми для выполнения, таких как игры, а также программное обеспечение для 3D и САПР, это может занять больше времени.Скорость загрузки также зависит от скорости процессора и оперативной памяти.

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

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

  1. Проверить программу на предмет требований к памяти, разрешений и т. Д.
  2. Скопируйте необходимые файлы, такие как образ программы или необходимые библиотеки, с диска в память
  3. Скопировать необходимые аргументы командной строки в стек
  4. Свяжите начальную точку программы и свяжите любую другую необходимую библиотеку
  5. Инициализировать регистры
  6. Переход к начальной точке программы в памяти

Загрузчик программ — Embedded Artistry

Информацию о приложениях, ускоряющих загрузку с ленты или диска, см. В разделе «Быстрый загрузчик».

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

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

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

[Исправлено] Загрузчик операционной системы не имеет подписи. Несовместим с SecureBoot

Обзор : Вы не можете загрузить компьютер из-за сообщения об ошибке «Загрузчик операционной системы не имеет подписи. Несовместимо с SecureBoot. Все загрузочные устройства не прошли проверку безопасной загрузки ”? Я понимаю, что это сообщение об ошибке вас расстраивает, но будьте уверены, что мы устраним его.Эта статья предоставит вам пошаговые инструкции по исправлению этой ошибки.

Итак, начнем с практических сценариев реальных пользователей!

Практический сценарий 1: Подпись загрузчика операционной системы не найдена в базе данных SecureBoot («db»). Все загрузочные устройства не прошли проверку безопасной загрузки

Inspiron 15-3567 показывает «подпись загрузчика операционной системы не найдена в базе данных SecureBoot (« db »). Все загрузочные устройства не прошли проверку безопасной загрузки »после того, как я попытаюсь перезагрузить свой ноутбук, мой единственный вариант — выключить.Когда я его включаю, он снова показывает то же самое. Что я должен делать?

Источник: Dell Сообщество

Практический сценарий 2: Inspiron 15-3567 Загрузчик операционной системы не имеет подписи

Обновил мой ноутбук Inspiron 15-3567 в воскресенье, и мой ноутбук работал отлично до сегодняшнего утра. Я открыл его, и на экране была ошибка, а также проблема с оборудованием. Затем сказал, что мне нужно сделать проверку или сканирование на ноутбуке, чтобы найти проблему и решить ее.Через 10-30 минут проблема решена, и мне пришлось перезагрузить ноутбук. После перезапуска моего ноутбука экран поддержки все еще существует. На этот раз говорится: «Загрузчик операционной системы не имеет подписи. Несовместимо с SecureBoot. Все загрузочные устройства не прошли проверку безопасной загрузки ». Единственная кнопка на экране — «Завершение работы», я нажимал ее много раз, но экран все еще на месте. Есть ли способ решить эту проблему?

Как и два вышеупомянутых пользователя, многие пользователи Dell сталкиваются с этой ситуацией отсутствия загрузки.Чтобы это исправить, выполните следующие действия.

Источник: Dell Сообщество

Также читайте: Исправить ошибку: Загрузочное устройство не найдено! И «SupportAssist выполняет сканирование системы для обнаружения любых потенциальных проблем с оборудованием»

Решение 1. Аппаратный сброс

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

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

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

Вам также может понравиться:

Решение 2. Запустите аппаратный тест для определения любого аппаратного сбоя

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

Решение 3. Сбросьте BIOS до значений по умолчанию

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

Если у вас есть этот экран BIOS, как показано на рисунке выше, нажмите Restore Settings или Load Defaults в зависимости от того, что упомянуто.

Убедитесь, что выбрано значение BIOS Defaults , или подтвердите загрузку значений по умолчанию и нажмите OK .

Щелкните Выход .

Система будет перезагружена.

Если ваш BIOS выглядит как на картинке выше, нажмите F9 на клавиатуре, чтобы Загрузить оптимальные значения по умолчанию или Загрузить оптимальные значения по умолчанию , а затем нажмите F10 на клавиатуре для сохранения и выхода.

Система будет перезагружена. Если система не загружается после сброса BIOS, выполните следующий шаг.

Решение 4. Исправьте запись диспетчера загрузки Windows в последовательности загрузки в BIOS

Мы видели, что это решение работало в 90% случаев примерно в . Итак, выполнение этого шага должно решить проблему.

Запустите компьютер и сразу же нажмите F2 на клавиатуре, чтобы войти в BIOS. Как только вы войдете в BIOS

Разверните опцию General и затем выберите Boot Sequence , как показано ниже

Теперь нажмите Добавить вариант загрузки в разделе Вариант списка загрузки

Появится новое окно, в поле Boot Option Name введите Windows Boot Manager и в поле File Name введите / EFI / BOOT / BOOTX64.EFI , а затем щелкните маленькую рамку с тремя точками перед именем файла , как показано на рисунке ниже. Теперь нажмите OK , все записи исчезнут, не беспокойтесь, нажмите OK , а затем нажмите Exit в правом нижнем углу экрана.

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

Решение 5. Измените последовательность загрузки

Иногда правильное изменение последовательности загрузки решает проблему.

Запустите систему и сразу же нажмите F2, чтобы перейти в BIOS.

В поле General выберите Boot Sequence и проверьте параметр Boot List Option , установлен ли он на Legacy или UEFI. Если установлено значение Legacy , установите значение UEFI и нажмите Применить в правом нижнем углу. Иногда UEFI неактивен. В этом случае вы должны убедиться, что в разделе Advanced Boot Options должен быть снят флажок «Enable Legacy Option ROMs » и должен быть включен Secure Boot .Вы должны нажимать Применить после каждого изменения, которое вы делаете в правом нижнем углу экрана. См. Картинку ниже, чтобы лучше понять это.

После внесения необходимых изменений нажмите «Выход» в правом нижнем углу. Система перезагрузится, и она должна загрузить Windows.

Иногда наоборот, проблема решается, например,

Вариант списка загрузки

— устаревшая версия

Безопасная загрузка — отключено или выключено и

Загрузить устаревшие дополнительные ПЗУ — проверено

Если проблема не устранена, перейдите к следующему шагу.

Вам также может понравиться:

Решение 6. Сброс Windows 10

Если системные файлы каким-то образом испортились, сброс Windows решит проблему. Если вы видите Advanced Options на экране без загрузки, то мы можем сбросить Windows, используя Advanced option . В случае, если Advanced Options отсутствует, мы должны трижды прервать процесс загрузки. Чтобы перейти в среду восстановления Windows, вам необходимо дважды принудительно выключить систему с логотипом Dell и запустить компьютер в третий раз, чтобы перейти в среду восстановления Windows.Вы можете попробовать это несколько раз, чтобы попасть в среду восстановления Windows. Как только вы войдете в среду восстановления Windows

На экране Выберите вариант нажмите Устранение неполадок .

На экране « Troubleshoot » выберите « Reset this PC» или Factory Image Restore Factory Image Restore требует меньше времени, если этот параметр доступен, затем перейдите к восстановлению заводского образа.

На экране Reset / Factory Image Restore выберите Keep my files / Remove Everything — я бы рекомендовал вам выбрать «удалить все», потому что, если системные файлы повреждены, это может не работать, обратите внимание, что вы потеряет все данные в системе.

Для сброса / восстановления заводского образа потребуется некоторое время. СБРОС займет больше времени. Как только это будет сделано, вам нужно настроить Windows 10 и начать использовать свой компьютер. Если система не переходит к Advanced Options или Windows Recovery Environment, выполните следующий шаг.

Решение 7. Переустановите Windows 10 с помощью USB-накопителя

Часто можно заметить, что система не переходит к Advanced Options или среде восстановления Windows, и в этом случае вам необходимо переустановить Windows 10 с помощью USB-накопителя.Чтобы переустановить ОС, вам понадобится еще один рабочий компьютер с доступом в Интернет (для загрузки Windows 10 и создания носителя на флеш-накопителе) и не менее 8 ГБ пустой USB-флеш-накопителя. Обратите внимание, что переустановка Windows приведет к удалению / удалению всех данных в системе.

Перейдите по этой ссылке, чтобы узнать, как переустановить Windows 10 с помощью USB-накопителя

.

Заключение

Надеюсь, этот пост помог вам исправить ошибку «Загрузчик операционной системы не имеет подписи.Несовместимо с SecureBoot. Все загрузочные устройства не прошли проверку безопасной загрузки

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

Fix не имеет проблем с подписью в Windows 10

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

Загрузчик операционной системы не имеет подписи. Несовместимо с SecureBoot.Все загрузочные устройства не прошли проверку безопасной загрузки.

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

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

Мы будем выполнять следующие исправления, чтобы избавиться от ошибки в Windows 10 —

  1. Выполните «холодную» загрузку.
  2. Перезагрузите BIOS.
  3. Измените последовательность загрузки.
  4. Сброс Windows 10.

1] Выполнить «холодную» перезагрузку

Вам необходимо Нажмите и удерживайте кнопку питания на процессоре, пока она тоже не погаснет. Это называется выполнением «холодной перезагрузки» .

Загрузите компьютер и проверьте, решена ли проблема.

2] Сбросьте BIOS

Если это не поможет, вы можете сбросить BIOS и посмотреть.

Запустите компьютер и во время загрузки нажмите клавишу F10 , чтобы войти в BIOS — но это также может быть клавиша F1, F2 или Del.

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

Щелкните Да и следуйте инструкциям на экране, чтобы установить в BIOS настройки по умолчанию.

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

3] Изменение последовательности загрузки

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

4] Сбросить Windows 10

Вы можете сбросить установленную копию Windows 10. Это устранит все проблемы на вашем компьютере.

Помогли ли вам эти исправления?

Написание собственного загрузчика

Недавно я смотрел «Предотвращение краха цивилизации» Джонатана Блоу — потрясающий доклад — и мне было любопытно, смогу ли я написать операционную систему с нуля. Итак, я немного погуглил и наткнулся на исчерпывающий учебник по ОС Карлоса Феноллосаса, который основан на очень хорошо написанной лекции «Написание простой операционной системы — с нуля».

Итак, я поставил себе цель написать 32-битную операционную систему x86. Чтобы убедиться, что я действительно понял все детали, я решил написать в блоге о своем прогрессе. Итак, вот первое сообщение в блоге.

Мы напишем простой загрузчик с нуля, используя язык ассемблера x86, и загрузим очень минимальное ядро ​​операционной системы, написанное на C. Для простоты мы будем использовать BIOS, а не связываться с UEFI.

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

Исходный код можно найти на GitHub.

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

Вот список тем, которые полезно знать / читать, чтобы понять содержание этого сообщения.

Что касается инструментов, нам понадобится эмулятор (QEMU) для запуска нашей операционной системы, ассемблер x86 (NASM) для написания кода нашего загрузчика, а также компилятор C (gcc) и компоновщик (ld) для создания исполняемое ядро ​​операционной системы.Мы соединим все вместе с помощью GNU Make.

На машине x86 BIOS выбирает загрузочное устройство, затем копирует первый сектор устройства в физическую память по адресу 0x7C00. В нашем случае этот так называемый загрузочный сектор будет содержать 512 байт. Эти 512 байтов содержат код загрузчика, таблицу разделов, подпись диска, а также «магическое число», которое проверяется BIOS, чтобы избежать случайной загрузки того, что не должно быть загрузочным сектором. Затем BIOS инструктирует ЦП перейти к началу кода загрузчика, по сути передавая управление загрузчику.

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

  1. Загрузка ядра с диска в память.
  2. Настройка глобальной таблицы дескрипторов (GDT).
  3. Переключение из 16-битного реального режима в 32-битный защищенный режим и передача управления ядру.

Мы собираемся написать загрузчик на сборке x86 с использованием NASM. Ядро будет написано на C. Мы организуем код в несколько файлов, чтобы повысить удобочитаемость и модульность. Следующие файлы будут актуальны для минимальной настройки:

  • mbr.asm — главный файл, определяющий главную загрузочную запись (512-байтовый загрузочный сектор)
  • disk.asm содержит код для чтения с диска с помощью BIOS
  • gdt.asm устанавливает GDT
  • переключение на 32-битный.asm содержит код для перехода в 32-битный защищенный режим
  • kernel-entry.asm содержит код ассемблера для передачи нашей основной функции в kernel.c
  • kernel.c содержит основную функцию ядра
  • Makefile объединяет компилятор, компоновщик, ассемблер и эмулятор, чтобы мы могли загрузить нашу операционную систему

Следующий раздел посвящен написанию файлов, связанных с загрузчиком ( mbr.asm , disk.asm , gdt.asm и switch-to-32bit.asm ). После этого мы напишем ядро ​​и входной файл. Наконец, мы собираемся записать все вместе и попытаться загрузиться.

Файл основной загрузочной записи

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

  [бит 16]
[org 0x7c00]

; куда загрузить ядро
KERNEL_OFFSET равно 0x1000

; BIOS устанавливает загрузочный диск в dl; хранить для дальнейшего использования
mov [BOOT_DRIVE], dl

; стек установки
mov bp, 0x9000
mov sp, bp

вызов load_kernel
вызов switch_to_32bit

jmp $

% включают "disk.asm"
% включают "gdt.asm"
% include "switch-to-32bit.asm"

[бит 16]
load_kernel:
    mov bx, KERNEL_OFFSET; bx -> пункт назначения
    mov dh, 2; dh -> количество секторов
    mov dl, [BOOT_DRIVE]; dl -> диск
    вызов disk_load
    Ret

[бит 32]
BEGIN_32BIT:
    позвоните в KERNEL_OFFSET; передать управление ядру
    jmp $; цикл в случае возврата ядра

; переменная загрузочного диска
BOOT_DRIVE db 0

; набивка
умножить на 510 - ($ - $$) дБ 0

; магическое число
dw 0xaa55
  
Войти в полноэкранный режимВыйти из полноэкранного режима

Первое, на что следует обратить внимание, это то, что мы собираемся переключаться между 16-битным реальным режимом и 32-битным защищенным режимом, поэтому нам нужно указать ассемблеру, должен ли он генерировать 16-битные или 32-битные инструкции.Это можно сделать с помощью директив [биты 16], и [биты 32] соответственно. Мы начинаем с 16-битных инструкций, когда BIOS переходит к загрузчику, в то время как ЦП все еще находится в 16-битном режиме.

В NASM директива [org 0x7c00] устанавливает счетчик местоположения ассемблера. Указываем адрес памяти, куда BIOS помещает загрузчик. Это важно при использовании меток, поскольку они должны быть переведены в адреса памяти при генерации машинного кода, и эти адреса должны иметь правильное смещение.

Оператор KERNEL_OFFSET equ 0x1000 определяет константу ассемблера с именем KERNEL_OFFSET со значением 0x1000 , которое мы будем использовать позже при загрузке ядра в память и переходе к его точке входа.

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

Прежде чем мы сможем вызвать процедуру загрузки ядра, нам нужно настроить стек, установив регистры указателя стека sp (верх стека, возрастает вниз) и bp, (низ стека). Мы поместим нижнюю часть стека в 0x9000 , чтобы убедиться, что мы достаточно далеко от другой памяти, связанной с загрузчиком, чтобы избежать коллизий. Стек будет использоваться, например, операторами call и ret для отслеживания адресов памяти при выполнении процедур сборки.

Теперь пришло время поработать! Сначала мы вызовем процедуру load_kernel , чтобы указать BIOS загрузить ядро ​​с диска в память по адресу KERNEL_OFFSET . load_kernel использует нашу процедуру disk_load , которую мы напишем позже. Эта процедура принимает три входных параметра:

  1. Место в памяти для размещения считанных данных ( bx )
  2. Количество секторов для чтения ( dh )
  3. Диск для чтения ( dl )

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

На этом наш основной код загрузчика завершен. Чтобы сгенерировать действительную главную загрузочную запись, нам нужно добавить некоторое заполнение, заполнив оставшееся пространство 0 байтами умножить на 510 - ($ - $$) db 0 и магическое число dw 0xaa55 .

Затем давайте посмотрим, как определяется процедура disk_load , чтобы мы могли читать наше ядро ​​с диска.

Чтение с диска

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

Чтобы читать данные с диска, нам нужно указать, где начать чтение, сколько читать и где хранить данные в памяти. Затем мы можем отправить сигнал прерывания ( int 0x13 ), и BIOS выполнит свою работу, считывая следующие параметры из соответствующих регистров:

Регистр Параметр
ах Режим (0x02 = чтение с диска)
и Число секторов для чтения
шасси Цилиндр
класс Сектор
дирхам Голова
дл Привод
es: bx Адрес памяти для загрузки (указатель адреса буфера)

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

Давайте теперь посмотрим на содержимое disk.asm .

  disk_load:
    пуша
    толкнуть dx

    mov ah, 0x02; режим чтения
    mov al, dh; читать dh количество секторов
    mov cl, 0x02; начать с сектора 2
                 ; (поскольку сектор 1 - это наш загрузочный сектор)
    mov ch, 0x00; цилиндр 0
    mov dh, 0x00; голова 0

    ; dl = номер диска установлен как вход для disk_load
    ; es: bx = указатель буфера также устанавливается как ввод

    int 0x13; Прерывание BIOS
    jc disk_error; проверьте бит переноса на наличие ошибок

    pop dx; вернуть исходное количество секторов для чтения
    cmp al, dh; BIOS устанавливает 'al' равным количеству прочитанных секторов.
               ; сравните его с 'dh' и выдайте ошибку, если они есть! =
    jne секторов_ошибка
    попа
    Ret

disk_error:
    jmp disk_loop

секторов_ошибка:
    jmp disk_loop

disk_loop:
    jmp $
  
Войти в полноэкранный режимВыйти из полноэкранного режима

Основная часть этого файла — процедура disk_load .Вспомните входные параметры, которые мы установили в mbr.asm :

  1. Место в памяти для размещения считанных данных ( bx )
  2. Количество секторов для чтения ( dh )
  3. Диск для чтения ( dl )

Первое, что должна сделать каждая процедура, — это отправить все регистры общего назначения ( ax , bx , cx , dx ) в стек с помощью кнопки pusha , чтобы мы могли вернуть их перед возвратом, чтобы избегать побочных эффектов процедуры.

Кроме того, мы помещаем количество секторов для чтения (которое хранится в верхней части регистра dx ) в стек, потому что нам нужно установить dh в качестве головного числа перед отправкой сигнала прерывания BIOS, и мы хотите сравнить ожидаемое количество прочитанных секторов с фактическим, сообщенным BIOS, чтобы обнаружить ошибки, когда мы закончим.

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

После выполнения int 0x13 наше ядро ​​должно быть загружено в память. Чтобы убедиться в отсутствии проблем, мы должны проверить две вещи: Во-первых, была ли ошибка диска (обозначенная битом переноса) с использованием условного перехода на основе бита переноса jc disk_error . Во-вторых, совпадает ли количество прочитанных секторов (установленное как возвращаемое значение прерывания в al ) количеству секторов, которые мы пытались прочитать (извлечены из стека в dh ) с помощью инструкции сравнения cmp al, dh и условный переход в случае, если они не равны jne секторов_ошибки .

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

Глобальная таблица дескрипторов (GDT)

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

Для нашего загрузчика мы настроим простейший из возможных GDT, который напоминает плоскую модель памяти.Код и сегмент данных полностью перекрываются и занимают все 4 ГБ адресуемой памяти. Наша GDT имеет следующую структуру:

  1. Дескриптор нулевого сегмента (восемь 0-байтов). Это требуется в качестве механизма безопасности для обнаружения ошибок, когда наш код забывает выбрать сегмент памяти, что приводит к недопустимому сегменту в качестве сегмента по умолчанию.
  2. Дескриптор сегмента кода размером 4 ГБ.
  3. Дескриптор сегмента данных размером 4 ГБ.

Дескриптор сегмента — это структура данных, содержащая следующую информацию:

  • Базовый адрес: 32-битный начальный адрес памяти сегмента.Это будет 0x0 для обоих наших сегментов.
  • Предел сегмента: длина сегмента 20 бит. Это будет 0xfffff для обоих наших сегментов.
  • G (гранулярность): если установлено, предел сегмента считается как 4096-байтовые страницы. Это будет 1 для обоих наших сегментов, что преобразует ограничение в 0xfffff страниц в 0xfffff000 байт = 4 ГБ.
  • D (размер операнда по умолчанию) / B (большой): если установлено, это 32-битный сегмент, в противном случае — 16-битный. 1 для обоих наших сегментов.
  • L (длинный): если установлено, это 64-битный сегмент (D должно быть 0 ). 0 в нашем случае, так как мы пишем 32-битное ядро.
  • AVL (доступно): может использоваться для чего угодно (например, для отладки), но мы просто собираемся установить его на 0 .
  • P (присутствует): A 0 здесь в основном отключает сегмент, не позволяя никому ссылаться на него. Очевидно, для обоих наших сегментов будет 1 .
  • DPL (уровень привилегий дескриптора): уровень привилегий в кольце защиты, необходимый для доступа к этому дескриптору. В обоих наших сегментах будет 0 , поскольку ядро ​​будет к ним обращаться.
  • Тип: Если 1 , это дескриптор сегмента кода. Установить на 0 означает, что это сегмент данных. Это единственный флаг, который отличается между нашим кодом и дескрипторами сегмента данных. Для сегментов данных D заменяется на B, C заменяется на E, а R заменяется на W.
  • C (соответствующий): Код в этом сегменте может вызываться с менее привилегированных уровней.Мы устанавливаем это значение на 0 , чтобы защитить память нашего ядра.
  • E (развернуть вниз): расширяется ли сегмент данных от предела до основания. Актуально только для сегментов стека и в нашем случае установлено значение 0 .
  • R (читаемый): Установите, если сегмент кода может быть прочитан. В противном случае его можно будет только выполнить. В нашем случае это 1 .
  • Вт (с возможностью записи): Установите, если сегмент данных может быть записан. В противном случае его можно будет только прочитать. В нашем случае это 1 .
  • A (доступ): этот флаг устанавливается оборудованием при доступе к сегменту, что может быть полезно для отладки.

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

В дополнение к самому GDT нам также необходимо настроить дескриптор GDT.Дескриптор содержит как расположение GDT (адрес памяти), так и его размер.

Довольно теории, давайте посмотрим на код! Ниже вы можете найти наш gdt.asm , содержащий определение дескриптора GDT и двух дескрипторов сегмента, а также две константы сборки, чтобы мы знали, где внутри GDT расположены сегмент кода и сегмент данных.

  ;;; Метки gdt_start и gdt_end используются для вычисления размера

; дескриптор нулевого сегмента
gdt_start:
    dq 0x0

; дескриптор сегмента кода
gdt_code:
    dw 0xffff; длина сегмента, биты 0-15
    dw 0x0; база сегмента, биты 0-15
    db 0x0; база сегмента, биты 16-23
    db 10011010b; флаги (8 бит)
    db 11001111b; флаги (4 бита) + длина сегмента, биты 16-19
    db 0x0; база сегмента, биты 24-31

; дескриптор сегмента данных
gdt_data:
    dw 0xffff; длина сегмента, биты 0-15
    dw 0x0; база сегмента, биты 0-15
    db 0x0; база сегмента, биты 16-23
    db 10010010b; флаги (8 бит)
    db 11001111b; флаги (4 бита) + длина сегмента, биты 16-19
    db 0x0; база сегмента, биты 24-31

gdt_end:

; Дескриптор GDT
gdt_descriptor:
    dw gdt_end - gdt_start - 1; размер (16 бит)
    dd gdt_start; адрес (32 бита)

CODE_SEG equ gdt_code - gdt_start
DATA_SEG equ gdt_data - gdt_start
  
Войти в полноэкранный режимВыйти из полноэкранного режима

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

Переход в защищенный режим

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

  1. Отключить прерывания с помощью инструкции cli .
  2. Загрузите дескриптор GDT в регистр GDT с помощью инструкции lgdt .
  3. Включить защищенный режим в регистре управления cr0 .
  4. Дальний переход в наш сегмент кода, используя jmp .Это должен быть большой скачок, чтобы очистить конвейер ЦП, избавившись от всех оставшихся предварительно загруженных 16-битных инструкций.
  5. Настройте все регистры сегментов ( ds , ss , es , fs , gs ), чтобы они указывали на наш единственный сегмент данных размером 4 ГБ.
  6. Установите новый стек, установив 32-битный нижний указатель ( ebp ) и указатель стека ( esp ).
  7. Вернитесь к mbr.asm и передайте управление ядру, вызвав нашу 32-битную процедуру входа в ядро.

Теперь давайте переведем это в сборку, чтобы мы могли написать switch-to-32bit.asm :

  [бит 16]
switch_to_32bit:
    cli; 1. отключить прерывания
    lgdt [gdt_descriptor]; 2. загрузить дескриптор GDT
    mov eax, cr0
    или eax, 0x1; 3. включить защищенный режим
    mov cr0, eax
    jmp CODE_SEG: init_32bit; 4. дальний прыжок

[бит 32]
init_32bit:
    mov ax, DATA_SEG; 5. обновить регистры сегментов
    mov ds, топор
    mov ss, топор
    mov es, ax
    мов фс, топор
    mov gs, топор

    mov ebp, 0x

; 6.стек установки mov esp, ebp вызов BEGIN_32BIT; 7. вернуться на mbr.asm

Войти в полноэкранный режимВыйти из полноэкранного режима

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

Ядро C

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

На данный момент задачей ядра будет вывод буквы X в верхнем левом углу экрана. Для этого нам придется напрямую модифицировать видеопамять. Для цветных дисплеев с включенным текстовым режимом VGA память начинается с 0xb8000 .

Каждый символ состоит из 2 байтов: первый байт представляет закодированный ASCII символ, второй байт содержит информацию о цвете. Ниже приведена простая функция main внутри kernel.c , которая печатает X в верхнем левом углу нашего экрана.

  void main () {
    символ * video_memory = (символ *) 0xb8000;
    * video_memory = 'X';
}
  
Войти в полноэкранный режимВыйти из полноэкранного режима

Запись в ядро

Когда вы снова заглянете в наш mbr.asm , вы заметите, что нам все еще нужно вызывать основную функцию, написанную на C. Для этого мы собираемся создать небольшую программу сборки, которая будет размещена в KERNEL_OFFSET расположение перед скомпилированным ядром C при создании загрузочного образа.

Давайте посмотрим на содержимое kernel-entry.asm :

  [бит 32]
[внешняя основная]
позвонить в главный
jmp $
  
Войти в полноэкранный режимВыйти из полноэкранного режима

Как и ожидалось, здесь особо нечего делать. Нам нужно только вызвать нашу основную функцию . Чтобы избежать ошибок в процессе сборки, нам нужно объявить main как внешнюю процедуру, которая не определена в нашем файле сборки. Задача компоновщика — разрешить адрес памяти main таким образом, чтобы мы могли его успешно вызвать.

Важно помнить, что файл kernel-entry.asm не включен в наш mbr.asm , но будет помещен в начало двоичного файла ядра в ходе следующего раздела. Итак, давайте посмотрим, как мы можем объединить все элементы, которые мы построили.

Для создания образа нашей операционной системы нам понадобится немного инструментов. Нам понадобится nasm для обработки наших файлов сборки. Нам нужен gcc для компиляции нашего кода C. Нам нужен ld , чтобы связать наши скомпилированные объектные файлы ядра и нашу скомпилированную запись ядра в двоичный файл.> $ @ запустить: os-image.bin qemu-system-i386 -fda $ < чистый: $ (RM) * .bin * .o * .dis Войти в полноэкранный режимВыйти из полноэкранного режима

Важно отметить, что вам может потребоваться кросс-компиляция ld и gcc , чтобы иметь возможность скомпилировать и связать с автономным машинным кодом x86. По крайней мере, я должен был сделать это на своем Mac.

Теперь давайте скомпилируем, соберем, скомпилируем, загрузим наше изображение в qemu и посмотрим на красивый X в верхнем левом углу экрана!

Мы сделали это! Следующим шагом будет написание некоторых драйверов, чтобы мы могли взаимодействовать с нашими устройствами ввода-вывода, но это будет рассмотрено в следующем посте 🙂


Изображение на обложке Майкла Дзедзича на Unsplash.

Разница между компоновщиком и загрузчиком

В выполнении программы основную роль играют две служебные программы, известные как Linker и Loader.

1. Линкер :
Компоновщик — это специальная программа, которая объединяет объектные файлы, созданные компилятором / ассемблером, и другие фрагменты кода для создания исполняемого файла. расширение exe. В объектном файле компоновщик ищет и добавляет все библиотеки, необходимые для выполнения файла.Он регулирует объем памяти, в котором будет храниться код каждого модуля. Он также объединяет две или несколько отдельных объектных программ и устанавливает связь между ними. Обычно линкеры бывают двух типов:

  1.  Редактор связей.
  2.  Динамический компоновщик 

2. Загрузчик:
Загрузчик — это специальная программа, которая принимает ввод объектного кода из компоновщика, загружает его в основную память и подготавливает этот код для выполнения компьютером. Загрузчик выделяет место в памяти для программы.Даже он устанавливает символическую ссылку между объектами. Он отвечает за загрузку программ и библиотек в операционной системе. Во встроенных компьютерных системах нет загрузчиков. В них код выполняется через ПЗУ. Существуют следующие различные схемы загрузки:

 1. Абсолютные загрузчики.
2. Перемещение погрузчиков
3. Загрузчики с прямым подключением
4. Загрузчики начальной загрузки 

Разница между линкером и загрузчиком:

S.No. LINKER LOADER
1 Основная функция Linker — создание исполняемых файлов. В то время как основной задачей Loader является загрузка исполняемых файлов в основную память.
2 Компоновщик принимает ввод объектного кода, созданного компилятором / ассемблером. Загрузчик принимает исполняемые файлы, созданные компоновщиком.
3 Связывание можно определить как процесс объединения различных частей кода и исходного кода для получения исполняемого кода.

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

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