ラズパイ1B で共有サーバーの構築 (3/)

  1. 過去の蓄積データを継続利用は無理らしい。心機一転パーティション分割見直し
  2. 作成に時間の掛かるデータを前準備で作成しておく
  3. 運用に必要な機能を確認しながら、順次インストールして設定する

今回の共有サーバーに利用する USBハードディスクは、過去に日経 Linux の懸賞で当たった小型のARMサーバー(GLOBALSCALE Guru server model: 003-GP0001)と組合せて利用していたものです。そのサーバーは USBポートを2つ持ち、製品に添付されていた USBメモリには、2つのパーティションが作成されていて、 /boot パーティションと、システムとなるルートパーティションでした。

その USBメモリを単純にコピーして、容量が大きなハードディスクに移行して運用していたのが、今回利用することになった USBハードディスクです。以前は他に立てた共有サーバーのデータを夜中に自動バックアップする仕様で利用していました。そのような訳で、データがそのまま利用できればベストでしたが残念ながらダメでした。

懸賞のARMサーバーは、色々と追加セットアップもして数年間は無事に運用できていたのですが、ある時に不安定なログを残しながら、気が付いた時には天国に召されてしまいました。振り返ってみると想像以上に加熱するサーバーでした。夏が来る度に持ちこたえるのだろうかと見守っていましたが、昨年の夏が過ぎて秋になって力尽きたようです。

原因は私の利用法に原因があったのかとも考えています。小さな筐体の中に電源も含有している構造で、常時バスパワーで 2.5インチ 1TB のハードディスクを稼働させていたことに問題があったのかと思います。筐体をまだ分解していませんが、最後は電源が切れたままピクリともしない状況になりました。中には電源系で焼き切れたパーツがあるのかもしれません。

OSも Debian ARM版の古い状態で稼働していたため、セキュリティアップデートや ipv6 が機能していなかったりと気になっていて、時間を見ながらメンテしようと考えた矢先でした。この手の組込み Linux 用の ARM機器は、最新のDebian が公開されているので、Pogoplug 同様に最新に置き換えることは可能です。

また、製品のコンセプトから外付けメディアにセットアップした OSを簡単にブートさせられるように考慮されているので、x86系命令セットの一般的なインテルや AMD のパソコンとは機械命令が異なる ARM プロセッサ(セットアップ中のラズパイもARMで、少しアレンジの Debian) ですが、何の支障もなく最新の Linux が組込めます。


そのような理由から再利用のハードディスクは既にパーティション分割されています。データ部分の内容を再確認するとデータ全域のバックアップはしていなかった運用のようなので、データ部分のパーティションを再割り振りして心機一転作り直すことにしました。

少し前からバックアップサーバーとして稼働させているラズパイ2のディスク構成を参考にして、再割り振りエリアを3つのパーティションに分けました。 /home 用に 100GB を取り、残りをデータ用に 370GB と 480GB に分けました。

データ部分のコピーは現在実行中ですが、元々非力な処理能力のラズパイが持つイーサーネットの転送速度は、100Mb/S ですから全転送には、時間単位というか日数単位が必要になるでしょう。

データの転送が終わりました。正確に時間の測定はしていませんが、合わせて 400GB のデータの転送に、丸1日半位掛かっていたようです。


これからは必要になると思われる機能のインストールに取り掛かります。

共有サーバーの samba メール転送機能の postfix と apache2 bind9 dnsutils ruby webalizer screen byobu ゆっくり考えないと思い付きませんが、過去の記録を見直しながら設定していきます。漏れていて気が付いたら追加でインストールしていく程度のゆるい対応で進めます。postfix は、インストール途中でどのような使い方をしたいのかのダイヤログボックスが開きますが、何も設定しないまま進め後で考えながら見直します。

$ sudo apt update
$ sudo apt install samba apache2 ruby postfix webalizer screen byobu bind9 dnsutils

ラズパイ1B で共有サーバーの構築 (2/)

  1. 秘密鍵、公開鍵ペアの扱いに関して
  2. エディタ vim インストールと、マウス操作が変わったことの対処
  3. piユーザーを既設サーバーと同じユーザー名に置き換える
  4. サーバーとしての利用なので、IPアドレスの固定化

ラズパイ1Bのこれからの作業は、sshによるリモートの作業になります。ホスト名を含めて raspi-config で設定しているので日本語化も行われています。

現在のバージョンを次に記録しておきます。

$ ssh pi@192.168.xx.yy
pi@192.168.xx.yy's password: 
Linux rpi1-com2 4.9.59+ #1047 Sun Oct 29 11:47:10 GMT 2017 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Nov  9 23:43:13 2017 from 192.168.xx.zz
pi@rpi1-com2:~ $ date
2017年 11月 10日 金曜日 15:02:59 JST
pi@rpi1-com2:~ $ uname -a
Linux rpi1-com2 4.9.59+ #1047 Sun Oct 29 11:47:10 GMT 2017 armv6l GNU/Linux
pi@rpi1-com2:~ $ 

鍵認証に関しては、ログイン先となるサーバーのログインユーザーの /home/<user> ディレクトリ内に .ssh デイレクトリを作成して、ログイン元となる操作側PCの秘密鍵と公開鍵ペア公開鍵authorized_keys ファイルにコピーします。実際の作業的には、普段 sshログインして作業している他のサーバー内に、既に作成されている実績のある authorized_keys ファイルをコピーして利用しています。.sshディレクトリと authorized_keys ファイルの実行権限はそれぞれ 700 と 600 に設定しておきます。

他のサーバーとの間で、cron / rsync 利用の自動転送によるバックアップを行わせるために、セキュリティ上問題だと一部で言われることですが、各サーバー間のrootユーザーでの作業を行わせるために、パスフレーズ無しでお互いに ssh ログインが出来る設定を行います。

他のサーバーの秘密鍵をコピーしても利用できますが、ラズパイ の root で操作して、鍵ペアを次のような操作で生成させます。

$ sudo su -
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:t8RpcOYT6......42uv5updog root@rpi1-com2
The key's randomart image is:
+---[RSA 2048]----+
| . ...           |
|o .   . .        |

