7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

#NervesJPAdvent Calendar 2023

Day 19

Arch LinuxでNervesをビルドすることを楽しむ

Last updated at Posted at 2023-12-17

Arch LinuxNervesのファームウエアを公式ソースコードからビルドしてみようと思います。

Elixir(えりくさ)言語

Elixirは耐障害性、高い並列性能で長年実績のあるErlangの上に実装されたプログラミング言語で、世界中のメッセージアプリ、チャットアプリ等でも使用されており、その性能に改めて注目が集まっていると聞きます。Elixirを使ってサーバーの費用を  $2 Million/年   節約できたという話もあります。

Nerves(なあぶす)フレームワーク

Nerves(なあぶす)という IoT フレームワークを使うと、Elixirの強力な性能をラズパイ等の手のひらサイズのコンピュータの上で活用し、堅牢な IoT システムの構築が比較的簡単にできてしまいます。すごいです!

Nerves について詳しくは@takasehideki さんの「Slideshare:Elixir で IoT!?ナウでヤングで cool な Nerves フレームワーク」がわかりやすいです。

Nervesにはいろんな概念や構成要素が含まれているので、「Nervesとはなにか」を考えるときに混乱することがあるかと思います。

nerves パッケージ

Nervesへの入り口であり、コアツールドキュメントNervesユーザーに提供。

Buildroot

Nervesが内部で使用する、クロスコンパイルで組み込み Linux システムを生成するためのツール。

Nervesがナイスな形で隠蔽してくれているので、通常はNervesユーザーが直接Buildrootを触ることはありません。

nerves_system_br  パッケージ

組み込み ErlangElixirLisp Flavored Erlang (LFE) プロジェクト用の開発プラットフォーム。Buildrootを使用してNervesを構築するための共通ロジックを提供します。通常は直接触ることは無いです。

nerves_system_xxx パッケージ

nerves_system_brパッケージによって提供される共通ロジックにNerves Targetデバイス専用の設定を加えてできたアダプターのようなもの。別の言葉でいうとNervesチームが提供してくれているおすすめの設定です。カスタマイズすることも可能です。

nerves_system_xxxxxxの部分はお手元のデバイスに対応するNerves Targetに読み替えてください。Nerves公式サポートのNerves Target以外にもコミュニティによって制作されたカスタムシステムも多数あります。

例として挙げると、Raspberry Pi 5に対応するNerves Targetrpi5になります。

環境

  • ホスト OS: Arch Linux x86_64
  • ホストマシン: MacBookAir6,2 1.0

やること

Arch Linuxのマシンが手元にあるという前提です。

asdf Erlang Elixir をインストール

もちろん他のLinuxディストリビューションでもできます!

比較的簡単にインストールできるので、Arch Linux以外をお使いの方もぜひとも挑戦してみてください。

万一、戸惑うことがあれば、お気軽にコミュニティに顔を出してみてください。みんなで助け合いながら楽しく一歩ずつ前へ進んでます。

Nerves をファームウエアを開発するのに最低限必要なパッケージをインストール

Nervesドキュメントに紹介されているインストール方法は、Arch Linux公式の pacman パッケージマネージャを使用していません。Arch User Repository (AUR) を利用するための非公式ヘルパーコマンド yayを使ってます。ひょっとしたらドキュメントを執筆当時は公式のArch リポジトリに存在しなかったパッケージがあったのかもしれません。

2023 年 12 月現在では pacman パッケージマネージャでインストールできるのでそれで行きます。

ホストマシンのターミナル
sudo pacman -S --needed \
  base-devel \
  ncurses \
  lxqt-openssh-askpass \
  git \
  squashfs-tools \
  curl

Nerves Systems Builder を利用するのに必要なパッケージをインストール

Nerves Systems Builderという Nerves コアチームが使っているツールが公開されています。

一つ問題は、Nerves コアチームが Debian 系 OS しか使っていないため、他の OS で必要なパッケージの検証はされていません。

Arch Linuxで使えるパッケージをひとつひとつ探していくしかありません。

nerves-system-pacman-deps-install 2023-09-27 12-57-19.png

結果、以下のパッケージで同じことをArch Linuxでもできることがわかりました。

ホストマシンのターミナル
sudo pacman -S --needed \
  base-devel \
  bc \
  cmake \
  cpio \
  curl \
  cvs \
  gawk \
  git \
  jq \
  mercurial \
  ncurses \
  lxqt-openssh-askpass \
  python \
  python-aiohttp \
  python-ijson \
  python-nose2 \
  python-pexpect \
  python-pip \
  python-requests \
  rsync \
  squashfs-tools \
  subversion \
  unzip \
  wget

Nerves Systems Builder をダウンロード

git clone git@github.com:nerves-project/nerves_systems.git
cd nerves_systems

Nerves Systems Builder の README に従う

あとは Nerves Systems Builder の README にある手順に従うだけで、比較的簡単にファームウエアをソースファイルからビルドできます。

比較的簡単とはいえ、まだNervesをやったことのない方が、いきなりファームウエアを公式ソースコードからビルドするというのは大変だと思います。

まずはNerves Livebookをお試しになればと思います。楽しいですよ。

Nerves Livebook

ビルド済みNerves Livebookファームウェアを使用すると、何も構築せずに実際のハードウェアで Nerves プロジェクトを試すことができます。 数分以内に、Raspberry PiBeagleBoneNerves を実行できるようになります。 Livebook でコードを実行し、ブラウザーで快適に Nerves チュートリアルを進めることができます。

有志の方々が Nerves Livebook のセットアップ方法ついてのビデオを制作してくださっています。ありがとうございます。

Nerves Livebook の中に ネットワーク関連のノートブックが含まれており、ブラウザ上で Wi-Fi の設定ができてしまいます。

さいごに

これでArch Linuxをお使いの方もElixirNervesを楽しめます。

toukon-qiita-macbook_20230912_091808.jpg

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?