Category: RaspberryPi

SDカードイメージを作成するテスト

背景 新しいバージョンを試したい。 調べてみると、 Build.Dist このツールを使うと自分でSDカードのイメージを作成できるらしい。 更に設定で自分好みのイメージが作れるらしい、凄い。 下記はエラーに対する試行錯誤、そのメモです。 ネットワークのトラブル、pingで疎通ができない。名前解決はできないのだがdigだと名前解決ができる。 名前解決にdnssecを利用するようになった。 /etc/resolv.conf の内容 nameserver 127.0.0.53 options edns0 trust-ad search . edns0: EDNS(Extension mechanisms for DNS)のバージョン0を使用することを示す。 EDNSは、DNSプロトコルを拡張し、より大きなペイロード、改善されたセキュリティ(DNSSEC)、その他の機能をサポート。 trust-ad: DNSSECのAuthenticated Data(AD)フラグを信頼することを示す。 これは、DNSSECにより検証された応答を信頼し、使用することを意味。 DNSSECはサーバ側の時刻を利用する。 ラズパイを長いこと起動していなかったためか、あるいはchronyd, ntpdをインストールして設定が変わったからか、DNSSECが動作しなくなった。 ラズパイの時刻がずれていたので強制的に時刻を合わせる。 dig time.google.com で、googleのNTPサーバのIPアドレスを確認し、nptpdateで合わせる。 $ sudo systemctl stop ntpd $ sudo ntpdate 216.239.35.4 今では systemd-timesyncd, chronydで時刻合わせを設定するようなので、知識をアップデートしたい。 scripts/binfmt.sh でエラーが出る 下記の箇所でエラーが出る。 qemuが必要。 if [ "${cpu}" != "arm" ] ; then if [[ ! -e /proc/sys/fs/binfmt_misc/arm ]]; then echo ":arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xf f\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:F" >> /proc/sys/fs/binfmt_misc/register fi fi 下記のコマンドでqemuをインストールした。 Read more...

Build.distのメモ

概要 RasberyPi用のGentooであるGenPi64というプロジェクトがある。 ただアップされているイメージが古い、様子。 新しいGentooを試したい。 GenPi64のイメージを作製するには GenPi64/Build.Dist: Build scripts for building GenPi64 images.を使う。 仕組みは非常に合理的というか良くできている、が、うまく動かなかったので仕組みを調べている。 これはそのメモ。 手順 事前準備 必要なパッケージ追加 sudo emerge --ask dev-python/lockfile dev-python/pychroot emerge dev-python/iniparse sudo QEMU_USER_TARGETS="aarch64 arm" QEMU_SOFTMMU_TARGETS="aarch64 arm" USE="static-libs" emerge --changed-use --ask --newuse --quiet app-emulation/qemu quick start https://github.com/GenPi64/Build.Dist/ を git pull し、ディレクトリに移動 sudo -s bash export PROJECT="GenPi64Systemd" . env.sh sh build.sh 仕組み sh build.sh を行った際の進み方 [build.sh)[https://github.com/GenPi64/Build.Dist/blob/559dd933b88a79d9bd5e1efa360b45c7a42ad31d/build.sh#L1] ここから始まる。 環境変数の設定を行ったり、ターゲット(OpenRC, systemdなど)に応じてディレクトリを作製し、プロジェクトごとに用意してあるjsonから動作する。 jsonはincludeと書かれた箇所があり、その場合、該当するjsonを読み込み、対象の作業が膨らんでいく。 このincludeの仕組みは美しいと思う。 GentooであればOpenRCであれ、systemdであれ共通化できる作業はある、それらのタスクは共通化できるように作られている。 また個々のタスクが完了したかチェックする仕組みもあり、成功したタスクについては行わず続きから再開する。 build.shのこの箇所からincludejsonが始まる includejson excecute(manifest)で実行しているようだ。 この辺で環境変数を読み込んでいる ただ実際のemergeの際にはchroot環境で実行されるので環境変数は引き継ぐ意図ではない。 emerge ヒアドキュメントで都度、スクリプトを生成し、実行している Read more...

RaspberryPiでUSBブートを試みる

