dd-tools Raspberry Pi

Raspberry Pi財団には公式のイメージ書き込みツール(pi-imager)があります。とてもシンプル、高機能で使いやすいと思います。当サイトではカード作成時少しだけ修正を加えています。pi-imagerには遥かに及びませんが以前作成したdd-toolをベースにコマンドの勉強を含めてちまちま修正をしながら以来全てこれらのツールでカードを作成しています。
このツールを使う人はいないと思いますがネタ程度に現時点の記録をしておきたいと思います。(少しだけいいところもあります)

Raspberry Pi Imager

pi-imagerをインストールしてみました。 OSを選択、書き込むデバイスを選択してWRITEボタンを押して書き込むだけ。ネットワーク環境によっては時間がかかるのでよくインストール作業をする人はダウンロードしておくのがいいと思います。Use customメニューではimg,iso(圧縮ファイル)に対応しておりRasPiOSに限らず書き込みが可能ですね。

dd tools

メニュー、プログラムは~/bin/dd-toolにおきます。
最新のデバイス情報を更新のためRELOAD(プログラム再起動)するのでdevilspie2に登録、使いやすい位置に固定しています。

メニュー dd.py
devilspie2 applications.lua

dd Device Setup Tool

最初にプログラムを起動する(どれでもいい)とデフォルトのdevice.listを作成します。
デフォルトのdevice.listは起動ディスクのみリストボックスに非表示。

Setup ToolのテキストボックスはRELOADすることで現在のデバイスを更新
sda 起動ディスク(SSD)
sdb RasPiOS
sdc FAT32 disk

以下のファイルを作成 (chmod 755 ~/bin/dd-tool/device.sh)
~/bin/dd-tool/device.sh

#!/bin/sh
ls -l /dev/disk/by-uuid | sort | awk '{print $9}' > ~/bin/dd-tool/_device
sed -i '/^$/d' ~/bin/dd-tool/_device
sed -i "s/^/| grep -v /" ~/bin/dd-tool/_device
cat ~/bin/dd-tool/_device | tr "\n" " " > ~/bin/dd-tool/device.list
sed -i "s#^#ls -l /dev/disk/by-uuid #" ~/bin/dd-tool/device.list
sed -i "s/$/ | awk '{print \$11\}' | cut -c 7- | sort /" ~/bin/dd-tool/device.list
rm ~/bin/dd-tool/_device

sdb sdcを抜いてボタン(Device ALL)をクリック、device.shを実行してボタンは青(Device SET)に切り替え。
device.shは/dev/disk/by-uuidを読んでリストを作成、リストにあるuuidをdd-toolのリストボックスに表示しないようにします。青(Device SET)モードは常時接続しているデバイスなどをdevice.listに登録することで非表示、安全に作業することが出来ます。
現在の仕様では同じリリース媒体から焼いたディスクのuuidは同一になります。sdbは起動ディスク(desktop-20210304)と同じのためリストボックスにあがりません。再度2枚のカードを挿し込んでRELOAD sdcのみがリストボックスにあがります。

作業するカードをdevice.listに登録した場合はカードを抜いて再度Device SETをやり直します。device.listは保存され以降Deviceモードを変更しない限り青(Device SET)モードで起動します。

dd Command Tool


リストボックスからsdc1を選択、DEVICEボタンをクリック
IMG FILEボタンをクリック、ファイルダイアログからimgファイルを選択
dd commandは圧縮ファイルに対応していません


FLASHボタンクリックでddコマンド書式を作成
Yesでxtermからdd実行


書き込みが終了するとRELOAD
起動ディスクと同じuuidになるためリストボックスは非表示(Device SETモード)

dd Partition Expansion Tool

当サイトのディスク作成は取り敢えず必要な容量だけパーティションを作成しています。パーティションの縮小は難しいですが拡張は比較的簡単に実行することが出来ます。
RaspberryPi OSは初回起動時ディスク最大まで切り直します。
焼いたカードの/boot/cmdline.txtを編集してリサイズを止めます。
init=/usr/lib/raspi-config/init_resize.shを削除
手動でマウント $ sudo mount /dev/sd(x1) /mnt # sd(x1)は確認 編集が済んだら $ sudo umount /mnt

