なんか急に思い立って、家にあったRaspberry Pi 2 Model B+ を取り出し(古い)、なんか使えないかなーと思ってセットアップしてみた。
というのも、Raspberry Pi 4の発表を見て、スペックを見て、えっメモリ4GBもあるんか…(普通にワーカーとか、ちょっとしたアプリ動かすのに使いたい)となったので、やる気が急に出てきたという話です。技適も通ったという話が最近ではありましたしね。
技適の検索はこれ。
なお、僕がやりたかったのはバッチサーバーみたいなのを立てておこうっていうモチベーションだったので、まだLチカもクリアしていません! 残念!(そのうちやります)
雑多なメモ
やったこと
Ubuntu Mate のダウンロード
とりあえずとっととつかいたかったので、Ubuntu系のディストリビューションを探したらUbuntu Mateがあるという情報に至ったので、調べる。
Mac Raspberry Pi Ubuntu Mate
とかでググりつつ、下記の記事とかを見た。
- MacでRaspberryPi入門 - Qiita
- Raspberry Pi 3にUbuntu MATE をインストール - Qiita
- RaspberryPi 3 で Ubuntu Server をうごかす(個人用メモ) - Qiita
- Raspberry PiにUbuntu MATEをインストール + リモート接続 - Qiita
ちょこちょこ自分のニーズに合わない部分もあったので、記憶を頼りにやったことを書く。
事前の買い物
色々機材が足りませんでした。特にMicro SDが切れていたのが痛い。ついでにSDカードをUSB経由で読み込めるようなやつを買った。(64GBのMicro SDがわずか1000円ちょっとであることに衝撃を覚えている(多分一番最初に買ったSDカード(Microではない)は、256MBとかだったと思う。。。))
キングストン microSDカード Class 10 64GB UHS-I 【Nintendo Switch 動作確認済】 アダプタ付 Canvas Select SDCS/64GB
- 出版社/メーカー: キングストンテクノロジー
- 発売日: 2018/03/12
- メディア: Personal Computers
- この商品を含むブログを見る
- 出版社/メーカー: トランセンド・ジャパン
- メディア: Personal Computers
- この商品を含むブログを見る
HDMLとかマウスとかキーボードは予備があったのでそれを使った。ディスプレイは実は下記の小さいやつを持っていたので、ログ眺めればいいときはそれでログを眺めていた(最初だけ普段遣いの24インチのディスプレイで作業していた)(本音を言うと、3万円くらい出して薄型で建てれるようなやつを使うのが理想だと思う)
- 出版社/メーカー: Koolertron
- メディア: エレクトロニクス
- この商品を含むブログを見る
ってなわけで、やるぞ!って決めてから1週間位経ちました。幸いモチベーションが消えなかったのでよかったです。
OSを焼く
まずMicro SDをフォーマットします。
Macの場合はMicro SDを接続して、こんな感じのコマンド diskutil list
で調べて、SDカードを特定します。で、 diskutil unMountDisk /dev/disk2
とかで消します。なお、消すディスクを間違えると大変なことになるので慎重に作業しましょう。
次に、 Ubuntu Mateのサイトにいき、必要なOSをダウンロードします。今回は Raspberry Pi (recommended) にしました。(多分Raspberry Pi2に対応してるのがこれだけ)
それなりに容量が多いので(数G単位)、時間がかかります。
で、解凍して焼きます。 sudo dd if=ubuntu-mate-18.04.2-beta1-desktop-armhf+raspi-ext4.img of=/dev/disk2 bs=1m
てな感じで。(bsの値はもう少し大きくしたほうがいいと思った)
自分の環境だとホストのマシンがよわよわMBAであることもあり、ここまで2時間位かかった記憶です。
OSを起動する
普通のMicro SDを取り外して、Raspberry Piに刺しなおして、各種ケーブル類をつないで、最後に電源をつなぎます。
であとは普通のLinuxのセットアップみたいなことをします。(キーボード、言語の設定など)
OSのアップデートとか
Linux入れたら基本だと思ってる作業。これくっそ時間がかかった。
sudo apt update
sudo apt upgrade -y
なお、 sudo apt upgrade -y
はなんかエラーが出たので、下記を見て解決した。
他にはSSHの設定とか。これが一番参考になった。
日本語の入力周りはこれで良かった。
あとはPyenv入れたり、Rust入れたりして便利なコマンドラインツールとかを入れた。
だいたいここまで2日くらいかかった。
今やらせていること
SlackBotを定期発火させるだけのものをおいている。
それ以上のことはしてないので、もう少し活かせると良いなと思う。
が、今色々考えた結果、現在のSlackBotではそもそもこの機構自体いらないのでは? という感じになってきて渋い顔になりました。
辛いこと
メモリが少ないので、GUI使うのはやや無理げ。CUIにしたらaptとかするのも2、3倍速になったのでGUIがいかにメモリをとっているか実感した。
あとRustのツールのコンパイルがうまく行かない感じ。メモリ不足のためか、コンパイルでコケる。
幸い、ARMアーキテクチャ向けのバイナリを配信しているプロジェクトはそれを落としてきて、パスが通る場所に置けばいいため、問題にならないが、そうでないものは入れるのすら難しい状況。
個人的に bat
, exa
, rg
あたりは快適だと思っているのだが、このうち exa
が入らなくてやや辛い。
あと starship/starship: ☄🌌️ The cross-shell prompt for astronauts. を入れようとしたが、これもコケたので断念。うーん、これも試したいのだが。。。
なおRustのクロスコンパイルができるようなやつがあるらしいのだが、Dockerが必須で、今自分のPCでDocker立てるのが厳しいので、まずメインマシンを新調してから考えることにします。。。
これからやりたいこととか
実は今住んでいるところ、部屋の温度・湿度がとても激しく変化するので、まずはセンサーで図ってその結果をSlackなりLINEなりに通知するものを作りたいと思います。
それが済んだらエアコンの操作させたりしようかなあ…。あとはなんか小さいデータマート作るとかかなあとか思っています。
でもなんか本当にバッチ動かすだけなら、Lambda使って、DBはFirebaseなりなんなりでごまかすとかやればそもそもDBいらないので、色々もやもやしています。そのうちそっちに切り替えるかも。
なのでやっぱりセンサー組み合わせて面白いものを作りたいですね。