mirror of
https://salsa.debian.org/raspi-team/image-specs
synced 2026-05-30 06:38:09 +02:00
Why almost? Because Rpi0w uses ttyS1 instead of ttyAMA0 desipte being part of the RPi1 family... ...But it will work fine for the _second_ boot onwards, if things go according to plan. For all other RPi models, it should work from the first boot on.
141 lines
4.7 KiB
YAML
141 lines
4.7 KiB
YAML
# See https://wiki.debian.org/RaspberryPi3 for known issues and more details.
|
|
|
|
steps:
|
|
- mkimg: "{{ output }}"
|
|
size: 1500M
|
|
|
|
- mklabel: msdos
|
|
device: "{{ output }}"
|
|
|
|
- mkpart: primary
|
|
fs-type: 'fat32'
|
|
device: "{{ output }}"
|
|
start: 0%
|
|
end: 20%
|
|
tag: /boot
|
|
|
|
- mkpart: primary
|
|
device: "{{ output }}"
|
|
start: 20%
|
|
end: 100%
|
|
tag: /
|
|
|
|
- kpartx: "{{ output }}"
|
|
|
|
- mkfs: vfat
|
|
partition: /boot
|
|
label: RASPIFIRM
|
|
|
|
- mkfs: ext4
|
|
partition: /
|
|
label: RASPIROOT
|
|
|
|
- mount: /
|
|
|
|
- mount: /boot
|
|
mount-on: /
|
|
dirname: '/boot/firmware'
|
|
|
|
- unpack-rootfs: /
|
|
|
|
- qemu-debootstrap: __RELEASE__
|
|
mirror: http://deb.debian.org/debian
|
|
target: /
|
|
arch: __ARCH__
|
|
components:
|
|
- main
|
|
- contrib
|
|
- non-free
|
|
unless: rootfs_unpacked
|
|
|
|
- create-file: /etc/apt/sources.list
|
|
trailing-newline: '1'
|
|
contents: |
|
|
deb http://deb.debian.org/debian __RELEASE__ main contrib non-free
|
|
deb http://deb.debian.org/debian-security __RELEASE__/updates main contrib non-free
|
|
# Backports are _not_ enabled by default.
|
|
# Enable them by uncommenting the following line:
|
|
# deb http://deb.debian.org/debian __RELEASE__-backports main contrib non-free
|
|
__OTHER_APT_ENABLE__
|
|
unless: rootfs_unpacked
|
|
|
|
- chroot: /
|
|
shell: |
|
|
apt-get update
|
|
unless: rootfs_unpacked
|
|
|
|
- apt: install
|
|
packages:
|
|
- ssh
|
|
- parted
|
|
- dosfstools
|
|
- iw
|
|
- wpasupplicant
|
|
- __FIRMWARE_PKG__
|
|
- __LINUX_IMAGE__
|
|
__EXTRA_PKGS__
|
|
tag: /
|
|
unless: rootfs_unpacked
|
|
|
|
- cache-rootfs: /
|
|
unless: rootfs_unpacked
|
|
|
|
- shell: |
|
|
echo "__HOST__-$(date +%Y%m%d)" > "${ROOT?}/etc/hostname"
|
|
|
|
# Allow root logins locally with no password
|
|
sed -i 's,root:[^:]*:,root::,' "${ROOT?}/etc/shadow"
|
|
|
|
install -m 644 -o root -g root rootfs/etc/fstab "${ROOT?}/etc/fstab"
|
|
|
|
install -m 644 -o root -g root rootfs/etc/network/interfaces.d/eth0 "${ROOT?}/etc/network/interfaces.d/eth0"
|
|
install -m 600 -o root -g root rootfs/etc/network/interfaces.d/wlan0 "${ROOT?}/etc/network/interfaces.d/wlan0"
|
|
|
|
install -m 755 -o root -g root rootfs/usr/local/sbin/rpi-set-sysconf "${ROOT?}/usr/local/sbin/rpi-set-sysconf"
|
|
install -m 644 -o root -g root rootfs/etc/systemd/system/rpi-set-sysconf.service "${ROOT?}/etc/systemd/system/"
|
|
install -m 644 -o root -g root rootfs/boot/firmware/sysconf.txt "${ROOT?}/boot/firmware/sysconf.txt"
|
|
mkdir -p "${ROOT?}/etc/systemd/system/basic.target.requires/"
|
|
ln -s /etc/systemd/system/rpi-set-sysconf.service "${ROOT?}/etc/systemd/system/basic.target.requires/rpi-set-sysconf.service"
|
|
|
|
install -m 755 -o root -g root rootfs/usr/sbin/rpi-resizerootfs "${ROOT?}/usr/sbin/rpi-resizerootfs"
|
|
install -m 644 -o root -g root rootfs/etc/systemd/system/rpi-resizerootfs.service "${ROOT?}/etc/systemd/system/"
|
|
mkdir -p "${ROOT?}/etc/systemd/system/systemd-remount-fs.service.requires/"
|
|
ln -s /etc/systemd/system/rpi-resizerootfs.service "${ROOT?}/etc/systemd/system/systemd-remount-fs.service.requires/rpi-resizerootfs.service"
|
|
|
|
install -m 644 -o root -g root rootfs/etc/systemd/system/rpi-reconfigure-raspi-firmware.service "${ROOT?}/etc/systemd/system/"
|
|
mkdir -p "${ROOT?}/etc/systemd/system/multi-user.target.requires/"
|
|
ln -s /etc/systemd/system/rpi-reconfigure-raspi-firmware.service "${ROOT?}/etc/systemd/system/multi-user.target.requires/rpi-reconfigure-raspi-firmware.service"
|
|
|
|
install -m 644 -o root -g root rootfs/etc/systemd/system/rpi-generate-ssh-host-keys.service "${ROOT?}/etc/systemd/system/"
|
|
ln -s /etc/systemd/system/rpi-generate-ssh-host-keys.service "${ROOT?}/etc/systemd/system/multi-user.target.requires/rpi-generate-ssh-host-keys.service"
|
|
rm -f "${ROOT?}"/etc/ssh/ssh_host_*_key*
|
|
root-fs: /
|
|
|
|
# Copy the relevant device tree files to the boot partition
|
|
- chroot: /
|
|
shell: |
|
|
install -m 644 -o root -g root __DTB__ /boot/firmware/
|
|
|
|
# Clean up archive cache (likely not useful) and lists (likely outdated) to
|
|
# reduce image size by several hundred megabytes.
|
|
- chroot: /
|
|
shell: |
|
|
apt-get clean
|
|
rm -rf /var/lib/apt/lists
|
|
|
|
# Modify the kernel commandline we take from the firmware to boot from
|
|
# the partition labeled raspiroot instead of forcing it to mmcblk0p2
|
|
#
|
|
# These changes will be overwritten after the hardware is probed
|
|
# after dpkg reconfigures raspi-firmware (upon first boot).
|
|
- chroot: /
|
|
shell: |
|
|
sed -i 's/^/console=__SERIAL_CONSOLE__ /' /boot/firmware/cmdline.txt
|
|
sed -i 's/.dev.mmcblk0p2/LABEL=RASPIROOT/' /boot/firmware/cmdline.txt
|
|
|
|
# TODO(https://github.com/larswirzenius/vmdb2/issues/24): remove once vmdb
|
|
# clears /etc/resolv.conf on its own.
|
|
- shell: |
|
|
rm "${ROOT?}/etc/resolv.conf"
|
|
root-fs: /
|