1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspios buster arm64をRaspberry Pi 4B にインストールしてDietPiインストールイメージファイルを作成します

Last updated at Posted at 2021-09-11

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

  これを実行します

Screenshot at 2021-09-11 21-22-23.png

  Enter キー を入力します

Screenshot at 2021-09-11 21-25-17.png

  名前をローマ字入力します

Screenshot at 2021-09-11 21-29-50.png

  Raspberry Pi OS Arm64 を入力します

Screenshot at 2021-09-11 21-31-42.png

  Enterキーを入力します

Screenshot at 2021-09-11 21-33-08.png

  矢印キーで選んで Enterキーを入力してください
  私はWiFiを使わないので0にしました

Screenshot at 2021-09-11 21-36-56.png

  Enterキーを入力してください

Screenshot at 2021-09-11 21-40-05.png
  Open subshell を選んでください
  

Screenshot at 2021-09-11 21-43-47.png
  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

Screenshot at 2021-09-11 21-50-48.png

  Retry を選択してください
  処理が継続されます

Screenshot at 2021-09-11 21-59-09.png
  Open subshell を選んでください

Screenshot at 2021-09-11 22-00-57.png
  Enterキーを入力します
  ls /lib/firmware/brcm/ で確認すると
  ls: cannot access '/lib/firmware/brcm/': No such file or directory
  なので mkdir /lib/firmware/brcm/ を入力します
  exit

Screenshot at 2021-09-11 22-05-47.png
  Retry を選択してください
  処理が継続されます

Screenshot at 2021-09-11 22-08-18.png
  Open subshell を選んでください

Screenshot at 2021-09-11 22-09-27.png
  Enterキーを入力します
   apt-get purge ".*:armhf" を実行します

Screenshot at 2021-09-11 22-12-54.png
  Yes, do as I say! を入力します

Screenshot at 2021-09-11 22-14-43.png

  exit を入力します

Screenshot at 2021-09-11 22-16-03.png
  Retry を選択してください
  処理が継続されます

Screenshot at 2021-09-11 22-17-52.png
  お好みで選んでください
  私は WiFi を使わないので を選択しました

Screenshot at 2021-09-11 22-20-08.png
  これで処理が終了しました

  シャットダウンします 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 です
シャットダウン、再起動でも開放されます

ラズパイをSSDから起動させると以下のような画面が表示されます
Screenshot at 2021-09-12 00-00-41.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?