2022年1月29日土曜日

Raspberry Pi 4 の Ubuntu Server バックアップ、リストア (dd, PiShrink)

Raspberry Pi 4 にインストールしている Ubuntu Server をバックアップして、別の microSD カードにリストアする手順。
Ubuntu PC 上で、dd コマンドでバックアップ、PiShrink でイメージの縮小化、dd コマンドでリストア します。

1. バックアップ

まず、Raspberry Pi 4 から microSD カードを抜いて、Ubuntu PC に挿入して、dd コマンドでバックアップ。
自動マウントされる場合は、unmount してから作業。

# dd if=/dev/mmcblk0 of=/home/raspi.img status=progress

2. イメージサイズの縮小化

PiShrink を使用。
https://github.com/Drewsif/PiShrink

# wget wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
# chmod 755 pishrink.sh
# ./pishrink.sh /home/raspi.img
pishrink.sh v0.1.2
pishrink.sh: Gathering data ...
pishrink.sh: Checking filesystem ...
writable: Inode 2809 extent tree (at level 1) could be shorter.  IGNORED.
writable: Inode 28025 extent tree (at level 1) could be shorter.  IGNORED.
writable: Inode 40963 extent tree (at level 1) could be shorter.  IGNORED.
writable: 203145/926640 files (0.2% non-contiguous), 2164496/3823739 blocks
resize2fs 1.45.5 (07-Jan-2020)
pishrink.sh: Shrinking filesystem ...
resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/loop16 to 2346988 (4k) blocks.
Begin pass 2 (max = 909346)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 117)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 26342)
Updating inode references     XXXXXXXXXXXXXXXXXXXXXXXX^HXXXXXXXXXXXXXXXX
The filesystem on /dev/loop16 is now 2346988 (4k) blocks long.

pishrink.sh: Shrinking image ...
pishrink.sh: Shrunk raspi.img from 15G to 9.3G ...

3. リストア

microSD カードを入れ替えて、リストア。

# dd if=/home/raspi.img of=/dev/mmcblk0 status=progress

● raspberry pi, ubuntu server, バックアップ, backup, リストア, restore, PiShrink, pishrink.sh, 縮小化, shrink

2022年1月4日火曜日

Ubuntu 20.04 Server で、timezone を日本時間に変更する

Raspberry pi に Ubuntu 20.04 Server をインストールした場合、timezone の設定が UTC になっています。
日本時間に変更する方法。

現在の設定を確認。

$ timedatectl
               Local time: 火 2022-01-04 01:04:39 UTC
           Universal time: 火 2022-01-04 01:04:39 UTC
                 RTC time: n/a
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

日本時間に変更 (即時反映)。

$ sudo timedatectl  set-timezone Asia/Tokyo

設定の確認。

$ timedatectl
               Local time: 火 2022-01-04 10:05:14 JST
           Universal time: 火 2022-01-04 01:05:14 UTC
                 RTC time: n/a
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

● Ubuntu, 20.04, server, timezone, タイムゾーン, 日本, 変更, JST, JST-9, Tokyo, Asia, date, timedatectl

2022年1月3日月曜日

raspberry pi 4 で radiko を録音してローカル RSS でスマホに Podcast として同期する

JUNK 爆笑問題カーボーイ の Podcast 配信サービスが終わったので、代替手段のメモ。
raspberry pi 4 で、radiko (タイムフリー、2022/01/03 現在無償) を録音して、ローカル RSS でスマホに配信するようにしました。

1. radiko を録音するために rec_radiko_ts をインストール

rec_radiko_ts に必要なパッケージをインストール

# apt install curl ffmpeg libxml2

rec_radiko_ts を git clone

$ git clone https://github.com/uru2/rec_radiko_ts
$ cd rec_radiko_ts
$ sudo cp rec_radiko_ts.sh /usr/local/bin/
$ sudo chmod 755 /usr/local/bin/rec_radiko_ts.sh

2. rec_radiko_ts.sh の動作確認

2021/12/29 01:00-03:00 の放送をタイムフリーで録音する場合の例。
radiko プレミアムに入っている場合は、-m "mail address" -p "password" オプションを追加すると良い。
-s オプションで放送局 ID を指定。うちは福岡なので、RKB です。
放送局 ID は、下記サイトを参照。
https://www.norikistudio.com/station-id-list

$ /usr/local/bin/rec_radiko_ts.sh -s RKB -f 202112290100 -d 120 -o 20211229-JUNK_bakusho.m4a

3. HTTP サーバは、lighttpd をインストール

HTTP サーバは何でもいいんですが、とりあえず、lighttpd を選択。

# apt install lighttpd

4. RSS の設定

RSS は、下記サイトから、makepodcast.rb を使わせてもらいました。
指定ディレクトリ内のmp3ファイルから必要最低限のPodcast用RSSを生成する
lighttpd の document root である /var/www/html/radiko/ に保存。
あと、ruby をインストール。

# apt install ruby

5. 自動ダウンロード設定、RSS フィード更新 (cron)

JUNK 爆笑問題カーボーイ は、毎週火曜日 25:00-27:00 (水曜日 1:00-3:00) の放送なので、
毎週水曜日の 4:00 に録音。5:00 に RSS フィードを更新するように cron を設定。
ちなみに、raspberry pi 4 の IP は、192.168.10.100 固定になってます。
将来的には、古いファイルを自動で消すようにするかな。

# crontab -e
(下記を追加)
00 04 * * 3 /usr/local/bin/rec_radiko_ts.sh -s RKB -f "`date +\%Y\%m\%d`0100" -d 120 -o "/var/www/html/radiko/`date +\%Y\%m\%d`-JUNK_bakusho.m4a"
30 05 * * 3 (cd /var/www/html/radiko/ ; ./makepodcast.rb JUNK_bakusho http://192.168.10.100/radiko/ ./ >| ./JUNK_bakusho.rss)

6. スマホの Podcast アプリに RSS を登録する。

スマホの Podcast アプリに RSS を登録すれば、あとは自動で同期できます (アプリの方は適当に設定してください)。

http://192.168.10.100/radiko/JUNK_bakusho.rss

■ 注意

録音したデータをインターネットで配信とかしたら著作権法違反になるので、個人利用の範囲で楽しみましょう。

● raspberry pi 4, radiko, 録音, タイムフリー, RSS, Podcast, ポッドキャスト, ローカル