前回の記事で、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 件のコメント:
コメントを投稿