Разрешение экрана Ubuntu упало

Обновлено: 04.07.2024

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

На днях я купил ноутбук Acer Predator (партнерская ссылка) для тестирования различных дистрибутивов Linux. Это громоздкий, тяжелый ноутбук, который контрастирует с моими предпочтениями в отношении небольших и легких ноутбуков, таких как великолепный Dell XPS.

Причиной, по которой я выбрал этот игровой ноутбук, хотя я и не играю на ПК, является графика NVIDIA. Acer Predator Helios 300 поставляется с видеокартой NVIDIA Geforce GTX 1050Ti.

NVIDIA известна своей плохой совместимостью с Linux. Несколько читателей It’s FOSS обратились ко мне за помощью с их ноутбуками NVIDIA, и я ничего не мог сделать, потому что у меня не было системы с видеокартой NVIDIA.

Поэтому, когда я решил приобрести новое специализированное устройство для тестирования дистрибутивов Linux, я выбрал ноутбук с графикой NVIDIA.

На этом ноутбуке установлена ​​ОС Windows 10, твердотельный накопитель емкостью 120 ГБ и жесткий диск емкостью 1 ТБ для хранения данных. Я дважды загрузил Windows 10 с Ubuntu 18.04. Установка прошла быстро, легко и безболезненно.

Я загрузился в Ubuntu. Он показывал знакомый фиолетовый экран, а потом я заметил, что он там застыл. Мышь не двигается, я ничего не могу напечатать и ничего не могу сделать, кроме как выключить устройство, зажав кнопку питания.

Та же история повторилась при следующей попытке входа. Ubuntu просто застревает на фиолетовом экране еще до перехода к экрану входа в систему.

Звучит знакомо? Позвольте мне показать вам, как вы можете решить эту проблему с зависанием Ubuntu при входе в систему.

Не используете Ubuntu?

Обратите внимание, что хотя это руководство было выполнено с Ubuntu 18.04, оно также будет работать и с другими дистрибутивами на основе Ubuntu, такими как Linux Mint, elementary OS и т. д. Я подтвердил это с ОС Zorin.

Исправить зависание Ubuntu во время загрузки из-за графических драйверов

Вы можете посмотреть, как решить эту проблему, в следующем видео.

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

Шаг 2. Временное изменение параметров ядра Linux в Grub

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

Теперь есть несколько способов отключить эти драйверы. Мой любимый способ — отключить все видеокарты/видеокарты с помощью nomodeset.

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

Теперь ваш экран должен выглядеть так:

Нажмите Ctrl+X или F10, чтобы сохранить и выйти. Теперь вы загрузитесь с недавно измененными параметрами ядра здесь.

Итак, что мы здесь только что сделали? Что это за номодесет? Позвольте мне кратко объяснить вам это.

Обычно видео/видеокарта использовалась после запуска X или любого другого сервера отображения. Другими словами, когда вы вошли в свою систему и видите графический интерфейс пользователя.

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

Если вы добавите в ядро ​​параметр nomodeset, он даст указание ядру загрузить видео/графические драйверы после запуска сервера отображения.

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

Устранение неполадок: не удается загрузиться даже после использования nomodeset?

Если использование nomodeset в grub не сработало и вы по-прежнему не можете загрузиться, попробуйте другие параметры вместо nomodeset.

Выполните те же действия, что и выше. При редактировании grub добавьте nouveau.noaccel=1 вместо nomodeset. Сохраните и выйдите из grub и посмотрите, сможете ли вы загрузиться сейчас.

Если даже это не сработает, попробуйте добавить noapic noacpi nosplash irqpoll вместо тихого всплеска в grub.

Шаг 3. Внесите постоянные изменения в Grub (если вы можете загрузиться и нет проблем с графикой)

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

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

Означает ли это, что вам всегда придется редактировать ядро ​​с экрана grub? К счастью, нет.

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

Для этого откройте терминал (используйте сочетание клавиш Ctrl+Alt+T), а затем используйте следующую команду, чтобы открыть файл конфигурации grub в редакторе Gedit:

Чтобы открыть этот файл, вам нужно будет использовать свой пароль. Открыв текстовый файл, найдите строку, содержащую: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" .

Измените эту строку на: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"

Это должно выглядеть примерно так:

Сохраните файл и обновите grub, чтобы изменения вступили в силу. Используйте эту команду:

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

