Imported 2.828

pkg got reverted due to kpartx/losetup problems
This commit is contained in:
CloudBuilder 2023-04-19 09:12:07 +00:00
parent dc9b11af67
commit a31b54068a
8 changed files with 28 additions and 65 deletions

29
debian/changelog vendored
View File

@ -1,32 +1,3 @@
livecd-rootfs (2.832) lunar; urgency=medium
* Clean up some remaining references to /dev/mapper.
-- Steve Langasek <steve.langasek@ubuntu.com> Mon, 17 Apr 2023 18:50:18 -0700
livecd-rootfs (2.831) lunar; urgency=medium
* Use the correct path for the loop device.
-- Steve Langasek <steve.langasek@ubuntu.com> Mon, 17 Apr 2023 16:11:52 -0700
livecd-rootfs (2.830) lunar; urgency=medium
* Call losetup -d properly.
-- Steve Langasek <steve.langasek@ubuntu.com> Mon, 17 Apr 2023 12:22:19 -0700
livecd-rootfs (2.829) lunar; urgency=medium
[ Loïc Minier ]
* Initial support for NVIDIA Tegra. LP: #2015644.
[ Steve Langasek ]
* Use losetup instead of kpartx to try to resolve race conditions in
riscv64 image builds.
-- Steve Langasek <steve.langasek@ubuntu.com> Mon, 17 Apr 2023 08:22:21 -0700
livecd-rootfs (2.828) lunar; urgency=medium livecd-rootfs (2.828) lunar; urgency=medium
* 099-ubuntu-image-customization.chroot: Remove redundant creation of oem * 099-ubuntu-image-customization.chroot: Remove redundant creation of oem

1
debian/control vendored
View File

@ -27,7 +27,6 @@ Depends: ${misc:Depends},
lsb-release, lsb-release,
lzma, lzma,
make, make,
mount,
parted, parted,
procps, procps,
python3, python3,

View File

@ -975,9 +975,6 @@ case $PROJECT in
intel-iot) intel-iot)
variants='intel' variants='intel'
;; ;;
tegra)
variants='tegra'
;;
*) *)
# variants='ga hwe' # variants='ga hwe'
variants='ga' variants='ga'
@ -994,9 +991,6 @@ case $PROJECT in
elif [ "$variant" = "intel" ]; then elif [ "$variant" = "intel" ]; then
kernel_metapkg=linux-intel-iotg kernel_metapkg=linux-intel-iotg
flavor=intel-iotg flavor=intel-iotg
elif [ "$variant" = "tegra" ]; then
kernel_metapkg=linux-nvidia-tegra
flavor=nvidia-tegra
else else
echo "bogus variant: $variant" echo "bogus variant: $variant"
exit 1 exit 1
@ -1249,11 +1243,6 @@ case "$ARCH${SUBARCH:++$SUBARCH}" in
add_package install linux-firmware-raspi pi-bluetooth u-boot-rpi u-boot-tools add_package install linux-firmware-raspi pi-bluetooth u-boot-rpi u-boot-tools
BINARY_REMOVE_LINUX=false BINARY_REMOVE_LINUX=false
;; ;;
arm64+tegra)
# Common configuration for all NVIDIA Tegra image variants (server,
# desktop etc.)
KERNEL_FLAVOURS="nvidia-$SUBARCH"
;;
riscv*+*) riscv*+*)
if [ "${SUBARCH:-}" = "licheerv" ]; then if [ "${SUBARCH:-}" = "licheerv" ]; then
# The wifi driver of the licheerv is an out-of-tree driver packaged # The wifi driver of the licheerv is an out-of-tree driver packaged

View File