|   o + ..+o      |
+----[SHA256]-----+
# ls -al .ssh
合計 16
drwx------ 2 root root 4096 11月 10 20:25 .
drwx------ 3 root root 4096 11月 10 20:25 ..
-rw------- 1 root root 1675 11月 10 20:25 id_rsa         … 秘密鍵
-rw-r--r-- 1 root root  396 11月 10 20:25 id_rsa.pub     … 公開鍵

ここで生成された鍵ペアは、このラズパイ1Bの rootユーザーから、他のサーバーに sshでログインする場合に、相手サーバー側でログインするユーザー(機械的に自動接続するなら root) に、ここで生成されている公開鍵を .ssh/authorized_keys ファイルに追加でコピーします。

後は同様に、他のサーバーへのログインや、他のサーバーからのログインに対応するように、お互いの公開鍵をサーバー間で、 .ssh/authorized_keys ファイルにコピーしておきます。

セキュリティが甘くなるとの意見もありますが、他から sshログインして利用している実績のあるサーバーが既に存在して稼働しているなら、そのサーバー内にある .ssh/authorized_keys ファイルを丸ごとコピーして入れ込むのも手っ取り早いと思われます。

ある程度リモートログインに実績が出来て、問題が無いようならセキュリティ向上のため、鍵認証だけの設定にして、パスワード認証によるチャレンジを出来ないように変更しておきます。インターネット上に晒すと想像できないくらいの数のパスワードで、絶え間ないチャレンジをされることになります。


操作性が悪いので常用するエディタの機能性を上げるために、vim エディタのフルセットをインストールします。

$ sudo apt install vim

シンタックスのカラーリングを有効にしておきます。
26行1桁目のコメント を取り除きます。

$ sudo vi /etc/vim/vimrc
......  ......
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
....  ....

ここまでの色々な編集作業で気になっていたのが、昔はエディタの vi で切り貼り編集をしている時に、マウス多用で普通に操作して楽に編集していたのですが、いつの頃からかマウスでの範囲選択やホイールボタンを押下しての貼付けを期待しているのに、 — ビジュアル — と下部に表示されて、期待していた操作が妨害されてしまいます。

vi の操作中に、仮想端末で表示されている文字列をコピーして貼り付ければ簡単に済む操作なのに、一文字づつ打鍵するわけにも行かず調べてみました。 既に vi エディタを操作中なら、コロン(:) の後にコマンド set mouse-=a を入力で無効に出来るらしいとのこと、この呪文の意味はわかりませんがとても助かりました。

vim エディタの通常利用で常にマウス操作のビジュアル移行を回避するには、操作するユーザーの ~/.vimrc を新規作成し、前述の呪文を記述して対応できるようです。

$ sudo vi ~/.vimrc
set mouse-=a
~
$ vi ~/.vimrc
set mouse-=a
~

Raspbian は、操作を全て pi ユーザーの UID : 1000 に統一して、構成されています。色々なディストリビューションが一般的に最初のユーザー登録で、UID : 1000 から登録されますので、例えば既に稼働しているサーバーは sunao ユーザーを UID : 1000 に登録して運用しています。

何が問題かというと、大量に管理しているデータを、各サーバー間で自動転送して、バックアップしながら管理している事を考えたとき、 rsync で単純にコピーすると各ファイルのオーナーは UID の番号で管理されているので、同じ UID なのにサーバーが変わるとファイルの所有者名が異なって扱われてしまう事になります。

ネット共有ディスク samba の扱いでも同様に、ファイル所有者 UID の扱いが問題として発生します。そこで、新規にサーバーを構築している初期の段階で、ユーザーファイルを vipwコマンドで編集を行い pi ユーザー名の箇所を sunao ユーザー名に変更します。

sunaoユーザーの追加に伴い、/home/sunao ディレクトリが必要になるので、/home/pi からコピーして創生しておきます。

変更が必要なコマンドは、vipw / vipw -s / vigr / vigr -s で修正しますが、必要に応じて適宜文字列置換で :pi から :sunao への変更も行います。その後適切に /home/pi 及び /home/sunao 以下のオーナーとグループの変更が必要です。

 sunao – uid:1000 / sunao – gid:1000
 pi – uid:1001 / pi – gid:1001

と変更してみました。


サーバーとして利用するので IPアドレスが変化すると色々と困ることが起こるので、固定アドレスに移行します。

昔は Debianの一般的な作法を参考にして、別な方法で設定していたような気がしますが、次のように定義を追加すると出来るようです。なお、DNSサーバーの指定は ipv4 / ipv6 のアドレスも含めて出来るみたいです。いつもお世話になっている Google検索のネット情報です。

$ sudo vi /etc/dhcpcd.conf
         ...最後尾に追加します
interface eth0
static ip_address=192.168.xx.yy/24
static routers=192.168.xx.1
static domain_name_servers=192.168.xx.22 2400::::225::fe00:9df0

そして再立ち上げ後に IPアドレスが変更されます。

仕切り直して、ラズパイ1Bで 共有サーバーの構築(1/)

  1. 現状の環境確認と作業方針の検討
  2. 最新 raspbian の最小構成を 4GB の SD へ導入
  3. USBハードディスクの組込みと最低限の設定作業と立上げ確認

ラズパイ3で運用していた ホーム内共有サーバーが停止してから長い時間が経ちました。有れば自然で無意識に利用できていた環境も、不便ながらも何とかなっているわけで、がむしゃらに復旧させる気もなく今日に至っています。

それには頭の中で何かが引っかかっているようなしっくりしない物を感じていて、それがずっと気になっているために積極的になれなかったことが大きいと思います。その前から利用していたサーバーは、何年もの長期に渡りずっと安定して利用していました。今でも立ち上げたままになっていて動作は今でも継続しています。

でも何でそのサーバーが一線から退いたかというと、古いDebian OS で稼働していて、セキュリティアップデートは対象外になっています。一時はWebの公開用サーバーとして稼働していて、利用している期間も長かったのですが、ipv6で動作させられない決定的な問題をはらんでいました。ただ、ハード構成がRAID1のミラーで、2.5インチハードディスクで構成されていて信頼性が高いのが利点でした。ゆくゆくは最新のDebian OS に置き換えられればとの願いがあります。

