Commit Graph

1688 Commits

Author SHA1 Message Date
Stefan Agner
ed554f2a39 Check free disk space before starting Docker (#2097)
It seems that Docker can fail to start if there is no space left on the
device. Try to free up some space in that case by asking journald to
limit its size to 256MiB.

This should work for any storage larger than ~2.5GiB (as the journals
maximum size is 10% of the disk size). It still should leave enough
logs to diagnose problems if necessary.

Note: We could also limit the size of the journal in first place, but
that isn't sustainable: Once that space is used up, we run into the
same problem again.

By only asking journalctl to free up if necessary, we kinda (miss)use
the journal as way to "reserve" some space which we can free up at boot
if necessary.
2022-08-31 23:04:23 +02:00
Stefan Agner
ba5de20ba8 Add GRUB2 boot entry to boot into rescue shell (#2096) 2022-08-31 23:02:47 +02:00
Michael Haas
b0674713a7 rpi4: Enable arm_boost=1 to unlock 1.8GHz CPU clock (#2073)
* rpi4: Enable arm_boost=1 to unlock 1.8Ghz CPU

The official Raspberry Pi OS enables a "boosted" 1.8GHz
mode since their Debian bullseye based release [source]. This
commit brings this feature to HA OS.
2022-08-31 15:52:23 +02:00
Stefan Agner
4edc71b005 Enable k10temp kernel module (#2094)
The k10temp module allows to monitor CPU temperature on AMD systems.
2022-08-31 08:29:13 +02:00
Stefan Agner
4af2c880ed Linux: Update kernel 5.15.63 (#2093) 2022-08-31 08:29:05 +02:00
Stefan Agner
e64e97cedf Linux: Update kernel 5.15.62 (#2084) 2022-08-25 00:09:21 +02:00
Stefan Agner
cd5e42341d Start dropbear earlier (#2083)
This can be helpful when debugging HAOS issues. Dropbear is only started
for users which actually enabled it by configuring a SSH key, so this
change won't have an effect for most people.
2022-08-25 00:09:13 +02:00
Stefan Agner
ea5acb0950 Fix delaying systemd-timesyncd start correctly (#2082)
Unfortunately, orderings like Before= cannot be overriden by vendor
settings. This is mentioned in "Example 2. Overriding vendor settings"
on https://www.freedesktop.org/software/systemd/man/systemd.unit.html.

Correctly fix ordering by overriding the entire unit.
2022-08-24 23:02:09 +02:00
Stefan Agner
a16354276f Bump buildroot (#2072)
* buildroot 2083b57930...9dbf8d5e86 (3):
  > package/brcmfmac_sdio-firmware-rpi: bump to latest version
  > package/linux-firmware: Deploy fewer Intel WiFi 22000 series variants
  > package/linux-firmware: bump version to 20220815
2022-08-18 15:55:15 +02:00
Stefan Agner
19c5d45734 Linux: Update kernel 5.15.61 (#2070) 2022-08-18 15:51:16 +02:00
Stefan Agner
f8c8198bb9 Fix delaying systemd-timesyncd start (#2069)
* Fix delaying systemd-timesyncd

Setting WantedBy=time-sync.target in a service.d config file does not
clear previous assignments of WantedBy. This caused the services to still
be pulled in by the sysinit.target, causing a ordering cycle and the
system to not start essential services.

* Remove sysinit.target from Before ordering
2022-08-18 15:51:07 +02:00
Stefan Agner
7a693bed46 Delay systemd-timesyncd start after network is deemed online (#2068)
With commit 2d3119ef22 ("Delay Supervisor start until time has been
sychronized (#1360)") systemd-time-wait-sync.service got enabled, which
waits until systemd-timesyncd synchronizes time with a NTP server.

By default systemd-timesyncd.service and systemd-time-wait-sync.service
are pulled in by sysinit.target. This starts the services before full
network connectivity is established. The first sychronization fails and
systemd-timesyncd only retries after a ratelimit mechanism times out.
This causes a dealy of 30s during startup. While systemd-timesyncd has
a mechanism to (re)try time synchronization when network becomes
online, it seems that those only work properly when systemd-networkd
is used, see also https://github.com/systemd/systemd/issues/24298.

Simply reordering systemd-timesyncd.service after network-online.target
does not work as it causes circular dependencies (NetworkManager itself
depends ultimately on the sysinit.target).

With this change, the services are only pulled in by time-sync.target.
That allows to order the service after network-online.target. With that
the first synchronization succeeds.

This mechanism also works when a NTP server is provided through DHCP.
In that case, a the systemd-timesyncd service is started by the dispatch
script /usr/lib/NetworkManager/dispatcher.d/10-ntp before the systemd
even considers starting the service. Tests show that the default
fallback NTP is not contacted, only the DHCP provided service.
2022-08-17 18:51:35 +02:00
Stefan Agner
c3bfa2e64a Kernel config tweaks for Bluetooth and OverlayFS (#2067)
* Move Bluetooth protocol configuration to hassos.config

Enable a couple of potential useful Bluetooth protocol drivers.
Also enable Bluetooth Network Encapsulation Protocol since the BlueZ
plug-in seems to be enabled.

* Drop OverlayFS configuration not liked by Docker
2022-08-16 22:26:39 +02:00
Stefan Agner
fe8332eb90 Bump buildroot (#2066)
* buildroot 2ba3394abf...2083b57930 (1):
  > package/systemd: bump to version 250.7
2022-08-16 22:26:14 +02:00
Stefan Agner
aeda0d0503 Enable BlueZ Audio and HID plug-ins (#2064, #1746) (#2065)
* Enable BlueZ Audio and HID plug-ins (#2064, #1746)
2022-08-16 22:26:03 +02:00
Michael Haas
c4233012d0 Remove duplicate ASMedia quirk 174c:55aa:u (#2061) 2022-08-16 14:15:55 +02:00
Stefan Agner
dcff3d3f14 Compile extra network drivers as modules (#2059)
* Bump buildroot

* buildroot 0397d9c8f0...2ba3394abf (1):
  > package/docker-engine: use kernel modules for extra network drivers

* Make IPv6 SIT tunnel driver a kernel module

This is what distributions seem to be doing too.
2022-08-13 13:45:15 +02:00
Stefan Agner
c2174a4ee4 Linux: Update kernel 5.15.60 (#2058) 2022-08-13 13:45:04 +02:00
Pascal Vizeli
05778a2d32 Support IPv6 NAT (#2051)
* Support IPv6 NAT

* Add experimental

* Enable IPv6 NAT in kernel configuration

Co-authored-by: Stefan Agner <stefan@agner.ch>
2022-08-12 17:43:49 +02:00
Stefan Agner
7729db1e11 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-12 17:43:26 +02:00
Stefan Agner
5b0c1754f6 Bump Docker to 20.10.17 (#2055)
* buildroot 97287bbebf...0397d9c8f0 (5):
  > package/docker-proxy: bump version to f6ccccb1c082
  > package/containerd: security bump to 1.6.6
  > package/docker-engine: bump to version 20.10.17
  > package/docker-cli: bump to version 20.10.17
  > package/runc: bump to version 1.1.3
2022-08-11 07:03:32 +02:00
Stefan Agner
71d5c77508 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-10 21:05:30 +02:00
Stefan Agner
2d8ec0c8ee Use dbus-broker as default D-Bus broker (#2053)
* Bump buildroot

* buildroot 99b62b8bd3...97287bbebf (3):
  > package/dbus-broker: bump to release 32
  > package/dbus-broker: new package
  > Merge pull request #3 from home-assistant/2022.02.x-haos-cgroup-v2

* Use dbus-broker as default D-Bus broker

The dbus-broker (Linux D-Bus Message Broker) aims to be a high
performance and reliable D-Bus broker which can be used as a drop in
replacement to the reference implementation D-Bus broker. In tests it
showed significantly better performance especially when routing BLE
messages.

* Allow dbus-broker to start early

For HAOS device wipe feature we need haos-agent.service and
udisk2.service early. Both require a working D-Bus broker.
The options PrivateTmp and PrivateDevices add additional After=
orderings which doesn't allow dbus-broker to be started early.

* Fix D-Bus dependency

D-Bus services should just depend on dbus.socket.
2022-08-10 17:01:02 +02:00
Stefan Agner
5d0a61fafc Set lower OOM Score for Supervisor (#2050)
* Set lower OOM Score for Supervisor

* Adjust OOM for Docker daemon
2022-08-10 13:56:45 +02:00
Stefan Agner
4d9b604c04 Use Control Group v2 (#1329)
* Disable real-time scheduling

It seems that Linux' cgroup v2 currenlty does not support RT scheduling.

* Remove Supervisor RT support flag

With CGroups v2 we can no longer support CPU resource allocation for
realtime scheduling.

* Bump OS Agent to 1.3.0 for CGroups v2 support
2022-08-09 11:29:12 +02:00
Stefan Agner
7409be7197 Enable USB/IP kernel modules (#2047) 2022-08-05 09:54:40 +02:00
Stefan Agner
7df21c6839 Bump buildroot (#2045)
* buildroot ad168306a4...04ac0c825d (1):
  > boot/grub2: fix build race condition
2022-08-05 09:54:31 +02:00
Stefan Agner
83dc7117de Bump buildroot (#2044)
* buildroot 686000eee8...ad168306a4 (1):
  > Merge tag '2022.02.4' into 2022.02.x-haos
2022-08-04 09:06:53 +02:00
Stefan Agner
b8550dec2a Linux: Update kernel 5.15.59 (#2043) 2022-08-04 08:59:39 +02:00
Stefan Agner
e0222ec454 Add LED control through device tree overrides (#2038) 2022-08-04 08:36:14 +02:00
Stefan Agner
e2931c35ba Check if GRUB environment is valid (#2031) (#2036) 2022-08-04 08:22:17 +02:00
Stefan Agner
364196614b Yellow USB mass storage support (#2035)
* Enable USB OTG in the Yellow device tree

* Enable U-Boot USB mass storage command

* Enable UMS mode when blue button is pressed
2022-07-27 23:54:17 +02:00
Stefan Agner
084b20e4df 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-07-27 14:53:47 +02:00
Stefan Agner
263e600b51 Linux: Update kernel 5.15.57 (#2028) 2022-07-24 01:30:46 +02:00
Stefan Agner
0f1ecf85d5 Linux: Update kernel 5.15.55 (#2025) 2022-07-20 22:49:00 +02:00
Stefan Agner
86cee444be Allow to select generic-aarch64 and yellow in issue template (#2023) 2022-07-18 13:45:52 +02:00
nepozs
fcfe074672 Update README.md (#2012)
added NUC6CAYS tested model, and Bluetooth basic information
2022-07-18 13:45:42 +02:00
Vedran Pavic
cbb0e5b4b9 Fix issue template link for developer documentation issues (#2018) 2022-07-13 21:23:52 +02:00
Stefan Agner
57fd9a5b4b Linux: Update kernel 5.15.54 (#2019) 2022-07-13 09:24:04 +02:00
Joakim Sørensen
4da0ad7da2 Fix ghcr URL (#2014)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-07-09 23:24:57 +02:00
Stefan Agner
54bbae3286 Bump buildroot (#2013)
* buildroot e7a881ea75...686000eee8 (1):
  > package/bluez5_utils: Fix spamming errors
2022-07-08 22:36:15 +02:00
Stefan Agner
8f07d16176 Improve HAOS builder Dockerfile (#2011) 2022-07-08 22:36:02 +02:00
Stefan Agner
5932f1212e Increase Supervisor start rate limit (#2010)
A faster restart policy is unlikely to help. Increasing the limit makes
it less likely to run into cloud service rate limits (e.g. container
registry).
2022-07-08 22:35:52 +02:00
Stefan Agner
0139030404 Use GitHub Container Registry for Supervisor (#2005) (#2009)
* Use GitHub Container Registry (#2005)

* Tag with ghcr.io prefix
2022-07-08 16:33:04 +02:00
shrung
5c70c57a70 Better detail on the wifi setup (#1990)
Quotation marks are needed for SSIDs which include spaces. The preamble to the code snippet is also grammatically correct now.
2022-07-08 13:57:23 +02:00
Stefan Agner
d2c0ad8096 Use yellow machine yellow_defconfig (landingpage) (#2008) 2022-07-08 09:54:43 +02:00
Stefan Agner
92da6b64c7 Yellow: Enable PL011 console on J11 by default (#2001) 2022-07-04 17:30:37 +02:00
Stefan Agner
7d0ad7e662 Linux: Update kernel 5.15.52 (#2002) 2022-07-04 17:30:27 +02:00
Pascal Vizeli
2801019912 Using Yellow for HA images (landingpage) (#1992) 2022-07-04 14:33:34 +02:00
Joakim Sørensen
11df4745e7 Use checkonline instead of version for connectivity check (#1991) 2022-06-27 16:30:05 +02:00