/boot/cmdline.txt
console=serial0,115200 console=tty1 root=PARTUUID=334dade7-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles


このままでは容量不足でパンクしてしまうので任意の値で拡張
通常はgpartedなどのツールを使うところですが作成したツールからサクッと実行
モードは作業マシンと同じリリースなので赤(Device ALL)
DEVICEを選択、ラジオボタンで容量を選択
RESIZEボタンをクリック、OKで実行


ターミナルが開いてe2fsck resize2fsを実行
OKで完了
Setup TollはRELOADで確認

MKPARTボタンは未割り当て部分に新たにパーティションを作成(任意)

dd SD-Copy Tool

上記の例では32GBのカードでsd(x2)を7GiBに拡張しました。bootと合わせても8GBのカードで間に合います。RasPiOS-liteの特定の目的などでは3GBで足りる場合も多いと思います。

ddはディスクイメージそのままブロック単位でコピーします。
パーティション情報はディスクの先頭附近にあるのでこのまま32GBのカードから8GBのカードへddしてもディスクの領域が無くなったところでエラーは出ますが8GBのカードは動くはずです。


8GB(sdc)はFAT32でフォーマット
if(read)とof(write)のディスクを間違えないようにします
ラジオボタンP2を選択、COUNTボタンをクリックするとP1+P2の容量を計算、bs=1Mとしてカウント数を表示
FLASHボタンクリックでコマンド作成、カウント数は+10にしています
Yesで実行開始
書き込み後はfsckをしておきます(fsck -y /dev/sdx)
fsckボタンのあるツールでデバイスを選択してbootとrootfsそれぞれ実行


ddしたカードをmobilepi3で起動確認
バックアップ、コピーが必要なときは必要十分なパーティションサイズにしておくことでカードサイズをそれほど気にせずまたコピーの時間を短縮することが出来ます。
未割り当てにしておくことで拡張も簡単です。

dd Label Edit Tool

稼働中は直接ボリュームラベルを目にすることは少ないのですが一時的に保管する際など識別が容易になります。FAT32のラベル付けはmtoolsを利用しています。

# apt install mtools


FAT32 11文字
ext4  16文字


起動OSと同じuuidのディスクはpcmanfmからも見えてきません。確認する際は手動でマウントします。
デバイスを選択、mountボタンで/mediaにマウントrangerが起動(プログラムで変更可)ranger終了(q)でマウント解除
同様にデバイス選択してfdiskなど起動

mobilepi3


mobilepi3ではudiskieでオートマウントしていたのですが起動を止め(.xsession) pcmanfm(LXDE)の設定でマウントします。

参考

内容は無保証です。デバイス名やuuidの最低限の理解が必要です。
(実行権限 chmod 755 program.name)一部文字化けは全角空白
device.sh
dd-copy.py
dd-device.py
dd-label.py
dd-resize.py
dd-tool.py

Raspberry Pi 4B SSD USB Boot

前回はRaspberry Pi OS(32-bit) 2021-03-04版を新規インストールしたのでそのカードを基にSSDに書き込んでUSB Bootにしました。 ベータ版(64-bit)2021-03-04もリリースされていますがRaspberry Pi 400の絡みもあってか正式な公開はまだ先になるかなと思われます?(2020-08-20版ではupdate && upgradeを重ねていくといろいろ問題があった)

SATA – USB3.0変換アダプタ

USB Bootとして使用できるアダプタはかなり限られてくるようで比較的安価に入手できるアダプタとしてはASM1153Eチップのものが良さそうです。

Inateck(UA1003_black) UASP対応 rakuten 1199円
チップセット:ASMedia ASM1153E
USBケーブルの長さ:30cm
ケーブルが少し長めの製品をチョイス

 


AmazonにあるASM1153Eチップのアダプタ
こちらも問題なく動作するようだがケーブルがちと短い

lsusb