そこで代替として、公開用Webサーバーには、Pogoplug E02 アメリカ仕様のピンク色の機種に、Debian OS を入れて稼働させました。昔の写真を見ると 2011.06 頃に奮闘していたことが記録にあって懐かしいです。このサーバーは、当然ですが ipv6 でも動作しています。非力で遅いですが今でもセキュリティアップデートが継続して行えて現役で稼働しています。

それと並行して共有サーバーの代替としてセットアップされたのが、ラズパイ3 だったのですが、勝手にセルフアップデートして立ち上がらなくなってしまったわけです。その中でも軽微な何度かは修復できたのですが、最後のアッフ゜デートが行われた時は大幅に変更されたらしく、修正が手に負えず、初期からのセットアップに至ったわけです。

その後の最初からのセットアップでも dd コマンドに依るコピー問題に起因する障害が見付かり、あまりにも信頼出来ないと判断するに至りました。共有サーバーには不要なデスクトップ環境に起因して問題が発生しているような気がするので、今回は最小構成で作成されている Raspbian の最新版を利用し、以前稼働していてしばらくお蔵入りだった古く非力なラズパイ1 B を現役復帰させることにしました。

ラズパイも注目を浴びるようになってからの進化が著しく、古い昔の機種を見ると当初はこんな作りだったのかと驚きます。何せ microSD ではなく、フルサイズの SD カードが使われていて、USBポートも 2個しか無く、IOポートも 26ピンしかありません。単なる共有サーバーやバックアップサーバーの用途だけなら IOポートに何かを繋ぐ必要もなく特に問題ないでしょう。

セットアップは、4GB の SD に /boot パーティションと、システム本体が含まれる / パーティションの 2ファイルが含まれる単純なもので、NOOBS を利用しないで直接書き込みます。

ここからの操作は、 Linux がインストールされている作業用のパソコン上で操作しています。

Raspberry pi のサイトから raspbian の最小構成をダウンロードして、チェックサムを確認して解凍しました。

$ cat /home/sunao/download/2017-09-07-raspbian-stretch-lite.zip | shasum -a 256
bd2c04b94154c9804cc1f3069d15e984c927b750056dd86b9d86a0ad4be97f12  -
$ unzip /home/sunao/download/2017-09-07-raspbian-stretch-lite.zip
Archive:  /home/sunao/download/2017-09-07-raspbian-stretch-lite.zip
inflating: 2017-09-07-raspbian-stretch-lite.img

そのままメディアに dd しても構わないと思いますが、オプション conv=fsync を追加して一旦ファイルに書き出しました。

$ dd if=2017-09-07-raspbian-stretch-lite.img of=raspbian-chg-lite.img conv=fsync

$ sudo dd if=/home/sunao/raspbian-chg-lite.img of=/dev/mmcblk0 bs=1024
1811124+0 レコード入力
1811124+0 レコード出力
1854590976 bytes (1.9 GB, 1.7 GiB) copied, 834.275 s, 2.2 MB/s

それをメディア SD にそのまま dd コピーして、ラズパイ1 B に挿入しました。後は初期立上げ動作のためにキーボード、マウス、テレビモニタ用HDMIケーブルネットワーク用のUTPケーブル拡張USBハブの追加です。本来はマウスを利用することもないので不要ですが一応取付けました。USBハブも初期の立上げだけなら必要がないのですが、USBハードディスクを取付けて運用させることを考えているので、ラズパイ本体とハードディスクの電源供給用に利用します。

ここからはシステムメディアを挿入して、周辺機器を接続したラズパイの立上げです。

電源投入すると、モニタに文字列が流れるように表示されて、しばらくするとログインプロンプトで入力待ちになります。初期ユーザーが pi で、パスワードが raspberry になっているのでそのままログインします。

最新の状態にするために aptコマンドを使います。更新対象のモジュールは少なかったのですが、ラズパイのラインナップ毎に対応させたデバイスドライバ等のDTBファイルが多数あるらしく、それを移動するのか削除しているのか不明ですが、その操作で大きな時間を使っているようでした。

そして、raspi-config を立上げて、タイムゾーンロケーションキーボードの設定等の目に付く項目の設定を一通り行い、リモート操作のために ssh を有効にする変更を加えてから再起動しました。

何と期待していた再起動が出来ずに、電源の赤いLEDの点灯だけになってしまいました。

早速SDを作業用のノートパソコンに移して確認すると、IOエラーが出ているようで、その後システムの再書込も行えない状況でした。容量の小さなSDメディアを無理やり利用しているので、オーバーフローしたのかとも思いましたが、うぅ〜ん〜よくわかりません。

$ sudo fdisk -l /dev/mmcblk0
fdisk: /dev/mmcblk0 を open できません: 入力/出力エラーです
$ sudo dd if=raspbian-chg-lite.img of=/dev/mmcblk0 conv=fsync bs=1024
dd: '/dev/mmcblk0' の書き込みエラー: 入力/出力エラーです
1+0 レコード入力
0+0 レコード出力
0 bytes copied, 0.0197685 s, 0.0 kB/s

メディアの不良とか原因は色々と考えられますが、フルサイズSDと言っても、microSDにアダプタを使っているだけなので、接触している接点が沢山あって接触不良も一原因としては考えられます。抜き差しして触っていると正常にマウントされることもあり、Raspbian システムの再書込も無事に出来ました。メディアは、Kingston 4GB microSD ですが、気になるので別のアダプタに変更してフルサイズSDにしてみました。

$ sudo dd if=/home/sunao/raspbian-chg-lite.img of=/dev/mmcblk0 bs=1024
1811124+0 レコード入力
1811124+0 レコード出力
1854590976 bytes (1.9 GB, 1.7 GiB) copied, 1043.24 s, 1.8 MB/s

初期立上げ状態のシステムメディアが欲しいので、再びラズパイの操作です。

SDメディアをラズパイに挿入して、単純な立上げとシャットダウンだけを実行して直後のメディアを取り出します。

これからはメディアを作業用のパソコンに戻しての作業です。

