Rename OS (#16)

Rename OS
This commit is contained in:
Pascal Vizeli 2018-05-14 22:37:39 +02:00 committed by GitHub
parent 4577d01a46
commit 3a5d2de705
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
82 changed files with 216 additions and 215 deletions

View File

@ -1,6 +1,4 @@
# WORK IN PROGRESS!
# Hass.io OS
# HassOS
Hass.io OS based on [buildroot](https://buildroot.org/). It's a hypervisor for Docker and supports various kind of IoT hardware. It is also available as virtual appliance. The whole system is optimized for embedded system and security. You can update the system simple with OTA updates or offline updates.
## Focus
@ -29,14 +27,15 @@ Create a USB stick with a partition named "hassio-config". This partition can in
## Supervisor/Cli
Provide a file with the name `hassio.json` in your data partition and the following structure:
Provide a file with the name `hassos.json` in your data partition and the following structure:
```json
{
"supervisor": "repo/image",
"supervisor_args": "optional / custom docker arguments",
"cli": "repo/image",
"cli_args": "optional / custom docker arguments"
"cli_args": "optional / custom docker arguments",
"hostname": "default hostname"
}
```
@ -44,8 +43,6 @@ Provide a file with the name `hassio.json` in your data partition and the follow
Running `sudo ./enter.sh` will get you into the build Docker container.
`make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig`
From outside the Docker container, while it is still running you can use `./getimage.sh` to get the output image.
## Helpers
- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external defconfig BR2_DEFCONFIG=/build/buildroot-external/configs/xy_defconfig`

View File

@ -1,4 +1,4 @@
source "$BR2_EXTERNAL_HASSIO_PATH/package/mingetty/Config.in"
source "$BR2_EXTERNAL_HASSIO_PATH/package/hassio/Config.in"
source "$BR2_EXTERNAL_HASSIO_PATH/package/libapparmor/Config.in"
source "$BR2_EXTERNAL_HASSIO_PATH/package/apparmor/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/mingetty/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/hassos/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/libapparmor/Config.in"
source "$BR2_EXTERNAL_HASSOS_PATH/package/apparmor/Config.in"

View File

@ -1 +1 @@
Hass.io OS boot Menu:
HassOS boot Menu:

View File

@ -2,7 +2,7 @@
CONFIG_MMU=y
CONFIG_MALLOC_SIZE=0x0
CONFIG_MALLOC_TLSF=y
CONFIG_PROMPT="hassio-os:"
CONFIG_PROMPT="HassOS-boot:"
CONFIG_CMDLINE_EDITING=y
CONFIG_AUTO_COMPLETE=y
CONFIG_MENU=y

View File

@ -1,16 +1,16 @@
#!/bin/bash
set -e
SCRIPT_DIR=${BR2_EXTERNAL_HASSIO_PATH}/scripts
SCRIPT_DIR=${BR2_EXTERNAL_HASSOS_PATH}/scripts
BOARD_DIR=${2}
BOOT_DATA=${BINARIES_DIR}/boot
. ${SCRIPT_DIR}/hdd_image.sh
. ${BR2_EXTERNAL_HASSIO_PATH}/info
. ${SCRIPT_DIR}/hdd-image.sh
. ${BR2_EXTERNAL_HASSOS_PATH}/info
. ${BOARD_DIR}/info
# Filename
IMAGE_FILE=hassio-os_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk
IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk
# Init boot data
rm -rf ${BOOT_DATA}
@ -21,9 +21,9 @@ cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/EFI/BOOT/BOOTx64.EFI
cp ${BOARD_DIR}/barebox-state.dtb ${BOOT_DATA}/EFI/barebox/state.dtb
# Create other layers
hassio_boot_image ${BINARIES_DIR}
hassio_overlay_image ${BINARIES_DIR}
create_boot_image ${BINARIES_DIR}
create_overlay_image ${BINARIES_DIR}
hassio_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6
create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6
qemu-img convert -O vmdk ${BINARIES_DIR}/harddisk.img ${BINARIES_DIR}/${IMAGE_FILE}

View File

@ -1,21 +1,21 @@
[system]
compatible=Hass.io-OS ova
compatible=HassOS ova
bootloader=barebox
[keyring]
path=/etc/rauc/keyring.pem
[slot.boot.0]
device=/dev/sda0
device=/dev/disk/by-partuuid/b3dd0952-733c-4c88-8cba-cab9b8b4377f
type=vfs
bootname=boot
[slot.rootfs.0]
device=/dev/sda2
device=/dev/disk/by-partuuid/8d3d53e3-6d49-4c38-8349-aff6859e82fd
type=raw
bootname=system0
[slot.rootfs.1]
device=/dev/sda3
device=/dev/disk/by-partuuid/a3ec664e-32ce-4665-95ea-7ae90ce9aa20
type=raw
bootname=system1

View File

@ -1,27 +1,27 @@
BR2_x86_64=y
BR2_CCACHE=y
BR2_CCACHE_DIR="$(TOPDIR)/ccache"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSIO_PATH)/patches $(BR2_EXTERNAL_HASSIO_PATH)/board/ova/patches"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_GCC_VERSION_7_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_HOSTNAME="hassio"
BR2_TARGET_GENERIC_ISSUE="Welcome to Hass.io"
BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS"
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSIO_PATH)/rootfs-overlay $(BR2_EXTERNAL_HASSIO_PATH)/board/ova/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSIO_PATH)/scripts/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/kernel.config"
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config"
BR2_LINUX_KERNEL_LZ4=y
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSIO_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
BR2_PACKAGE_JQ=y
BR2_PACKAGE_DOSFSTOOLS=y
@ -56,21 +56,21 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_BAREBOX=y
BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y
BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/barebox.config"
BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/barebox-env $(BR2_EXTERNAL_HASSIO_PATH)/barebox-env"
BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox.config"
BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/barebox-env"
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_GPTFDISK=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_RAUC=y
BR2_PACKAGE_MINGETTY=y
BR2_PACKAGE_HASSIO=y
BR2_PACKAGE_HASSIO_SUPERVISOR="homeassistant/amd64-hassio-supervisor"
BR2_PACKAGE_HASSIO_SUPERVISOR_VERSION="103.3"
BR2_PACKAGE_HASSIO_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant"
BR2_PACKAGE_HASSIO_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSIO_CLI="homeassistant/amd64-hassio-cli"
BR2_PACKAGE_HASSIO_CLI_VERSION="3"
BR2_PACKAGE_HASSIO_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSIO_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_HASSOS=y
BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/amd64-hassio-supervisor"
BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="103.3"
BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant"
BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor"
BR2_PACKAGE_HASSOS_CLI="homeassistant/amd64-hassio-cli"
BR2_PACKAGE_HASSOS_CLI_VERSION="3"
BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default"
BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor"
BR2_PACKAGE_APPARMOR=y

View File

@ -1,2 +1,2 @@
name: HASSIO
desc: HassIO Buildroot tree
name: HASSOS
desc: HassOS Buildroot tree

View File

@ -1 +1 @@
include $(sort $(wildcard $(BR2_EXTERNAL_HASSIO_PATH)/package/*/*.mk))
include $(sort $(wildcard $(BR2_EXTERNAL_HASSOS_PATH)/package/*/*.mk))

View File

@ -2,5 +2,6 @@ VERSION_MAJOR=0
VERSION_BUILD=3
HASSOS_NAME="HassOS"
HASSOS_ID="hassos"
DEPLOYMENT=development

View File

@ -1,33 +0,0 @@
################################################################################
#
# hassio
#
################################################################################
HASSIO_VERSION = 1.0.0
HASSIO_LICENSE = Apache License 2.0
HASSIO_LICENSE_FILES = $(BR2_EXTERNAL_HASSIO_PATH)/../LICENSE
HASSIO_SITE = $(BR2_EXTERNAL_HASSIO_PATH)/package/hassio
HASSIO_SITE_METHOD = local
define HASSIO_BUILD_CMDS
docker build --tag hassio-hostapps $(@D)/builder
endef
define HASSIO_INSTALL_TARGET_CMDS
docker run --rm --privileged \
-v $(BINARIES_DIR):/export \
-v $(BR2_EXTERNAL_HASSIO_PATH)/apparmor:/apparmor \
hassio-hostapps \
--supervisor $(BR2_PACKAGE_HASSIO_SUPERVISOR) \
--supervisor-version $(BR2_PACKAGE_HASSIO_SUPERVISOR_VERSION) \
--supervisor-args $(BR2_PACKAGE_HASSIO_SUPERVISOR_ARGS) \
--supervisor-profile $(BR2_PACKAGE_HASSIO_SUPERVISOR_PROFILE) \
--cli $(BR2_PACKAGE_HASSIO_CLI) \
--cli-version $(BR2_PACKAGE_HASSIO_CLI_VERSION) \
--cli-args $(BR2_PACKAGE_HASSIO_CLI_ARGS) \
--cli-profile $(BR2_PACKAGE_HASSIO_CLI_PROFILE) \
--apparmor $(BR2_PACKAGE_HASSIO_APPARMOR_DIR)
endef
$(eval $(generic-package))

View File

@ -1,54 +1,54 @@
menuconfig BR2_PACKAGE_HASSIO
bool "hassio-app"
menuconfig BR2_PACKAGE_HASSOS
bool "hassos-app"
help
This is the Application layer they build the
data partition with configurations.
https://github.com/home-assistant/hassio-os
https://github.com/home-assistant/hassos
if BR2_PACKAGE_HASSIO
if BR2_PACKAGE_HASSOS
config BR2_PACKAGE_HASSIO_SUPERVISOR
config BR2_PACKAGE_HASSOS_SUPERVISOR
string "supervisor docker image"
help
Name of supervisor docker image they will be build in.
config BR2_PACKAGE_HASSIO_SUPERVISOR_VERSION
config BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION
string "supervisor docker image version"
help
Version of supervisor docker image they will be build in.
config BR2_PACKAGE_HASSIO_SUPERVISOR_ARGS
config BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS
string "supervisor docker arguments"
help
Extended docker arguments to run the supervisor.
config BR2_PACKAGE_HASSIO_SUPERVISOR_PROFILE
config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE
string "AppArmor supervisor profile"
help
AppArmor profile for supervisor.
config BR2_PACKAGE_HASSIO_CLI
config BR2_PACKAGE_HASSOS_CLI
string "cli docker image"
help
Name of cli docker image they will be build in.
config BR2_PACKAGE_HASSIO_CLI_VERSION
config BR2_PACKAGE_HASSOS_CLI_VERSION
string "cli docker image version"
help
Version of cli docker image they will be build in.
config BR2_PACKAGE_HASSIO_CLI_ARGS
config BR2_PACKAGE_HASSOS_CLI_ARGS
string "cli docker arguments"
help
Extended docker arguments to run the cli.
config BR2_PACKAGE_HASSIO_CLI_PROFILE
config BR2_PACKAGE_HASSOS_CLI_PROFILE
string "AppArmor cli profile"
help
AppArmor profile for cli.
config BR2_PACKAGE_HASSIO_APPARMOR_DIR
config BR2_PACKAGE_HASSOS_APPARMOR_DIR
string "AppArmor profiles folder"
help
AppArmor profiles folder for supervisor.

View File

@ -61,7 +61,7 @@ done
# Make image
dd if=/dev/zero of=${DATA_IMG} bs=1G count=1
mkfs.ext4 -L "hassio-data" -E lazy_itable_init=0,lazy_journal_init=0 ${DATA_IMG}
mkfs.ext4 -L "hassos-data" -E lazy_itable_init=0,lazy_journal_init=0 ${DATA_IMG}
# Mount / init file structs
mkdir -p /mnt/data/
@ -91,7 +91,7 @@ docker pull "${CLI}:${CLI_VERSION}"
docker tag "${CLI}:${CLI_VERSION}" "${CLI}:latest"
# Write config
cat > /mnt/data/hassio.json <<- EOF
cat > /mnt/data/hassos.json <<- EOF
{
"supervisor": "${SUPERVISOR}",
"supervisor_args": "${SUPERVISOR_ARGS}",

View File

@ -0,0 +1,33 @@
################################################################################
#
# HassOS
#
################################################################################
HASSOS_VERSION = 1.0.0
HASSOS_LICENSE = Apache License 2.0
HASSOS_LICENSE_FILES = $(BR2_EXTERNAL_HASSOS_PATH)/../LICENSE
HASSOS_SITE = $(BR2_EXTERNAL_HASSOS_PATH)/package/hassos
HASSOS_SITE_METHOD = local
define HASSOS_BUILD_CMDS
docker build --tag hassos-hostapps $(@D)/builder
endef
define HASSOS_INSTALL_TARGET_CMDS
docker run --rm --privileged \
-v $(BINARIES_DIR):/export \
-v $(BR2_EXTERNAL_HASSOS_PATH)/apparmor:/apparmor \
hassos-hostapps \
--supervisor $(BR2_PACKAGE_HASSOS_SUPERVISOR) \
--supervisor-version $(BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION) \
--supervisor-args $(BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS) \
--supervisor-profile $(BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE) \
--cli $(BR2_PACKAGE_HASSOS_CLI) \
--cli-version $(BR2_PACKAGE_HASSOS_CLI_VERSION) \
--cli-args $(BR2_PACKAGE_HASSOS_CLI_ARGS) \
--cli-profile $(BR2_PACKAGE_HASSOS_CLI_PROFILE) \
--apparmor $(BR2_PACKAGE_HASSOS_APPARMOR_DIR)
endef
$(eval $(generic-package))

View File

@ -1 +0,0 @@
/usr/lib/systemd/system/hassio-expand.service

View File

@ -0,0 +1 @@
/usr/lib/systemd/system/hassos-expand.service

View File

@ -1 +0,0 @@
/usr/lib/systemd/system/hassio-apparmor.service

View File

@ -1 +0,0 @@
/usr/lib/systemd/system/hassio-bind.target

View File

@ -1 +0,0 @@
/usr/lib/systemd/system/hassio-config.service

View File

@ -1 +0,0 @@
/usr/lib/systemd/system/hassio-supervisor.service

View File

@ -1 +0,0 @@
/usr/lib/systemd/system/hassio-zram.target

View File

@ -0,0 +1 @@
/usr/lib/systemd/system/hassos-apparmor.service

View File

@ -0,0 +1 @@
/usr/lib/systemd/system/hassos-bind.target

View File

@ -0,0 +1 @@
/usr/lib/systemd/system/hassos-config.service

View File

@ -0,0 +1 @@
/usr/lib/systemd/system/hassos-supervisor.service

View File

@ -0,0 +1 @@
/usr/lib/systemd/system/hassos-zram.target

View File

@ -1,5 +1,5 @@
[Unit]
Description=Hassio ZRAM swap
Description=HassOS ZRAM swap
Requires=zram-swap.service
After=zram-swap.service

View File

@ -2,7 +2,7 @@
Description=NetworkManager system connections
Requires=mnt-overlay.mount
After=mnt-overlay.mount
Before=NetworkManager.service hassio-config.service
Before=NetworkManager.service hassos-config.service
[Mount]
What=/mnt/overlay/etc/NetworkManager/system-connections
@ -11,4 +11,4 @@ Type=None
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -11,4 +11,4 @@ Type=none
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -11,4 +11,4 @@ Type=none
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -11,4 +11,4 @@ Type=none
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -11,4 +11,4 @@ Type=none
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -1,13 +0,0 @@
[Unit]
Description=Hass.io AppArmor
Wants=hassio-supervisor.service
Before=docker.service hassio-supervisor.service
RequiresMountsFor=/mnt/data
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/sbin/hassio-apparmor
[Install]
WantedBy=multi-user.target

View File

@ -1,10 +0,0 @@
[Unit]
Description=Hassio Configuration Manager
After=hassio-bind.target network.target
[Service]
Type=oneshot
ExecStart=/sbin/hassio-config
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,13 @@
[Unit]
Description=HassOS AppArmor
Wants=hassos-supervisor.service
Before=docker.service hassos-supervisor.service
RequiresMountsFor=/mnt/data
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/sbin/hassos-apparmor
[Install]
WantedBy=multi-user.target

View File

@ -1,5 +1,5 @@
[Unit]
Description=Hassio overlay targets
Description=HassOS overlay targets
Documentation=man:systemd.target(5)
After=local-fs.target
Before=sysinit.target

View File

@ -0,0 +1,10 @@
[Unit]
Description=HassOS Configuration Manager
After=hassos-bind.target network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/hassos-config
[Install]
WantedBy=multi-user.target

View File

@ -1,11 +1,11 @@
[Unit]
Description=Hassio data resizing
Description=HassOS data resizing
DefaultDependencies=no
Before=mnt-data.mount
[Service]
Type=oneshot
ExecStart=/sbin/hassio-expand
ExecStart=/usr/sbin/hassos-expand
RemainAfterExit=true
[Install]

View File

@ -1,5 +1,5 @@
[Unit]
Description=Hass.io supervisor
Description=HassOS supervisor
Requires=docker.service
After=docker.service dbus.socket
RequiresMountsFor=/mnt/data
@ -10,9 +10,9 @@ StartLimitBurst=5
Type=simple
Restart=always
RestartSec=5s
ExecStartPre=-/usr/bin/docker stop hassio_supervisor
ExecStart=/usr/sbin/hassio-supervisor
ExecStop=-/usr/bin/docker stop hassio_supervisor
ExecStartPre=-/usr/bin/docker stop hassos_supervisor
ExecStart=/usr/sbin/hassos-supervisor
ExecStop=-/usr/bin/docker stop hassos_supervisor
[Install]
WantedBy=multi-user.target

View File

@ -1,3 +1,3 @@
[Unit]
Description=Hassio zram targets
Description=HassOS zram targets
Documentation=man:systemd.target(5)

View File

@ -1,12 +1,12 @@
[Unit]
Description=Hassio boot partition
Description=HassOS boot partition
DefaultDependencies=no
Before=umount.target
After=local-fs.target
Conflicts=umount.target
[Mount]
What=LABEL=hassio-boot
What=LABEL=hassos-boot
Where=/mnt/boot
Type=auto

View File

@ -1,13 +1,13 @@
[Unit]
Description=Hassio data partition
Wants=hassio-expand.service
Description=HassOS data partition
Wants=hassos-expand.service
DefaultDependencies=no
After=hassio-expand.service
After=hassos-expand.service
Before=umount.target systemd-tmpfiles-setup.service
Conflicts=umount.target
[Mount]
What=LABEL=hassio-data
What=LABEL=hassos-data
Where=/mnt/data
Type=ext4

View File

@ -1,11 +1,11 @@
[Unit]
Description=Hassio overlay partition
Description=HassOS overlay partition
DefaultDependencies=no
Before=umount.target systemd-tmpfiles-setup.service
Conflicts=umount.target
[Mount]
What=LABEL=hassio-overlay
What=LABEL=hassos-overlay
Where=/mnt/overlay
Type=ext4

View File

@ -1,5 +1,5 @@
[Unit]
Description=Rauc mark bad
Description=HassOS rauc bad
Requires=rauc.service
RefuseManualStart=true
RefuseManualStop=true

View File

@ -1,6 +1,6 @@
[Unit]
Description=Hassio rauc good
Requires=hassio-supervisor.service rauc.service
Description=HassOS rauc good
Requires=hassos-supervisor.service rauc.service
RefuseManualStart=true
RefuseManualStop=true

View File

@ -1,5 +1,5 @@
[Unit]
Description=Rauc mark boot partition as good
Description=HassOS mark boot partition as good
[Timer]
OnBootSec=1min

View File

@ -11,4 +11,4 @@ Type=None
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -2,7 +2,7 @@
Description=Dropbear persistent user
Requires=mnt-overlay.mount
After=mnt-overlay.mount
Before=dropbear.service hassio-config.service
Before=dropbear.service hassos-config.service
[Mount]
What=/mnt/overlay/root/.ssh
@ -11,4 +11,4 @@ Type=None
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -11,4 +11,4 @@ Type=none
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -10,4 +10,4 @@ Type=None
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -11,4 +11,4 @@ Type=None
Options=bind
[Install]
WantedBy=hassio-bind.target
WantedBy=hassos-bind.target

View File

@ -1,5 +1,5 @@
[Unit]
Description=Hassio ZRAM var
Description=HassOS ZRAM var
DefaultDependencies=no
Requires=zram-var.service
After=zram-var.service

View File

@ -1,13 +1,13 @@
[Unit]
Description=Hassio ZRAM
Description=HassOS ZRAM swap
DefaultDependencies=no
Before=dev-zram0.swap
[Service]
Type=oneshot
ExecStart=/sbin/hassio-zram -t swap
ExecStart=/usr/sbin/hassos-zram -t swap
RemainAfterExit=true
StandardOutput=null
[Install]
WantedBy=hassio-zram.target
WantedBy=hassos-zram.target

View File

@ -1,13 +1,13 @@
[Unit]
Description=Hassio ZRAM tmp
Description=HassOS ZRAM tmp
DefaultDependencies=no
Before=tmp.mount
[Service]
Type=oneshot
ExecStart=/sbin/hassio-zram -t fs -m tmp -s 16M
ExecStart=/usr/sbin/hassos-zram -t fs -m tmp -s 16M
RemainAfterExit=true
StandardOutput=null
[Install]
WantedBy=hassio-zram.target
WantedBy=hassos-zram.target

View File

@ -1,13 +1,13 @@
[Unit]
Description=Hassio ZRAM var
Description=HassOS ZRAM var
DefaultDependencies=no
Before=var.mount
[Service]
Type=oneshot
ExecStart=/sbin/hassio-zram -t fs -m var -s 32M
ExecStart=/usr/sbin/hassos-zram -t fs -m var -s 32M
RemainAfterExit=true
StandardOutput=null
[Install]
WantedBy=hassio-zram.target
WantedBy=hassos-zram.target

View File

@ -2,7 +2,7 @@
set -e
# Load configs
CONFIG_FILE=/mnt/data/hassio.json
CONFIG_FILE=/mnt/data/hassos.json
# Read configs
PROFILES_DIR="$(jq --raw-output '.apparmor // empty' ${CONFIG_FILE})"

View File

@ -1,7 +1,7 @@
#!/bin/sh
# Load configs
CONFIG_FILE=/mnt/data/hassio.json
CONFIG_FILE=/mnt/data/hassos.json
CLI="$(jq --raw-output '.cli' ${CONFIG_FILE})"
DOCKER_ARGS="$(jq --raw-output '.cli_args // empty' ${CONFIG_FILE})"

View File

@ -1,14 +1,14 @@
#!/bin/sh
set -e
# Check if hassio-config is present
if ! findfs LABEL="hassio-config" > /dev/null; then
echo "[Warning] No hassio-config partition found!"
# Check if hassos-config is present
if ! findfs LABEL="hassos-config" > /dev/null; then
echo "[Warning] No hassos-config partition found!"
exit 0
fi
# Mount config partition
mount -o ro LABEL="hassio-config" /mnt/config
mount -o ro LABEL="hassos-config" /mnt/config
##
# NetworkManager

View File

@ -1,7 +1,7 @@
#!/bin/sh
set -e
DEVICE_CHILD=$(findfs LABEL="hassio-data")
DEVICE_CHILD=$(findfs LABEL="hassos-data")
DEVICE_ROOT="/dev/$(lsblk -no pkname ${DEVICE_CHILD})"
# Need resize
@ -11,14 +11,14 @@ if [ $(sgdisk -E ${DEVICE_ROOT}) -le 2048 ]; then
fi
# Resize & Reload partition
echo "[INFO] Update hassio-data partition"
sgdisk -d 6 -n 6:0:0 -c 6:"hassio-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" ${DEVICE_ROOT}
echo "[INFO] Update hassos-data partition"
sgdisk -d 6 -n 6:0:0 -c 6:"hassos-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 6:"a52a4597-fa3a-4851-aefd-2fbe9f849079" ${DEVICE_ROOT}
sgdisk -v ${DEVICE_ROOT}
partx -u ${DEVICE_ROOT}
# Resize filesystem
echo "[INFO] Resize hassio-data filesystem"
echo "[INFO] Resize hassos-data filesystem"
e2fsck -y ${DEVICE_CHILD}
resize2fs -f ${DEVICE_CHILD}
echo "[INFO] Finish hassio-data resizing"
echo "[INFO] Finish hassos-data resizing"

View File

@ -2,16 +2,16 @@
set -e
# Load configs
CONFIG_FILE=/mnt/data/hassio.json
CONFIG_FILE=/mnt/data/hassos.json
SUPERVISOR="$(jq --raw-output '.supervisor' ${CONFIG_FILE})"
DOCKER_ARGS="$(jq --raw-output '.supervisor_args // empty' ${CONFIG_FILE})"
APPARMOR="$(jq --raw-output '.supervisor_apparmor // "docker-default"' ${CONFIG_FILE})"
# Init supervisor
HASSIO_DATA=/mnt/data/supervisor
HASSIO_IMAGE_ID=$(docker inspect --format='{{.Id}}' ${SUPERVISOR})
HASSIO_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassio_supervisor || echo "")
HASSOS_DATA=/mnt/data/supervisor
HASSOS_IMAGE_ID=$(docker inspect --format='{{.Id}}' ${SUPERVISOR})
HASSOS_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassos_supervisor || echo "")
# Fix wrong AppArmor profiles
if ! grep ${APPARMOR} /sys/kernel/security/apparmor/profiles > /dev/null; then
@ -19,18 +19,18 @@ if ! grep ${APPARMOR} /sys/kernel/security/apparmor/profiles > /dev/null; then
fi
runSupervisor() {
docker rm --force hassio_supervisor || true
docker run --name hassio_supervisor \
docker rm --force hassos_supervisor || true
docker run --name hassos_supervisor \
--security-opt apparmor="${APPARMOR}" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v ${HASSIO_DATA}:/data \
-e SUPERVISOR_SHARE=${HASSIO_DATA} \
-e SUPERVISOR_NAME=hassio_supervisor \
-v ${HASSOS_DATA}:/data \
-e SUPERVISOR_SHARE=${HASSOS_DATA} \
-e SUPERVISOR_NAME=hassos_supervisor \
$DOCKER_ARGS \
${SUPERVISOR}
}
# Run supervisor
mkdir -p ${HASSIO_DATA}
([ "${HASSIO_IMAGE_ID}" = "${HASSIO_CONTAINER_ID}" ] && docker start --attach hassio_supervisor) || runSupervisor
mkdir -p ${HASSOS_DATA}
([ "${HASSOS_IMAGE_ID}" = "${HASSOS_CONTAINER_ID}" ] && docker start --attach hassos_supervisor) || runSupervisor

View File

@ -61,10 +61,10 @@ zramctl "$DEVICE" -s "$SIZE" -a lz4
# Swap
if [ "$TYPE" = "swap" ]; then
mkswap -L "hassio-zramswap" "$DEVICE"
mkswap -L "hassos-zramswap" "$DEVICE"
fi
# FileSystem
if [ "$TYPE" = "fs" ]; then
mkfs.ext4 -L "hassio-$MOUNT" -O ^has_journal "$DEVICE"
mkfs.ext4 -L "hassos-$MOUNT" -O ^has_journal "$DEVICE"
fi

View File

@ -13,24 +13,24 @@ SYSTEM_SIZE=256M
OVERLAY_SIZE=64M
DATA_SIZE=1G
function hassio_boot_image() {
function create_boot_image() {
local boot_data="${1}/boot"
local boot_img="${1}/boot.vfat"
echo "mtools_skip_check=1" > ~/.mtoolsrc
dd if=/dev/zero of=${boot_img} bs=${BOOT_SIZE} count=1
mkfs.vfat -n "hassio-boot" ${boot_img}
mkfs.vfat -n "hassos-boot" ${boot_img}
mcopy -i ${boot_img} -sv ${boot_data}/* ::
}
function hassio_overlay_image() {
function create_overlay_image() {
local overlay_img="${1}/overlay.ext4"
dd if=/dev/zero of=${overlay_img} bs=${OVERLAY_SIZE} count=1
mkfs.ext4 -L "hassio-overlay" -E lazy_itable_init=0,lazy_journal_init=0 ${overlay_img}
mkfs.ext4 -L "hassos-overlay" -E lazy_itable_init=0,lazy_journal_init=0 ${overlay_img}
}
function hassio_hdd_image() {
function create_hdd_image() {
local boot_img="${1}/boot.vfat"
local rootfs_img="${1}/rootfs.squashfs"
local overlay_img="${1}/overlay.ext4"
@ -50,15 +50,15 @@ function hassio_hdd_image() {
# Partition layout
boot_offset="$(sgdisk -F ${hdd_img})"
sgdisk -n 1:0:+${BOOT_SIZE} -c 1:"hassio-boot" -t 1:"C12A7328-F81F-11D2-BA4B-00A0C93EC93B" -u 1:${BOOT_UUID} ${hdd_img}
sgdisk -n 1:0:+${BOOT_SIZE} -c 1:"hassos-boot" -t 1:"C12A7328-F81F-11D2-BA4B-00A0C93EC93B" -u 1:${BOOT_UUID} ${hdd_img}
rootfs_offset="$(sgdisk -F ${hdd_img})"
sgdisk -n 2:0:+${SYSTEM_SIZE} -c 2:"hassio-system0" -t 2:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 2:${SYSTEM0_UUID} ${hdd_img}
sgdisk -n 3:0:+${SYSTEM_SIZE} -c 3:"hassio-system1" -t 3:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 3:${SYSTEM1_UUID} ${hdd_img}
sgdisk -n 4:0:+${BOOTSTATE_SIZE} -c 4:"hassio-bootstate" -u 4:${BOOTSTATE_UUID} ${hdd_img}
sgdisk -n 2:0:+${SYSTEM_SIZE} -c 2:"hassos-system0" -t 2:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 2:${SYSTEM0_UUID} ${hdd_img}
sgdisk -n 3:0:+${SYSTEM_SIZE} -c 3:"hassos-system1" -t 3:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 3:${SYSTEM1_UUID} ${hdd_img}
sgdisk -n 4:0:+${BOOTSTATE_SIZE} -c 4:"hassos-bootstate" -u 4:${BOOTSTATE_UUID} ${hdd_img}
overlay_offset="$(sgdisk -F ${hdd_img})"
sgdisk -n 5:0:+${OVERLAY_SIZE} -c 5:"hassio-overlay" -t 5:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 5:${OVERLAY_UUID} ${hdd_img}
sgdisk -n 5:0:+${OVERLAY_SIZE} -c 5:"hassos-overlay" -t 5:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 5:${OVERLAY_UUID} ${hdd_img}
data_offset="$(sgdisk -F ${hdd_img})"
sgdisk -n 6:0:+${DATA_SIZE} -c 6:"hassio-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 6:${DATA_UUID} ${hdd_img}
sgdisk -n 6:0:+${DATA_SIZE} -c 6:"hassos-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 6:${DATA_UUID} ${hdd_img}
sgdisk -v
# Write Images

View File

@ -1,27 +1,27 @@
#!/bin/bash
set -e
SCRIPT_DIR=${BR2_EXTERNAL_HASSIO_PATH}/scripts
SCRIPT_DIR=${BR2_EXTERNAL_HASSOS_PATH}/scripts
BOARD_DIR=${2}
. ${SCRIPT_DIR}/rootfs_layer.sh
. ${BR2_EXTERNAL_HASSIO_PATH}/info
. ${SCRIPT_DIR}/rootfs-layer.sh
. ${BR2_EXTERNAL_HASSOS_PATH}/info
. ${BOARD_DIR}/info
# Hass.io OS tasks
# HassOS tasks
fix_rootfs
install_hassio_cli
install_hassos_cli
# Write os-release
(
echo "NAME=Hass.io"
echo "NAME=${HASSOS_NAME}"
echo "VERSION=\"${VERSION_MAJOR}.${VERSION_BUILD} (${BOARD_NAME})\""
echo "ID=hassio-os"
echo "ID=${HASSOS_ID}"
echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_BUILD}"
echo "PRETTY_NAME=\"${HASSIO_NAME} ${VERSION_MAJOR}.${VERSION_BUILD}\""
echo "CPE_NAME=cpe:2.3:o:home_assistant:hassio:${VERSION_MAJOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*"
echo "PRETTY_NAME=\"${HASSOS_NAME} ${VERSION_MAJOR}.${VERSION_BUILD}\""
echo "CPE_NAME=cpe:2.3:o:home_assistant:${HASSOS_ID}:${VERSION_MAJOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*"
echo "HOME_URL=https://hass.io/"
echo "VARIANT=\"Hass.io ${BOARD_NAME}\""
echo "VARIANT=\"${HASSOS_NAME} ${BOARD_NAME}\""
echo "VARIANT_ID=${BOARD_ID}"
) > ${TARGET_DIR}/usr/lib/os-release

View File

@ -18,12 +18,15 @@ function fix_rootfs() {
rm -rf ${TARGET_DIR}/srv
rm -rf ${TARGET_DIR}/opt
# Fix tempfs
# Fix: tempfs with /srv
sed -i "/srv/d" ${TARGET_DIR}/usr/lib/tmpfiles.d/home.conf
# Fix: Could not generate persistent MAC address
sed -i "s/MACAddressPolicy=persistent/MACAddressPolicy=none/g" ${TARGET_DIR}/usr/lib/systemd/network/99-default.link
}
function install_hassio_cli() {
function install_hassos_cli() {
sed -i "s|\(root.*\)/bin/sh|\1/usr/sbin/hassio-cli|" ${TARGET_DIR}/etc/passwd
sed -i "s|\(root.*\)/bin/sh|\1/usr/sbin/hassos-cli|" ${TARGET_DIR}/etc/passwd
}