Raspios をラズパイ4BにインストールしてDietPiインストールイメージを作成しDietPiインストールイメージファイルを作成してみます
手順については https://dietpi.com/docs/hardware/
の Make your own distribution というところで説明されています
x86_64 PC では手順通り特に問題もなく構築できます
ラズパイでは途中でエラーが数回発生しましたので、覚書として書いてみようと思います
1.準備
Raspberry Pi 4B
USB接続できるSSD
電源供給できるUSBハブ
LANケーブルでインターネットへ接続していますのでWIFI接続では試していません
インストール用イメージ作成PC( Linux amd64 )
2.Raspios buster arm64のダウンロード
https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2021-05-28/
からダウンロードしました
お好きな方法でSSDに書き込んでください
私は Raspberry Pi Imagerを使いました
3.Raspiosをブート
起動するとセットアップが始まります
Set Countryで Use English Languge にチェックをつけておくといいかもしれません
Update Software は実行しておきます
4.再起動後
sudo -i
bullseye にアップグレードするために、/etc/apt/sources.list に以下の上から4行を追加します
deb http://deb.debian.org/debian bullseye main contrib non-free
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
deb http://deb.debian.org/debian buster main contrib non-free
deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb http://deb.debian.org/debian buster-updates main contrib non-free
apt update
apt upgrade
メッセージが表示されますので y を入力します
途中でメッセージが表示されますので スペースキーを押して最後に q を入力します
アップグレード中にリブートしても良いか というメッセージが表示されるので yes か no お好きな方を選んでください
今回は再起動しませんでした
再起動して、cat /etc/os-release で確認してください
5.DietPi インストール環境の作成
うまくいくまで試行錯誤を繰り返したので、以下のようなスクリプトを作成しました
#!/bin/bash
apt update
apt install -y systemd-sysv ca-certificates sudo curl locales gnupg
curl -sSfL http://archive.raspberrypi.org/debian/raspberrypi.gpg.key -o raspberrypi.gpg.key
cp /etc/apt/sources.list.d/raspi.list .
apt-key add raspberrypi.gpg.key
apt update
curl -sSfL https://raw.githubusercontent.com/MichaIng/DietPi/master/PREP_SYSTEM_FOR_DIETPI.sh -o PREP_SYSTEM_FOR_DIETPI.sh
chmod +x PREP_SYSTEM_FOR_DIETPI.sh
./PREP_SYSTEM_FOR_DIETPI.sh
これを実行します
Enter キー を入力します
名前をローマ字入力します
Raspberry Pi OS Arm64 を入力します
Enterキーを入力します
矢印キーで選んで Enterキーを入力してください
私はWiFiを使わないので0にしました
Enterキーを入力してください
Enterキーを入力します
cat /etc/apt/sources.list.d/raspi.list で確認すると
deb https://archive.raspberrypi.org/debian/ bullseye main になっています
最初に保存したものが /root にありますので buster に戻します
cp /root/raspi.list /etc/apt/sources.list.d/
apt update
exit
Retry を選択してください
処理が継続されます
Enterキーを入力します
ls /lib/firmware/brcm/ で確認すると
ls: cannot access '/lib/firmware/brcm/': No such file or directory
なので mkdir /lib/firmware/brcm/ を入力します
exit
Enterキーを入力します
apt-get purge ".*:armhf" を実行します
exit を入力します
お好みで選んでください
私は WiFi を使わないので を選択しました
シャットダウンします shutdown -h now
ラズパイ本体の電源OFF
SSDを取り外します
6.インストールイメージの作成
この処理は amd64のLinux PCで行います
Linux を起動します
ターミナルで grep "^CONFIG_BLK_DEV_RAM=" /boot/config-$(uname -r) を実行します
CONFIG_BLK_DEV_RAM=m が表示されました
メモリ上にRAMディスクを作成します
/ 1GB ext4
/boot 512MB vfat
sudo -i
modprobe brd rd_nr=1 rd_size=$((10241024 + 5121024))
ls /dev/ram0 で ram0 ができているか確認
fdisk /dev/ram0
fdisk (util-linux 2.34) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
デバイスには認識可能なパーティション情報が含まれていません。
新しい DOS ディスクラベルを作成しました。識別子は 0x6fdaee84 です。
コマンド (m でヘルプ): p
ディスク /dev/ram0: 1.51 GiB, 1610612736 バイト, 3145728 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x6fdaee84
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (0 プライマリ, 0 拡張, 4 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (1-4, 既定値 1):
最初のセクタ (2048-3145727, 既定値 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3145727, 既定値 3145727): +512M
新しいパーティション 1 をタイプ Linux、サイズ 512 MiB で作成しました。
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (1 プライマリ, 0 拡張, 3 空き)
e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (2-4, 既定値 2):
最初のセクタ (1050624-3145727, 既定値 1050624):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-3145727, 既定値 3145727):
新しいパーティション 2 をタイプ Linux、サイズ 1023 MiB で作成しました。
コマンド (m でヘルプ): t
パーティション番号 (1,2, 既定値 2): 1
16 進数コード (L で利用可能なコードを一覧表示します): ef
パーティションのタイプを 'Linux' から 'EFI (FAT-12/16/32)' に変更しました。
コマンド (m でヘルプ): p
ディスク /dev/ram0: 1.51 GiB, 1610612736 バイト, 3145728 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x6fdaee84
デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/ram0p1 2048 1050623 1048576 512M ef EFI (FAT-12/16/32)
/dev/ram0p2 1050624 3145727 2095104 1023M 83 Linux
コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。
# fdisk 終了
パーティションが作成されましたのでフォーマットします
root@riku:~# mkfs.vfat /dev/ram0p1
mkfs.fat 4.1 (2017-01-24)
root@riku:~# mkfs.ext4 /dev/ram0p2
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 261888 4k blocks and 65536 inodes
Filesystem UUID: f3459272-e403-417e-aa9c-97d9d286a64c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
フォーマットができましたので blkid で調べます
root@riku:~# blkid /dev/ram0p1 /dev/ram0p2
/dev/ram0p1: UUID="54B9-6945" TYPE="vfat" PARTUUID="6fdaee84-01"
/dev/ram0p2: UUID="f3459272-e403-417e-aa9c-97d9d286a64c" TYPE="ext4" PARTUUID="6fdaee84-02"
ラズパイのSSDをPC接続します
私のPCでは /dev/sdh になりました
マウントポイントを作成します
mkdir /mnt-ram /mnt-ssd
SSD が自動でマウントされてしまっているので umount します
umount /dev/sdh?
mount /dev/sdh2 /mnt-ssd
mount /dev/sdh1 /mnt-ssd/boot
RAMディスクをマウントします
mount /dev/ram0p2 /mnt-ram
mkdir /mnt-ram/boot
mount /dev/ram0p1 /mnt-ram/boot
こんな感じです
/dev/ram0p2 1014680 2568 943352 1% /mnt-ram
/dev/sdh2 230445760 535564 220494600 1% /mnt-ssd
/dev/ram0p1 523248 4 523244 1% /mnt-ram/boot
/dev/sdh1 258095 32099 225996 13% /mnt-ssd/boot
SSDからRAMディスクへコピーします
cd /mnt-ssd
tar cf - . | ( cd /mnt-ram; tar xpvf - )
RAMディスクのPARTUUIDを設定します
/mnt-ram/boot/cmdline.txt の root=PARTUUID=6fdaee84-02 に変更
/mnt-ram/etc/fstab 最後の2行
PARTUUID=6fdaee84-02 / ext4 noatime,lazytime,rw 0 1
PARTUUID=6fdaee84-01 /boot vfat noatime,lazytime,rw 0 2
SSDとRAMディスクを umount します
umount /mnt-ssd/boot
umount /mnt-ssd/
umount /mnt-ram/boot
umount /mnt-ram/
RAMディスクの内容をファイルに保存します
dd if=/dev/ram0 of=DietPi-rpi.img bs=1M
これでインストール用イメージファイルの作成ができあがりました
イメージファイルをSSDに書き込んでブートできればDietPiのセットアップが始まります
RAMディスクの開放は modprobe -r brd です
シャットダウン、再起動でも開放されます