From eea4182c8d82424a0df7b2ceb4261a51f7cd6286 Mon Sep 17 00:00:00 2001 From: Zac Mrowicki Date: Fri, 22 Jan 2021 19:07:45 +0000 Subject: [PATCH] Add a systemd mount unit for CD-ROM devices This change adds a mount unit that will mount a CD-ROM device located at /dev/cdrom to /media/cdrom if that device exists. systemd includes a udev rule to symlink a suspected CD-ROM device to /dev/cdrom. The primary use of said device to supply user data to a bottlerocket host. --- packages/filesystem/filesystem.spec | 1 + packages/release/media-cdrom.mount | 21 +++++++++++++++++++++ packages/release/release.spec | 6 +++++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 packages/release/media-cdrom.mount diff --git a/packages/filesystem/filesystem.spec b/packages/filesystem/filesystem.spec index 317f5484262..d74f22b66f8 100644 --- a/packages/filesystem/filesystem.spec +++ b/packages/filesystem/filesystem.spec @@ -29,6 +29,7 @@ mkdir -p %{buildroot}%{_cross_mandir} mkdir -p %{buildroot}%{_cross_localstatedir} mkdir -p %{buildroot}/{boot,dev,proc,root,run,sys,tmp} mkdir -p %{buildroot}/{home,local,media,mnt,opt,srv} +mkdir -p %{buildroot}/media/cdrom ln -s .%{_cross_prefix} %{buildroot}%{_prefix} ln -s .%{_cross_bindir} %{buildroot}/bin diff --git a/packages/release/media-cdrom.mount b/packages/release/media-cdrom.mount new file mode 100644 index 00000000000..27777f785dd --- /dev/null +++ b/packages/release/media-cdrom.mount @@ -0,0 +1,21 @@ +[Unit] +Description=CD-ROM mount (/media/cdrom) +# Only run this unit if /dev/cdrom exists and is tracked via systemd. (systemd +# ships with a udev rule to tag and symlink the first suspected cdrom device to +# /dev/cdrom) +Requires=dev-cdrom.device +After=dev-cdrom.device +DefaultDependencies=no +Conflicts=umount.target +Before=local-fs.target umount.target + +[Mount] +What=/dev/cdrom +Where=/media/cdrom +Type=iso9660 +Options=defaults,noexec + +[Install] +# This dependency ensures that systemd attempts to run this unit if the device +# exists. +WantedBy=dev-cdrom.device diff --git a/packages/release/release.spec b/packages/release/release.spec index da99539b9e8..1bf20c01e8f 100644 --- a/packages/release/release.spec +++ b/packages/release/release.spec @@ -25,6 +25,9 @@ Source1008: opt.mount Source1009: var-lib-bottlerocket.mount Source1010: etc-cni.mount +# CD-ROM mount +Source1015: media-cdrom.mount + # Mounts that require build-time edits. Source1020: var-lib-kernel-devel-lower.mount.in Source1021: usr-src-kernels.mount.in @@ -104,7 +107,7 @@ EOF install -d %{buildroot}%{_cross_unitdir} install -p -m 0644 \ - %{S:1002} %{S:1006} %{S:1007} %{S:1008} %{S:1009} %{S:1010} \ + %{S:1002} %{S:1006} %{S:1007} %{S:1008} %{S:1009} %{S:1010} %{S:1015} \ %{buildroot}%{_cross_unitdir} LOWERPATH=$(systemd-escape --path %{_cross_sharedstatedir}/kernel-devel/lower) @@ -138,6 +141,7 @@ install -p -m 0644 %{S:201} %{buildroot}%{_cross_templatedir}/proxy-env %{_cross_unitdir}/var.mount %{_cross_unitdir}/opt.mount %{_cross_unitdir}/etc-cni.mount +%{_cross_unitdir}/media-cdrom.mount %{_cross_unitdir}/*-lower.mount %{_cross_unitdir}/*-kernels.mount %{_cross_unitdir}/*-licenses.mount