|
|
12e9116 |
#!/bin/bash
|
|
|
12e9116 |
|
|
|
12e9116 |
# Simple script to set up Edition defaults for Fedora
|
|
|
12e9116 |
# Keep this in sync with convert-to-edition.lua
|
|
|
12e9116 |
|
|
|
12e9116 |
OPTIND=1
|
|
|
12e9116 |
|
|
|
12e9116 |
VARIANT_FILE=/usr/lib/variant
|
|
|
12e9116 |
|
|
|
12e9116 |
# Defaults are set to provide the fewest suprises for anyone running this
|
|
|
12e9116 |
# script manually to convert their own system. In nearly all cases, it should
|
|
|
12e9116 |
# be possible to run `convert-to-edition -e <edition>` and get expected results
|
|
|
12e9116 |
|
|
|
12e9116 |
# By default, install new packages to ensure that all the necessary files are
|
|
|
12e9116 |
# available before symlinking. This must be skipped when running this file as
|
|
|
12e9116 |
# part of an RPM scriptlet.
|
|
|
12e9116 |
do_installation=1
|
|
|
12e9116 |
|
|
|
12e9116 |
# By default, do not modify the enabled or disabled state of any service on the
|
|
|
12e9116 |
# system. This should only be done when this script is run as part of system
|
|
|
12e9116 |
# installation or if the user is certain that they want to apply the changes to
|
|
|
12e9116 |
# the presets to their system.
|
|
|
12e9116 |
enable_presets=0
|
|
|
12e9116 |
|
|
|
12e9116 |
exit_usage() {
|
|
|
12e9116 |
echo "Usage: convert-to-edition [options] -e cloud|non-edition|server|workstation"
|
|
|
12e9116 |
echo " Options:"
|
|
|
12e9116 |
echo " -e: The edition to install (atomichost, cloud, non-edition, server or workstation)"
|
|
|
12e9116 |
echo " -i: Skip installing additional files and just update symlinks"
|
|
|
12e9116 |
echo " -p: Also enable newly-added systemd presets"
|
|
|
12e9116 |
exit 1
|
|
|
12e9116 |
}
|
|
|
12e9116 |
|
|
|
12e9116 |
while getopts "e:ihp" opt; do
|
|
|
12e9116 |
case "$opt" in
|
|
|
12e9116 |
e)
|
|
|
12e9116 |
EDITION=$OPTARG
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
i)
|
|
|
12e9116 |
do_installation=0
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
p)
|
|
|
12e9116 |
enable_presets=1
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
h)
|
|
|
12e9116 |
exit_usage
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
esac
|
|
|
12e9116 |
done
|
|
|
12e9116 |
|
|
|
12e9116 |
# None of the actions below can be run by a non-root user
|
|
|
12e9116 |
if [[ $EUID -ne 0 ]]; then
|
|
|
12e9116 |
echo "This script must be run as root" 1>&2
|
|
|
12e9116 |
exit 1
|
|
|
12e9116 |
fi
|
|
|
12e9116 |
|
|
|
12e9116 |
case $EDITION in
|
|
|
12e9116 |
atomichost)
|
|
|
12e9116 |
if [ $do_installation -gt 0 ]; then
|
|
|
12e9116 |
dnf install -y fedora-release-atomichost
|
|
|
12e9116 |
fi
|
|
|
12e9116 |
|
|
|
12e9116 |
echo "VARIANT_ID=atomic.host" > $VARIANT_FILE
|
|
|
12e9116 |
|
|
|
12e9116 |
# Ensure that the os-release file is pointing to the correct version
|
|
|
12e9116 |
ln -sf ./os.release.d/os-release-atomichost /usr/lib/os-release || :
|
|
|
12e9116 |
|
|
|
12e9116 |
# Ensure that the issue file is pointing to the correct version
|
|
|
12e9116 |
ln -sf ./os.release.d/issue-fedora /usr/lib/issue
|
|
|
12e9116 |
|
|
|
12e9116 |
# Remove any presets from other Editions.
|
|
|
12e9116 |
rm -f /usr/lib/systemd/system-preset/80-*.preset
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
|
|
|
12e9116 |
cloud)
|
|
|
12e9116 |
if [ $do_installation -gt 0 ]; then
|
|
|
12e9116 |
echo "Installing Fedora Cloud Packages"
|
|
|
12e9116 |
dnf install -y fedora-release-cloud
|
|
|
12e9116 |
fi
|
|
|
12e9116 |
|
|
|
12e9116 |
echo "VARIANT_ID=cloud" > $VARIANT_FILE
|
|
|
12e9116 |
|
|
|
12e9116 |
# Ensure that the os-release file is pointing to the correct version
|
|
|
12e9116 |
ln -sf ./os.release.d/os-release-cloud /usr/lib/os-release || :
|
|
|
12e9116 |
|
|
|
12e9116 |
# Ensure that the issue file is pointing to the correct version
|
|
|
12e9116 |
ln -sf ./os.release.d/issue-fedora /usr/lib/issue
|
|
|
12e9116 |
|
|
|
12e9116 |
# Remove any presets from other Editions.
|
|
|
12e9116 |
rm -f /usr/lib/systemd/system-preset/80-*.preset
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
|
|
|
12e9116 |
non-edition)
|
|
|
12e9116 |
echo "VARIANT_ID=nonproduct" > $VARIANT_FILE
|
|
|
12e9116 |
|
|
|
12e9116 |
# Ensure that the os-release file is pointing to the correct version
|
|
|
12e9116 |
ln -sf ./os.release.d/os-release-fedora /usr/lib/os-release || :
|
|
|
12e9116 |
|
|
|
12e9116 |
# Ensure that the issue file is pointing to the correct version
|
|
|
12e9116 |
ln -sf ./os.release.d/issue-fedora /usr/lib/issue
|
|
|
12e9116 |
|
|
|
12e9116 |
# Remove any presets from other Editions.
|
|
|
12e9116 |
rm -f /usr/lib/systemd/system-preset/80-*.preset
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
|
|
|
12e9116 |
server)
|
|
|
12e9116 |
if [ $do_installation -gt 0 ]; then
|
|
|
12e9116 |
echo "Installing Fedora Server Packages"
|
|
|
12e9116 |
dnf install -y fedora-release-server
|
|
|
12e9116 |
fi
|
|
|
12e9116 |
|
|
|
12e9116 |
echo "VARIANT_ID=server" > $VARIANT_FILE
|
|
|
12e9116 |
|
|
|
12e9116 |
# Ensure that the os-release and issue files are pointing to the correct
|
|
|
12e9116 |
# version
|
|
|
12e9116 |
ln -sf ./os.release.d/os-release-server /usr/lib/os-release
|
|
|
12e9116 |
ln -sf ./os.release.d/issue-server /usr/lib/issue
|
|
|
12e9116 |
|
|
|
12e9116 |
# Remove any presets from other Editions. This should always be a no-op,
|
|
|
12e9116 |
# but it's good to be explicit.
|
|
|
12e9116 |
# We reserve 80-*.preset for Editions
|
|
|
12e9116 |
rm -f /usr/lib/systemd/system-preset/80-*.preset
|
|
|
12e9116 |
|
|
|
12e9116 |
# Symlink in the proper preset
|
|
|
12e9116 |
ln -sf ../../os.release.d/presets/80-server.preset \
|
|
|
12e9116 |
/usr/lib/systemd/system-preset/80-server.preset
|
|
|
12e9116 |
|
|
|
12e9116 |
if [ $enable_presets -gt 0 ]; then
|
|
|
12e9116 |
# Enable new units specified by presets
|
|
|
12e9116 |
units=$(sed -n 's/^enable//p' \
|
|
|
12e9116 |
< /usr/lib/systemd/system-preset/80-server.preset)
|
|
|
12e9116 |
/usr/bin/systemctl preset $units >/dev/null 2>&1 || :
|
|
|
12e9116 |
|
|
|
12e9116 |
# Disable new units specified by presets
|
|
|
12e9116 |
units=$(sed -n 's/^disable//p' \
|
|
|
12e9116 |
< /usr/lib/systemd/system-preset/80-server.preset)
|
|
|
12e9116 |
/usr/bin/systemctl preset $units >/dev/null 2>&1 || :
|
|
|
12e9116 |
fi
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
|
|
|
12e9116 |
workstation)
|
|
|
12e9116 |
if [ $do_installation -gt 0 ]; then
|
|
|
12e9116 |
echo "Installing Fedora Workstation Packages"
|
|
|
12e9116 |
dnf install -y fedora-release-workstation
|
|
|
12e9116 |
fi
|
|
|
12e9116 |
|
|
|
12e9116 |
echo "VARIANT_ID=workstation" > $VARIANT_FILE
|
|
|
12e9116 |
# Ensure that the os-release and issue files are pointing to the correct
|
|
|
12e9116 |
# version
|
|
|
12e9116 |
ln -sf ./os.release.d/os-release-workstation /usr/lib/os-release
|
|
|
12e9116 |
ln -sf ./os.release.d/issue-fedora /usr/lib/issue
|
|
|
12e9116 |
|
|
|
12e9116 |
# Remove any presets from other Editions. This should always be a no-op,
|
|
|
12e9116 |
# but it's good to be explicit.
|
|
|
12e9116 |
# We reserve 80-*.preset for Editions
|
|
|
12e9116 |
rm -f /usr/lib/systemd/system-preset/80-*.preset
|
|
|
12e9116 |
|
|
|
12e9116 |
# Symlink in the proper preset
|
|
|
12e9116 |
ln -sf ../../os.release.d/presets/80-workstation.preset \
|
|
|
12e9116 |
/usr/lib/systemd/system-preset/80-workstation.preset
|
|
|
12e9116 |
|
|
|
12e9116 |
if [ $enable_presets -gt 0 ]; then
|
|
|
12e9116 |
# Enable new units specified by presets
|
|
|
12e9116 |
units=$(sed -n 's/^enable//p' \
|
|
|
12e9116 |
< /usr/lib/systemd/system-preset/80-workstation.preset)
|
|
|
12e9116 |
/usr/bin/systemctl preset $units >/dev/null 2>&1 || :
|
|
|
12e9116 |
|
|
|
12e9116 |
# Disable new units specified by presets
|
|
|
12e9116 |
units=$(sed -n 's/^disable//p' \
|
|
|
12e9116 |
< /usr/lib/systemd/system-preset/80-workstation.preset)
|
|
|
12e9116 |
/usr/bin/systemctl preset $units >/dev/null 2>&1 || :
|
|
|
12e9116 |
fi
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
|
|
|
12e9116 |
*)
|
|
|
12e9116 |
exit_usage
|
|
|
12e9116 |
;;
|
|
|
12e9116 |
esac
|
|
|
12e9116 |
|
|
|
12e9116 |
echo This system has been converted to $EDITION
|
|
|
12e9116 |
|
|
|
12e9116 |
exit 0
|
|
|
12e9116 |
|