VirtualBox上にインストールしたUbuntu 16.04の起動時間を速くする為の施策を記載します。
コア数が多いほどユーザランドは早くなる傾向にありますが、BIOS、GRUB、カーネルは1コアで動作しているので、本施策が役立つかと思います。
Table of Contents
1 システム構成と施策実行前の起動時間
OSX上のVirtualBoxで以下の仮想マシンを利用しています。
CPU Core Number | 1 |
RAM | 1GB |
Video Memory | 128MB |
Storage | IDE DVD Drive + SATA 40GB HDD |
ubuntu-16.04-desktop-amd64.isoをLVM + ext4でインストールしています。インストール直後の起動時間は以下のとおりです。
$ systemd-analyze Startup finished in 9.372s (kernel) + 5.721s (userspace) = 15.093s
2 BIOS表示時間を変更
VirtualBox上のBIOSは3秒程度の表示時間があります。 こちらの記事に記載されている方法でBIOSを表示時間を変更します。最小値の1にしておいて、必要になったら3000に変更すれば良いと思います。
3 フロッピードライブを追加
VirtualBox 5.0.20 r106931の問題っぽいのですが、フロッピードライブを追加していない状態でも、フロッピードライブが接続されているとバスが認識してしまうようです。
この結果、バスによってLinuxカーネルはフロッピードライブがあると認識してしまい、フロッピードライブの初期化処理が動作します。初期化処理が成功しないので、一度スリープして再度初期化を実行しようと試みることになり、カーネルの起動に遅延が発生します。
[ 2.038893] sd 2:0:0:0: [sda] Attached SCSI disk [ 4.311960] floppy0: no floppy controllers found [ 4.312010] work still pending
この問題を回避するために、フロッピードライブを追加して初期化処理を成功させるようにします。フロッピードライブの追加はUbuntu 16.04をシャットダウンした状態で実行します。
Settings -> Storage -> Adds new storage controller -> Add Floppy Controller
カーネルの起動時間が2秒ほど速くなりました。
$ systemd-analyze Startup finished in 6.980s (kernel) + 5.235s (userspace) = 12.216s
4 /etc/initramfs-tools/conf.d/resumeを修正
LVMが有効だとスワップ領域のマウントが遅くなる問題を修正します。
$ sudo su -c 'echo RESUME=/dev/mapper/ubuntu--vg-swap_1 > \ /etc/initramfs-tools/conf.d/resume' $ sudo update-initramfs -u $ sudo reboot
カーネルの起動時間が5秒ほど速くなりました。
$ systemd-analyze Startup finished in 2.223s (kernel) + 5.999s (userspace) = 8.223s
5 vboxadd-x11.serviceをdisable
vboxadd-x11.serviceはCPU負荷が掛かる割には何も実行しません。
$ systemd-analyze blame | head 2.795s vboxadd.service 1.770s vboxadd-x11.service 1.235s dev-mapper-ubuntu\x2d\x2dvg\x2droot.device 1.035s networking.service 930ms accounts-daemon.service 819ms NetworkManager.service 802ms avahi-daemon.service 673ms systemd-logind.service 590ms apport.service 577ms grub-common.service
systemd-analyze critical-chainで示されるボトルネックはvboxadd.serviceの方ですが、コアが少ない環境なのでvboxadd-x11.serviceをdisableします。
$ sudo systemctl disable vboxadd-x11 $ sudo reboot
ユーザランドの起動時間が1秒ほど速くなりました。
$ systemd-analyze Startup finished in 2.165s (kernel) + 4.389s (userspace) = 6.555s
6 コア数を2にした場合
systemdが並列実行されるのでユーザランドの起動時間が改善されます。
$ systemd-analyze Startup finished in 2.175s (kernel) + 2.837s (userspace) = 5.012s