Альтернативный шаг 3. Вы можете загрузиться, но графика выглядит странно? Обновите свою систему и установите проприетарные графические драйверы

Если вы не хотите изменять конфигурацию Grub, как указано в предыдущем шаге, в качестве альтернативы вы можете установить в Ubuntu дополнительные драйверы для NVIDIA и AMD. Ubuntu не будет зависать во время загрузки при использовании этих проприетарных драйверов.

В Ubuntu и многих других дистрибутивах есть простой способ установки проприетарных драйверов. Найдите «Дополнительные драйверы» в меню Ubuntu. Здесь вы можете найти дополнительные графические драйверы для вашей системы.

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

Я предполагаю, что это ваш первый вход в только что установленную систему. Это означает, что вы должны обновить Ubuntu, прежде чем делать что-либо еще. Откройте терминал с помощью сочетания клавиш Ctrl+Alt+T в Ubuntu и используйте следующую команду:

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

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

Теперь перейдите на вкладку "Дополнительные драйверы" и подождите несколько секунд. Здесь вы увидите проприетарные драйверы, доступные для вашей системы. Вы должны увидеть NVIDIA в списке здесь.

Выберите проприетарный драйвер и нажмите «Применить изменения».

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

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

Работа с MOK (только для устройств с поддержкой UEFI Secure Boot)

Если вас попросят установить пароль для безопасной загрузки, вы увидите синий экран с надписью «Управление MOK». Это сложная тема, и я попытаюсь объяснить ее проще.

MOK (ключ владельца компьютера) необходим из-за функции безопасной загрузки, которая требует подписи всех модулей ядра. Ubuntu делает это для всех модулей ядра, поставляемых в ISO. Поскольку вы установили новый модуль (дополнительный драйвер) или внесли изменения в модули ядра, ваша безопасная система может воспринять это как необоснованное/постороннее изменение в вашей системе и может отказаться загружаться.

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

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

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

Вот почему вам следует выбрать Зарегистрировать MOK.

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

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

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

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

Шаг 4. Наслаждайтесь Ubuntu Linux

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

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

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

Откройте обзор "Действия" и начните вводить "Отображает" .

Нажмите "Дисплеи", чтобы открыть панель.

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

Выберите ориентацию, разрешение или масштаб и частоту обновления.

Нажмите «Применить» . Новые настройки будут применяться в течение 20 секунд, прежде чем вернуться обратно. Таким образом, если вы ничего не видите с новыми настройками, ваши старые настройки будут автоматически восстановлены. Если вас устраивают новые настройки, нажмите Сохранить изменения .

Ориентация

На некоторых устройствах вы можете физически поворачивать экран в разных направлениях. Нажмите Ориентация на панели и выберите Альбомная , Книжная справа , Книжная слева или Альбомная (перевернутая) .

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

Разрешение

Разрешение — это количество пикселей (точек на экране) в каждом направлении, которое может отображаться. Каждое разрешение имеет соотношение сторон, отношение ширины к высоте. Широкоэкранные дисплеи используют соотношение сторон 16×9, в то время как традиционные дисплеи используют соотношение сторон 4×3. Если вы выберете разрешение, не соответствующее соотношению сторон вашего дисплея, во избежание искажений на экране будут отображаться черные полосы сверху и снизу или по обеим сторонам экрана.

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

Исходное разрешение

Исходное разрешение экрана ноутбука или ЖК-монитора работает лучше всего: пиксели в видеосигнале будут точно совпадать с пикселями на экране. Когда экран должен отображать другие разрешения, необходима интерполяция для представления пикселей, что приводит к потере качества изображения.

Частота обновления

Частота обновления – это количество раз, которое изображение на экране прорисовывается или обновляется в секунду.

Масштаб

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

Крах-дамп ядра — это часть содержимого энергозависимой памяти (ОЗУ), которая копируется на диск всякий раз, когда выполнение ядра прерывается. Следующие события могут вызвать нарушение работы ядра:

Немаскируемые прерывания (NMI)

Исключения машинной проверки (MCE)

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

Механизм аварийного дампа ядра

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

Установка

Утилита аварийного дампа ядра устанавливается с помощью следующей команды:

Примечание

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

Выберите Да, чтобы подключить kexec-tools для всех перезагрузок.

