설치된 시스템 이미지(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(née 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의 여유 공간만 있습니다.

관련 정보