@ -41,7 +41,7 @@ create_partitions() {
} }
create_and_mount_uefi_partition() { create_and_mount_uefi_partition() {
uefi_dev="${loop_device}p15" uefi_dev="/dev/mapper${loop_device///dev/}p15"
mountpoint="$1" mountpoint="$1"
mkfs.vfat -F 32 -n UEFI "${uefi_dev}" mkfs.vfat -F 32 -n UEFI "${uefi_dev}"

View File

@ -12,13 +12,16 @@ loop_raw=
backing_img= backing_img=
clean_loops() { clean_loops() {
if [ -n "${loop_device}" ]; then local kpartx_ret
local kpartx_stdout
if [ -n "${backing_img}" ]; then
# If something just finished writing to the device or a # If something just finished writing to the device or a
# partition (e.g. the zerofree in umount_partition) udev might # partition (e.g. the zerofree in umount_partition) udev might
# still be processing the device. # still be processing the device.
udevadm settle udevadm settle
sync sync
losetup -v -d "${loop_device}" kpartx -v -d "${backing_img}"
unset backing_img unset backing_img
fi fi
@ -62,15 +65,18 @@ mount_image() {
trap clean_loops EXIT trap clean_loops EXIT
backing_img="$1" backing_img="$1"
local rootpart="$2" local rootpart="$2"
loop_device=$(losetup --show -f -P -v ${backing_img}) kpartx_mapping="$(kpartx -s -v -a ${backing_img})"
# Find the loop device
loop_p1="$(echo -e ${kpartx_mapping} | head -n1 | awk '{print$3}')"
loop_device="/dev/${loop_p1%p[0-9]*}"
if [ ! -b ${loop_device} ]; then if [ ! -b ${loop_device} ]; then
echo "unable to find loop device for ${backing_img}" echo "unable to find loop device for ${backing_img}"
exit 1 exit 1
fi fi
# Find the rootfs location # Find the rootfs location
rootfs_dev_mapper="${loop_device}p${rootpart}" rootfs_dev_mapper="/dev/mapper/${loop_p1%%[0-9]}${rootpart}"
if [ ! -b "${rootfs_dev_mapper}" ]; then if [ ! -b "${rootfs_dev_mapper}" ]; then
echo "${rootfs_dev_mapper} is not a block device"; echo "${rootfs_dev_mapper} is not a block device";
exit 1 exit 1
@ -207,7 +213,7 @@ mount_disk_image() {
mount_image ${disk_image} 1 mount_image ${disk_image} 1
mount_partition "${rootfs_dev_mapper}" $mountpoint mount_partition "${rootfs_dev_mapper}" $mountpoint
local uefi_dev="${loop_device}p15" local uefi_dev="/dev/mapper${loop_device///dev/}p15"
if [ -b ${uefi_dev} -a -e $mountpoint/boot/efi ]; then if [ -b ${uefi_dev} -a -e $mountpoint/boot/efi ]; then
mount "${uefi_dev}" $mountpoint/boot/efi mount "${uefi_dev}" $mountpoint/boot/efi
fi fi
@ -248,7 +254,7 @@ umount_partition() {
umount_disk_image() { umount_disk_image() {
mountpoint="$1" mountpoint="$1"
local uefi_dev="${loop_device}p15" local uefi_dev="/dev/mapper${loop_device///dev/}p15"
if [ -e "$mountpoint/boot/efi" -a -b "$uefi_dev" ]; then if [ -e "$mountpoint/boot/efi" -a -b "$uefi_dev" ]; then
# zero fill free space in UEFI partition # zero fill free space in UEFI partition
cat < /dev/zero > "$mountpoint/boot/efi/bloat_file" 2> /dev/null || true cat < /dev/zero > "$mountpoint/boot/efi/bloat_file" 2> /dev/null || true

View File

@ -49,7 +49,7 @@ GRUB_TIMEOUT=0
# Set the default commandline # Set the default commandline
GRUB_CMDLINE_LINUX_DEFAULT="console=hvc0 earlyprintk" GRUB_CMDLINE_LINUX_DEFAULT="console=hvc0 earlyprintk"
EOF EOF
prep_partition="${loop_device}p2" prep_partition="/dev/mapper${loop_device///dev/}p2"
chroot mountpoint grub-install "${prep_partition}" \ chroot mountpoint grub-install "${prep_partition}" \
--no-nvram \ --no-nvram \
--boot-directory=/boot \ --boot-directory=/boot \

View File

@ -197,7 +197,7 @@ create_partitions() {
} }
create_and_mount_uefi_partition() { create_and_mount_uefi_partition() {
uefi_dev="${loop_device}p15" uefi_dev="/dev/mapper${loop_device///dev/}p15"
mountpoint="$1" mountpoint="$1"
mkfs.vfat -F 32 -n UEFI "${uefi_dev}" mkfs.vfat -F 32 -n UEFI "${uefi_dev}"
@ -234,7 +234,7 @@ install_grub() {
# Server preinstalled image # Server preinstalled image
# Setup cidata sample data & nocloud fallback # Setup cidata sample data & nocloud fallback
# Allows login on first boot with or without metadata # Allows login on first boot with or without metadata
cidata_dev="${loop_device}p14" cidata_dev="/dev/mapper${loop_device///dev/}p14"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
setup_cinocloud mountpoint setup_cinocloud mountpoint
fi fi
@ -246,7 +246,7 @@ install_grub() {
# Server preinstalled image # Server preinstalled image
# Setup cidata sample data & nocloud fallback # Setup cidata sample data & nocloud fallback
# Allows login on first boot with or without metadata # Allows login on first boot with or without metadata
cidata_dev="${loop_device}p14" cidata_dev="/dev/mapper${loop_device///dev/}p14"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
setup_cinocloud mountpoint setup_cinocloud mountpoint
fi fi
@ -258,7 +258,7 @@ install_grub() {
# Server preinstalled image # Server preinstalled image
# Setup cidata sample data & nocloud fallback # Setup cidata sample data & nocloud fallback
# Allows login on first boot with or without metadata # Allows login on first boot with or without metadata
cidata_dev="${loop_device}p13" cidata_dev="/dev/mapper${loop_device///dev/}p13"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
setup_cinocloud mountpoint setup_cinocloud mountpoint
fi fi
@ -285,10 +285,10 @@ install_grub() {
efi_target=riscv64-efi efi_target=riscv64-efi
# The real U-Boot # The real U-Boot
chroot mountpoint apt-get install -qqy u-boot-microchip chroot mountpoint apt-get install -qqy u-boot-microchip
loader="${loop_device}p13" loader="/dev/mapper${loop_device///dev/}p13"
dd if=mountpoint/usr/lib/u-boot/microchip_icicle/u-boot.payload of=$loader dd if=mountpoint/usr/lib/u-boot/microchip_icicle/u-boot.payload of=$loader
# Provide end-user modifyable CIDATA # Provide end-user modifyable CIDATA
cidata_dev="${loop_device}p12" cidata_dev="/dev/mapper${loop_device///dev/}p12"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
# Provide stock nocloud datasource # Provide stock nocloud datasource
# Allow interactive login on baremetal board, # Allow interactive login on baremetal board,
@ -330,10 +330,10 @@ install_grub() {
chroot mountpoint apt-get install -qqy u-boot-nezha chroot mountpoint apt-get install -qqy u-boot-nezha
# Since version 2022.10 U-Boot SPL and U-Boot are installed onto the same partition. # Since version 2022.10 U-Boot SPL and U-Boot are installed onto the same partition.
# Package nezha-boot0 is not needed anymore. # Package nezha-boot0 is not needed anymore.
loader1="${loop_device}p13" loader1="/dev/mapper${loop_device///dev/}p13"
dd if=mountpoint/usr/lib/u-boot/${SUBARCH}/u-boot-sunxi-with-spl.bin of=$loader1 dd if=mountpoint/usr/lib/u-boot/${SUBARCH}/u-boot-sunxi-with-spl.bin of=$loader1
# Provide end-user modifyable CIDATA # Provide end-user modifyable CIDATA
cidata_dev="${loop_device}p12" cidata_dev="/dev/mapper${loop_device///dev/}p12"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
# Provide stock nocloud datasource # Provide stock nocloud datasource
# Allow interactive login on baremetal SiFive board, # Allow interactive login on baremetal SiFive board,
@ -359,7 +359,7 @@ install_grub() {
efi_target=riscv64-efi efi_target=riscv64-efi
# factory u-boot requires a p3 partition with /boot/uEnv.txt file # factory u-boot requires a p3 partition with /boot/uEnv.txt file
uenv_dev="${loop_device}p3" uenv_dev="/dev/mapper${loop_device///dev/}p3"
mkfs.ext4 "${uenv_dev}" mkfs.ext4 "${uenv_dev}"
uenv_mnt_dir=`mktemp -d uenvXXX` uenv_mnt_dir=`mktemp -d uenvXXX`
mount "${uenv_dev}" "${uenv_mnt_dir}" mount "${uenv_dev}" "${uenv_mnt_dir}"
@ -387,7 +387,7 @@ EOF
umount "${uenv_mnt_dir}" umount "${uenv_mnt_dir}"
rmdir "${uenv_mnt_dir}" rmdir "${uenv_mnt_dir}"
# Provide end-user modifyable CIDATA # Provide end-user modifyable CIDATA
cidata_dev="${loop_device}p12" cidata_dev="/dev/mapper${loop_device///dev/}p12"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
# Provide stock nocloud datasource # Provide stock nocloud datasource
# Allow interactive login on baremetal SiFive board, # Allow interactive login on baremetal SiFive board,
@ -406,7 +406,7 @@ EOF
chroot mountpoint bash -c 'FK_FORCE=yes apt-get install -qqy grub-efi-riscv64 flash-kernel' chroot mountpoint bash -c 'FK_FORCE=yes apt-get install -qqy grub-efi-riscv64 flash-kernel'
efi_target=riscv64-efi efi_target=riscv64-efi
# Provide end-user modifyable CIDATA # Provide end-user modifyable CIDATA
cidata_dev="${loop_device}p12" cidata_dev="/dev/mapper${loop_device///dev/}p12"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
# Provide stock nocloud datasource # Provide stock nocloud datasource
# Allow interactive login on baremetal board, # Allow interactive login on baremetal board,
@ -431,13 +431,13 @@ EOF
fi fi
chroot mountpoint apt-get install -qqy u-boot-sifive chroot mountpoint apt-get install -qqy u-boot-sifive
# FSBL, which gets U-Boot SPL # FSBL, which gets U-Boot SPL
loader1="${loop_device}p13" loader1="/dev/mapper${loop_device///dev/}p13"
# The real U-Boot # The real U-Boot
loader2="${loop_device}p14" loader2="/dev/mapper${loop_device///dev/}p14"
dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot-spl.bin of=$loader1 dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot-spl.bin of=$loader1
dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot.itb of=$loader2 dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot.itb of=$loader2
# Provide end-user modifyable CIDATA # Provide end-user modifyable CIDATA
cidata_dev="${loop_device}p12" cidata_dev="/dev/mapper${loop_device///dev/}p12"
setup_cidata "${cidata_dev}" setup_cidata "${cidata_dev}"
# Provide stock nocloud datasource # Provide stock nocloud datasource
# Allow interactive login on baremetal SiFive board, # Allow interactive login on baremetal SiFive board,

View File

@ -13,8 +13,6 @@ case $PASS in
kernel_metapkg=linux-generic-hwe-$(lsb_release -sr) kernel_metapkg=linux-generic-hwe-$(lsb_release -sr)
elif [ "$flavor" = "intel-iotg" ]; then elif [ "$flavor" = "intel-iotg" ]; then
kernel_metapkg=linux-intel-iotg kernel_metapkg=linux-intel-iotg
elif [ "$flavor" = "nvidia-tegra" ]; then
kernel_metapkg=linux-nvidia-tegra
else else
echo "bogus flavor: $flavor" echo "bogus flavor: $flavor"
exit 1 exit 1