web-dev-qa-db-ja.com

コマンドで読み取り専用ファイルシステムに/ runがないことが必要

Squashfsを使用して組み込みシステムでコマンド(cryptsetup)を実行しようとしています。 /runが必要ですが、そのディレクトリは存在せず、読み取り専用であるため作成できません。

Asuswrt-merlinがインストールされたASUSルーターを持っています(linux-2.6)。 Entware をインストールしてcryptsetupをダウンロードし、それを使用して接続されたハードディスクを暗号化しようとしています。

$ cryptsetup --key-size 256 luksFormat /dev/sdb1

その結果:

...
Enter passphrase for /dev/sdb1:
Verify passphrase:
Locking aborted. The locking path /run/cryptsetup is unusable (not a directory or missing).
Failed to acquire device lock.
Cannot format device /dev/sdb1 in use.

cryptsetupのマニュアルページに、ロックファイルディレクトリを強制またはスキップ/変更するものが何も表示されないため、スタックします。

ガイド これを設定するためにフォローしているのは、この問題についてはまったく触れていませんが、やや時代遅れです。

このディレクトリを偽造する方法、またはそれをバイパスするために使用できるcryptsetupへの引数、またはその他のオプションはありますか?

/var/runは存在しますが、読み取り専用のファイルシステムであるため、シンボリックリンクできないことに注意してください。そして、/runが存在しないため、(私が知る限り)tmpfsをマウントすることはできません。

1
Nick

このオプションはcryptsetupで取得しましたが、危険に聞こえます。

   --disable-locks
          Disable lock protection for metadata on disk.  This option is
          valid only for LUKS2 and ignored for other formats.

          WARNING: Do not use this option unless you run cryptsetup in a
          restricted environment where locking is impossible to perform
          (where /run directory cannot be used).

これとは別の方法はchrootです。ルーターにUSBポートがある場合は、4GBのフラッシュドライブを接続でき、cryptsetupが必要とするすべてのものをコピーするのに十分なスペースがあります。その時点で、Debian chrootをセットアップするだけで、(chroot環境を更新している限り)やりたいことを行うために必要なすべてのツールを手に入れることができます。

2
LawrenceC