Bootloader что это


Что такое Bootloader и для чего он служит

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

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

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

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

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

Теги
  • Новичкам в Android
  • Операционная система Android

Лонгриды для вас

Настройки времени на телефоне, о которых должен знать каждый из вас

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

Читать далее

Зачем нужен режим Не беспокоить на Андроид и как им пользоваться

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

Читать далее

Почему не работает Wi-Fi на телефоне, а в настройках — сеть без доступа к интернету

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

Читать далее

1 комментарий

Новый комментарий

Новости партнеров

  • Apple готовит мощнейший Mac со 192 ГБ ОЗУ. Компьютеры на Windows начали нервничать

  • Когда выйдет iPhone SE 4? Даже Apple этого не знает: он будет очень дорогим

  • Как полностью удалить сообщение в Ватсапе. 3 лучших способа

  • Когда выйдет iPhone SE 4? Даже Apple этого не знает: он будет очень дорогим

GRUB - загрузчик системы | Русскоязычная документация по Ubuntu

Содержание

  • GRUB - загрузчик системы

    • Первые шаги

    • /etc/default/grub

      • Изменение стандартного пункта загрузки

      • Изменение времени отображения меню

      • "Скрытое" меню

      • Убираем подменю

      • Особые случаи

      • Изменение стандартных параметров загрузки ядра

    • /etc/grub.d

    • Команды консоли GRUB

      • ls

      • cat

      • linux

      • initrd

      • chainloader

      • root

      • set

      • search

      • lsfonts

      • help

      • halt

      • reboot

      • background_image

      • terminal_output. console

    • Применение изменений

    • Нюанс с нумерацией дисков и разделов

    • Создание дополнительного меню загрузки

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

      • Зачем это сделано

      • А что если...

      • А что если отключить?

      • Отключаем...

    • Ссылки

GRUB (GRand Unified Bootloader1)) — программа-загрузчик операционных систем.
GRUB является эталонной реализацией загрузчика, соответствующего спецификации Multiboot и может загрузить любую совместимую с ней операционную систему. Среди них: Linux, FreeBSD, Solaris и многие другие. Кроме того, GRUB умеет по цепочке передавать управление другому загрузчику, что позволяет ему загружать Windows (через загрузчик NTLDR), MS-DOS, OS/2 и другие системы.
После настройки GRUB пользователь при включении компьютера видит список операционных систем, которые установлены на его компьютер и которые можно загрузить, выбрав подходящую и нажав Enter.
GRUB позволяет пользователю при загрузке задавать произвольные параметры и передавать их в ядро Multiboot-совместимой ОС для дальнейшей обработки.
GRUB — самый популярный загрузчик в мире Linux и является загрузчиком по умолчанию в большинстве известных дистрибутивов.

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

Первые шаги

При первом сравнении GRUB со старым GRUB Legacy самым весомым различием оказывается измененная структура файлов конфигурации.

Настройка GRUB производится теперь принципиально иным способом - основным файлом конфигурации является «/boot/grub/grub.cfg«. Однако же, не торопитесь править его так, как привыкли это делать с «menu.lst» в GRUB Legacy. При внимательном прочтении мы видим в начале файла «grub.cfg» такие строки:

# # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #

И об этом нас предупреждают не просто так. Ведь «grub.cfg» генерируется автоматически с использованием нескольких скриптов. Поэтому после следующего обновления GRUB ваш «grub.cfg» будет создан заново, и все ваши правки будут утрачены.

Кроме файла «grub.cfg», отвечающего за загрузочное меню, имеются файл «/etc/default/grub» и папка «/etc/grub.d«. Рассмотрим их подробнее.

/etc/default/grub

Данный файл содержит в себе основные настройки для GRUB. Через него, собственно, они и изменяются. Для наглядности ниже приводится примерное содержимое этого файла:

GRUB_DEFAULT=6 #GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT="2" GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entrys #GRUB_DISABLE_LINUX_RECOVERY="true"

Файл представляет из себя набор опций в понятном формате ОПЦИЯ=ЗНАЧЕНИЕ.
Наиболее часто встречающаяся потребность при настройке GRUB - изменение стандартного пункта загрузки и/или времени показа меню. Рассмотрим же, как это делается.

Изменение стандартного пункта загрузки

