diff --git a/meta-aws-demos/recipes-core/images/aws-iot-greengrass-lite-demo-ec2-image/aws-iot-greengrass-lite-demo-ec2-image.bb b/meta-aws-demos/recipes-core/images/aws-iot-greengrass-lite-demo-ec2-image/aws-iot-greengrass-lite-demo-ec2-image.bb index f13df68a..0686a557 100644 --- a/meta-aws-demos/recipes-core/images/aws-iot-greengrass-lite-demo-ec2-image/aws-iot-greengrass-lite-demo-ec2-image.bb +++ b/meta-aws-demos/recipes-core/images/aws-iot-greengrass-lite-demo-ec2-image/aws-iot-greengrass-lite-demo-ec2-image.bb @@ -63,26 +63,10 @@ rootfs_user_fstab () { # Allow user to use sudo echo "user ALL=(ALL) NOPASSWD: ALL" >> ${IMAGE_ROOTFS}/etc/sudoers - # enable serial console auto login for root sed -i '/^\s*ExecStart\b/ s/getty /&--autologin root /' \ "${IMAGE_ROOTFS}${systemd_system_unitdir}/serial-getty@.service" -# reload services after data partition is mounted -cat > ${IMAGE_ROOTFS}/lib/systemd/system/reload-systemd-data.service << 'EOF' -[Unit] -Description=Reload systemd services from data partition -After=data.mount - -[Service] -Type=oneshot -ExecStart=/bin/systemctl daemon-reload -ExecStart=/bin/systemctl start --all -RemainAfterExit=yes -EOF - -ln -sf /lib/systemd/system/reload-systemd-data.service ${IMAGE_ROOTFS}/lib/systemd/system/reload-systemd-data.service - # not necessary for this image rm ${IMAGE_ROOTFS}//usr/lib/systemd/system/systemd-vconsole-setup.service @@ -90,28 +74,15 @@ rm ${IMAGE_ROOTFS}//usr/lib/systemd/system/systemd-vconsole-setup.service cp -a ${IMAGE_ROOTFS}/etc/systemd/system/* ${IMAGE_ROOTFS}/lib/systemd/system/ rm -rf ${IMAGE_ROOTFS}/etc/systemd/system/* -# cloud-intit service needs to be started after data partition is mounted -mkdir -p ${IMAGE_ROOTFS}/lib/systemd/system/cloud-init.service.d/ -cat << EOF > ${IMAGE_ROOTFS}/lib/systemd/system/cloud-init.service.d/overrides.conf +# cloud-init-local service also needs to wait for data partition mounts +mkdir -p ${IMAGE_ROOTFS}/lib/systemd/system/cloud-init-local.service.d/ +cat << EOF > ${IMAGE_ROOTFS}/lib/systemd/system/cloud-init-local.service.d/overrides.conf [Unit] -After=local-fs.target -After=rauc-grow-data-partition.service +RequiresMountsFor=/etc/ssh/ RequiresMountsFor=/home RequiresMountsFor=/root -RequiresMountsFor=/etc/ssh/ - -[Service] -Restart=on-failure -RestartSec=30 -StartLimitInterval=90 -StartLimitBurst=3 -ExecStopPost=/usr/bin/cloud-init clean - -[Install] -WantedBy=multi-user.target EOF - # overwrite the default fstab, adding customization for this image cat << EOF > ${IMAGE_ROOTFS}/${sysconfdir}/fstab /dev/root / auto rw 1 1 @@ -167,7 +138,6 @@ fi install -d ${IMAGE_ROOTFS}/data/etc/ssh/ mv -f ${IMAGE_ROOTFS}/etc/ssh/* ${IMAGE_ROOTFS}/data/etc/ssh/ - } #### diff --git a/meta-aws-demos/recipes-core/rauc/files/rauc-grow-data-partition.service b/meta-aws-demos/recipes-core/rauc/files/rauc-grow-data-partition.service deleted file mode 100644 index bcba29bd..00000000 --- a/meta-aws-demos/recipes-core/rauc/files/rauc-grow-data-partition.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Service to grow data partition size -DefaultDependencies=no -Before=home.mount - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/sbin/parted --script /dev/mmcblk0 resizepart 4 100% - -[Install] -WantedBy=home.mount diff --git a/meta-aws-demos/recipes-core/rauc/rauc_%.bbappend b/meta-aws-demos/recipes-core/rauc/rauc_%.bbappend index 2838a5d9..1995a5f1 100644 --- a/meta-aws-demos/recipes-core/rauc/rauc_%.bbappend +++ b/meta-aws-demos/recipes-core/rauc/rauc_%.bbappend @@ -1,11 +1,16 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files:" -SRC_URI += "file://rauc.service.d/override.conf" +SRC_URI:append = " file://rauc.service.d/override.conf" do_install:append() { install -d ${D}${systemd_system_unitdir}/rauc.service.d install -m 0644 ${WORKDIR}/rauc.service.d/override.conf ${D}${systemd_system_unitdir}/rauc.service.d/ } +do_install:append:rpi() { + # Remove ExecStart line for mmcblk0 + sed -i '/ExecStart=.*mmcblk0.*resizepart 6/d' ${D}${systemd_system_unitdir}/rauc-grow-data-partition.service +} + # enable debug logs for rauc to see stats of adaptive updates -FILES:${PN} += "${systemd_system_unitdir}/rauc.service.d/override.conf" +FILES:${PN}:append = " ${systemd_system_unitdir}/rauc.service.d/override.conf" diff --git a/meta-aws-demos/recipes-extended/cloud-init/cloud-init_%.bbappend b/meta-aws-demos/recipes-extended/cloud-init/cloud-init_%.bbappend new file mode 100644 index 00000000..91d4134b --- /dev/null +++ b/meta-aws-demos/recipes-extended/cloud-init/cloud-init_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI:append = " file://cloud-init.service" + +do_install:append() { + install -m 0644 ${WORKDIR}/cloud-init.service ${D}${systemd_system_unitdir}/cloud-init.service +} diff --git a/meta-aws-demos/recipes-extended/cloud-init/files/cloud-init.service b/meta-aws-demos/recipes-extended/cloud-init/files/cloud-init.service new file mode 100644 index 00000000..f407ec44 --- /dev/null +++ b/meta-aws-demos/recipes-extended/cloud-init/files/cloud-init.service @@ -0,0 +1,36 @@ +[Unit] +Description=Initial cloud-init job (metadata service crawler) +DefaultDependencies=no +Wants=cloud-init-local.service +Wants=sshd-keygen.service +Wants=sshd.service +After=cloud-init-local.service +After=systemd-networkd-wait-online.service +After=networking.service +After=rauc-grow-data-partition.service +Before=network-online.target +Before=sshd-keygen.service +Before=sshd.service +Before=shutdown.target +Conflicts=shutdown.target +ConditionPathExists=!/etc/cloud/cloud-init.disabled +ConditionKernelCommandLine=!cloud-init=disabled +ConditionEnvironment=!KERNEL_CMDLINE=cloud-init=disabled + +[Service] +Type=oneshot +ExecStart=/usr/bin/cloud-init init +RemainAfterExit=yes +TimeoutSec=0 +Restart=on-failure +RestartSec=30 +StartLimitInterval=90 +StartLimitBurst=3 +ExecStopPost=/usr/bin/cloud-init clean + +# Output needs to appear in instance console output +StandardOutput=journal+console + +[Install] +WantedBy=cloud-init.target +WantedBy=multi-user.target