2019年10月27日日曜日

ラズパイ22

GPartedでパーテーション操作やext4ドライブの中身を見たい時のため、KNOPPIXを起動するVMware仮想マシンを用意している。それ以外にまともなLinux環境は用意していない。だが、reseizeimage.plを使うのに、いちいちラズパイ環境にimgファイルをコピーして圧縮してPCにコピーして保存...なんて事をしてますが、コピーにも時間がかかる。
ならば、日常的に使えるRaspbian仮想環境を用意したら幸せになれるかもしれません。それにRaspbian Busterにも慣れてた方が幸せになれそうだ。なのでx86用イメージからVMware上にRaspbian環境(Raspberry Pi Desktop)を作った。

公式ダウンロードサイト
https://www.raspberrypi.org/downloads/raspberry-pi-desktop/

VMware Player環境にさっくりインストール完了。仮想マシン設定を弄ったのはメモリ2GBとCPU2個という設定くらい。あとは、VMware tools(VMwareTools-xx.x.x-xxxxxxx.tar.gz)をDownloadフォルダに解凍して、vmware-install.plを実行した。基本的に全てyか単にEnterとし、すんなり入った。

あとは、何故かブラウザメニュー等が日本語にならなかったので、必要に応じてChromiumの日本語化、Firefox ESRのインストール、日本語入力追加を行った。なお、今回作成の仮想環境はサーバとして動かす気が無いので、固定IPは設定していない。

■chromiumの日本語化
sudo apt-get install chromium-l10n

■日本語Firefox ESRを入れる
依存関係で勝手に入れる方法らしい。
sudo apt install firefox-esr-l10n-ja

■日本語入力を入れる
sudo apt-get install fcitx-mozc

Raspbian Buster x86 日本語入力までは以下を見ると良い。
https://qiita.com/ht_deko/items/1b21ea24b7670ad188f5

■Libreofficeの日本語化
sudo apt-get install libreoffice-l10n-ja

■GPartedを入れる
sudo apt install gparted

■最後にアプデ(何時の間にか推奨コマンドが変わってたらしい)
https://linuxfan.info/package-management-ubuntu
apt update
apt upgrade

■出来ました
当たり前ですが、出来上がったRaspbian Buster環境は動作させるホストPCのCPUパワー次第です。ウチのCeleron1037U+WIn10のようにショボいホストPCでも使えます。ディスクサイズも16GBで設定したのでコンパクトだし、仮想環境として持っておくにはとても良いですね。仮想マシンイメージも、7zip圧縮してバックアップしたら3GBだった。
これで、ラズパイから外したMicroSDをWindows上のWin32 Disk ImagerでUSBHDDにimg化し、VMwarsueラズパイにUSBHDDを接続しimg圧縮という事が出来るようになったワケです。

■VMwareラズパイでresizeimage.plしてみた
今まさに動かしているラズパイのMicroSD128GBをイメージ化したら119.08GBになり、1.5時間くらいかかった。実験なので一応圧縮する前のものを内蔵HDDにバックアップしたら、USB2.0接続なので1.5時間くらいかかったが、これは確実に出来ると分かれば不要だろう。そして、VMwareラズパイでresizeimage.plしてみたのですが、これまた1時間くらいかかった。これらの作業中、ホストPCは他の作業も可能。安全のためUSB脱着等は控えましょう。
時間はかかるにせよ、ラズパイ本体を動かせなくなる時間は、バックアップイメージを作る1.5時間だけだ。それにしても少々時間がかかるので、ラズパイ環境は32GB~64GBくらいの方が何かと管理が楽だろうと、しみじみ思った。
未だテストしてないが、SD Card Copierが仮想Buster環境の方で思った通りに動きそうな気がするので、SDカードリーダーを2つ接続し大容量MicroSD→小容量MicroSD(バックアップ専用)への環境コピーをし、その後にimg化すれば時間短縮になるかも。

2019年10月25日金曜日

ラズパイ21

ラズパイMicroSDをWin32 Disk Imagerでimgファイルバックアップしていると、MicroSDの容量サイズのimgファイルが出来上がる。データを除いた実使用容量が10GB程度なので無駄が多いし容量が大きいと気軽にバックアップ出来ない。

というワケで、ラズパイOS環境バックアップのファイルサイズを小さく出来ないか検索したら、作成済みimgファイルを圧縮する方法を見つけた。しかもラズパイ用だ。

http://www.morien.mydns.jp/compact_img_file/

ようは公開されているpealスクリプトをコピペして使うのです。imgファイルと同じフォルダにresizeimage.plを置き、実行すればよい。なお、chmod 755 resizeimage.plとして実行権限を付与して使います。

sudo perl ./resizeimage.pl /media/suzyusbhdd/Public/RasPi/32G_191005-2.img

作成済みのものを圧縮したら32GB→10GBというように小さくなりました。おかげで約96GBあったバックアップファイルが約30GBまで小さくなった。今現在動かしているラズパイMicroSDは128GBなので、resizeimage.plが必須ですね。

