🌟

Archlinux の起動が遅いと思って色々調べたら fstab の swap の書き方をミスっていた

2020/09/26に公開

久しぶりに Archlinux 環境を一から作った際に凡ミスしてしまっていたのでメモ

tl;dr

  • archlinux 環境を作り直した際、boot 時に /dev/mapper/<device>: clean, .../... files, .../... blocks と出て起動が止まる状況が続いた
  • 原因を調べると swap の設定をする際に fstab に書いていた UUID の形式がよくなかったとわかった
  • 素直に swapfile の path 名を書いて解決

現象

先日 archlinux 環境のパッケージ周りを一度ぶっ壊してしまい、深追いしてトラブルシューティングするより時間がかからなそうということでクリーンインストールをしたのだが、起動時に何故かここの画面で止まってしまう現象が発生

ただ実際のところ完全に boot が止まってしまうわけではなく、しばらく待っていると何かがタイムアウトするようなメッセージとともに正常に起動する。なのでこの件は後回しにしていたのだが、毎回起動時にここで引っかかるのがかなり辛くなってきたのでちゃんとエラーメッセージを確認して対処することにした。

調査

出ているエラーメッセージ内容が以下のような感じ

dev/mapper/<device>: clean, .../... files, .../... blocks
追記: 2020-10-01

このメッセージはエラーという感じではなさそうで。 少なくともこの記事で言う swap の設定がミスっているものとは関係がなさそう。別の何かがあるかも知れないけど、今の所問題になっていないので放置している。単純に timeout する直前に出ていたメッセージがこれだったという状況だと思う。

(追記おわり)

そこで個人的に最初は systemd-boot の設定に記載する resume_offset の値がミスっていそうということを疑った。[1] ただこれは調べてみると全く問題が無いことがわかった。

ということで journalctl なり dmesg なりで見れそうなログを見てみたがパット見でピンとくるものがない状況。そのため素直に(?)実際に timeout する瞬間を写真で撮ってちゃんとメッセージを読んでみることに。撮ったのは以下

内容としてはおおよそこんな感じ。

[Time] Timed out waiting for device /dev/disk/by-uuid/bf64c97a-7024-4d85-b1d7-7803fbb0ab1f
[DEPEND] Dependency fail for /dev/disk/by-uuid/bf64c97a-7024-4d85-b1d7-7803fbb0ab1f
[DEPEND] Dependency fail for Swap

メッセージを見ると device からの応答が timeout していそうなことがわかり、最後の fail for Swap で swap まわりでやっぱりコケていそうということはわかった。また Timed out wating for device あたりでググるとそれっぽい情報を見かけるようになり、fstab の内容を確認したほうが良さそうというところまで来た。[2]

原因

ここにきて fstab を見ると swapfile 部分が以下のようになっていた

# swap for suspend
UUID=bf64c97a-7024-4d85-b1d7-7803fbb0ab1f none swap defaults 0 0

UUID の形式で記載しているが、実際に自分が作っていた環境では swap はパーティションではなく swapfile を作成する形でやっていたのでこれは確かにうまく行かなそうである。

何でこんな書き方をしてしまったのだ... と思ってみたが、最近の mkswap コマンドでは実行結果に以下のように UUID が一緒に表示されるので、雑な発想で UUID の方を採用してしまっていたっぽい。

例:

$ mkswap -f swapfile
mkswap: swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=a1d677b6-04a7-44b2-9913-22df6ca78e8b

対処

ということで /etc/fstab の swap 部分を以下のように修正

# swap for suspend
/swapfile none swap defaults 0 0

この状態でリブートしてみたところ、無事に待たされることなくスムーズに起動するようになった。

脚注
  1. 自分の archlinux 環境では systemd-boot を利用しており、サスペンドやハイバネートができるように swapfile をつくる形で swap の設定もやっている。 ↩︎

  2. [SOLVED] Timed out waiting for device dev-disk-by\x2duuid-... / Newbie Corner / Arch Linux Forums など ↩︎

Discussion