Чёрный экран после загрузки Linux
В последние годы, Linux стал гораздо дружелюбнее к обычным пользователям и в большинстве случаев всё устанавливается и работает прямо «из коробки». Но это утверждение справедливо скорее для настольных компьютеров, а вот с ноутбуками и моноблоками далеко не всё так радужно. Ради интереса можете заглянуть в темы про управление подсветкой экрана или возвращения из спящего режима.
Но первое место я бы отдал проблеме чёрного экрана и полному зависанию Linux в процессе загрузки. Остановилась ли загрузка на эмблеме дистрибутива или предлагает любоваться значком курсора на чёрном фоне, в том нет принципиальной разницы. В любом случае, на этом всё и заканчивается.
Почему появляется чёрный экран после загрузки Linux?
Во время установки современные дистрибутивы Linux пытаются автоматически применить наилучшие настройки, запуская различные сценарии для проверки оборудования. На ноутах и моноблоках, в виду специфичности оборудования, это не всегда происходит корректно и система может загрузиться с пустым экраном.
Подобное поведение системы вызывает недоумение, ведь первоначальная установка и загрузка с флешки проходят корректно. И в финале, по завершении установки, мы никак не ожидаем увидеть чёрный экран. Впрочем, проблема с запуском Linux решается добавлением всего одного параметра в загрузчик ядра.
Влияние параметра «nomodeset» на загрузку Linux
Быстро исправить проблему чёрного экрана и запустить Linux нам поможет добавление параметра «nomodeset» в стандартный загрузчик GRUB (GRAND Unified Bootloader). Параметр «nomodeset» указывает ядру не запускать видеодрайверы до тех пор, пока система не будет загружена.
Изменение параметров запуска Linux в загрузчике GRUB
Ставим курсор на нужный пункт меню в загрузчике grub и нажимаем «e» (для редактирования команд до загрузки). Находим строку quiet splash и через пробел пописываем nomodeset . Жмём F10 или Ctrl+X для загрузки Linux с новыми параметрами.
Такая правка вносит одноразовые изменения до первой перезагрузки, чтобы сделать их постоянными, следует отредактировать файл /etc/default/grub:
(в примере я использовал консольный редактор nano , но можете заменить его любым удобным для вас — gedit , vi , emacs и т.д.)
В открывшемся файле находим параметр GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash» и дописываем значение nomodeset . Должно получиться так:
GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash nomodeset»
Остается обновить параметры загрузчика grub:
Что означают параметры quiet и splash?
Обычным пользователям не очень интересно наблюдать за выводом текстовой информации о процессе загрузки, многих она даже пугает. По этой причине, при загрузке Linux на десктопах обычно отображается Splash Screen (графический экран) с логотипом и какой-нибудь анимацией. Вот чтобы всё выглядело по красоте и существуют параметры ядра quiet и splash.
Если удалить параметр quiet (его ещё называют «молчаливым режимом»), то запуск Linux будет сопровождаться информационными сообщениями на экране о процессе загрузки — со статусом [OK], если все идет хорошо или [Fail], если что-то не так.
Убрав параметр splash можно вообще отключить графический режим Splash Screen из опций загрузки ядра, таким образом оставив пустым значение параметра GRUB_CMDLINE_LINUX_DEFAULT в файле конфигурации загрузчика GRUB — /etc/default/grub.
Вообще, существует множество других параметров загрузки передаваемых ядру Linux и они могут различаться от версии к версии, но это уже отдельная большая тема.
Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.
📑 Введение в GRUB2
GRUB (GRand Unified Bootloader1) — программа-загрузчик операционных систем.
GRUB является эталонной реализацией загрузчика, соответствующего спецификации Multiboot и может загрузить любую совместимую с ней операционную систему. Среди них: Linux, FreeBSD, Solaris и многие другие. Кроме того, GRUB умеет по цепочке передавать управление другому загрузчику, что позволяет ему загружать Windows (через загрузчик NTLDR), MS-DOS, OS/2 и другие системы.
После настройки GRUB пользователь при включении компьютера видит список операционных систем, которые установлены на его компьютер и которые можно загрузить, выбрав подходящую.
GRUB позволяет пользователю при загрузке задавать произвольные параметры и передавать их в ядро Multiboot-совместимой ОС для дальнейшей обработки.
GRUB — самый популярный загрузчик в мире Linux и является загрузчиком по умолчанию в большинстве известных дистрибутивов. Ранее самым популярным был Lilo.
Итогом развития загрузчика стало появление следующей версии GRUB2. При первом сравнении GRUB2 со старым GRUB самым весомым различием оказывается измененная структура файлов конфигурации.
Настройка GRUB2 производится теперь по принципиально иному принципу. первое же, что бросается в глаза — отсутствие привычного многим «/boot/grub/menu.lst», в котором были прописаны пункты загрузки, таймаут меню и прочие настройки.
Основным файлом конфигурации стал «/boot/grub/grub.cfg», который, впрочем, править не стоит о чем красноречиво говорит комментарий в самом начале файла:
# # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #
То-есть «grub.cfg» генерируется автоматически с использованием нескольких скриптов. Поэтому после следующего обновления GRUB2 файл «grub.cfg» будет создан заново, и все правки будут утрачены.
Все параметры теперь хранятся в /etc/default/grub, который по умолчанию имеет следующий вид:
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0 #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="" GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD . ) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# 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 entries #GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1"
Теперь файл представляет из себя набор опций в человекопонятном формате ОПЦИЯ=ЗНАЧЕНИЕ.
Вот основные опции настройки GRUB2:
- GRUB_DEFAULT=0 — выбор загрузки по умолчанию, определяет какой пункт меню загрузки будет загружаться автоматически.
- GRUB_HIDDEN_TIMEOUT=0 — этот параметр определяет, как долго будет отображаться пустой экран без меню.
- GRUB_HIDDEN_TIMEOUT_QUIET=true — если установлено true, тогда меню не будет выведено, экран будет пустой. Если установлено false, тогда меню будет выведено после интервала GRUB_HIDDEN_TIMEOUT
- GRUB_TIMEOUT=1 — время в секундах, в течении которого GRUB ждет выбора, прежде чем загрузить значение по умолчанию.
- GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` — параметр, указывающий на название дистрибутива, которое будет отображаться в GRUB.
- GRUB_CMDLINE_LINUX_DEFAULT=»quiet splash» — этот параметр отвечает за те параметры, с которыми запускаются ядра при загрузке. Его значение по умолчанию — «quiet splash»: происходит показ графической заставки при запуске системы без отображения какой-либо текстовой информации. Чтобы заменить графическую заставку во время загрузки на информацию о загрузке компонентов системы удалите «quiet splash».
- GRUB_CMDLINE_LINUX=»» — этот параметр отвечает за то, чтобы не передавались лишние параметры ядру.
- GRUB_TERMINAL=console — включает консольный режим (по умолчанию строка закомментирована, что включает графический режим). Имеет смысл раскомментировать строку для увеличения производительности.
- GRUB_GFXMODE=1366×768 — параметр, задающий разрешение меню.
- GRUB_DISABLE_LINUX_UUID=true — раскомментируйте, если вы не хотите, чтобы GRUB передавал вашей системе параметр «root=UUID=xxx».
- GRUB_DISABLE_RECOVERY=»true» — это параметр отключает меню Grub (через Shift нельзя войти в меню Grub)
- GRUB_INIT_TUNE=»480 440 1″ — звучит однократный сигнал перед появлением меню.
После изменений в файле /etc/default/grub необходимо обновить GRUB:
Папка /etc/grub.d содержит скрипты, которые используются при создании “grub.cfg”. При обновлении GRUB2 они находят все установленные на компьютере системы и ядра и формируют в “grub.cfg” меню загрузки, которое мы и видим. Два основных скрипта – “10_linux” и “30_os-prober” отвечают за поиск linux-ядер и остальных ОС на других дисках и разделах.
Файл “40_custom” позволяет добавлять свои пункты загрузки. Это может быть полезно если, например, необходимо добавить какие-то особые варианты загрузки системы.