NanoPi NEO2のArmbianをアップグレード

NanoPi NEO2+NASキットにArmbianを入れて本来NASとして使うHDDをルートファイルシステムにして動かしています。といっても、大したものは動いていないのですが。

で、久々にリモートログインしてaptで更新をかけたら、

New release '22.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

という表示がでたので、記載どおりにアップグレードをかけると、すぐにsyslogが溢れてしまいます。
いろいろみていくと、syslogはzram0にマウントされていて、RAMDISK上に取られているようです。そのためにMicroSDへの書き込みが少なくて長期間の運用に耐えてくれるのかもしれませんが、ここではアップグレードの障害になっています。

しかし、このマシンのルートファイルシステムはHDD上なので、ログもHDDに取っても差し支えありません。そこで、/etc/default/armbian-ramlog の冒頭の

ENABLED=true

ENABLED=false

に変更して再起動すると、dfコマンドで見てもzramに取られなくなりました。この状態で、do-release-upgradeをかけると、先に進むようになりました。・・・・が、処理はきれいに最後まで走ったものの、再起動したら接続できず・・・でした。

ところで、こちらの記事をみると、Raspberry Piでもできそうな雰囲気です。(試していませんが)
その他、「zram syslog」でぐぐると、いろいろ情報はありそうです。

EzbookにインストールしてあるLinux Mintを再インストール

Webでの調べものやちょっとした調査を中心にサブマシンとして使っているJumper Ezbook Pro 3にインストールしているLinux Mint MATE Editionを19から21に入れ替えてみました。インストール用USBの作成や一般的な設定などは省略して肝の部分だけ記載します。
(内容を理解してやらないと既存のディスクの内容を飛ばしてしまうので要注意です)
インストール先はオンボードのeMMCです。プリインストールされていたWindowsは増設したM.2 SSDに移動してあります。(M.2 SSDの方が速いのと、容量的にもWindowsの方がたくさん欲しいので)

M.2 SSDに移動してあるWindows 10との共存

Windows 10と共存するため、インストール時にはLinuxからSSDが見えないようにしてeMMCにインストールさせます。具体的にはUSBメモリから起動する際にGRUBの画面でeを押して起動パラメータを編集、quiet splash のところに

libata.force=disable

を追加してからインストール環境を起動します。
起動したらディスクユーティリティでeMMCの中のFATとext2パーティションを削除してから普通にLinux Mint MATE Editionをインストールします。その際、インストーラに日本語を選ぶとキーボードの指定では日本語キーボードがデフォルトになっているのでEnglish(US)にしておきます。インストール完了後は通常通り再起動してeMMCから起動させます。

再起動後、/etc/default/grub の冒頭部分の追加コマンドラインの近辺を編集して、次回起動以降ではLinux MintにM.2 SSDを認識させないようにするのと、起動時にGRUBで選択した内容を次回のデフォルト選択にするようにします。こうすることで、今回のカーネルアップデートでGRUBエントリ作成時のみWindowsのloaderを認識させるのと、通常の使用時にWindowsUpdateで何度も起動する際に毎回Windowsを選択する手間を省きます。

#GRUB_DISABLE_SUBMENU=y
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="libata.force=disable"
GRUB_CMDLINE_LINUX=""

変更したらアップデートマネージャでアップデートをかけます。たいていの場合はこの中でカーネルの更新がかかるのでGRUBメニューが更新されてWindows loaderのエントリが追加されますが、カーネルの更新がない場合には、

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

として手動でGRUBメニューの更新が必要です。

アップデートが完了したら再起動してWindows 10が起動できることと、Linux Mintが起動できることを確認します。
あとは一般的な言語設定などの変更を行えば概ね完了です。

英語キーボードで右ALTをIME ON/OFFに割り当てる

Jumper Ezbook Pro 3は英語キーボードなので全角半角キーがなくIMEの切り替えが面倒です。そこでMozcでは英語キーボードの右ALTをIME ON/OFFに割り当てるため、アプリケーション⇒設定⇒自動起動するアプリ でエントリを追加してxmodmapでキーマップを変更します。名前や説明は適当に入力し、コマンドの部分は

/user/bin/xmodmap -e "remove mod1 = Alt_R" -e "keycode 108 = Zenkaku_Hankaku Kanji"

とします。設定したらログインし直して有効に機能するかを確認します。

防湿ケースの湿度計をアップグレード

3Dプリンタ用のフィラメントやカメラ・レンズの保管にナカバヤシの湿度計付きドライボックス

