From e547599e5a17c096a3acb1fcedf6386810af0530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=27sil2100=27=20Zemczak?= Date: Tue, 18 Sep 2018 11:06:16 +0200 Subject: [PATCH] Add support for raspi3 rootfs generation for ubuntu-image consumption with all the additional changes required. --- debian/changelog | 5 ++- live-build/auto/build | 76 ++++++++++++++++++++++++++---------------- live-build/auto/config | 6 ++++ 3 files changed, 57 insertions(+), 30 deletions(-) diff --git a/debian/changelog b/debian/changelog index 686e4165..55057fad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,8 +2,11 @@ livecd-rootfs (2.537) UNRELEASED; urgency=medium * Avoid issues of hard-linking to a symbolic vmlinuz as this can lead to a dangling symlink. + * Add support for raspi3 rootfs builds (based on Ryan Finnie). + * For ubuntu-image consumption, export the kernel and initrd to + image/boot/uboot for raspi*. - -- Łukasz 'sil2100' Zemczak Tue, 18 Sep 2018 10:21:30 +0200 + -- Łukasz 'sil2100' Zemczak Tue, 18 Sep 2018 10:45:58 +0200 livecd-rootfs (2.536) cosmic; urgency=medium diff --git a/live-build/auto/build b/live-build/auto/build index 48807460..bbd9623a 100755 --- a/live-build/auto/build +++ b/live-build/auto/build @@ -555,7 +555,7 @@ case $PROJECT:${SUBPROJECT:-} in if [ "$PROJECT:$SUBPROJECT" = "ubuntu-core:system-image" ]; then case $ARCH in armhf) - subarches="generic raspi2" + subarches="generic raspi2 raspi3" ;; arm64) subarches="generic dragonboard" @@ -593,6 +593,8 @@ case $PROJECT:${SUBPROJECT:-} in armhf) if [ "$devarch" = "raspi2" ]; then linux_package="linux-image-raspi2" + elif [ "$devarch" = "raspi3" ]; then + linux_package="linux-image-raspi2" fi ;; ppc64el|s390x) @@ -660,7 +662,7 @@ case $PROJECT:${SUBPROJECT:-} in if [ -n "$dtbs" ]; then mv "$dtbs" $TMPDIR/assets/dtbs case $devarch in - raspi2) + raspi2|raspi3) # ubuntu-device-flash does not like subdirs here, we need to tar it up if [ -e $TMPDIR/assets/dtbs/overlays ]; then tar -C $TMPDIR/assets/dtbs -f $TMPDIR/assets/dtbs/overlays.tgz -czv overlays @@ -707,6 +709,9 @@ EOF if [ "$devarch" = "raspi2" ];then tarname="raspi2.$tarname" manifestname="$devarch.$manifestname" + elif [ "$devarch" = "raspi3" ];then + tarname="raspi3.$tarname" + manifestname="$devarch.$manifestname" elif [ "$devarch" = "dragonboard" ];then tarname="$devarch.$tarname" manifestname="$devarch.$manifestname" @@ -736,6 +741,9 @@ EOF if [ "$devarch" = "raspi2" ];then metaname=canonical-pi2-linux snapname="$devarch.kernel.snap" + elif [ "$devarch" = "raspi3" ];then + metaname=canonical-pi3-linux + snapname="$devarch.kernel.snap" elif [ "$devarch" = "generic" ] && [ "$ARCH" = "armhf" ];then metaname=canonical-bbb-linux elif [ "$devarch" = "dragonboard" ] && [ "$ARCH" = "arm64" ];then @@ -845,36 +853,46 @@ if [ "$NUMFLAVOURS" = 1 ] && [ "$LB_LINUX_FLAVOURS" != "none" ]; then fi fi -if [ "$SUBARCH" = "ac100" ]; then - # create the md5sum and size files for which we are actually doing all this - md5sum $PREFIX.rootfs.tar.gz >chroot/installer.md5 - wc -c $PREFIX.rootfs.tar.gz >chroot/installer.size - - INFO_DESC="$(lsb_release -d -s)" - INFO_STAMP=$(date +20%y%m%d-%H:%M) - - echo "$INFO_DESC - $ARCH ($INFO_STAMP)" >chroot/media-info - - # make sure update-initramfs feels cosy and warm in the environment - lb chroot_proc install "$@" - lb chroot_sysfs install "$@" - lb chroot_devpts install "$@" - - # re-create initrd to contain the installer.md5 file - Chroot chroot "env FLASH_KERNEL_SKIP=1 update-initramfs -k all -t -u -v" +case $SUBARCH in + ac100) + # create the md5sum and size files for which we are actually doing all this + md5sum $PREFIX.rootfs.tar.gz >chroot/installer.md5 + wc -c $PREFIX.rootfs.tar.gz >chroot/installer.size + + INFO_DESC="$(lsb_release -d -s)" + INFO_STAMP=$(date +20%y%m%d-%H:%M) + + echo "$INFO_DESC - $ARCH ($INFO_STAMP)" >chroot/media-info + + # make sure update-initramfs feels cosy and warm in the environment + lb chroot_proc install "$@" + lb chroot_sysfs install "$@" + lb chroot_devpts install "$@" + + # re-create initrd to contain the installer.md5 file + Chroot chroot "env FLASH_KERNEL_SKIP=1 update-initramfs -k all -t -u -v" + + # create boot.img + Chroot chroot "abootimg --create /boot/installer-${KVERS}.img -f /boot/bootimg.cfg-$SUBARCH -r /boot/initrd.img-${KVERS} -k /boot/vmlinuz-${KVERS}" + + # clean up + lb chroot_devpts remove "$@" + lb chroot_sysfs remove "$@" + lb chroot_proc remove "$@" + + cp "chroot/boot/installer-${KVERS}.img" "$PREFIX.bootimg-$FLAVOUR" + ln -sf "$PREFIX.bootimg-$FLAVOUR" "$PREFIX.bootimg" + ;; - # create boot.img - Chroot chroot "abootimg --create /boot/installer-${KVERS}.img -f /boot/bootimg.cfg-$SUBARCH -r /boot/initrd.img-${KVERS} -k /boot/vmlinuz-${KVERS}" + raspi2|raspi3) + UBOOT_BOOT="image/boot/uboot" - # clean up - lb chroot_devpts remove "$@" - lb chroot_sysfs remove "$@" - lb chroot_proc remove "$@" + mkdir -p $UBOOT_BOOT - cp "chroot/boot/installer-${KVERS}.img" "$PREFIX.bootimg-$FLAVOUR" - ln -sf "$PREFIX.bootimg-$FLAVOUR" "$PREFIX.bootimg" - -fi + cp $PREFIX.initrd $UBOOT_BOOT/initrd.img || true + cp $PREFIX.kernel $UBOOT_BOOT/vmlinuz || true + ;; +esac if [ "$PROJECT" = "ubuntu-touch" ] || [ "$PROJECT" = "ubuntu-touch-custom" ]; then sourceslist="chroot/etc/apt/sources.list" diff --git a/live-build/auto/config b/live-build/auto/config index 4d492d31..5b95de1c 100755 --- a/live-build/auto/config +++ b/live-build/auto/config @@ -746,6 +746,12 @@ case $ARCH in add_package install linux-firmware-raspi2 u-boot-rpi flash-kernel u-boot-tools BINARY_REMOVE_LINUX=false ;; + raspi3) + COMPONENTS='main restricted universe multiverse' + KERNEL_FLAVOURS=raspi2 + add_package install linux-firmware-raspi2 u-boot-rpi flash-kernel u-boot-tools + BINARY_REMOVE_LINUX=false + ;; esac ;; esac