一応保険として初期立上げ後のシステムメディアをバックアップしておきます。1度立上げると自動的に初期化作業としてメディア一杯にパーティションが拡張されるようです。

$ sudo dd if=/dev/mmcblk0 of=/home/sunao/raspbian-chg-lite-run.img bs=1024
3776512+0 レコード入力
3776512+0 レコード出力
3867148288 bytes (3.9 GB, 3.6 GiB) copied, 367.543 s, 10.5 MB/s

セットアップする作業は障害で中断しても同じことの繰り返しになりますが、最終的にはルートファイルシステムが USBハードディスクになるわけで、あまり信用していないSDメディアなので早めに移行することを考えました。SD内のルートファイルシステム mmcblk0p2 をハードディスク(作業時は /dev/sdb2) にコピーして、それからゆっくり考えながらセットアップを始めることにします。

まずは、ルートファイルシステムのコピーと、立上げ後にルートとしてマウントされるように、 /etc/fstab を書き換えます。

$ sudo su -
# mount /dev/sdb2 /mnt/sdb2
# mount /dev/mmcblk0p2 /mnt/work
# rsync -a /mnt/work/ /mnt/sdb2/
# vi /mnt/sdb2/etc/fstab
proc /proc proc defaults 0 0
PARTUUID=3c158d9c-01 /boot vfat defaults 0 2
/dev/sda2 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
~  
# umount /mnt/work

USBハードディスクから読み込ませるには、もうひとつの書き換えが必要で、SDメディアのブート情報 cmdline.txt を書き換えます。

# mount /dev/mmcblk0p1 /mnt/work
# ls /mnt/work
COPYING.linux           bcm2708-rpi-b.dtb    bootcode.bin  fixup_db.dat  overlays
LICENCE.broadcom        bcm2708-rpi-cm.dtb   cmdline.txt   fixup_x.dat   start.elf
LICENSE.oracle          bcm2709-rpi-2-b.dtb  config.txt    issue.txt     start_cd.elf
bcm2708-rpi-0-w.dtb     bcm2710-rpi-3-b.dtb  fixup.dat     kernel.img    start_db.elf
bcm2708-rpi-b-plus.dtb  bcm2710-rpi-cm3.dtb  fixup_cd.dat  kernel7.img   start_x.elf

# vi /mnt/work/cmdline.txt

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

# umount /mnt/work

実は一度 SDメディアと USBハードディスクをラズパイに取付けて、起動させたらモニタに二行の表示が行われただけで進行が停止してしまいました。

原因は単純ミスでした。作業しているノートパソコンでは、2つ目のハードディスクになるので、該当パーティションが /dev/sdb2 として割り振られますが、ラズパイに装着した時の割り振りは、最初のハードディスクになるので当然ですが、 /dev/sda2 になります。頭が居眠りしているちょっと恥ずかしい笑っちゃうようなミスでした。

ここからは、いよいよラズパイでの本格的な作業になります。

ラズパイの電源投入で無事に立上げ出来ましたので、先にも書いている sudo apt update / sudo apt upgrade で、最新版への更新と sudo raspi-config による各種環境設定の変更を行いました。この中でsshの有効化を行っています。そしてロケールの変更により直接のコンソール作業では文字化けになりますが、sshによるリモート作業では文字化けもありえないので、こちらで作業を続けたいと思います。

$ sudo apt update
   .... 更新対象のモジュールがリストされます

$ sudo apt -y upgrade
   .... リストされた対象が順次更新されます

(再)ラズパイ3のセットアップ 〜完全な挫折です

セットアップ途中での挫折で、最初からの仕切り直しになりました。

勝手にシステムのアップデートが行われて動作不能になるラズパイ3ですが、再起のため最新の Raspbian OSを入れるところからのセットアップの途中で、Sambaの設定でも変な動きをして共有が正常に動作させられなかったり、WebサーバーのApache2が変な動きをしたり、リモートでのメンテナンスでは必須のsshの設定でも、意図して設定しているはずの動きとは異なるような認証動作が行われていました。

究極の問題は、apt コマンドで、最新のモジュールに入れ替えたり、新しいプログラムをインストールできない問題に直面してしまい、色々と調べたり回避策を模索していて時間が取れなくなって仕方なくしばらく中断していました。

changelog を読んでいます... 完了
パッケージからテンプレートを展開しています: 100%
パッケージを事前設定しています ...
dpkg: unrecoverable fatal error, aborting:
パッケージ 'vim-runtime' のファイル一覧ファイルに最後の改行がありません
E: Sub-process /usr/bin/dpkg returned an error code (2)

 

やっと触れる時間ができたので、google検索をしてみると、同様の内容と思われる記事が多数アップされています。⇒日本語で対策を教えてくれているサイト

今回は、単純に昔からの方法での dd コマンドでイメージコピーしただけなのですが、初めて見たようなオプション “conv=fsync” を追加してコピーしないと意図しない結果になるようです。最近公開されている Raspbian OS についてらしいです。

今のままの不安定な状態から個別にリカバリーしても気が遠くなる作業が続いて、収束の見通しが建てられないようなので、仕方ないので最新の OS ダウンロードからやり直すことにします。

今回はセットアップ途中での挫折です。仕切り直しですね、完全な玉砕です。

グーグルマップのセキュリティアップ?

ぃやぁ〜参りました。

自分の写真を以前から公開していますが、その中で撮影地点の確認と移動の経路を軌跡として描画表示するために、グーグルマップを利用させて頂いてます。
公開前の編集時点では、手元のノートパソコンを利用して、以前はそのURI サーバー名を http://localhost/ として記述して、自分自身のノートパソコン内で起動しているウェブサーバーを指定していました。

その中でグーグルマップに表示させる情報も編集していて、データの作成と確認ができてから、問題ない状態になった時点で公開サーバーに転送していました。
最近になってだろうと思うのですが、localhost ではサーバー名が不適だとして、エラーになっているようで、マップ表示が出来なくなっていて、編集や確認が出来なくて困りました。

仕方なく公開しているサーバー名の URI を含ませた名前で、適当にデバッグ用のサーバー名を考えて、apache2 の定義を少し直して、最近では触ることの無かった /etc/hosts に、自分自身のループバック 127.0.0.1 として追加して、急遽対応しました。
取敢えず対処できたので、問題はなかったのですが、一時は状況がわからずに焦りました。
セキュリティ向上の一環なのでしょうか?

