1.はじめに
ラズパイで稼働させているarchlinuxの更新ができない。いやできないわけではなく更新すると再起動できなくなっていたのです。そのため数週間パッケージの更新してはだめ、バックアップディスクを使用、またしばらくしたので改善したかと思いアップデート、やはりだめという状況が続いていました。
その前に
そういえば、こんなエラーが出ていたなと気づき、
Journal file /var/log/journal/e903ce88d97c4daaa2c0dae207e2588a/system@0005ebdb441e7d49-86d387af5d27efc1.journal~ is truncated( or corrupted ) , ignoring file.
このトラブルは最終的にこのファイルを削除することで回避できた。
$ sudo rm /var/log/journal/e903ce88d97c4daaa2c0dae207e2588asystem@0005ebdb441e7d49-86d387af5d27efc1.journal~
$ sudo reboot
起動して正常に稼働。
よし、これならアップデートが成功するのではないかと、sudo pacman -Syu
やったら、やはりだめ。ガックリ!
2.ネットワークインターフェイスの名称変更
本日時間ができたので、モニターとキーボードをつなげて何が問題になっているのかを調べてみた。
原因はネットワークインターフェイスの名称(eth0 から end0 へ)が変更されることで、ネットワークが起動できないことのようだ。 ssh や www サービスが提供できないだけで、とりあえずログインはできるようだ。
(1)正常に起動していたときの状況
$ ip a
2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000
interface は eth0 です。これは正常に起動できていたときの記録
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.xxx scope global eth0
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr
valid_lft 14060sec preferred_lft 12260sec
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
(2)netctl の無効化
$ sudo netctl disable mynet
設定ファイルの interface=eth0 を end0に変更しても機能しなかったので、netctl の使用をやめ、デフォルトのsystemd-networkを使用することにした。
(3)systemd-networkd サービスの有効化
$ sudo systemctl enable systemd-networkd
Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service -> /usr/lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service -> /usr/lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket -> /usr/lib/systemd/system/systemd-networkd.socket.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-network-generator.service -> /usr/lib/systemd/system/systemd-network-generator.service.
Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service -> /usr/lib/systemd/system/systemd-networkd-wait-online.service.
(4)設定ファイルの編集
$ sudo nano /etc/systemd/network/20-wired.network
[Match]
Name=end0
[Network]
Address=xxx.xxx.xxx.xxx/24
Gateway=xxx.xxx.xxx.xxx
DNS=xxx.xxx.xxx.xxx 8.8.8.8
(5)パッケージのアップデート
$ sudo pacman -Syu
経過は省略(しばらく更新できないでいたので、大量のパッケージが表示される。)
(6)netctl パッケージの削除
$ sudo pacman -Rs netctl
checking dependencies…
:: dhcpcd optionally requires openresolv: resolvconf support
Packages (2) openresolv-3.12.0-1 netctl-1.28-1
Total Removed Size: 0.15 MiB
: Do you want to remove these packages? [Y/n] y
:: Processing package changes…
(1/2) removing netctl [#####################################] 100%
(2/2) removing openresolv [#####################################] 100%
:: Running post-transaction hooks…
(1/2) Reloading system manager configuration…
(2/2) Arming ConditionNeedsUpdate…
(6)再起動と ssh によるログイン
$ sudo reboot
$ ssh user@xxxx.xxxx.xxxx.xxxx
$ ip a
2: end0: mtu 1500 qdisc mq state UP group default qlen 1000
interface が eth0 から end0 に変更されている
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.xxx scope global end0
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 14309sec preferred_lft 12509sec
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
3.最後に
今回は、ネットワーク上のトラブルのために、トラブルったときには全く起動できていないのか?、ネットワーク上のトラブルか?判別できなかった。そのためモニターとキーボードを接続して、起動の様子を観察せざるを得なかった。その時のために予備的に wlan0 を稼働させておくのも一考だと思う。あっちこっちからコードを見つけ出して接続するのは本当に面倒だから。
4.参考
https://systemd.io/PREDICTABLE_INTERFACE_NAMES/
コメント