複数のRaspberry PiデバイスのDebianベースのRaspbianシステムイメージを編集/準備する必要があります。
これまでの変更には、既存の構成ファイルの追加または変更が含まれていました。
私は次のスクリプトを作成しました(imgファイルからパーティションをマウント)。
IMGFILE='edited-raspbian.img'
MNTDIR='/mnt/'$IMGFILE'/'
LOOPDEVICE=$(sudo losetup -f)
sudo losetup -P $LOOPDEVICE $IMGFILE
PARTITIONS=$(sudo fdisk -l $LOOPDEVICE | grep $LOOPDEVICE'*p' | cut -d$' ' -f 1 | cut -d$'/' -f 3)
while IFS= read -r PARTITION; do
MNTDIRPART=$MNTDIR'/'${PARTITION: -2}
sudo mkdir -p $MNTDIRPART
sudo mount "/dev/$PARTITION" "$MNTDIRPART"
done <<< "$PARTITIONS"
実行したら、ディレクトリ内のイメージの「/」および「/boot」パーティションを表示して編集します。
/mnt/edited-raspbian.img/p1
/mnt/edited-raspbian.img/p2
私の質問は次のとおりです
適切なパッケージを「イメージに」インストールする方法は?
/
イメージパーティションがマウントされ、実行中のディレクトリにルートを移動できますかapt install
?
すべてを簡単にするために、Raspbianを使用してRaspberry Piで作業できます(通常は最新のDebianでこれらの画像を編集します)。
答え1
イメージ/パーティションがインストールされているディレクトリにルートを移動し、apt installを実行できますか?
もちろん、システムを正しく設定したら可能です。これはqemu-arm-static
、他のアーキテクチャでRaspberry Piバイナリを実行するために使用されるRaspberry Pi以外のデバイスにファイルシステムがインストールされていると仮定するときに必要です。
パッケージが正しくインストールされ構成されている場合(パッケージはこのタスクを自動的に処理する必要がある)、ターゲットchroot
ディレクトリに移動できます。
# chroot /mnt/edited-raspbian.img/p2
一般的なRaspberry Pi Os(nee Raspbian)イメージの場合は、パーティション1をにマウントする必要があります/boot
。つまり、Raspberry Pi画像が/dev/loop0p1
露出していると/dev/loop0p2
一般的に次のことが行われます。
# mount /dev/loop0p2 /mnt/edited-raspbian.img
# mount /dev/loop0p1 /mnt/edited-raspbian.img/boot
これにはいくつかの欠点があります。 / dev systemd-nspawn`をchroot
手動でマウントする必要があるかもしれません。/proc
/sys, and possibly
. An easier solution is to use
# systemd-nspawn -D /mnt/edited-raspbian.img
これにより、特別なディレクトリを自動的に設定(および解放)する操作が処理されます。
インストールする項目によっては、イメージのサイズを変更する必要があります。たとえば、Raspberry Pi OSの「lite」イメージには、サイズ変更なしで278MBの空き容量しかありません。