16
14

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 3 years have passed since last update.

WindowsでNervesやるならWSL2+Docker+VSCode

Last updated at Posted at 2020-06-09

Windows 10 + WSL2 + Docker + VSCodeで、Nerves開発環境をサクッと作れるdevcontainerを作りました。

変更履歴

Date Author ChangeLog
2020/7/11 @matsujirushi id_rsaのリンク作成コマンドを訂正

devcontainerとは?

その名のとおり、開発(development)に使うDockerコンテナ(container)です。
VSCode拡張のRemote - Containersがこのフォルダ(ファイル?)を開くと、定義されたDockerコンテナを構築して良い感じにフォルダをマウント、VSCodeから操作することができるようになります。

Developing inside a Container

Nerves開発環境を作る

事前準備

  1. Windows 10 バージョン2004を用意(アップグレード?)する
  2. WSL2を有効にする
  3. Docker Desktopをインストールする

これでは良く分からないという方は、、、こちらをご参照くださいませ。

Nerves開発用devcontainerをクローン

適当なフォルダにgit cloneしてください。

git clone https://github.com/matsujirushi/nerves-devcontainer

VSCodeでdevcontainerを起動する

Remote Development拡張を入れたVSCodeのRemote-Container: Open Folder in Containerで、.devcontainerのあるフォルダを開いてください。

image.png

image.png

すると、、、Dockerコンテナの作成が始まって、、、

image.png

はいっ、完成。

image.png

メニューの表示 > ターミナルで、Dockerコンテナ内のシェルが表示できます。

/workspaces/nerves-devcontainer 配下が、git cloneしたところにマウントされているので、消えたら困るファイルはここに置くようにしましょう。

Nervesサンプルをビルド

(任意)キーの作成

Nervesのビルドにキーが必要です。無い場合は下記コマンドで作成してください。
~/.sshに作ると、、、Dockerコンテナと一緒に消えて無くなってしまうので、/workspaces/nerves-devcontainer/.sshにシンボリックリンクで対処します。

mkdir .ssh
ssh-keygen -t rsa -f .ssh/id_rsa
ln -s `pwd`/.ssh/id_rsa* ~/.ssh/

Nervesサンプルを作成、ビルド

こんな感じ。

mix nerves.new hello_nerves
cd hello_nerves
export MIX_TARGET=rpi3
mix deps.get
mix firmware

イメージファイルの書き込み

ビルド結果のイメージファイルをmicroSDなどにフラッシュするときは、Windowsのコマンドプロンプトでfwup.exeすればOK。

16
14
7

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
16
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?