【SD Card Copier】
SD Card Copierが領域確保が出来ないとメッセージが出て止まるんだけど、これ、うちだけなんだろうか。出来た時と出来ない時の違いは何なんだろう?

【熱暴走?】
ラズパイを操作していたら突然ハングした。システム再起動してみたらアイドリング状態で63℃だった。GPIOピンヘッダ給電に変更した際にファンに配線が引っかかったのかもしれない。ケース蓋を閉めてもファンが回転するよう配線を寄せてから温度監視してみたら、43℃まで下がった。(環境再構築してからCPU温度表示パネルを出してなかった事に今更気づいたw)
CPU温度監視してて気づいたのだが、当初の裸運用時はCPU負荷が下がったら、もっとスッと温度が下がってた気がする。GPIOピンヘッダ給電に変更したことによりCPU性能は上がったけど、発熱も増えたのも影響してるのかも。とりあえずはファンさえ回っていれば問題は無さそうだが...
MicroSDアクセス口や端子口だけで排気口は十分と思っていたが、ファン固定方法・ファンとCPUのクリアランス・排気口増設などエアフローを再検討した方が良いのかもしれないな。

2019年10月21日月曜日

ラズパイ20

【電源スイッチ】
Chromecastやラズパイに電源スイッチを付けたくて、USB電源スイッチを買った。

https://www.ainex.jp/products/adv-111/

ラズパイで試してみたら、起動時にUSBHDDが電力不足でカッコンカッコン言うだけで、ディスク回転に至らなかった。スイッチの抵抗なのだろうか、そもそも2.5Aを想定していないスイッチだからなのか、まぁいずれにしろ5V2.5Aを要求するラズパイ3B+には使えないというオチだった。この電源スイッチはCheomcastで使おう。
今回分かったのは、アダプタは5V3A×2端子同時使用可のものを使っているが、ラズパイから給電されるUSBHDDを回転させるには現状でギリギリだという事。規格上はUSBHDDも余裕なハズなんだけどなぁ...

【USBHDDケース】
今ラズパイで使っているUSBHDDケースは、BDメディアプレーヤーに使っていた時にエラーが出たUSBHDDケースなので、ラズパイでもエラーが出る可能性がある。ケース側電源マージンが不足気味なのかも。なので、不具合を感じたら即交換出来るよう、USBHDDケース(玄人志向GW25OR-U3)を買い足した。店頭で税込み1000円で買えた。

https://www.kuroutoshikou.com/product/case/25hdd/gw25or-u3/

工具不要だが、落としたらHDDが箱から飛び出すかもな仕様。落とすなって話w。しかし、安い割にはUSB3.0対応で、USB2.0接続で35MB/sくらいの転送速度が出たので手持ちHDDリサイクル用としてアリだと思う。USBケーブルも固すぎないのも良いですね。

【USB Type-Cな充電ケーブル】
ダイソーでUSB Type-Cな充電ケーブルと、USBのmicroB→Type-C変換アダプタを買いました。今後、ラズパイ4用として使えるかなと考えたんですよね。これらが謳い文句通りの仕様なのか確認するため検索してみた。

https://japanese.engadget.com/2018/10/13/100-usb-type-c/

買ったやつを具体に型番まで覚えてないけど、上記サイトと同じようなヤツだったので使えそう。100円ならアリでしょう。

【結局、GPIOピンによる給電】
http://wbbwbb.blog83.fc2.com/blog-entry-232.html

ラズパイ3B+に普通にUSB給電すると、電圧ドロップ等々によりCPUパワーを発揮しきれていない場合があるようです。GPIOピンヘッダ給電にすれば、演算能力が約1.7倍、USBHDDの安定性向上、12Vファンの5V駆動安定性向上など様々なメリットがありそうです。ラズパイは動画変換に使う事もあるし、ブラウザが速くなるかもしれないので、ぜひGPIOピンヘッダ給電にしたい。ただし、そのGPIOピンは現在は冷却ファン給電に使っているので、二股にする必要があるかも。ざっと思いつく必要パーツは以下だな。手持ちジャンクパーツで作れそうだし、やってみよう。

・USBケーブル
⇒MicroB端子が壊れかけの充電ケーブルがある
・GPIOピン接続用端子
⇒intel Scocket370CPUファンの端子メスを切って使おう
・冷却ファン用端子
⇒ジャンクマザボから引っこ抜いてきたCPUファン端子オス

構想当初は途中に電源スイッチを挟もうと思ったし、手持ちもあったけど、極力アダプターからの電圧降下を防ぐという意味なら、電源スイッチなんぞ付けては意味が無いと判断した。
CPUファン端子メスは3本足だけど真ん中を空白とし、GPIOの2番(赤+)と6番(黒-)という感じで作成した。この方がGPIOの端っこから接続すればOKだし、分かりやすいからという理由だ。CPUファンも3端子コネクタピン位置を差し替えなくても使えるようにした。

というワケでゼロ円で出来た。あとは、CPU動作が速くなったのかどうか。操作のキビキビ感が増した気がするが、一応unixbenchを入れて現状スコアを確認してみた。やり方は以下。
https://qiita.com/yyano/items/62aa7f9f488eaa0de77b

