Armadilloフォーラム

SDカードの暗号化に関して

iwaya_yoke

2025年3月13日 16時17分

現在セキュリティ対策のため、使用するSDカードの暗号化をしようとしています。
暗号化ツールとしては、cryptsetupを使用することを考えていますが、
以下のようなエラーが発生するため暗号化設定ができませんでした。
"Cannot initialize device-mapper. Is dm_mod kernel module loaded?"

調べてみると、カーネルコンフィギュレーションを変更する必要があり、
以下の設定を探して設定しようとしているのですが、見つかりませんでした。
Device Drivers -> Block devicesの下にあるようですが、Block devicesまでしか見つかりませんでした。
- CONFIG_BLK_DEV_DM (Device mapper support)
- CONFIG_DM_CRYPT (Crypt target support)

上述の設定は可能でしょうか?

==========
Debian/ABOSバージョン:3.20.2
カーネルバージョン:5.10.224-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

コメント

at_dominique.m…

2025年3月13日 16時29分

マルティネです。

> 調べてみると、カーネルコンフィギュレーションを変更する必要があり、
> 以下の設定を探して設定しようとしているのですが、見つかりませんでした。
> Device Drivers -> Block devicesの下にあるようですが、Block devicesまでしか見つかりませんでした。
> - CONFIG_BLK_DEV_DM (Device mapper support)
> - CONFIG_DM_CRYPT (Crypt target support)
>
> 上述の設定は可能でしょうか?

Block devices ではなく「Multiple devices driver support」にありますね。
/」キーで検索してみると以下の出力があります:

  │     -> Device Drivers
  │ (1)   -> Multiple devices driver support (RAID and LVM) (MD [=n])
  │         -> Device mapper support (BLK_DEV_DM [=n])

そこで「1」を押すと「Multiple devices driver support」に案内されて、y で有効にしたら今度はなかに入れて次も有効できるようになります。

また、Armadillo IoT ゲートウェイ A6E ではセキュアブート・自動複合を対応してないので今まで無効にしていましたが、要望があれば充分標準で有効できる機能だと思いますので、3月のアップデート以降でモジュール有効にしたいと考えています。

よろしくお願いします

マルティネさん

ありがとうございます。
設定し、ビルドできました。
インストールのため、"/usr/share/mkswu/examples/kernel_update_plain.install.sh ~/mkswu/kernel.desc"を実行しようとしているのですが、kernel.descの出力方法が手順に見当たらず、やり方がわかりませんでした。
出力方法を教えていただけないでしょうか?

at_dominique.m…

2025年3月13日 18時08分

> インストールのため、"/usr/share/mkswu/examples/kernel_update_plain.install.sh ~/mkswu/kernel.desc"を実行しようとしているのですが、kernel.descの出力方法が手順に見当たらず、やり方がわかりませんでした。

kernel.desc の部分は出力ファイルなのでなくていいはずです。そのままコマンドを実行してみてください。

(確かにマニュアルの例に何も説明ついてないので、直したいと思います。連絡ありがとうございます)

マルティネさん

ありがとうございます。
cryptsetupでSDの暗号化、マウントまでできるようになりました。

起動時に自動アンロックとマウントを行うように設定したいと思っています。
自動アンロックはdmcryptでできたのですが、自動マウントができませんでした。
起動時のログをみると、localmountがアンロックより前に実行されてしまい失敗しているようです。
/etc/init.d/dmcryptのdependにbefore localmountを追記して、persist_fileを試してみたのですが、うまくいかず、何か良い方法がありますでしょうか?

at_dominique.m…

2025年3月14日 14時25分

マルティネです。

> cryptsetupでSDの暗号化、マウントまでできるようになりました。

なによりです

> 起動時に自動アンロックとマウントを行うように設定したいと思っています。
> 自動アンロックはdmcryptでできたのですが、自動マウントができませんでした。
> 起動時のログをみると、localmountがアンロックより前に実行されてしまい失敗しているようです。
> /etc/init.d/dmcryptのdependにbefore localmountを追記して、persist_fileを試してみたのですが、うまくいかず、何か良い方法がありますでしょうか?

何でしょうね。
runlevel が異なると before を設定しても runlevel の中でしか順番が解決されないので、結果的に後に実行される可能性はありますが、そういう問題でしょうか?
rc-update -a を実行すると各サービスの runlevel を確認できます。(実行順番は sysinit, boot, default になります。localmount は sysinit に入ってますので、dmcrypt を boot か default で登録された場合は後に実行されますね)

また、今回の質問ではありませんが:

* /etc/init.d を変更すると今後の更新との適合性を考える必要がありますので、openrc の標準サービスを変更する場合は /etc/conf.d/dmcrypt で変更してください。
depend() 関数を conf.d 側で実装すると init.d より優先されますので、完全に上書きされる形になります。

* localmount をそのまま前に実行して、fstab に noauto を設定し(あるいは追加しない)、
dmcrypt の pre_mount で実際に mount コマンドを書くと、名前的にちょっと違和感ありますが最終的にわかりやすいかもしれません(cryptsetup open 後に任意コマンドが実行されるだけなので、mount コマンドでもいいですよね)

よろしくお願いします

マルティネさん

ありがとうございます。
runlevelsをsysinitにしたらできました。