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」のところで引っかかっている模様。


  1. dmesg
  2. ・・・(途中省略)
  3. [ 8.770884] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
  4. [ 13.118885] ISO 9660 Extensions: Microsoft Joliet Level 3
  5. [ 13.120843] ISO 9660 Extensions: RRIP_1991A
  6. [ 145.857826] random: crng init done  ←★
  7. [ 145.858624] random: 7 urandom warning(s) missed due to ratelimiting
  8. [ 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.
  9. [ 146.205891] Bridge firewalling registered
  10. [ 146.235984] nf_conntrack version 0.5.0 (8192 buckets, 32768 max)
  11. [ 146.341934] Initializing XFRM netlink socket
  12. [ 146.350961] Netfilter messages via NETLINK v0.30.
  13. [ 146.355956] ctnetlink v0.93: registering with nfnetlink.
  14. [ 146.428042] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
  15. [ 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)


以下の通り、確かに失敗している。

  1. systemctl --failed
  2. UNIT LOAD ACTIVE SUB DESCRIPTION
  3. rngd.service loaded failed failed Hardware RNG Entropy Gatherer Daemon
  4.  
  5. LOAD = Reflects whether the unit definition was properly loaded.
  6. ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
  7. SUB = The low-level unit activation state, values depend on unit type.
  8.  
  9. 1 loaded units listed. Pass --all to see loaded but inactive units, too.
  10. To show all installed unit files use 'systemctl list-unit-files'.


該当するサービスを無効化にして、再起動

  1. sudo systemctl disable rngd.service
  2. sudo reboot

結果は変わらず遅い・・・・。

systemctlの結果は0になったけど、dockerの起動は遅いまま。

  1. systemctl --failed
  2. 0 loaded units listed. Pass --all to see loaded but inactive units, too.
  3. To show all installed unit files use 'systemctl list-unit-files'.


次の方法。


方法その2:haveged→解消!

もう一つはhavegedをインストールする方法。

あまりパッケージのインストールはやりたくなかったが仕方ない。

 参考:欅樹雑記: ログインが遅くなった (zelkova.cc)

 参考:Haveged - ArchWiki (archlinux.jp)


まずは↑のWikiに書いてあったとおり、利用可能なエントロピーを確認。

  1. sudo cat /proc/sys/kernel/random/entropy_avail
  2. 120


結果は120ですた。

1000以下なのでhavegedをインストールする。

havegedをインストールするにはEPELのリポジトリが必要なのでまずはEPELを追加する。

Amazon Linux2でのEPEL追加は以下のコマンド。

  1. sudo amazon-linux-extras install -y epel

リポジトリが追加されたことを確認。

  1. yum repolist
  2. 読み込んだプラグイン:langpacks, priorities, update-motd
  3. 209 packages excluded due to repository priority protections
  4. リポジトリー ID リポジトリー名 状態
  5. amzn2-core/2/x86_64 Amazon Linux 2 core repository 26,556
  6. amzn2extra-docker/2/x86_64 Amazon Extras repo for docker 50
  7. amzn2extra-epel/2/x86_64 Amazon Extras repo for epel 1
  8. epel/x86_64 Extra Packages for Enterprise Linux 7 - x8 13,479+209  ←
  9. repolist: 40,086

havegedをインストール&自動起動

  1. sudo yum install -y haveged
  2. sudo systemctl enable haveged.service
  3. sudo reboot

再起動後、解消された!!!(・∀・)

あとでdmesgで確認してみたが"random: crng init done"のところが改善されている。

VirtualBoxAdditionsインストールした後に確認したw

  1. dmesg
  2. ・・・(途中省略)
  3. [ 3.608064] vgdrvHeartbeatInit: Setting up heartbeat to trigger every 2000 milliseconds
  4. [ 3.609924] input: Unspecified device as /devices/pci0000:00/0000:00:04.0/input/input7
  5. [ 3.615514] vboxguest: Successfully loaded version 6.1.28 r147628
  6. [ 3.617225] vboxguest: misc device minor 58, IRQ 20, I/O port d040, MMIO at 00000000f0400000 (size 0x400000)
  7. [ 3.618219] vboxguest: Successfully loaded version 6.1.28 r147628 (interface 0x00010004)
  8. [ 4.855933] random: crng init done  ←★
  9. [ 4.856284] random: 7 urandom warning(s) missed due to ratelimiting
  10. [ 6.863282] vboxvideo: loading version 6.1.28 r147628
  11. [ 6.976400] 05:53:46.821374 main VBoxService 6.1.28 r147628 (verbosity: 0) linux.amd64 (Oct 18 2021 20:11:04) release log
  12. 05:53:46.821378 main Log opened 2021-10-28T05:53:46.821367000Z
  13. [ 6.977928] 05:53:46.822962 main OS Product: Linux
  14. [ 6.978427] 05:53:46.823464 main OS Release: 4.14.248-189.473.amzn2.x86_64
  15. [ 6.979100] 05:53:46.824139 main OS Version: #1 SMP Mon Sep 27 05:52:26 UTC 2021
  16. [ 6.979885] 05:53:46.824911 main Executable: /opt/VBoxGuestAdditions-6.1.28/sbin/VBoxService
  17. 05:53:46.824913 main Process ID: 2993
  18. 05:53:46.824913 main Package type: LINUX_64BITS_GENERIC
  19. [ 6.988601] 05:53:46.833599 main 6.1.28 r147628 started. Verbose level = 0
  20. [ 6.998591] 05:53:46.843542 main vbglR3GuestCtrlDetectPeekGetCancelSupport: Supported (#1)
  21. [ 7.073586] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
  22. [ 7.080706] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
  23. [ 7.081714] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
  24. [ 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.
  25. [ 13.154976] Bridge firewalling registered
  26. [ 13.195683] nf_conntrack version 0.5.0 (8192 buckets, 32768 max)
  27. [ 13.467320] Initializing XFRM netlink socket
  28. [ 13.472686] Netfilter messages via NETLINK v0.30.
  29. [ 13.479446] ctnetlink v0.93: registering with nfnetlink.
  30. [ 13.631954] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
  31. [ 14.305776] cgroup: cgroup: disabling cgroup2 socket matching due to net_prio or net_cls activation

VirtualBoxAdditionsインストールとか

ついでというか、VirtualBoxAdditionsもインストールする。

VirtualBoxのメニューバーからVirtualBoxAdditionsインストールを選択すると、

インストーラーのisoイメージがアタッチされるので、Linux上でマウントしてからインストーラー実行。

  1. sudo mount -r -t iso9960 /dev/cdrom /media
  2. sudo /media/VBoxLinuxAdditions.run
  3. sudo systemctl enable vboxadd.service

あとRedHatっぽく見せてやるw

  1. sudo ln -s /etc/system-release /etc/redhat-release


設定は以上!

検索

Blog Archive

Popular Posts

About Me

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

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

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

どうぞよろしく!

ブログランキング

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

QooQ