This repository was archived by the owner on Aug 25, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
Add mount and umount service units #47
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| [Unit] | ||
| Description=Mount OSTree /var | ||
| DefaultDependencies=false | ||
| OnFailure=emergency.target | ||
| OnFailureJobMode=isolate | ||
|
|
||
| # Make sure /sysroot is mounted first, since we're mounting under there | ||
| Requires=initrd-root-fs.target | ||
| After=initrd-root-fs.target | ||
|
|
||
| # Need to do this before Ignition mounts any other filesystems (potentially | ||
| # shadowing our own bind mount). | ||
| Before=ignition-mount.service | ||
|
|
||
| [Service] | ||
| Type=oneshot | ||
| RemainAfterExit=yes | ||
| ExecStart=/usr/sbin/coreos-mount-var mount | ||
| ExecStop=/usr/sbin/coreos-mount-var umount |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| #!/bin/bash | ||
| set -euo pipefail | ||
|
|
||
| fatal() { | ||
| echo "$@" >&2 | ||
| exit 1 | ||
| } | ||
|
|
||
| if [ $# -ne 1 ] || { [[ $1 != mount ]] && [[ $1 != umount ]]; }; then | ||
| fatal "Usage: $0 <mount|umount>" | ||
| fi | ||
|
|
||
| get_ostree_arg() { | ||
| # yes, this doesn't account for spaces within args, e.g. myarg="my val", but | ||
| # it still works for our purposes | ||
| ( | ||
| IFS=$' ' | ||
| # shellcheck disable=SC2013 | ||
| for arg in $(cat /proc/cmdline); do | ||
| if [[ $arg == ostree=* ]]; then | ||
| echo "${arg#ostree=}" | ||
| fi | ||
| done | ||
| ) | ||
| } | ||
|
|
||
| do_mount() { | ||
| ostree=$(get_ostree_arg) | ||
| if [ -z "${ostree}" ]; then | ||
| fatal "No ostree= kernel argument in /proc/cmdline" | ||
| fi | ||
|
|
||
| deployment_path=/sysroot/${ostree} | ||
| if [ ! -L "${deployment_path}" ]; then | ||
| fatal "${deployment_path} is not a symlink" | ||
| fi | ||
|
|
||
| stateroot_var_path=$(realpath "${deployment_path}/../../var") | ||
| if [ ! -d "${stateroot_var_path}" ]; then | ||
| fatal "${stateroot_var_path} is not a directory" | ||
| fi | ||
|
|
||
| echo "Mounting $stateroot_var_path" | ||
| mount --bind "$stateroot_var_path" /sysroot/var | ||
| } | ||
|
|
||
| do_umount() { | ||
| echo "Unmounting /sysroot/var" | ||
| umount /sysroot/var | ||
| } | ||
|
|
||
| "do_$1" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| [Unit] | ||
| Description=Populate OSTree /var | ||
| DefaultDependencies=false | ||
| OnFailure=emergency.target | ||
| OnFailureJobMode=isolate | ||
|
|
||
| # Need to do this with all mount points active | ||
| After=ignition-mount.service | ||
|
|
||
| # But *before* we start dumping files in there | ||
| Before=ignition-files.service | ||
|
|
||
| [Service] | ||
| Type=oneshot | ||
| RemainAfterExit=yes | ||
| ExecStart=/usr/sbin/coreos-populate-var |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| #!/bin/bash | ||
| set -euo pipefail | ||
|
|
||
| fatal() { | ||
| echo "$@" >&2 | ||
| exit 1 | ||
| } | ||
|
|
||
| if [ $# -ne 0 ]; then | ||
| fatal "Usage: $0" | ||
| fi | ||
|
|
||
| # See the similar code block in Anaconda, which handles this today for Atomic | ||
| # Host and Silverblue: | ||
| # https://github.com/rhinstaller/anaconda/blob/b9ea8ce4e68196b30a524c1cc5680dcdc4b89371/pyanaconda/payload/rpmostreepayload.py#L332 | ||
|
|
||
| # Simply manually mkdir /var/lib; the tmpfiles.d entries otherwise reference | ||
| # users/groups which we don't have access to from here (though... we *could* | ||
| # import them from the sysroot, and have nss-altfiles in the initrd, but meh... | ||
| # let's just wait for systemd-sysusers which will make this way easier: | ||
| # https://github.com/coreos/fedora-coreos-config/pull/56/files#r262592361). | ||
| mkdir -p /sysroot/var/lib | ||
|
|
||
| systemd-tmpfiles --create --boot --root=/sysroot \ | ||
| --prefix=/var/home \ | ||
| --prefix=/var/roothome \ | ||
| --prefix=/var/opt \ | ||
| --prefix=/var/srv \ | ||
| --prefix=/var/usrlocal \ | ||
| --prefix=/var/mnt \ | ||
| --prefix=/var/media | ||
|
|
||
| # Ask for /var to be relabeled. | ||
| # See also: https://github.com/coreos/ignition/issues/635. | ||
| mkdir -p /run/tmpfiles.d | ||
| echo "Z /var - - -" > /run/tmpfiles.d/var-relabel.conf | ||
|
|
||
| # XXX: https://github.com/systemd/systemd/pull/11903 | ||
| for unit in systemd-{journal-catalog-update,random-seed}.service; do | ||
| mkdir -p /run/systemd/system/${unit}.d | ||
| cat > /run/systemd/system/${unit}.d/after-tmpfiles.conf <<EOF | ||
| [Unit] | ||
| After=systemd-tmpfiles-setup.service | ||
| EOF | ||
| done |
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| [Unit] | ||
| Description=Ignition (mount) | ||
| DefaultDependencies=false | ||
| OnFailure=emergency.target | ||
| OnFailureJobMode=isolate | ||
|
|
||
| # Make sure the final /sysroot is ready first, since we're mounting under there | ||
| Requires=initrd-root-fs.target | ||
| After=initrd-root-fs.target | ||
|
|
||
| # Make sure root filesystem is remounted read-write if needed | ||
| After=ignition-remount-sysroot.service | ||
|
|
||
| # This is guaranteed through After=initrd-root-fs.target but just to | ||
| # be explicit. | ||
| After=ignition-disks.service | ||
|
|
||
| [Service] | ||
| Type=oneshot | ||
| RemainAfterExit=yes | ||
| EnvironmentFile=/run/ignition.env | ||
| ExecStart=/usr/bin/ignition --root=/sysroot --platform=${PLATFORM_ID} --stage=mount --log-to-stdout | ||
| ExecStop=/usr/bin/ignition --root=/sysroot --platform=${PLATFORM_ID} --stage=umount --log-to-stdout | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| #!/bin/bash | ||
| set -eu | ||
| set -euo pipefail | ||
|
|
||
| copy_file_if_exists() { | ||
| src="${1}"; dst="${2}" | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.