Linux起動時にrandom: crng init doneと表示されて起動に時間がかかる問題

2021/10/28

HomeKit Linux Mac

t f B! P L

前回の記事で、MacのVirtualBox上にAmazon Linux2を立てて、

そのAmazon Linux2上でHomebrigde on dockerを動かした。



これで本来の目的は達成されたわけなんだけど、少々気になる点がある。

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


設定は以上!

検索

Blog Archive

Popular Posts

About Me

自分の写真
性別:男
年齢:ついに40over
趣味:Snowboard、パソコン、iPhone、子育て

仕事:ユー子の社内SEとしてサーバ、NW等のインフラ全般をやってます

日々生活していく中で思ったことなどをつらつらと書いていきます。

どうぞよろしく!

ブログランキング

ブログランキング・にほんブログ村へ

QooQ