6f6af862c6
systemd uses /var/lib/systemd/random-seed to add entropy to /dev/urandom at boot time. During image creation this file is created, and if not removed everything using the image will be adding the same seed. This is only additional entropy, NOT a seed in the sense of a starting point for a PRNG, so it will be mixed with other entropy as the system runs. It isn't a good idea to use the same value everywhere so make sure it is removed in %post Resolves: rhbz#1258986
407 lines
11 KiB
Plaintext
407 lines
11 KiB
Plaintext
#version=DEVEL
|
|
# X Window System configuration information
|
|
xconfig --startxonboot
|
|
# Keyboard layouts
|
|
keyboard 'us'
|
|
|
|
# System timezone
|
|
timezone US/Eastern
|
|
# System language
|
|
lang en_US.UTF-8
|
|
# Firewall configuration
|
|
firewall --enabled --service=mdns
|
|
url --url="http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/x86_64/os/"
|
|
|
|
# System authorization information
|
|
auth --useshadow --enablemd5
|
|
# SELinux configuration
|
|
selinux --enforcing
|
|
|
|
# System services
|
|
services --disabled="network,sshd" --enabled="NetworkManager"
|
|
|
|
# livemedia-creator modifications.
|
|
shutdown
|
|
# System bootloader configuration
|
|
bootloader --location=mbr
|
|
# Clear blank disks or all existing partitions
|
|
clearpart --all --initlabel
|
|
rootpw rootme
|
|
|
|
|
|
# Disk partitioning information
|
|
part / --fstype="ext4" --size=4096
|
|
part / --size=6144
|
|
|
|
%post
|
|
# FIXME: it'd be better to get this installed from a package
|
|
cat > /etc/rc.d/init.d/livesys << EOF
|
|
#!/bin/bash
|
|
#
|
|
# live: Init script for live image
|
|
#
|
|
# chkconfig: 345 00 99
|
|
# description: Init script for live image.
|
|
### BEGIN INIT INFO
|
|
# X-Start-Before: display-manager
|
|
### END INIT INFO
|
|
|
|
. /etc/init.d/functions
|
|
|
|
if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ -e /.liveimg-configured ] ; then
|
|
configdone=1
|
|
fi
|
|
|
|
exists() {
|
|
which \$1 >/dev/null 2>&1 || return
|
|
\$*
|
|
}
|
|
|
|
livedir="LiveOS"
|
|
for arg in \`cat /proc/cmdline\` ; do
|
|
if [ "\${arg##rd.live.dir=}" != "\${arg}" ]; then
|
|
livedir=\${arg##rd.live.dir=}
|
|
return
|
|
fi
|
|
if [ "\${arg##live_dir=}" != "\${arg}" ]; then
|
|
livedir=\${arg##live_dir=}
|
|
return
|
|
fi
|
|
done
|
|
|
|
# enable swaps unless requested otherwise
|
|
swaps=\`blkid -t TYPE=swap -o device\`
|
|
if ! strstr "\`cat /proc/cmdline\`" noswap && [ -n "\$swaps" ] ; then
|
|
for s in \$swaps ; do
|
|
action "Enabling swap partition \$s" swapon \$s
|
|
done
|
|
fi
|
|
if ! strstr "\`cat /proc/cmdline\`" noswap && [ -f /run/initramfs/live/\${livedir}/swap.img ] ; then
|
|
action "Enabling swap file" swapon /run/initramfs/live/\${livedir}/swap.img
|
|
fi
|
|
|
|
mountPersistentHome() {
|
|
# support label/uuid
|
|
if [ "\${homedev##LABEL=}" != "\${homedev}" -o "\${homedev##UUID=}" != "\${homedev}" ]; then
|
|
homedev=\`/sbin/blkid -o device -t "\$homedev"\`
|
|
fi
|
|
|
|
# if we're given a file rather than a blockdev, loopback it
|
|
if [ "\${homedev##mtd}" != "\${homedev}" ]; then
|
|
# mtd devs don't have a block device but get magic-mounted with -t jffs2
|
|
mountopts="-t jffs2"
|
|
elif [ ! -b "\$homedev" ]; then
|
|
loopdev=\`losetup -f\`
|
|
if [ "\${homedev##/run/initramfs/live}" != "\${homedev}" ]; then
|
|
action "Remounting live store r/w" mount -o remount,rw /run/initramfs/live
|
|
fi
|
|
losetup \$loopdev \$homedev
|
|
homedev=\$loopdev
|
|
fi
|
|
|
|
# if it's encrypted, we need to unlock it
|
|
if [ "\$(/sbin/blkid -s TYPE -o value \$homedev 2>/dev/null)" = "crypto_LUKS" ]; then
|
|
echo
|
|
echo "Setting up encrypted /home device"
|
|
plymouth ask-for-password --command="cryptsetup luksOpen \$homedev EncHome"
|
|
homedev=/dev/mapper/EncHome
|
|
fi
|
|
|
|
# and finally do the mount
|
|
mount \$mountopts \$homedev /home
|
|
# if we have /home under what's passed for persistent home, then
|
|
# we should make that the real /home. useful for mtd device on olpc
|
|
if [ -d /home/home ]; then mount --bind /home/home /home ; fi
|
|
[ -x /sbin/restorecon ] && /sbin/restorecon /home
|
|
if [ -d /home/liveuser ]; then USERADDARGS="-M" ; fi
|
|
}
|
|
|
|
findPersistentHome() {
|
|
for arg in \`cat /proc/cmdline\` ; do
|
|
if [ "\${arg##persistenthome=}" != "\${arg}" ]; then
|
|
homedev=\${arg##persistenthome=}
|
|
return
|
|
fi
|
|
done
|
|
}
|
|
|
|
if strstr "\`cat /proc/cmdline\`" persistenthome= ; then
|
|
findPersistentHome
|
|
elif [ -e /run/initramfs/live/\${livedir}/home.img ]; then
|
|
homedev=/run/initramfs/live/\${livedir}/home.img
|
|
fi
|
|
|
|
# if we have a persistent /home, then we want to go ahead and mount it
|
|
if ! strstr "\`cat /proc/cmdline\`" nopersistenthome && [ -n "\$homedev" ] ; then
|
|
action "Mounting persistent /home" mountPersistentHome
|
|
fi
|
|
|
|
if [ -n "\$configdone" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
# add fedora user with no passwd
|
|
action "Adding live user" useradd \$USERADDARGS -c "Live System User" liveuser
|
|
passwd -d liveuser > /dev/null
|
|
usermod -aG wheel liveuser > /dev/null
|
|
|
|
# Remove root password lock
|
|
passwd -d root > /dev/null
|
|
|
|
# turn off firstboot for livecd boots
|
|
systemctl --no-reload disable firstboot-text.service 2> /dev/null || :
|
|
systemctl --no-reload disable firstboot-graphical.service 2> /dev/null || :
|
|
systemctl stop firstboot-text.service 2> /dev/null || :
|
|
systemctl stop firstboot-graphical.service 2> /dev/null || :
|
|
|
|
# don't use prelink on a running live image
|
|
sed -i 's/PRELINKING=yes/PRELINKING=no/' /etc/sysconfig/prelink &>/dev/null || :
|
|
|
|
# turn off mdmonitor by default
|
|
systemctl --no-reload disable mdmonitor.service 2> /dev/null || :
|
|
systemctl --no-reload disable mdmonitor-takeover.service 2> /dev/null || :
|
|
systemctl stop mdmonitor.service 2> /dev/null || :
|
|
systemctl stop mdmonitor-takeover.service 2> /dev/null || :
|
|
|
|
# don't enable the gnome-settings-daemon packagekit plugin
|
|
gsettings set org.gnome.software download-updates 'false' || :
|
|
|
|
# don't start cron/at as they tend to spawn things which are
|
|
# disk intensive that are painful on a live image
|
|
systemctl --no-reload disable crond.service 2> /dev/null || :
|
|
systemctl --no-reload disable atd.service 2> /dev/null || :
|
|
systemctl stop crond.service 2> /dev/null || :
|
|
systemctl stop atd.service 2> /dev/null || :
|
|
|
|
# Mark things as configured
|
|
touch /.liveimg-configured
|
|
|
|
# add static hostname to work around xauth bug
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=679486
|
|
echo "localhost" > /etc/hostname
|
|
|
|
EOF
|
|
|
|
# bah, hal starts way too late
|
|
cat > /etc/rc.d/init.d/livesys-late << EOF
|
|
#!/bin/bash
|
|
#
|
|
# live: Late init script for live image
|
|
#
|
|
# chkconfig: 345 99 01
|
|
# description: Late init script for live image.
|
|
|
|
. /etc/init.d/functions
|
|
|
|
if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ] || [ -e /.liveimg-late-configured ] ; then
|
|
exit 0
|
|
fi
|
|
|
|
exists() {
|
|
which \$1 >/dev/null 2>&1 || return
|
|
\$*
|
|
}
|
|
|
|
touch /.liveimg-late-configured
|
|
|
|
# read some variables out of /proc/cmdline
|
|
for o in \`cat /proc/cmdline\` ; do
|
|
case \$o in
|
|
ks=*)
|
|
ks="--kickstart=\${o#ks=}"
|
|
;;
|
|
xdriver=*)
|
|
xdriver="\${o#xdriver=}"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# if liveinst or textinst is given, start anaconda
|
|
if strstr "\`cat /proc/cmdline\`" liveinst ; then
|
|
plymouth --quit
|
|
/usr/sbin/liveinst \$ks
|
|
fi
|
|
if strstr "\`cat /proc/cmdline\`" textinst ; then
|
|
plymouth --quit
|
|
/usr/sbin/liveinst --text \$ks
|
|
fi
|
|
|
|
# configure X, allowing user to override xdriver
|
|
if [ -n "\$xdriver" ]; then
|
|
cat > /etc/X11/xorg.conf.d/00-xdriver.conf <<FOE
|
|
Section "Device"
|
|
Identifier "Videocard0"
|
|
Driver "\$xdriver"
|
|
EndSection
|
|
FOE
|
|
fi
|
|
|
|
EOF
|
|
|
|
chmod 755 /etc/rc.d/init.d/livesys
|
|
/sbin/restorecon /etc/rc.d/init.d/livesys
|
|
/sbin/chkconfig --add livesys
|
|
|
|
chmod 755 /etc/rc.d/init.d/livesys-late
|
|
/sbin/restorecon /etc/rc.d/init.d/livesys-late
|
|
/sbin/chkconfig --add livesys-late
|
|
|
|
# enable tmpfs for /tmp
|
|
systemctl enable tmp.mount
|
|
|
|
# make it so that we don't do writing to the overlay for things which
|
|
# are just tmpdirs/caches
|
|
# note https://bugzilla.redhat.com/show_bug.cgi?id=1135475
|
|
cat >> /etc/fstab << EOF
|
|
vartmp /var/tmp tmpfs defaults 0 0
|
|
varcacheyum /var/cache/yum tmpfs mode=0755,context=system_u:object_r:rpm_var_cache_t:s0 0 0
|
|
EOF
|
|
|
|
# work around for poor key import UI in PackageKit
|
|
rm -f /var/lib/rpm/__db*
|
|
releasever=$(rpm -q --qf '%{version}\n' --whatprovides system-release)
|
|
basearch=$(uname -i)
|
|
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
|
|
echo "Packages within this LiveCD"
|
|
rpm -qa
|
|
# Note that running rpm recreates the rpm db files which aren't needed or wanted
|
|
rm -f /var/lib/rpm/__db*
|
|
|
|
# go ahead and pre-make the man -k cache (#455968)
|
|
/usr/bin/mandb
|
|
|
|
# make sure there aren't core files lying around
|
|
rm -f /core*
|
|
|
|
# convince readahead not to collect
|
|
# FIXME: for systemd
|
|
|
|
# forcibly regenerate fontconfig cache (so long as this live image has
|
|
# fontconfig) - see #1169979
|
|
if [ -x /usr/bin/fc-cache ] ; then
|
|
fc-cache -f
|
|
fi
|
|
|
|
echo 'File created by kickstart. See systemd-update-done.service(8).' \
|
|
| tee /etc/.updated >/var/.updated
|
|
|
|
# Remove random-seed
|
|
rm /var/lib/systemd/random-seed
|
|
%end
|
|
|
|
%post --nochroot
|
|
cp $INSTALL_ROOT/usr/share/licenses/*-release/* $LIVE_ROOT/
|
|
|
|
# only works on x86, x86_64
|
|
if [ "$(uname -i)" = "i386" -o "$(uname -i)" = "x86_64" ]; then
|
|
if [ ! -d $LIVE_ROOT/LiveOS ]; then mkdir -p $LIVE_ROOT/LiveOS ; fi
|
|
cp /usr/bin/livecd-iso-to-disk $LIVE_ROOT/LiveOS
|
|
fi
|
|
%end
|
|
|
|
%post
|
|
|
|
# This is a huge file and things work ok without it
|
|
rm -f /usr/share/icons/HighContrast/icon-theme.cache
|
|
|
|
cat >> /etc/rc.d/init.d/livesys << EOF
|
|
|
|
|
|
# disable updates plugin
|
|
cat >> /usr/share/glib-2.0/schemas/org.gnome.software.gschema.override << FOE
|
|
[org.gnome.software]
|
|
download-updates=false
|
|
FOE
|
|
|
|
# don't run gnome-initial-setup
|
|
mkdir ~liveuser/.config
|
|
touch ~liveuser/.config/gnome-initial-setup-done
|
|
|
|
# make the installer show up
|
|
if [ -f /usr/share/applications/liveinst.desktop ]; then
|
|
# Show harddisk install in shell dash
|
|
sed -i -e 's/NoDisplay=true/NoDisplay=false/' /usr/share/applications/liveinst.desktop ""
|
|
# need to move it to anaconda.desktop to make shell happy
|
|
mv /usr/share/applications/liveinst.desktop /usr/share/applications/anaconda.desktop
|
|
|
|
cat >> /usr/share/glib-2.0/schemas/org.gnome.shell.gschema.override << FOE
|
|
[org.gnome.shell]
|
|
favorite-apps=['firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'anaconda.desktop']
|
|
FOE
|
|
|
|
# Make the welcome screen show up
|
|
if [ -f /usr/share/anaconda/gnome/fedora-welcome.desktop ]; then
|
|
mkdir -p ~liveuser/.config/autostart
|
|
cp /usr/share/anaconda/gnome/fedora-welcome.desktop /usr/share/applications/
|
|
cp /usr/share/anaconda/gnome/fedora-welcome.desktop ~liveuser/.config/autostart/
|
|
fi
|
|
|
|
# Copy Anaconda branding in place
|
|
if [ -d /usr/share/lorax/product/usr/share/anaconda ]; then
|
|
cp -a /usr/share/lorax/product/* /
|
|
fi
|
|
fi
|
|
|
|
# rebuild schema cache with any overrides we installed
|
|
glib-compile-schemas /usr/share/glib-2.0/schemas
|
|
|
|
# set up auto-login
|
|
cat > /etc/gdm/custom.conf << FOE
|
|
[daemon]
|
|
AutomaticLoginEnable=True
|
|
AutomaticLogin=liveuser
|
|
FOE
|
|
|
|
# Turn off PackageKit-command-not-found while uninstalled
|
|
if [ -f /etc/PackageKit/CommandNotFound.conf ]; then
|
|
sed -i -e 's/^SoftwareSourceSearch=true/SoftwareSourceSearch=false/' /etc/PackageKit/CommandNotFound.conf
|
|
fi
|
|
|
|
# make sure to set the right permissions and selinux contexts
|
|
chown -R liveuser:liveuser /home/liveuser/
|
|
restorecon -R /home/liveuser/
|
|
|
|
EOF
|
|
|
|
%end
|
|
|
|
%packages
|
|
@anaconda-tools
|
|
@base-x
|
|
@base-x
|
|
@core
|
|
@core
|
|
@fonts
|
|
@fonts
|
|
@guest-desktop-agents
|
|
@guest-desktop-agents
|
|
@hardware-support
|
|
@hardware-support
|
|
@libreoffice
|
|
@multimedia
|
|
@multimedia
|
|
@networkmanager-submodules
|
|
@printing
|
|
@printing
|
|
@workstation-product
|
|
aajohan-comfortaa-fonts
|
|
anaconda
|
|
fedora-productimg-workstation
|
|
kernel
|
|
memtest86+
|
|
-@dial-up
|
|
-@input-methods
|
|
-@standard
|
|
-gfs2-utils
|
|
-reiserfs-utils
|
|
|
|
dracut-live
|
|
dracut-config-generic
|
|
grub2-efi
|
|
-dracut-config-rescue
|
|
%end
|