$ lsusb | grep ASM1053E
Bus 002 Device 003: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge

uas対応

$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
    |__ Port 2: Dev 3, If 0, Class=Mass Storage, Driver=uas, 5000M

USB Bootが可能でもuas非対応の場合はusb-storageとして認識され本来のパフォーマンスは発揮できません

    |__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 5000M

SSD Storage(raspi-config)

SDカードでの動作は特に問題ないのでddでSSDにコピーをします。(SD Card Copierでいいと思う)

USB Bootは正式対応となっているのでraspi-configから設定するだけ
6 Advanced Options A6 Boot Order B2 USB Boot
shutdownしてSDカードを抜いて起動

 

SSDはKingston(120GB) KingSpec(120GB)で確認、どちらも問題なく動作しています。高速なストレージ同士でファイルを転送すると速さを体感できます。

 

Raspberry Pi OS March 4th 2021

chromium-browserのpulseaudio問題を取り敢えず解決するためにRaspberry Pi OS 20210304版をインストールしました。このリリースにはupdate前のchromium-browser 86.0.4240.197-rpt1が含まれています。

chromium-browser

update後に確認した時点では86.0.4240.197-rpt1は候補になかった?のですが今改めて見てみるとありますね。ダウングレードも可能と思います。

$ apt show chromium-browser -a
Package: chromium-browser
Version: 88.0.4324.187-rpt1
---
Package: chromium-browser
Version: 86.0.4240.197-rpt1

Raspberry Pi OS 20210304

 

インストールはRaspberry Pi OS with desktop

Update Softwareの項でSkipを選択して終了、再起動すると日本語化されます。

$ sudo apt-mark hold chromium-browser
$ sudo apt-get update && sudo apt-get upgrade


chromium-browserを保留にしてupdate && upgrade
aptではエラーが出たのでapt-getで実行


依存されるパッケージも保留になります。
解除はapt-mark unhold chromium-browser

86.0.4240.197-rpt1ではpulseaudio正常に再生
88.0.4324.187-rpt1はpulseaudioの仕様を満たしていないと考えています。取り敢えずは86.0.4240.197-rpt1で次期バージョンまで様子を見ようと思います。

 
 
 
 
 

moOde audio 7.1.0

http://moodeaudio.org/forum/showthread.php?tid=3612

moOde audio 7.1.0に移行しました。汎用カードで新機能の恩恵に与るかはわかりませんが整理を含めて新規インストールします。

 moOde audio 7.1.0

インストール手順はmoOde7.0.1時と同じです。 今回はvncサーバーに壁紙を設定、xdotoolをインストールしてみました。xdotoolは起動時pythonメニューを実行起動します。

# apt install feh xdotool

~/.vnc/xstartup

#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -cursor_name left_ptr
vncconfig nowin=1 &
date.sh &
~/.fehbg
xbindkeys &
uim-xim &
sleep 3
dwm &
xdotool mousemove 170 10 ; sleep 0.4 ; xdotool click 1
~/bin/system.py &
sleep 5
xterm -e htop &
sleep 1
xdotool mousemove 10 10 ; sleep 0.4 ; xdotool click 1
xterm -e ranger ~/ &
uim-toolbar-gtk &

~/.fehbg (chmod 755 .fehbg)

#!/bin/sh
feh --bg-scale '/home/pi/background.png'


画像はホームディレクトリにbackground.pngとして置いています。 デフォルトのモードではなにかアプリケーションを起動すると画面いっぱいに広げて隠れてしまいます。

 


1400×788 feh –bg-scaleでは画面に合わせてサイズを調整しますが縦横の比は合わせないと画像がおかしくなります。

 

OpenGLの有効にならないvncサーバー内でmoode player(chromium-browser)を実行するとどうしてもリソースの無駄使いになってしまいます。moode playerはクライアント側で実行することにしました。 通常はこんな感じで運用しています。

 


ラジオマネージャー 7.0.1からEXPORTを実行、追加登録した500番以降のラジオ局のデータベースを取り出しておきます。

 


