/usr/sbin/oem-config-firstboot is in oem-config 18.04.14.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | #! /bin/bash
# Run oem-config on the first boot after shipping to the end user.
set -e
DEBUG=
AUTOMATIC=
for option;do
case $option in
--debug)
DEBUG=--debug
;;
--automatic)
AUTOMATIC=--automatic
;;
esac
done
# KDM stores the default user here, and apparently gets upset that we've
# just removed its previous default user.
rm -f /var/lib/kdm/kdmsts
# Revert to creating a user at uid 1000.
echo RESET passwd/user-uid | debconf-communicate >/dev/null
if [ -z "$AUTOMATIC" ]; then
# These two templates have been preseeded, which does nasty things
# to their templates. It's probably a bug in cdebconf's
# debconf-copydb that they end up still registered to
# debian-installer/dummy at this point, but let's just work around
# it for now so that we get sensible translated descriptions.
for q in passwd/user-fullname passwd/username; do
echo REGISTER "$q" "$q"
echo RESET "$q"
done | debconf-communicate oem-config >/dev/null
fi
# if sddm.conf exists, add a comment to show that this is the original
# version which existed before end user setup was run
if [ -f "/etc/sddm.conf" ]; then
echo "#original_oem_version" >> /etc/sddm.conf
fi
# Remove the oem-config-prepare menu item.
rm -f /usr/share/applications/oem-config-prepare-gtk.desktop \
/usr/share/applications/kde4/oem-config-prepare-kde.desktop
# Run a command just before starting oem-config.
RET="$(echo GET oem-config/early_command | debconf-communicate)" || true
if [ "${RET%% *}" = 0 ]; then
command="${RET#* }"
log-output sh -c "$command" || true
fi
# TODO: will this work for X-based frontends when X isn't up yet?
if [ -z "$FRONTEND" ]; then
FRONTEND="$(/usr/sbin/oem-config -q)"
fi
if [ ! -e '/var/log/installer' ]; then
mkdir -p /var/log/installer
fi
if [ "$DEBUG" ]; then
TRY=1
else
TRY=5
fi
for try in $(seq 1 $TRY); do
CODE=0
if [ "$FRONTEND" = debconf_ui ]; then
plymouth quit || true
LANG=en_US.UTF-8 FRONTEND="$FRONTEND" \
/usr/sbin/oem-config-wrapper $DEBUG $AUTOMATIC --only \
2>>/var/log/oem-config.log \
|| CODE=$?
else
FRONTEND="$FRONTEND" \
/usr/bin/ubiquity-dm vt7 :0 oem \
/usr/sbin/oem-config-wrapper $DEBUG $AUTOMATIC --only || CODE=$?
fi
if [ "$CODE" -eq 0 ]; then
# if we still have the original sddm.conf, instead of a new version
# added in user setup to enable auto-login, remove the original
# which will break sddm startup if left in place
grep -q '#original_oem_version' /etc/sddm.conf && rm -f /etc/sddm.conf
# Remove the temporary OEM configuration user, if possible
# and desired.
RET="$(echo GET oem-config/remove | debconf-communicate)"
if [ "${RET#* }" = true ] && getent passwd oem >/dev/null; then
pkill -u oem || true
userdel --force --remove oem || true
fi
/bin/systemctl set-default graphical.target || true
/bin/systemctl disable oem-config.service || true
/bin/systemctl disable oem-config.target || true
rm -f /lib/systemd/system/oem-config.* || true
/bin/systemctl --no-block isolate graphical.target || true
exit 0
elif [ "$CODE" -eq 10 ]; then
cat <<EOF
Your system is not yet configured. Press 'a' to try again, 's' for a
recovery shell, or 'r' to reboot.
EOF
while :; do
read -p '[asr] ' -n 1 REPLY
echo
case $REPLY in
A|a) continue 2 ;;
S|s)
cat <<EOF
After you type 'exit', your system will reboot.
EOF
bash
reboot
sleep 3600
exit 1
;;
R|r) reboot; sleep 3600; exit 1 ;;
esac
done
exit 1
fi
done
if [ -z "$DEBUG" ]; then
# Panic. At this point, probably the best thing we can do is drop to
# a shell so that the user has some hope of fixing things up.
cat <<EOF
ERROR: The OEM installer failed. Your system may not be usable yet. Please
report this as a bug to your vendor.
To create a user so that you can use your new system normally, type:
adduser USERNAME
... replacing USERNAME with the username you would like to use (your first
name in lower case is normally a reasonable choice), and follow the prompts.
If this succeeds, type 'exit' to reboot the system.
EOF
bash
# Don't run again.
rm -f /var/lib/oem-config/run
RET="$(echo GET oem-config/remove | debconf-communicate)"
if [ "${RET#* }" = true ]; then
if getent passwd oem >/dev/null; then
pkill -u oem || true
userdel --force --remove oem || true
fi
apt-get -y purge ubiquity >>/var/log/oem-config.log 2>&1
fi
reboot
fi
exit 0
|