(とこれの8L版)を使用しているのですが、この湿度計が怪しいのです。他の湿度計が50%程度を指示していてもこいつだけ70%とか80%とかの多湿の表示をしています。
そこで、このアナログな湿度計をデジタルに変更してみました。
交換するのは、以前秋月電子で買った温湿度計です。

何個か買ったのですが、すべてほぼ同じ値を指示していますし、BME280もほぼ同じ値を指していましたので、精度はそこそこあると思います。
これが付くようにブラケットをFusion360で適当に作ります。

出力してはめ込んで並べると、

こんな感じになりました。
そして、ケースに取り付けると、

こんな感じです。(これは8Lの方です)
ポリプロピレンのケースなのでやや見にくいですが、十分使い物になりそうです。

Windowsの「インターネット接続なし」の原因

よく起きる「インターネット接続なし」表示の原因です。
簡単にまとめると、

  1. dns.msftncsi.com の名前解決が正常にできない
  2. http://www.msftconnecttest.com/connecttest.txt から正しいテキストファイルが取得できない
    (IPv6の場合はhttp://ipv6.msftconnecttest.com/connecttest.txt

だそうです。
詳しくは、ネットワーク接続状態インジケーター (NCSI) の概要とトラブルシュートを参照。

LinuxMintでコマンドラインからQRコード表示

LinuxMintでWebを閲覧していると、
「このページ(URL)をスマホに転送したい!」
と思うときがあります。
方法としてはアドレスバーにポチポチ打ち込む、メールに書いて転送する、ブラウザのブックマーク経由で転送する、Google Documentに一旦コピペする、などがありますが、どれもイマイチかな、と。
でふと思いついたのが、

QRコード経由で転送する

です。お手軽にはWebサイト上で変換してくれるサイトがたくさんあるのでそれでもいいのですが、当然記録を取っているはずなのでちょっと気持ち悪い。
ということで、もう少し気にならない方法でローカルで済ませてみます。

Linux上へのソフトウェアのインストール

方針としては、
①qrencodeでQRコード画像を生成
②ビューアで表示
ということになります。できれば中間ファイルなども生成したくないので、②は標準入力からの画像データを表示できるものとしてimagemagickのdisplayコマンドを使ってみます。
インストールは、

$ sudo apt install qrencode imagemagick-6.q16

です。imagemagickは候補の中から選んだだけです。
インストールしたら、

$ qrencode "https://tomono.tokyo" -o - | display

とすると、

という感じで、QRコードが表示されました。
これをスマホのカメラでスキャンしてやればページを表示できます。なお、スマホのカメラのスキャナも読んだものをクラウドにアップロードしているものが多そうなので、個人情報を含んだりする情報やユニークなURLなどはこの方法では転送しないように注意が必要です。

試しにURLではなく、文章を変換してみました。

$ qrencode "祇園精舎の鐘の声、諸行無常の響きあり。沙羅双樹の花の色、盛者必衰の理をあらはす。おごれる人も久しからず、ただ春の夜の夢のごとし。猛き者も遂にはほろびぬ、ひとへに風の前の塵におなじ。" -o - | display 

として、表示された

を読んでやると、ちゃんとテキストとして認識されクリップボードにコピーするか聞いてきました。そこで、さらに長い文章で試してみました。

$ qrencode "祇園精舍の鐘の声、諸行無常の響きあり。娑羅双樹の花の色、盛者必衰の理をあらはす。おごれる人も久しからず、ただ春の夜の夢のごとし。猛き者も遂にはほろびぬ、ひとへに風の前の塵におなじ。遠く異朝をとぶらへば、秦の趙高、漢の王莽、梁の朱忌、唐の祿山、これらは皆舊主先皇の政にもしたがはず、樂しみをきはめ、諌めをも思ひ入れず、天下の亂れん事を悟らずして、民間の愁ふるところを知らざりしかば、久しからずして、亡じにし者どもなり。近く本朝をうかがふに、承平の將門、天慶の純友、康和の義親、平治の信賴、これらはおごれる心もたけき事も、皆とりどりにこそありしかども、まぢかくは六波羅の入道、前太政大臣平朝臣清盛公と申しし人のありさま、傳へ承るこそ心もことばも及ばれね。" -o - | display

とすると、

が生成されて、これも正しく読むことができました。
信頼できるQRコードリーダーがあれば、長めのテキストの送信にもつかえるかもしれません。

UEFI環境でUSBメモリにLinuxをインストールする

USBメモリにLinuxをインストールする場合、UEFIではなくレガシーで起動させてインストールする必要がありましたが、最近はノートPCを中心にUEFIオンリーのPCが増えています。また、UEFI環境でSSDの領域を分割してデュアルブートというのもかなりハードルが高いようです。

となると、UEFI環境でUSBメモリから(Liveシステムではなく)Linuxを起動したいということで、どうしたらよいか調べてみました。

“UEFI環境でUSBメモリにLinuxをインストールする” の続きを読む

WebARENAのUbuntuをアップデートしてみた

WebARENAのUbuntuは18.04あたりで運用していたのですが、22.04.1 LTSにアップデートしてみました。

18.04の状態でアップデートをかけて再起動してログインしてみたら、

New release '22.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

というメッセージが出ました。

早速、

$ sudo do-release-upgrade

としてみたところ、しばらくしてsshで接続して実行するのはオススメしない、というようなメッセージが出ましたので、Webコンソールからログインして実行しました。

いくつか設定ファイルが新しくなるようですが、書き換えているものもあったので古いものを保持した意外は特に操作はありません。

ただ、アップグレード後、以前構築したFlaskで動かしているアプリが動作しなくなってしまいました。
ちょっと悩んでしまいましたが、調べてみたところ、Pythonのモジュールが入っていないだけでしたので、

$ sudo pip3 install paho-mqtt
$ sudo pip3 install uwsgi
$ sudo pip3 install Flask-HTTPAuth

でほぼアップデートは完了です。

CPUの動作周波数を制限する

いまさらですが、作業用のPCとは別にWeb閲覧・調査用にCore i3-3220TのPCをLinuxMint21を入れて使っています。
が、このPCはCPUの負荷がかかるとCPUファンの音がうるさくて耳障りなので、閲覧用にエントリーレベルのCPUで1台組もうかと思ったのですが、今はあまり自由にパーツを選択できる状況ではないようです。そこで、CPUの周波数を制限してみました。

$ sudo apt install linux-tools-common linux-tools-generic

としてから、

$ sudo cpupower frequency-set -g powersave

として、CPU周波数のガバナを最低周波数に固定します。現在の設定は以下で確認できます。

$ sudo cpupower frequency-info
analyzing CPU 0:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 2.80 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.60 GHz and 2.80 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.60 GHz (asserted by call to kernel)
  boost state support:
    Supported: no
    Active: no
    2800 MHz max turbo 4 active cores
    2800 MHz max turbo 3 active cores
    2800 MHz max turbo 2 active cores
    2800 MHz max turbo 1 active cores

これでしばらく様子を見てみたいと思いますが、とりあえずはすぐにうるさくなったりはしないようです。また、Webの閲覧くらいなら全く問題はなさそうです。

nimを動かしてみた

nimをインストール

公式サイトのインストール手順の一番最初にあるchoosenimを使った方法を試してみる。

$ curl https://nim-lang.org/choosenim/init.sh -sSf | sh

とすると、テレメトリ情報の取得可否の質問をされるが、すぐ完了する。
~/.profile か ~/.bashrc に

export PATH=/home/${USER}/.nimble/bin:$PATH

を追加するよう表示されているので、 ~/.bashrc の最後に記述を追加してシェルを開いて、バージョンを確認する。

$ nim -v
Nim Compiler Version 1.6.6 [Linux: amd64]
Compiled at 2022-05-05
Copyright (c) 2006-2021 by Andreas Rumpf

git hash: 0565a70eab02122ce278b98181c7d1170870865c
active boot switches: -d:release

サンプルを動かしてみる

nimのドキュメントにある、Learn X in Y minutesからソースコードをダウンロードしてきて、

$ nim c learnNim.nim

でコンパイル、

$ ./learnNim

で実行できた。

$ nim c -r learnNim.nim

とすると、コンパイル後実行してくれるので、Pythonと同じ感覚で使える・・・・かもしれない。

オンラインでコンパイル&実行

https://play.nim-lang.org/ にて、オンラインでコンパイル&実行ができる。ただし、対話的なものはだめっぽい。(よくわからん)

プログラミング言語Nim

Nimというプログラミング言語があるらしい。
ちょっと見た感じ、とても興味深い気がするので、是非トライしてみたい。
知ったのは、

がきっかけ。

お役立ちリンクも貼っていただいた。

同じ内容だけど、自分で参照するために貼っておこう。