そして 1日2日経過した頃に、再び手直しでもしようかと思い操作すると、今度は擬似サーバー名でもグーグルマップが利用できなくなっているようでした。これは困ったことです。

仕方なく、公開サーバー名で自分自身のウェブサーバーにアクセスするように /etc/hosts を編集して確認すると、全く問題なくグーグルマップが表示されました。セキュリティでは色々な問題があるので強化は仕方がないことですが、どのように編集して公開するか悩みます。

それと、公開サーバーは他にも問題を抱えていて、スクリプトを自分で組んで公開していますが、自分で組んだとしても作ってから年月が経ち記憶が薄れ、肉体は老朽化が進み頭の回転は遅くなり、最近は HTML5 CSS3 とかも一般化してきたようで、利用している jQueryライブラリも時代に合わせ進化しているようで、見直してどうにか手を加えようと考えているのですが、思うように進められていないのが現状です。


以下は、後から追加 2017-09-16

今現在は、 http://localhost/ でのアクセスでも、グーグルマップが起動されて正常に利用できているようです。数日前のゴタゴタは何だったのでしょうか。

グーグルでの単なるミスだったのでしょうか、ミスはどこでも起きますから、私なんて時々ミスしてリカバリーに追われることがあります。グーグルマップの利用では、過去にも利用できなくて、それに吊られるように他の機能も利用できなくなって、仕方なくグーグルマップ機能を切り離すオプションを追加したこともありました。

その時には、数日待ってから確認すると、特に問題もなく利用できていましたので、今回もあり得ることだとは思っていたのですが、セキュリティのポリシーが変更になったのかと考えたのと、早めに公開写真の編集を終わらせたかったので仕方なく対応していました。

(再)ラズパイ3 のセットアップ(2-4)

  1.  vimエディタの環境整備を行います
  2. リモートログイン関連の整備を行います
  3. 元々の piユーザーの pid : gid / 1000:1000 を sunao に完全入れ替え

vimエディタのフルセットをインストールします。

$ sudo apt install vim

シンタックスカラーリングを有効にしておきます。
26行1桁目のコメント を取り除きます。

$ sudo vi /etc/vim/vimrc
......  ......
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
....  ....

次にリモートログイン関連の整備を行います。

常用しているノートパソコンからの ssh リモートログインのために公開鍵を設定します。

方法は、リモートで操作されるサーバーであるラズパイ3 の sunaoユーザー (piからsunaoに書き換えてます) の .ssh/authorized_keyの中に、リモートで操作する側(常用しているノートパソコン)の常用ユーザー (sunao)の公開鍵を追加します。

$ cat .ssh/id_rsa.pub   ……常用しているノートパソコン側
ssh-rsa AAAAB3NzaC1......AABAQDGfuahG9gbZlZk.........UfIO4hqf7uQJif/c1FPGwQYkGT7VAiksrtyBTOSEe/iWLfeVwjlS..........AkyAVJZKp0p/g+zO............9yF5+b6K9KP+mEXC.......w7HDsaif user@note-PC

追加する方法には色々な方法が考えられますが、文字列をコピーして viエディタで単純に追加編集する方法を示します。

$ vi .ssh/authorized_key    ……操作される側のラズパイ3 
......    ......
ssh-rsa AAAAB3NzaC1......AABAQDGfuahG9gbZlZk.........UfIO4hqf7uQJif/c1FPGwQYkGT7VAiksrtyBTOSEe/iWLfeVwjlS..........AkyAVJZKp0p/g+zO............9yF5+b6K9KP+mEXC.......w7HDsaif user@note-PC
....  ..   .....

そして次に動作検証を行います。

公開鍵が追加できたなら、公開鍵と秘密鍵で認証が行われることを確認します。

$ ssh sunao@192.168.xx.xx
sunao@Rpi3-com1:~ $

sshでの公開鍵認証ができたなら、ネット上からのアタックでパスワード認証での不正ログインを防ぐために、パスワード認証を禁止します。

$ sudo vi /etc/ssh/sshd_config
....  ..  .....

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
PermitEmptyPasswords no
.......    .....

実際には登録していないユーザー名を指定して認証させるような操作で、公開鍵と秘密鍵のペアでなければ接続できないことを確認します。

公開鍵が登録されていないと言った意味のエラーが返ります。(publickey)

$ ssh webadm@192.168.xx.xx
 Permission denied (publickey)

ユーザー名の変更を中途半端にしておくと、動きが少しおかしいような気がするので、ホームディレクトリやグループ名も含めて完全に入れ替えて、新たに piユーザーを追加しました。

パスワードファイルやグループファイルの修正に利用するコマンドは、vipw vigr を使います。

(再)ラズパイ3 のセットアップ(2-3)

  1. 以前から稼働しているサーバーと同じユーザー名 =UID で操作を統一したい
  2. Raspbian を microSD から元々の USBハードディスクに移行する
  3. できるだけ過去の蓄積データを継続で利用したい

モニタの 3.5インチLCDディスプレイがセットアップできているので、最低限のパッケージの導入から進めようと考えています。

なんてったって最大の問題は、勝手にアップデートされてしまい、壊れてしまうことです。一般的な Linux ってインタフェースが変更になるような大きなパッケージ更新については、意識してアップグレードしない限り実行されないと思ってました。色々なディストリビューションとの長い歴史の中での経験則ですが、Raspberry pi の Raspbian に関しては経験が活きない異端児なのかもしれませんね。

デスクトップとしてセットアップして、サーバーとして使うことが想定外の使い方なのでしょうね。うぅ〜ん困ったものです。何を行えば勝手な更新が止められるのか不明です。

壊れても短時間で復旧させられるように、情報を整理してまとめておいて、機械的な流れで復旧作業できる環境を作っておく必要がありそうです。


Raspbian は、操作を全て pi ユーザーの UID : 1000 に統一して、構成されています。色々なディストリビューションが一般的に最初のユーザー登録で、UID : 1000 から登録されますので、例えば既に稼働しているサーバーは sunao ユーザーを UID : 1000 に登録して運用しています。

