隠居日録

隠居日録

2016年(世にいう平成28年)、発作的に会社を辞め、隠居生活に入る。日々を読書と散歩に費やす

armbianのインストールで盛大にはまる

2018年の10月30日にNanoPi NEO2にarmbianをインストールし始めたのだが、初日から盛大にはまってしまった。

書き込み用のイメージは月曜日にダウンロードしていて、「Armbian_5.65_Nanopineo2_Debian_stretch_next_4.14.78.img」がDebianの最新なので、これをSDカードに書き込んだ。そのSDカードをスロットに差し込んで、電源を入れると、DHCPIPアドレスを取得したようなので、そのIPアドレスsshで接続すると、root/1234でログインできた。で、早速rootのパスワードの変更を促されるのだが、そこで新しいパスワードを入れると、接続が切られてしまう。何回か繰り返して試したが、毎回同じ動作なので、出だしの所ではまってしまったことになる。別なSDカードがあったので、それを試したが、全く同じ状態だ。同様の問題がないかと検索すると、以下のページを見つけた。

Initial login (via SSH) can't set password - SD card and PSU issues - Armbian Community Forums

どうやらSDカードがダメなのではと想像しているのだが、このSDカードはブートでしか使わない予定なので、新しいカードを買うのもためらわれる。それで何か回避策はないかと、SDカードの中身をLinuxマシンにつないで見るみると、/rootには以下に.not_logged_in_yetという名前のファイルがある。いかにもそれっぽい名前なので、とりあえずこれをリネームして、x_not_logged_in_yetにして、立ち上げてみた。そうすると、パスワードの変更の所で接続が切れなくなった。理由は全く不明だ。

次にSDカードのファイルシステムをHDDにコピーする必要があるのだが、armbianではnand-sata-installというコマンドで、この作業を実行していくれるということがarmbianのドキュメントのページに書いてあるので、実行してみた。だが、ファイルシステムのコピーの所でこれまた接続が切れてしまう。これも何回か試してみたが同じなので、マニュアルでファイルシステムのコピーをした。

最近のu-bootは非常に柔軟にできており、/boot/armbianEnv.txtにrootdev=というパラメータがあり、ここにUUID=XXXXXXXX-YYYY-ZZZZ-WWW-AAAAAAAAAというように、rootデバイスになるディスクのパーティションのUUIDを書き込んでおくと、そこから起動してくれるようだ。そこで、HDDの第一パーティションのUUIDを書き込んで、リブートすると、希望通り、HDDからブートしてきた。ここまで、問題があったものの何とか設定できた。この後色々設定を変えたり、ffmpegコンパイルしてみたり、5~6時間ぐらい動作させたが、予期せぬ接続断やリブートはなかったので、今日の作業はここまでにしようと思い、最後にリブートして、まだちゃんと立ち上がって、ログインできるかどうか確認しようと思った。いざ実行したみると、HDDから立ち上がってこない。pingにも応答しない。

しかたがないので、SDカードにrootdevを元に戻して、立ち上げると、これは大丈夫。起動してきて、ログインできる。そこで、rootdevをHDDに変えると、ログインできない。ファイルシステムは壊れていないだろうという、希望的観測のもと、/etc/fstabが悪いのではないかと推測して、これをいろいろ修正しながら、試していると、nodiratimeと書くところを、一行だけnodirtimeになっている行があり、それが原因で、立ち上がらなかったようだ。でも、指定ミスをしていたパーティションは作業用のディレクトリで、rootdevのパーティションじゃないのだが、一つでもおかしいと、そこでブートプロセスが止まるようだ。初めて知った。このリカバリー作業に1時間半も費やしてしまった。

2018/11/6追記
ようやくサーバー群をインストールし、設定も終えて、だいたい環境設定も完了に近づきてきたのだが、カーネルがクラッシュし、再起動されることが頻発するようになった。最初に気付いたのはaptitude実行時に処理が止まった時で、

Unable to handle kernel paging request at virtual address 20be0f0020be2f

と出ていて、更にこの下に、

Modules linked in: zram sun8i_codec_analog snd_soc_core snd_pcm_dmaengine snd_pcm sun4i_gpadc_iio snd_timer iio_hwmon industrialio usb_f_acm u_serial g_serial libcomposite uas sunxi usb_hdrc

とあったので、zramが何か悪さをしているのかと思って、zramを無効にした。しかし、使っているとやっぱり再起動するので、さらにpaging関係の設定を見ていると、/etc/sysctl.confにvm.swappiness=100となっており、そんなに責めなくてもと思い、小さな値にしたが効果なし。で、よーく見ると、実メモリは1GBなので、スワップに1GB割り当てていたつもりが、907MBしか割り当てられておらず、「これか?」と思い、割り当てサイズを大きくしてみた。一見安定したように見えたのだが、やはり数時間すると再起動してしまう。armbianではなく、friendlyarm提供のlinuxを試してみるか。

2018/11/8追記
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2を見ると、ubuntuベースのlinux (nanopi-neo2_sd_friendlycore-xenial_4.14_arm64_20181011.img)があるので、これを試してみた。しかしこれもサーバー類を設定していくとやはり再起動してしまう。一つ気づいたのは、何やら変なパケットを受信した後に再起動しているように見えることだ。例えば、こんなパケット。

[ 1059.493645] dwmac-sun8i 1c30000.ethernet eth0: len 2032 larger than size (1536)
[ 1059.677500] dwmac-sun8i 1c30000.ethernet eth0: len 1677 larger than size (1536)
[ 1059.762794] dwmac-sun8i 1c30000.ethernet eth0: len 1665 larger than size (1536)
[ 5303.596996] dwmac-sun8i 1c30000.ethernet eth0: len 1667 larger than size (1536)

それともう一つ気づいたのは、100%の確信はないが、tinyproxyを動作させると再起動するようになるということだ。現在tinyproxyを止めて様子を見ている状態だったが、やはり再起動してしまった。なので、関係ないのだろう。どうしたものか。