From 2c242f9247d8bd3dfb7878deae7b4f467f2e737b Mon Sep 17 00:00:00 2001 From: Anupam Basak <anupam.basak27@gmail.com> Date: Fri, 30 Jun 2023 15:21:30 +0530 Subject: [PATCH] Move base image from bullseye to bookworm --- .gitlab-ci.yml | 63 +++++++++++++++++++++++++++++--------------------- common.sh | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 26 deletions(-) create mode 100644 common.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 095b4aa..19cdf73 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,10 +11,14 @@ build-zynthbox-image-armhf: - if: $CI_PIPELINE_SOURCE == "web" script: - set -x + - source ./common.sh - - image_name="zynthbox_rpi4_bullseye_$(date "+%F_%H%M").img" - - image_name_miko="zynthbox_miko_bullseye_$(date "+%F_%H%M").img" + - debian_release_name="bookworm" + - image_name="zynthbox_rpi4_${debian_release_name}_$(date "+%F_%H%M").img" + - image_name_miko="zynthbox_miko_${debian_release_name}_$(date "+%F_%H%M").img" - log_file_name="$image_name.build.log" + - KERN=5.15.65-llat-v7l+ + - mountdir=$(mktemp -d) # Ensuring key security - echo "Ensuring key security" @@ -25,33 +29,45 @@ build-zynthbox-image-armhf: - apt-get update - apt-get install -y coreutils p7zip-full qemu-user-static sudo git wget curl python3 lsof fdisk xz-utils openssh-client jq zip - # Build custom base image with Low Latency Kernel with PREEMPT_RT patch - - git clone https://github.com/guysoft/CustomPiOS.git - - cd CustomPiOS && git checkout 11023e5 && cd .. - - git clone https://github.com/zynthbox/RealtimePi.git - - cd RealtimePi/src - - wget -c --trust-server-names 'https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2023-02-22/2023-02-21-raspios-bullseye-armhf-lite.img.xz' -P ./image - - ../../CustomPiOS/src/update-custompios-paths - - bash -x ./build_dist - - prefix=$(ls workspace/*.img | sed "s|workspace/||;s|-raspios-bullseye-armhf-lite.img||") - - mv workspace/*.img "/${prefix}_$(date +"%d-%m-%Y")-realtimepi-bullseye-armhf-lite.img" - - cd / - - zip ${prefix}_$(date +"%d-%m-%Y")-realtimepi-bullseye-armhf-lite.img.zip *.img - - rm -rf CustomPiOS RealtimePi *.img + # Build custom base image with Low Latency Kernel + - wget -c --trust-server-names 'https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2023-05-03/2023-05-03-raspios-bullseye-armhf-lite.img.xz' -O ./raspios-${debian_release_name}-armhf-lite.img.xz + - xz -dv ./raspios-${debian_release_name}-armhf-lite.img.xz + - sudo mount -o loop,offset=$(get_partition_start_offset root ./raspios-${debian_release_name}-armhf-lite.img),sizelimit=$(get_partition_size root ./raspios-${debian_release_name}-armhf-lite.img) ./raspios-${debian_release_name}-armhf-lite.img $mountdir + - sudo mount -o loop,offset=$(get_partition_start_offset boot ./raspios-${debian_release_name}-armhf-lite.img),sizelimit=$(get_partition_size boot ./raspios-${debian_release_name}-armhf-lite.img) ./raspios-${debian_release_name}-armhf-lite.img $mountdir/boot + - sudo mount --bind /dev $mountdir/dev + - sudo mount --bind /dev/pts $mountdir/dev/pts + - sudo mount --bind /proc $mountdir/proc + - sudo mount --bind /sys $mountdir/sys + - sudo chroot $mountdir sed -i "s/bullseye/bookworm/g" /etc/apt/sources.list + - sudo chroot $mountdir sed -i "s/bullseye/bookworm/g" /etc/apt/sources.list.d/* + - sudo chroot $mountdir wget https://github.com/kdoren/linux/releases/download/rpi_5.15.65/linux-image-5.15.65-llat-v7l+_5.15.65-1_armhf.deb + - sudo chroot $mountdir wget https://github.com/kdoren/linux/releases/download/rpi_5.15.65/linux-libc-dev_5.15.65-1_armhf.deb + - sudo chroot $mountdir dpkg -i *.deb + - sudo chroot $mountdir rm -v *.deb + - sudo chroot $mountdir mkdir -p /boot/$KERN/overlays/ + - sudo chroot $mountdir cp -d /usr/lib/linux-image-$KERN/overlays/* /boot/$KERN/overlays/ + - sudo chroot $mountdir cp -dr /usr/lib/linux-image-$KERN/* /boot/$KERN/ + - sudo chroot $mountdir touch /boot/$KERN/overlays/README + - sudo chroot $mountdir mv /boot/vmlinuz-$KERN /boot/$KERN/ + - sudo chroot $mountdir mv /boot/System.map-$KERN /boot/$KERN/ + - sudo chroot $mountdir cp /boot/config-$KERN /boot/$KERN/ + - sudo umount $mountdir/boot/ $mountdir/dev/pts $mountdir/dev/ $mountdir/proc/ $mountdir/sys/ + - sudo umount $mountdir + - zip ./raspios-${debian_release_name}-armhf-lite.img.zip ./raspios-${debian_release_name}-armhf-lite.img - # Clone repositories required to generate image - - echo "# Clone repositories required to generate image" + # Clone repositories required to generate zynthbox image + - echo "# Clone repositories required to generate zynthbox image" - git clone https://github.com/zynthbox/CustomPiOS.git - git clone https://github.com/zynthbox/ZynthianOS.git # Setup Zynthbox Repo sourceline - echo "# Setup Zynthbox Repo sourceline" - echo "ZYNTHIANOS_ZYNTHBOX_REPO_KEY_URL='https://repo.zynthbox.io/repo_key.pub'" >> ZynthianOS/src/modules/zynthianos/config - - echo "ZYNTHIANOS_ZYNTHBOX_REPO_SOURCELINE='deb http://repo.zynthbox.io/testing-bullseye bullseye main'" >> ZynthianOS/src/modules/zynthianos/config + - echo "ZYNTHIANOS_ZYNTHBOX_REPO_SOURCELINE='deb http://repo.zynthbox.io/testing-${debian_release_name} ${debian_release_name} main'" >> ZynthianOS/src/modules/zynthianos/config # Use custom base image from above - echo "# Using custom base image" - - mv *.zip ./ZynthianOS/src/image + - mv ./raspios-${debian_release_name}-armhf-lite.img.zip ./ZynthianOS/src/image # Build rpi4 image - echo "# Build rpi4 image" @@ -72,13 +88,8 @@ build-zynthbox-image-armhf: - echo "# Build Miko image" - cp -v ./workspace/$image_name ./workspace/$image_name_miko - fdisk -lu ./workspace/$image_name_miko - - root_start=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}2 | awk '{print $2}') - - root_size=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}2 | awk '{print $4}') - - boot_start=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}1 | awk '{print $2}') - - boot_size=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}1 | awk '{print $4}') - - mountdir=$(mktemp -d) - - sudo mount -o loop,offset=$(($root_start * 512)),sizelimit=$(($root_size * 512)) ./workspace/$image_name_miko $mountdir - - sudo mount -o loop,offset=$(($boot_start * 512)),sizelimit=$(($boot_size * 512)) ./workspace/$image_name_miko $mountdir/boot + - sudo mount -o loop,offset=$(get_partition_start_offset root ./workspace/$image_name_miko),sizelimit=$(get_partition_size root ./workspace/$image_name_miko) ./workspace/$image_name_miko $mountdir + - sudo mount -o loop,offset=$(get_partition_start_offset boot ./workspace/$image_name_miko),sizelimit=$(get_partition_size boot ./workspace/$image_name_miko) ./workspace/$image_name_miko $mountdir/boot - sudo mount --bind /dev $mountdir/dev - sudo mount --bind /dev/pts $mountdir/dev/pts - sudo mount --bind /proc $mountdir/proc diff --git a/common.sh b/common.sh new file mode 100644 index 0000000..52fbf72 --- /dev/null +++ b/common.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +### +# A Helper function to get partition start offset and total size +# ARG 1 : Partition type +# Accepted Values : 'root', 'boot' +# ARG 2 : Image path +### +get_partition_start_offset() { + if [ $1 = "root" ]; then + partnum=2 + elif [ $1 = "boot" ]; then + partnum=1 + else + echo "Invalid partition type $1" + exit 1 + fi + + echo $(($(fdisk -lu $2 | grep $(basename $2)$partnum | awk '{print $2}') * 512)) +} + +### +# A Helper function to get partition start offset and total size +# ARG 1 : Partition type +# Accepted Values : 'root', 'boot' +# ARG 2 : Image path +### +get_partition_size() { + if [ $1 = "root" ]; then + partnum=2 + elif [ $1 = "boot" ]; then + partnum=1 + else + echo "Invalid partition type $1" + exit 1 + fi + + echo $(($(fdisk -lu $2 | grep $(basename $2)$partnum | awk '{print $4}') * 512)) +} + -- GitLab