何が問題かというと、大量に管理しているデータを、各サーバー間で自動転送して、バックアップしながら管理している事を考えたとき、 rsync で単純にコピーすると各ファイルのオーナーは UID の番号で管理されているので、同じ UID なのにサーバーが変わるとファイルの所有者名が異なって扱われてしまう事になります。

ネット共有ディスク samba の扱いでも同様に、ファイル所有者 UID の扱いが問題として発生します。そこで、再セットアップ中のラズパイ3 で、ユーザーファイルを vipwコマンドで編集を行い pi ユーザー名の箇所を sunao ユーザー名に変更してみました。ただし、グループファイルは、pi グループが色々な箇所で定義されているようなので、不具合が出る可能性が高く、そのままの状態です。
 sunao – uid:1000 / pi – gid:1000
 pi – uid:1001 / pi – gid:1000
と変更してみました。


次に microSD から USBディスクに移行する作業は、実機のラズパイ3 上では出来ないので、Linux が稼働しているノートパソコンで作業しています。 microSD をラズパイ3 から取り出して、USBディスクと一緒にノートパソコンに装着し、一応コピー元とコピー先のファイルに関しては、fsckコマンドでエラーがない、あるいはエラーの修復を行った後に、両方のファイルをマウントして作業しています。

microSD (8GB) に作られている Raspbianシステムを、外付けの USBディスクに移しますが、移行先は、既に利用していた USBディスクなので、パーティション構成や今まで使っていたデータ自体も入ったままになっています。移行するのは新しく再セットアップした microSD のパーティション2 から 外付け USBディスクのパーティション2 へコピーが終われば完了です。

オプションに –delete を追加した rsyncコマンドでコピーします。既に作業に使用するマウントポイントは作成されていたものとしています。

ノートパソコンに装着すると自動マウントされてしまうので、適切にアンマウントして、次のように作業します。

# mount /dev/mmcblk0p2 /mnt/work   ……microSDのパーティション2
# mount /dev/sdc2 /mnt/bkup     ……USBディスクのパーティション2
# rsync -av --delete /mnt/work/ /mnt/bkup/  ……システムのコピー
# umount /mnt/work
# umount /mnt/bkup

# mount /dev/mmcblk0p1 /mnt/work   ……USBディスクから読むための修正
# cd /mnt/work
# ls        ……bootディレクトリの確認
# vi cmdline.txt  ……次で項目で説明しているのと同じ修正を行います
# cd
# umount /mnt/work

さらに修正が必要なのは、microSD からコピーされた USBハードディスク上に記述されているパーティションのマウント情報ですが、正常に立上げが行われた時には、 /etc/fstab に対応するファイルになります。

今回の場合は、USBディスクのパーティション2 の etc ディレクトリに置かれているので、自分自身のパーティションが、ルートファイルシステム( / )としてマウントできるように、指定の記述方法は、 /dev/sda2 でも  blkid でリストされた UUID= でも PARTUUID= でも、ディスクのパーティションが識別できればマウントされるので、そのように修正します。

# mount /dev/sdc2 /mnt/work
# vi /mnt/work/etc/fstab
proc                         /proc    proc    defaults   0   0
PARTUUID=bcacf1da-01         /boot    vfat    defaults   0   2
UUID=86782691-13d8-429a-a015-3e010d6e7248  / ext4    defaults   0   1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

# umount /mnt/work 

作業していた microSD と USB外付けディスクをノートパソコンから外して、ラズパイ3 に装着して電源を入れると、USBディスクからの立上げが行われます。


ラズパイ3 が正常に立上がると、LCD のドライバとかコマンドが入っているディレクトリ(~/LCD-show)に移動して、色々な操作が出来ますが、この中に置かれている cmdline.txt のルートファイルシステム (Raspbian OS自身) の読み込み先が、 microSD カードの /dev/mmcblk0p2 のままになっているので、現在は構成が外付けの USBディスクからの立上げに変更になったので、 /dev/sda2 に変更しておかないとこれをコピーされて再起動できなくなってしまうので注意します。

$ cd LCD-show/
$ vi cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo
 次の作業は、USBディスクに作られている過去からの複数のデータが、立上げプロセスで自動マウントされていますので、マウントポイントを作ってからマウント情報の /etc/fstab を適切に編集して、システムの立上げでマウントできるようにします。

(再)ラズパイ3 のセットアップ(2-2)

  1. 最新 raspbian の microSD への導入
  2. 最低限の設定と確認作業
  3. 秘密鍵、公開鍵ペアの扱いに関して
  4. 3.5インチLCDディスプレイのドライバ導入

新規にセットアップを始めたラズパイ3ですが、ゆっくり時間を掛けて対応できていないので、作業がなかなかはかどりません。

セットアップしたラズパイシステムは、最新と思われるバージョンで、8GB の microSD に /boot パーティションと、システム本体が含まれる / パーティションの 2ファイルが含まれる単純なもので、NOOBS を利用しないで直接書き込みました。

$ uname -a
Linux Rpi3-com1 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux

昔のバージョンでは手作業で色々な箇所を変更しましたが、最新では、デスクトップのメニューから リファレンス → 設定 で、ホスト名、ロケールの設定、それと日本語化が完了した状態です。ここでパスワードの変更も行っているので、パスワード認証による sshリモート作業も一応出来るようになっています。

そして、数日間稼働させていても問題が無いことが確認できたので、鍵認証に移行させて、必要な byobu/screen の追加とメールの設定を行います。

ファイルは書き換わっていると思いますが、一応ホスト名のファイルを確認してみました。

$ cat /etc/hostname
Rpi3-com1

こちらのファイルも最後の行が設定されていないと、エラーメッセージが出るようです。

$ cat /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters 

127.0.1.1       Rpi3-com1

鍵認証に関しては、ログイン先となるサーバーのログインユーザーの /home/<user> ディレクトリ内に .ssh デイレクトリを作成して、ログイン元となる操作側PCの秘密鍵と公開鍵ペア公開鍵authorized_keys ファイルにコピーします。実際の作業的には、普段 sshログインして作業している他のサーバー内に、既に作成されている実績のある authorized_keys ファイルをコピーして利用しています。.sshディレクトリと authorized_keys ファイルの実行権限はそれぞれ 700 と 600 に設定しておきます。

