メインコンテンツへスキップ
見出し画像

Raspberry Piの環境構築2(用途別)

    概要

     前記事ではRasberry Piでの最低限の設定を説明しました。

     今回は「用途に応じた環境構築を紹介」していきます。自分が利用したいものを追加する時に参考としてご利用ください。

    1.参考:Linuxコマンド

     参考用に使用するLinuxコマンドを参考用として記載します。

    1-1.Linuxコマンド

    1. sudo:「SuperUser DO」の略で、特定のコマンドをシステム管理者(rootユーザー)として実行するためのコマンドです。sudoを使用することで、一時的に高い権限を持つrootユーザーとしてコマンドを実行できます。

    2. apt:「Advanced Package Tool」の略で、DebianベースのLinuxディストリビューション(例: Ubuntu, Raspberry Pi OS)でソフトウェアパッケージを管理するためのツールです。aptを使用することで、ソフトウェアのインストール、アップデート、削除などの操作を行うことができます。また、apt-cacheコマンドを使用して、利用可能なパッケージの情報を検索することもできます。

    3. update:aptのサブコマンドの一つでソフトウェアのリポジトリから最新のパッケージ情報を取得して、ローカルのパッケージデータベースを更新

    4. apt-get:DebianベースのLinuxディストリビューション(例: Ubuntu)で使用されるパッケージ管理ツールです。これを使用してソフトウェアのインストール、アップデート、削除などを行います。

      • install:ソフトウェアをインストール

    5. cd:"change directory"の略。ターミナル上の作業場所を移動する

      • ~:ホームディレクトリを示す。”cd ~”で立ち上げ時のdirに移動

    6. mkdir:”make directory”の略。新しいフォルダを作成

      • -p:指定したディレクトリが無い場合は作成する。また必要な親ディレクトリも合わせて作成

    7. wget:インターネットからファイルをダウンロード

      • -O:DLしたファイルの保存先と名前を指定

    8. bash:シェルスクリプトを実行するコマンド

      • -b:バッチモードでインストール+確認プロンプトを表示しない。つまりインストールが自動的に進行します。

      • -u:既存のインストールを更新。つまり既にMinicondaがあるなら、そのインストールを最新のバージョンに更新する。

      • -p:インストール先のディレクトリを指定

    9. rm:"remove"の略で、ファイルやディレクトリを削除するコマンド

      • -r(--recursive):ディレクトリとその内容を再帰的に削除する。ディレクトリを削除する場合はこのオプションが必要

      • -f(--force):エラーメッセージ、警告や確認を表示せずに強制的にファイルやディレクトリを削除

    10. python3:コマンドラインからPython 3.xバージョンのインタプリタを起動するコマンド

      • -c:直後に渡される文字列をPythonコードとして実行する。よって、ファイルを作成せず一時的なスクリプトを実行可能

    11. tar:ファイルやディレクトリをアーカイブ化、またはアーカイブを展開するためのコマンド(zipみたいに圧縮・展開する)

      • -x:展開

      • -z:gzipで圧縮されたアーカイブを処理

      • -v:詳細モードで動作->処理されているファイルのリストが表示

      • -f:アーカイブファイル名を指定

      • -C:展開先のディレクトリを指定->ホームディレクトリに展開

    12. patch:ソースコードにパッチを適用するためのコマンド

      • -p1:パッチファイルのディレクトリ構造をどの程度削除するかを指定->1レベルのディレクトリ構造が削除されます。

      • -i:入力として使用するパッチファイルを指定

    13. lsb_release:Linux Standard Base (LSB) に関する情報を表示するコマンドであり、-aオプションですべての情報を表示

    14. shutdown:コンピューターの電源をオフ/再起動するためのコマンド

      • -rオプション:再起動

    1-2.Rasberry Pi用コマンド

    • vcgencmd:Raspberry Piのハードウェア関連の情報や設定を取得・変更するためのコマンド

    1-3.コマンド使用例

     実際のコマンド使用例は下記の通りです。

    • sudo apt update:インストール可能なソフトウェアのパッケージのリストを最新の状態に更新

    • sudo apt upgrade:インストールされているソフトウェアを最新のバージョンに更新

    • sudo shutdown -h now:今すぐシャットダウン(電源OFF)

    • shutdown -r now:今すぐ再起動を実施する

    • sudo apt-get install git-core:管理者権限でパッケージ管理ツール(apt-get)を使用してgit-coreをインストール

    2.IDE追加:Visual Studio Code

     Rasberry PiはデフォルトのIDEとして「Thonny Python IDE」があります。ただし、使い慣れてるIDEの方が良いため私はVS Codeをインストールします。設定は下記記事と同じためインストール方法だけ紹介します。

    2-1.VS Codeのインストール

     インストール方法は公式からファイルをDLしてコマンド「sudo apt install ./<ファイルパス>」を実行する方法もありますが、楽な方法として下記コードを実行します。

    [IN]
    sudo apt update
    sudo apt install code -y
    画像

     実行完了するとプログラミングの場所に”Visual Studio Code”が選択できるようになります。

    画像

    2-2.詳細設定

     既に「Visual Studio Codeの環境構築(Python)」で環境構築済みでありGitHubと連携しているなら"設定の同期"で同じ拡張機能を追加できます。

    画像

    3.パッケージ管理システム

     本Rasberry Pi OS環境では既にPython環境(Ver.3.9)は存在しております。

    画像

     ただ仮想環境や管理も考慮してパッケージ管理システムを追加していきます。参考までにパッケージ管理ツールの種類は下記記事ご参考ください。

    3-1.ソフトの選定

     有名なディストリビューションとしてAnacondaがありますが、他にも下記があります。

    • Anaconda:PythonとRのディストリビューションであり、数百の科学的パッケージとツールが含まれています。使いやすい反面、たくさんパッケージが含まれるため容量が大きくなります。

    • Miniconda:Anacondaの計量版でありcondaとPythonだけを含みます。必要なパッケージは手動でインストールする必要があります。

    • Miniforge:PythonとCondaの最小限のインストーラでconda-forgeをデフォルトのチャンネルとして使用している。ARMアーキテクチャやApple Siliconなどの特定のプラットフォームでの利用が容易であるが、一部のパッケージが利用できない場合がある。

      • condaだと”TensorFlow, Kerasなど”はインストールできないらしい

    • berryconda:berrycondaはRaspberry Pi向けのcondaベースのディストリビューションであり、ARMアーキテクチャのRaspberry Piで動作するように特別に作られてる。2017年に開発中止※参考までに32bitでも可らしい

     Rasberry PiはARMアーキテクチャであるため通常のLinux向けだと動作しません。今回はエラーが無く保守もされている「Miniforge」を追加します。

    画像
    https://fabcross.jp/news/2022/20220204_raspberrypi_os.html

     3-1-1.参考:Minicondaでのエラー

     結論は「Rasberry Pi4にminicondaを入れるのは難しい」です。エラーは異なりますが他の方も同様に対応できておりませんでした。

     公式Docsを参照(シェルスクリプトはARM用に修正)してMinicondaのインストールを試みましたがbashでsh実行(3行目)するとエラーが発生しました。

    [Terminal]
    mkdir -p ~/miniconda3
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -O ~/miniconda3/miniconda.sh
    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
    rm -rf ~/miniconda3/miniconda.sh

    【エラー1:Rasberry Pi OSが32bitの時】
     Rasberry Pi OSが32bitの場合は下記のようなエラーが発生します。基本的には64bit Ver.を選択した方が良いためOS選択を間違った場合は再インストールが必要です。

    [OUT]
    PREFIX=/home/kiyo/miniconda3
    Unpacking payload ...
    /home/kiyo/miniconda3/miniconda.sh: 行 353: /home/kiyo/miniconda3/conda.exe: そのようなファイルやディレクトリはありません
    画像

    【エラー2:Rasberry Pi OSが64bitの時】
      
    エラーメッセージに”Illegal instruction”とありCPUアーキテクチャでサポートされていない可能性があります。
     推定としてRasberry Pi4のSpec.は”Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoCz”に対して、MinicondaはARM V7用しか提供しておらず互換性がないと推測されます。

    [OUT]
    PREFIX=/home/kiyo/miniconda3
    Unpacking payload ...
    /home/kiyo/miniconda3/miniconda.sh: 359 行:  8657 Illegal instruction     "$CONDA_EXEC" constructor --prefix "$PREFIX" --extract-conda-pkgs
    画像

    【後始末:DLしたフォルダを削除】
     エラーが出て処理できないファイルを残しておいても意味がないため、後処理として作成したフォルダは全て削除しておきます。

    [Terminal]
    rm -rf ~/miniconda3
    画像

     3-1-2.参考:その他の仮想環境

     conda環境以外でも仮想環境を作成できます。本作業が手間の方は別手法をお試しください。venvはpython標準ライブラリのためすぐに実行可能です。

    3-2.Miniforgeのインストール

     Rasberry Pi4に合わせてMiniforgeを追加します。資料は下記参照しました。

     3-2-1.OSのビット数確認

      公式Docsより64bit-OSを使用せよ(32bitは駄目)と記載があります。

    画像
    https://github.com/conda-forge/miniforge

     "getconf LONG_BIT"でRasberry PiのOSが64bitであることを確認します。

    [Terminal]
    getconf LONG_BIT
    
    [OUT]
    64

    【参考:Rasberry Pi OSが32bitの場合】
     32bitでは後工程で下図エラーが出るためOSの再インストールが必要です。

    画像

     3-2-2.コマンド実行

     方法は下記コマンドを実行してMiniforgeをインストールします。処理内容は下記の通りです。

    1. wgetコマンドを使用して”Miniforge3-Linux-aarch64.sh”をダウンロード

      • Raspberry Pi 4はARMアーキテクチャを使用しているためaarchを選択

    2. bashコマンドでDLしたシェルスクリプトを実行

    3. 画面の流れに従ってEnterと”yes”入力で設定していく。

    [Terminal]
    wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh"
    bash Miniforge3-Linux-aarch64.sh
    画像

     ”Thank you for installing Miniforge3”と出ればインストール成功です。conda使用にはターミナルの再起動が必要です。

    【参考:インストール後にエラー】
     インストールは成功し"/home/<username>/miniforge3"が存在してもcondaコマンド実行後に”コマンドが見つかりません”というエラーが出ることがあります。原因としてMiniforgeのインストールパスをシェルの環境変数PATHに追加されていない可能性があるため、下記で手動追加します。

    export PATH="/home/kiyo/miniforge3/bin:$PATH"

    3-3.condaの動作確認

     condaが動作するか確認します。ターミナルを再起動後に適当なcondaコマンドを入力して動作するか確認しました。下記問題なく動作しています。

    [Terminal]
    conda info -e
    画像

    3-4.参考:仮想環境の出入りの方法

     Miniforgeを実装するとターミナル立上時の作業環境は自動で仮想環境の(base)になります。下図のようにターミナルの頭で状態を確認できます。仮想環境の切り替えは下記の通りです。

    • conda activate <仮想環境名>:仮想環境を実行

    • conda deactivate:仮想環境を終了してローカル環境に戻る

    画像
    ローカル環境
    画像
    仮想環境(base)

     ポイントとしてPython環境は「Rasberry Piデフォルト」と「Miniforgeのbaseの環境」は異なります。参考例としてローカル環境と仮想環境(base)でnumpyインポートを実行しましたが結果は異なりました。原因は仮想環境は負デフォルトでNumpyライブラリがインストールされていないためです。

    [Terminal]
    python3 -c "import numpy"
    conda activate
    python3 -c "import numpy"
    画像

     参考までに他のcondaコマンドは下記にも記載しております。

    4.WebIOPI(GPIOをリモート制御)

     ラズパイでは電源制御(ハード制御)をGPIOピンで制御することができます。通常ではラズパイ上で動作させてますが、WebIOPIを使用すれば別のPCからGPIOを操作することが可能になります。

    4-1.Toolkitのダウンロード/展開

    【GUIで実行】
     「The Raspberry Pi Internet of Things Toolkit」のDownloadページから「WebIOPi-0.7.1.tar.gz」をクリックして「home/pi」に展開します。

    画像

     「フォルダを開く」を選択するとDownloadフォルダが開きます。

    画像

     「指定先にファイルを展開」で展開先を「/home/pi/」に変更して展開します。展開後はPiフォルダ直下に「WebIOPi-0.7.1」フォルダが作成されていることを確認します。

    画像

    【CLIで実行】
     上記で実行したことをCLIで実行しました。1行目で”WebIOPi-0.7.1.tar.gz”がインストールされ、2行目でtarファイルが展開され”WebIOPi-0.7.1”フォルダが作成されました。

    [Terminal]
    wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
    tar xvzf WebIOPi-0.7.1.tar.gz
    画像
    画像

    4-2.パッチファイルの追加

     先ほど展開した「WebIOPi-0.7.1」を修正するためのファイル(パッチファイル)を追加します。資料は下記を参照しました。

     基本的にターミナルを開いてGitHub通りに実行すれば問題ございません。全体の流れは下記の通りですが①、②は前節で実行済みのため③以降を実行していきます。

    1. WebIOPiのダウンロード

    2. アーカイブの展開

    3. 作業ディレクトリを”WebIOPi-0.7.1”に変更

    4. パッチファイルのダウンロード

    5. パッチの適用

    6. セットアップスクリプトの実行

    [IN]
    cd WebIOPi-0.7.1
    wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
    patch -p1 -i webiopi-pi2bplus.patch
    sudo ./setup.sh
    画像

    4-3.WebIOPIの起動

     WebIOPIの起動はGithub通りの手順で実施できます。

    [IN]
    cd /etc/systemd/system/
    sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service
    sudo systemctl start webiopi
    sudo systemctl enable webiopi
    画像

     上記後に接続は可能ですが、接続状態を別途確認するためには下記コマンドを実行してActiveを確認します。

    [IN]
    sudo systemctl status webiopi
    
    [OUT]
    左:起動時、右:停止時
    画像

    4-4.WebIOPIへの接続

     次に別PCのブラウザを開いて下記URLを入力するとログイン画面が出るのでユーザー名、パスワード(デフォルト値は下図参照)を入力します。

    [ブラウザ]
    http:<ラズパイのIPアドレス>:8000
    画像

     接続が成功すると「WebIOPi Main Menu」が出るため「GPIO Header」を選択するとWebIOPIの画面が出ます。「IN」↔「OUT」をクリックで切り替えできれば成功となります。

    画像

    4-5.WebIOPIの停止

     WebIOPIの停止は下記の通りです。

    [IN]
    sudo systemctl stop webiopi

    5.ソフトウェアの追加

     自分が使用したいソフトをインストールします。

    5-1.Vim(テキストエディタ)

     VimはLinux向けのテキストエディタです。Vimはキーボードで様々な編集操作ができる反面、使うために覚えることが多いため初心者には不向きです。
     インストール・確認コマンドは下記の通りです。

    [Terminal ※インストール]
    sudo apt-get install vim
    
    [Terminal ※Version確認]
    vim --version
    画像

    5-2.Git(バージョン管理ツール)

     バージョン管理ツールのGitを追加するコマンドは下記の通りです。

    [Terminal ※インストール]
    sudo apt-get install git-core
    
    [Terminal ※Version確認]
    git --version
    画像

    5-3.Docker

     下記記事はWindows環境下でDocker構築する記事です。よってWSL2+Ubuntuインストール以降の処理をすればインストール可能だと思います。

    6.Linuxコマンドパッケージ追加

    6-1.Zip:圧縮ファイル

     Linuxではzipの圧縮形式は使用されませんが、Windowsなどでは使用するためLinuxでもzipファイルを作成できるコマンドを追加します。

    [Terminal]
    sudo apt-get install zip unzip

     実際の使用方法は下記の通りです。"-r"は指定したディレクトリの下に含まれる全ファイルをまとめて圧縮するためのオプションです。

    [Terminal]
    zip -r <圧縮ファイル名> <圧縮したいファイルのパス>

     Zipの中身を確認する場合はzipinfoコマンドを使用します(unzipと同時にインストールされます)。

    [Terminal]
    zipinfo <zipファイルパス>

     zipファイルを展開する場合はunzipコマンドを使用します。

    [Terminal]
    unzip <zipファイルパス>

    6-2.aptitude:パッケージ管理

     APT(Advanced Packaging Tool)系コマンドでは"apt-get"が良く利用されますが、APT系の高機能版にaptitudeというコマンドがありますのでそちらもインストールします。

    [Terminal]
    sudo apt-get install aptitude

    7.OpenCVの環境構築

     OpenCVをRasberry Piで使用するための環境構築は非常に長いため別記事にしました。

    8.アプリ関係

    8-1.Apps管理ソフト:Pi-Apps

     Zoom等のアプリを管理するソフトとして「Pi-Apps」を追加します。
    ※Enumeratorのような動きをするため動作が遅いです。頻度高く使用するアプリはローカルでインストールした方が良いと思います。

     ホームディレクトリ("~")で下記コマンドを実行するとDesktopにPi-Appsが作成されました。

    [Terminal]
    git clone https://github.com/Botspot/pi-apps
    ~/pi-apps/install
    画像

     参考としてZoomをインストールしてみます。「アクセサリ/Pi-Apps」を選択するとウィンドウが開きます。"All Apps"を選択し、"Zoom"をクリックするとインストールボタンが出るため、ボタンをクリックします。

    画像
    画像

     ダウンロードが進行し完了後にアクセサリからZoomが選択できます。

    画像
    画像

    【アンインストール】
     アンインストールはホームディレクトリ("~")にpi-appsが存在することを確認して下記を実行します。
     完了後でも~にpi-appsのディレクトリは残ります。なお、pi-appsを削除してもディスクの空き容量(df-h)は変化ありませんでした。

    [Terminal]
    ~/pi-apps/uninstall
    画像


    参考資料

    あとがき

     適宜追加予定

    • 2022年:初版発行

    • 2023年10月28日:OpenCVの環境構築を差し替え

    • 2023年10月29日:Pi-Appsの追加

     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