Raspberry Pi 4 で開発環境構築
念願のRaspberry Pi 4 Model Bの8GBメモリ版を買った。
ラズパイ4自体は2019年に発売されており、これまではメモリは 1GB / 2GB / 4GB から選択可能だった。
ラズパイ4のSoCはBroadcom 2711で、CPUはCortex-A72となっている。どうやらこのCPU、ARM社がかなり自信を持って世に送り出した製品らしく、明確に打倒インテルを打ち出しているようだ。Core Mプロセッサの対抗として設計された高性能コアらしい。
そしてそのラズパイ4に、なんとメモリ8GBを積んだものが出てきてしまった。もしかしたら開発者目線では下手なPCよりもよっぽどスペックが良いのでは?と思ったり思わなかったりする次第。
というわけでラズパイで開発環境を構築してみたので、その手順を残しておく。
https://gyazo.com/c45fccf3a1339ce8205b6990a1240a50
ハードウェアはこんな感じに仕上がった。無骨で見た目はいい感じだ。
ケースセットは Amazonのタイムセールで買ったもの (購入時 3,000円ほど) だが、電源やHDMIケーブル、マイクロSDカードなどの必要な周辺機器一式が付いているし、何よりもヒートシンクやファンが付属しているのがありがたい。とりあえずこれだけ買っとけば問題ない。 OSセットアップ
OSを何にするか悩んだが、Ubuntuにすることにした。Raspberry Pi OS (昔は Raspbian という名前だったけどいつの間にか名称が変わっていた) はまだ64bit版が正式リリースされていなかったが、Ubuntuは20.04 LTSの64bit版が出ていたのが決め手になった。
(2020/06/27現在)
SDカードの準備 - OSのフラッシュ
SDカードへのOSのフラッシュには、Raspberry Pi Imagerを利用した。
https://gyazo.com/ea83eb9626520ee12ed2972648f9dbbc
かつてはOSイメージの作成とSDカードへのフラッシュがそこそこ面倒だった記憶があるが、今はこんな便利なツールが用意されている。
目的のOSとSDカードを選択して、
https://gyazo.com/4c50f1ea81ee387605a339bbf74ab71d https://gyazo.com/1d99266f5fc5308297f21988c09aeee8
WRITEボタンを押して、あとは待っているだけ。
https://gyazo.com/0c62f4d418d5eb2aa5e5b16036b2038a
10分そこそこで完了。
https://gyazo.com/9634b7e321c4c5e82a38e23408905775
ところでラズパイに対応しているUbuntuはServer版のみであり、デスクトップ環境が必要な場合は別途構築の必要がある。今回はUbuntu MATEを選択したが、デスクトップ環境の構築については後述。
Boot & Initial Setup
SDカードの準備ができたら、SDカードをラズパイに指して電源を入れる。OSのブートに成功すると、ID / Passwordを聞かれるので、ID / Passwordどちらもubuntuと入力する。新しいパスワードの入力を求められるので、任意のパスワードを設定しておく。
code: command
$ login: ubuntu
$ current password: ubuntu
$ new password: {your new password}
$ retype password: {your new password}
Shellに入れたら、念のためパッケージを更新しておく。
code: command
$ sudo apt update
$ sudo apt upgrade
$ sudo reboot
Ubuntu MATE のデスクトップ環境をセットアップ
code: command
$ sudo apt install ubuntu-mate-desktop
巨大なパッケージがインストールされるのでかなり時間がかかる。通信速度にもよるが僕の環境では20分ほど待たされた。途中、gdm3かlightdmを選択する必要があるが、Ubnutu MATEはlightdmが標準とのこと。(これは何の設定なのか?)
インストール完了後に shell を再起動すれば、次は GUI が起動する。
パスワード入力画面で GUI を選択するメニューがあるので、忘れずに MATE を選択すること!
https://gyazo.com/aa3a8b34e1ec6803f4ac623efbafaf1d
https://gyazo.com/a5c21cc38dac54b81156e5d81833c6cb
こんな感じのデスクトップが起動すれば成功。
必要なツール群をインストール
Chromium Browser
通常のGoogle Chromeは64bit ARM向けにビルドされたものが見つからなかったので、とりあえず素のChromium Browserを使う。これはaptで入手できるからお手軽だ。
$ sudo add-apt-repository ppa:canonical-chromium-builds/stage
$ sudo apt update
$ sudo apt install chromium-browser
Nihongo
$ sudo apt install -y ibus-mozc
VS Code
Ubuntu向けのARM 64bit版のバイナリはMS公式のVS CodeのDLページでは配布されていなかったが、調べているとコミュニティビルド版が見つかった。ただ、MSが公式に配布しているものではないので、利用は自己責任で。
code: install vscode
sudo -s
$ code-ossで起動できる。
MacやWindowsでは$ codeで起動することが多いと思うのでエイリアスを作っておくと便利。
code: .bashrc
alias code='code-oss'
Look and Feelは他のOSのものと全く変わらない。
https://gyazo.com/5233a3815b1b78062d8709b65bd5c4ac
anyenv
基本的には他のOSと同じ要領でインストールできる。
.bashrcに下記を追加。
code: .bashrc
then
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
fi
$ source ~/.bashrc
$ anyenv install --init
$ anyenv install nodenv
$ anyenv install pyenv
$ ... (必要なRuntimeを。)
その他、必要なツール群
$ sudo apt install nautilus
$ sudo snap install docker
snapって初めて知った。
UbuntuではDockerのインストールは少し面倒だった記憶があるが、snapを使えばコマンド一発でインストールできた。すばらしい。
メモリ使用量の確認
OSブート直後にTerminalを起動してmeminfoを確認したものが下記。OSで1GB程度は使っていそう。
code: meminfo
ubuntu@ubuntu:~$ cat /proc/meminfo
MemTotal: 7998780 kB
MemFree: 6362440 kB
MemAvailable: 6919404 kB
続いて、とりあえず開発に必要なアプリケーションを立ち上げてメモリの消費量を確認してみる。
Chromiumを2垢分でそれぞれTabを3個ずつ、FireFox、VS Code、Terminal、これらを起動した状態でmeminfoを見ると、以下の結果に。
code: meminfo
ubuntu@ubuntu:~$ cat /proc/meminfo
MemTotal: 7998780 kB
MemFree: 3844584 kB
MemAvailable: 5325472 kB
なんと半分ほどしか使っていない。
/icons/hr.icon
感想
思った以上にサクサク動作してくれて、Surface Laptop 3のHyper-V上で構築したUbuntu MATEと比較すると比べ物にならないぐらい速いし、Amazon WorkspacesのPerformanceプランでセットアップしたAmazon Linux 2環境よりも速く感じる。
とりあえず僕が普段の開発で使っているツール群は動いたので、開発するとしてもそれほど不自由は無さそうだ。Android StudioやEclipse等のヘビー級の統合開発環境は試していないのでわからない。
何よりもこんな高性能なマシンが1万円前後で手に入っちゃうのがすごい世の中だね。もうちょっと子どもが大きくなったら買い与えて一緒に遊びたいなと思う。
で、開発環境を作ってみたものの、開発するには当然ながらMacやWin機の方が快適なので、ラズパイはLチカして遊ぶためのガジェットになっていくのです…ww
そしてLチカで遊ぶ場合はUbuntuではなくてRaspberry Pi OSの方がハードウェアのConfigurationがしやすいので圧倒的に便利というジレンマ。とは言えSDカードを差し替えるだけで簡単にOSの行き来ができるのがラズパイのいいところなので、要は適材適所なのだ。
せっかくなので、子どもにプログラミングの基礎を教えるためのLチカ + Scratch環境でも作ろうかな。電子部品やブレッドボードなど、大量に余ってるしな‥。
/icons/hr.icon
References
/icons/hr.icon