Skip to main content

Raspberry Pi 4 と Raspberry Pi Imager

今まで Raspberry Pi 3 Model B+ を使っていましたが、ようやく Raspberry Pi 4 Model B (4 GB RAM) を買いました。

電源が USB Type-C コネクタだったり、HDMI 出力が Type-D(HDMI Micro)だったり、ちまちまと 3 系と違うんですね。ケーブルの使いまわしができない……。

ちょうど数日前に 2 年ぶりの LTS である Ubuntu 20.04 がリリースされたニュースもありましたし、入れて遊ぼう…… と思ったものの、まだ Docker が 20.04 をサポートしていない みたいです。19.10 が出たときも Docker が追従するまでにちょっとラグがあったので、仕方ないですね。

Ubuntu 20.04 に 19.10 用の Docker を入れて動かす例もインタネットにはありますが、ちょっとお行儀よく使いたい要件があったので、20.04 自体をあきらめて 18.04 を入れました。

公式のダウンロードページが全部 20.04 に置き換わってしまったので、Raspberry Pi 向けの古いバージョンのバイナリは、cdimage.ubuntu.com から持ってきます。

Raspberry Pi Imager

全然知りませんでしたが、Raspberry Pi Imager というめっちゃ便利なのがリリースされていました。最初の SD カードづくりがこれだけで簡単にできるみたいです。

後者のブログで書かれている通り、最新の Server の LTS と最新の Core しか選べないので、今日時点だと Ubuntu Server はすでに 18.04 は選択肢になく、20.04 しか出てきません。

If you select this option, you will be able to choose from the latest LTS (Long Term Support) Ubuntu server images, or the latest Ubuntu Core images for either armhf or arm64 architectures. Canonical updates these images with every new LTS.

How to install Ubuntu with the new Raspberry Pi Imager
古いバージョンは出てこない

よって、古いバージョンの OS を導入したいときは、結局個別にイメージのダウンロードが必要になってしまうわけですが、とはいえ、これ以外にも機能はあり、

  • SD カードの FAT32 でのフォーマット
    • 64 GB 以上の SD カードでも問題なく使える
  • 任意のイメージの書き込み
    • 古いバージョンの OS を書き込みたいときに使える
  • Raspberry Pi の EEPROM のリカバリ
    • Raspberry Pi がお亡くなりになったとき用

が地味にうれしい実装です。64 GB 以上の SD カードだと、Windows では FAT32 でフォーマットするために地味に面倒な手間が発生していたので、助かります。

便利機能群

Ubuntu 18.04 の導入

イメージを書き込んで起動すれば普通に起動してくるので、あとはノリでどうにかなりますが、公式のチュートリアルもとても親切ですね、すごい。

で、適当に気合で構成したら、/etc/netplan/99-override.yaml あたりにファイルを作って設定を放り込んで、IP アドレスを固定します。家の Wi-Fi の SSID がステルスなので、StackExchange で投稿されている謎ハック を追加で突っ込んでいます。汚い。

network:
    version: 2
    ethernets:
        eth0:
            dhcp4: false
            addresses:
            - 10.96.1.239/24
    wifis:
        wlan0:
            access-points:
                "MY_STEALTH_SSID\"\n  scan_ssid=1\n  #":
                    password: MY_PASSWORD
            dhcp4: false
            addresses:
            - 192.168.0.239/24
            gateway4: 192.168.0.1
            nameservers:
                addresses:
                - 192.168.0.1

Docker と Docker Compose の導入

Docker を入れるには、淡々とガイドに従います。途中、リポジトリを追加するときの CPU アーキテクチャは arm64 です。

Docker Compose を入れるのも、淡々とガイドに従います。arm64 用のバイナリはないので、Alternative Install Options を参考に pip で入れました。入れる前にパッケージがいくつか足りないので足さないとダメでした。

$ sudo apt install -y python3 python3-pip
$ sudo apt install -y libffi-dev libssl-dev
$ sudo pip3 install docker-compose

というわけで、あとは遊ぶだけです。


MkDocs の見出しを Font Awesome で装飾する

Font Awesome のアイコンが見出しの頭にくっつくようにして、なんとなくかわいい感じにします。

説明用のライブデモページを作っていますので、詳しくはそちらで。

簡単にまとめると、

  • extra_css で Font Awesome の CSS ファイルを読ませて
  • カスタム CSS ファイルで ::before 疑似要素で Font Awesome の文字を流し込めばよい
  • Material テーマの場合は、いくつかの設定で !important でオーバライドする必要がある

という感じです。

mkdocs.yml で以下のようにして、

extra_css:
    - "https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
    - "css/custom.css"

そのうえで、例えば Material テーマの場合は、custom.css で以下のようにします。

.md-typeset h2::before {
    display: inline-block !important;
    font-family: "FontAwesome";
    content: "\f0a9" !important;
    margin-right: .3em;
}

説明用のページでは、Font Awesome の最新の 5.x 系を使う例も紹介しています。

あと地味に <a> タグも ::before でアイコンを付けています。かわいい。