KaliLinux 2018.2: LVMが有効だと起動時間が遅くなる問題

LVMが有効な場合に起動時間が遅くなる問題の回避策を記載します。 LVMが無効な場合はここに書かれていることを実行する必要はありません。

1 LVMが有効だと起動時間が遅くなる問題

LVMを有効にしてインストールした場合、initrdの処理に時間がかかってしまいます。

$ systemd-analyze
Startup finished in 34.539s (kernel) + 2.871s (userspace) = 37.410s
graphical.target reached after 1.305s in userspace

これは/usr/share/initramfs-tools/scripts/localのwait-for-rootでLVMのスワップ領域が有効になるのを30秒ウェイトする為に発生します。

[    2.056198] random: lvm: uninitialized urandom read (2 bytes read)
done.
Begin: Running /scripts/local-premount ... Begin: Waiting for
suspend/resume device ... Begin: Running /scripts/local-block
... done.
Begin: Running /scripts/local-block ... done.
[    4.948882] random: fast init done
Begin: Running /scripts/local-block ... done.
<snip>
Begin: Running /scripts/local-block ... done.
done.
Gave up waiting for suspend/resume device
done.
[   34.841249] cryptd: max_cpu_qlen set to 1000

2 LVMが有効だと起動時間が遅くなる問題の回避策

RESUME変数にUUIDではなくデバイスファイルのパスを設定します。これはDebian 9と同様の設定です。

$ RESUME=$(sudo lvscan -q | awk '{ print $2 }' | \
           sed -e "s/^'//g" -e "s/'$//g" | grep '/swap_1$')
$ sudo sed -e 's/^RESUME=/#RESUME=/g' \
       -i /etc/initramfs-tools/conf.d/resume
$ echo "RESUME=${RESUME}" | sudo tee -a /etc/initramfs-tools/conf.d/resume

initrdを作り直して再起動します。

$ sudo update-initramfs -u
$ sudo reboot

カーネルの起動が30秒早くなりました。ハイバーネーションも動作します。

$ systemd-analyze
Startup finished in 2.398s (kernel) + 1.255s (userspace) = 3.654s
graphical.target reached after 1.240s in userspace