Linux

Arch Linuxでext4のrootfsをLUKSで暗号化する

既存のファイルシステムを暗号化もできるらしい。 とりあえず使い捨ての環境でやってみたのでメモしておく。使ってる環境でやるならバックアップ取ってからやった方がいいと思う。

まず、Arch のインストールメディアで起動する。

ここでは /dev/nvme0n1p2 に rootfs があって、それ以上は分割されていないものとする。 複数のパーティションを 1 つの暗号化パーティションに入れることができるかは分からない。

LUKS のヘッダ分のスペースを空けないといけないので、まず ext4 のファイルシステムを縮小する。 僕はデータが入り切る最小サイズまで縮小した。計算が得意な人はギリギリのサイズに縮小してもいいと思うけど、 ext4 だとデータはあんまりバラけてないはず(多分)なのでどのくらい意味があるのかは不明。 (あと、僕はどうせミスる)

Arch Linuxを暗号化したディスクにインストールする

Arch Linux を LVM on LUKS の root filesystem にインストールしたのでメモ。 LVM を使うこと自体は完全にオプションで、LUKS の上に ext4 のファイルシステムを作っても別に良い(はず)。

これがどういう構成かというと、物理パーティションの上に LUKS で暗号化したパーティションを作り、 その上の LVM2 の LV の上の ext4 のパーティションに rootfs を作るというもの(オフチョベットしたテフをマブガッドしてリットにしてそうな説明)。

(意外にもとハマらずにできたので情報としての価値は低めです。)

インストールガイド に従ってパーティションを切るところまでやる。

LinuxのLVMに入門したのでいろいろメモ

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 個のボリュームにできるというもの。 普通のストレージと違うのは、複数のデバイスとかパーティションにまたがっていてもいいという点。

Linux on ThinkPadのバッテリー設定をいい感じにする

僕は ThinkPad X1 Carbon の 2019 年モデルを使っていて,少なくとも僕が学生の間は買い換えないつもりでいる。 そこでちょっと気になるのがバッテリーの劣化という面。ThinkPad はバッテリーが取り出せないので 工夫して使わないとバッテリーをいじめる結果になってしまいそうだと思う。

で,ACアダプタにつないだときにバッテリーに充電する閾値を設定する方法。

入れる。

$ sudo pacman -S tlp

acpi-call を入れることを薦められたりするが,これはバッテリーの内部ゲージのリセットとかをしようと しない限り必要ないようだ。

tlp-stat というユーティリティも同時にインストールされるので次のような感じで現在の設定値を確認できる。

$ sudo tlp-stat -b

	

KASLRを無効化する

Linux カーネルには Kernel address space layout randomization という仕組みがある(別に Linux カーネルじゃなくてもあると思うが)。 これはカーネルのコードが置かれる仮想アドレスを起動するたびにランダムにするというもので, 悪意のあるソフトウェアのカーネルへの攻撃を難しくしている。ってのはまあどうでもいい話。

で,これ,セキュアになるのはいいんだけどあんなことやこんなことをする時(つまり自分が悪意のある側, とまではいかないが何かの手段としてそれに近いことをしようとした場合)に 面倒臭いことがあって,かといって自分で無効化してコンパイルし直すのもなということでメモ。

nokaslr をカーネルパラメータに追加する1だけ。終了。

Linuxの一般ユーザではどうしようもない失敗に対処する

覚えていたのでパッと対処できたけど忘れないとも限らないのでメモ。grub じゃない環境での方法は分からない。

  1. 再起動する。
  2. GRUB のメニューが表示されたら eを押すと起動のコマンドを編集できる。
  3. linux から始まる行での後ろに init=/bin/bash と書き加える。
  4. Ctrl-x で起動する。
  5. Bash が起動しているので何でもアリの無法地帯。
  6. 終わったら exec /sbin/init して起動する。

init を起動せずに Bash から exit すると kernel panic するので注意。