1
0
mirror of https://github.com/home-assistant/operating-system.git synced 2025-12-20 02:18:37 +00:00
Jan Čermák 3a666bbeea Use EROFS LZMA compression of firmware on x86 instead of per-file ZSTD (#3877)
Instead of using per-file ZSTD compression, compress firmware (and newly also
kernel modules) using LZMA within EROFS image. LZMA was picked because ZSTD
support in EROFS is still experimental and due to some limitations in the
implementation, the compression takes significantly more time.

This change gives us more control over compression of the files and with the
proposed settings, saves a bit of the space (~10 MiB) in the resulting image.
In theory, even higher savings could be achieved through compressing other
runtime binaries, but this would need to be thoroughly tested whether it
doesn't have any detrimental effects. For firmware and modules, the overhead
should be minimal, as they are usually touched only once per boot and are
rather small before decompression.

* buildroot 74994c4f32...92fab35fed (6):
  > fs/erofs: add custom compression option with optional compress-hints file
  > package/erofs-utils: bump to version 1.8.5
  > package/erofs-utils: bump to version 1.8.3
  > package/erofs-utils: bump to version 1.8.2
  > package/erofs-utils: bump to version 1.8.1
  > package/erofs-utils: add libdeflate and zlib optional dependencies
2025-02-14 12:27:39 +01:00
2025-01-21 22:41:53 +01:00
2019-05-09 10:10:53 +02:00
2018-04-15 10:27:33 +02:00
2024-09-30 18:47:33 +02:00

Home Assistant Operating System

Home Assistant Operating System (formerly HassOS) is a Linux based operating system optimized to host Home Assistant and its Add-ons.

Home Assistant Operating System uses Docker as its container engine. By default it deploys the Home Assistant Supervisor as a container. Home Assistant Supervisor in turn uses the Docker container engine to control Home Assistant Core and Add-Ons in separate containers. Home Assistant Operating System is not based on a regular Linux distribution like Ubuntu. It is built using Buildroot and it is optimized to run Home Assistant. It targets single board compute (SBC) devices like the Raspberry Pi or ODROID but also supports x86-64 systems with UEFI.

Home Assistant - A project from the Open Home Foundation

Features

  • Lightweight and memory-efficient
  • Minimized I/O
  • Over The Air (OTA) updates
  • Offline updates
  • Modular using Docker container engine

Supported hardware

  • Nabu Casa
  • Raspberry Pi
  • Hardkernel ODROID
  • Asus Tinker Board
  • Generic x86-64 (e.g. Intel NUC)
  • Virtual appliances

See the full list and specific models here

Getting Started

If you just want to use Home Assistant the official getting started guide and installation instructions take you through how to download Home Assistant Operating System and get it running on your machine.

If you're interested in finding out more about Home Assistant Operating System and how it works read on...

Development

If you don't have experience with embedded systems, Buildroot or the build process for Linux distributions it is recommended to read up on these topics first (e.g. Bootlin has excellent resources).

The Home Assistant Operating System documentation can be found on the Home Assistant Developer Docs website.

Components

  • Bootloader:
    • GRUB for devices that support UEFI
    • U-Boot for devices that don't support UEFI
  • Operating System:
  • File Systems:
    • SquashFS for read-only file systems (using LZ4 compression)
    • ZRAM for /tmp, /var and swap (using LZ4 compression)
  • Container Platform:
    • Docker Engine for running Home Assistant components in containers
  • Updates:
    • RAUC for Over The Air (OTA) and USB updates
  • Security:

Development builds

The Development build GitHub Action Workflow is a manually triggered workflow which creates Home Assistant OS development builds. The development builds are available at https://os-artifacts.home-assistant.io/index.html.

Languages
Python 73.1%
Shell 16.7%
Makefile 8.7%
HTML 0.8%
Dockerfile 0.4%
Other 0.3%