diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..34991bff5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/release +*.pem diff --git a/Documentation/build.md b/Documentation/build.md new file mode 100644 index 000000000..fc66da92d --- /dev/null +++ b/Documentation/build.md @@ -0,0 +1,21 @@ +# Building + +Running `sudo ./enter.sh` will get you into the build Docker container. +`make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig` + +## Scripts + + + +## Helpers + +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external menuconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-menuconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-menuconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-menuconfig` + +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external savedefconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-update-defconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-update-defconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-update-config` diff --git a/Documentation/configuration.md b/Documentation/configuration.md index 20a2dd53d..7af004b42 100644 --- a/Documentation/configuration.md +++ b/Documentation/configuration.md @@ -7,13 +7,13 @@ You can format a USB stick with FAT32 and name it with `hassos-config`. The layo network/ modules/ known_hosts -hassos-xy.rauc +hassos-xy.raucb ``` - On `network` folder can hold any kind of NetworkManager connections files. - The folder `modules` is for modules-load configuration files. - `known_hosts` file activate debug SSH access of port `22222`. -- For firmware updates you can but the `hassos-*.rauc` OTA update they should be install. +- For firmware updates you can but the `hassos-*.raucb` OTA update they should be install. ## Local diff --git a/Documentation/deployment.md b/Documentation/deployment.md new file mode 100644 index 000000000..68e456dcd --- /dev/null +++ b/Documentation/deployment.md @@ -0,0 +1,23 @@ +# Deployment + +We know 3 types of release builds: +- development (beta/dev) +- staging (rc) +- production (stable) + +## Versioning +The format of version is *MAJOR.BUILD*. Everytime we create a new release with same userland, we bump the build number. +The development use here own major number they will be bump for the stable version and the development version go to next major number. + +``` +0.x = development +1.x = stable +2.x = development +3.x = stable +``` + +## GIT Branch/Tag +The branch `dev` ist the actual development branch and from there we never make a release. The `master` branch hould the development +version from they we build a beta release. + +If we create a new staging/productive release, we create a new branch `rel-{MAJOR}`. They will be used for the hole cycle of this release. diff --git a/README.md b/README.md index d67b9bd63..cecc7115a 100644 --- a/README.md +++ b/README.md @@ -12,20 +12,3 @@ Hass.io OS based on [buildroot](https://buildroot.org/). It's a hypervisor for D - AppArmor protected - ZRAM LZ4 for /tmp, /var, swap - Run every supervisor - -# Building -Running `sudo ./enter.sh` will get you into the build Docker container. -`make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig` - -## Helpers - -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external menuconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-menuconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-menuconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-menuconfig` - -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external savedefconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-update-defconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-update-defconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-update-config` diff --git a/buildroot-external/apparmor/hassio-supervisor b/buildroot-external/apparmor/hassio-supervisor deleted file mode 100644 index f4c735db6..000000000 --- a/buildroot-external/apparmor/hassio-supervisor +++ /dev/null @@ -1,77 +0,0 @@ -#include - -profile hassio-supervisor flags=(attach_disconnected,mediate_deleted) { - #include - #include - - network, - deny network raw, - - signal (send) set=(kill,term), - - /bin/busybox ix, - /usr/bin/python{,3,3.[0-9]} ix, - /usr/bin/git cx, - /usr/bin/socat cx, - /usr/bin/gdbus cx, - - deny /proc/** wl, - deny /root/** wl, - deny /sys/** wl, - - /** r, - /tmp/** rw, - /data/** rw, - /{,var/}run/docker.sock rw, - - capability net_bind_service, - - profile /usr/bin/socat flags=(attach_disconnected,mediate_deleted) { - #include - - network inet udp, - network inet tcp, - - deny network raw, - deny network packet, - - signal (receive) set=(kill,term), - capability net_bind_service, - - /lib/* mr, - /usr/bin/socat mr, - } - - profile /usr/bin/gdbus flags=(attach_disconnected,mediate_deleted) { - #include - #include - - unix (send, receive) type=stream, - - /usr/bin/gdbus mr, - /lib/* mr, - /** r, - - /{,var/}run/dbus/system_bus_socket rw, - } - - profile /usr/bin/git flags=(attach_disconnected,mediate_deleted) { - #include - - network, - deny network raw, - - /bin/busybox ix, - /usr/bin/git mr, - /usr/libexec/git-core/* ix, - - deny /data/homeassistant rw, - deny /data/ssl rw, - - /** r, - /lib/* mr, - /data/addons/** lrw, - - capability dac_override, - } -} diff --git a/buildroot-external/board/ova/info b/buildroot-external/board/ova/info index 2ce3bc85c..1c591f9df 100644 --- a/buildroot-external/board/ova/info +++ b/buildroot-external/board/ova/info @@ -2,3 +2,4 @@ BOARD_ID=ova BOARD_NAME="Open Virtual Appliance" CHASSIS=vm BOOTLOADER=barebox +KERNEL_FILE=bzImage diff --git a/buildroot-external/board/ova/patches/rauc/0001-add-i-argument-to.patch b/buildroot-external/board/ova/patches/rauc/0001-add-i-argument-to.patch index 2337970a9..6ab580a7c 100644 --- a/buildroot-external/board/ova/patches/rauc/0001-add-i-argument-to.patch +++ b/buildroot-external/board/ova/patches/rauc/0001-add-i-argument-to.patch @@ -17,7 +17,7 @@ index d5efc0c..c57c2f7 100644 g_ptr_array_add(args, g_strdup_printf(BOOTSTATE_PREFIX ".%s.remaining_attempts", bootname)); + + g_ptr_array_add(args, g_strdup("-i")); -+ g_ptr_array_add(args, g_strdup("/mnt/boot/EFI/barebox/state.dtb")); ++ g_ptr_array_add(args, g_strdup("/etc/barebox-state.dtb")); g_ptr_array_add(args, NULL); sub = g_subprocess_newv((const gchar * const *)args->pdata, @@ -27,7 +27,7 @@ index d5efc0c..c57c2f7 100644 } + + g_ptr_array_add(args, g_strdup("-i")); -+ g_ptr_array_add(args, g_strdup("/mnt/boot/EFI/barebox/state.dtb")); ++ g_ptr_array_add(args, g_strdup("/etc/barebox-state.dtb")); g_ptr_array_add(args, NULL); sub = g_subprocess_newv((const gchar * const *)args->pdata, diff --git a/buildroot-external/board/ova/post-image.sh b/buildroot-external/board/ova/post-image.sh index 1ad965289..605719f62 100755 --- a/buildroot-external/board/ova/post-image.sh +++ b/buildroot-external/board/ova/post-image.sh @@ -6,12 +6,11 @@ BOARD_DIR=${2} BOOT_DATA=${BINARIES_DIR}/boot . ${SCRIPT_DIR}/hdd-image.sh +. ${SCRIPT_DIR}/name.sh +. ${SCRIPT_DIR}/ota.sh . ${BR2_EXTERNAL_HASSOS_PATH}/info . ${BOARD_DIR}/info -# Filename -IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk - # Init boot data rm -rf ${BOOT_DATA} mkdir -p ${BOOT_DATA}/EFI/BOOT @@ -23,10 +22,9 @@ cp ${BR2_EXTERNAL_HASSOS_PATH}/misc/barebox-state-efi.dtb ${BOOT_DATA}/EFI/bareb echo "console=tty1" > ${BOOT_DATA}/cmdline.txt # Create other layers -create_boot_image ${BINARIES_DIR} -create_overlay_image ${BINARIES_DIR} -create_kernel_image ${BINARIES_DIR} bzImage +prepare_disk_image -create_disk_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6 - -qemu-img convert -O vmdk ${BINARIES_DIR}/harddisk.img ${BINARIES_DIR}/${IMAGE_FILE} +# Create disk images +create_disk_image 6 +convert_disk_image_vmdk +create_ota_update diff --git a/buildroot-external/board/raspberrypi/post-image.sh b/buildroot-external/board/raspberrypi/post-image.sh index 409481fdc..7f1e1ef78 100755 --- a/buildroot-external/board/raspberrypi/post-image.sh +++ b/buildroot-external/board/raspberrypi/post-image.sh @@ -6,12 +6,10 @@ BOARD_DIR=${2} BOOT_DATA=${BINARIES_DIR}/boot . ${SCRIPT_DIR}/hdd-image.sh +. ${SCRIPT_DIR}/name.sh . ${BR2_EXTERNAL_HASSOS_PATH}/info . ${BOARD_DIR}/info -# Filename -IMAGE_FILE=${BINARIES_DIR}/${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img - # Init boot data rm -rf ${BOOT_DATA} mkdir -p ${BOOT_DATA} @@ -38,18 +36,12 @@ echo "dwc_otg.lpm_enable=0 console=tty1" > ${BOOT_DATA}/cmdline.txt # Enable 64bit support if [ "${BOARD_ID}" == "rpi3-64" ]; then echo "arm_64bit=1" >> ${BOOT_DATA}/config.txt - KERNEL_NAME="Image" -else - KERNEL_NAME="zImage" fi # Create other layers -create_boot_image ${BINARIES_DIR} -create_overlay_image ${BINARIES_DIR} -create_kernel_image ${BINARIES_DIR} ${KERNEL_NAME} +prepare_disk_image -create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 2 -fix_disk_image_mbr ${IMAGE_FILE} - -rm -rf ${IMAGE_FILE}.gz -gzip --best ${IMAGE_FILE} +create_disk_image 2 +fix_disk_image_mbr +convert_disk_image_gz +create_ota_update diff --git a/buildroot-external/board/raspberrypi/rpi/info b/buildroot-external/board/raspberrypi/rpi/info index dcdcd912b..9e6bfaab4 100644 --- a/buildroot-external/board/raspberrypi/rpi/info +++ b/buildroot-external/board/raspberrypi/rpi/info @@ -2,3 +2,4 @@ BOARD_ID=rpi BOARD_NAME="RaspberryPi" CHASSIS=embedded BOOTLOADER=uboot +KERNEL_FILE=zImage diff --git a/buildroot-external/board/raspberrypi/rpi/uboot.config b/buildroot-external/board/raspberrypi/rpi/uboot.config deleted file mode 100644 index b2a22b5e1..000000000 --- a/buildroot-external/board/raspberrypi/rpi/uboot.config +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_TARGET_RPI=y -CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b" -CONFIG_SYS_TEXT_BASE=0x00008000 diff --git a/buildroot-external/board/raspberrypi/rpi0-w/info b/buildroot-external/board/raspberrypi/rpi0-w/info index 80244fe15..dbba2f4a2 100644 --- a/buildroot-external/board/raspberrypi/rpi0-w/info +++ b/buildroot-external/board/raspberrypi/rpi0-w/info @@ -2,3 +2,4 @@ BOARD_ID=rpi0-w BOARD_NAME="RaspberryPi Zero-W" CHASSIS=embedded BOOTLOADER=uboot +KERNEL_FILE=zImage diff --git a/buildroot-external/board/raspberrypi/rpi0-w/uboot.config b/buildroot-external/board/raspberrypi/rpi0-w/uboot.config deleted file mode 100644 index 0b4f39372..000000000 --- a/buildroot-external/board/raspberrypi/rpi0-w/uboot.config +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_TARGET_RPI_0_W=y -CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-zero-w" -CONFIG_SYS_TEXT_BASE=0x00008000 diff --git a/buildroot-external/board/raspberrypi/rpi2/info b/buildroot-external/board/raspberrypi/rpi2/info index ed3a68dcf..25ea4007a 100644 --- a/buildroot-external/board/raspberrypi/rpi2/info +++ b/buildroot-external/board/raspberrypi/rpi2/info @@ -2,3 +2,4 @@ BOARD_ID=rpi2 BOARD_NAME="RaspberryPi 2" CHASSIS=embedded BOOTLOADER=uboot +KERNEL_FILE=zImage diff --git a/buildroot-external/board/raspberrypi/rpi2/uboot.config b/buildroot-external/board/raspberrypi/rpi2/uboot.config deleted file mode 100644 index 4b9c35d07..000000000 --- a/buildroot-external/board/raspberrypi/rpi2/uboot.config +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_TARGET_RPI_2=y -CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b" -CONFIG_SYS_TEXT_BASE=0x00008000 -CONFIG_SYS_TEXT_BASE=0x00008000 diff --git a/buildroot-external/board/raspberrypi/rpi3-64/info b/buildroot-external/board/raspberrypi/rpi3-64/info index c794e9dba..6371c6119 100644 --- a/buildroot-external/board/raspberrypi/rpi3-64/info +++ b/buildroot-external/board/raspberrypi/rpi3-64/info @@ -2,3 +2,4 @@ BOARD_ID=rpi3-64 BOARD_NAME="RaspberryPi 3 64bit" CHASSIS=embedded BOOTLOADER=uboot +KERNEL_FILE=Image diff --git a/buildroot-external/board/raspberrypi/uboot-boot64.sh b/buildroot-external/board/raspberrypi/rpi3-64/uboot-boot.sh similarity index 100% rename from buildroot-external/board/raspberrypi/uboot-boot64.sh rename to buildroot-external/board/raspberrypi/rpi3-64/uboot-boot.sh diff --git a/buildroot-external/board/raspberrypi/rpi3-64/uboot.config b/buildroot-external/board/raspberrypi/rpi3-64/uboot.config deleted file mode 100644 index 550b90c67..000000000 --- a/buildroot-external/board/raspberrypi/rpi3-64/uboot.config +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_TARGET_RPI_3=y -CONFIG_SYS_MALLOC_F_LEN=0x2000 -CONFIG_SYS_TEXT_BASE=0x00080000 -CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" -CONFIG_PHYLIB=y -CONFIG_USB_ETHER_LAN78XX=y diff --git a/buildroot-external/board/raspberrypi/rpi3/info b/buildroot-external/board/raspberrypi/rpi3/info index c6be500c9..118931786 100644 --- a/buildroot-external/board/raspberrypi/rpi3/info +++ b/buildroot-external/board/raspberrypi/rpi3/info @@ -2,3 +2,4 @@ BOARD_ID=rpi3 BOARD_NAME="RaspberryPi 3" CHASSIS=embedded BOOTLOADER=uboot +KERNEL_FILE=zImage diff --git a/buildroot-external/board/raspberrypi/rpi3/uboot.config b/buildroot-external/board/raspberrypi/rpi3/uboot.config deleted file mode 100644 index 1290a4ba9..000000000 --- a/buildroot-external/board/raspberrypi/rpi3/uboot.config +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_TARGET_RPI_3_32B=y -CONFIG_SYS_MALLOC_F_LEN=0x2000 -CONFIG_SYS_TEXT_BASE=0x00008000 -CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b" -CONFIG_PHYLIB=y -CONFIG_USB_ETHER_LAN78XX=y diff --git a/buildroot-external/board/raspberrypi/uboot.config b/buildroot-external/board/raspberrypi/uboot.config index f9c0cf01c..0043ca31e 100644 --- a/buildroot-external/board/raspberrypi/uboot.config +++ b/buildroot-external/board/raspberrypi/uboot.config @@ -1,24 +1,3 @@ -CONFIG_ARM=y -CONFIG_ARCH_BCM283X=y -CONFIG_OF_BOARD_SETUP=y -# CONFIG_CMD_FLASH is not set -CONFIG_CMD_GPIO=y -CONFIG_CMD_MMC=y -CONFIG_CMD_USB=y -CONFIG_OF_EMBED=y -CONFIG_DM_KEYBOARD=y -CONFIG_DM_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_BCM2835=y -CONFIG_DM_ETH=y -CONFIG_PINCTRL=y -# CONFIG_PINCTRL_GENERIC is not set -# CONFIG_REQUIRE_SERIAL_CONSOLE is not set -CONFIG_USB=y -CONFIG_DM_USB=y -CONFIG_USB_DWC2=y -CONFIG_USB_KEYBOARD=y -CONFIG_USB_HOST_ETHER=y -CONFIG_USB_ETHER_SMSC95XX=y -CONFIG_DM_VIDEO=y -CONFIG_PHYS_TO_BUS=y +# CONFIG_USB_STORAGE is not set +# CONFIG_ENV_FAT_INTERFACE is not set +# CONFIG_ENV_FAT_DEVICE_AND_PART is not set diff --git a/buildroot-external/bootloader/uboot.config b/buildroot-external/bootloader/uboot.config index de619a0f3..ab447877b 100644 --- a/buildroot-external/bootloader/uboot.config +++ b/buildroot-external/bootloader/uboot.config @@ -13,7 +13,4 @@ CONFIG_FS_EXT4=y # CONFIG_ENV_IS_IN_EXT4 is not set CONFIG_ENV_IS_IN_MMC=y CONFIG_CONSOLE_SCROLL_LINES=10 -CONFIG_SYS_WHITE_ON_BLACK=y -CONFIG_REGEX=y -CONFIG_OF_LIBFDT_OVERLAY=y # CONFIG_EFI_LOADER is not set diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index c44c5fc42..89696c18a 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -22,7 +22,6 @@ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.41" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config" BR2_LINUX_KERNEL_LZ4=y -BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" @@ -30,6 +29,7 @@ BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_DT_UTILS=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y @@ -37,6 +37,7 @@ BR2_PACKAGE_CA_CERTIFICATES=y BR2_PACKAGE_LIBCGROUP=y BR2_PACKAGE_LIBCGROUP_TOOLS=y BR2_PACKAGE_AVAHI=y +# BR2_PACKAGE_AVAHI_AUTOIPD is not set BR2_PACKAGE_AVAHI_DAEMON=y BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y BR2_PACKAGE_DROPBEAR=y @@ -72,11 +73,13 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_HASSOS=y BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/amd64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="107" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="109" BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant" BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt" BR2_PACKAGE_HASSOS_CLI="homeassistant/amd64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_VERSION="5" +BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2" BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/rpi0_w_defconfig b/buildroot-external/configs/rpi0_w_defconfig index fca796cb9..af10220b3 100644 --- a/buildroot-external/configs/rpi0_w_defconfig +++ b/buildroot-external/configs/rpi0_w_defconfig @@ -27,7 +27,6 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.confi BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-0-w" -BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" @@ -35,6 +34,7 @@ BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_RPI_WIFI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_GPTFDISK=y @@ -45,6 +45,7 @@ BR2_PACKAGE_LIBDNET=y BR2_PACKAGE_LIBCGROUP=y BR2_PACKAGE_LIBCGROUP_TOOLS=y BR2_PACKAGE_AVAHI=y +# BR2_PACKAGE_AVAHI_AUTOIPD is not set BR2_PACKAGE_AVAHI_DAEMON=y BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y BR2_PACKAGE_DROPBEAR=y @@ -69,8 +70,7 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi0-w/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_0_w" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_BOOT_SCRIPT=y @@ -82,11 +82,13 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_HASSOS=y BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="107" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="109" BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi-homeassistant" BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt" BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_VERSION="5" +BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2" BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index 476193d44..5cad57467 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -27,7 +27,6 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.confi BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2709-rpi-2-b" -BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" @@ -35,6 +34,7 @@ BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y @@ -44,6 +44,7 @@ BR2_PACKAGE_LIBDNET=y BR2_PACKAGE_LIBCGROUP=y BR2_PACKAGE_LIBCGROUP_TOOLS=y BR2_PACKAGE_AVAHI=y +# BR2_PACKAGE_AVAHI_AUTOIPD is not set BR2_PACKAGE_AVAHI_DAEMON=y BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y BR2_PACKAGE_DROPBEAR=y @@ -68,8 +69,7 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi2/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_2" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_BOOT_SCRIPT=y @@ -81,11 +81,13 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_HASSOS=y BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="107" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="109" BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi2-homeassistant" BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt" BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_VERSION="5" +BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2" BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/rpi3_64_defconfig b/buildroot-external/configs/rpi3_64_defconfig index e3bc7ba6d..3cc5f2e69 100644 --- a/buildroot-external/configs/rpi3_64_defconfig +++ b/buildroot-external/configs/rpi3_64_defconfig @@ -27,7 +27,6 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.confi BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2837-rpi-3-b broadcom/bcm2710-rpi-3-b-plus" -BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" @@ -35,6 +34,7 @@ BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_RPI_WIFI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_GPTFDISK=y @@ -45,6 +45,7 @@ BR2_PACKAGE_LIBDNET=y BR2_PACKAGE_LIBCGROUP=y BR2_PACKAGE_LIBCGROUP_TOOLS=y BR2_PACKAGE_AVAHI=y +# BR2_PACKAGE_AVAHI_AUTOIPD is not set BR2_PACKAGE_AVAHI_DAEMON=y BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y BR2_PACKAGE_DROPBEAR=y @@ -69,12 +70,11 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3-64/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_BOOT_SCRIPT=y -BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot-boot64.sh" +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3-64/uboot-boot.sh" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y @@ -82,11 +82,13 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_HASSOS=y BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/aarch64-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="107" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="109" BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-64-homeassistant" BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt" BR2_PACKAGE_HASSOS_CLI="homeassistant/aarch64-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_VERSION="5" +BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2" BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig index 998a089d8..b4de4194a 100644 --- a/buildroot-external/configs/rpi3_defconfig +++ b/buildroot-external/configs/rpi3_defconfig @@ -27,7 +27,6 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.confi BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" -BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" @@ -35,6 +34,7 @@ BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_RPI_WIFI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_GPTFDISK=y @@ -45,6 +45,7 @@ BR2_PACKAGE_LIBDNET=y BR2_PACKAGE_LIBCGROUP=y BR2_PACKAGE_LIBCGROUP_TOOLS=y BR2_PACKAGE_AVAHI=y +# BR2_PACKAGE_AVAHI_AUTOIPD is not set BR2_PACKAGE_AVAHI_DAEMON=y BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y BR2_PACKAGE_DROPBEAR=y @@ -69,8 +70,7 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3_32b" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_BOOT_SCRIPT=y @@ -82,11 +82,13 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_HASSOS=y BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="107" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="109" BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-homeassistant" BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt" BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_VERSION="5" +BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2" BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/configs/rpi_defconfig b/buildroot-external/configs/rpi_defconfig index 1e3880894..bab699e35 100644 --- a/buildroot-external/configs/rpi_defconfig +++ b/buildroot-external/configs/rpi_defconfig @@ -27,7 +27,6 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.confi BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm" -BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" @@ -35,6 +34,7 @@ BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y BR2_PACKAGE_E2FSPROGS=y BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y @@ -44,6 +44,7 @@ BR2_PACKAGE_LIBDNET=y BR2_PACKAGE_LIBCGROUP=y BR2_PACKAGE_LIBCGROUP_TOOLS=y BR2_PACKAGE_AVAHI=y +# BR2_PACKAGE_AVAHI_AUTOIPD is not set BR2_PACKAGE_AVAHI_DAEMON=y BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y BR2_PACKAGE_DROPBEAR=y @@ -68,8 +69,7 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi/uboot.config" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_BOOT_SCRIPT=y @@ -81,11 +81,13 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_HASSOS=y BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="107" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="109" BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi-homeassistant" BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL="http://s3.amazonaws.com/hassio-version/apparmor.txt" BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_VERSION="5" +BR2_PACKAGE_HASSOS_CLI_ARGS="--network=hassio --add-host hassio:172.30.32.2" BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/info b/buildroot-external/info index 95747de1a..445b1d82e 100644 --- a/buildroot-external/info +++ b/buildroot-external/info @@ -1,5 +1,5 @@ VERSION_MAJOR=0 -VERSION_BUILD=6 +VERSION_BUILD=7 HASSOS_NAME="HassOS" HASSOS_ID="hassos" diff --git a/buildroot-external/kernel.config b/buildroot-external/kernel.config index 0d526034c..5e10e7e52 100644 --- a/buildroot-external/kernel.config +++ b/buildroot-external/kernel.config @@ -97,3 +97,4 @@ CONFIG_EFI_PARTITION=y # CONFIG_LOGO is not set # CONFIG_VIRTUALIZATION is not set +# CONFIG_DEBUG_STACK_USAGE is not set diff --git a/buildroot-external/rootfs-overlay/etc/fw_env.config b/buildroot-external/misc/fw_env.config similarity index 100% rename from buildroot-external/rootfs-overlay/etc/fw_env.config rename to buildroot-external/misc/fw_env.config diff --git a/buildroot-external/misc/rauc-hook b/buildroot-external/misc/rauc-hook new file mode 100755 index 000000000..815a6c5fb --- /dev/null +++ b/buildroot-external/misc/rauc-hook @@ -0,0 +1,12 @@ +#!/bin/sh + +# Handle boot hocks +if [ "${RAUC_SLOT_CLASS}" = "boot" ]; then + if [ "${1}" = "slot-post-install" ]; then + /usr/lib/rauc/post-install-boot + elif [ "${1}" = "slot-pre-install" ]; then + /usr/lib/rauc/pre-install-boot + fi +fi + +exit 0 diff --git a/buildroot-external/package/hassos/Config.in b/buildroot-external/package/hassos/Config.in index 6d5c8298d..098988066 100644 --- a/buildroot-external/package/hassos/Config.in +++ b/buildroot-external/package/hassos/Config.in @@ -28,6 +28,11 @@ config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE help AppArmor profile for supervisor. +config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL + string "AppArmor supervisor profile URL" + help + AppArmor profile for supervisor url. + config BR2_PACKAGE_HASSOS_CLI string "cli docker image" help @@ -48,9 +53,14 @@ config BR2_PACKAGE_HASSOS_CLI_PROFILE help AppArmor profile for cli. +config BR2_PACKAGE_HASSOS_CLI_PROFILE_URL + string "AppArmor cli profile url" + help + AppArmor profile for cli url. + config BR2_PACKAGE_HASSOS_APPARMOR_DIR string "AppArmor profiles folder" help - AppArmor profiles folder for supervisor. + AppArmor profiles folder for HassOS. endif diff --git a/buildroot-external/package/hassos/builder/Dockerfile b/buildroot-external/package/hassos/builder/Dockerfile index e2ca34998..f97a86b1d 100644 --- a/buildroot-external/package/hassos/builder/Dockerfile +++ b/buildroot-external/package/hassos/builder/Dockerfile @@ -2,7 +2,7 @@ FROM alpine:3.7 # Install packages RUN apk add --no-cache \ - bash coreutils e2fsprogs + bash coreutils e2fsprogs curl RUN apk add --no-cache --repository http://nl.alpinelinux.org/alpine/v3.7/community \ docker diff --git a/buildroot-external/package/hassos/builder/hostapp.sh b/buildroot-external/package/hassos/builder/hostapp.sh index f140bc989..b0c1eac3f 100755 --- a/buildroot-external/package/hassos/builder/hostapp.sh +++ b/buildroot-external/package/hassos/builder/hostapp.sh @@ -5,10 +5,12 @@ SUPERVISOR="" SUPERVISOR_VERSION="" SUPERVISOR_ARGS="" SUPERVISOR_PROFILE="" +SUPERVISOR_PROFILE_URL="" CLI="" CLI_VERSION="" CLI_ARGS="" CLI_PROFILE="" +CLI_PROFILE_URL="" APPARMOR="" DATA_IMG="/export/data.ext4" @@ -32,6 +34,10 @@ while [[ $# -gt 0 ]]; do SUPERVISOR_PROFILE=$2 shift ;; + --supervisor-profile-url) + SUPERVISOR_PROFILE_URL=$2 + shift + ;; --cli) CLI=$2 shift @@ -48,6 +54,10 @@ while [[ $# -gt 0 ]]; do CLI_PROFILE=$2 shift ;; + --cli-profile-url) + CLI_PROFILE_URL=$2 + shift + ;; --apparmor) APPARMOR=$2 shift @@ -106,7 +116,16 @@ EOF # Setup AppArmor if [ ! -z "${APPARMOR}" ]; then mkdir -p /mnt/data/${APPARMOR} - cp -f /apparmor/* /mnt/data/${APPARMOR}/ + + # Supervisor + if [ ! -z "${SUPERVISOR_PROFILE_URL}" ]; then + curl -L -o /mnt/data/${APPARMOR}/${SUPERVISOR_PROFILE} ${SUPERVISOR_PROFILE_URL} + fi + + # CLI + if [ ! -z "${CLI_PROFILE_URL}" ]; then + curl -L -o /mnt/data/${APPARMOR}/${CLI_PROFILE} ${CLI_PROFILE_URL} + fi fi # Finish diff --git a/buildroot-external/package/hassos/hassos.mk b/buildroot-external/package/hassos/hassos.mk index dc32946a9..68f9946c6 100644 --- a/buildroot-external/package/hassos/hassos.mk +++ b/buildroot-external/package/hassos/hassos.mk @@ -17,16 +17,17 @@ 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) \ + --supervisor-profile-url $(BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE_URL) \ --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) \ + --cli-profile-url $(BR2_PACKAGE_HASSOS_CLI_PROFILE_URL) \ --apparmor $(BR2_PACKAGE_HASSOS_APPARMOR_DIR) endef diff --git a/buildroot-external/rootfs-overlay/etc/rauc/system.conf b/buildroot-external/rootfs-overlay/etc/rauc/system.conf index 22b483050..2fe51e914 100644 --- a/buildroot-external/rootfs-overlay/etc/rauc/system.conf +++ b/buildroot-external/rootfs-overlay/etc/rauc/system.conf @@ -4,12 +4,16 @@ mountprefix=/run/rauc statusfile=/mnt/data/rauc.db bootloader=%BOOTLOADER% +[handlers] +pre-install=/usr/lib/rauc/pre-install +post-install=/usr/lib/rauc/post-install + [keyring] path=/etc/rauc/keyring.pem [slot.boot.0] device=/dev/disk/by-partlabel/hassos-boot -type=vfs +type=vfat [slot.kernel.0] device=/dev/disk/by-partlabel/hassos-kernel0 diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/hassos.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/docker.conf similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/hassos.conf rename to buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/docker.conf diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassos.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassos.conf index 98399d164..4967b8871 100644 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassos.conf +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassos.conf @@ -1,5 +1,6 @@ [Unit] RequiresMountsFor=/etc/dropbear +ConditionFileNotEmpty=/root/.ssh/known_hosts [Service] ExecStartPre= diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/docker.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/docker.conf new file mode 100644 index 000000000..53a8d88b0 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/getty@.service.d/docker.conf @@ -0,0 +1,3 @@ +[Unit] +Requires=docker.service +After=docker.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-supervisor.service.d/rauc.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-supervisor.service.d/rauc.conf deleted file mode 100644 index e001464d1..000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-supervisor.service.d/rauc.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Unit] -OnFailure=rauc-bad.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/mnt-state.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/mnt-state.mount deleted file mode 120000 index b6842350e..000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/mnt-state.mount +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/mnt-state.mount \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/timers.target.wants/rauc-good.timer b/buildroot-external/rootfs-overlay/etc/systemd/system/timers.target.wants/rauc-good.timer deleted file mode 120000 index d010b7029..000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/timers.target.wants/rauc-good.timer +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/rauc-good.timer \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/timers.target.wants/rauc-mark.timer b/buildroot-external/rootfs-overlay/etc/systemd/system/timers.target.wants/rauc-mark.timer new file mode 120000 index 000000000..bbdfaf738 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/timers.target.wants/rauc-mark.timer @@ -0,0 +1 @@ +/usr/lib/systemd/system/rauc-mark.timer \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/usr/lib/rauc/post-install b/buildroot-external/rootfs-overlay/usr/lib/rauc/post-install new file mode 100755 index 000000000..f07bc2638 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/rauc/post-install @@ -0,0 +1,4 @@ +#!/bin/sh + +systemctl start mnt-boot.mount +systemctl reboot diff --git a/buildroot-external/rootfs-overlay/usr/lib/rauc/post-install-boot b/buildroot-external/rootfs-overlay/usr/lib/rauc/post-install-boot new file mode 100755 index 000000000..53bfd2ded --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/rauc/post-install-boot @@ -0,0 +1,7 @@ +#!/bin/sh + +BOOT_DATA=/tmp/boot-data + +cp -f ${BOOT_DATA}/*.txt ${RAUC_SLOT_MOUNT_POINT}/ + +rm -rf ${BOOT_DATA} diff --git a/buildroot-external/rootfs-overlay/usr/lib/rauc/pre-install b/buildroot-external/rootfs-overlay/usr/lib/rauc/pre-install new file mode 100755 index 000000000..71b4b94b3 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/rauc/pre-install @@ -0,0 +1,3 @@ +#!/bin/sh + +systemctl stop mnt-boot.mount diff --git a/buildroot-external/rootfs-overlay/usr/lib/rauc/pre-install-boot b/buildroot-external/rootfs-overlay/usr/lib/rauc/pre-install-boot new file mode 100755 index 000000000..f101d548d --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/rauc/pre-install-boot @@ -0,0 +1,8 @@ +#!/bin/sh + +BOOT_DATA=/tmp/boot-data + +rm -rf ${BOOT_DATA} +mkdir -p ${BOOT_DATA} + +cp -f ${RAUC_SLOT_MOUNT_POINT}/*.txt ${BOOT_DATA}/ diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-expand.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-expand.service index b916789bf..cc50a0bf2 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-expand.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-expand.service @@ -2,6 +2,8 @@ Description=HassOS data resizing DefaultDependencies=no Before=mnt-data.mount +RefuseManualStart=true +RefuseManualStop=true [Service] Type=oneshot diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-config.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-config.mount new file mode 100644 index 000000000..fd886e1b7 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-config.mount @@ -0,0 +1,8 @@ +[Unit] +Description=HassOS config partition + +[Mount] +What=LABEL=hassos-config +Where=/mnt/config +Type=auto +Options=ro diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-bad.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-bad.service deleted file mode 100644 index baf737fe9..000000000 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-bad.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=HassOS rauc bad -Requires=rauc.service -RefuseManualStart=true -RefuseManualStop=true - -[Service] -Type=oneshot -ExecStart=/usr/bin/rauc status mark-bad -ExecStartPost=/usr/bin/systemctl reboot diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-mark.service similarity index 58% rename from buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service rename to buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-mark.service index 1e7935471..01d62f8c6 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-mark.service @@ -1,10 +1,9 @@ [Unit] Description=HassOS rauc good -Requires=hassos-supervisor.service rauc.service RefuseManualStart=true RefuseManualStop=true [Service] Type=oneshot -ExecStart=/usr/bin/rauc status mark-good +ExecStart=/usr/sbin/hassos-rate RemainAfterExit=true diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-mark.timer similarity index 100% rename from buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer rename to buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-mark.timer diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service index 2f340f0d6..93cad3868 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service @@ -2,6 +2,8 @@ Description=HassOS ZRAM swap DefaultDependencies=no Before=dev-zram0.swap +RefuseManualStart=true +RefuseManualStop=true [Service] Type=oneshot diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service index a7a6a5edc..b4e9d6862 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service @@ -2,6 +2,8 @@ Description=HassOS ZRAM tmp DefaultDependencies=no Before=tmp.mount +RefuseManualStart=true +RefuseManualStop=true [Service] Type=oneshot diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service index 89640cd81..410f9b6fd 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service @@ -2,6 +2,8 @@ Description=HassOS ZRAM var DefaultDependencies=no Before=var.mount +RefuseManualStart=true +RefuseManualStop=true [Service] Type=oneshot diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-config b/buildroot-external/rootfs-overlay/usr/sbin/hassos-config index 7531216ac..583ce2991 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassos-config +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-config @@ -1,15 +1,12 @@ #!/bin/sh -set -e -# Check if hassos-config is present -if ! findfs LABEL="hassos-config" > /dev/null; then - echo "[Warning] No hassos-config partition found!" +# Mount config folder +systemctl start mnt-config.mount +if ! systemctl -q is-active mnt-config.mount; then + echo "[Warning] No config partition found" exit 0 fi -# Mount config partition -mount -o ro LABEL="hassos-config" /mnt/config - ## # NetworkManager if [ -d /mnt/config/network ]; then @@ -18,7 +15,7 @@ if [ -d /mnt/config/network ]; then rm -rf /etc/NetworkManager/system-connections/* cp -f /mnt/config/network/* /etc/NetworkManager/system-connections/ - nmcli con reload || true + nmcli con reload fi ## @@ -37,16 +34,21 @@ if [ -f /mnt/config/known_hosts ]; then cp -f /mnt/config/known_hosts /root/.ssh/known_hosts chmod 600 /root/.ssh/known_hosts + + systemctl start dropbear +else + rm -f /root/.ssh/known_hosts + systemctl stop dropbear fi ## # Firmware update -if ls /mnt/config/*.rauc > /dev/null; then +if ls /mnt/config/*.raucb > /dev/null; then echo "[Info] Performe a firmware update" - rauc_filename=$(ls /mnt/config/*.rauc | head -n 1) + rauc_filename=$(ls /mnt/config/*.raucb | head -n 1) rauc install /mnt/config/$rauc_filename fi # Cleanup config partition -umount /mnt/config +systemctl stop mnt-config.mount diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-rate b/buildroot-external/rootfs-overlay/usr/sbin/hassos-rate new file mode 100755 index 000000000..79bbe662a --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-rate @@ -0,0 +1,27 @@ +#!/bin/sh +set -e + + +function mark_good() { + rauc status mark-good + exit 0 +} + +function mark_bad() { + rauc status mark-bad + systemctl reboot +} + +#### Check system #### + +# Docker state +if ! systemctl -q is-active docker; then + mark_bad +fi + +# Docker state +if ! systemctl -q is-active hassos-supervisor; then + mark_bad +fi + +mark_good diff --git a/buildroot-external/scripts/hdd-image.sh b/buildroot-external/scripts/hdd-image.sh index 911551ae1..41bab4700 100755 --- a/buildroot-external/scripts/hdd-image.sh +++ b/buildroot-external/scripts/hdd-image.sh @@ -18,8 +18,8 @@ DATA_SIZE=1G function create_boot_image() { - local boot_data="${1}/boot" - local boot_img="${1}/boot.vfat" + local boot_data="${BINARIES_DIR}/boot" + local boot_img="${BINARIES_DIR}/boot.vfat" echo "mtools_skip_check=1" > ~/.mtoolsrc dd if=/dev/zero of=${boot_img} bs=${BOOT_SIZE} count=1 @@ -29,7 +29,7 @@ function create_boot_image() { function create_overlay_image() { - local overlay_img="${1}/overlay.ext4" + local overlay_img="${BINARIES_DIR}/overlay.ext4" dd if=/dev/zero of=${overlay_img} bs=${OVERLAY_SIZE} count=1 mkfs.ext4 -L "hassos-overlay" -E lazy_itable_init=0,lazy_journal_init=0 ${overlay_img} @@ -37,39 +37,41 @@ function create_overlay_image() { function create_kernel_image() { - local kernel0_img="${1}/kernel0.ext4" - local kernel1_img="${1}/kernel1.ext4" - local kernel=${1}/${2} + local kernel_img="${BINARIES_DIR}/kernel.ext4" + local kernel="${BINARIES_DIR}/${KERNEL_FILE}" # Make image - dd if=/dev/zero of=${kernel0_img} bs=${KERNEL_SIZE} count=1 - mkfs.ext4 -L "hassos-kernel0" -E lazy_itable_init=0,lazy_journal_init=0 ${kernel0_img} - dd if=/dev/zero of=${kernel1_img} bs=${KERNEL_SIZE} count=1 - mkfs.ext4 -L "hassos-kernel1" -E lazy_itable_init=0,lazy_journal_init=0 ${kernel1_img} + dd if=/dev/zero of=${kernel_img} bs=${KERNEL_SIZE} count=1 + mkfs.ext4 -L "hassos-kernel" -E lazy_itable_init=0,lazy_journal_init=0 ${kernel_img} # Mount / init file structs mkdir -p /mnt/data/ - mount -o loop ${kernel0_img} /mnt/data + mount -o loop ${kernel_img} /mnt/data cp -f ${kernel} /mnt/data/ umount /mnt/data } +function prepare_disk_image() { + create_boot_image + create_overlay_image + create_kernel_image +} + + function create_disk_image() { - local boot_img="${1}/boot.vfat" - local rootfs_img="${1}/rootfs.squashfs" - local overlay_img="${1}/overlay.ext4" - local data_img="${1}/data.ext4" - local kernel0_img="${1}/kernel0.ext4" - local kernel1_img="${1}/kernel1.ext4" - local hdd_img=${2} - local hdd_count=${3:-2} + local boot_img="${BINARIES_DIR}/boot.vfat" + local rootfs_img="${BINARIES_DIR}/rootfs.squashfs" + local overlay_img="${BINARIES_DIR}/overlay.ext4" + local data_img="${BINARIES_DIR}/data.ext4" + local kernel_img="${BINARIES_DIR}/kernel.ext4" + local hdd_img="$(hassos_image_name img)" + local hdd_count=${1:-2} local loop_dev="/dev/mapper/$(losetup -f | cut -d'/' -f3)" local boot_offset=0 local rootfs_offset=0 - local kernel0_offset=0 - local kernel1_offset=0 + local kernel_offset=0 local overlay_offset=0 local data_offset=0 @@ -81,13 +83,12 @@ function create_disk_image() { boot_offset="$(sgdisk -F ${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} - kernel0_offset="$(sgdisk -F ${hdd_img})" + kernel_offset="$(sgdisk -F ${hdd_img})" sgdisk -n 2:0:+${KERNEL_SIZE} -c 2:"hassos-kernel0" -t 2:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 2:${KERNEL0_UUID} ${hdd_img} rootfs_offset="$(sgdisk -F ${hdd_img})" sgdisk -n 3:0:+${SYSTEM_SIZE} -c 3:"hassos-system0" -t 3:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 3:${SYSTEM0_UUID} ${hdd_img} - kernel1_offset="$(sgdisk -F ${hdd_img})" sgdisk -n 4:0:+${KERNEL_SIZE} -c 4:"hassos-kernel1" -t 4:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 4:${KERNEL1_UUID} ${hdd_img} sgdisk -n 5:0:+${SYSTEM_SIZE} -c 5:"hassos-system1" -t 5:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 5:${SYSTEM1_UUID} ${hdd_img} @@ -103,8 +104,7 @@ function create_disk_image() { # Write Images sgdisk -v dd if=${boot_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${boot_offset} - dd if=${kernel0_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${kernel0_offset} - dd if=${kernel1_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${kernel1_offset} + dd if=${kernel_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${kernel_offset} dd if=${rootfs_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${rootfs_offset} dd if=${overlay_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${overlay_offset} dd if=${data_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${data_offset} @@ -112,8 +112,26 @@ function create_disk_image() { function fix_disk_image_mbr() { - local hdd_img=${1} + local hdd_img="$(hassos_image_name img)" sgdisk -t 1:"E3C9E316-0B5C-4DB8-817D-F92DF00215AE" ${hdd_img} dd if=${BR2_EXTERNAL_HASSOS_PATH}/misc/mbr.img of=${hdd_img} conv=notrunc bs=512 count=1 } + + +function convert_disk_image_vmdk() { + local hdd_img="$(hassos_image_name img)" + local hdd_vmdk="$(hassos_image_name vmdk)" + + rm -f ${hdd_vmdk} + qemu-img convert -O vmdk ${hdd_img} ${hdd_vmdk} + rm -f ${hdd_img} +} + + +function convert_disk_image_gz() { + local hdd_img="$(hassos_image_name img)" + + rm -f ${hdd_img}.gz + gzip --best ${hdd_img} +} diff --git a/buildroot-external/scripts/name.sh b/buildroot-external/scripts/name.sh new file mode 100644 index 000000000..2307427e0 --- /dev/null +++ b/buildroot-external/scripts/name.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +function hassos_image_name() { + echo "${BINARIES_DIR}/${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.${1}" +} + +function hassos_rauc_compatible() { + echo "${HASSOS_ID}-${BOARD_ID}" +} + +function hassos_version() { + echo "${VERSION_MAJOR}.${VERSION_BUILD}" +} diff --git a/buildroot-external/scripts/ota.sh b/buildroot-external/scripts/ota.sh new file mode 100644 index 000000000..589b3a1a7 --- /dev/null +++ b/buildroot-external/scripts/ota.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +function create_ota_update() { + local ota_file="$(hassos_image_name raucb)" + local rauc_folder="${BINARIES_DIR}/rauc" + local boot="${BINARIES_DIR}/boot.vfat" + local kernel="${BINARIES_DIR}/kernel.ext4" + local rootfs="${BINARIES_DIR}/rootfs.squashfs" + local key="/build/key.pem" + local cert="/build/cert.pem" + + rm -rf ${rauc_folder} ${ota_file} + mkdir -p ${rauc_folder} + + cp -f ${kernel} ${rauc_folder}/kernel.ext4 + cp -f ${boot} ${rauc_folder}/boot.vfat + cp -f ${rootfs} ${rauc_folder}/rootfs.img + cp -f ${BR2_EXTERNAL_HASSOS_PATH}/misc/rauc-hook ${rauc_folder}/hook + + ( + echo "[update]" + echo "compatible=$(hassos_rauc_compatible)" + echo "version=$(hassos_version)" + echo "[hooks]" + echo "filename=hook" + echo "[image.boot]" + echo "filename=boot.vfat" + echo "hooks=pre-install;post-install" + echo "[image.kernel]" + echo "filename=kernel.ext4" + echo "[image.rootfs]" + echo "filename=rootfs.img" + ) > ${rauc_folder}/manifest.raucm + + rauc bundle -d --cert=${cert} --key=${key} ${rauc_folder} ${ota_file} +} diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index 904c4fb55..8ba16f109 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -7,6 +7,8 @@ BOARD_DIR=${2} . ${SCRIPT_DIR}/rootfs-layer.sh . ${BR2_EXTERNAL_HASSOS_PATH}/info . ${BOARD_DIR}/info +. ${SCRIPT_DIR}/name.sh + # HassOS tasks fix_rootfs @@ -32,12 +34,20 @@ install_hassos_cli ) > ${TARGET_DIR}/etc/machine-info # Settup rauc -sed -i "s/%COMPATIBLE%/${HASSOS_ID}-${BOARD_ID}/g" ${TARGET_DIR}/etc/rauc/system.conf +sed -i "s/%COMPATIBLE%/$(hassos_rauc_compatible)/g" ${TARGET_DIR}/etc/rauc/system.conf sed -i "s/%BOOTLOADER%/${BOOTLOADER}/g" ${TARGET_DIR}/etc/rauc/system.conf # Settup the correct CA -if [ "${DEPLOYMENT}" == "development" ]; then - cp ${BR2_EXTERNAL_HASSOS_PATH}/misc/provisioning-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem -else +if [ "${DEPLOYMENT}" == "production" ]; then cp ${BR2_EXTERNAL_HASSOS_PATH}/misc/rel-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem +else + cp ${BR2_EXTERNAL_HASSOS_PATH}/misc/dev-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem fi + +# Bootloader options +if [ "${BOOTLOADER}" == "uboot" ]; then + cp ${BR2_EXTERNAL_HASSOS_PATH}/misc/fw_env.config ${TARGET_DIR}/etc/fw_env.config +else + cp ${BR2_EXTERNAL_HASSOS_PATH}/misc/barebox-state-efi.dtb ${TARGET_DIR}/etc/barebox-state.dtb +fi + diff --git a/scripts/build-all.sh b/scripts/build-all.sh index f8c84efce..f3d075243 100755 --- a/scripts/build-all.sh +++ b/scripts/build-all.sh @@ -8,7 +8,7 @@ for platform in "${all_platforms[@]}"; do make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external \ ${platform}_defconfig make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external - cp -f /build/buildroot/output/images/hassos_* /build/RL/ + cp -f /build/buildroot/output/images/hassos_* /build/release/ make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external \ clean