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)