По умолчанию стандартный пункт (выделенный при показе меню) - верхний в списке. После установки Ubuntu она окажется наверху, а Windows, например, будет последним пунктом.

Значением «GRUB_DEFAULT» является номер пункта меню, который должен быть выбран стандартным. Чтобы выбрать другой пункт, нам нужно узнать, каким по счету он будет в списке. Есть два варианта:

  • Просмотреть содержимое «/boot/grub/grub.cfg» и сосчитать, какой по счету окажется нужная запись;

  • Перезагрузиться и более наглядно посмотреть меню загрузки.

Нумерация пунктов меню начинается с нуля. Значение по умолчанию - 0, поэтому и выбирается первый пункт.

Пятому сверху пункту будет соответствовать значение 4, второму - 1, первому - 0. В вышеприведенном примере установлено значение 6, то есть стандартным задан седьмой пункт меню.

В качестве значения можно указать saved. Это позволит использовать команды grub-reboot и grub-set-default для выбора пункта меню по-умолчанию при последующих перезагрузках. Например:

  • Команда sudo grub-reboot 1 однократно выбирает второй пункт меню по-умолчанию (только для следующей загрузки),

  • Команда sudo grub-set-default 2 выбирает на постоянной основе третий пункт меню по-умолчанию.

Или же можно указать значение идентификатора (id), оно должно быть именно таким, каким мы его видим в «/boot/grub/grub.cfg«. Данный способ удобен тем, что после обновления ядра не придется изменять настройки из-за сбившейся нумерации.

Пример

Если в «grub.cfg» пункт меню выглядит так:

menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux { ... }

То значение параметра «GRUB_DEFAULT» должно указываться именно в виде:

GRUB_DEFAULT=example-gnu-linux

Ранее документацией предлагалось указывать название пункта меню загрузки (так, как он отображается в самом меню). Хотя этот способ по-прежнему работает, использовать его не рекомендуется, поскольку эти названия могут меняться, например, при обновлении ядра/версии ОС

Изменение времени отображения меню

По умолчанию меню загрузки отображается 10 секунд (при наличии других установленных ОС, если система одна - GRUB по умолчанию не отображается и сразу начинает загрузку), после чего загружается стандартный пункт, если раньше не нажат Enter или не выбран другой пункт, что останавливает таймер. За эту задержку отвечает параметр «GRUB_TIMEOUT», значение задается в секундах.

Если поставить значение «-1», то меню будет отображаться до тех пор, пока пользователь не выберет какой-либо пункт

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

"Скрытое" меню

В случае, если на компьютере установлена только Ubuntu, меню загрузки по умолчанию не будет отображаться, а GRUB будет загружать вас напрямую в систему. Однако же, иногда может возникнуть необходимость загрузиться с другим ядром или же запустить проверку памяти. Для этого предусмотрено «скрытое меню» за него отвечает параметр «GRUB_HIDDEN_TIMEOUT».

