Как известно, благими намерениями вымощена дорога в ад. Пользователям различных дистрибутивов Linux, судя по сообщениям в "багзилле" и других списках рассылки, не нравится частое мерцание экрана при загрузке системы, связанное с переключением различных видеорежимов, сначала текстовый режим, затем framebuffer, затем графический режим X-Window. В новых версиях Ubuntu, начиная с 10.04 попытались наконец решить эту проблему, Для этого в ядро включен новый механизм - Kernel Mode-Setting (переключение режимов на уровне ядра). Он позволяет переключаться между видеорежимами плавно и незаметно для пользователя. К сожалению, для работоспособности этого метода требуется его поддержка драйвером видеоадаптера. Все открытые драйверы уже имеют эту поддержку, в отличии от проприетарных драйверов NVidia и AMD. По этой причине, при переключении на использование проприетарного драйвера в Ubuntu 10.04 появляется уродливая заставка в разрешении CGA, а в Ubuntu 10.10 загрузчик вообще переключается в псевдографический режим. В результате пользователи, обновившие систему до новейшей версии, винят разработчиков из Canonical (которые пошли навстречу их пожеланиям) и лично Шатлворта во всех смертных грехах. Хотя в этом нет их вины - во всем виновата закрытая модель разработки, присущая таким гигантам, как NVidia и AMD.
Далее я расскажу, как исправить описанную ситуацию (информация позаимствована из этой статьи).
Настроим загрузчик таким образом, чтобы он использовал для фреймбуфера стандартные режимы VESA при помощи драйвера uvesafb. Сначала установите драйвер v86d. Он обеспечивает вызов функций BIOS для переключения видеорежимов драйвером uvesafb. Зайдите в окно терминала и введите команду:
Код
sudo apt-get install v86d
Затем добавьте в файл /etc/initramfs-tools/modules следующую строку:
Код
uvesafb mode_option=1280x1024-24 mtrr=3 scroll=ywrap
Это параметры ядра, передаваемые начальному загрузчику initrd. Замените при необходимости параметр 1280x1024 на родное разрешение Вашего монитора.
Затем создайте файл /etc/initramfs-tools/conf.d/splash со следующим содержимым:
Код
FRAMEBUFFER=y
Для этого можно воспользовать следующую команду:
Код
echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
Этот параметр указывает на необходимость при сборке начального загрузчика initrd включать в файл загрузчика драйвер VESA-режимов. После этого надо пересобрать образ загрузчика следующей командой:
Код
sudo update-initramfs -u
Теперь Ваш загрузчик готов к использованию VESA-режима. Осталось сообщить ядру о предпочтительных параметрах загрузки. Откройте в любом текстовом редакторе файл /etc/default/grub и замените следующую строку:
Код
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
на строку:
Код
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1280x1024-24,mtrr=3,scroll=ywrap"
Данная строка указывает загрузчику при автоматическом формировании файла конфигурации grub.conf добавлять указанные параметры ядра по умолчанию. Параметр nomodeset отключает злополучный KMS. Параметр video указывает на использование при загрузке драйвера vesafb в режиме разрещения 1280x1024 глубина цвета 24 бит (замените на свое разрешение). Далее замените следующую строку:
Код
#GRUB_GFXMODE=640x480
на строку:
Код
GRUB_GFXMODE=1280x1024
Это позволит установить аналогичный графический режим в меню выбора операционной системы GRUB. Теперь дадим команду загрузчику GRUB переформировать файл настроек grub.cfg:
Код
sudo update-grub2
Теперь перегружаем компьютер и наслаждаемся новой исправленной заставкой!
0 коммент.:
Отправить комментарий