Devuan ascii armhf(Raspberry Pi)で時計合わせ

Raspberry PiにはRTCが付いていません.なのでシステム停止すると時間情報が飛んでしまいます.fake-hwclockが設定されていたら前回停止時(に近い)時間がファイルに保存されていてその時間に設定されますが,停止時の時間はカウントされないので時間がずれます.ということでネットワークが有効な場合ntpを参照して時計合わせをしたいです.
最近のDebianやRaspbianはsystemdなのでtimesyncd.confでNTP serverを指定してtimedatectlコマンドで有効にする感じだと思うのですが(既定値でそうなっている),Devuanは脱systemdなディストリビューションなのでこの方法は使えません.

$ sudo vi /etc/systemd/timesyncd.conf
$ sudo timedatectl set-ntp true`

詳細はman timesyncd.conf, man timedatectl

ということでntpdateを入れてみました.

$ sudo apt install ntpdate
$ sudo ntpdate 192.168.1.102
$ grep -A1 -B2 ntp /etc/rc.local
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
  /usr/sbin/ntpdate 192.168.1.102
fi

長時間動かすならcrontabで定期的に設定したほうがいいかも?(若しくは何らかのntpd)

$ sudo -u root crontab -l|tail -2
@reboot /usr/sbin/ntpdate 192.168.1.102
3 3 * * *       /usr/sbin/ntpdate 192.168.1.102

追記)
このシステムはRaspbian stretchをDevuan asciiにdist-upgradeしたシステムなのでntpの設定がないだけかもしれません.Devuan asciiをクリーンインストールすれば必要ない設定かも(未確認)

自分用GNU socialのタイムラインの反映がとても遅くなって困る

自宅のPCでGNU social(nightly)を動かしているのですが,ふと気づくとタイムラインの最新が30分ほど前になっています.自分の投稿も他のMastodonインスタンスなどに反映されていません.
ログ(config.phpの$config['site']['logfile']で設定してあるもの)を見ると怪しそうなのはこの辺.

2018-02-18 22:46:31 LOG_ERR: [gnusocial.matoken.org:8923.6a16ed84 GET /api/statuses/public_and_external_timeline.json?since_id=312334&count=20] OpportunisticQueueManager: [mirror:Notice 221617] Exception (ServerException) thrown: '[SubMirror] DB_DataObject error []: DB Error: no such table'

DB Error: no such table?最近アップデートもプラグインの追加などもした覚えがないので関係あるかわかりません.連合からの投稿も次々届いているし,遅いながらもタイムラインは更新されているので捌ききれていない?とQueueDaemonを増やしてみました.

daemonを一旦停止して,

$ sudo -u www-data scripts/stopdaemons.sh 

config.phpに以下を追加,

$config['queue']['threads'] = 8;

再度daemonを実行

$ sudo -u www-data scripts/startdaemons.sh 

前(cpu coreから2threadsだった)から変わった感じがしません.vmstatを見ても特に負荷も上がっていないようです.

log levelを上げてみようとconfig.phpに以下を設定してみましたが上のエラーと同じものしか見当たりません.

$config['site']['logdebug'] = true;

mysqlcheck --auto-repairを試しにかけてみましたが変わらず.

そういえばpluginを追加したとき等にカスタムテーブルのチェックをしてくれるscript(checkschema.php)があったなと試してみました.

$ sudo -u www-data scripts/stopdaemons.sh 
$ sudo -u www-data php scripts/checkschema.php
Constraint checking Notice table...
* notice_reply_to_fkey (reply_to => notice.id)
        Found 2 notices with reply_to NOT IN notice.id, reseting...DONE.
* notice_repeat_of_fkey (repeat_of => notice.id)
* notice_profile_id_fkey (profile_id => profile.id)
PHP Warning:  fopen(/var/log/gnusocial.log): failed to open stream: ???????? in /export/data/www/gnusocial.matoken.org/lib/util.php on line 1853
PHP Warning:  fopen(/var/log/gnusocial.log): failed to open stream: ???????? in /export/data/www/gnusocial.matoken.org/lib/util.php on line 1853
  :
PHP Warning:  fopen(/var/log/gnusocial.log): failed to open stream: ???????? in /export/data/www/gnusocial.matoken.org/lib/util.php on line 1853
PHP Warning:  fopen(/var/log/gnusocial.log): failed to open stream: ???????? in /export/data/www/gnusocial.matoken.org/lib/util.php on line 1853
Ensuring no NULL values for foreign keys in QvitterNotification...DONE.
Ensuring no dead profile or notice IDs are stored in QvitterNotification...DONE.
$ sudo -u www-data scripts/startdaemons.sh 

これが当たりだったようでDB errorは消えてタイムラインの流速も戻りました.
原因は不明のままなのがちょっと気持ち悪いですが,バックアップから原因を探すのも面倒なので多分放置です…….

mysqlのdatadirを変更したらapparmorに怒られて起動しなくなった

ディスクの都合でmysqlのデータの置き場所を変更しました.
mysqldを停止して,データを移動して,シンボリックリンクも一応貼っておく.
/etc/mysql/mysql.conf.d/mysqld.cnfでdatadirを変更.

[mysqld]
datadir         = /export/data/var/lib/mysql

この状態でmysqlを起動するとこんな感じのエラーで起動しなくなってしまいました.

2018-02-17T16:12:54.184655Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2018-02-17T16:12:54.184718Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2018-02-17T16:12:54.184734Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2018-02-17T16:12:54.785643Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2018-02-17T16:12:54.786151Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-02-17T16:12:54.786272Z 0 [ERROR] Failed to initialize builtin plugins.
2018-02-17T16:12:54.786415Z 0 [ERROR] Aborting

該当ファイルは一見問題無さそうに見えます.

$ sudo ls -la /export/data/var/lib/mysql/ibdata1
-rw-rw---- 1 mysql mysql 102760448  2月 18 05:15 /export/data/var/lib/mysql/ibdata1
$ sudo -u mysql dd if=/export/data/var/lib/mysql/ibdata1 bs=10 count=1|od -xc
1+0 レコード入力
1+0 レコード出力
10 bytes copied, 9.8366e-05 s, 102 kB/s
0000000    2214    405b    0000    0000    0000
        024   "   [   @  \0  \0  \0  \0  \0  \0
0000012

何でだ?と思ったらkernel logにこんなログが.apparmorで引っかかっているようです.

Feb 18 00:35:26 micro kernel: [ 3569.631324] audit: type=1400 audit(1518881726.300:24): apparmor="DENIED" operation="open" prof
ile="/usr/sbin/mysqld" name="/proc/18795/status" pid=18795 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=114 ouid=114

/etc/apparmor.d/usr.sbin.mysqldでパスを変更します.

diff --git a/apparmor.d/usr.sbin.mysqld b/apparmor.d/usr.sbin.mysqld
index 2619e7d..adb8259 100644
--- a/apparmor.d/usr.sbin.mysqld   
+++ b/apparmor.d/usr.sbin.mysqld
@@ -46,16 +46,16 @@
   /usr/share/mysql/** r,  

 # Allow data dir access   
-  /var/lib/mysql/ r,
-  /var/lib/mysql/** rwk,  
+  /export/data/var/lib/mysql/ r,  
+  /export/data/var/lib/mysql/** rwk,

 # Allow data files dir access
-  /var/lib/mysql-files/ r,
-  /var/lib/mysql-files/** rwk,
+  /export/data/var/lib/mysql-files/ r,
+  /export/data/var/lib/mysql-files/** rwk,

 # Allow keyring dir access
-  /var/lib/mysql-keyring/ r,
-  /var/lib/mysql-keyring/** rwk, 
+  /export/data/var/lib/mysql-keyring/ r,
+  /export/data/var/lib/mysql-keyring/** rwk,

 # Allow log file access 
   /var/log/mysql.err rw,

この状態でapparmorを再起動して設定を反映してからmysqlを起動でOKでした.

$ sudo service apparmor restart
$ sudo service mysql start

この後iostat -xを眺めて大丈夫そうかなーって思ったのですがディスクアクセス音が大きくなったのでまた別の場所に移動するかも…….

環境

$ dpkg-query -W mysql-server
mysql-server    5.7.21-0ubuntu0.16.04.1
$ lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial
$ uname -m
x86_64

Debian sidのkernel.sysrqの値が変わった?

先日Debian sid amd64環境でprocpsの更新がありました.

$ apt show procps
Package: procps
Version: 2:3.3.12-4
Priority: important
Section: admin
Maintainer: Craig Small <csmall@debian.org>
Installed-Size: 712 kB
Provides: watch
Depends: libc6 (>= 2.15), libncurses5 (>= 6), libncursesw5 (>= 6), libprocps6, libtinfo5 (>= 6), lsb-base (>= 3.0-10), init-system-helpers (>= 1.29~)
Recommends: psmisc
Conflicts: pgrep (<< 3.3-5), w-bassman (<< 1.0-3)
Breaks: guymager (<= 0.5.9-1), open-vm-tools (<= 2011.12.20-562307-1)
Homepage: https://gitlab.com/procps-ng/procps
Tag: admin::monitoring, implemented-in::c, interface::commandline,
 interface::text-mode, role::program, scope::utility,
 uitoolkit::ncurses, use::checking, use::monitor,
 works-with::software:running
Download-Size: 251 kB
APT-Manual-Installed: yes
APT-Sources: http://ftp.jp.debian.org/debian sid/main amd64 Packages
Description: /proc ファイルシステムユーティリティ
 本パッケージは procfs を閲覧するためのコマンドラインおよび全画面のユーティ
 リティを提供します。procfs とは "擬似的な" ファイルシステムで、カーネルによ
 り動的に生成されます。カーネルのプロセステーブル内のエントリの状態に関する
 情報 (例えば、プロセスが稼働中、停止中、または "ゾンビ" である、など) が提
 供されます。
 .
 本パッケージには次のものが含まれます: free, kill, pkill, pgrep, pmap, ps,
 pwdx, skill, slabtop, snice, sysctl, tload, top, uptime, vmstat, w, watch。

更新に伴い/etc/sysctl.confの更新がありました.

設定ファイル '/etc/sysctl.conf'
 ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
 ==> パッケージ配布元が更新版を提供しています。
   どうしますか? 以下の選択肢があります:
    Y か I  : パッケージメンテナのバージョンをインストールする
    N か O  : 現在インストールされている自分のバージョンを残す
      D     : 両バージョンの差異を表示する
      Z     : 状況を調査するためにシェルを開始する
 デフォルトでは現在使っている自分のバージョンを残します。
*** sysctl.conf (Y/I/N/O/D/Z) [デフォルト=N] ? D

差分を見ると自分で編集した部分以外はコメントだけだったのですが,気になる項目が.

@@ -61,18 +61,13 @@

 ###################################################################
 # Magic system request Key
-# 0=disable, 1=enable all
-# Debian kernels have this set to 0 (disable the key)
-# See https://www.kernel.org/doc/Documentation/sysrq.txt
+# 0=disable, 1=enable all, >1 bitmask of sysrq functions
+# Debian kernels have this set to 438 which is the OR of:
+#  64 = enable signalling of processes
+#  128 = allow reboot/poweroff
+#  256 = allow nicing of all RT tasks
+#
+# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
 # for what other values do
-#kernel.sysrq=1
+#kernel.sysrq=438

Magic system request Keyの項目が以前は0 or 1で有効か無効化のみだったと思うのですが,細かく指定できるようになっているようです.

0 – disable sysrq completely
1 – enable all functions of sysrq
>1 – bitmask of allowed sysrq functions (see below for detailed function description):

てことでkernel.sysrq=438は16進数で0x1B6なので

$bc
obase=16
438
1B6

以下が有効ということのようです.

2 = 0x2 – enable control of console logging level
4 = 0x4 – enable control of keyboard (SAK, unraw)
16 = 0x10 – enable sync command
32 = 0x20 – enable remount read-only
128 = 0x80 – allow reboot/poweroff
256 = 0x100 – allow nicing of all RT tasks

無効になっているのは以下の項目.

8 = 0x8 – enable debugging dumps of processes etc.
64 = 0x40 – enable signalling of processes (term, kill, oom-kill)

kernel configを見るとこの項目になっています.少なくとも4.13.0-1〜4.14.13-1以降は同じみたい.

$ zgrep ONFIG_MAGIC_SYSRQ /boot/config-`uname -r`
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
CONFIG_MAGIC_SYSRQ_SERIAL=y

ということでコメントが実際のkernelの項目と同じになったということみたいなので動作は変わらないようです.

追記)

昔使い方を知りたくて調べたときに見つけた文章は@miurahrさん翻訳のものでした.その後 で本人に遭遇.

porgを一般ユーザで利用する

porgを一般ユーザで利用するメモ

一般ユーザで普通に使おうとするとログ保存場所の/var/lib/porgへの権限がないと怒られてしまう.

$ porg -D ~/.porg -lp program-0.10.61 make install
porg: /var/lib/porg: Permission denied

ログ保存ディレクトリを指定すると行ける.

$ porg -L ~/.porg -lp program-0.10.61 make install

manより

   -L, --logdir=DIR
          Base log  directory.  The  logs  for  the  installed  packages  are  saved  in  this  directory.  Default  is
          '/var/lib/porg', unless variable LOGDIR is set in the configuration file (type 'man porgrc' for more informa‐
          tion).

--PREFIX=${HOME}/usrみたいな時向けに

version等

$ porg -V
porg-0.10 (17 May 2016)
Written by David Ricart <http://porg.sourceforge.net>
$ dpkg-query -W porg
porg    2:0.10-1.1

講談社「コミックDAYS」Web版サービス開始

講談社のコミックDAYSのWeb版が今日からサービス開始!

ざっくりと

  • ヤングマガジン,モーニング,アフタヌーン,イブニング,Kiss,BE・LOVEの6誌が対象の定期購読サービス
  • 雑誌発売日の0時から読める(関東以外だとかなり嬉しい)
  • 購読期間は2ヶ月分2号分(最新号と前号が読める.週刊誌は2週分,月刊誌は2ヶ月分)
  • 月額720円
  • 月当たり200ポイントもらえてコミック(単話単位で購入可能)の購入に使える
  • 単話で購入した後差額でコミックが購入できる
  • アプリは3/1リリース予定
  • iOS/Android/Webどれでも購読可能

ということでとりあえず無料期間は試してみるつもり.

ちなみにモーニングにはDモーニングというサービスが以前からある.Dモーニングは月額500円(税込み)でモーニング(一部作者のものは読めなかったりDモーニング限定などがあって紙版と少し違う)が毎週発売日の0時から読めてこれも安いと思っていたのだけどさらに安い.ちなみにDモーニングだと契約期間中のバックナンバーは全ていつでも読めるし,(iOS/Android)デバイスにダウンロードしてオフラインで読むことも出来るのが便利.

類似サービスのマガジン☆WALKERはコミック誌以外にいろいろな雑誌(出版社複数)も読めて月額500円(税別).バックナンバーは2ヶ月分でそれ以前は読めない.(iOS/Android)デバイスにダウンロードしてオフラインで読むことも出来る.単純に雑誌の数はここが一番多いので読むものがあるなら一番オトク.

NextcloudのWeb Installer

最近13が出たNextcloudですが,先日自宅サーバのownCloudもNextcloudに移行しました.
その時気づいたのですが,インストールページにWeb Installerというものが増えていました.

20180214_22:02:05-30568

いつもはArchiveをダウンロードしてverifyして展開してセットアップという流れでしたが,これだとWeb Installer ScriptをダウンロードしてWebPublicに置いてアクセスすると以下のようなSetup Wizardがはじまり,Nextcloud本体をダウンロードして展開してくれます.

$ wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
$ sudo -u www-data mv setup-nextcloud.php /var/www/

https://example.com/setup-nextcloud.php

20180131_08:01:38-11248

次の画面で導入ディレクトリを指定すると後はいつものセットアップウィザードが走ります.

20180131_08:01:54-11374

shellの使えないサーバなんかでは便利そうです.

ちなみにこのときownCloudから以下のような感じでデータ移行したのですが,数ユーザ,データ量50GB程度でしたが復号化暗号化ですごい時間かかりました.

  • ユーザの確認
    occ user:list
  • ownCloudで暗号化解除
    occ encryption:decrypt-all
  • rsync とかで owncloud/data/${USER}/files を nextcloud/data/${USER}/files にコピー
  • Nextcloudでファイルスキャン
    occ files:scan -p /${USER}/files ${USER}
  • Nextcloudで暗号化
    occ encryption:encrypt-all

この辺を見るとデータはそのまま移行できたようです…….

追記)

やっぱり簡単に移行できそう.

Btrfsでdfで空き容量があるように見えるのに容量が無いと言われてreadonlyにされてしまう

最近Btrfsで利用中にroにされてしまうという症状が起きます.
こんな感じで怒られてroになる.
dfは87%とかで未だ空きはあるように見える.
/に使ってるとこでremount,rwも効かず再起動しないと戻せず辛い.

[ 2196.878532] BTRFS: error (device dm-1) in btrfs_truncate_inode_items:4647: errno=-28 No space left
[ 2196.878537] BTRFS info (device dm-1): forced readonly
[ 2196.881248] BTRFS error (device dm-1): pending csums is 1241088

FAQだったようでここを参照しながら

別のsystemで確認してbtrfs fi balance start -dusage=5を叩いてみました.

$ sudo btrfs fi show
Label: none uuid: e54de82f-1fdb-4f9a-b529-0952b0ea3454
        Total devices 1 FS bytes used 465.89GiB
        devid 1 size 542.28GiB used 542.28GiB path /dev/mapper/x220--vg-root

$ sudo mount -o ro /dev/mapper/x220--vg-root /mnt
$ sudo btrfs fi df /mnt
Data, single: total=538.27GiB, used=462.41GiB
System, single: total=4.00MiB, used=80.00KiB
Metadata, single: total=4.01GiB, used=3.48GiB
GlobalReserve, single: total=512.00MiB, used=0.00B
$ sudo btrfs fi balance start -dusage=5 /mnt
ERROR: error during balancing '/mnt': Read-only file system
There may be more info in syslog - try dmesg | tail
$ sudo mount -o remount,rw /mnt
$ sudo btrfs fi balance start -dusage=5 /mnt
Done, had to relocate 0 out of 546 chunks

しかしあまり変わらず暫く利用しているとまたエラーに.しかし今度はdisk fullと怒られるけどroにはならなかったです.以下のページによると,

This means the bigger the -dusage value, the more work balance will have to do (i.e. taking fuller and fuller blocks and trying to free them up by putting their data elsewhere). Also, if your FS is 55% full, using -dusage=55 is ok, but there isn’t a 1 to 1 correlation and you’ll likely be ok with a smaller dusage number, so start small and ramp up as needed.

ということで-dusage=90にしてみると結構空いた感じです.
上の方では別systemで起動して実行しましたが,オンラインでも大丈夫でした.但し処理中はかなり重くなります.そして処理に200分程かかりました.

$ sudo btrfs fi balance start -dusage=90 /
Done, had to relocate 186 out of 530 chunks
$ sudo btrfs fi show
Label: none  uuid: e54de82f-1fdb-4f9a-b529-0952b0ea3454
        Total devices 1 FS bytes used 446.08GiB
        devid    1 size 542.28GiB used 449.27GiB path /dev/mapper/x220--vg-root

この後数GBのデータを書いてみたり溜まっていたapt upgradeとかしてみましたが今のところ大丈夫そうです.
ちなみにこのfsがあるSSD(INTEL SSDSA2CW600G3)も長く使っているのでそっちも心配だったのですが,smartctl-t longしたり-aの以下のあたり見る感じでは未だ行けそう?

9 Power_On_Hours 0x0032 100 100 000 Old_age Always – 36565
228 Workload_Minutes 0x0032 100 100 000 Old_age Always – 2193912
232 Available_Reservd_Space 0x0033 100 100 010 Pre-fail Always – 0
233 Media_Wearout_Indicator 0x0032 095 095 000 Old_age Always – 0

#適当なとこでsecure eraseしておきたい…….

WebmailソフトのRainLoopのOpenPGP鍵の保存場所

RainLoopというWebmailソフトウェアがあってこれはOpenPGPに標準で対応しているらしいし,NextcloudのPluginとして簡単に導入できるようということで試しに入れてみました.

以下のようにOpenPGPの設定画面で鍵をインポートしたり生成できます.

20180207_00:02:05-19556

既存の鍵を取り込む時は

公開鍵はgpg -a --export 9C3EC5272FFDAF803289ADE4398C09CC572E532C|xclip
秘密鍵はgpg -a --export-secret-keys B8B520B39C7E035CB18B01FF3B54CAAED9A959F4|xclip

のような感じでエクスポートしたものを以下のテキストボックスに貼り付けてインポートできます.
一度に沢山の公開鍵を読もうとしたら失敗しました.

20180207_00:02:15-19652

以下のように保存されて,メール作成時に暗号化や署名が可能になります.でもオプション扱いのようでいつも暗号化や署名をしたい人は毎回暗号化や署名を指定しないといけないのでちょっとめんどうだし指定し忘れて送信してしまいそうです.

20180207_00:02:35-19876

ちなみにこの鍵はサーバに保存されるのかと思っていたのですが,ブラウザを変えると鍵がでてきません.
確認するとブラウザのcookieに保存されるようです.

秘密鍵をいつものブラウジングに使うブラウザに保存するのはちょっと怖いですね.
プロファイルを分けるなどしたほうが良さそうです.

Vivaldi 1.14にしたらARM64環境で動かなくなる

Vivaldi 1.14がリリースされました.

Note機能のMarkdown対応とか便利かもと以前の手順で導入しました.

依存関係が増えていたのでこんな感じで.

$ sudo dpkg -i ./vivaldi-stable_1.14.1077.41-1_armhf.deb
$ sudo apt install -f
$ apt show vivaldi-stable
Package: vivaldi-stable:armhf
Version: 1.14.1077.41-1
Status: install ok installed
Priority: optional
Section: web
Maintainer: Vivaldi Package Composer <packager@vivaldi.com>
Installed-Size: 136 MB
Provides: www-browser
Pre-Depends: dpkg (>= 1.14.0)
Depends: ca-certificates, fonts-liberation, gconf-service, libappindicator1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.2.14), libexpat1 (>= 2.0.1), libfontconfig1 (>= 2.11), libgcc1 (>= 1:3.5), libgconf-2-4 (>= 3.2.5), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, wget, xdg-utils (>= 1.0.2)
Recommends: adobe-flashplugin, chromium-codecs-ffmpeg-extra
Homepage: https://vivaldi.com
Download-Size: 不明
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: A new browser for our friends
 Vivaldi browser is made with power users in mind by people who love the Web.

N: 追加レコードが 2 件あります。表示するには '-a' スイッチを付けてください。

早速起動しましたが動きません.

$ vivaldi
ERROR: ld.so: object '/usr/lib/chromium-browser/libffmpeg.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
/usr/bin/vivaldi: error while loading shared libraries: libffmpeg.so: cannot open shared object file: No such file or directory

Vivaldiはarmhfですが,aarch64の/usr/lib/chromium-browser/libffmpeg.soを読み込もうとしてコケているようです.
libffmpeg.soはVivaldiにもいるよう?

$ dpkg-query -S libffmpeg.so
chromium-codecs-ffmpeg-extra: /usr/lib/chromium-browser/libffmpeg.so
vivaldi-stable:armhf: /opt/vivaldi/lib/libffmpeg.so
$ ls -l /usr/lib/chromium-browser/libffmpeg.so /opt/vivaldi/lib/libffmpeg.so
-rw-r--r-- 1 root root 1098444  1月 30 17:37 /opt/vivaldi/lib/libffmpeg.so
-rw-r--r-- 1 root root 2428128  1月 27 19:51 /usr/lib/chromium-browser/libffmpeg.so
$ file /opt/vivaldi/lib/libffmpeg.so
/opt/vivaldi/lib/libffmpeg.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=a0c7e5c04798cdb9469a869e0b87dfe80fa85f30, stripped

LD_LIBRARY_PATHに指定してみましたがダメでした.

$ LD_LIBRARY_PATH=/opt/vivaldi/lib:$LD_LIBRARY_PATH vivaldi

chromium-codecs-ffmpeg-extra:armhfを入れればいいのではと思ったけど排他でaarch64版が消されるのでやめました.

$ sudo apt install chromium-codecs-ffmpeg-extra:armhf
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libido-0.1-0
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
以下のパッケージが新たにインストールされます:
  chromium-codecs-ffmpeg-extra:armhf
アップグレード: 0 個、新規インストール: 1 個、 削除: 3 個、保留: 0 個。
891 kB のアーカイブを取得する必要があります。
この操作後に 192 MB のディスク容量が解放されます。
続行しますか? [Y/n] 

/opt/vivaldi/vivaldiの中を見るとファイルの存在チェックをしているのだけど,/usr/lib/$DEBARCH/oxide-qt/libffmpeg.soとかも見ている.
これのarmhf版(oxideqt-codecs-extra:armhf)を入れてLD_LIBRARY_PATHに指定したら警告が出るけど起動した.(Youtubeを試すと動画を再生しようとするとエラーとなった.1.13の頃はYoutubeが見られていたのは何を使っていたのだろう?)

$ sudo apt install oxideqt-codecs-extra:armhf
$ LD_LIBRARY_PATH=/usr/lib/arm-linux-gnueabihf/oxide-qt:$LD_LIBRARY_PATH vivaldi

No suitable library for HTML5 MP4 (H.264/AAC) video and MP3 audio was
found, therefore only open codecs will play.

For assistance on how to enable proprietary media, visit:

https://help.vivaldi.com/article/html5-mp4-h-264aac-video-and-mp3-audio-support-under-linux/

[32501:32501:0201/063045.261665:ERROR:gl_implementation.cc(292)] Failed to load libGL.so.1: libGL.so.1: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
 :

後ろのFailed to load libGL.so.1も気になるので,libgl1-mesa-glx:armhfを入れてとりあえず解消.

$ dpkg-query -S libGL.so.1
libgl1-mesa-glx:arm64: /usr/lib/aarch64-linux-gnu/mesa/libGL.so.1
libgl1-mesa-glx:arm64: /usr/lib/aarch64-linux-gnu/mesa/libGL.so.1.2.0
$ sudo apt install libgl1-mesa-glx:armhf

なんか1.13より動作が重くなったような気がしますがとりあえず動くようになりました.