Imported 2.769

No reason for CPC update specified.
This commit is contained in:
CloudBuilder 2022-07-21 17:38:13 +00:00
parent a2cecc27f3
commit 9ea0f1567e
4 changed files with 179 additions and 38 deletions

13
debian/changelog vendored
View File

@ -1,3 +1,16 @@
livecd-rootfs (2.769) kinetic; urgency=medium
[ Alexandre Ghiti ]
* Add support for the VisionFive and the Nezha boards (LP: #1980935)
* Set FK_FORCE_CONTAINER for RISC-V images build to force flash-kernel
to run in a container (LP: #1980929).
[ Thomas Bechtold ]
* Revert "don't modify ssh_config for ubuntu-cpc projects (LP:1968873)"
This change triggered a bug in cloud-init (see LP: #1968873).
-- Thomas Bechtold <thomas.bechtold@canonical.com> Mon, 11 Jul 2022 14:10:52 +0200
livecd-rootfs (2.768) kinetic; urgency=medium
* Use the new iso-url= parameter in the bootloader configs in the netboot

View File

@ -352,7 +352,7 @@ fi
# one also must request disk1-img-xz image format
if [ "$IMAGEFORMAT" = "ext4" ] && [ "$PROJECT" = "ubuntu-cpc" ]; then
case $ARCH:$SUBARCH in
armhf:raspi2|riscv64:sifive_*|*:generic)
armhf:raspi2|riscv64:sifive_*|riscv64:nezha|riscv64:visionfive|*:generic)
IMAGE_HAS_HARDCODED_PASSWORD=1
if [ -z "${IMAGE_TARGETS:-}" ]; then
export IMAGE_TARGETS="disk1-img-xz"
@ -957,7 +957,17 @@ case $PROJECT in
;;
riscv64*)
if [ -n "$SUBARCH" ]; then
case "${SUBARCH:-}" in
nezha)
KERNEL_FLAVOURS=allwinner
;;
visionfive)
KERNEL_FLAVOURS=starfive
;;
*)
KERNEL_FLAVOURS=generic
;;
esac
fi
;;
esac

View File

