Содержание
Данная статья будет, в основном, полезна новичкам. В ней мы обзорно рассмотрим процесс загрузки системы с передачей ядру дополнительных параметров. Краткий ликбез в рамках принятой в статье терминологии: железо - это аппаратная начинка Вашего устройства (ноутбка, компьютера, пылесоса); драйвер (он же, суть, модуль ядра) - это такая программная прослойка, которая позволяет Вашему железу работать так, как это задумал его производитель. Ядро linux, на котором построена Ubuntu, конечно содержит в себе модули для работы со многим железом. Однако, следует понимать, что засунуть в него поддержку всех существующих железок физически невозможно. Для этого и предусмотрена возможность установки драйверов от производителя, и просто сторонних драйверов. Вместе с тем, типовая ситуация, часто ставящая в тупик новичков: Вы купили новую видеокарту, или купили себе новый ноутбук, и при попытке установить систему сталкиваетесь с одним из нижеперечисленных явлений:
Типовые проблемы
- не удается стартовать с загрузочной флешки, - после экрана GRUB2 [загрузочное меню, из которого Вы выбрали пункт Try Ubuntu without install («Запустить Ubuntu без установки») или Install Ubuntu («Установить Ubuntu»)] сразу возникает черный экран (иногда на нем посередине еще и курсор, который можно двигать - но более ничего не происходит)
- сразу после установки системы и последующей перезагрузки Вы попадаете на описанный ранее по тексту черный экран (может с курсором, может - без)
- сразу после установки системы и последующей перезагрузки Вы попадаете на экран авторизации (где вводится логин и пароль, и после ввода логина и пароля Вас либо выбрасывает на этот же экран авторизации, либо к уже дважды выше упомянутому черному экрану с возможной демонстрацией курсора). Примечание: не забываем также проверить эту страничку ВИКИ: Проблемы со входом в учетную запись в конкретно этом случае.
С аналогичными проблемами Вы можете столкнуться и при попытке простого обновления проприетарного драйвера до более новой версии, либо при штатном обновлении ядра linux. В особенности это касается тех случаев, когда драйвер установлен с применением PPA производителя.
1. Случай с попыткой запуска системы с загрузочной флешки или загрузочного диска
а). Загрузочный носитель, запущенный в режиме UEFI
В данном случае загрузочное меню GRUB2 при корректно подготовленной загрузочной флешке будет показано автоматически. Бывают экзотические варианты, например при подготовке мультизагрузочных флешек отдельными специализированными утилитами загрузочное меню может быть модифицировано этими самыми утилитами, и там данная методика напрямую может не сработать, однако этот аспект выходит за рамки данной статьи. Итак при загрузке Вы видите загрузочное меню, которое приведено на картинке: По-умолчанию выбран пункт «Try Ubuntu without install» («Запустить Ubuntu без установки») - он нам и нужен. Не давая машине начать загрузку (а времени на размышления у нас 10 секунд, - если ничего не предпринять, начнется загрузка пункта, выбранного по-умолчанию), нажимаем клавишу E (латинская буква) на клавиатуре. Меню GRUB2 превращается в текстовый редактор, внешний вид которого приведен на картинке: Обратите внимание на обратные слеши (знаки \) - их суть лишь в том, что таким образом GRUB2 показывает Вам, что текущая строка на этом не заканчивается, и написанное ниже - продолжение той же самой строки. Иными словами, не обращайте на эти символы внимания, - вводить их с клавиатуры не следует, - GRUB2 Вас не поймет. Фактически здесь мы имеем дело с таким кодом (убраны лишние пробелы - строка стала вмещаться в экран, слеши пропали сами): Подчеркивание, которое стоит в начале самой первой строки - это курсор. Стрелочками [←, →, ↑, ↓] на клавиатуре перемещаем курсор к строке, которая начинается со слова linux, и ведем курсор вправо, пока не поставим его в районе слов quiet и splash. Затираем эти два слова (клавишами Backspace или Delete, - по вкусу), и впечатываем туда с клавиатуры параметр ядра, с которым хотим загрузиться. В примере - вписывается параметр nomodeset: Как только редактирование закончено, нажимаем клавишу F10 на клавиатуре, - пойдет загрузка. На сей раз во время загрузки будет показан подробный лог происходящих действий, поскольку мы убрали параметры quiet и splash, и дополнительно к ядру будет применен параметр nomodeset, обеспечивающий возможность загрузки на машинах с проблемной графикой. Если параметр помог - Вы попадете на рабочий стол Ubuntu (системы, запущенной в живом режиме).
б). Загрузочный носитель, запущенный в режиме Legacy
В данном случае загрузочное меню по-умолчанию не показывается. Вместо этого в начале загрузки на 10 секунд пользователю демонстрируется вот такой экран: Как только мы его заметили - следует сразу же нажать клавишу Shift. Если успели - то экран преобразится до такого состояния: Нам предлагают выбрать язык. Язык нас в данном случае мало интересует. А вот задать кастомный параметр ядру хотелось бы. Нажимаем клавишу Esc. Меню выбора языков уходит, и экран становится таким: Как видим, в соответствии с подсказкой (напечатана внизу экрана), для выбора «Other Options» («Другие опции») следует нажать клавишу F6. Нажимаем ее. Открывается список: Всё для людей! Нам на выбор предлагают несколько параметров, чтобы подставить их в строку инициализации ядра:
- acpi=off - не задействовать стандарт для управления питанием (Advanced Configuration and Power Interface). Параметр является крайней мерой, и работать в системе с ним в постоянном режиме не рекомендуется: будут неизбежные проблемы с выключением, уходом в сон и т.п. Применять тогда, когда иные не помогают, и исключительно до тех пор, пока не установите необходимые модули ядра для обеспечения корректной работы Вашего железа.
- noapic - отключение расширенного программируемого контроллера прерываний (Advanced Programmable Interrupt Controller). Использование этой опции может привести к тому, что в сеансе, где она применена, не будет задействовано некоторое аппаратное обеспечение Вашего устройства (ноутбука, ПК).
- nolapic - отключение локального расширенного программируемого контроллера прерываний (Local Advanced Programmable Interrupt Controller). Действие аналогочно действию noapic, разве что тип контроллера более новый.
- edd=on - задействовать расширенный режим работы с дисками (Enhanced Disk Drive) (используется некоторыми материнскими платами для обеспечения корректного функционирования дисковых устройств)
- nodmraid - не задействовать модуль dmraid (Device Mapper RAID), который используется для работы с RAID-массивами. Не рекомендован к применению, если Вы пытаетесь использовать RAID.
- nomodeset - использовать щадящий графический режим. Помогает запустить систему на машинах с проблемными видеоадаптерами, где стандартные модули ядра не справляются.
Стрелочками [←, →, ↑, ↓] на клавиатуре выбираем желаемый (в нашем примере это по-прежнему nomodeset), и нажимаем либо клавишу пробел, либо клавишу Enter, - в результате напротив выбранного нами пункта меню появляется звездочка (символ *): При необходимости можно отметить сразу несколько параметров. Снимается отметка с параметра той же клавишей, какой и ставится. Выбрав желаемый для добавления пункт (в контексте примера - это nomodeset), нажмаем клавишу Esc. Это приведет к закрытию меню. Теперь мы видим строку инициализации (кстати, доступную для редактирования руками - если есть в этом необходимость), в которой уже прописан параметр nomodeset: Нажимаем клавишу Enter - пошла загрузка. Будет применен добавленный нами параметр ядра nomodeset. В случае успеха Вы попадете на рабочий стол Ubutnu (системы, запущенной в живом режиме)
в). Особенность загрузочного меню установочного носителя для машин с UEFI начиная с версии 19.04
Начиная с версии 19.04 Disco Dongo, загрузочное меню GRUB2 установочного носителя для машин с UEFI содержит еще по одному дополнительному пункту меню: «Try Ubuntu without install (Safe Graphics)» и «Install Ubuntu (Safe Graphics)». Если для загрузки в Вашем случае достаточно будет добавления параметра nomodeset - выбирайте данный пункт, - указанный параметр ядра в нем уже прописан: Для загрузки с иными параметрами ядра обращайтесь к принципу, описанному в пункте 1а) данной статьи.
2. Случай с попыткой запуска системы, уже установленной на жестком диске Вашего устройства (ПК, ноутбука)
Следует понимать при этом, что загрузка Вашей рабочей машины (ПК, ноутбука) в контексте рассматриваемого здесь вопроса, грубо говоря, происходит в три этапа:
- инициализация BIOS/UEFI (это когда Вы видите, к примеру, логотип производителя материнской платы ПК или своего ноутбука),
- инициализация загрузчика (в случае с Ubutnu по-умолчанию это загрузчик GRUB2),
- загрузка ядра linux и собственно операционной системы Ubuntu.
Итак, имеем один из вышеперечисленных симптомов (черный экран, невозможность авторизации и т.п.). Перезагружаем устройство (ПК, ноутбук), и на этапе инициализации BIOS/UEFI попадаем в загрузочное меню GRUB2. Выглядит оно примерно так: Если на Вашем устройстве (ПК, ноутбук) Ubuntu - единственная система, то по-умолчанию это загрузочное меню не показывается. Для того, чтобы в него попасть в этом случае на этапе инициализации BIOS/UEFI следует либо зажать и держать, либо многократно понажимать клавишу Shift (или клавишу Esc). Если данная манипуляция все равно не позволяет попасть в загрузочное меню - убедитесь в том, что:
- для реального нажатия Shift (или Esc) на Вашей клавиатуре нет необходимости нажимать его одновременно с Fn (типичная особенность отдельных моделей современных ноутбуков), если такая необходимость есть - попробуйте использовать для доступа к GRUB2 сочетание клавиш Fn+Shift или Fn+Esc.
- по клавише Esc или Shift не срабатывает какое-нибудь иное меню, предустановленное производителем Вашего ноутбука (например, штатное загрузочное меню [Boot menu, Startup Menu и тому подобное]) в этом случае следует либо вообще отключить данное меню на период экспеиментов средствами BIOS или предустановленной утилиты конфигурирования UEFI, либо пытаться «ловить момент» - соответствующая клавиша должна быть зажата тогда, когда ее уже не воспринимает Ваш BIOS/UEFI, но еще воспринимает загрузчик GRUB2, стартующий сразу после BIOS/UEFI. В частности, если по клавише Esc у Вас загружается Boot Menu от производителя - можно выбрать в нем пункт, соответствующий запуску Ubuntu, нажать клавишу, соответствующую инициации запуска (обычно, это Enter), и сразу после этого использовать Shift либо Esc в соответствии с описанной ранее методикой.
Попав в меню GRUB2, видим, что в нем по-умолчанию выбран пункт 'Ubuntu', и времени на размышления у нас 30 секунд. Если ничего не делать - будет выполнена загрузка с этим пунктом. Для добавления дополнительных параметров ядра нажимаем клавишу E (латинская буква), и экран GRUB2 перевоплощается в экран текстового редактора: Вновь обращаю Ваше внимание на обратные слеши (знаки \) - их суть лишь в том, что таким образом GRUB2 показывает Вам, что строка на этом не заканчивается, и написанное ниже - продолжение той же самой строки. Иными словами, не обращайте на эти символы внимания - вводить их с клавиатуры не следует, - GRUB2 Вас не поймет, и этого маневра не оценит. Подчеркивание, которое стоит в начале самой первой строки - это курсор. Стрелочками [←, →, ↑, ↓] на клавиатуре перемещаем курсор к строке, которая начинается со слова linux, и ведем курсор вправо, пока не поставим его в районе слов quiet и splash. Затираем эти два слова (клавишами Backspace или Delete, - по вкусу), и впечатываем туда с клавиатуры параметр ядра, с которым хотим загрузиться. В примере - вписывается параметр nomodeset: После того, как редактирование закончено, следует нажать клавишу F10. Загрузка пойдет в обычном режиме, с тою лишь разницей, что во-первых, за счет того, что мы убрали параметры ядра quiet и splash, вместо неинформативной картинки будет показан подробный лог загрузки, а во-вторых, и это в данном случае главное, - будет применен параметр ядра nomodeset. В случае успеха Вы попадете на рабочий стол своей системы (или на экран авторизации пользователя, с которого на сей раз сумеете авторизоваться, если проблема состояла в этом). После того, как Вам удалось войти в систему таким образом (прописав один из ранее поясненных параметров ядра), - следует приступить к выявлению и устранению проблем, мешающих нормальной загрузке. С высокой долей вероятности, Вам необходимо проверить установлены ли у Вас (и правильно ли установлены) все необходимые модули ядра (драйвера) для обеспечения корректной работы Вашего железа.
Ссылки
- Kernel Mode Setting. Статья в Ubuntu wiki (рус.): Kernel Mode Setting
- Проприетарный драйвер для видеокарт N-Vidia. Статья в Ubuntu wiki (рус.): Проприетарный драйвер для видеокарт Nvidia
- Проприетарный драйвер для видеокарт AMD. Статья в Ubuntu wiki (рус.): Драйвер видеокарт AMD
- Свободный драйвер для видеокарт AMD. Статья в Ubuntu wiki (рус.): Свободный драйвер видеокарт AMD
- Описание параметров ядра linux на github пользователя torvalds (англ.): github.com
- Информация по параметрам ядра Linux (англ.): fxr.watson.org
- Информация по типовым параметрам ядра, применяемым к Ubuntu (англ.): help.ubuntu.com
- Обсуждение данной статьи на Форуме Ubuntu.ru: Черный экран. Как передать параметр ядру linux до загрузки