画像ファイル、plsファイルは既に纏めているので手作業で所定の位置にコピー
7.1.0のデータベースに手作業で追記、IMPORT
今回はすんなり移行できました。

 

 

 

 

モバイル Raspberry Pi 3B Mobile BatteryとFan Control

ダイソーの10000mAhモバイルバッテリーを購入してみました。いまのところバッテリーで駆動しなければいけない場面はそう無いのですがローカルで作業中場所を替えたいときなど現状は一旦シャットダウンを実行しなければいけません。なんとか手軽にバッテリー駆動に切り替えることができれば作業効率も上がります。

ダイソー10000mAhモバイルバッテリー

バッテリーの電圧を計ると5.1V近く出力しています。本体脇のボタンを押すと残量確認LEDが点灯、USB端子には約30秒出力します。 電池も新しくまた昇圧回路も良くなっているせいかPi3に接続しても電圧降下が少なく稲妻マークが出現することはありません。

 

バッテリーをマジックテープで固定、USB出力端子側にスイッチを設けPi3のGPIO端子に給電

 

USB-Aは不用なケーブルから金具、モールドを除去、ピンヘッダを半田付け、L字に加工基板に取り付け

 

スイッチは2回路あり1回路はLED点灯用。バッテリーは少ない負荷では出力を停止しますが常時2.2V位チェック電圧が出ているため直にLEDを接続すると点滅を繰り返しています。

スイッチオンでLED点灯、バッテリーで起動を開始します。電源アダプターに切り替えるには本体側に給電、スイッチオン。バッテリー側スイッチオフ、LED消灯

 

電源アダプターからバッテリーに切り替えるには若干注意が必要になります。バッテリー側スイッチオンでLEDは点灯(Pi3から廻ってくる)しますが電源アダプターの電圧がバッテリー電圧よりも僅かに高いためバッテリー出力が自動でオンになりません。バッテリー残量チェックボタンを一度押してから本体側スイッチをオフにします。ひと手間増えてしまいますが時間は30秒位有るので慣れ次第といったところです。 バッテリーの駆動時間は計測していませんが数時間は行けると思います(かなりアバウト)

 

 

2021/03/22 追記
ダイソーバッテリーはチェックボタンが小さくLEDも背面になるため切り替え及び確認が面倒になるためトリガーボタンを追加。LED点灯確認でトリガーオン

バッテリースイッチをオフの状態でLEDを接続するとチェックモードに入ります。タクトスイッチでLEDオン(青)、動作を確実にするためブリーダー抵抗に15mA電流を流しています。30秒以内にバッテリースイッチオン、アダプター側オフでバッテリー駆動に切り替わります。


LEDは青のチップLEDを使っています。バッテリースイッチはオフでトリガーオンになります。バッテリー電圧がアダプタ電圧より高ければ特に気にせず切り替えが可能ですがその際アダプター使用時は稲妻マークが出る確率が高くなります。

 

Fan Control

Raspberry Piの設定にはFanの設定項目があります。ついでに暫定ですがFanコントロール

Fanを有効にしてGPIOと温度を設定
設定した値は/boot/config.txtの末尾に記載されています。 再起動して有効

 
[all]
dtoverlay=gpio-fan,gpiopin=27,temp=70000

再起動後確認 GPIOはBCMナンバーが使われます(BCM27 実ピン13) ModeがINからOUT 温度が設定値を超えるとVが0から1(High)に変わります。(設定値から10℃位下がるとLowになるようだ)

 

ファンが小さいこともあってトランジスタ1個で制御しましたがトランジスタ電流、ピン電流ともほぼ定格いっぱいになっていると思います。 もう少しちゃんとした回路にする必要があります。(取り敢えずはOK)

 

まだ修正すべき箇所はありますが取り敢えず基本のハードウェア環境が出来ました。
バッテリー駆動も可能になったところでMobaile Piとしてお洒落なカフェでも(恥ずかしくなければ)運用が可能になりました。当サイトではお洒落なカフェにいく機会もまた勇気も無いことから試していません。

 

 

 

Top