インストールされているシステムイメージ(imgファイル)にaptパッケージをインストールする方法

インストールされているシステムイメージ(imgファイル)にaptパッケージをインストールする方法

複数の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の空き容量しかありません。

関連情報