Раскладка клавиатуры игнорируется в 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
отсутствует в моей системе, и, видимо, ответственные программы не создают его.
Шаги, которые работали в моей системе:
cd /etc/console-setup
- Найдите файл для использования в качестве шаблона:
ls | grep kmap
(поиск имен файлов, содержащих 'kmap' в текущей папке). я выбираюcached_UTF-8_del.kmap.gz
, - Создайте дубликат файла шаблона и назовите его
cached.kmap.gz
:sudo cp cached_UTF-8_del.kmap.gz cached.kmap.gz
(кроме драйверов NVIDIA, включенных через программное обеспечение и обновления, и отключение тихой заставки из-за ошибки выключения) - бежать
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 using
uname -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 новой системы после процесса установки, но перед загрузкой в новую установленную систему (я протестировал это, между прочим).