From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6599936908158042112 X-Received: by 2002:adf:fa8b:: with SMTP id h11-v6mr1799466wrr.14.1536667560339; Tue, 11 Sep 2018 05:06:00 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:103:: with SMTP id 3-v6ls583752wmb.7.canary-gmail; Tue, 11 Sep 2018 05:05:59 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYusk8LA5rwLPESzWEyvkaWgQMRhQP08MzGYel9QziBWv/UGRFRgFqPc/cMKdh8HfgDkXdB X-Received: by 2002:a1c:a014:: with SMTP id j20-v6mr146400wme.15.1536667559812; Tue, 11 Sep 2018 05:05:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536667559; cv=none; d=google.com; s=arc-20160816; b=JT2r8HvqqPmKI1OzRg0K9Cxvt5nDgFYMkqtuCyLpW+cTGQ5RigO/WMkFcWR6N8SXVz 7p5dryC0IO6MhN78oF3e92FApAeRFP+jSdp+L6fdHG3xjTc4Y14xYjMBJY0XGbzaychB Ocyey58uEKDoc4Rg+bd5J3fHLzJMdGb19/8+lIEEoJ3/tJKblny02XwilJlbkVyraXkn 7CmRYzJKdN1r77VnO0vXaPuYyQLa3vlEMJCuwXyI+mVcZv4Zsz5dFthheMyFO+smmXjL zTiH7dk1SMJYorURHJwem2ssX9sm0G9odARwcpMkt018V9NHWrWEKPLL+sLSx2oPAVks UcJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:references:in-reply-to:message-id:date :subject:to:from; bh=u9R6lWrf8/x+f3heZbsjqvxpkLRUnEzzP75DlRJs0gk=; b=KpAYNXZ7JUi7Y5r+IJRzcLt46jiPza77DDCE9rDQzSKrPD64o4SBCVF2nuvAQPqn5V JJN2NU4ZKU/1aOxQiNm4vOiAUROpt1Ink6zv8i35YtdA9kBpYmc3Ji7SUcTBq5Z0I2Tx HpfTLVBppA7+ThOkEhkPL6dQ02BuryNxeBS0ilvJy41UsZaoy1Z6NNVFVuczGk86cyrl EoAIyoGJeSvPcI9biwiDZVaETR6Jwg2waAplvVpxgU67LJJxcMqzjwN2Trmfy0yvJwaA iURUAETv2BVdWXOT8ZFs8mI75Gw40CQHyXh2YqRALST7Rk9Q2Ht4PaQQHe2YKH+F4Hrr I/ww== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Return-Path: Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id 196-v6si387874wmx.1.2018.09.11.05.05.59 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 11 Sep 2018 05:05:59 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com Received: from mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id w8BC5w20024355 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 11 Sep 2018 14:05:59 +0200 Received: from md1f2u6c.ad001.siemens.net (md1q0hnc.ad001.siemens.net [139.25.68.37] (may be forged)) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id w8BC5vIa000884 for ; Tue, 11 Sep 2018 14:05:58 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH 16/16] meta: Add enable-fsck helper recipe Date: Tue, 11 Sep 2018 14:05:56 +0200 Message-Id: X-Mailer: git-send-email 2.16.4 In-Reply-To: References: In-Reply-To: References: X-TUID: UW3AMpNirsbO From: Jan Kiszka This is a run-once systemd service that enables checks for all regular filesystems on the target. We do this on the live system rather during build because we only have the full information required for populating the initramfs with the right tools available then - at least as long as we do not want to patch much more. Enable this feature in the demo local.conf by default because we have read/write filesystems here. Signed-off-by: Jan Kiszka --- meta-isar/conf/local.conf.sample | 2 +- meta/recipes-support/enable-fsck/enable-fsck.bb | 25 ++++++++++++++++++++++ .../enable-fsck/files/enable-fsck.service | 23 ++++++++++++++++++++ .../enable-fsck/files/enable-fsck.sh | 16 ++++++++++++++ meta/recipes-support/enable-fsck/files/postinst | 3 +++ 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-support/enable-fsck/enable-fsck.bb create mode 100644 meta/recipes-support/enable-fsck/files/enable-fsck.service create mode 100644 meta/recipes-support/enable-fsck/files/enable-fsck.sh create mode 100644 meta/recipes-support/enable-fsck/files/postinst diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample index 769d853..92588fe 100644 --- a/meta-isar/conf/local.conf.sample +++ b/meta-isar/conf/local.conf.sample @@ -159,7 +159,7 @@ CONF_VERSION = "1" # # The default list of extra packages to be installed. -IMAGE_INSTALL = "example-hello example-raw example-module" +IMAGE_INSTALL = "example-hello example-raw example-module enable-fsck" # # Enable cross-compilation support diff --git a/meta/recipes-support/enable-fsck/enable-fsck.bb b/meta/recipes-support/enable-fsck/enable-fsck.bb new file mode 100644 index 0000000..0413f79 --- /dev/null +++ b/meta/recipes-support/enable-fsck/enable-fsck.bb @@ -0,0 +1,25 @@ +# Resize last partition to full medium size on fist boot +# +# This software is a part of ISAR. +# Copyright (c) Siemens AG, 2018 +# +# SPDX-License-Identifier: MIT + +inherit dpkg-raw + +DESCRIPTION = "This service enables fsck on first boot" + +DEBIAN_DEPENDS = "systemd, sed, mount, initramfs-tools" + +SRC_URI = " \ + file://enable-fsck.service \ + file://enable-fsck.sh \ + file://postinst" + +do_install() { + install -d -m 755 ${D}/lib/systemd/system + install -m 644 ${WORKDIR}/enable-fsck.service ${D}/lib/systemd/system/ + + install -d -m 755 ${D}/usr/share/enable-fsck + install -m 755 ${WORKDIR}/enable-fsck.sh ${D}/usr/share/enable-fsck/ +} diff --git a/meta/recipes-support/enable-fsck/files/enable-fsck.service b/meta/recipes-support/enable-fsck/files/enable-fsck.service new file mode 100644 index 0000000..846497d --- /dev/null +++ b/meta/recipes-support/enable-fsck/files/enable-fsck.service @@ -0,0 +1,23 @@ +# This software is a part of ISAR. +# Copyright (c) Siemens AG, 2018 +# +# SPDX-License-Identifier: MIT + +[Unit] +Description=Enable fsck for mounted devices +DefaultDependencies=no +Conflicts=shutdown.target +After=systemd-remount-fs.service +Before=sysinit.target shutdown.target +ConditionPathIsReadWrite=/etc + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/share/enable-fsck/enable-fsck.sh +ExecStartPost=-/bin/systemctl disable enable-fsck.service +StandardOutput=syslog +StandardError=syslog + +[Install] +WantedBy=sysinit.target diff --git a/meta/recipes-support/enable-fsck/files/enable-fsck.sh b/meta/recipes-support/enable-fsck/files/enable-fsck.sh new file mode 100644 index 0000000..b3dce44 --- /dev/null +++ b/meta/recipes-support/enable-fsck/files/enable-fsck.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# +# Update rootfs device in fstab, enable checks for all regular filesystems +# +# This software is a part of ISAR. +# Copyright (c) Siemens AG, 2018 +# +# SPDX-License-Identifier: MIT + +set -e + +ROOT_DEV=$(/bin/findmnt -n -o SOURCE /) +sed -i -e 's|^/dev/root\([ ]\+.*[ ]\+\)0[ ]\+0|'$ROOT_DEV'\10 1|' \ + -e 's|^\(/dev/.*[ ]\+\)0[ ]\+0|\10 2|' /etc/fstab + +update-initramfs -u diff --git a/meta/recipes-support/enable-fsck/files/postinst b/meta/recipes-support/enable-fsck/files/postinst new file mode 100644 index 0000000..1c4c3bd --- /dev/null +++ b/meta/recipes-support/enable-fsck/files/postinst @@ -0,0 +1,3 @@ +#!/bin/sh + +systemctl enable enable-fsck.service -- 2.16.4