Раскладка клавиатуры игнорируется в initramfs начиная с ядра 4.4.0-34. Как использовать неамериканский макет?

Я использую немецкую раскладку клавиатуры и жесткий диск с шифрованием luks на моем обновленном 16.04. Я мог без проблем ввести свой пароль luks, используя немецкую раскладку клавиатуры, пока не установил последнее обновление ядра 4.4.0-34-generic. Теперь макет en_US для cryptsetup при загрузке, но после этого он полностью немецкий (например, для входа в систему).

Я все еще могу выбрать загрузку старого ядра 4.4.0-31-generic и использовать раскладку немецкой клавиатуры на cryptsetup.

Я попытался добавить "KEYMAP=y" в мой /etc/initramfs-tools/initramfs.conf и перестроить мои initramfs с помощью "sudo update-initramfs -u", но это не помогло.

Как я могу установить раскладку клавиатуры на cryptsetup с новейшим ядром?

2 ответа

У меня была такая же проблема на новой установке * Ubuntu 17.10.

Эта информация Ф. Рааба оказалась очень полезной:

Однако /usr/share/initramfs-tools/hooks/console_setup не генерирует /etc/console-setup/cached.kmap.gz, а просто использует существующий, в отличие от Debian. Я предполагаю, что генерация должна сделать один раз правильно, а затем она должна работать снова и затем вызвать "update-initramfs -u".

Похоже файл /etc/console-setup/cached.kmap.gz отсутствует в моей системе, и, видимо, ответственные программы не создают его.

Шаги, которые работали в моей системе:

  1. cd /etc/console-setup
  2. Найдите файл для использования в качестве шаблона: ls | grep kmap (поиск имен файлов, содержащих 'kmap' в текущей папке). я выбираю cached_UTF-8_del.kmap.gz,
  3. Создайте дубликат файла шаблона и назовите его cached.kmap.gz: sudo cp cached_UTF-8_del.kmap.gz cached.kmap.gz(кроме драйверов NVIDIA, включенных через программное обеспечение и обновления, и отключение тихой заставки из-за ошибки выключения)
  4. бежать sudo update-initramfs -u так cached.kmap.gz может быть интегрирован в последовательность загрузки.

(Я проверял это cached.kmap.gz который используется бегом stat cached.kmap.gz до и после шага 4 и сравнение меток времени доступа.)

После перезагрузки cryptsetup будет принимать мою фразу LUKS в моей предпочтительной раскладке клавиатуры, а не QUERTY.

(Это означает cached_UTF-8_del.kmap.gz уже содержал правильную компоновку. Если описанный выше метод не работает для вас, вы можете попытать счастья с помощью одной из команд из раздела Изменение раскладки клавиатуры (английский Великобритания) в командной строке на английский язык США или https://apps.ubuntu.com/cat/applications/language-selector-gnome/)

Я на ядре 4.13.0-32-generic' (check usinguname -r`). Обновление ядра также может смягчить проблему, но я не хотел этого делать, так как боялся, что это снова приведет к конфликтам с драйвером NVIDIA. (Почему мне пришлось покинуть Fedora; после почти каждого обновления ядра моя система снова становилась нестабильной, и у меня нет навыков и времени, чтобы это решить.)

* за исключением драйверов NVIDIA, включенных с помощью программного обеспечения и обновлений, и отключенного тихого всплеска grub из-за ошибки завершения работы

KEYMAP=y является механизмом только для Debian и поэтому может использоваться только в Debian. Это передается в /usr/share/initramfs-tools/hooks/keymap находится в initramfs-tools пакет и генерирует позже используемый /etc/boottime.kmap.gz,

initramfs-tools в Ubuntu предусмотрены совершенно разные хуки и они не используются KEYMAP=y, Но эти сценарии всегда пытаются загрузить настроенную локальную таблицу ключей./usr/share/initramfs-tools/hooks/console_setup скопирует существующий /etc/console-setup/cached.kmap.gz в небольшой среде busybox. Потом /usr/share/initramfs-tools/scripts/init-top/console_setup затем загрузит эту раскладку.

Btw. кажется, что /usr/share/initramfs-tools/scripts/init-top/keymap также будет пытаться загрузить таким же образом /etc/boottome.kmap.gz, но этот файл не существует (он использовался в прежние времена).

тем не мение /usr/share/initramfs-tools/hooks/console_setup не генерировать /etc/console-setup/cached.kmap.gz и просто использовать существующий, в отличие от Debian. Я предполагаю, что генерация должна сделать один раз правильно, а затем она должна работать снова и затем вызвать "update-initramfs -u".

Однако, похоже, я не смог сделать это правильно в тот момент. То, что сработало, немного разочаровывает: мне пришлось снова установить всю ОС. Убедитесь, что вы выбрали правильную раскладку клавиатуры в процессе установки и запустите "update-initramfs -u" в среде chroot новой системы после процесса установки, но перед загрузкой в ​​новую установленную систему (я протестировал это, между прочим).

Другие вопросы по тегам