Compare commits

..

11 Commits
8.4 ... 8.5

Author SHA1 Message Date
Stefan Agner
cc5fe10e53 Load container images descending by size (#2054)
* Load container images descending by size

Loading container images using docker load seems to require more space
at load time (which gets freed after loading). Loading the largest
container first avoids running out of space.
2022-08-16 13:21:20 +02:00
Stefan Agner
592806872f Bump version to 8.5 2022-08-16 11:44:34 +02:00
Stefan Agner
d2a5be9406 Linux: Update kernel 5.15.60 (#2058) 2022-08-16 11:30:51 +02:00
Stefan Agner
429376c9ae Synchronize network time quicker on bootup (#2057)
Currently systemd-timesyncd tries to connect to the NTP server quite
early at boot-up. At this time the network connection has not been
established yet. This causes resolving the NTP server to fail and
a rate limit kicks in which makes systemd-timesyncd wait for 30s until
the next attempt.

Lowering the retry attempt to 10s makes systemd-timesyncd connecting
shortly after.

Note: The rate limit is 10 attempts per 10s. Because the attempts are
immediately exhausted lowering connection retry attempt below 10s
adds no benefit.

See also: https://github.com/systemd/systemd/issues/24298
2022-08-16 11:30:46 +02:00
Stefan Agner
e149149cc9 Bump buildroot (#2045)
* buildroot ad168306a4...04ac0c825d (1):
  > boot/grub2: fix build race condition
2022-08-16 11:29:24 +02:00
Stefan Agner
ae86416d89 Bump buildroot (#2044)
* buildroot 686000eee8...ad168306a4 (1):
  > Merge tag '2022.02.4' into 2022.02.x-haos
2022-08-16 11:28:57 +02:00
Stefan Agner
f62c919a76 Linux: Update kernel 5.15.59 (#2043) 2022-08-16 11:28:37 +02:00
Stefan Agner
558472baa3 Add LED control through device tree overrides (#2038) 2022-08-16 11:27:53 +02:00
Stefan Agner
a38ee172f1 Check if GRUB environment is valid (#2031) (#2036) 2022-08-16 11:25:56 +02:00
Stefan Agner
0ef46fdafa Allow to Wipe essential boot files to trigger boot from USB host (#2034)
This makes the Red+Blue Button cause the boot loader to wipe start4.elf,
which is essential for the boot loader to boot from eMMC. With the file
missing, the Raspberry Pi firmware will continue its boot flow and boot
from USB host next. This allows to run the Home Assistant OS Installer
from a USB flash drive again.
2022-08-16 11:24:22 +02:00
Stefan Agner
67ecb0fb26 Linux: Update kernel 5.15.57 (#2028) 2022-08-16 11:23:41 +02:00
18 changed files with 165 additions and 22 deletions

View File

@@ -5,18 +5,18 @@ Default Kernel tree: 5.15
| Board | Version |
|-------|---------|
| Open Virtual Appliance | 5.15.55 |
| Open Virtual Appliance | 5.15.60 |
| Raspberry Pi | 5.15.32 |
| Raspberry Pi 0-W | 5.15.32 |
| Raspberry Pi 2 | 5.15.32 |
| Raspberry Pi 3 | 5.15.32 |
| Raspberry Pi 4 | 5.15.32 |
| Home Assistant Yellow | 5.15.32 |
| Tinker Board | 5.15.55 |
| Odroid-C2 | 5.15.55 |
| Odroid-C4 | 5.15.55 |
| Odroid-N2 | 5.15.55 |
| Odroid-XU4 | 5.15.55 |
| Generic aarch64 | 5.15.55 |
| Generic x86-64 | 5.15.55 |
| Khadas VIM3 | 5.15.55 |
| Tinker Board | 5.15.60 |
| Odroid-C2 | 5.15.60 |
| Odroid-C4 | 5.15.60 |
| Odroid-N2 | 5.15.60 |
| Odroid-XU4 | 5.15.60 |
| Generic aarch64 | 5.15.60 |
| Generic x86-64 | 5.15.60 |
| Khadas VIM3 | 5.15.60 |

View File

@@ -0,0 +1,41 @@
From 01e15ae929bb8442f3c9cb31b7cad182ecc4d520 Mon Sep 17 00:00:00 2001
Message-Id: <01e15ae929bb8442f3c9cb31b7cad182ecc4d520.1659172941.git.stefan@agner.ch>
In-Reply-To: <2d3d8c091bc692999a1c519c1dc1570cc8be2358.1659172941.git.stefan@agner.ch>
References: <2d3d8c091bc692999a1c519c1dc1570cc8be2358.1659172941.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch>
Date: Sat, 30 Jul 2022 11:12:13 +0200
Subject: [PATCH 12/13] gpio: raspberrypi-exp: Workaround polarity firmware bug
When configuring a GPIO as output, the firmware seems to invert the
initial state when active low polarity is declared in the device tree.
The bug has been acknowledged by the firmware team and will be fixed
in a future firmware release:
https://github.com/raspberrypi/linux/issues/5107
Fix this by inverting the polarity on our side as well to make sure
the initial output is set correctly.
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
drivers/gpio/gpio-raspberrypi-exp.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/gpio/gpio-raspberrypi-exp.c b/drivers/gpio/gpio-raspberrypi-exp.c
index 64a552ecc2ad..f986940c3a5d 100644
--- a/drivers/gpio/gpio-raspberrypi-exp.c
+++ b/drivers/gpio/gpio-raspberrypi-exp.c
@@ -119,6 +119,11 @@ static int rpi_exp_gpio_dir_out(struct gpio_chip *gc, unsigned int off, int val)
return ret;
set_out.polarity = ret; /* Retain existing setting */
+ /* Need to invert the GPIO in first config set if inverted polarity */
+ /* See https://github.com/raspberrypi/linux/issues/5107 */
+ if (set_out.polarity)
+ set_out.state = !val;
+
ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_CONFIG,
&set_out, sizeof(set_out));
if (ret || set_out.gpio != 0) {
--
2.37.1

View File

@@ -0,0 +1,68 @@
From 713afd6c80d4635306682a5643799195846271b1 Mon Sep 17 00:00:00 2001
Message-Id: <713afd6c80d4635306682a5643799195846271b1.1659172941.git.stefan@agner.ch>
In-Reply-To: <2d3d8c091bc692999a1c519c1dc1570cc8be2358.1659172941.git.stefan@agner.ch>
References: <2d3d8c091bc692999a1c519c1dc1570cc8be2358.1659172941.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch>
Date: Sat, 30 Jul 2022 11:21:31 +0200
Subject: [PATCH 13/13] ARM: dts: bcm2711: yellow: Add LED overrides
Add device tree overrides for all three LEDs.
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
arch/arm/boot/dts/bcm2711-rpi-cm4-ha-yellow.dts | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4-ha-yellow.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4-ha-yellow.dts
index f354bfb69093..2d272a02128b 100644
--- a/arch/arm/boot/dts/bcm2711-rpi-cm4-ha-yellow.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-cm4-ha-yellow.dts
@@ -621,20 +621,24 @@ audio_pins: audio_pins {
&leds {
act_led: led-act {
- label = "led0";
+ label = "act";
linux,default-trigger = "activity";
+ default-state = "off";
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
};
pwr_led: led-pwr {
- label = "led1";
+ label = "pwr";
linux,default-trigger = "default-on";
+ default-state = "off";
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
};
- user_led: led-user {
- label = "led2";
+ usr_led: led-usr {
+ label = "usr";
linux,default-trigger = "heartbeat";
+ default-state = "off";
+ panic-indicator;
gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
};
};
@@ -670,14 +674,13 @@ cam0_reg: &cam1_reg {
/ {
__overrides__ {
- act_led_gpio = <&act_led>,"gpios:4";
- act_led_activelow = <&act_led>,"gpios:8";
act_led_trigger = <&act_led>,"linux,default-trigger";
- pwr_led_gpio = <&pwr_led>,"gpios:4";
pwr_led_activelow = <&pwr_led>,"gpios:8";
pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
+ usr_led_trigger = <&usr_led>,"linux,default-trigger";
+
eth_led0 = <&phy1>,"led-modes:0";
eth_led1 = <&phy1>,"led-modes:4";
--
2.37.1

View File

@@ -20,8 +20,16 @@ test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
# HassOS bootargs
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 apparmor=1 security=apparmor rootwait systemd.machine_id=${MACHINE_ID} cgroup_enable=memory fsck.repair=yes"
# Red Button pressed?
if gpio input GPIO27; then
sleep 1
# ... and Blue Button Pressed?
if gpio input GPIO26; then
echo "Boot wipe has been pressed, deleting boot files to trigger USB boot..."
fatrm mmc 0:1 /start4.elf
reset
fi
# Red still pressed?
if gpio input GPIO27; then
echo "Device wipe button has been pressed, setting wipe flag..."
setenv bootargs_hassos "${bootargs_hassos} haos.wipe=1"

View File

@@ -20,7 +20,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/arm-uefi/generic-aarch64 $(BR2_EXTERNAL_HASSOS_PATH)/board/arm-uefi/generic-aarch64/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/arm-uefi/generic-aarch64/kernel.config"
BR2_LINUX_KERNEL_LZ4=y

View File

@@ -20,7 +20,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/pc/generic-x86-64 $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/generic-x86-64/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_DEFCONFIG="x86_64"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/generic-x86-64/kernel.config"
BR2_LINUX_KERNEL_LZ4=y

View File

@@ -20,7 +20,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/khadas/vim3 $(BR2_EXTERNAL_HASSOS_PATH)/board/khadas/vim3/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/khadas/kernel-vim.config"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config"

View File

@@ -20,7 +20,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c2 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c2/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config"

View File

@@ -20,7 +20,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c4 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-c4/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config"

View File

@@ -20,7 +20,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/kernel-amlogic.config"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-n2/kernel.config"

View File

@@ -21,7 +21,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4 $(BR2_EXTERNAL_HASSOS_PATH)/board/hardkernel/odroid-xu4/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_DEFCONFIG="exynos"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config"
BR2_LINUX_KERNEL_LZ4=y

View File

@@ -20,7 +20,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/pc/ova $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/ova/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_DEFCONFIG="x86_64"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/pc/ova/kernel.config"
BR2_LINUX_KERNEL_LZ4=y

View File

@@ -22,7 +22,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/asus/tinker $(BR2_EXTERNAL_HASSOS_PATH)/board/asus/hassos-hook.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.55"
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.60"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/asus/tinker/kernel.config"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config"

View File

@@ -1,5 +1,5 @@
VERSION_MAJOR=8
VERSION_BUILD=4
VERSION_BUILD=5
HASSOS_NAME="Home Assistant OS"
HASSOS_ID="haos"

View File

@@ -56,6 +56,23 @@ install_spl() {
fi
}
check_grubenv() {
BOOT_MNT=/mnt/boot
# Mount boot
if ! systemctl -q is-active mnt-boot.mount; then
systemctl start mnt-boot.mount
fi
# If GRUB is installed, check if GRUB environment has been currupted
if command -v grub-editenv > /dev/null; then
if ! grub-editenv "${BOOT_MNT}/EFI/BOOT/grubenv" list > /dev/null; then
echo "GRUB environment seems to be corrupted. Recreating a new environment."
grub-editenv "${BOOT_MNT}"/EFI/BOOT/grubenv create
fi
fi
}
post_install_kernel() {
BOOT_MNT=/mnt/boot
@@ -79,6 +96,9 @@ post_install_kernel() {
case "$1" in
install-check)
if [ "$RAUC_MF_COMPATIBLE" = "$RAUC_SYSTEM_COMPATIBLE" ]; then
# Check if GRUB env has been corrupted. This is only problematic
# with OS 8, where compatible matches.
check_grubenv
exit 0
fi
# Be compatible with hassos OS ID

View File

@@ -10,8 +10,12 @@ while ! docker version 2> /dev/null > /dev/null; do
done
# Install Supervisor, plug-ins and landing page
echo "Loading containers..."
for image in /build/images/*.tar; do
echo "Loading container images..."
# Make sure to order images by size (largest first)
# It seems docker load requires space during operation
# shellcheck disable=SC2045
for image in $(ls -S /build/images/*.tar); do
docker load --input "${image}"
done

View File

@@ -1,2 +1,4 @@
[Time]
FallbackNTP=time.cloudflare.com
# Speed-up boot as first attempt is done before network is up
ConnectionRetrySec=10