欲張らないんで、マルチスレッドで750を超えれば、ほぼ100%で動いているということでしょう。その結果は...

   シングルスレッド:331 、マルチスレッド:804

おおお、バッチリです。フルパワーで回っているようです。良かった。
詳細ベンチ結果は以下。
------------------------------------------------------------------------
Benchmark Run: 土 10月 19 2019 15:38:20 - 16:06:22
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 5049433.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1236.6 MWIPS (9.9 s, 7 samples)
Execl Throughput 958.2 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 144879.0 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 43295.2 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 368090.4 KBps (30.0 s, 2 samples)
Pipe Throughput 308084.6 lps (10.0 s, 7 samples)
Pipe-based Context Switching 53225.5 lps (10.0 s, 7 samples)
Process Creation 2404.6 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1968.0 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 596.4 lpm (60.1 s, 2 samples)
System Call Overhead 684109.9 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 5049433.6 432.7
Double-Precision Whetstone 55.0 1236.6 224.8
Execl Throughput 43.0 958.2 222.8
File Copy 1024 bufsize 2000 maxblocks 3960.0 144879.0 365.9
File Copy 256 bufsize 500 maxblocks 1655.0 43295.2 261.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 368090.4 634.6
Pipe Throughput 12440.0 308084.6 247.7
Pipe-based Context Switching 4000.0 53225.5 133.1
Process Creation 126.0 2404.6 190.8
Shell Scripts (1 concurrent) 42.4 1968.0 464.2
Shell Scripts (8 concurrent) 6.0 596.4 994.1
System Call Overhead 15000.0 684109.9 456.1
========
System Benchmarks Index Score 331.2

