🥧

Raspberry Pi に CentOS Stream 9 をインストールしてみる

2022/10/08に公開

用意するもの

  • 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 のインストーラをダウンロードする
7-zip のインストーラをダウンロードする

また、ディスクイメージを microSD に焼くために Rufus というソフトウェアを利用します。 公式サイト (日本語) は https://rufus.ie/ja/ にあります。 筆者は窓の杜からダウンロードしてきました。

Rufus をダウンロードする
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 をダウンロードする
Raspberry Pi 用の CentOS Stream 9 をダウンロードする

ダウンロードされたファイルは xz で圧縮されているので展開する必要があります。 ダウンロードされたファイルを右クリックし、7-Zipここに展開 と選択します。

ファイルを展開する
ファイルを展開する

最後に展開されたファイルを microSD に焼き込みます。

  1. Rufus を起動し、microSD のドライブを選択します。
  2. そして焼き込むファイルを選択します。
  3. 焼き込むファイルの拡張子は .raw なので 全てのファイル を選択できるようにします。
  4. そして目的のファイルを選択します。

あとは スタート ボタンを押下して完了を待つだけです。

Unix な環境向け

次のように実行します。 Linux な環境では fetch コマンドを wget コマンドなどで読み替えてください。 また、dd コマンドの of パラメータも目的の microSD のデバイスファイルに読み替えてください。 Mac OS を利用する場合は bs パラメータの接尾辞は小文字にする必要があるかもしれません。 Linux では最後の sync コマンドを確実に実行してください。

起動可能な microSD を作る
% 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

インストール作業の完了

インストール作業はこれで完了です。 お好みに応じてキー配列を日本語配列にしたり、表示言語を日本語にしたりできますが、これらの作業はこの記事の範疇の外です。

おわりに

おわりです。


参考

脚注
  1. 日本語のミラーが https://sevenzip.osdn.jp/ にあるはずなのですが、生気を感じられません。 ↩︎

  2. rootfs-expand コマンドはシェルスクリプトで実装されています。 興味のある人は cat `command -v rootfs-extend` | less のように実行してみましょう。 ↩︎

Discussion