Для инициализации ядра и запуска операционной системы Linux используется загрузчик. Это программа, которая запускается после завершения проверки оборудования BIOS, подготавливает оборудование к работе, задает нужные параметры ядра и позволяет выбрать операционную систему. Основная задача загрузчика дать пользователю выбрать операционную систему для загрузки.
Раньше для загрузки Linux использовалось несколько загрузчиков, это isolinux, lilo, grub. Но сейчас чаще всего применяется Grub или полное его название GRand Unified Bootloader. В этой статье будет рассмотрена установка загрузчика Grub через терминал. Также мы поговорим как установить grub на компьютер с UEFI, тоже вручную.
Содержание статьи
- Немного теории
- Установка загрузчика Grub в MBR для BIOS
- Установка загрузчика Grub в GPT для BIOS
- Установка GRUB UEFI GPT
- Выводы
Немного теории
Как я уже сказал, основная задача загрузчика - предоставить возможность выбора операционной системы перед загрузкой. Не думайте, что в Windows загрузчик не используется, там он тоже есть и работает, подобно тому, как работает Grub.
Загрузчик может быть установлен в различные таблицы разделов диска. Сейчас самые используемые это GPT и MBR. Установка загрузчика Grub немного отличается для каждой из этих таблиц, учитывая их особенности. GPT - более новая и функциональная таблица разделов, MBR - уже устаревшая, но до сих пор часто используемая.
В MBR вариантов немного, Grub записывается в область MBR на диске. Размер сектора MBR занимает первых 512 байт и этого вполне достаточно для того, чтобы установить туда загрузчик.
GPT предоставляет более широкие возможности. Во-первых, для совместимости в GPT эмулируется сектор MBR, и мы можем установить GRUB туда, но такой вариант очень ненадежный и не рекомендуемый. Во-вторых, теперь появилась возможность устанавливать Grub на раздел диска. Мы просто создаем раздел на диске размером 1 Мб и записываем туда то, что раньше записывалось в MBR, это делает установку загрузчика более надежной и защищенной от сбоев.
UEFI предоставляет совсем иной способ установки загрузчика. Тут его не нужно никуда записывать, загрузчик - это обычное приложение EFI, которое помещается на раздел EFI и уже там полностью успешно работает наряду с другими приложениями.
Для установки Grub будет использоваться команда grub-install, во всех случаях. Давайте кратко рассмотрим ее синтаксис и параметры. Синтаксис:
$ grub-install опции диск
Параметров здесь достаточно много, но нам будут нужны только некоторые:
- --compress - сжать файлы загрузчика;
- --install-modules=модули - установить только эти модули;
- --modules - записать эти модули в MBR;
- --boot-directory - использовать другой каталог для файлов Grub;
- --bootloader-id - имя загрузчика в меню EFI;
- --core-compress - сжимать образ, загружаемый в MBR;
- --efi-directory - использовать системный раздел EFI;
- --force - установить несмотря на ошибки;
- --recheck - удалить существующую карту устройств, помогает если возникают ошибки;
- --removable - установка grub на флешку (только EFI);
Основу разобрали. Теперь перейдем к установке. Дальше я буду предполагать, что все действия выполняются из системы, для которой нужно установить загрузчик или из chroot окружения этой системы.
Установка загрузчика Grub в MBR для BIOS
Начнем с самого просто и привычного. Данная инструкция как установить загрузчик Grub подойдет для любого дистрибутива, поскольку команды везде почти одинаковые. Здесь не нужно устанавливать никаких дополнительных пакетов или создавать разделов. Установка Grub на жесткий диск выполняется командой:
sudo grub-install /dev/sda
Или:
sudo grub2-install /dev/sda
Утилиты grub в разных дистрибутивах могут включать двойку, а могут и не включать. Здесь /dev/sda - ваш жесткий диск. Теперь генерируем конфигурационный файл, чтобы автоматически определились установленные операционные системы:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Или:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Готово. По поводу двойки здесь такое же замечание. Если вы хотите установить Grub на флешку в MBR, то тут тоже нет проблем просто примонтируйте флешку и выполните такую команду:
sudo grub-install --root-directory=/mnt/USB/ /dev/sdb
Здесь /mnt/USB - папка, куда была смотирована ваша флешка, а /seb/sdb - сама флешка. Только здесь есть одна проблема, конфигурационный файл придется делать вручную.
Установка загрузчика Grub в GPT для BIOS
Во-первых, мы можем ничего не менять и установить Grub так, как описано в предыдущем способе. Но тогда он будет установлен в область совместимости с MBR, а это не надежно. Поэтому рекомендуется установить grub так, как описано ниже, на отдельный раздел.
Нужный нам раздел можно создать в установщике любого дистрибутива, если вы выполняете установку в графическом интерфейсе или с помощью gparted. Нам нужен раздел размером 1 Мегабайт без файловой системы и с меткой grub_bios:
Дальше примените изменения, нажмите на разделе правой кнопкой, выберите manage flags и добавьте флаг grub_bios:
Готово. Если у вас нет под рукой доступа к графическому интерфейсу, вы можете создать такой раздел через терминал. Утилита fdisk не поддерживает работу с gpt, поэтому будем использовать gfdisk. Сначала запустите утилиту:
sudo gdisk /dev/sda
Чтобы создать новый раздел нажмите n и выберите номер раздела:
Соглашаемся с начальным сектором, будет использован первый же свободный:
Выбираем конечный сектор раздела. По умолчанию будет использоваться максимальный. Нам нужен раздел размером 1 Мб. Размер одного сектора GPT - 512 байт, поэтому нам нужен раздел размеров 2048 секторов. Таким образом, конечный сектор будет 24000 с чем-то.
HEX Code - это тот код, который скажет системе, что этот раздел нужно использовать для Grub, нужно установить ef02:
Готово, осталось нажать w для записи изменений на диск:
Установка grub на жесткий диск дальше выполняется точно так же, как и в предыдущем способе:
sudo grub-install /dev/sda
Осталось создать конфигурационный файл grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Теперь переходим к самому сложному, как установить grub efi.
Установка GRUB UEFI GPT
Установка Grub UEFI чем-то похожа на установку в GPT, тут у нас тоже будет отдельный раздел, только на этот раз не для загрузчика, а раздел EFI. Если у вас уже установлена Windows, то, скорее всего, он уже существует. Этот раздел обычно занимает 100 Мб, имеет файловую систему fat32 и флаг ESP. Вот так он будет выглядеть:
Если же такого раздела нет, мы можем его создать с помощью gparted. Для этого создаем раздел с такими параметрами:
Размер 100 Мегабайт, имя раздела ESP, файловая система fat32. Дальше примените изменения и установите для раздела флаг ESP:
То же самое вы можете сделать в Gdisk, только на этот раз нужно устанавливать HEX Code раздела ef00. После того как раздел был создан, подключаем его к нашей файловой системе:
sudo mkdir /boot/efi
$ sudo mount /dev/sda2 /boot/efi
Здесь /dev/sda2 - это наш EFI раздел. Далее необходимо установить нужные пакеты, если они еще не установлены. В Ubuntu это будет выглядеть вот так:
sudo apt install grub-efi efibootmgr
Дальше останется только установка grub efi. Система сама определит нужный раздел и скопирует туда все файлы:
grub-install /dev/sda
Установка Grub efi на MBR все выглядит точно так же, только тут есть несколько ограничений. Раздел ESP нужно создавать только в начале диска. В режиме EFI тоже можно установить GRUB на флешку, и это не очень сложно. Для этого используется команда:
grub-install --boot-directory=/mnt/sdb2/boot --efi-directory=/mnt/sdb1 --target=x86_64-efi --removable
Рассмотрим опции: --boot-directory - задает папку с файлами загрузчика на флешке, --efi-directory - папка куда смонтирован раздел efi, --target - архитектура целевой системы и --removable говорит, что это установка на съемный носитель. С UEFI все. После перезагрузки и выбора в меню EFI пункта связанного с Grub, вы получите доступ к привычному меню grub и сможете выбрать нужный параметр.
Выводы
Теперь установка Grub не вызовет у вас проблем. Мы разобрали не только как установить Grub2 в MBR но и в EFI. Кроме того, всю приведенную здесь информацию вы можете использовать для восстановления Grub. Так вы будете лучше понимать что происходит во время восстановления. А настройку параметров и ручное создание конфигурационного файла мы рассмотрим в одной из следующих статей.
Спасибо за статью!
Может Вы подскажете, какие есть "красивые" надстройки на GRUB или самостоятельные загрузчики? Раньше был Burg, но проект умер ещё в 2011... ((
Не знаю есть ли такие, но можно устанавливать темы.
Burg работает, по крайней мере на Linuxmint18 точно
Проверьте правильность пути к файлу CSS. Страница отображается без стилей, только HTML
После проверки исходного кода страницы на валидность https://validator.w3.org/ обнаружена ошибка.
Строка 85 исходного кода где указан адрес файла стилей CSS
//fonts.googleapis.com/css?family=Megrim|Raleway|Open+Sans:400,400italic,700,700italic
содержит недопустимые символы | , которые нужно заменить кодом %7С
Посмотрите теперь, есть ли разметка.
Разметка была без отображения стилей, так, как будто файл стилей отсутствовал. Было неудобно ориентироваться на странице, хоть это и не критично. Я пытался обновить текущую страницу, но безрезультатно. Сейчас все отображается как надо, хоть эта ошибка в исходном коде страницы осталась. Мало того, после отправки моего первого комментария, страница стала отображаться корректно, но я не смог понять причину, ведь исходный код страницы оставался неизменным, поэтому не стал отправлять еще одно сообщение. Прошу прощения, если зря отнял у Вас время.
Проблема была вызвана не той ошибкой. Ошибка в css библиотеках google и это уже не в нашей компетенции. Причиной проблемы был плагин Autoptimize, но насколько я понял от него больше проблем чем оптимизации, поэтому плагин был отключен.
> Установка загрузчика Grub в GPT для BIOS
> $ sudo grub-install /dev/sda3
Здесь ошибочка:
- указывать для установки GRUB2 в этом случае нужно не раздел EF02 (BIOS boot partition, /dev/sda3 по тексту), а диск: /dev/sda
- при этом раздел EF02 может а). располагаться в любом месте диска (начало, конец,...), б). иметь любой номер, например /dev/sda99, в). иметь размер от 35 Kb до 1 Mb (1Mb называется в документации как максимальный раздел, куда все модули влезут)
- в любом таком случае установщик скомпонует вторичный загрузчик core.img и запишет его в раздел EF02 (лишь бы такой был на диске), а первичный загрузчик в 44 байт запишет в резервный MBR (LBA0).
Это всё есть в документации GRUB2 ... хотя и разбросано там по тексту.
Спасибо за этот коммент, жаль хозяин сайта не поправил, а то потратил время, чтобы напороться на ошибки при указании партиции а не диска
Статья действительно полезная, вот только у меня возникла проблема с grub. Есть win10 x64 на ssd и установлена linux 16.04 на жестком диске. Все делал по инструкции, grub установил в сектор efi. Но вместо меню при запуске загружается консоль grub. А вот если в win10 использовать особый вариант загрузки и использовать жесткий диск, то меню появляется и все нормально. Как это устранить?
https://losst.pro/nastrojka-zagruzchika-grub
Здравствуйте.
Возникла проблема с установкой с efi
У меня efi-раздел -- это sda1, в остальном все делала как в инструкции. Но выдало ошибку, что hostdisk//dev/sda1 не найден.
Как быть в таком случае?
У меня та же ошибка
grub-install /dev/sda
Installing for x86_64-efi platform.
grub-install: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-install: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-install: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-install: error: disk `hostdisk//dev/sda1' not found.
Пока не знаю как решить
Здравствуйте, Владимир!
Удалось ли Вам решить данную проблему?
Если удалось, то каким образом?
перед командой пропиши sudo
Привет народ я ищу батник программу которая устонавливает загрузчик на любой носитьел без предупреждения У меня была такая когда то Но сейчас не могу найти
Приветствую!
У меня стоит Windows 10 Enterprise x64, хочу рядом (2-й системой) поставить себе Linux Mint 18.2 Sonya Cinnamon 64-bit.
Скачал дистрибутив, сделал флешку, начал установку.
Поставилось, после перезагрузки комп продолжает грузиться в Windows, выбора операционной системы в самом начале загрузки компа нет. Я так понимаю у меня или не корректно поставилась система, или не поставился Grub.
А может в Linux Mint нету загрузчика?
Порекомендуйте мне решение проблемы пожалуйста, если оно есть в статье, то какое именно.
P.S. У меня UEFI.
Поставил Ubuntu 17.10 на Lenovo Ideacentre Stick 300, статья помогла. Без ESP раздела под Grub установка прерывалась. Спасибо!
Как обычно пытаюсь все делать по инструкции https://losst.pro/ustanovka-zagruzchika-grub "УСТАНОВКА ЗАГРУЗЧИКА GRUB В GPT ДЛЯ BIOS" и не получается, ошибка выходит когда ввожу grub-install /dev/sda
пишет
grub-install: error: failed to get canonical path of " /cow".
Решил проблему с установкой на gpt , оказалось все очень просто для раздела загрузчика не хватало флага legacy_boot . Должно на разделе загрузчика стоять 2 флага bios_grub и legacy_boot
делал вот по этой инструкции https://losst.pro/ustanovka-zagruzchika-grub#comment-21806 раздел "УСТАНОВКА ЗАГРУЗЧИКА GRUB В GPT ДЛЯ BIOS"
С консоли вот такую команду не запускал sudo grub-install /dev/sda
а просто как только разметил диски через gparted и поставил флаги, создал LVM тома для root home и swap . Запустил установщик стандартный указал для чего какой раздел, для своего grub раздела указал что-то типа "резервный загрузочный раздел Bios" и нажал установка и все встало без проблем.
У меня вопрос более сложный, требует профессионального совета.
На старом ноутбуке появилась неисправность - нельзя войти в БИОС.
В настройках сохранилась первоочерёдность загрузок с DVD-привода.
Устанавливаю Минт19 и Win10 LTSC на десктопе, а потом переставляю винт на ноутбук. На десктопе всё работает хорошо. На ноутбуке не появляется окно выбора ОС. Загружается только Минт или Win10 , в зависимости от первоочерёдности настроенной в GRUB по вашей статье.
Если винт с ОС настроен в MBR, то всё работает отлично и можно производить установку с DVD ноутбука.
Вопрос, как добиться появления окна выбора ОС с системой EFI или наоборот, как установить Win10 LTSC (именно эту версию) на винт MBR.
> В MBR вариантов немного, Grub записывается в область MBR на диске. Размер сектора MBR занимает первых 512 байт и этого вполне достаточно для того, чтобы установить туда загрузчик.
Во-первых, код загрузчика составляет 446 байт, а не 512, во-вторых, 446 байт разумеется недостаточно для Grub2. В-третьих, способов установки несколько. При установке в MBR, в MBR меняется код загрузчика так, чтобы он ссылался на дополнительный код загрузчика, который пишется после* MBR. (Гуглим википедия MBR) Дополнительный код загрузчика занимает больше места, поэтому может читать файловую систему, что позволяет загружать Grub2 с любого места на разделе. (А не только с начала раздела) Сам же Grub2 устанавливает свои файлы на раздел*, по пути, который вы указали. Если эти файлы накроются, например, с переустановкой системы или ещё чего, то и Grub2 уже не запуститься. Установка на отдельный раздел диска в этом смысле более безопасна, например на 1-ый раздел первого диска: 1) sudo mount /dev/sda1 /boot 2) sudo grub-install /dev/sda1 --force
Запомните, /dev/sda1 - настраивает Grub для загрузки с раздела, это не путь, по которому будет установлен Grub. По умолчанию Grub установит свои файлы в папочку /boot, хотите другую папку? Команда: --boot-directory=/Путь.
... Утилита fdisk не поддерживает работу с gpt, поэтому будем использовать gfdisk. (наверно, всё же gdisk)
А как-же остальные команды ? хотелось-бы их всех видеть(
ОЛОЛО
везде поют как просто перейти на линукс.. скачал минт пробовал ставить его неск раз.. увы без установочной юсб не запускалась.. вечерок покурив форумы узнал про некий grub ..тогда терпения разхобратся в вопросе нехватило.. убил еще полдня на восстановление харда в первозданный вид чтобы вернуть на него винду)) так сказать первое знакомство состоялось и ладно.. понял что для линукса пока не созрел- прошло время наткнулся на вашу статью.. сохранил на винт тк надо не менее недели мне наверно чтобы все перечитать понять и вбить все это ручками найдя куда и тп)).. понятное дело что юзать придется в это время или 2 пк( один с виндой стабильной чтобы найти инфу если что пойдет не так) -второй с подопытным минтом.. надеюсь итогом будет наконец таки рабочий линукс на машине для дальнейшего его познания.. спасибо за труд!вместе победим)