------------------------------------------------------------------------
Benchmark Run: 土 10月 19 2019 16:06:22 - 16:34:29
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables 19122677.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 4932.6 MWIPS (9.9 s, 7 samples)
Execl Throughput 2295.8 lps (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 234024.8 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 66132.6 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 614475.7 KBps (30.0 s, 2 samples)
Pipe Throughput 1207854.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 192914.0 lps (10.0 s, 7 samples)
Process Creation 4974.9 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4604.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 620.0 lpm (60.2 s, 2 samples)
System Call Overhead 2646838.0 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 19122677.9 1638.6
Double-Precision Whetstone 55.0 4932.6 896.8
Execl Throughput 43.0 2295.8 533.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 234024.8 591.0
File Copy 256 bufsize 500 maxblocks 1655.0 66132.6 399.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 614475.7 1059.4
Pipe Throughput 12440.0 1207854.9 970.9
Pipe-based Context Switching 4000.0 192914.0 482.3
Process Creation 126.0 4974.9 394.8
Shell Scripts (1 concurrent) 42.4 4604.6 1086.0
Shell Scripts (8 concurrent) 6.0 620.0 1033.3
System Call Overhead 15000.0 2646838.0 1764.6
========
System Benchmarks Index Score 803.0

2019年10月19日土曜日

LineageOS14.1(Android7.1.2)その4

LineageOS14.1機は偶にしか使わないので、使い古したバッテリーで使うことにした。先日、Googleマップを機内モードを解除して使ったら、セルスタンバイが激しく数時間でバッテリーが底をついた。そこで少々対策を講じてみる事にした。

http://appredmi.hateblo.jp/entry/2018/08/07/131624

というワケで、rootedで使う事にし、SuperSUとXposedをLineageOS14.1機に入れてみた。TWRPは端末を一度シャットダウンし、Vol下+電源で起動するとが立ち上がる。手順は以下だ。

①TWRPでsupersu(addonsu-14.1-arm64-signed.zip)をインストール
 開発者モード・ルートアクセスで「アプリのみ」とした。
②XposedInstaller_3.1.5.apkをインストール
③TWRPでXposedフレームワーク(xposed-v89-sdk25-arm64.zip)をインストール
④DocomoSimPatcher20130726.apkをインストール
⑤Xposedで「docomo MVNO Dataonly-SIM Pather」モジュールにチェックし再起動
⑥一応「datasim_patcher.apk」モジュールも入れておいたが、保険だ。とりあえず無効。④の効きと比べてどうかな。
http://pqovopq.seesaa.net/article/353288334.html
なお、apkは頑張って探した↓
https://bcbweb.bai.ne.jp/~aoc29401/tablet/gendo.html

これで完了。それにしても、再起動直後の発熱が凄かったなぁ。時間が経ったら落ち着いたけど。
あとは、機内モード解除状態でセルスタンバイがマシになれば良いのだが。普段は機内モードでの使用が鉄板ですけど、機内モードだとGoogleマップが現在地を拾ってくれないんです。セルスタンバイがマシになれば、LineageOS14.1機は便利な5インチタブレットとして使えるんですよ。

ついでに...LineageOS14.1機はrootedで使う事にしたので、広告ブロックもrooted用にした。

AdAwayによる広告ブロック
https://f-droid.org/packages/org.adaway/
https://www.moongift.jp/2019/06/adaway-android%E7%94%A8%E3%81%AEhosts%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%A2%E3%83%89%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF/
http://logroid.blogspot.com/2012/06/adaway-hosts-for-japan.html
https://sites.google.com/site/hosts2ch/

minminguardによる広告ブロック
https://repo.xposed.info/module/tw.fatminmin.xposed.minminguard

こんなあたりかな。とりあえず、Inoreaderでも広告ブロックは十分機能しているようなので、AdGuardは休止した。そのうちアンインストールするかも。

2019年10月12日土曜日

ラズパイ19

一応言っておくが、いわゆる「...という夢を見た」って記事です。コンセプトは、平日には家で動画を楽しむ時間が無く、且つ、スマホもパケット使い放題じゃない人が、通勤時にタイムシフト再生するために考えた記事です。

youtubeをスマホにダウンロードして通勤時にオフラインで見たい。というワケでyoutube--dlをインストール。リポジトリで入れると古かったので、入れてから新しいヤツで上書きし、一応実行権限を付けた。まぁ、最近の説明サイトでは/usr/local/binに入れるようですが、リポジトリでインストールしたら/usr/binでした。パスが通ったディレクトリに入れば良いんですw。一応、ラズパイ環境のアプデもしておいた。
https://qiita.com/akinko/items/74886ad84fed0ee10044
http://min117.hatenablog.com/entry/2016/07/15/185252

sudo pip install youtube-dl
sudo curl -L https://yt-dl.org/downloads/2019.09.28/youtube-dl -o /usr/bin/youtube-dl
sudo chmod a+rx /usr/bin/youtube-dl
sudo apt-get update
sudo apt-get upgrade

とりあえず、これでインストール完了です。バージョン確認する。
youtube-dl -v

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.09.28
[debug] Python version 2.7.13 (CPython) - Linux-4.19.75-v7+-armv7l-with-debian-9.11
[debug] exe versions: avconv 3.2.14-1, avprobe 3.2.14-1, ffmpeg 3.2.14-1, ffprobe 3.2.14-1, rtmpdump 2.4
[debug] Proxy map: {}
Usage: youtube-dl [OPTIONS] URL [URL...]

オプション一覧は、公式が一番のようだ。Examplesが出てるので、そこを見りゃだいたい分かる。
https://github.com/ytdl-org/youtube-dl/blob/master/README.md#format-selection
一部抜粋の日本語約
https://masayoshi-9a7ee.hatenablog.com/entry/20150905/1441414821
少し分かりやすいオプションが見れる
https://blog.withachristianwife.com/2018/12/10/youtube-dl/

適当なURLで-F(大文字のFです)で動画フォーマットの一覧を見てみる。気になっているバンド「Arch Echo」の公式に行ってみた。
Arch Echoチャンネル
https://www.youtube.com/channel/UCiXDVCqPmUHMcl0R1rfERpw

youtube-dl -F https://www.youtube.com/channel/UCiXDVCqPmUHMcl0R1rfERpw

延々と続き...
[download] Downloading video 42 of 42
[youtube] IT6e-h6P7Uo: Downloading webpage
[youtube] IT6e-h6P7Uo: Downloading video info webpage
[info] Available formats for IT6e-h6P7Uo:
format code extension resolution note
249 webm audio only tiny 57k , opus @ 50k (48000Hz), 1.99MiB
250 webm audio only tiny 80k , opus @ 70k (48000Hz), 2.66MiB
140 m4a audio only tiny 128k , m4a_dash container, mp4a.40.2@128k (44100Hz), 5.05MiB
251 webm audio only tiny 152k , opus @160k (48000Hz), 5.25MiB
160 mp4 256x144 144p 113k , avc1.4d400c, 24fps, video only, 4.18MiB
278 webm 256x144 144p 128k , webm container, vp9, 24fps, video only, 3.74MiB
242 webm 426x240 240p 243k , vp9, 24fps, video only, 7.79MiB
133 mp4 426x240 240p 251k , avc1.4d4015, 24fps, video only, 9.18MiB
243 webm 640x360 360p 429k , vp9, 24fps, video only, 13.47MiB
134 mp4 640x360 360p 494k , avc1.4d401e, 24fps, video only, 12.71MiB
244 webm 854x480 480p 765k , vp9, 24fps, video only, 21.23MiB
135 mp4 854x480 480p 987k , avc1.4d401e, 24fps, video only, 23.22MiB
247 webm 1280x720 720p 1399k , vp9, 24fps, video only, 39.10MiB
136 mp4 1280x720 720p 1758k , avc1.4d401f, 24fps, video only, 41.11MiB
248 webm 1920x1080 1080p 2452k , vp9, 24fps, video only, 68.43MiB
137 mp4 1920x1080 1080p 3045k , avc1.640028, 24fps, video only, 72.76MiB
18 mp4 640x360 360p 563k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 22.40MiB (best)
[download] Finished downloading playlist: Uploads from Arch Echo

なるほど...soundとvideoがバラバラになっていたりするんだな。(Best)って書いてあるヤツは全然ベストに感じないという罠w。これは、個別に自分の望むものを選択してダウンロードしなくてはならないようだ。

チャンネルだと42個もあったので、動画1個のURLで試してみよう。
Arch Echo - Color Wheel
https://www.youtube.com/watch?v=F65IQmP7lCk

コマンドは以下。スマホに入れて通勤時に見る事を考えた設定。-oオプションを付けなかったら、/home/piにファイル出力されファイル名は%(title)s-%(id)s.%(ext)sとなっていた。日付が無いといつの動画か分からないので日付を入れたいが、Release_dateはNAになっちゃったのでupload_dateにしました。
youtube-dl -f 'bestvideo[ext=mp4][height<=480]+bestaudio[ext=m4a]' -o '/media/suzyusbhdd/Public/YT/Arch Echo/%(upload_date)s--%(title)s.%(ext)s' https://www.youtube.com/watch?v=F65IQmP7lCk

お試しで通勤時に見てみた。画面を消し音声だけ聞き続けたい場合は、バックグラウンド再生すれば良い。VLCやMXは対応していた。しかし、殆ど喋ってたり音楽だったりを聞くのがメインなので、スマホで見るだけならheight<=360とか240でも良いかもしれない。2019年1月1日以降のものだけ、まとめて落としてみよう。(datebeforeにすれば以前となる。)

youtube-dl -f 'bestvideo[ext=mp4][height<=360]+bestaudio[ext=m4a]' --dateafter 20190101 -o '/media/suzyusbhdd/Public/YT/Arch Echo/%(upload_date)s-%(title)s.%(ext)s' https://www.youtube.com/channel/UCiXDVCqPmUHMcl0R1rfERpw

あとは、mp4形式で映像と音とが一体になったベストなものを一括ダウンロードしたいなら以下。必ずしもbestとは思えないけど、楽したいとかエラー回避とかなら、こんな感じが楽でしょう。
youtube-dl -f 'best[ext=mp4]' -o '/media/suzyusbhdd/Public/YT/Arch Echo/%(upload_date)s-%(title)s.%(ext)s' https://www.youtube.com/channel/UCiXDVCqPmUHMcl0R1rfERpw

う~ん、良い感じのプログレだ。というわけで通勤が更に快適になった。ちなみにコレ、Windowsでも動く。GUIがオマケ程度についたyoutube-dlgというのあるようです。

2019年10月11日金曜日

ラズパイ18

Linux環境でラジオ録音ってどうするのかな?と調べたら、「rfriends」というのを見つけた。ラジコ録音とラジコタイムフリーダウンロードが出来る一石二鳥ソフト。端末上にメニューが出て設定が出来るので、使い方は簡単だった。

http://rfriends.hatenablog.com/entry/radiko_radiru_Linux

インストールは私の場合は以下とした。

インストール先:/home/pi/rfriends2
手順は公式に則る。ただし記載ミスもある。(この手のサイトにありがちな、小さな罠なのかな。)
http://rfriends.hatenablog.com/entry/radiko_radiru_Linux#%EF%BC%92-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%ABRaspberry

1.インストール実行
sh /home/pi/rfriends2/ex_tools.sh

途中での質問は「y」で進める。私が聞かれたのは以下。

・PHP7.0をインストールするか7.3をインストールするか
→7.0をインストールをyした
→再び7.3インストールするかを聞かれたのでyとした
・ffmpegをインストールするか
・at, gpac, swftools,mp4v2-utils
→当然y

完了すれば「finished」と出る。

2.ramdiskの設定(ここから191007)
sudo nano /etc/fstab

最後に以下を追加するのだが、公式ではramdisk256MBで設定しているとか書いてあるが、何故かコピペしようとしたら、フォルダがrfriend/tmpになってるし、512mになってるし...そこを直したのが以下。

# /home/pi/rfriends/tmp をRAMディスクにマウント
tmpfs /home/pi/rfriends2/tmp tmpfs defaults,size=256m,noatime,mode=0777 0 0

編集が完了したらマウントする
sudo mount -a

3.デスクトップに実行用シェルスクリプトを作る
go-rfriends.shという空ファイルをデスクトップに作成したら、実行権限を与える。
chmod 777 /home/pi/Desktop/go-rfriends.sh

手順は逆かもだが、「sh /home/pi/rfriends2/rfriends2.sh」という内容のシェルスクリプトにする。以下で編集するです。
sudo nano /home/pi/Desktop/go-rfriends.sh

4.タイムフリーをダウンロードしてみる
上記のショートカット的シェルスクリプトを端末上で実行する。
そうすると、rfriendsのメニューが出る。
4でタイムフリーのダウンロード。キーワードを入れたら該当番組がリストアップされるので、0で全部ダウンロードしてみよう。
これでダウンロードが出来たら一応完成。

5.キーワード
キーワード登録をタイムフリーにしてみよう。6だ。ようはテキストファイルにキーワードが書いてあるので、それを編集すれば良い。ただし、デフォでお約束な番組がサンプルとして記載されているので、何も気にせずcronで実行してたら、キーワードに該当するものがガンガン保存されていて驚く事でしょう。タイムフリーサンプルとして「深夜の馬鹿力」とか「とらじおと」とか、まさしく私が録音しようとしていたものが記入済みだったw。あとはラジコとかタイムフリーとか一式有効になってて、それぞれサンプルキーワードが入っているので、プレミアム以外の所は一通り設定確認してからcrontabした方が良いです。

6.ファイル名の変更
7の5 タグ編集だ。デフォで「放送局名_番組名_開始時間_終了時間.m4a」というファイル名設定されているのだが、ファイル名順≒日付順とするよう直した。
nm_fmt = '%4$s_%5$s_%1$s_%2$s' ; 放送局名_番組名_開始時間_終了時間

nm_fmt = '%1$s_%2$s_%4$s_%5$s' ; 開始時間_終了時間_放送局名_番組名

7.保存先
7の2 設定編集だ。録音ファイルを自動でUSBHDD等に移動するなら、以下のところを変更する。(7.パラメータの編集でrfriends.iniを編集できます。直接やっても良いけど)

; -----------------------------------------------------------------
; 録音ファイルを指定ディレクトリにコピー(移動)します。
;
; iTunesの場合は、
; rftrans=1 (rftrans=2は指定しないでください。)
; rftrans_dir=
; "C:\Users\*****\Music\iTunes\iTunes Media\iTunesに自動的に追加"
; を指定してください。
;
; ディレクトリ指定の場合は
; rftrans =2
; rftrans_dir= "希望するディレクトリ"
; を指定してください。局別番組別ディレクトリに分けて転送されます。
;
rftrans = 2 ; 0:off,1:iTunes,2:局別番組別
rftrans_dir = "/media/suzyusbhdd/Public/rfriends" ; ディレクトリ
rftrans_radiko = 2 ; radiko  (2:move 1:copy 0:off)
rftrans_radiru = 2 ; radiru  (2:move 1:copy 0:off)
rftrans_timefree = 2 ; timefree (2:move 1:copy 0:off)
rftrans_radiru_vod = 2 ; radiru_vod (2:move 1:copy 0:off)
rftrans_codec = 0 ; codec (1:mp3 0:m4a)
rftrans_codec_opt = "-movflags faststart -acodec mp3 -ab 128k -f mp3" ; codec_opt(ffmpeg parameter)
; -----------------------------------------------------------------

8.crontab
使い方も含め「/home/pi/rfriends2/rfriends2.txt」を見よう。サンプルの文言の最後の行をcrontabに追加すれば良いんだけど、毎朝5時10分になったらrfriendsを実行するようなサンプルになっていた。まさに深夜放送が終わった後にタイムフリーでダウンロードする事を想定したようなサンプルだw
私はこんな感じ↓
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
BASE_DIR=/home/pi/rfriends2
# m h dom mon dow command
10 5 * * * sh $BASE_DIR/script/ex_rfriends.sh

というワケで、情報こそ少ないかもしれないが、説明やiniファイルを一通り読めばインストールも設定も難しくなく、「rfriends」はとても優秀です。

【rftiends雑感】
推奨環境がラズパイZERO Wという理由がよく分かった。ラジオ録音に必要なものは以下。
・Raspberry PI ZERO W
・MicroSD 32GB(始めるだけなら8GBも可)
・電源アダプタ(古いスマホ充電器でも動くと思う)
・電源ケーブル(100均のかAndroid端末の古いヤツ)
ケースは電源ケーブルの穴さえ空いていればOKなので、フリスクやミンティアの空き箱に基盤を入れても良いw。結局ね、ZERO Wだけ買ってきて、どこのご家庭でも余っている32GBのMicroSDを挿して、どこのご家庭でも余ってる5Vアダプターで動かし、家WiFiにぶら下げれば良い。1時間あたり20MB・使用可能領域24GB・月5週・毎週10時間録音するとして計算すると

 20000MB/(5*10*20MB)=24か月分

という長期間録音が可能になるので、年一で古いデータを削除すれば良いだろう。あとは録音ファイルが入っているところをSamba共有しておき、AndroidだったらFolderSyncってアプリで同期スケジュールを設定しておけば完全自動で転送完了だ。iPhoneだとDocuments by Readdleで必要な時に同期させれば良さそう。要らないはずなのにラズパイzero wが欲しくなりますw

2019年10月10日木曜日

ラズパイ17

NAS(物置)を考えた時、転送速度は速い方が便利なのは当たり前。今までルータの簡易NAS機能を使っていたが、我が家のルータASUS RT-AC1200hpはCPU1コアとショボいのでUSBNAS機能は3MB/s程度の速度。それでも役には立つので古いHDD 80GBを繋いで使っていた。でも、ラズパイのSamba共有なら100Mbps有線LANでも10MB/sは出るはずだ。

現在、起動MicroSD内をsamba共有は手動設定している。簡単に設定変更出来るGUIツールは無いのか?と検索し、「Webmin」が見つかった。ブラウザでGUIにアクセスしてSamba設定だけじゃなく、OS基本機能の設定が可能なGUIツールらしいので、今後のためにもWebminを入れる事にした。

【Webminインストール】
以下URLの「webminの設定」を行う。これでapt-get出来るようになるらいし。依存関係があるので、こっちの方がトータルで楽だと思う。
https://qiita.com/sigma7641/items/995c7bb07eab408b9d0e

まず、ファイラーで/etc/aptに行って「現在のフォルダで端末を開く」。そしてsouces.listを編集し、最終行に「deb https://download.webmin.com/download/repository sarge contrib」を追加する。私はいつも通りnanoで編集した。
sudo nano sources.list

上書き保存が終わったら、次のステップ。何も考えずに以下を順繰り実行。
sudo su -
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
exit
sudo apt-get install apt-transport-https
sudo apt-get update
ここまではエラー無し。

次に「sudo apt-get install webmin」をしたら依存関係が解消できず、apt --fix-broken installしてみたら?って出たので、実行してみた。
sudo apt --fix-broken install

その上でwebminを再度インストール。
sudo apt-get install webmin

無事完了したようなので、他PCからラズパイのポート10000にアクセス。
https://192.168.1.xx:10000/

Firefoxで危険(証明書が無いから)だと言われるかもしれんが突き進むw。そして、ラズパイの管理者アカウントで入ると無事webmin画面が見れた。

【Samba共有までのWebmin設定】
Webmin設定ならラズパイ情報に拘る必要はない。何となく雰囲気は分かった。
http://server-ubuntu.blogspot.com/2007/11/webmin.html

とりあえず、画面を日本語化、Webminユーザーの設定、Webmin権限範囲設定してから使いましょう。あとは、USBHDDを「システム」-「ディスクとネットワーク・ファイルシステム」でUSB接続しているHDDを「使用中ですか?」をクリックし、一度アンマウントします。それから、新たにマウント設定し、その時には起動時にマウントするようにします。その他オプションはルートパーテーションの設定を参考にしましょう。
あとは「サーバ」-「Samba Windows ファイル共有」で共有設定を追加します。
以下、少々癖があったが、Webminで出来る事はWebminでやる事にした。以下、設定手順です。

1.USBHDD接続とGParted
USBHDDを接続し認識されたら、GPartedを使ってUSBHDDを再度領域確保する。その際に、WebminではexFATが選択メニューに無いので、NTFSにした。まぁWindowsに接続して直接ファイル読み書きする上でも都合が良いでしょう。なお、ラベルは「250g」とした。ラベルを付けないとディスクマウント時にUUID名になったりするので、ラベルを付けましょう。

2.UUIDを調べる
一応再起動する。USBHDDが無事マウントされたら、HDDのUUIDを調べる。
sudo blkid

/dev/sda1: LABEL="250G" UUID="14301AC6094957ED" TYPE="ntfs" PTTYPE="dos" PARTUUID="c2834ef2-01"

3.USBHDDの恒久的マウント
Webmin-「システム」-「ディスクおよびネットワーク・ファイルシステム」の画面で/media/pi/250gをクリックしアンマウントする。(今は自動マウントされているため、一度マウント解除する)
そして種類を「Windows File System(NTFS)」で「マウントを追加」ボタンを押す。
「マウントの作成」で、マウントディレクトリに「\media\pi\250g」、Windows NT Filesystemは「ほかのデバイス」とし「UUID=14301AC6094957ED」と入力し「作成」ボタンを押す。(UUIDで指定するのかPARTUUIDで指定するのか、USBHDDのパーテーションの切り方でも変わってくると思う。)
これで恒久的にマウントされることになるハズ。

4.Samba共有
Webmin-「サーバ」-「Samba Windows ファイル共有」の画面で「新規のファイル共有を作成」する。
「共有名」は「250g」、「共有するディレクトリ」は「/media/pi/250g/public」で保存します。
そして「ファイルの許可」で「強制Unixユーザー」に「pi」を入力して保存します。(ここでpiとしたのはラズパイ標準のrootユーザーですが、これは環境により、そのユーザーにすれば良い。)

これで他PCから無事にSamba共有が見えるようになった。もし、HDDのマウントを恒久的にしないとか手順が面倒だというのなら、1~3の手順はスルーしても大丈夫とは思うが、この方が接続は安定すると思われる。

【結局直接編集】
Webminで簡単にうまくいくなら良いのだが、どうも癖があるし、再起動後にUSBHDDが自動マウントされなかった。なので、一度Webminでの設定を削除してから、fstabやsmb.confを直接編集した。直接編集にあたっては、マウントディレクトリが/media/pi以下はOS自動マウント名・HDDラベル名と被るのでやめ、/media以下にユニークなディレクトリ名(下記の例:suzyusbhdd)を指定しマウントする事にした。

sudo blkid
/dev/sda1: LABEL="250G" UUID="14301AC6094957ED" TYPE="ntfs" PTTYPE="dos" PARTUUID="c2834ef2-01"

sudo nano/etc/fstab
# USBHDDをマウント
PARTUUID=c2834ef2-01 /media/suzyusbhdd ntfs defaults,nofail 0 0

sudo nano /etc/samba/smb.conf
[suzyusbhdd]
comment = suzyhdd
path = /media/suzyusbhdd/Public
public = yes
guest ok = yes
read only = no
browsable = no
force user = pi

外付けHDDはUUIDで指定したいけど再起動後自動マウントに失敗した。対処療法?ですが、PARTUUIDで指定したら成功した。
ちなみに、起動時にHDD認識が間に合ってないじゃないかという可能性もあったので、sudo nano /boot/cmdline.txtにrootdelay=5を入れてみたが、やはりUUIDでの指定はダメだった。

何となく釈然としないけど、再起動を何度繰り返しても大丈夫なので、このまま使う事にした。

2019年10月9日水曜日

ラズパイ16

前回、育てたラズパイ環境が吹っ飛んだ話をした。我が家に残っているのはMicroSD32GBのラズパイ初期環境だけ。なので、Win32 Disk Imagerのzip版をダウンロードして、バックアップをimg化し、それをMicroSDに書き込んで環境再構築の第一歩とする事にした。(SD Card Copierは何故か領域確保でコケがち。コピー先がSDXCだからかな?)

Win32 Disk Imagerでのラズパイ環境バックアップだが、boot領域がD、ext4領域がE(ただしフォーマットされてないと出てた)があるが、どちらのDeviceを選んでも大丈夫そうだったし、Eドライブ側でOKだった。20分くらいかかった。
なお、「Read Only Allocated Partitions」にチェックして、使用領域しか読み込まない設定をONにしてバックアップを作ることも可能だが、MicroSDの先頭の空白4MBがどうなるか分かりませんし、それが原因で起動しないこともあるかもしれない。そこまでの検証は時間の都合で出来ませんでした。

そして、imgから手持ちMicroSDの64GB,128GBにコピーしてみた。なお、書き込みMicroSDは、フォーマットされていようがいまいが関係ないのだが、古いラズパイが入っているとドライブ指定が微妙なので、安全のため古いパーテーションを一度削除してから行った。なるべく余計なUSB接続HDDなどが無い方が、ミスが起こりずらいはずなので、その点に注意です。

ラズパイ用にしているMicroSDは32GB,64GB,128GBと3枚あるが、32GBは最大20MB/s程度、,64GBは最大23MB/s程度、128GBは最大50MB/s程度というWin32 Disk Imagerバックアップ時の読み書き速度だった。随分差があるとは思ったけど、以前動かしてたMicroSD64GBにコピーして起動するように出来たので、一応MicroSD自体は無事だったようだ。この読み書き速度は、バックアップ作成・復元時の時間に直結するので、ラズパイだからMicroSD速度なんてどうでも良いと考えるのではなく、そこそこ高速なMicroSD(USB2.0理論値が出る)を使った方が良いだろう。(ただし、Win10デカノートのSDカードスロットがUSB2.0で50MB/sなんて速度はちょっと信じられない。)

さて、ここまでやって気付いた。Win32 Disk Imagerでバックアップすると、MicroSDと同じ容量のimgファイルが出来上がってしまう。実使用領域16GB未満のものが64GBや128GBのバックアップファイルになるのは辛い。対処療法ですが、MicroSD32GB環境は、実働環境で得たものをフィードバックして、常用ソフトウェアを反映させバックアップするためだけの環境として保存する事にした。(一応、領域をシュリンクして起動するのか?試したけど失敗した。時間が勿体ないので終了。)

このように、バックアップ環境は、SoftEther+ブリッジ追加、それからWebmin導入までとすることにした。

2019年10月4日金曜日

ラズパイ15

ラズパイの機能追加テストをしていた。
・AdGuard Homeの追加
・SoftEtherのブリッジ追加(Samba対策)
・Samba共有(Webmin導入)とUSBHDD接続
・rfriendsの導入(ラジコ録音)

ここまで出来たので、環境をバックアップしようと思ったのだが、バックアップに失敗した。それどころか動いていたMicroSD環境まで起動不能になった。ついでに、USBHDDを接続した状態で環境バックアップしたら、バックアップ用MicroSDもUSBHDDも中途半端に環境コピーされてしまったいた。ナンダコレ。というワケで、本当の初期バックアップ、SoftEther環境バックアップのみが残る状況となってしまった。(ようは、上の4つが機能追加テストが反映されてないw)

環境再構築にあたり、まず今動く環境をコピーしなければならないが、SD Card Copierがうまく動かない。各種アップデートをしてみてもダメだったので、前々からやろうと思っていたWindows環境でMicroSDをコピーする以下手法を使う。なお、rpi-cloneも気になるが、それは今後考える。どちらにしろ、安定して動く事が大切ですよね。

https://qiita.com/henjiganai/items/fac178aef2a03ffe83fc

環境復旧には優先順位がある。VPNとSamba共有とrfriendsは必須だろう。AdGuard Homeはスマホ・PC側でも広告ブロックするので必須ではないし、ルータでDNS設定出来なければ環境ごとにDNS設定も必要となるわけで、取り敢えず後回しかな。

まぁ、何にせよ、環境コピーから始めましょうかね。とか思いつつも、ラズパイ4の国内販売が始まるようなので、どうせならBusterで環境作った方が良いのかもと思ったり思わなかったりw