背景 SD カードが壊れた。最近のラズパイは HDD ブートに対応しているので HDD ブートで Gentoo を起動した。 作業としては通常の RaspberrypiOS で起動、(新しいラズパイなら不要だと思うが私は必要だった)ファームウェアのアップデートを行い、 Genpi64 のイメージをダウンロード、HDD に書き出し、起動した。ハマるポイントは無く、意外とスムーズに起動した。 2021/09/28 RaspberryPi 4B で確認した。 Raspberry Pi 2B、3A+、3B、3B+の場合、手順は異なるかもしれない。 手順 ファームウェアが古い場合はアップデート HDD ブートはファームウェアが「2020-09-03」以降である必要がある。 参考 [SDカード不要? 「Raspberry Pi 4」をUSBブートさせる方法について https://gadgetrip.jp/2021/05/raspberry_pi4_usb_boot/ ラズパイ4を完全 USB Boot 化 コマンド 効果 vcgencmd bootloader_version 現在のブートローダーのバージョンを確認 rpi-eeprom-update アップデートがあるか確認 sudo rpi-eeprom-update -a アップデート ファームウェアのバージョンを確認するため rpi-imager をRaspberrypiOS のページからダウンロードして、SD カードに書き込み起動する。 ラズパイ4を完全 USB Boot 化を参考にさせていただきファームウェアのアップデートを行った。 Read more...

ラズパイ(GenPi64)とADRSZIRSゼロワンで簡単に赤外線を使う

ラズパイから赤外線リモコンで操作( はんだ付けなし たぶん電子工作した方が安いのですが手軽に赤外線で操作したい用途です。 ADRSZIRS ゼロワン 赤外線送信拡張基板 Amazonで3278円でした。 Githubにソースコードがあるので、そのまま使います。 これだけで動く。 赤外線コード読み取り ./3_2adrszIRS-sample.py r 書き込み ./3_2adrszIRS-sample.py w 5B0018002E001800 GenPi64だとpythonのライブラリ名が異なっていて修正が必要だった。 3rd/ADRSZIRS_IR_Sender/3_2adrszIRS-sample.py で smbus2 を smbus として使うような修正が必要。 更にpipをインストールして、smbusを追加する。 smbus2を入れる。 emerge dev-python/pip pip install --user smbus2 3rd/ADRSZIRS_IR_Sender/3_2adrszIRS-sample.py を修正。 --- a/3rd/ADRSZIRS_IR_Sender/3_2adrszIRS-sample.py +++ b/3rd/ADRSZIRS_IR_Sender/3_2adrszIRS-sample.py @@ -32,7 +32,8 @@ # from __future__ import print_function -import smbus +import smbus2 as smbus import time from time import sleep 実際に使う このパイソンのスクリプトをゴリゴリ修正する、という手もあると思う。 が、手早く色々な機器の操作したいので、bashで下記のようなものを書いた。 #!/bin/bash dir=$(cd $(dirname $0);pwd) # power POWER='5801A90019003F001800400018001400190014001800150018001500180014001800400017003F0019001400190040001700140019003F001800150018004000180014001900140018001500180015001800140019004000170015001800150018003F00190040001700400018003F00180040001800140018003F0019003F001800150018004F03' ${dir}/../RasPi-Zero-One-Series/3rd/ADRSZIRS_IR_Sender/3_2adrszIRS-sample.py w ${POWER} # 後は必要な機器の赤外線を読み込んで、追加していく Read more...

Gentoo ラズパイ関連

gentoo-on-rpi-64bit 初期セットアップ ココに書いてあるものをなぞった このページにラズパイで Gentoo を便利に稼働させる細かいノウハウがあるので一読した方が良い。これを作った sakaki- 氏すごい。 Gentoo 一般についてはGentoo Linux amd64 ハンドブック:Gentoo での作業にまとまっている。 条件 Linux マシン( Ubuntu 21.04 ) で行った。 解凍に zstd が必要 Xfce, LibreOffice, VLC, Kodi, GIMP などを含むデスクトップ環境を選択した(ライトイメージもある) ライトイメージの場合、解凍されたファイル名も異なるので読み替えが必要 手順 SD カードが刺さっているパスを確認する SD カードを Linux マシンに刺した上で /var/log/syslog を確認するか lsblk で確認する。 $ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223.6G 0 disk ├─sda1 8:1 0 300M 0 part /boot/efi └─sda2 8:2 0 223. Read more...

raspi64でソースからのコンパイルでエラーが出た場合

ソースからのインストールで「unrecognized command line option」というエラーが出る 現在のSoftetherのconfigureではARM 64bit向けの対応がされているので問題ないが、 以前はエラーが出ることがあった。その時のメモ。 ソースコードのconfigure側のアップデートが必要なので、 何か他のソフトウェアでも発生するかもしれないのでメモとして残す。 ラズパイでソースからコンパイルを行った際、下記のエラーが出た。 cc: error: unrecognized command line option ‘-m64’ -m64はインテル系64bitのオプションなので、ARMでは使えない。 対応としては、-m64の箇所を全て削除することで対応した。 emerge vim git git clone https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git cd SoftEtherVPN_Stable ./configure vi Makefile 参考 ARM系で -m64 というオプションは無い模様なので、./configure でできた Makefile から -m64 を削除する 64bit Linux で32bit ソースのビルドを行う方法を教えて下さい. 問題自体への理解が進みました。 [softeher] ARM系のCPUのSoC搭載SBCで、ソースからsofteherをビルド -m64を全て削除、という発想が助かりました。 Read more...

ラズパイでSoftEtherを用いてL2レイヤーをVPN接続する

背景 自宅に wifi 接続できない HDD レコーダーがあった。が、家庭内で LAN ケーブルは伸ばしたくない。 別にPXE ブートさせたい。かつ wifi で行いたいマシンがあった。 つまりWifi-イーサネットコンバーターが欲しい。 商品もありますが作ってみたかった。 ラズパイをイーサネットコンバーターにする場合、内部的に DHCP を建てる設定例があったが、 できれば同一ネットワークでコンバーターが透過的に動作するようなものが欲しかった。 手軽に使える SoftEther でレイヤー 2 カスケードする設定で接続した。 ネットワーク構成 SoftEther のクライアント、サーバー共にラズベリーパイをGenPi64でセットアップして利用。 ただ nmcli( NetworkManager の CLI ツール )が使えれば他構成でもセットアップできそう。 HDDレコーダー or PXEブートしたいマシン => SoftEtherクライアント => SoftEtherサーバー => Internet という形で外部に出れるようにする。 SoftEther サーバーではイーサネットインターフェースのみの運用とし、tap デバイスをブリッジする構成にした。 方針としては、基本的に使わない機能は off、必要に応じて有効にする。 仮想ハブ名: VpnHub1 ダイナミック DNS 機能、DDDS: Off VPN Azure クラウド: off IPsec/L2TP/L2TPv3 サーバー機能の設定: off OpenVPN/MS-SSTP サーバー機能設定: off SecurNAT 機能、DHCP サーバー機能は使わない。 カスケード接続は使う*(レイヤ 2 カスケード接続になる) SoftEther のサーバー/クライアント共に [ローカルブリッジ設定]=>[eth0] と物理インターフェースでブリッジを行う 環境 サーバー/クライアントともに共通 Read more...