他のサーバーとの間で、cron / rsync 利用の自動転送によるバックアップを行わせるために、セキュリティ上問題だと一部で言われることですが、各サーバー間のrootユーザーでの作業を行わせるために、パスフレーズ無しでお互いに ssh ログインが出来る設定を行います。

他のサーバーの秘密鍵をコピーしても利用できそうですが、セットアップ中のラズパイ3 の root で操作して、鍵ペアを次のような操作で生成させます。

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:eGFZ6pD........JdP3VHgJw root@Rpi3-com1
The key's randomart image is:
+---[RSA 2048]----+
| .oo+.. oo.. o.. |
|  .++..o +o E   .|
...
             . o  |
|             .   |
+----[SHA256]-----+
# ls -al .ssh
合計 16
drwx------ 2 root root 4096  8月 23 10:14 .
drwx------ 5 root root 4096  8月 23 10:14 ..
-rw------- 1 root root 1679  8月 23 10:14 id_rsa         … 秘密鍵
-rw-r--r-- 1 root root  396  8月 23 10:14 id_rsa.pub     … 公開鍵

後は同様に、他のサーバーへのログインや、他のサーバーからのログインに対応するように、お互いの公開鍵をサーバー間で、 authorized_keys ファイルにコピーしておきます。

ある程度リモートログインに実績が出来て、問題が無いようならセキュリティ向上のため、鍵認証だけの認証にするため、パスワード認証を制限する設定に変更しておきます。


このラズパイ3 には、1年ほど前にアマゾンから購入した 3.5インチ LCD が装着されているので、最新のドライバをセットアップしておきます。購入した LCD は、『Kuman 3.5インチ ディスプレイ タッチパネル Raspberry Pi 3B 2B/B+/A+ /A/B/Zero に適用 320*480 解析度 保護ケース ヒート ¥ 3,200』 となっていた製品で、検索すると英語のページですが、ドライバのダウンロードが出来るページがあります。中国か台湾かはわかりませんが、製品本体はWaveshareという会社の製品らしく、操作性も含めて事細かく解説されています。

LCDモニタのページ 提供されている3.5インチLCDモニタのドライバと使い方

説明されたページの一部に、ドライバのダウンロードとセットアップ方法が、次のように記載されています。バージョンの違いなのか差異がわかりませんが、2種類掲示されています。

Method 1. Driver installation

Description: The drivers are not available for NOOBS or any system installed by NOOBS.

If the touch screen doesn’t work properly, please install the driver: LCD-show-170703.tar.gz, but not LCD-show-161112.tar.gz.

1. Configure your Pi:

sudo raspi-config

Set as:

  • Select Expand Filesystem.
  • Boot Option -> Desktop Autologin (may differ depending on Raspbian revision)

2. Copy the driver (choose the driver according to your OS) into your OS then Run the following commands:

tar xvf LCD-show-*.tar.gz
cd LCD-show/

Install the driver and it toggles the mode to LCD display: Note: Net work connection is required while installing driver to your Pi, or else the touch won’t work properly.

chmod +x LCD35-show
./LCD35-show

Note: this LCD won’t work after apt-get upgrade, in such cases, please edit the config.txt file in the SD card and remove this statement: dtoverlay=ads7846

3. After system rebooting, the RPi LCD is ready to use.

 

URLを右ボタンでコピーして、wget で両方をダウンロードしてみました。どちらを使うのか迷うところです。

$ wget http://www.waveshare.com/w/upload/4/4b/LCD-show-161112.tar.gz
$ wget http://www.waveshare.com/w/upload/0/00/LCD-show-170703.tar.gz
$ ls -al
-rw-r--r--  1 pi   pi   50692 12月 17  2016 LCD-show-161112.tar.gz
-rw-r--r--  1 pi   pi   53084  7月  4 16:21 LCD-show-170703.tar.gz

サイズ的には、それほど差が無いように思えますが、最新についてはインストール時にネットワークに接続されている必要があるように、追記があるのが少し気になります。

今回は最新を展開してインストールしてみます。

$ tar xvf LCD-show-170703.tar.gz
$ cd LCD-show/
$ chmod +x LCD35-show
$ ./LCD35-show

理由は不明ですが、xserver-xorg-input-evdev が新規にインストールされました。

 

勝手にリブートが行われ、画面としては小さな 3.5インチLCDをモニタとして起動されます。

説明に書かれている画面の回転を 270度回転させると、本体を縦長に縦た形状になり、USBコネクタや、有線LANのコネクタが上向きに出る構成で表示されます。

 

設定を変更する度にリブートされます。立上げ時のバナーについても問題なく LCD から表示されるようです。

タッチスクリーンについても問題なく反応しているようで、メニューからシャットダウンのダイアログを開くこともできています。

展開したモジュールのディレクトリで、./LCD35-show コマンドを実行すると設定ファイルが上書きされてリブート後に表示が LCD に切り替わります。

$ ./LCD35-show

LCDモニタの表示は 90度づつ向きを変えられるようです。ラズパイの USBポートと有線LANポートのある面を上にしての表示は、次のコマンドで縦長の配置になります。

$ cd LCD-show/
$ ./LCD35-show 270

ただ小さすぎて実際の運用には適していないと思われます。

(再)ラズパイ3 のセットアップ(2-1)

  1. 何で再セットアップが必要なのかと進め方
  2. 日本語フォント、漢字変換パッケージの導入について
  3. 初期設定には必需品となる HDMIモニタ、USBマウス、USBキーボード
  4. キーボードは、標準を選択しないと 記号 や [半角/全角]キー が使えない

1年前にセットアップして利用していたラズパイ3が、勝手にシステムアップデートしたらしく、動作不能になったため、仕方なく最新のraspbianを使用して、新規セットアップを始めました。

20160819_153845-240x427画面はラズパイ3が発売した直後(1年前)のraspbianシステムで、購入した3.5インチLCDディスプレイにデスクトップが表示されているものです。