Здесь также следует выбрать Да, чтобы включить инструменты kdump.

Если вам когда-нибудь понадобится включить эту функцию вручную, вы можете использовать команды dpkg-reconfigure kexec-tools и dpkg-reconfigure kdump-tools и ответить Да на вопросы. Вы также можете отредактировать /etc/default/kexec и установить параметры напрямую:

Кроме того, отредактируйте /etc/default/kdump-tools, чтобы включить kdump, добавив следующую строку:

Если перезагрузка не производилась с момента установки пакета linux-crashdump, потребуется перезагрузка, чтобы активировать параметр загрузки crashkernel=. После перезагрузки инструменты kdump будут включены и активны.

Если вы включите инструменты kdump после перезагрузки, вам нужно будет только ввести команду загрузки kdump-config, чтобы активировать механизм kdump.

Вы можете просмотреть текущий статус kdump с помощью команды kdump-config show . Это отобразит что-то вроде этого:

Это говорит нам о том, что мы найдем дампы ядра в /var/crash.

Конфигурация

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

Локальные дампы сбоев ядра

Локальные дампы настраиваются автоматически и будут использоваться до тех пор, пока не будет выбран удаленный протокол. Существует множество параметров конфигурации, которые подробно описаны в файле /etc/default/kdump-tools.

Удаленные дампы сбоев ядра с использованием протокола SSH

Чтобы включить удаленные дампы с использованием протокола SSH, необходимо изменить /etc/default/kdump-tools следующим образом:

Единственной обязательной переменной для определения является SSH. Он должен содержать имя пользователя и имя хоста удаленного сервера в формате @.

SSH_KEY можно использовать для предоставления существующего закрытого ключа. В противном случае команда распространения kdump-config создаст новую пару ключей. Переменная HOSTTAG может использоваться для использования имени хоста системы в качестве префикса для создаваемого удаленного каталога вместо IP-адреса.

В следующем примере показано, как kdump-config propagate используется для создания и распространения новой пары ключей на удаленный сервер:

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

Команду kdump-config show можно использовать для подтверждения того, что kdump правильно настроен для использования протокола SSH:

Удаленные дампы сбоев ядра с использованием протокола NFS

Чтобы включить удаленные дампы с использованием протокола NFS, необходимо изменить /etc/default/kdump-tools следующим образом:

Как и в случае с протоколом SSH, переменная HOSTTAG может использоваться для замены IP-адреса именем хоста в качестве префикса удаленного каталога.

Команду kdump-config show можно использовать для подтверждения правильности настройки kdump для использования протокола NFS:

Подтверждение

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

Параметр crashkernel имеет следующий синтаксис:

Итак, для параметра crashkernel, найденного в /proc/cmdline, мы получим:

Вышеупомянутое значение означает:

если оперативки меньше 384М, то ничего не резервировать (это "спасительный" случай)

если объем ОЗУ находится в диапазоне от 386 МБ до 2 ГБ (эксклюзивно), зарезервируйте 64 МБ

если размер оперативной памяти больше 2 ГБ, зарезервируйте 128 МБ

Во-вторых, убедитесь, что ядро ​​зарезервировало запрошенную область памяти для ядра kdump, выполнив следующие действия:

Наконец, как было показано ранее, команда kdump-config show отображает текущий статус конфигурации kdump-tools:

Тестирование механизма аварийного дампа

Предупреждение

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

Убедитесь, что механизм SysRQ включен, просмотрев значение параметра ядра /proc/sys/kernel/sysrq:

Если возвращается значение 0, функция дампа и перезагрузки отключается. Значение больше 1 указывает на то, что часть функций sysrq включена. См. /etc/sysctl.d/10-magic-sysrq.conf для подробного описания параметров и значений по умолчанию. Включите дамп, затем перезагрузите тестирование с помощью следующей команды:

После этого вы должны стать пользователем root, так как простого использования sudo будет недостаточно. Как пользователю root вам нужно будет ввести команду echo c > /proc/sysrq-trigger . Если вы используете сетевое подключение, вы потеряете связь с системой. Поэтому лучше проводить тест при подключении к системной консоли. Преимущество этого заключается в том, что процесс дампа ядра становится видимым.

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

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

После завершения система перезагрузится в нормальный рабочий режим. Затем вы найдете файл дампа ядра и связанные с ним подкаталоги в каталоге /var/crash:

