【One Mix 3】Ubuntu 20.04 ssd用設定

Windows 10 だとそれなりにSSDに配慮した設定になっているとは思うが、LinuxはSSDに配慮されていないので、ちゃんと防護策を講じておく必要がある。

ネタ的には拙ブログ次の記事の応用

raspberry pi3 ログをramdisk化

監視カメラとして24時間稼働で、SDカードで運用していた raspberry pi3 は 2年位でSDカードが壊れた。/var/log/syslog とか頻繁に書き込むから、1年365日動かしていれば、2年位で万単位の書き込みになるだろう。

OneMix3 はサーバー運用しないから、そんなに神経質になる必要も無いのだろうが、やるだけはやっておこうという事で、その時に使ったramdisklog というスクリプトを入れる。

だが、困った事に Ubuntu 20.04 では、SysVInit から systemd への移行が進んでいるのか、既に insserv が存在しない。

systemd の作法に基づいて、サービス化してみたのだが、起動途中で止まる。
[/etc/systemd/system/ramdisklog.service] ×ダメな例

プログラムの性質上、ramdisk OK → /var/log /var/tmp /tmpをramdisk化→rsyslogd 起動 の様になっているので、エラーがログに記録されておらず、何で躓いているのかさっぱり分からん。

grub の設定で起動時の quiet を止めたら見えるかもしれないが、(‘A`)マンドクセ
そもそも、わしは「さあ、Ubuntuを無事起動することができるのか!?」ってゲームやってんじゃなくて、ramdisk化したいだけなんだよ!

/etc/init.d/ramdisklog と配置して、
# update-rc.d ramdisklog defaults

再起動して df -h してみると、

無事イケましたな 🙂

他には、ファイルシステムに noatime 追加

[/etc/fstab]

SSDは、trim がどーたらという話を聞いた事があるが、

こんな有様なので、そしーてぼくは途方に暮れる〜♪

“hdparm -I /dev/nvme0” で検索したら、
NVMe ストレージの揮発性内部キャッシュ – 誰かの役に立てばいいブログ」を発見。

NVMe というのは PCIe バスに直接つないでデータを保存できるストレージの共通規格で、nvmexpress.org で仕様が公開されています。最新の仕様は rev. 1.3です。

HDD や SSD のようなものではあるんですが、hdparm コマンドで設定することはできず、ベンダが提供するツールか、NVMe 仕様に基づいてコントロールする OSS の github.com/linux-nvme/nvme-cli を使って設定します。この記事では OSS の nvme-cli を使っています。

なるほど PCIe接続だから、hdparmでは情報が取れんのか。
“nvme-cli” というキーワードを得たので、

ありましたな 🙂

しかし、インストールしてもコマンドが存在せぬ???
dpkg -L nvme-cli でファイル見たら、マニュアルとかサービスとかのファイルだけで、コマンドが無い。

うーん…。大元の github に色々書いてあるので、読んでみるか。

【One Mix 3】Ubuntu 20.4 LTSをインストール

200%拡大が入ってるので、見た目の解像度が低そうに見えるが、2560×1600で、わしが今使ってるデスクトップよりも広い。

Data D: 50GBとリカバリーの領域を解放してUbuntu 20.4LTSをインストール。

一番最初に買った時は、DataのD: は100GBだったような気がするが、今のonenetbookのサイトに置いてあるインストールメディアだと、180GBと50GBに切られるんだな。

画面が上下逆になってしまうので苦労したが、SSDなので、30分位でサクッと入った。

yoga の laptop にはこの画面逆転現象がよくあるようだが、自動起動するプログラムで、xrandr と xinput により、画面とタッチパネルを回転させてやれば、普通のノートPCとして使える。

[~/bin/scc.sh]

#!/bin/sh
sleep 3
xrandr -o left
xinput set-prop “GXTP7386:00 27C6:0113” ‘Coordinate Transformation Matrix’ 0 -1 1 1 0 0 0 0 1

折りたたんでタブレットにはしてないけど、多分、センサーで画面が回転してダメだろうな。

【OneMix3】指紋センサー死亡?

なんか、休止から復帰後に、艦これ操作してたら、画面がチラチラしだして、段々暗転して一切の入力を受け付けなくなるという現象になった。

電源ボタン長押しして、電源を落とし、いざ起動させてみるも、ログイン画面がPIN入力になっていて指紋認証とならない。指紋センサーが死んだ?

ログインして、デバイスマネージャ見てもハード的には正常。ログアウトしてセンサーにタッチすると、青い画面とバーコードのエラー画面が一瞬出てそのまま再起動。

そしてUEFI shellが起動???リセットしてもUEFI shellが起動するので、起動ロゴでDELキー連打すると、Windows 10の起動順位がなぜか二番目に???

一番目に変えて起動すると、無事Windows 10は起動したが、指紋認証は相変わらずできない。

Google先生で色々しらべると、サムスンのPCの指紋認証がおかしくなった場合の説明の英語のページを見つけた。一旦、PINを削除すると良い???

PINと指紋認証が連動してるって……ちっとも論理的じゃないがとりあえず、PIN削除してみると、指紋認証登録画面が…

どうやら、Windows 10によくある不具合のようだが、Windows 10 ってやっぱり頭おかしい系だな。 🙁

OneMix3 帰還

タブレットモードで頻繁に使用してたら、画面の半分がブラックアウト状態になるようになったOneMix3が修理から戻ってきた。

化粧箱が破損してて、マステで修理されてた(笑)。
液晶保護フィルムが剥がされてるので、また買わないといけない。

起動してみると、パスワードと指紋認証設定してたWindows 10 が綺麗さっぱり消えてて、123とかいうアカウントで、ノーパスワードで起動するようになっていた。

回復で、初期状態に戻そうとするも、「メディアがない」とかで初期化できず。
リカバリーメディア領域が6GB切られているけど、最近のWindwos 10 って8GB位使うから、最早入らなくなってるんだろうなあ。

「onemix3 windows 10 初期化」で検索して出てきたページを読みながら初期化。
インストールメディア作って、インストールして……

12個のエクスクラメーションマークが確認できました。また、!マークはついてないもののディスプレイドライバも入っていませんでした。これらをdouble driver を使って入れていきます

なにそり?どうやらやる前にドライバのバックアップを取っておかないといけないらしい。
そんなもん、一番最初に書いとけや!

ドライバが消えてしまったのは取り返しが付かないので、Onenetbook 公式サイトへ行ってドライバをダウンロードして、インストールしてみたが、角度変更センサーと、タッチパネルが有効にならず。

OSをダウンロードして、
cat OneMIX3.zip.* > OneMix3/OneMIX3.zip
で、ファイルをくっつけて展開して、NTFSフォーマットしたUSBにコピー。

それをOneMix3で起動したら、やっと復活。
元々、保存しなければいけないデータは保存していないので、Microsfot アカウントでログイン設定したら、skypeの設定とか要らん設定をそれなりに回復してくれるので、よし。

SSDなので、電源&休止関係で、「休止状態」になるやつを軒並みオフ。
ハイバネーションされると、ディスクゴリゴリアクセスして、SSDの寿命が縮むからね。
使用する時は、スリープか電源OFFのみ。バッテリ切れで休止状態になるのはまあ、許そう。

それと、タブレットモードでの使用時はよく電源ボタンに触れてスリープ状態になってたので、電源ボタン無効もやっておいた方がいいな。

あと、Google chrome は同期したら、Linuxで使ってる環境を復元してくれるので、ブラウザゲームやるには全く問題なし。

故障は多分、タブレットモードを多用したので、ヒンジ部分のケーブルが断線したのだと思うが、今後はノートPCとして使うかのう。

艦これの部隊生還

イベントのE5のゲージ1 やってて、よそ見してて、皐月改二が大破してるのに進軍してしまった。

戦闘中は攻撃されても何とか避けてたが、最後の雷撃喰らって撃沈。
即座にウインドウ閉じて封印し、イベント終了の今日まで放置。

イベント海域は期間限定なので、母港へ強制帰還が発生した時に、存在しない海域にいる艦隊はそのままどんな状態でも生還する。

皐月改二も 0/28 で撃沈マークが付いてるけど、修理したら「ふぁ~、ボク、マジで死ぬかと思ったぁ~。」ってセリフ。死んどるやんけ!とツッコミつつ生還。

大発×3とBofors 40mm四連装機関砲を失わずに済んだから、よかった。

OneMix3 EMSで発送。

OneMix3画面ブラックアウト

毎日タブレット状態にして使っていて、恐らくヒンジの配線が破損したせいで、タブレット状態にすると、画面半分がブラックアウトするようになってしまったので、5月に修理を依頼した。

しかしながら、支那向けEMSが止まっていたので、送れなかったが7月1日よりEMSの配達が再開されたから、早速郵便局へ持っていって発送した。

買って1年経ってないから、無料修理だったらいいなあ。

Let’s encryptでおウチサーバーの証明書取得

家のサーバーは X server のDNS設定をいじるスクリプトを組んで、サブドメインである irc.noizumi.orgが家のIPアドレスを向くようにDDNSモドキになっている。

HTTPは、監視カメラの zoneminder を外から見れるように元々、ルーターでポート10080番→80番としていて、加えてAUTH DIGESTを掛けているから、外から見放題にはなってなかった。

さて、果たしてポート80番が解放されている必要のある Let’s encrypt で、DIGEST認証が掛かっている httpd の証明書が作れるのか?
まあ、作れるのでこの記事を書いている訳だが 🙂

Let’s encryptは外部からアクセス可能かの判定に、/.well-known ってディレクトリを掘って、そこのファイルを外部から読み出し可能かどうかで、証明書作成者がドメインを使用可能で、有効かを判定している。

ちなみに、もう一つの懸念事項として、Let’s encrypt の certbot が動いているマシンから irc.noizumi.org にアクセスする場合、ルーターが IP masquerade を使用していて、繋げられないというのがある。

確か、iptables になって、POSTROUTING を使用すれば、LANからルーターが接続したPPPoEのグローバルIPアドレスに接続しても、いい感じにプライベートアドレスに変換してアクセス可能にできたはずなのだが、安物ルーターだと仕方がないか。

話はそれたが、DIGEST認証に穴を作って、/.well-known/* のアクセスがあったら、認証しないという設定にしてやる。

[/etc/apache2/conf-available/auth_digest.conf]

他にも .htdigest ファイルを作ってるけど、それは割愛。

# a2enconf auth_digest で有効化
わしの場合は元々有効になっているので、auth_digest.conf を弄るだけ。

そして、サーバーへ Let’s encrypt をインストール
# apt install certbot python-certbot-apache

# certbot –apache

参考:Certbot を使い3分で無料の SSL 証明書を取得する

nginx を apache に読み替えて設定。幸い、certbot から直接 irc.noizumi.org へのアクセスは無いようで、問題なく設定できた。

証明書の確認や、自動更新、テストなどは次のサイトが参考になる。

参考:Let’sEncryptの取得&自動更新設定してみた

さすがプロだけあって、論理的で分かりやすい。

ついでに、irc もSSLを稼働。ngircd の設定にちょっと躓いたりもしたが、

[Global]
Ports = 6667

[SSL]
CertFile = /etc/ngircd/cert/fullchain.pem
KeyFile = /etc/ngircd/cert/privkey.pem
Ports = 6697, 9999

を追加する事でいけた。
ルーターのポートフォワードは、非SSLが6667、SSLが6697で、9999はフォワードしてないので、外部からは繋げられない。

Let’s encryptが作成した証明書ファイルは、所有者が root:root で、privkey.pem は root 権限のみ読めるファイルなので、ircの権限で動作するngircdには読む事ができない。

そこで、/etc/ngircd/cert にコピーして、irc:irc の所有者にした。

証明書の自動更新の設定もしたが、ngircd の証明書もコピーするようにしてある。cp の上書きなので、所有者の再設定をしなくてもいいはず。

gpsdの長年の疑問解決

gpsdというgpsのデータを流してくれるプログラムがあるのだが、起動オプションに-G を付ければ、あらゆるネットワークインターフェースで受け付けしてくれるはずだった。

しかし、Debian 7あたりから外部から接続できなくなった。
どうやら systemd が余計な事をしてくれていて、ローカルホスト以外を受け付けないように邪魔しているようなのだが、新しく導入されたシステムなので解決方法が分からなかった。

今日、検索してやっと解決方法を見つけた

But we aren’t there yet. gpsd may be listening on all interfaces, but systemd’s hold on the socket means gpsd can’t hear anything on interfaces other than the loopback. We have to tell systemd to allow gpsd to hear other interfaces. We run systemctl edit --full gpsd.socket. Then we can edit it. After editing, the [Socket] stanza looks like so:

When you are done editing, systemctl does what it needs to do internally to preserve your changes from being over-written during upgrades. It also does the equivalent of a systemctl daemon-reload for you.

We now restart both gpsd units like so:

こんなもんわかるかボケ!

これでやっとデスクトップマシンの地図表示プログラムで、サーバーからデータを取得してGPSの現在位置を表示できる。

自宅固定だからほぼ動かないけど、測定誤差でふらふら動くから結構おもしろい。

【Raspberry PI4】設定メモ

※取り敢えず、やった事のメモなのであまり参考にならないと思う。
日本語入力
$ sudo apt install fcitx-mozc

zoneminder
$ sudo apt install apache2 mariadb-server
$ sudo mysql_secure_installation
$ sudo apt install php libapache2-mod-php php-mysql
$ sudo apt install zoneminder vlc-plugin-base

VNC
GUIの「Raspberry PIの設定」ではグレーアウトしていて変更できないので、端末からコマンドで設定。

$ sudo raspi-config
→5 Intafacing Options→P3 VNC→「はい」
/var/log/syslog で libbcm_host.so が無いと怒られる。/opt/vc/lib に存在するけど、/etc/ld.so.conf にpath追加して、ldconfig するも変わらず。

How to Install VNC on Raspberry Pi OS (64 bit)
https://www.tomshardware.com/how-to/install-vnc-raspberry-pi-os

標準の設定が使えないから、tightvncserver を入れて回避するしかないようだ

IRC
$ sudo apt install ngircd

ircbotの為にJREインストールだけど、JDK入れちゃう。
GUIはOFFにする予定なのでheadless
# apt install default-jdk-headless

以下のパッケージが新たにインストールされます:
ca-certificates-java default-jdk-headless default-jre-headless java-common
openjdk-11-jdk-headless openjdk-11-jre-headless

その他
# apt install php-xml
# apt install samba
# smbpasswd -a noizumi
# apt install ntp
# apt install gpsd gpsd-clients
# apt install bind9
# apt install exim4
# apt install cron-apt

# apt install dovecot-imapd

Mixed mbox and Maildirの設定はドキュメントの通りでOKでだった。
これでサブフォルダー掘り放題や 🙂

【業務連絡】ACアダプター到着。fsckちう

Begin: Loading essential drivers … done.
Begin: Running /scripts/init-premount … done.
Begin: Mounting root file system … Begin: Running /scripts/local-top … done.
Begin: Running /scripts/local-premount … done.
Begin: Will now check root file system … fsck from util-linux 2.29.2
[/sbin/fsck.ext3 (1) — /dev/sda2] fsck.ext3 -a -C0 /dev/sda2
/dev/sda2: recovering journal

ハードディスクのチェックが入ってるので、もう暫く掛かります。

【追加】
復旧しますた。

Raspberry PI4 で動かした新しいZoneminder、何かカッコイイぞ。