現バージョンでは異なったデスクトップ画面になっていますが、同様なLCDディスプレイへの切り替えは、ある程度修復の設定が完了してから、取り掛かろうと考えています。

実は1度 microSD に最新の raspbian をセットアップして起動したのですが、以前と画面や振る舞い方が大きく異なっていました。過去に何度かインストール作業はしているのですが、あまりに変化が大きくて過去の経験が全く活かせず、日本語フォントを入れる前に日本語化してしまい、キーボードの選択も誤っていたようです。

パスワードを変更したら、リモートからの sshでの認証でログイン出来ない状況になってしまいました。さらにデスクトップの文字表示も化けた状態で、四角い豆腐が並んだような表示になってしまいました。

そんな訳で直すのも面倒なため、考えなくて済む 2度目のインストールを行いました。立上げ後の設定では、日本語フォントとして IPA系のフォントと漢字変換用パッケージを追加しました。

  • fonts-ipafont
  • fonts-ipaexfont
  • ibus-mozc
  • im-config

初期設定で、キーボードマウス及びモニタは、必需品のようなので繋いでいます。タイムゾーンや日本語の環境、キーボードの選択は、デスクトップからメニュー選択で簡単に変更できるように改善されています。リモートからの ssh が問題なく利用できるようになってから初期必需品のキーボード、マウス、モニタを外そうと思います。使わなくても当面の間は繋いだままにしておきます。

キーボード選択は、日本語の先頭にある標準を選べば問題ないようです。選択したものによっては通常の文字では問題が無いように見えて、漢字変換の起動に利用する [半角/全角] キーが使えなかったりします。

その設定項目の中に、インターフェースに関するオプション選択があります。 SPI や I2C、ssh 等の利用の選択が出来ます。


最低限の設定としては、ネット共有ディスクバックアップサーバーメール通知の設定ですね、その辺りから進めようと思っています。

20160819_134639_Burst01-320x18020160819_134655-320x180

勝手に壊される raspbian

Raspberry pi は、Linuxシステムが壊れてしまう不安定なシステムとの認識を発売当初から持っています。最近では一般にSDとの相性問題と言われているような、SDに問題が有りそうだとのメーカー名と製品をリストにした情報が公開されています。

当初は問題を切り分けできる情報も少なく、ある程度実用になる設定を施した頃になると、必ず水を挿すようにシステム障害になっていて、再びやり直しとなって時間ばっかり掛かるだけで使えませんでした。

そんなわけで、Raspberry pi は、ブートの初期には必ず SD や microSD を必要とするので、その後にマウントされるルートシステム以降の処理をUSBハードディスクに移行する方法で安定したシステムとして稼働させていました。

ルートシステムをハードディスクに移行してからは、Raspberry pi 1 B+ や Rasberry pi 2 B を純粋なサーバーとして利用していましたが、特に問題なく稼働していて、時々手動でシステムの update を実行していました。

でも何故か壊れる Raspberry pi 3 B です。こちらはデスクトップ環境で構築していて、特には利用していませんでしたが、付属として3.5インチLCDディスプレイとタッチパネルが装着されています。そして家屋内の共有ディスクとして利用して、データのバックアップシステムとしても利用していた重要なシステムでした。

問題のシステムが動作不能になったのは、ハードディスク障害等の明確なものを除くと、設置から今までの1年足らずで大きく数えて 2回あります。2回共に自動でシステム更新されたらしく、sshでネットログインが出来ず、再起動しても期待した立上げが行われませんでした。

ただし、1度目は大きく変更されていたわけではないようで、ルートファイルシステムとしてのUSBディスクが無効に変更されていたのが 原因で、ほぼその修正だけで立上げが行えました。ただし、デスクトップ画面は別物として一新して見た目は大きく変わっていました。

2度目の今回は、システムが勝手に大きく更新されているようで、前回のように簡単に修復が出来ませんでした。Raspberry pi は、頻繁にシステム構成が変わっているようなので、安定稼働を期待するサーバーの運用には向いていないのかと思ってしまいます。

何故か時々壊れる(壊される?) Raspberry pi 3 ですが、正常に運用していたシステムが動作不能になると、今までに色々とインストールしているモジュールやら設定が問題になります。

微かな期待として、何とかリカバリして上手く復旧が出来て、そのまま利用の継続ができればベストなのですが、今回はping での反応はしていたものの ssh 接続は出来ず、共有ディスクとしてのサービスも機能してなくて、ログ情報を定期的にメールとして送る機能も動作していませんでした。

電源OFF/ONによる再起動を試みたのですが、正常に立上がらないようで、仕方なくモニタ用にテレビをHDMI接続し、キーボードとマウスを繋いでの復旧を試みたのですが、見慣れない画面が出るだけで、Linuxで一般的な立上げバナーも皆無です。システムが大きく変更になったようでした。

ここまでの状況からは、システムの再インストールが必要な状況のようですが、そこで同じ程度の環境に戻すには、色々なモジュールのインストールや設定を再び施す必要があります。システムが正常に動作しているなら、dpkg -l のコマンドでインストールされたモジュールのリストが出るようです。しかし、再インストールしたら以前の情報は消去してしまいます。

立上げ不能のルートシステムを、別に立上げできる正常なシステムを利用して、そこに繋いで残された情報から調べる以外に無く、操作方法をネットの情報から調べ、 apt-get で操作した場合に残されるログから、インストール時に記録された情報を抽出することにします。

記録ファイルは、/var/log/dpkg…. で始まるファイル名で残されているようです。過去のものは圧縮されているようです。

/var/log/dpkg.log
/var/log/dpkg.log.1
/var/log/dpkg.log.xx.gz  … xx 部分が数字の圧縮ファイル

ざっとログ内容を見てみると、インストールしたモジュール名の抽出には、 grep -e  ‘ install ‘ が有効と思われます。指定する文字列は、 ‘install’ の両端を半角の空白で挟んで指定します。

再インストールと修復では、地道に稼働していた状態の最後の dpkg.log から突き合わせて元の状態に近づけようと考えてます。

まずは、ラズパイ3 の再インストールから作業を始めます。なんと1年前にも同様の書き込みがありました。