あんパン

こしあん派

Windowsが入っているマシンにパーティションを暗号化した上でUbuntuを同居させる

新型MacBook Proのキーボードをヨドバシ店頭で触ったところ2秒でやっていけないことに気づいたのでThinkPad X260を購入した。ThinkPad EdgeやX201を使っていたこともありX260自体にはなんの不満もなく、安価でそこそこのスペックの製品を買うことができてよかった。

一方で、Windows 10でこれまでMacでやっていたような開発を続けるのは困難だということもわかってきた。最初はLinux Subsystem for WindowsやらPowerShellやらでなんとかなるだろうと見込んでいたものの、その見立ては完全に外れていた。

そこで、Ubuntu 16.10を同居させてデュアルブートできるようにした。Windowsを飛ばしてUbuntuのみにしなかったのは、ひとえに紙芝居的なゲームをするため。Ubuntuにしたのは、わざわざOSのメンテにコストをかける気持ちがなかったため。

Ubuntuをデュアルブートするのは簡単で、Windows側でディスクを縮小して、unetbootinでUSBメモリに焼いたインストーラからうまい具合にインストールすれば良い。しかし、パーティションの暗号化をしつつインストールするには一手間必要だったので、ここにメモする。なお、Windowsが入っているパーティションはBitLockerで暗号化している。


基本的にはここの通りにすると良い。ディスクの暗号化にはLUKSを使う。

askubuntu.com

いきなりインストーラを起動するのではなく、GPartedでパーティションを切る。元のサイトでは

  • boot (ext2) - If you have Windows installed with UEFI, this can be skipped,
  • root (ext4),
  • swap (linux-swap)

と書いてあるが、UEFIブートしているにもかかわらずbootパーティションを作らずにインストールしたところ、grubのインストール時にコケたのでどうも必要そうだった。この場合、実際にディスクを暗号化するのはrootとswapのみになる。どちらもパスワードを別個に設定して、起動時には両方のパスワードを入力してマウントすることになる。(が、なぜコケたのか正直良くわかっていないし、本当に使われているのかわからない。誰か教えてくれ!!!)

今回はboot領域を250MiBで確保し、ext4でフォーマットした上でboot,espフラグを立てた。root, swapは上記の通り。適用すると、sda5,sda6,sda7ができた。

次の詰まりポイントはcryptsetup luksFormatだと思う。コマンド自体はこれで問題ないが、Are you sure? (Type uppercase yes):と出て来るので、大文字でYESと記入する必要がある。入力すると、パスワードと確認用にもう一度パスワードを求められるので記入する。これをsda6とsda7それぞれに行う。

それぞれluksOpenでrootとswapでマウントしたら、それぞれmkfs.ext4やらmkswapやらしておく。あとはインストーラを起動して、インストール先の選択時に「それ以外」を選び、パーティションをそれぞれ設定する。sda5は初期化せず、マウントポイントを/bootにする。/dev/mapper/rootのマウントポイントを/に、/dev/mapper/swapはすでにswapになっているはずなのでそのままにする。

通常通りインストールを終えたら、再起動せずにもう一度端末を開く。

リンク先に書いてあるとおりrootやらbootやらをマウントしてchrootしておく。ここで/etc/crypttabを設定する。

root UUID=<uuid> none luks
swap UUID=<uuid> none luks,swap

というような内容になるはず。このuuidはsudo bulkidで探せば見つかるが、sudo cryptsetup luksUUID /dev/sda6などとしたほうが素早く見つかる。別の端末を開いて実行しないと取得できないので要注意。その他詰まりどころはないはずなのでリンク先の通りに実行して再起動すると良い。ちなみにupdate-initramfs -uするときにwarningを吐く気がするけれど、無視して問題ない。

再起動後、rootとswapのパスワードをそれぞれ入力するとUbuntuを起動することができる。