web-dev-qa-db-ja.com

カーネル4.4.0-34以降、initramfsではキーボードレイアウトが無視されていました。米国以外のレイアウトの使用方法

最新の16.04では、ドイツ語のキーボードレイアウトとluksで暗号化されたハードドライブを使用しています。最新のカーネルアップデート4.4.0-34-genericをインストールするまで、ドイツ語のキーボードレイアウトを使用してluksパスワードを問題なく入力できました。これで、起動時のcryptsetupのレイアウトはen_USになりましたが、それ以降はすべてドイツ語になります(ログイン用など)。

古いカーネル4.4.0-31-genericを起動し、cryptsetupでドイツ語のキーボードレイアウトを使用することもできます。

/etc/initramfs-tools/initramfs.confに「KEYMAP = y」を追加し、「Sudo update-initramfs -u」でinitramfsを再構築しようとしましたが、うまくいきませんでした。

最新のカーネルでcryptsetupにキーボードレイアウトを設定するにはどうすればよいですか?

2
vollkorn

buntu 17.10の新規インストール*でも同じ問題が発生しました。

F.Raabによる次の情報は、非常に有用であることが証明されています。

ただし、/ usr/share/initramfs-tools/hooks/console_setupは/etc/console-setup/cached.kmap.gzを生成せず、Debianとは対照的に既存のものを使用します。私は、生成が一度正しく行われなければならないと仮定し、その後再び動作し、「update-initramfs -u」を呼び出す必要があります。

私のシステムではファイル/etc/console-setup/cached.kmap.gzmissingであり、明らかに、責任のあるプログラムはそれを作成していません。

stepsこれは私のシステムで動作しました:

  1. cd /etc/console-setup
  2. テンプレートとして使用するファイルを見つけます:ls | grep kmap(現在のフォルダーで 'kmap'を含むファイル名を検索します)。 cached_UTF-8_del.kmap.gzを選択します。
  3. テンプレートファイルの複製を作成し、cached.kmap.gzSudo cp cached_UTF-8_del.kmap.gz cached.kmap.gzと呼びます(ソフトウェアと更新で有効になったNVIDIAドライバーと、 シャットダウンバグ により無効になっているgrubクワイエットスプラッシュを除く)
  4. Sudo update-initramfs -uを実行すると、cached.kmap.gzをブートシーケンスに統合できます。

(ステップ4の前後にcached.kmap.gzを実行し、アクセスタイムスタンプを比較することにより、stat cached.kmap.gzが使用されていることをテストしました。)

再起動後、cryptsetupは、QUERTYではなく、お好みのキーボードレイアウトでLUKSパスフレーズを受け入れます。

(つまり、cached_UTF-8_del.kmap.gzは既に正しいレイアウトを含んでいます。上記の方法がうまくいかない場合は、コマンドラインで キーボードレイアウトの変更(英語UK)のいずれかのコマンドを試してみてください。英語US または https://apps.ubuntu.com/cat/applications/language-selector-gnome/

私はカーネル4.13.0-32-generic' (check usinguname -r`)を使用しています。 カーネルのアップグレードは問題を軽減するかもしれませんですが、NVIDIAドライバーとの競合が再び発生するのではないかと心配していたので、そうしたくありませんでした。 (なぜFedoraを去らなければならなかったのです;ほぼすべてのカーネルアップデートの後、私のシステムは再び不安定になり、それを解決するスキルと時間がありません。)

* shutdown bug のため、ソフトウェアとアップデートで有効化されたNVIDIAドライバーとgrub quiet splashを無効化

2
c0d0g3n

KEYMAP=yはDebian専用のメカニズムであるため、Debianでのみ使用できます。 /usr/share/initramfs-tools/hooks/keymapパッケージにあるinitramfs-toolsに渡され、後で使用される/etc/boottime.kmap.gzを生成します。

Ubuntuのinitramfs-toolsはまったく異なるフックを提供し、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はこのキーマップをロードします。

ところで/usr/share/initramfs-tools/scripts/init-top/keymap/etc/boottome.kmap.gzと同じ方法でロードしようとしますが、このファイルは存在しません(以前に使用されていました)。

ただし、Debianとは異なり、/usr/share/initramfs-tools/hooks/console_setup/etc/console-setup/cached.kmap.gzを生成せず、既存のものを使用します。私は、生成が一度正しく行われなければならないと仮定し、その後再び動作し、「update-initramfs -u」を呼び出す必要があります。

しかし、私はその時点でそれを行うことができなかったようです。うまくいったのは少し残念です。OS全体を再度インストールする必要がありました。インストールプロセス中に正しいキーボードレイアウトを選択していることを確認し、インストールプロセスの後、ただし新しいインストール済みシステムを起動する前に、新しいシステムのchroot環境でʻupdate-initramfs -u`を実行します。

1
F.Raab