Если дамп не работает из-за ошибки OOM (Out Of Memory), попробуйте увеличить объем зарезервированной памяти, отредактировав файл /etc/default/grub.d/kdump-tools.cfg. Например, чтобы зарезервировать 512 мегабайт:

запустите sudo update-grub, а затем перезагрузитесь, а затем снова проверьте.

Ресурсы

Краш-дамп ядра – обширная тема, требующая хороших знаний ядра Linux. Дополнительную информацию по теме можно найти здесь:

Анализ сбоя ядра Linux (на основе Fedora, он по-прежнему дает хорошее пошаговое руководство по анализу дампа ядра)

В этом руководстве я собираюсь показать вам, как решить проблему зависания экрана с некоторыми ядрами Ubuntu Desktop на Raspberry PI 4/400. Я нашел эти исправления во время работы над моим руководством Ubuntu Desktop и Raspberry PI 4. : быстрая загрузка домашнего компьютера с SSD.

Raspberry PI 4 модель B изображение

Проблема возникает из-за KMS по умолчанию, который работает нестабильно на оборудовании Raspberry PI. Обходной путь заключается в включении «поддельной» версии KMS, которая ограничивает количество функций, доступных для вывода видео, но позволяет избежать зависания.

Еще одна проблема, из-за которой Ubuntu Desktop зависает на Raspberry PI, связана с модулем управления питанием USB из последних ядер. Рекомендуется приостанавливать работу устройств (или их частей), когда они не используются (режим ожидания). Но с Raspberry PI и Ubuntu иногда случается так, что, подключив несколько устройств к USB-портам, он начинает не работать или работать некорректно. Проблема более заметна, когда вы запускаете ОС, загружающуюся с USB. Это происходит чаще, когда подключены оба порта USB 3.0.

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

Что такое KMS (настройка режима ядра)

Как сообщается в Википедии, настройка режима — это программная операция, которая активирует режим отображения (разрешение экрана, глубину цвета и частоту обновления) для контроллера дисплея компьютера с помощью расширений VESA BIOS Extensions или UEFI Graphics (на более современных компьютерах). .

Режим отображения устанавливается ядром.

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

И ОС Raspberry PI, и Ubuntu используют KMS.

Ссылаясь на конкретную тему на форуме Raspberry PI, разница между vc4-fkms-v3d и vc4-kms-v3d заключается в том, как они управляют видеоскейлером (HVS), пиксельными клапанами и выходными блоками отображения ( HDMI/VEC/DSI/DPI).

  • С vc4-fkms-v3d это остается в прошивке, и прошивка по-прежнему позволяет DispmanX или MMAL добавлять дополнительные слои.
  • В версии vc4-kms-v3d всем этим управляет ядро ​​Linux, а DRM запрещает одновременное добавление слоев несколькими клиентами.

Что такое автоприостановка Usbcore

Как описано на указанной странице, «Управление питанием (PM) — это практика экономии энергии путем приостановки работы частей компьютерной системы, когда они не используются. Когда компонент «приостановлен», он находится в нефункциональном состоянии с низким энергопотреблением; он может быть даже полностью отключен. Приостановленный компонент можно «возобновить» (вернуть в функциональное состояние полной мощности), когда ядру потребуется его использовать».

Ядра включают модули для управления динамическим PM для каждого устройства. Эти модули позволяют управлять питанием с помощью 4 основных файлов, названия которых соответствуют их функциям: wakeup, control и
autosuspend_delay_ms. Последний файл содержит целочисленное значение, которое представляет собой количество миллисекунд, в течение которых устройство должно оставаться бездействующим, прежде чем ядро ​​автоматически приостановит его работу (время простоя). Отрицательные значения означают, что автоматическая приостановка никогда не выполняется.

Пошаговая процедура

Устранение зависания км

В сеансе терминала в Raspberry PI откройте файл config.txt для редактирования:

Найдите следующую строку:

и измените его на:

Обратите внимание, что новая строка просто добавляет символ «f» перед «kms». Сохранить и закрыть.

Перезагрузите ОС, и проблема должна быть устранена сейчас.

Исправление автоматической приостановки USB

Откройте файл grub с вашего терминала:

Определите GRUB_CMDLINE_LINUX_DEFAULT. Это уже должно включать значения «тихого всплеска»:

Читайте также: