mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-04-19 14:47:15 +00:00
parent
4577d01a46
commit
3a5d2de705
11
README.md
11
README.md
@ -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`
|
||||
|
@ -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"
|
||||
|
@ -1 +1 @@
|
||||
Hass.io OS boot Menu:
|
||||
HassOS boot Menu:
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,2 +1,2 @@
|
||||
name: HASSIO
|
||||
desc: HassIO Buildroot tree
|
||||
name: HASSOS
|
||||
desc: HassOS Buildroot tree
|
||||
|
@ -1 +1 @@
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_HASSIO_PATH)/package/*/*.mk))
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_HASSOS_PATH)/package/*/*.mk))
|
||||
|
@ -2,5 +2,6 @@ VERSION_MAJOR=0
|
||||
VERSION_BUILD=3
|
||||
|
||||
HASSOS_NAME="HassOS"
|
||||
HASSOS_ID="hassos"
|
||||
|
||||
DEPLOYMENT=development
|
||||
|
@ -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))
|
@ -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.
|
@ -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}",
|
33
buildroot-external/package/hassos/hassos.mk
Normal file
33
buildroot-external/package/hassos/hassos.mk
Normal 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))
|
@ -1,2 +1,3 @@
|
||||
[Unit]
|
||||
Requires=docker.service
|
||||
After=docker.service
|
@ -1 +0,0 @@
|
||||
/usr/lib/systemd/system/hassio-expand.service
|
@ -0,0 +1 @@
|
||||
/usr/lib/systemd/system/hassos-expand.service
|
@ -1 +0,0 @@
|
||||
/usr/lib/systemd/system/hassio-apparmor.service
|
@ -1 +0,0 @@
|
||||
/usr/lib/systemd/system/hassio-bind.target
|
@ -1 +0,0 @@
|
||||
/usr/lib/systemd/system/hassio-config.service
|
@ -1 +0,0 @@
|
||||
/usr/lib/systemd/system/hassio-supervisor.service
|
@ -1 +0,0 @@
|
||||
/usr/lib/systemd/system/hassio-zram.target
|
@ -0,0 +1 @@
|
||||
/usr/lib/systemd/system/hassos-apparmor.service
|
@ -0,0 +1 @@
|
||||
/usr/lib/systemd/system/hassos-bind.target
|
@ -0,0 +1 @@
|
||||
/usr/lib/systemd/system/hassos-config.service
|
@ -0,0 +1 @@
|
||||
/usr/lib/systemd/system/hassos-supervisor.service
|
@ -0,0 +1 @@
|
||||
/usr/lib/systemd/system/hassos-zram.target
|
@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
Description=Hassio ZRAM swap
|
||||
Description=HassOS ZRAM swap
|
||||
Requires=zram-swap.service
|
||||
After=zram-swap.service
|
||||
|
||||
|
@ -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
|
||||
|
@ -11,4 +11,4 @@ Type=none
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -11,4 +11,4 @@ Type=none
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -11,4 +11,4 @@ Type=none
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -11,4 +11,4 @@ Type=none
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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]
|
@ -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
|
@ -1,3 +1,3 @@
|
||||
[Unit]
|
||||
Description=Hassio zram targets
|
||||
Description=HassOS zram targets
|
||||
Documentation=man:systemd.target(5)
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
Description=Rauc mark bad
|
||||
Description=HassOS rauc bad
|
||||
Requires=rauc.service
|
||||
RefuseManualStart=true
|
||||
RefuseManualStop=true
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
Description=Rauc mark boot partition as good
|
||||
Description=HassOS mark boot partition as good
|
||||
|
||||
[Timer]
|
||||
OnBootSec=1min
|
||||
|
@ -11,4 +11,4 @@ Type=None
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -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
|
||||
|
@ -11,4 +11,4 @@ Type=none
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -10,4 +10,4 @@ Type=None
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -11,4 +11,4 @@ Type=None
|
||||
Options=bind
|
||||
|
||||
[Install]
|
||||
WantedBy=hassio-bind.target
|
||||
WantedBy=hassos-bind.target
|
||||
|
@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
Description=Hassio ZRAM var
|
||||
Description=HassOS ZRAM var
|
||||
DefaultDependencies=no
|
||||
Requires=zram-var.service
|
||||
After=zram-var.service
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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})"
|
@ -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})"
|
@ -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
|
@ -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"
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user