既存のファイルシステムを暗号化もできるらしい。 とりあえず使い捨ての環境でやってみたのでメモしておく。使ってる環境でやるならバックアップ取ってからやった方がいいと思う。
まず、Arch のインストールメディアで起動する。
ここでは /dev/nvme0n1p2 に rootfs があって、それ以上は分割されていないものとする。 複数のパーティションを 1 つの暗号化パーティションに入れることができるかは分からない。
LUKS のヘッダ分のスペースを空けないといけないので、まず ext4 のファイルシステムを縮小する。 僕はデータが入り切る最小サイズまで縮小した。計算が得意な人はギリギリのサイズに縮小してもいいと思うけど、 ext4 だとデータはあんまりバラけてないはず(多分)なのでどのくらい意味があるのかは不明。 (あと、僕はどうせミスる)
Arch Linux を LVM on LUKS の root filesystem にインストールしたのでメモ。 LVM を使うこと自体は完全にオプションで、LUKS の上に ext4 のファイルシステムを作っても別に良い(はず)。
これがどういう構成かというと、物理パーティションの上に LUKS で暗号化したパーティションを作り、 その上の LVM2 の LV の上の ext4 のパーティションに rootfs を作るというもの(オフチョベットしたテフをマブガッドしてリットにしてそうな説明)。
(意外にもとハマらずにできたので情報としての価値は低めです。)
インストールガイド に従ってパーティションを切るところまでやる。
パーティションはこんな感じで切った。
ディレクトリ 範囲 説明 /boot 1 MiB–1 GiB ブートローダとか諸々用 / 残り全部 残りのディレクトリ用。暗号化する。LVMを使うので後で分割も可能。 /boot 大きめっすね。
LVMというのは抽象化したレイヤーを通して物理的なストレージにアクセスするというやつ(適当)。 物理的なストレージを直接使うよりもいろいろ変なことができるので嬉しいらしい。
雑に概念を説明 LVM には PV(Physical Volume)、VG(Volume Group)、LV(Logical Volume) という概念がある。
まず、PV というのは物理的なストレージに一対一で対応する概念で、SATA 接続のストレージだと /dev/sda1 で一個、 /dev/sda2 で一個みたいになる。 SSD をパーティションで区切っていない場合は /dev/sda で一個の PV とか。
次に、VG というのは、普通にストレージを使っているときは 1 個のストレージデバイスに対応する概念(のような気がする)で、 1 個以上の PV をまとめて 1 個のボリュームにできるというもの。 普通のストレージと違うのは、複数のデバイスとかパーティションにまたがっていてもいいという点。
僕は ThinkPad X1 Carbon の 2019 年モデルを使っていて,少なくとも僕が学生の間は買い換えないつもりでいる。 そこでちょっと気になるのがバッテリーの劣化という面。ThinkPad はバッテリーが取り出せないので 工夫して使わないとバッテリーをいじめる結果になってしまいそうだと思う。
で,ACアダプタにつないだときにバッテリーに充電する閾値を設定する方法。
入れる。
$ sudo pacman -S tlp acpi-call を入れることを薦められたりするが,これはバッテリーの内部ゲージのリセットとかをしようと しない限り必要ないようだ。
tlp-stat というユーティリティも同時にインストールされるので次のような感じで現在の設定値を確認できる。
$ sudo tlp-stat -b まあ確認するだけなら適当なファイル(/sys/class/power_supply/BAT0/* とか)を見れば分かる気がするが。
Linux カーネルには Kernel address space layout randomization という仕組みがある(別に Linux カーネルじゃなくてもあると思うが)。 これはカーネルのコードが置かれる仮想アドレスを起動するたびにランダムにするというもので, 悪意のあるソフトウェアのカーネルへの攻撃を難しくしている。ってのはまあどうでもいい話。
で,これ,セキュアになるのはいいんだけどあんなことやこんなことをする時(つまり自分が悪意のある側, とまではいかないが何かの手段としてそれに近いことをしようとした場合)に 面倒臭いことがあって,かといって自分で無効化してコンパイルし直すのもなということでメモ。
nokaslr をカーネルパラメータに追加する1だけ。終了。
一応これをデフォルトにするのは良くない気がするので,起動時に GRUB で変えてやるのがいいと思う。 ↩︎
面倒臭い失敗をしてしまった(戻せるのでセーフ) pic.twitter.com/GSo48SZ9Vw
— kofuk (@man_2_fork) August 17, 2020 覚えていたのでパッと対処できたけど忘れないとも限らないのでメモ。grub じゃない環境での方法は分からない。
再起動する。 GRUB のメニューが表示されたら eを押すと起動のコマンドを編集できる。 linux から始まる行での後ろに init=/bin/bash と書き加える。 Ctrl-x で起動する。 Bash が起動しているので何でもアリの無法地帯。 終わったら exec /sbin/init して起動する。 init を起動せずに Bash から exit すると kernel panic するので注意。