В случае, когда установлены другие ОС, этот параметр закомментирован (# в начале строки). Данное значение позволит приостановит загрузку на заданное количество секунд, давая пользователю возможность вызвать меню загрузки, нажав Esc.

Если значение установлено в 0, то задержки не будет, однако вызвать меню можно, удерживая при загрузке Shift

Параметр «GRUB_HIDDEN_TIMEOUT_QUIET» отвечает за отображение таймера во время паузы. Если его значение «true» таймер отображаться не будет, а со значением «false» будет.

Чтобы GRUB отображал меню со списком установленных операционных систем, без нажатия клавиш вызова меню (например Shift или Esc) необходимо:

sudo gedit /etc/default/grub
GRUB_TIMEOUT="10"
  • Чтобы меню GRUB отображалось, необходимо закомментировать следующую строчку (значком #):

#GRUB_HIDDEN_TIMEOUT=0
sudo update-grub

Убираем подменю

Чтобы раскрыть все меню используем такой параметр:

GRUB_DISABLE_SUBMENU="y"

Это бывает нужно если хотим загружаться не с первой строчки.

Особые случаи

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

info -f grub -n 'Simple configuration'

Изменение стандартных параметров загрузки ядра

Иногда бывает необходимо загружать ядро системы с какими-либо особыми параметрами (например, для корректной работы специфического оборудования). В этом случае весьма полезен будет параметр «GRUB_CMDLINE_LINUX_DEFAULT» он отвечает за те параметры, с которыми запускаются ядра при загрузке. Его значение по умолчанию - «quiet splash»: происходит показ графической заставки при запуске системы без отображения какой-либо текстовой информации.

Вы можете добавить необходимые вам параметра запуска ядра, приведя это значение к виду «quiet splash your_param1 your_param2», то есть дописав через пробел нужные параметры.

Пример

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

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

На следующую:

GRUB_CMDLINE_LINUX_DEFAULT=""

/etc/grub.d

Эта папка содержит в себе скрипты, которые используются для создания файла «grub.cfg». При обновлении GRUB они находят все установленные на компьютере системы и ядра и формируют в файле «grub.cfg» меню загрузки, которое мы и видим. Два основных из них:

  • «10_linux» и «30_os-prober» отвечают за поиск Linux ядер и остальных ОС на других разделах соответственно.

  • Файл «40_custom» позволяет добавлять свои пункты загрузки. Это может быть полезно, если вы, например, хотите добавить какие-то особые варианты загрузки системы.

Файл «40_custom» должен заканчиваться пустой строкой, иначе последний пункт не будет отображаться в меню!

Пример

Добавляем режим загрузки без графической заставки, с текстовым отображением процесса загрузки (verbose mode). Для этого мы немного отредактируем обычный пункт загрузки. допустим, он выглядит так (в «/boot/grub/grub.cfg«):

menuentry "Ubuntu, Linux 2.6.32-020632rc6-generic" { recordfail=1 if [ -n ${have_grubenv} ]; then save_env recordfail; fi set quiet=1 insmod ext2 set root=(hd0,5) search --no-floppy --fs-uuid --set 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 linux /boot/vmlinuz-2.6.32-020632rc6-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro quiet splash initrd /boot/initrd.img-2.6.32-020632rc6-generic }

Для того, чтобы сделать из этого verbose mode, нам нужно убрать опции quiet и splash и изменим название самого пункта. В итоге получаем:

echo "adding verbose mode" >&2 menuentry "Ubuntu, Linux 2.6.32.rc6 verbose-mode" { recordfail=1 if [ -n ${have_grubenv} ]; then save_env recordfail; fi set quiet=1 insmod ext2 set root=(hd0,5) search --no-floppy --fs-uuid --set 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 linux /boot/vmlinuz-2. 6.32-020632rc6-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro initrd /boot/initrd.img-2.6.32-020632rc6-generic }

Все это и добавляем в «40_custom» в конец файла. Строка с echo не является обязательной она лишь будет сигнализировать нам о том, что наш пункт найден и добавлен при обновлении GRUB.

Команды консоли GRUB

Чтобы попасть в консоль, нужно нажать клавишу C во время отображения меню загрузки.

ls

Довольно универсальная команда при использовании в чистом виде выдает список жестких дисков и разделов. Также она может быть использована как одноименная команда в Linux - для вывода содержимого папки. например:

ls /boot/grub

Еще одно полезное свойство комадны «ls» - она позволят получить информацию о любом разделе:

ls (hd0,5)

Команда сообщит нам тип файловой системы на разделе, метку раздела (если таковая имеется), UUID и дату последнего изменения данных на разделе (в формате UTC).

cat

Данная команда выводит содержимое заданного файла, используется в формате:

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

linux

Аналог команды «kernel» в GRUB Legacy. Загружает указанное Linux-ядро:

linux файл_ядра опция1=значение опция2 опция3

Например, так:

linux /boot/vmlinuz-2.6.32-020632-generic root=/dev/sda5 single

initrd

Загружает указанный initrd-образ. Используется так:

initrd /boot/initrd.img-2.6.32-020632-generic

Обратите внимание, что версия initrd должна соответствовать версии загружаемого ядра!

chainloader

Передает управление загрузкой по цепочке другому загрузчику (загрузчик ищется на заданном в качестве root разделе). В общем случае требует указания файла для загрузки:

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

Для (загрузчика Windows) можно использовать:

chainloader +1 boot

root

При использовании без параметров сообщает, какой раздел сейчас используется в качестве корневого и тип файловой системы на этом разделе, также команда может быть использована для задания другого root-раздела. Раздел задается в «grub device» - формате »(hd*,*)«. например:

root (hd0,5)

После задания раздела команда сообщит новый root-раздел и тип файловой системы. Примечание: «root hd(*,*)» не всегда корректно срабатывает. более предпочтительным вариантом является «set root» (см. ниже)

set

Весьма универсальная команда для изменения различных параметров. Служит для задания значений переменных и используется в формате:

set переменная=значение

Наиболее необходимое ее применение - для задания root-раздела, например:

set root=(hd0,5)

Также с ее помощью можно, например, «на лету» изменить цвет текста в меню и консоли, что позволяет опробовать цветовую схему перед установкой ее в качестве основной. Для этого изменяем переменные «color_normal» - для обычного пункта (и текста в консоли) и «color_highlight» для выделенного пункта соответственно. Например, попробуем такой вариант:

set color_normal=magenta/green set color_highlight=light-blue/black

search

Служит для поиска раздела по UUID, метке или заданному файлу. Имеет следующие ключи:

  • -u (или –fs-uuid) - поиск раздела по UUID

  • -l (или –label) - поиск по метке раздела

  • -f (или –file) - поиск по указанному файлу

  • -n (или –no-floppy) - не проверять флоппи-дисковод (чтоб не трещал)

  • -s (или –set) - установить найденный раздел в качестве значения заданной переменной.

lsfonts

Команда отобразит список загруженных в настоящий момент шрифтов.

help

При использовании в чистом виде выведет список доступных команд. В формате:

help r

Выведет справку по всем командам, начинающимся на «r».

help search

Отобразит справку по команде «search»

halt

Выключение компьютера.

reboot

Перезагрузит компьютер.

background_image

Позволяет «на лету» изменить фоновое изображение. Используется в формате:

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

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

Данная команда не заменит ваши настройки оформления, фон будет изменен лишь на текущий сеанс.

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

terminal_output.console

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

Применение изменений

После того, как мы отредактировали и сохранили наши файлы. Нужно закончить дело, обновив файл «grub.cfg». Это довольно просто - нужно всего лишь выполнить команду:

sudo update-grub

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

Нюанс с нумерацией дисков и разделов

В GRUB имеется еще одно важное отличие от старого GRUB Legacy, а именно изменилась нумерация разделов диска. Нумерация дисков идет с нуля, а нумерация разделов - с единицы!

Если в GRUB Legacy первый раздел первого диска (sda1) именовался «hd0,0». То в GRUB, первый раздел первого диска (sda1) теперь будет «hd0,1».

Создание дополнительного меню загрузки

Суть в том, что вместо уже знакомого «grub.cfg» можно загрузить свой файл настройки загрузочного меню со своей конфигурацией. Это позволяет создать дополнительное меню с другими пунктами, настройками, оформлением и т.д. Итак, создадим наш новый файл конфигурации. Создавать с нуля не будем, а скопируем «grub.cfg», дав новое имя:

sudo cp /boot/grub/{grub,custom}.cfg

Поскольку файл скопируется с правами 444, выставим ему права на запись:

sudo chmod 744 /boot/grub/custom.cfg

Теперь открываем его в любимом текстовом редакторе и изменяем:

sudo gedit /boot/grub/custom. cfg

Если вы в достаточной мере знаете структуру «grub.cfg» и понимаете, какие строки что делают, можно значительно сократить свой файл, убрав лишнее и привести его к более удобочитаемому виду.

  • set default задаем пункт меню по умолчанию, указав или его номер или точное название.

  • set gfxmode здесь задается разрешение экрана в привычном формате WxH. Можно также указать глубину цвета, например «1024x768x32». можно указать несколько вариантов, при этом если первый не сможет быть установлен, будет загружен второй, если и он не сработает - третий и т.д. Например:

    set gfxmode=1024x768x32,1024x768x24,1024x768
  • Теперь зададим время отображения меню, для этого ищем строку set timeout, и устанавливаем значение -1 для отключения таймера.

Для задания фонового изображения найдем строку с if background_image (подразумевается, что в вашем «grub. cfg» используется фоновое изображение. Если нет - смотрите пример файла в конце раздела). После команды background_image прописан путь к файлу картинки, поменяйте его на нужный файл.

Обратите внимание, что разрешение картинки должно соответствовать заданному выше разрешению экрана!

Строкой ниже мы можем задать цвета текста. Изменяются они так же, как и в »/etc/grub.d/05_debian_theme« (см. Настройка внешнего вида загрузчика GRUB). Можно проделать один интересный трюк: уберите строки с set color_highlight и else теперь настройка будет такой:

  • color_normal задает цвет/фон текста сверху и снизу (версия grub и комментарии) и текста в консоли

  • menu_color_normal отвечает за цвет пунктов меню и фон прямоугольника, в котором они находятся

  • menu_color_higlight задает цвет/фон выделенного пункта меню.

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

Настроив свой файл, сохраните его Ctrl+Shift и закройте.

Теперь необходимо добавить дополнительное меню. Для этого в файле »/etc/grub.d/40_custom« добавим запись такого вида:

menuentry "Название меню"{ configfile /boot/grub/custom.cfg }

Если ваш путь к файлу отличается - исправьте его.

Если вы используете отдельный boot-раздел, путь будет таким: »/grub/custom.cfg«. Также учтите, что «40_custom» должен заканчиваться пустой строкой!

Если вы хотите, чтобы ваше новое меню загружалось вместо стандартного «grub.cfg», установите новый пункт в качестве пункта по умолчанию, но перед этим проверьте новое меню на работоспособность.

Обновите свой «grub.cfg» выполнив команду:

sudo update-grub

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

В качестве образца пример файла «custom. cfg» (файл урезан до необходимого минимума):

have_grubenv=true load_env ### выбранный пункт по умолчанию set default=0 ### таймаут меню set timeout=2 ### разрешение set gfxmode=800x600x32,800x600x24,800x600 insmod ext2 search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else terminal gfxterm; fi insmod png ### фоновое изображение background_image /usr/share/images/grub/yellow.png ### настройка цветов set color_normal=black/black set menu_color_normal=green/light-blue set menu_color_highlight=red/blue menuentry "9.10 @ 2.6.32" { search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro quiet splash initrd /boot/initrd.img-2.6.32-020632-generic } menuentry "9.10 @ 2.6.32 (recovery)" { search -u 0e717c2a-24bd-4abe-acfe-ecf98fc814f8 -s linux /boot/vmlinuz-2.6.32-020632-generic root=UUID=0e717c2a-24bd-4abe-acfe-ecf98fc814f8 ro single initrd /boot/initrd. img-2.6.32-020632-generic } menuentry "windooz"{ search -u AC9C75E59C75AA8A -s chainloader +1 }

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

Если загрузка ОС не закончилась успешно, или осуществлялась загрузка в режим восстановления, то при следующей загрузке - меню выбора GRUB будет выводится и ждать явного вмешательства оператора (так же, как если бы вы выставили GRUB_TIMEOUT=-1). При этом последующие аппаратные сбросы системы - не помогут проскочить меню.

Зачем это сделано

При загрузке в лог файлы пишется информация и размеры логов растут. В нормально загруженной систем работают сервисы, которые архивируют и подчищают логи. В нормально работающей системе постоянно пополнение лог-файлов не требует внимания со стороны пользователя.
Совсем иная ситуация при загрузке - никакие сервисы по очистке логов не работают (они запускаются позже) и, если, в процессе загрузки система свалится и начнет перезагружаться, то лог будет только расти. И расти он будет до тех пор пока будут повторятся перезагрузки, и будет хватать места на том разделе диска, где расположен каталог /var/log. А когда на разделе с /var/log место кончится то система зависнет уже наглухо и даже в режим восстановления ее будет не загрузить. Загрузится можно будет только с LiveCD/USB (с Live системы и надо будет лечить систему, первым делом руками зачистив логи).
Защита встроенная в GRUB не позволит системе попасть в столь тяжелое положение.

А что если...

Функция (как видно) - безусловно полезная, однако она может быть неудобной для без-клавиатурных станций - на них «зависшее» меню GRUB-а - это не преимущество, а некоторые сложности (без подключения клавиатуры такая станция, попавшая в меню GRUB, никогда не загрузится вообще).

А что если отключить?

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

Отключаем...

Как это работает

Реализовано все достаточно просто - в скрипте /boot/grub/grub.cfg переменная окружения GRUB recordfail устанавливается в ходе каждой загрузки в 1. Скрипт /etc/init.d/grub-common запускается на финальных этапах загрузки (линки с именем S99grub-common есть в /etc/rc2.d, /etc/rc3.d, … /etc/rc5.d). grub-common сбрасывает переменную recordfail в 0. Если скрипт /etc/init.d/grub-common не отработает, то не сброшенное значение recordfail предотвращает автоматическую загрузку, меню GRUB появляется и потребуется явное интерактивное вмешательство со стороны оператора.

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

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

Финт с GRUB_RECORDFAIL_TIMEOUT может не сработать в некоторых (старых) версиях GRUB. Тогда нужно редактировать /etc/grub.d/00_header. Нужно найти функцию make_timeout (), которая выглядит примерно так:

make_timeout () { cat << EOF if [ "\${recordfail}" = 1 ]; then set timeout=-1 else set timeout=${2} fi EOF }

и заменить в ней строчку

set timeout=-1

на

set timeout=${GRUB_RECORDFAIL_TIMEOUT:--1}

После этого финт с GRUB_RECORDFAIL_TIMEOUT заработает. Нужно сохранить изменения и обновить GRUB (sudo update-grub).

Изменения в скрипте /etc/grub.d/00_header могут быть утеряны при обновлении пакета grub-common. Но в новых версиях GRUB переменная GRUB_RECORDFAIL_TIMEOUT уже внедрена (т.е. эти изменения уже сделаны в 00_header).

Ссылки

  • Обсуждение статьи на форуме

  • [HOWTO] Настройка и редактирование GRUB

  • Grub Customiser - графическая программа для настройки GRUB

  • Grub2 - Ubuntu Documentation (англ. )

  • GRUB от А до Я

  • GRUB - загрузчик системы
2017/03/27 02:04
  • StartUp Manager - редактор настроек загрузки Ubuntu
2013/11/07 19:42
  • UNetbootin — создание загрузочной флешки
2015/12/04 13:50
  • Вопросы и Ответы #20
2010/04/04 21:37
  • Восстановление GRUB
2021/03/28 22:59
  • Восстановление GRUB Legacy
2009/09/23 20:11
  • Загрузка и установка системы прямо из iso-образа
2017/03/02 22:00
  • Загрузчик системы GRUB Legacy
2016/09/08 14:44
  • Настройка внешнего вида загрузчика GRUB
2013/03/20 16:54
  • Очистка загрузочного меню GRUB
2013/10/22 17:18

GRUB, Система, Администрирование, HOWTO, Индексная статья

1)

Основной Единый Загрузчик

Bootloader: что это такое и как это работает?

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

Содержание

  1. Что такое загрузчик?
  2. Как работает загрузчик?
  3. Где именно хранятся загрузчики?
  4. Обзор функций загрузчика
  5. Какие существуют известные загрузчики?

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

Данные операционной системы должны быть загружены в оперативную память при запуске устройства. Это стало возможным благодаря так называемому загрузчику, также известному как загрузочная программа или загрузчик начальной загрузки. Для этой цели сразу после запуска устройства загрузчик обычно запускается с помощью загрузочного носителя , такого как жесткий диск, CD / DVD или USB-накопитель. Загрузочный носитель получает информацию от прошивки компьютера (например, BIOS) о том, где находится загрузчик. Весь процесс также описывается как «загрузка».

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

Когда вы нажимаете кнопку запуска на компьютере, самое первое, что вы видите на экране, это информация об установленном оборудовании. Программным обеспечением, отвечающим за это уведомление, является упомянутая выше прошивка устройства, которая обычно внедряется производителями во флэш-память на материнской плате компьютера . В большинстве настольных ПК и ноутбуков это будет BIOS ( B asic I nput/ O выход S система) или более современный UEFI ( U унифицированный E расширяемый F прошивка I интерфейс). Оба приложения собирают самые разные данные об оборудовании и создают полный список всех доступных дисков устройства.

По завершении этого процесса прошивка проходит по найденным носителям данных последовательно, проверяя наличие загрузчика с помощью специальной подписи – так называемой загрузочной подписи (или «загрузочной записи»). Поиск всегда начинается с съемные носители (CD/DVD, USB-накопитель, внешний жесткий диск и т. д.), за которыми следуют жестко запрограммированные диски . В последнем случае загрузчик и его подпись обычно находятся в Master Boot Record (MBR), которая также содержит таблицы разделов носителя данных. Когда загрузчик найден, он загружается и инициируется запуск системы. Если поиск не увенчался успехом, прошивка вернет сообщение об ошибке.

Где именно хранятся загрузчики?

Загрузчики могут храниться в двух разных местах:

  1. Загрузчик хранится в первом блоке загрузочного носителя.
  2. Загрузчик хранится в определенном разделе загрузочного носителя.

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

Во втором случае операционная система использует выбранный раздел в качестве места хранения загрузчика, хотя используемая файловая система и таблицы разделов могут сильно различаться. Решающим фактором здесь всегда является прошивка, которая предусматривает специальный формат файла для менеджера загрузки в этой модели хранилища загрузчика. Например, для устройств с UEFI используется формат PE/COFF ( P ortable E исполняемый файл / C общий O объект F файл F формат).

Краткое описание функций загрузчика

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

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

  • Идентификация и запуск других доступных загрузчиков
  • Запуск прикладных программ (часто использовавшихся в 1980-х годах для запуска компьютерных игр прямо с диска)
  • Исправление или расширение отсутствующих функций и записей в прошивке
  • Загрузка альтернативной прошивки

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

Какие известные загрузчики есть?

В следующей таблице перечислены наиболее важные загрузчики:

  • Configuration
Related articles

BOOTP: All information on the DHCP forerunner

  • Know-how

Если вы хотите подключить компьютер, смартфон и т. д. к сети (LAN или WiFi), вы можете назначить IP-адрес вручную или получить его автоматически. Последнее возможно благодаря протоколу связи DHCP (протокол динамической конфигурации хоста), который зарекомендовал себя как кросс-платформенное стандартное решение для управления адресами. Предшественником был протокол начальной загрузки BOOTP, который...

BOOTP: Вся информация о DHCP предшественнике

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

Windows 7, 8, 10 больше не запускается – причины и решения

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

Дата центр

К

  • Участник TechTarget

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

Загрузчик, также называемый диспетчером загрузки, представляет собой небольшую программу, которая размещает операционную систему (ОС) компьютера в памяти. Когда компьютер включается или перезагружается, базовая система ввода-вывода (BIOS) выполняет некоторые начальные тесты, а затем передает управление главной загрузочной записи (MBR), где находится загрузчик. Большинство новых компьютеров поставляются с загрузчиками для некоторых версий Microsoft Windows или Mac OS. Если компьютер будет использоваться с Linux, необходимо установить специальный загрузчик.

Для Linux два наиболее распространенных загрузчика известны как LILO (LInux LOader) и LOADLIN (LOAD LINux). Альтернативный загрузчик, называемый GRUB (GRand Unified Bootloader), используется с Red Hat Linux. LILO — самый популярный загрузчик среди пользователей компьютеров, использующих Linux в качестве основной или единственной операционной системы. Основным преимуществом LILO является тот факт, что он обеспечивает быструю загрузку. LOADLIN предпочитают некоторые пользователи, чьи компьютеры оснащены несколькими операционными системами и которые проводят относительно мало времени в Linux. LOADLIN иногда используется в качестве резервного загрузчика для Linux на случай сбоя LILO. Многие пользователи Red Hat Linux предпочитают GRUB, поскольку он является загрузчиком по умолчанию для этого дистрибутива.

Последнее обновление: июнь 2021 г.

Продолжить чтение О загрузчике (диспетчере загрузки)
  • Изучите основные компоненты ОС Linux
  • Используйте GRUB для устранения проблем с загрузкой Linux
  • Серьезная уязвимость BootHole подвергает риску миллионы систем
  • Red Hat присматривается к рабочим нагрузкам периферийных вычислений
Более подробные сведения об эксплуатации, мониторинге и управлении центром обработки данных
  • Унифицированный расширяемый интерфейс встроенного ПО (UEFI)

    Автор: Гарри Кранц

  • Ошибка BootHole ставит под угрозу большинство систем Linux и Windows

    Автор: Ариэль Уолдман

  • Серьезная уязвимость BootHole подвергает риску миллионы систем

    Автор: Алекс Скрокстон

  • Изучите основные компоненты ОС Linux

    Автор: Джессика Лулка

SearchWindowsServer

  • Как исправить блокировку учетной записи Active Directory с помощью PowerShell

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

  • Сравните эти интерфейсные инструменты PowerShell с графическим интерфейсом

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

  • Как создать пользовательский отчет Azure AD с помощью Microsoft Graph

    Microsoft Graph станет средством управления пользователями и устройствами, которые подключаются к Office 365. Узнайте, как собирать информацию ...

Облачные вычисления

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: