Raspberry Pi に CentOS Stream 9 をインストールしてみる
用意するもの
- Raspberry Pi (筆者は 4B を使いました)
- キーボード (入力に必要です)
- スクリーン (あると便利です)
- microSD (128 GB のものを使いました)
- microSD にイメージを焼く環境 (FreeBSD を使いました; Windows でもできます)
- xz を展開するツール (Windows なら 7-zip などが使えます)
- イメージを焼くツール (Windows なら Rufus などが使えます)
各種ツールの準備
Windows 向け
xz 形式で圧縮されたファイルを展開するために 7-zip というソフトウェアを利用します。 インストーラは https://www.7-zip.org/ から入手できるのでダウンロードし、インストールします[1]。
7-zip のインストーラをダウンロードする
また、ディスクイメージを microSD に焼くために Rufus というソフトウェアを利用します。 公式サイト (日本語) は https://rufus.ie/ja/ にあります。 筆者は窓の杜からダウンロードしてきました。
Rufus をダウンロードする
Unix な環境向け
ファイルを取得するために fetch
コマンドや wget
コマンドを利用し、ファイルの展開に xz
コマンドを利用します。 また、イメージを microSD に焼くために dd
コマンドを利用します。 インストールされていない場合はインストールしてください。 イメージを焼く作業には特権が必要な場合があります。 特権を得るために sudo
コマンドや doas
コマンド、あるいは su
コマンドが利用できることも確認してください。
イメージを用意して microSD に焼く
Windows 向け
microSD にイメージを焼く環境 (Windows) を使って下準備を行います。
Raspberry Pi 用の CentOS Stream 9 を用意する必要があります。 それは https://people.centos.org/pgreco/CentOS-Userland-9-stream-aarch64-RaspberryPI-Minimal-4/ から入手できます。 ファイル名が .raw.xz で終わっているものが目的のファイルです。 ダウンロードしましょう。
Raspberry Pi 用の CentOS Stream 9 をダウンロードする
ダウンロードされたファイルは xz で圧縮されているので展開する必要があります。 ダウンロードされたファイルを右クリックし、7-Zip → ここに展開 と選択します。
ファイルを展開する
最後に展開されたファイルを microSD に焼き込みます。
- Rufus を起動し、microSD のドライブを選択します。
- そして焼き込むファイルを選択します。
- 焼き込むファイルの拡張子は .raw なので 全てのファイル を選択できるようにします。
- そして目的のファイルを選択します。
あとは スタート ボタンを押下して完了を待つだけです。
Unix な環境向け
次のように実行します。 Linux な環境では fetch
コマンドを wget
コマンドなどで読み替えてください。 また、dd
コマンドの of
パラメータも目的の microSD のデバイスファイルに読み替えてください。 Mac OS を利用する場合は bs
パラメータの接尾辞は小文字にする必要があるかもしれません。 Linux では最後の sync
コマンドを確実に実行してください。
% fetch https://people.centos.org/pgreco/CentOS-Userland-9-stream-aarch64-RaspberryPI-Minimal-4/CentOS-Userland-9-stream-aarch64-RaspberryPI-Minimal-4-sda.raw.xz
% xz -d CentOS-Userland-9-stream-aarch64-RaspberryPI-Minimal-4-sda.raw.xz
# dd if=CentOS-Userland-9-stream-aarch64-RaspberryPI-Minimal-4-sda.raw of=/dev/da1 bs=1M conv=sync
# sync
# sync
# sync
microSD から Raspberry Pi を起動する
焼き込み作業の完了した microSD を Raspberry Pi に挿入します。 キーボードやスクリーンも Raspberry Pi に接続しておきましょう。 準備が整ったら Raspberry Pi に電源を供給します。 無事に CentOS Stream が起動するとログイン画面が表示されるはずです。
CentOS Stream 9
Kernel 5.15.59-v8.3.el9 on an arch64
localhost login:
ログインするために、ユーザ名 root、パスワード centos を利用します。 パスワード入力中は文字のエコーバックがないことに注意してください。 また、キーボード配列は英字配列として認識されていることにも注意してください。 無事にログインできるとシェルのプロンプトが表示されるはずです。
[root@localhost ~]#
ファイルシステムの拡張
初回起動の直後の状態では microSD の全ての領域を利用することができません。 試しに確認してみましょう。
# df -H
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.2M 0 4.2M 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 794M 19M 777M 3% /run
/dev/mmcblk0p3 2.4G 826M 1.6G 36% /
/dev/mmcblk0p1 300M 63M 237M 21% /boot
tmpfs 390M 0 390M 0% /run/user/0
#
確かに、公称容量 128 GB の microSD を利用しているにも関わらず / 全体のサイズは 2.4 GB であると表示されています。 これを解消するためにはファイルシステムを拡張する必要があります。 次のように実行すると拡張されます。
# rootfs-expand
しかし、筆者の環境ではうまくいきませんでした。 どうやらデバイスファイル名をうまく切り出せていないようです。
# rootfs-expand
/dev/mmcblk0p3 /dev/mmcblk0p 3
Extending pertition 3 to max size ...
FAILED: /dev/mmcblk0p: does not exist
Resizing ext4 Filesystem ...
resize2fs 1.46.5 (30-Dec-2021)
The filesystem is already 610304 (4k) blocks long. Nothing to do!
Done.
/dev/mmcblk0p3 2.3G 825M 1.4G 37% /
#
そのため、rootfs-expand
コマンドが実行している内容を手動で行います[2]。 次のように実行します。
# growpart /dev/mmcblk0 3
CHANGED: partition=3 start=1593344 old: size=4882432 end=6475776 new: ...
# resize2fs /dev/mmcblk0p3
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mmsblk0p3 is mounted on /: on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 15
The filesystem on /dev/mmcblk0p3 is now ... blocks long.
#
ファイルシステムの拡張を行ったあとは再起動してください。
# reboot
再起動した後に再度 df -H
コマンドを実行し、ファイルシステムが拡張されていることを確認します。
# df -H
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.2M 0 4.2M 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 794M 19M 777M 3% /run
/dev/mmcblk0p3 126G 865M 125G 1% /
/dev/mmcblk0p1 300M 63M 237M 21% /boot
tmpfs 390M 0 390M 0% /run/user/0
#
パッケージの更新
インストール済みのパッケージを更新します。 ネットワーク環境が必要です。
# dnf upgrade -y
インストール作業の完了
インストール作業はこれで完了です。 お好みに応じてキー配列を日本語配列にしたり、表示言語を日本語にしたりできますが、これらの作業はこの記事の範疇の外です。
おわりに
おわりです。
参考
- @yahi65. 【素人の備考録】Raspberry Pi 4 8GにCentOS 8をインストール、Docker-Composeを用いWordpressを構築した. Qiita. 2021-01-02. (accessed 2022-10-08).
-
日本語のミラーが https://sevenzip.osdn.jp/ にあるはずなのですが、生気を感じられません。 ↩︎
-
rootfs-expand
コマンドはシェルスクリプトで実装されています。 興味のある人はcat `command -v rootfs-extend` | less
のように実行してみましょう。 ↩︎
Discussion