@ -25,13 +25,17 @@ if [ "$ARCH" = "armhf" ]; then
IMAGE_SIZE=3758096384 # bump to 3.5G (3584*1024**2); Since Jammy armhf need more then the default 2.2G
fi
# Change image size for preinstalled generic images & all preinstalled riscv64 images
# Change image size for preinstalled generic images
if [ -n "${SUBARCH:-}" ]; then
if [ "${SUBARCH:-}" = "generic" ] || [ "$ARCH" = "riscv64" ]; then
if [ "${SUBARCH:-}" = "generic" ]; then
IMAGE_SIZE=3758096384 # bump to 3.5G (3584*1024**2), due to linux-generic instead of virtual
fi
fi
if [ "$ARCH" = "riscv64" ]; then
IMAGE_SIZE=4831838208 # bump to 4.5G (4608*1024**2); initrd creation fails with "No space left" with 3.5G
fi
. config/binary
. config/functions
@ -69,6 +73,39 @@ create_partitions() {
--typecode=15:ef00 \
--new=1:: \
--attributes=1:set:2
elif [ "${SUBARCH:-}" = "nezha" ]; then
# Nezha D1 board
sgdisk "${disk_image}" \
--set-alignment=2 \
--new=13:256:25575 \
--change-name=13:loader1 \
--typecode=13:B161E8AB-7D4B-4DB4-821C-4120A0554A35 \
--new=16:25576:32799 \
--change-name=16:loader2b \
--typecode=16:F79E76D9-AC98-418B-8F31-E17EA24FF07C \
--new=14:32800:43007 \
--change-name=14:loader2 \
--typecode=14:F4FA3898-3478-4941-887D-FCEC4E9E3C05 \
--new=15::+106M \
--typecode=15:ef00 \
--change-name=15:ESP \
--new=12::+4M \
--change-name=12:CIDATA \
--new=1:: \
--attributes=1:set:2
elif [ "${SUBARCH:-}" = "visionfive" ]; then
# VisionFive
sgdisk "${disk_image}" \
--set-alignment=2 \
--new=15::+106M \
--typecode=15:ef00 \
--change-name=15:ESP \
--new=12::+4M \
--change-name=12:CIDATA \
--new=3::+1M \
--change-name=3:uEnv \
--new=1:: \
--attributes=1:set:2
else
# preinstalled server, currently FU540
# FU740 too in the future
@ -183,12 +220,90 @@ install_grub() {
;;
riscv64)
# TODO grub-efi-riscv64 does not exist yet on riscv64
chroot mountpoint apt-get install -qqy u-boot-menu #grub-efi-riscv64
if [ -n "${SUBARCH:-}" ]; then
case "${SUBARCH}" in
"nezha")
echo "Installing U-Boot for Nezha board" &1>2
# flash-kernel is needed to install the dtb for update-grub: it uses the
# /proc/device-tree/model value to pick the correct dtb and as we are in a chroot,
# the model value is wrong and we need to use /etc/flash-kernel/machine instead.
# This explains why we install flash-kernel here.
chroot mountpoint mkdir -p /etc/flash-kernel/
chroot mountpoint bash -c "echo 'Allwinner D1 Nezha' > /etc/flash-kernel/machine"
chroot mountpoint bash -c 'FK_FORCE_CONTAINER=yes apt-get install -qqy grub-efi-riscv64 flash-kernel'
efi_target=riscv64-efi
chroot mountpoint u-boot-update
chroot mountpoint apt-get install -qqy nezha-boot0
# FSBL, which gets U-Boot SPL
loader1="/dev/mapper${loop_device///dev/}p13"
dd if=mountpoint/usr/lib/u-boot/nezha/boot0_sdcard_sun20iw1p1.bin of=$loader1
# The real U-Boot
chroot mountpoint apt-get install -qqy u-boot-nezha
loader2="/dev/mapper${loop_device///dev/}p14"
dd if=mountpoint/usr/lib/u-boot/nezha/u-boot.toc1 of=$loader2
# Provide end-user modifyable CIDATA
cidata_dev="/dev/mapper${loop_device///dev/}p12"
setup_cidata "${cidata_dev}"
# Provide stock nocloud datasource
# Allow interactive login on baremetal SiFive board,
# without a cloud datasource.
setup_cinocloud mountpoint
if [ -n "${SUBARCH:-}" ]; then
# u-boot-nezha will boot using UEFI if it does not find
# any extlinux.conf or boot.scr: but flash-kernel will
# install a boot.scr if it believes it did not boot in
# EFI mode, so make sure we don't leave a boot.scr
# behind.
chroot mountpoint rm -f /boot/boot.scr
;;
"visionfive")
echo "Installing GRUB for VisionFive board" &1>2
# flash-kernel is needed to install the dtb for update-grub: it uses the
# /proc/device-tree/model value to pick the correct dtb and as we are in a chroot,
# the model value is wrong and we need to use /etc/flash-kernel/machine instead.
# This explains why we install flash-kernel here.
chroot mountpoint mkdir -p /etc/flash-kernel/
chroot mountpoint bash -c "echo 'StarFive VisionFive V1' > /etc/flash-kernel/machine"
chroot mountpoint bash -c 'FK_FORCE_CONTAINER=yes apt-get install -qqy grub-efi-riscv64 flash-kernel'
efi_target=riscv64-efi
# factory u-boot requires a p3 partition with /boot/uEnv.txt file
uenv_dev="/dev/mapper${loop_device///dev/}p3"
mkfs.ext4 "${uenv_dev}"
uenv_mnt_dir=`mktemp -d uenvXXX`
mount "${uenv_dev}" "${uenv_mnt_dir}"
mkdir -p "${uenv_mnt_dir}"/boot
cat <<'EOF' >${uenv_mnt_dir}/boot/uEnv.txt
scriptaddr=0x88100000
script_offset_f=0x1fff000
script_size_f=0x1000
kernel_addr_r=0x84000000
kernel_comp_addr_r=0x90000000
kernel_comp_size=0x10000000
fdt_addr_r=0x88000000
ramdisk_addr_r=0x88300000
bootcmd=load mmc 0:f ${kernel_addr_r} /EFI/ubuntu/grubriscv64.efi; bootefi ${kernel_addr_r}
bootcmd_mmc0=devnum=0; run mmc_boot
ipaddr=192.168.120.200
netmask=255.255.255.0
EOF
umount "${uenv_mnt_dir}"
rmdir "${uenv_mnt_dir}"
# Provide end-user modifyable CIDATA
cidata_dev="/dev/mapper${loop_device///dev/}p12"
setup_cidata "${cidata_dev}"
# Provide stock nocloud datasource
# Allow interactive login on baremetal SiFive board,
# without a cloud datasource.
setup_cinocloud mountpoint
;;
*)
u_boot_arch="${SUBARCH}"
if [ "${u_boot_arch}" = "hifive" ]; then
u_boot_arch=sifive_fu540
@ -207,7 +322,11 @@ install_grub() {
# Allow interactive login on baremetal SiFive board,
# without a cloud datasource.
setup_cinocloud mountpoint
;;
esac
fi
if [ "${SUBARCH}" != "visionfive" ] && [ "${SUBARCH}" != "nezha" ]; then
## TODO remove below once we have grub-efi-riscv64
rm mountpoint/tmp/device.map
umount mountpoint/boot/efi
@ -216,6 +335,7 @@ install_grub() {
rmdir mountpoint
return
##
fi
;;
esac

View File

@ -1,5 +1,3 @@
#!/bin/bash
cat << EOF >> "/etc/ssh/sshd_config.d/10-cloudimg-settings.conf"
PasswordAuthentication no
EOF
sed -i "s|#PasswordAuthentication yes|PasswordAuthentication no|g" /etc/ssh/sshd_config