Linuxで外付けHDDを暗号化する(その1)

Linuxで外付けHDDやUSBを暗号化する方法をまとめます

ツールのインストール

$ sudo apt install cryptsetup

バイスのフォーマット

バイスを暗号化デバイスとして初期化します.初期化,つまりデータが全部消えるので注意

$ sudo /sbin/cryptsetup  luksFormat /dev/デバイスファイル

実行すると確認メッセージが出るので "YES"と入力(大文字です)

続けてパスワードを設定します

WARNING!
========
This will overwrite data on /dev/デバイスファイル irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/デバイスファイル: 
Verify passphrase:

バイスファイルは

どちらでも指定できます

バイスマッピング

暗号化デバイスを /dev/mapper 以下にマッピングします.

$ sudo /sbin/cryptsetup luksOpen /dev/デバイスファイル  ラベル

マッピング時にパスワードを聞かれます

成功すると /dev/mapper 以下に ”ラベル" のデバイスファイルが作成されます

マッピングしたデバイスのフォーマット

ファイルシステムを作成します

ext4でフォーマットする場合は

$ sudo /sbin/mkfs.ext4 /dev/mapper/ラベル

マウント

$ sudo mount  /dev/mapper/ラベル /path/to/mountpoint

アンマウント&マッピング解除

$ sudo umount /path/to/mountpoint
$ sudo /sbin/cryptsetup luksClose /dev/mapper/ラベル

C言語やC++のマクロ内で pragma を使う方法

C99導入された _Pragma(...) を使うとマクロ内でも pragma が書けます.
_Pragma は C++11 で C++でも使えるようになっています.

#include <stdio.h>

#define PARALLEL_FOR _Pragma("omp parallel for")

int main()
{
	PARALLEL_FOR
	for (int i=0; i<10; ++i) {
		printf("%d\n",i);
	}
	return 0;
}