読者です 読者をやめる 読者になる 読者になる

do:kalaclism

『輝かしい青春』なんてなかった人のノート

Archlinux の rootfs encryption をリモートから unlock する

Development Knowleadge Tips

とりあえず、試行錯誤した末に出来たのでメモ。

今回の作業の概要

Archlinux on Mac mini late 2012 with rootfs encryption

と言う環境で、

ssh 経由で roorfs encryption の unlock が出来る

というのを作った。

下準備

とりあえず今回は Wi-Fi から繋げたかったので、

  • Archlinux on Mac mini late 2012 with rootfs encryption

から Wi-Fi 接続出来る様に、下記のパッケージを導入した:

  • wpa_supplicant - pacman から
  • b43-firmware - yaourt から

まあ後は Arclinux で Wi-Fi 使う要領で作業すれば良い。

あと、基本的に Mac mini に Archlinux を入れるには、

  • USB 接続の Keyboard
  • Ehternet 接続できるネットワーク

辺りがないと、ドライバとかの加減で pacstrap 出来ねぇとかなるので、その辺りは用意しておいた方が良い。

ちなみに僕は、押し入れなどで眠っていた、

  • PS/2 Keyobard + PS/2 <=> USB のケーブル
  • 古い Ehternet Converter の子機

を使いました。

rootfs encryption の remote unlock over Wi-Fi

これがまあ面倒だったんだけど、基本的には、

をアレンジして、下記の様になった:

  1. パッケージの追加
    • mkinitcpio-nfs-utils (pacman)
    • mkinitcpio-dropbear (yaourt)
    • mkinitcpio-utils (yaourt)
  2. ssh 鍵の追加
    • 今回だと /etc/dropbear/root_key に ssh 公開鍵を登録する
  3. mkinitcpio 用に wifi フックの追加
  4. /etc/mkinitcpio.conf の編集と initramfs の rebuid
    • MODULES に Mac mini late 2012 用の Wi-Fi ドライバを追加 (環境固有)
      • b43, bcma
    • FILES に 上記ドライバが動作するためのファームウェアを追加 (環境固有)
      • /lib/firmware/b43/ht0bsinitvals29.fw
      • /lib/firmware/b43/ht0initvals29.fw
      • /lib/firmware/b43/ucode29_mimo.fw
    • BINARIESwpa_passphrasewpa_supplicant を追加 (共通)
    • HOOKS を 編集
      • encryptwifi net dropbear encryptssh
    • あとは mkinitcpio -p linux で initramfs を rebuild
  5. Bootloader の kernel parameter の編集
    • これは各ネットワーク環境に合せて ip= を追加する
    • 僕の場合だと: ip=::192.168.2.1:255.255.255.0::wlan0:dhcp
    • ちなみに、これに指定するパラメーターは nfsroot (kernel.org) を参照

以上

それで、ここまでで設定とかミスってなければ、

  • Archlinux on Mac mini

を起動した際に ssh が立ち上がって、リモート経由で rootfs unlock 出来る様になる……はず。 なんかミスってたら、各自設定とか見直してください。ちなみに僕は wifi フックを作るときに SSID の書き方をミスっていて、 これで数時間ぐらいは詰ってました。

あと、今回のこれは initramfs とかを弄るため、 なにかミスってて起動しなくなる と言うコトが良く起きます。 そのため、USB Stick 等で Archiso を起動できる Recovery 環境が無いとつらいかもです。はい。


という事で今回のメモは以上。

まあ転んでも泣かないヒト向けのメモでした。