2

Я работаю над встроенной системой (на основе Ubuntu 12.04 LTS) и настраиваю ее ядро. У меня возникли некоторые проблемы с upstart mountall и plymouth Полагаю, ничего неразрешимого, но настоящая проблема в том, что я не могу правильно диагностировать происходящее, потому что ядро (или, может быть, plymouth) меняет режим видео в середине процесса загрузки. Это полностью стирает целые строки журнала и предотвращает любую отладку неправильной конфигурации ядра.

Мой Grub2 кажется, в порядке с:

GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="acpi=force noplymouth"

GRUB_GFXMODE=1024x768x32
GRUB_GFXPAYLOAD_LINUX=keep

Вот некоторые соответствующие lspci:

00:00.0 Host bridge: Intel Corporation Mobile 945GSE Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GSE Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)

А вот соответствующая часть конфигурации моего ядра:

CONFIG_AGP=y
CONFIG_AGP_INTEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_DRM=y
CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_I915=y
CONFIG_DRM_I915_KMS=y
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_VESA=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y

Любое другое кастомное / стандартное ядро нормально загружается с этим Grub2 . То, что я хотел бы иметь, - это единый поток сообщений на одной консоли (с сохранением одного разрешения экрана) от логотипа загрузки до приглашения входа в систему. Кто-нибудь знает, что я должен настроить, чтобы добиться этого?

1 ответ1

1

Кажется, наконец-то я достиг разумной конфигурации framebuffer . Это соответствующие настройки в моем ядре .config:

CONFIG_AGP=y
CONFIG_AGP_INTEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_VESA=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y

и это diff между старой и новой конфигурацией framebuffer :

#> diff oldcfg.txt newcfg.txt
--- oldcfg.txt  2012-10-01 17:30:01.000000000 +0200
+++ newcfg.txt  2012-10-01 17:29:43.000000000 +0200
@@ -2,20 +2,14 @@
 CONFIG_AGP_INTEL=y
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
-CONFIG_DRM=y
-CONFIG_DRM_KMS_HELPER=y
-CONFIG_DRM_I915=y
-CONFIG_DRM_I915_KMS=y
 CONFIG_VIDEO_OUTPUT_CONTROL=y
 CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_BOOT_VESA_SUPPORT=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_VESA=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
 CONFIG_VGA_CONSOLE=y
 CONFIG_VGACON_SOFT_SCROLLBACK=y
 CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640

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

РЕДАКТИРОВАТЬ: обнаружил (два) виновного (ых).

После нескольких часов поисков я нашел решение в этой теме и в этом вопросе. Эта процедура работает для Ubuntu 12.04.1 LTS как также описано здесь, но она не должна сильно отличаться для других дистрибутивов.

Во-первых, добавьте console=tty1 к вашему GRUB_CMDLINE_LINUX (я также предлагаю добавить noplymouth чтобы запретить plymouth и его бесполезный экран-заставку ).

#> sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX="console=tty1 noplymouth"

Это заставляет журнал ядра печататься на tty1 вместо tty7 и избегать переключения tty перед приглашением на вход в систему.

Затем просто перейдите в /etc/init и отредактируйте один или несколько из tty1.conf , tty2.conf , tty3.conf , tty4.conf , tty5.conf , tty6.conf или console.conf . Я отредактировал их все, добавив опцию --noclear в команду getty . Например, редактирование tty1.conf:

#> sudo vi /etc/init/tty1.conf

вам придется заменить:

respawn
exec /sbin/getty -8 38400 tty1

с:

respawn
exec /sbin/getty -8 38400 --noclear tty1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .