3
6

More than 3 years have passed since last update.

UbuntuをLUKS(暗号化)しながらPartitionを分けたりWindows10とDual Bootしたり(Xubuntu 18.04)

Posted at

WorkstationのDISK暗号化は、今の時代は必須となっていることが多いと思います。
会社で必須化されていなくとも、やっておくことでセキュリティ事故の被害を減らせるでしょう。

暗号化の手段としては、以下の内容が今時の標準のようです。

  • Windows: BitLocker
  • MacOS: FileVault
  • Linux: LUKS

パーティショニングをしながらLUKSを適用するにはcryptsetup luksFormatを実行して/etc/crypttabを編集する方法が記事として見つかります。

これらの操作を、Ubuntuのインストーラー上で簡単に実現できました。
いくつか注意点がありましたので、メモとして残しておこうと思いました。
(実際につかったInstallerはXubuntu 18.04のものですが、Ubuntuでも基本は同じかなと思います)

ちなみに、私は以下の目的で手動でのパーティショニングを実施しました。

  • Windowsと共存したい
    • Windows上だとBIOSの更新が簡単
  • homeディレクトリを分離したい
    • 再インストールやディストリビューションを変更時に、home配下のファイルを再利用しやすい

パーティショニングを手動で行う

インストール手順の中で「インストールの種類」というステップがあります。
そこで「それ以外」を選択すると、パーテーションを手動で設定する画面になります。

1.それ以外を選ぶ画面.jpg

ここで、最低限以下のパーティションを切ります。

  • efi
    • Windows 10がインストールされている場合はもともと存在する
    • マウントポイントを設定しなくても勝手に/boot/efiとしてマウントされる
  • ext4
    • /boot
  • 暗号化パーティション
    • /

efiは自動的に/boot/efiとしてマウントされるようです。
これに加え、好みに合わせて暗号化パーテーションを追加します。

暗号化パーティションを作る際にパスワードを入力します。
作られた暗号化パーティションは、画面の上部に/dev/mapper/xxxx_cryptというデバイスとして表示されます。
LVMみたいなものと考えてもらい、そのデバイスに対してext4でパーティションを作ります。

複数暗号化パーティションを作る場合は、/dev/mapper/xxxx_cryptをその分だけ作ることになります。
コマンドで作るときは、ひとつの/dev/mapper/xxxx_cryptに対してext4ではなくLVMを作ってさらに分割することもできるようなのですが、Ubuntuのインストーラーだとそこまでできなさそうでした。

パーティショニングのサンプル

ここでは、以下の内容を実現したときのサンプルを記載します

  • Windowsとデュアルブート
  • homeとルートディレクトリのパーティションを分離

いかが、そのサンプルです。
/dev/nvme0n1p1は、各環境によって異なると思います。
例えば環境にあわせて/dev/sda1等に読み替えてください。

  • /dev/nvme0n1p1: efi
    • bootloaderを保管する領域
    • windowsのbootloaderも格納されている
  • /dev/nvme0n1p2: ???
    • 謎の空白領域、Windows10によって作られた
  • /dev/nvme0n1p3: ntfs
    • Windows本体
  • /dev/nvme0n1p4: ntfs
    • Windowsの復元領域
  • /dev/nvme0n1p5: ext4
    • マウントポイント: /boot
  • /dev/nvme0n1p6: 暗号化領域 (LUKS -> ext4)
    • マウントポイント: /
  • /dev/nvme0n1p7: 暗号化領域 (LUKS -> ext4)
    • マウントポイント: /home

2.パーティショニング.jpg

最後にフォーマットの可否の確認ダイアログが表示されます。
再インストール時など、初期化したくないパーティションに「フォーマット」のチェックが入っていないことを確認してください。

3.確定時の確認画面.jpg

注意事項

「それ以外」を選択して手動でパーティショニングをする際、暗号化パーティションを作った場合は以下の点に注意してください。

/boot用の暗号化していないパーティションを作る

/が暗号化されている場合、/bootを暗号化していないパーティションで作成する必要があります。
/bootがない場合は、以下のようなエラーになります。

4.bootが無い場合のエラー画面.jpg

/bootが暗号化されているとinitrdが読み込めないため、/をマウントできないということのようです。

swap用のパーティションは作らない

swap用のパーティションを作ると、セキュリティに関する問題があるとのエラーが表示されます。

5.swapがある場合のエラー画面.jpg

Windows10とのデュアルブート

Windows10の復元ツールには、パーティショニング機能が無いようです。
(パッケージ版のインストーラーにはパーティショニング機能があるのかもしれませんが)

Ubuntuを先にインストールしていると、Windows10の復元ツールを使った際にパーティションがすべて上書きされるようです。
Windows10をDISKに導入した後、Ubuntuを入れるという手順を取る必要があります。

起動時

OS起動時に、パーティションをマウントするためのパスワード入力画面が表示されるようになります。
パスワードファイルを/boot配下に作り、パスワード入力をスキップする方法もあるようです。

fstabとcrypttab

以下、インストールが完了したあとの設定ファイルの内容です。
暗号化ボリュームの読み込みがcrypttabに書いてあり、これに従って自動的にluksOpenされるようです。
そのあと、fstabに従ってマウントされるようです。

/etc/crypttab
nvme0n1p6_crypt UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa none luks,discard
nvme0n1p7_crypt UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa none luks,discard
/etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/nvme0n1p6_crypt /               ext4    errors=remount-ro 0       1
# /boot was on /dev/nvme0n1p5 during installation
UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa /boot           ext4    defaults        0       2
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=AAAA-AAA  /boot/efi       vfat    umask=0077      0       1
/dev/mapper/nvme0n1p7_crypt /home           ext4    defaults        0       2
/swapfile                                 none            swap    sw              0       0
df
Filesystem                  1K-blocks      Used Available Use% Mounted on
udev                         10101296         0  10101296   0% /dev
tmpfs                         2027424      1476   2025948   1% /run
/dev/mapper/nvme0n1p6_crypt 195810932  10480704 175313924   6% /
tmpfs                        10137104    649004   9488100   7% /dev/shm
tmpfs                            5120         4      5116   1% /run/lock
tmpfs                        10137104         0  10137104   0% /sys/fs/cgroup
/dev/nvme0n1p5                1935632    166888   1652368  10% /boot
/dev/nvme0n1p1                 262144     32456    229688  13% /boot/efi
/dev/mapper/nvme0n1p7_crypt 657052112 138626128 484979892  23% /home
tmpfs                         2027420         8   2027412   1% /run/user/1000

最後に

複数のパーティションを暗号化しても、設定しているパスワードが同じの場合は、マウント時のパスワードの入力は一回で済みました。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6