KVMの仮想マシンイメージで CentOS 7.5-1804 をPXE Bootからkickstartでインストールを行おうとしたとき、インストーラは起動するもののブート・シーケンス途中で以下のようなエラーで止まった。
[ 16.563343] dracut-mount[2273]: Warning: Can't mount root filesystem [ 16.688087] dracut-mount[2273]: Warning: /dev/root does not exist [ 16.699366] dracut-mount[2273]: /lib/dracut-lib.sh line 1049: echo: write error: No space left on device Starting Dracut Emergency Shell... Warning: /dev/root does not exist Generating "/run/initramfs/rdsosreport.txt" Entering emergency mode. Exit the shell to continue. Type "journalctl" to view system logs. You might want to tsave "/run/initramfs/rdsosreport.txt" to a USB stick or /boot after mounting then and attach it to a bug report. :/#
原因と回避策
No space left on device
とあるのでディスクスペースがないのかと思いつつも、出力をさかのぼっていると以下のようなエラーが出ていた。
dracut-initqueue[1001]: /sbin/dmsquash-live-root: line 286: printf: write error: No space left on device
DracutはRHELのディストリビューションで使われているinitramfsを作成するためのツール。 その処理の中で実行されているdmsquash-live-root.shは起動時にメモリに一時領域用のファイルシステムが作成されるもののようだが、そのための領域がないということらしい。
つまりメモリが足りないということかと思いつつ、もう少し調べるとRHELのカスタマーポータルやBugzillaにも情報が上がっていた。
- Bug 1314092 - f24 installation fails with 1GB ram | Red Hat Bugzilla
- Kickstart on RHEL 7.3 fails with "/sbin/dmsquash-live-root: line 273: write error: No space left on device" - Red Hat Customer Portal
どうやらメモリが2GB以上ないとだめらしい。
事象が発生したときに作成しようとした仮想マシンのスペックは 1CPU / 1GB RAM / 10GB ストレージ だったので RAM を2GBにしたらうまくブートが行われた。
まとめ
kickstartでのインストール時にメモリ不足によりブート処理が途中で止まる事象の原因その回避策について書いた。 新規作成時は2GB以上のメモリを使うようにしておきたい。
参考
- Bug 1314092 - f24 installation fails with 1GB ram | Red Hat Bugzilla
- Kickstart on RHEL 7.3 fails with "/sbin/dmsquash-live-root: line 273: write error: No space left on device" - Red Hat Customer Portal
- Red Hat Enterprise Linux 6 24.5. 初期 RAM ディスクイメージの検証 - Red Hat Customer Portal
- Dracut Wiki
- LiveOS image - Fedora Project Wiki
- dracut/dmsquash-live-root.sh at master · dracutdevs/dracut
- dracut/dracut-lib.sh at master · zfsonlinux/dracut