1.初期設定:
1.1.初期イメージ作成:
以下からPiImagerをダウンロードし、PCにインストール
https://www.raspberrypi.com/software/
PiImagerで、以下を設定しmicrosdカードに書き込む
・RASPBERRY PI ZERO 2 W,RASPBERRY PI OS(64-BIT),SDカードストレージを選択し、
・カスタマイズ設定で編集を選択し、
・一般タブで、ホスト名、ユーザ名、WIFI設定、ロケール設定を設定し
・サービスでSSHを有効にし、パスワード認証を使うを選択
イメージを書き込んだSDカードをraspberrypizero2wに刺して、raspberrypizero2wのマイクロUSBに通電。
・PCのコマンドプロンプトから、さっき設定したユーザ名とホスト名を使って"ssh [ユーザ名]@[ホスト名]"で接続。パスワードで接続。
sudo apt update
sudo apt full-upgrade
sudo rpi-update
sudo reboot
PCから"ssh [ユーザ名]@[ホスト名]"で接続。
sudo raspi-config を実行し、3 Interface Option から I2CとSPIを有効にしてリブート。
1.2.dockerインストール
http://docker.jp/PDF/docker-getting-started-guide-for-linux.pdf
と、
https://www.cqpub.co.jp/interface/download/2025/2/IF2502T2%E3%83%AA%E3%82%B9%E3%83%88.zip
のS3_list.txtを見ながら実施。
PCから"ssh [ユーザ名]@[ホスト名]"で接続。
curl -fsSL https://get.docker.com/ | sh
sudo usermod -aG docker $USER
exit でいったんログオフし、もう一度PCから"ssh [ユーザ名]@[ホスト名]"で接続。
id でdockerグループに所属を確認。
インストール結果確認。以下コマンドで「Hello from Docker!」が表示されることを確認。
docker run hello-world
メモリが少なくてchromiumもfirefoxも起動できないのであまり意味がないかもしれないけど、VNCサーバを起動するとするなら、
sudo raspi-config を実行し、3 Interface Option から VNCを有効にする。
そのほか、ssh接続にパスワードじゃなくて鍵を使うとすると、キーペアを作って公開キーをraspberry pi側に、秘密鍵をPC側に置いておく
キー作成
ssh-keygen -f keypair
公開鍵登録
umask 0077
mkdir ~/.ssh
cat keypair.pub >> ~/.ssh/authorized_keys
umask 0022
rm keypair.pub
PCから、"sftp [ユーザ名]@[ホスト名]"で接続。
以下のsftpコマンドで秘密鍵を取得
get keypair
rm keypair
exit
getした秘密鍵(keypair)をPCの%USERPROFILE%\.sshフォルダ(無ければ作る)にファイル移動。
%USERPROFILE%\.ssh\config ファイルに以下を追記
===
Host [raspberrypizero2wのホスト名]
HostName [raspberrypizero2wのホスト名]
User [raspberrypizero2wの接続ユーザー名]
IdentityFile "[%USERPROFILE%を展開したフォルダ名]\.ssh\keypair"
===
インタフェース2月号によると、コンテナからGPIOなどを使うには、
1.ホスト側でGPIOを使っているユーザのID、グループIDを合わせる必要があることと
2.コンテナの/devをホスト側の/devにアクセスできるようにマウントする必要があることと
3.サービスの権限をつける必要がある
ようです。
1.は、Dockerfileで、イメージを作る時にイメージ側にgroupadd,useradd,をして、
ホスト側のpiユーザである、ユーザID:1000,グループID:1000を設定して、
USER命令で実行ユーザをUID,GIDが共に1000のユーザで起動するようにすること
2.は、compose.ymlで、services:(サービス名):の下のvolumes:で配列の一つに/dev:/devを指定すること
3.は、compose.ymlで、services:(サービス名):の下でprivileged: true を指定する必要があることです。
確かに、これをやってP.37のリスト3のDockerfile(ただしADDの行を除く)とリスト4のcompose.ymlを作成し、
[touch .env_file-develop]した後、docker compose up -d を実行して、
docker exec -it [コンテナハッシュ] /bin/bash
で入ると、プロンプトでログインユーザ名がrootではなくDockerfileでUSERで指定したユーザとなっていて、
pip install gpiozero
pip install Rpi
pip install lgpio
pip install pigpio
をやった後、以下のpythonスクリプトを実行したらGPIO18に接続したLEDが点滅した
===
from gpiozero import LED
from time import sleep
led = LED(18)
while True:
led.on()
sleep(0.5)
led.off()
sleep(0.5)
===
追記:imageにPI OS Liteを使っても同じように設定できた。
PI OS はrunlevel 5 (X環境)で動いているけど、PI OS Liteはrunlevel 3 (CUIのマルチユーザーモード)で動いているので、
Liteの方が消費リソースが少なくていい感じかも。
2025年2月2日日曜日
raspberry pi zero 2wの初期設定メモ
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