mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-07-28 15:36:29 +00:00
Support systemd ConditionFirstBoot (#2409)
By default ConditionFirstBoot is ankered to the presence of /etc/machine-id. However, in our case /etc/machine-id is a bind mount, which makes the first boot condition non-working. Since machine-id is stored by the bootloader on HAOS, use the boot loaders knowledge and pass the information to systemd.
This commit is contained in:
parent
2b0187604b
commit
24f3efdbe3
@ -54,9 +54,13 @@ if [ "$default" -eq 99 ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$MACHINE_ID" == "" ]; then
|
||||||
|
boot_condition="systemd.condition-first-boot=true"
|
||||||
|
fi
|
||||||
|
|
||||||
save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID
|
save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID
|
||||||
|
|
||||||
default_cmdline="rootwait zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=$MACHINE_ID fsck.repair=yes"
|
default_cmdline="rootwait zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=$MACHINE_ID fsck.repair=yes $boot_condition"
|
||||||
file_env -f ($root)/cmdline.txt cmdline
|
file_env -f ($root)/cmdline.txt cmdline
|
||||||
|
|
||||||
# root is a full HDD/partition definition in GRUB format like hd0,gpt1
|
# root is a full HDD/partition definition in GRUB format like hd0,gpt1
|
||||||
|
@ -16,8 +16,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro rootwait"
|
||||||
|
@ -18,8 +18,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
||||||
|
@ -18,8 +18,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} clk_ignore_unused usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} clk_ignore_unused usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
||||||
|
@ -16,8 +16,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro rootwait"
|
||||||
|
@ -18,8 +18,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
||||||
|
@ -20,8 +20,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
||||||
|
@ -18,8 +18,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=48617373-06 rootfstype=squashfs ro rootwait"
|
||||||
|
@ -54,9 +54,13 @@ if [ "$default" -eq 99 ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$MACHINE_ID" == "" ]; then
|
||||||
|
boot_condition="systemd.condition-first-boot=true"
|
||||||
|
fi
|
||||||
|
|
||||||
save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID
|
save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID
|
||||||
|
|
||||||
default_cmdline="rootwait zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=$MACHINE_ID fsck.repair=yes"
|
default_cmdline="rootwait zram.enabled=1 zram.num_devices=3 net.naming-scheme=v250 systemd.machine_id=$MACHINE_ID fsck.repair=yes $boot_condition"
|
||||||
file_env -f ($root)/cmdline.txt cmdline
|
file_env -f ($root)/cmdline.txt cmdline
|
||||||
|
|
||||||
# root is a full HDD/partition definition in GRUB format like hd0,gpt1
|
# root is a full HDD/partition definition in GRUB format like hd0,gpt1
|
||||||
|
@ -17,8 +17,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 rootwait net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} cgroup_enable=memory fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 rootwait net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} cgroup_enable=memory fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
|
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
|
||||||
|
@ -17,8 +17,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 rootwait net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} cgroup_enable=memory fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 rootwait net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} cgroup_enable=memory fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# HassOS system A/B
|
# HassOS system A/B
|
||||||
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
|
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
|
||||||
|
@ -17,8 +17,11 @@ test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
|
|||||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
|
||||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
|
||||||
|
|
||||||
|
# Allows ConditionFirstBoot=
|
||||||
|
test -n "${MACHINE_ID}" || setenv BOOT_CONDITION "systemd.condition-first-boot=true"
|
||||||
|
|
||||||
# HassOS bootargs
|
# HassOS bootargs
|
||||||
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 rootwait net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} cgroup_enable=memory fsck.repair=yes"
|
setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 rootwait net.naming-scheme=v250 systemd.machine_id=${MACHINE_ID} cgroup_enable=memory fsck.repair=yes ${BOOT_CONDITION}"
|
||||||
|
|
||||||
# Red Button pressed?
|
# Red Button pressed?
|
||||||
if gpio input GPIO27; then
|
if gpio input GPIO27; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user