Arch LinuxでLUKSディスク暗号化を初心者向けに設定する方法
Arch LinuxでLUKS/dm-cryptを使ったフルディスク暗号化の手順を初心者向けに解説。インストールから暗号化設定、トラブルシューティングまで。
はじめに
この記事では、Arch Linuxのインストール時にLUKS(Linux Unified Key Setup)とdm-cryptを使ってディスク全体を暗号化する方法を解説します。対象読者はArch Linuxを初めてインストールする方で、ディスク暗号化の基礎知識があると理解がスムーズです。この手順により、ノートPCを紛失したり盗難に遭った場合でも、データの機密性を守ることができます。
前提条件
手順
ステップ1: パーティションの作成
まず、暗号化するパーティションを作成します。ここではUEFIブート用にEFIシステムパーティション(ESP)と、暗号化するルートパーティションを作成します。
<h1>ディスクをGPTでパーティショニング</h1>
gdisk /dev/sda
gdisk内で以下の操作を行います:
o で新しいGPTテーブルを作成n でパーティション1:サイズ512MiB、タイプコード ef00(EFI System)n でパーティション2:残り全て、タイプコード 8300(Linux filesystem)w で書き込みステップ2: LUKSコンテナの作成
次に、ルートパーティションにLUKS暗号化を設定します。
<h1>LUKSコンテナを作成(パスフレーズを設定)</h1>
cryptsetup luksFormat /dev/sda2
<h1>コンテナを開く(/dev/mapper/cryptrootとしてマッピング)</h1>
cryptsetup open /dev/sda2 cryptroot
luksFormat実行時にパスフレーズを求められます。強力なパスフレーズを設定してください。
ステップ3: ファイルシステムの作成とマウント
暗号化されたデバイスにファイルシステムを作成し、マウントします。
<h1>ファイルシステムの作成(ext4推奨)</h1>
mkfs.ext4 /dev/mapper/cryptroot
<h1>ESPのファイルシステム作成(FAT32)</h1>
mkfs.fat -F32 /dev/sda1
<h1>マウント</h1>
mount /dev/mapper/cryptroot /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
ステップ4: Arch Linuxの基本インストール
pacstrapでベースシステムをインストールします。
<h1>必須パッケージのインストール</h1>
pacstrap /mnt base linux linux-firmware vim
<h1>fstabの生成</h1>
genfstab -U /mnt >> /mnt/etc/fstab
<h1>ルートディレクトリの変更</h1>
arch-chroot /mnt
ステップ5: システム設定とmkinitcpio
chroot内で、mkinitcpioにdm-cryptとLUKSのフックを追加します。
<h1>/etc/mkinitcpio.confを編集</h1>
vim /etc/mkinitcpio.conf
HOOKS行を以下のように変更します:
HOOKS=(base udev autodetect modconf block keyboard encrypt filesystems fsck)
encryptフックをfilesystemsの前に追加してください。
<h1>initramfsを再生成</h1>
mkinitcpio -p linux
ステップ6: ブートローダーの設定
GRUBを使用する場合、/etc/default/grubにカーネルパラメータを追加します。
<h1>パーティションのUUIDを確認</h1>
blkid /dev/sda2
<h1>/etc/default/grubを編集</h1>
vim /etc/default/grub
GRUB_CMDLINE_LINUX行に以下を追加(UUIDは実際の値に置き換え):
GRUB_CMDLINE_LINUX="cryptdevice=UUID=xxxx-xxxx-xxxx-xxxx-xxxx:cryptroot root=/dev/mapper/cryptroot"
<h1>GRUBをインストール</h1>
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
ステップ7: 再起動
chrootを抜けて再起動します。
exit
umount -R /mnt
reboot
再起動後、LUKSのパスフレーズを求められます。正しく入力するとシステムが起動します。
トラブルシューティング
実体験:日本語キーボードでパスフレーズが通らない
筆者自身が経験した問題です。LUKSのパスフレーズを設定した時は日本語キーボード(jp106)を使っていましたが、initramfsの段階ではキーマップがUS配列になっているため、記号を含むパスフレーズが正しく入力できずロックアウトされました。
対策:
/etc/mkinitcpio.conf の HOOKS に keymap を追加するmkinitcpio -P でinitramfsを再生成するこの設定で再起動後、日本語キーボードで正しくパスフレーズが通るようになりました。
エラー: カーネルパニック「not syncing: VFS: Unable to mount root fs」
原因: initramfsにencryptフックが含まれていない、またはカーネルパラメータが間違っている。
対処: chroot環境で/etc/mkinitcpio.confを確認し、mkinitcpio -p linuxを再実行。また、/etc/default/grubのUUIDが正しいか確認。
エラー: 「cryptsetup: ERROR: cryptroot: cryptsetup failed, bad password or options?」
原因: パスフレーズが間違っている、またはLUKSコンテナが正しく開かれていない。
対処: 起動時にパスフレーズを注意深く入力。キーボードレイアウトが正しいか確認(例:日本語キーボードならloadkeys jp106)。
エラー: GRUBインストール時に「efibootmgr: not found」
原因: efibootmgrがインストールされていない。
対処: pacman -S efibootmgrでインストールしてから再度grub-installを実行。
*この記事はArch Linuxを実機で日常運用しているSioが、実際のインストール・設定経験に基づいてAI生成コンテンツをレビュー・補完しています。btrfsサブボリュームとLUKS暗号化環境で検証済みです。*
まとめ
この記事では、Arch LinuxにLUKS/dm-cryptを使用したディスク暗号化を設定する手順を解説しました。これにより、ディスクが盗まれてもデータは安全です。
次のステップとして、バックアップ戦略の策定や、スワップパーティションの暗号化(/etc/crypttabの設定)を検討すると良いでしょう。また、LUKSのバックアップヘッダーを安全な場所に保存しておくことをお勧めします(cryptsetup luksHeaderBackup)。