Luksはどのキーマップを使用しますか?

Luksはどのキーマップを使用しますか?

簡潔なバージョン

LUKSがパスワードの入力を求めるときにどのキーマップを使用する必要があるのか​​をどうやって知ることができますか?

長いバージョン

私は3つのキーボードと対応するマッピング(US-Qwerty、FR-Azerty、FR-Bepo)を使用し、頻繁に交互に使用します。使ったこのソリューション同じパスワードを入力できます(追加)この提案に従ってください)現在、どのマッピングが有効になっていて、どのキーボードを使用しているかに関係なく、それほどクリーンであるとは感じません。

さまざまなソリューション(実施例1実施例2)では編集を提案しましたが、/etc/vconsole.confこのファイルは私のインストールには存在しないので、可能であればそうしないことをお勧めします。方法があるようですinitramfs.confを編集してしかし、私が正しく理解したかどうかはわかりません。まず、現在アクティブなキーマップを理解してください。

情報

uname -a 
Linux XXX 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) x86_64 GNU/Linux

答え1

LUKSにはキーマップはありません。キーボード入力自体を読みません。これはキーボード入力を読む一般的なコンソールプログラムです。快適テキスト入力はコンソールに任せ、キー入力をマップします。

さまざまなソリューション(例1、例2)は/etc/vconsole.confの編集を提案していますが、そのファイルは私のインストールには存在しません。

これは通常正常です。すべてのインストールにすべての構成ファイルが存在するわけではありません。実際、systemdの全体的なデザインの重要な部分はいいえ「デフォルト」または「テンプレート」構成は/ etcにあり、すべての静的構成は/ usr / libになければなりません。 (それ以来、他の多くのプロジェクトがこの規則に従いました)するそれを書いてください。

(一方、systemdのほとんどと同様にする代替案があります。vconsole.keymap=vconsole.confのマニュアルページに記載されているカーネルコマンドラインオプション(システムがこれにsystemd-vconsoleを使用している場合)をGRUB構成に追加できます。 )

つまり、Debian は実際にはメイン (rootfs) ブートにも systemd-vconsole をまったく使用しないと思います。 (そして、initramfsは独自の設定ファイルとすべてを備えた完全に別々の世界です。説明で述べたように、initramfsのビルドはディストリビューションによって大きく異なります。を使用することができます。

したがって、あなたの場合、Ubuntuの指示は/etc/initramfs-tools/initramfs.confDebianのinitramfsにも最適です。

まず、現在どのキーマップが有効になっているかを知りたいです。

lsinitramfscpioinitramfs(cpioアーカイブのミニルートfs)を使用するか、解凍すると、bsdtarどのキーマップファイルがここに含まれているか(存在する場合)が表示されることがあります。 initramfsをビルドするときにverboseモードを有効にすると、update-initramfs -u -vそれを表示することもできます。

しかし、Debianでは、残念ながら汎用ファイル名が使用されているようです。これは、initramfsが構築されたときに基本システムに存在していた「キャッシュされた」キーマップが何でも取得します。それが現れるのは存在かどうかだけです。はいinitramfs にキーマップが存在するかどうか。

したがって、新しいinitramfsを構築した場合は、設定されたコンソールキーマップ/etc/default/keyboardKEYMAP=yそのオプションがinitramfs.confで有効になっている場合)または一般的な組み込みの「us」キーマップ(有効になっていない場合)を使用すると仮定するのが安全です。 )。たとえば、これはシステムキーマップがinitramfsにコピーされたことを示します。

#initramfs -u -v アップデート
呼び出しフックキーマップ
バイナリ/usr/bin/kbd_modeを追加
バイナリ/usr/bin/loadkeysを追加

#lsinitramfs /boot/initrd.img-6.1.0-12-amd64 | grep kmap
etc/console-settings/cached_UTF-8_del.kmap

#bsdtar -tf /boot/initrd.img-6.1.0-12-amd64 | grep kmap
etc/console-settings/cached_UTF-8_del.kmap

最後に、カーネルオプションを使用してinitramfsを停止した場合は、break=premount適切な時点(キーマップがロードされた後にLUKSプロンプトの前)にキーを押して、入力内容を表示できるシェルを提供する必要があります。

関連情報