forked from srbala/fedora-kickstarts
254dfaeee6
Using >> means we have a custom.conf file that looks like this: [daemon] ... [daemon] AutomaticLoginEnable=True AutomaticLogin=liveuser Which is the first reason why it's failing. Change the cat append to replace as the other sections are optional. Additionally, the livesys legacy service is not completing before gdm is being started, which means the config file is being read before it has been altered. This can be fixed by adding a LSB-style "X-Start-Before: display-manager" in the header of livesys.
375 lines
11 KiB
Plaintext
375 lines
11 KiB
Plaintext
# fedora-live-mini.ks
|
|
#
|
|
# Defines the basics for all kickstarts in the fedora-mini branch
|
|
|
|
lang en_US.UTF-8
|
|
keyboard us
|
|
timezone US/Eastern
|
|
auth --useshadow --enablemd5
|
|
selinux --permissive
|
|
firewall --enabled --service=mdns
|
|
xconfig --startxonboot
|
|
part / --size 4096 --fstype ext4
|
|
services --enabled=NetworkManager,messagebus,avahi-daemon --disabled=network,sshd,iscsi,iscsid,lldpad
|
|
|
|
repo --name=rawhide --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide&arch=$basearch
|
|
#repo --name=fedora --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
|
|
#repo --name=updates --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
|
|
#repo --name=updates-testing --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-testing-f$releasever&arch=$basearch
|
|
|
|
%include fedora-live-minimization.ks
|
|
|
|
%packages
|
|
@base-x
|
|
@standard
|
|
@core
|
|
@hardware-support
|
|
kernel
|
|
memtest86+
|
|
|
|
# implicitly include the fonts we want
|
|
liberation-mono-fonts
|
|
liberation-sans-fonts
|
|
liberation-serif-fonts
|
|
google-droid-sans-fonts
|
|
google-droid-sans-mono-fonts
|
|
google-droid-serif-fonts
|
|
dejavu-sans-fonts
|
|
dejavu-sans-mono-fonts
|
|
dejavu-serif-fonts
|
|
|
|
# We like noise
|
|
@multimedia
|
|
|
|
# Remove default base packages we don't want
|
|
-dos2unix
|
|
-dump
|
|
-finger
|
|
-fprintd-pam
|
|
-hunspell
|
|
-jwhois
|
|
-lftp
|
|
-mlocate
|
|
-nano
|
|
-nfs-utils
|
|
-numactl
|
|
-pcmciautils
|
|
-pm-utils
|
|
-rdate
|
|
-rdist
|
|
-rsh
|
|
-rsync
|
|
-sos
|
|
-stunnel
|
|
-time
|
|
-tree
|
|
-words
|
|
-ypbind
|
|
|
|
# Remove default unwanted hardware firmware and support we don't want
|
|
-foomatic*
|
|
-ghostscript*
|
|
-ivtv-firmware
|
|
# These are listed somewhere other than hardware support!
|
|
-irda-utils
|
|
-fprintd*
|
|
|
|
# dictionaries are big
|
|
-aspell-*
|
|
-hunspell-*
|
|
-man-pages*
|
|
-words
|
|
|
|
# The point of a live image is to install
|
|
anaconda
|
|
@anaconda-tools
|
|
|
|
# Add some useful utils
|
|
firewall-config
|
|
gnome-packagekit
|
|
powertop
|
|
avahi
|
|
|
|
# Remove sendmail: this needs to be explicit
|
|
-sendmail
|
|
|
|
# Make live images easy to shutdown and the like in libvirt
|
|
qemu-guest-agent
|
|
|
|
%end
|
|
|
|
%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\`" liveimg || [ "\$1" != "start" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ -e /.liveimg-configured ] ; then
|
|
configdone=1
|
|
fi
|
|
|
|
exists() {
|
|
which \$1 >/dev/null 2>&1 || return
|
|
\$*
|
|
}
|
|
|
|
touch /.liveimg-configured
|
|
|
|
# Make sure we don't mangle the hardware clock on shutdown
|
|
ln -sf /dev/null /etc/systemd/system/hwclock-save.service
|
|
|
|
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
|
|
|
|
# make it so that we don't do writing to the overlay for things which
|
|
# are just tmpdirs/caches
|
|
mount -t tmpfs -o mode=0755 varcacheyum /var/cache/yum
|
|
mount -t tmpfs vartmp /var/tmp
|
|
[ -x /sbin/restorecon ] && /sbin/restorecon /var/cache/yum /var/tmp >/dev/null 2>&1
|
|
|
|
# comment to fix sugar startup
|
|
#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
|
|
|
|
# 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 do packagekit checking by default
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t string /apps/gnome-packagekit/frequency_get_updates never >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t string /apps/gnome-packagekit/frequency_get_upgrades never >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t string /apps/gnome-packagekit/frequency_refresh_cache never >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /apps/gnome-packagekit/notify_available false >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /apps/gnome-packagekit/notify_distro_upgrades false >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /apps/gnome-packagekit/enable_check_firmware false >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /apps/gnome-packagekit/enable_check_hardware false >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /apps/gnome-packagekit/enable_codec_helper false >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /apps/gnome-packagekit/enable_font_helper false >/dev/null
|
|
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /apps/gnome-packagekit/enable_mime_type_helper false >/dev/null
|
|
|
|
|
|
# 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 || :
|
|
|
|
# and hack so that we eject the cd on shutdown if we're using a CD...
|
|
if strstr "\`cat /proc/cmdline\`" CDLABEL= ; then
|
|
cat >> /sbin/halt.local << FOE
|
|
#!/bin/bash
|
|
# we want to eject the cd on halt, but let's also try to avoid
|
|
# io errors due to not being able to get files...
|
|
cat /sbin/halt > /dev/null
|
|
cat /sbin/reboot > /dev/null
|
|
/usr/sbin/eject -p -m \$(readlink -f /run/initramfs/livedev) >/dev/null 2>&1
|
|
echo "Please remove the CD from your drive and press Enter to finish restarting"
|
|
read -t 30 < /dev/console
|
|
FOE
|
|
chmod +x /sbin/halt.local
|
|
fi
|
|
|
|
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
|
|
\$*
|
|
}
|
|
|
|
# read some variables out of /proc/cmdline
|
|
for o in \`cat /proc/cmdline\` ; do
|
|
case \$o in
|
|
ks=*)
|
|
ks="\${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
|
|
|
|
touch /.liveimg-late-configured
|
|
|
|
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
|
|
|
|
# work around for poor key import UI in PackageKit
|
|
rm -f /var/lib/rpm/__db*
|
|
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
|
|
# 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
|
|
|
|
# save a little bit of space at least...
|
|
rm -f /boot/initrd*
|
|
# make sure there aren't core files lying around
|
|
rm -f /core*
|
|
|
|
# convince readahead not to collect
|
|
# FIXME: for systemd
|
|
|
|
%end
|
|
|
|
%post --nochroot
|
|
cp $INSTALL_ROOT/usr/share/doc/*-release-*/GPL $LIVE_ROOT/GPL
|
|
|
|
# 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
|