From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id D3C2E1FF15C for ; Wed, 13 Nov 2024 14:59:36 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 0FB3C1693B; Wed, 13 Nov 2024 14:59:24 +0100 (CET) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Wed, 13 Nov 2024 14:59:04 +0100 Message-ID: <20241113135908.1622968-3-c.heiss@proxmox.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241113135908.1622968-1-c.heiss@proxmox.com> References: <20241113135908.1622968-1-c.heiss@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.030 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [RFC PATCH installer 2/5] fix #5579: first-boot: add initial service packaging X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" While there is the `systemd-first-boot.service`, it uses the non-existence of `/etc/machine-id` as condition to run. As we already set up that file in the installer ourselves, we cannot use that. Instead our service depends on a custom flag file in /var/lib/proxmox-first-boot and will only run if that is present. Signed-off-by: Christoph Heiss --- Makefile | 13 ++++++++++--- debian/control | 7 +++++++ debian/proxmox-first-boot.install | 1 + debian/rules.proxmox-first-boot | 13 +++++++++++++ proxmox-first-boot/Makefile | 11 +++++++++++ .../etc/proxmox-first-boot.service | 16 ++++++++++++++++ 6 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 debian/proxmox-first-boot.install create mode 100644 debian/rules.proxmox-first-boot create mode 100644 proxmox-first-boot/Makefile create mode 100644 proxmox-first-boot/etc/proxmox-first-boot.service diff --git a/Makefile b/Makefile index d85347f..a17f6c5 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,10 @@ BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM) DEB=$(PACKAGE)_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb ASSISTANT_DEB=proxmox-auto-install-assistant_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb +FIRST_BOOT_DEB=proxmox-first-boot_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb + +ALL_DEBS = $(DEB) $(ASSISTANT_DEB) $(FIRST_BOOT_DEB) + DSC=$(PACKAGE)_$(DEB_VERSION).dsc CARGO ?= cargo @@ -61,6 +65,7 @@ $(BUILDDIR): proxmox-tui-installer/ \ proxmox-installer-common/ \ proxmox-post-hook \ + proxmox-first-boot \ test/ \ $(SHELL_SCRIPTS) \ $@.tmp @@ -73,9 +78,10 @@ country.dat: country.pl deb: $(DEB) $(ASSISTANT_DEB): $(DEB) +$(FIRST_BOOT_DEB): $(DEB) $(DEB): $(BUILDDIR) cd $(BUILDDIR); dpkg-buildpackage -b -us -uc - lintian $(DEB) $(ASSISTANT_DEB) + lintian $(ALL_DEBS) test-$(DEB): $(INSTALLER_SOURCES) rsync --exclude='test*.img' --exclude='*.deb' --exclude='build' -a * build @@ -114,6 +120,7 @@ HTMLDIR=$(VARLIBDIR)/html/common install: $(INSTALLER_SOURCES) $(COMPILED_BINS) $(MAKE) -C banner install $(MAKE) -C Proxmox install + $(MAKE) -C proxmox-first-boot install install -D -m 644 interfaces $(DESTDIR)/etc/network/interfaces install -D -m 755 fake-start-stop-daemon $(VARLIBDIR)/fake-start-stop-daemon install -D -m 755 policy-disable-rc.d $(VARLIBDIR)/policy-disable-rc.d @@ -143,8 +150,8 @@ cargo-build: .PHONY: upload upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION) -upload: $(DEB) $(ASSISTANT_DEB) - tar cf - $(DEB) $(ASSISTANT_DEB) | ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) +upload: $(ALL_DEBS) + tar cf - $(ALL_DEBS) | ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) %.img: truncate -s 2G $@ diff --git a/debian/control b/debian/control index ff00cc2..fd0f4df 100644 --- a/debian/control +++ b/debian/control @@ -62,3 +62,10 @@ Description: Assistant to help with automated installations Provides a helper that can assist with creating an answer file for a automated installation of a Proxmox project, and preparing a official ISO image to use this answer file. + +Package: proxmox-first-boot +Architecture: any +Depends: ${misc:Depends}, +Description: Service which runs on the first system boot for additional setup + Provides a service which will run on the first boot if the a script was + configured through the auto-installer. diff --git a/debian/proxmox-first-boot.install b/debian/proxmox-first-boot.install new file mode 100644 index 0000000..52f25d2 --- /dev/null +++ b/debian/proxmox-first-boot.install @@ -0,0 +1 @@ +lib/systemd/system/proxmox-first-boot.service diff --git a/debian/rules.proxmox-first-boot b/debian/rules.proxmox-first-boot new file mode 100644 index 0000000..5b30d35 --- /dev/null +++ b/debian/rules.proxmox-first-boot @@ -0,0 +1,13 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +#DH_VERBOSE = 1 + +%: + dh $@ + +override_dh_missing: + dh_missing --fail-missing + +override_dh_installsystemd: + dh_installsystemd --no-stop-on-upgrade --no-start proxmox-first-boot.service diff --git a/proxmox-first-boot/Makefile b/proxmox-first-boot/Makefile new file mode 100644 index 0000000..137de23 --- /dev/null +++ b/proxmox-first-boot/Makefile @@ -0,0 +1,11 @@ +all: + +DESTDIR = +LIBSYSTEMD_DIR = $(DESTDIR)/lib/systemd/system + +.PHONY: install +install: etc/proxmox-first-boot.service + install -D -m 644 etc/proxmox-first-boot.service $(LIBSYSTEMD_DIR)/proxmox-first-boot.service + +.PHONY: clean +clean: diff --git a/proxmox-first-boot/etc/proxmox-first-boot.service b/proxmox-first-boot/etc/proxmox-first-boot.service new file mode 100644 index 0000000..046bb24 --- /dev/null +++ b/proxmox-first-boot/etc/proxmox-first-boot.service @@ -0,0 +1,16 @@ +[Unit] +Description=Proxmox First Boot Setup +After=systemd-remount-fs.service +Before=network-pre.target +Wants=network-pre.target +ConditionPathExists=/var/lib/proxmox-first-boot/pending-first-boot-setup +ConditionPathIsReadWrite=/var/lib + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/var/lib/proxmox-first-boot/proxmox-first-boot +ExecStartPost=/usr/bin/rm -v /var/lib/proxmox-first-boot/pending-first-boot-setup + +[Install] +WantedBy=network.target -- 2.47.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel