前回の記事で、MacのVirtualBox上にAmazon Linux2を立てて、
そのAmazon Linux2上でHomebrigde on dockerを動かした。
Mac上にVirtual Box+dockerでHomebridgeを立てる
我が家のスマートホーム化への第一歩。
これで本来の目的は達成されたわけなんだけど、少々気になる点がある。
dockerを動かしている状態でAmazon Linux2を再起動したら、
自動的にdockerも起動するようになっているのだが、
dockerの起動がものすごく遅い。
Linuxサーバが起動してもdockerの起動まで時間がかかっている。大体2分ぐらい。
dmesgで確認したら、「random: crng init done」のところで引っかかっている模様。
dmesg ・・・(途中省略) [ 8.770884] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 13.118885] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 13.120843] ISO 9660 Extensions: RRIP_1991A [ 145.857826] random: crng init done ←★ [ 145.858624] random: 7 urandom warning(s) missed due to ratelimiting [ 146.195315] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 146.205891] Bridge firewalling registered [ 146.235984] nf_conntrack version 0.5.0 (8192 buckets, 32768 max) [ 146.341934] Initializing XFRM netlink socket [ 146.350961] Netfilter messages via NETLINK v0.30. [ 146.355956] ctnetlink v0.93: registering with nfnetlink. [ 146.428042] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready [ 146.922221] cgroup: cgroup: disabling cgroup2 socket matching due to net_prio or net_cls activation
これらの問題を解消しつつ、ついでにVirtualBoxのAdditionsもインストールした。
VirtualBoxAdditionsはGUIを使うわけじゃないので、入れなくても何ら問題なし。
VMwareToolsみたいなもんだと思えば入れときゃいいかなとw
方法その1:rngdを無効にする→効果なし
「random: crng init done」でググると、
rngdを無効にするか、havegedを導入したら解決するようだったので、
まずはrndgの無効を試みる。
サーバ起動時のシーケンスを確認したら、rngdのサービスがエラーになっていた。
dockerの起動が遅いのはこいつか!?と思い、サービスの無効化をやってみる。
参考:CentOS 7 systemdコマンド | 自宅サーバー構築メモ(CentOS) (yokensaka.com)
以下の通り、確かに失敗している。
systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION ● rngd.service loaded failed failed Hardware RNG Entropy Gatherer Daemon LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 1 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
該当するサービスを無効化にして、再起動
sudo systemctl disable rngd.service sudo reboot
結果は変わらず遅い・・・・。
systemctlの結果は0になったけど、dockerの起動は遅いまま。
systemctl --failed 0 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
次の方法。
方法その2:haveged→解消!
もう一つはhavegedをインストールする方法。
あまりパッケージのインストールはやりたくなかったが仕方ない。
参考:欅樹雑記: ログインが遅くなった (zelkova.cc)
参考:Haveged - ArchWiki (archlinux.jp)
まずは↑のWikiに書いてあったとおり、利用可能なエントロピーを確認。
sudo cat /proc/sys/kernel/random/entropy_avail 120
結果は120ですた。
1000以下なのでhavegedをインストールする。
havegedをインストールするにはEPELのリポジトリが必要なのでまずはEPELを追加する。
Amazon Linux2でのEPEL追加は以下のコマンド。
sudo amazon-linux-extras install -y epel
リポジトリが追加されたことを確認。
yum repolist 読み込んだプラグイン:langpacks, priorities, update-motd 209 packages excluded due to repository priority protections リポジトリー ID リポジトリー名 状態 amzn2-core/2/x86_64 Amazon Linux 2 core repository 26,556 amzn2extra-docker/2/x86_64 Amazon Extras repo for docker 50 amzn2extra-epel/2/x86_64 Amazon Extras repo for epel 1 epel/x86_64 Extra Packages for Enterprise Linux 7 - x8 13,479+209 ← repolist: 40,086
havegedをインストール&自動起動
sudo yum install -y haveged sudo systemctl enable haveged.service sudo reboot
再起動後、解消された!!!(・∀・)
あとでdmesgで確認してみたが"random: crng init done"のところが改善されている。
VirtualBoxAdditionsインストールした後に確認したw
dmesg ・・・(途中省略) [ 3.608064] vgdrvHeartbeatInit: Setting up heartbeat to trigger every 2000 milliseconds [ 3.609924] input: Unspecified device as /devices/pci0000:00/0000:00:04.0/input/input7 [ 3.615514] vboxguest: Successfully loaded version 6.1.28 r147628 [ 3.617225] vboxguest: misc device minor 58, IRQ 20, I/O port d040, MMIO at 00000000f0400000 (size 0x400000) [ 3.618219] vboxguest: Successfully loaded version 6.1.28 r147628 (interface 0x00010004) [ 4.855933] random: crng init done ←★ [ 4.856284] random: 7 urandom warning(s) missed due to ratelimiting [ 6.863282] vboxvideo: loading version 6.1.28 r147628 [ 6.976400] 05:53:46.821374 main VBoxService 6.1.28 r147628 (verbosity: 0) linux.amd64 (Oct 18 2021 20:11:04) release log 05:53:46.821378 main Log opened 2021-10-28T05:53:46.821367000Z [ 6.977928] 05:53:46.822962 main OS Product: Linux [ 6.978427] 05:53:46.823464 main OS Release: 4.14.248-189.473.amzn2.x86_64 [ 6.979100] 05:53:46.824139 main OS Version: #1 SMP Mon Sep 27 05:52:26 UTC 2021 [ 6.979885] 05:53:46.824911 main Executable: /opt/VBoxGuestAdditions-6.1.28/sbin/VBoxService 05:53:46.824913 main Process ID: 2993 05:53:46.824913 main Package type: LINUX_64BITS_GENERIC [ 6.988601] 05:53:46.833599 main 6.1.28 r147628 started. Verbose level = 0 [ 6.998591] 05:53:46.843542 main vbglR3GuestCtrlDetectPeekGetCancelSupport: Supported (#1) [ 7.073586] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 7.080706] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX [ 7.081714] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 13.144680] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 13.154976] Bridge firewalling registered [ 13.195683] nf_conntrack version 0.5.0 (8192 buckets, 32768 max) [ 13.467320] Initializing XFRM netlink socket [ 13.472686] Netfilter messages via NETLINK v0.30. [ 13.479446] ctnetlink v0.93: registering with nfnetlink. [ 13.631954] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready [ 14.305776] cgroup: cgroup: disabling cgroup2 socket matching due to net_prio or net_cls activation
VirtualBoxAdditionsインストールとか
ついでというか、VirtualBoxAdditionsもインストールする。
VirtualBoxのメニューバーからVirtualBoxAdditionsインストールを選択すると、
インストーラーのisoイメージがアタッチされるので、Linux上でマウントしてからインストーラー実行。
sudo mount -r -t iso9960 /dev/cdrom /media sudo /media/VBoxLinuxAdditions.run sudo systemctl enable vboxadd.service
あとRedHatっぽく見せてやるw
sudo ln -s /etc/system-release /etc/redhat-release
設定は以上!
0 件のコメント:
コメントを投稿