Fedora/Sugar test cases
Custom_Kickstart_file
modified from: http://kojipkgs.fedoraproject.org//work/tasks/5707/5925707/fedora-livecd-soas-f110c70.ks
- Modified file:
- version=DEVEL
- Firewall configuration
firewall --enabled --service=mdns,presence
- X Window System configuration information
xconfig --startxonboot 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
- Keyboard layouts
keyboard 'us'
- System timezone
timezone US/Eastern
- System language
lang en_US.UTF-8
- System authorization information
auth --useshadow --enablemd5
- SELinux configuration
selinux --enforcing
- System services
services --disabled="network,sshd" --enabled="NetworkManager"
- Disk partitioning information
part / --fstype="ext4" --size=3072
%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 \$*
}
- 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
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.settings-daemon.plugins.updates active '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
- 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 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
- save a little bit of space at least...
rm -f /boot/initramfs*
- 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
%post
- Rebuild initrd for Sugar boot screen
KERNEL_VERSION=$(rpm -q kernel --qf '%{version}-%{release}.%{arch}\n') /usr/sbin/plymouth-set-default-theme sugar /sbin/dracut -f /boot/initramfs-$KERNEL_VERSION.img $KERNEL_VERSION
- Note that running rpm recreates the rpm db files which aren't needed or wanted
rm -f /var/lib/rpm/__db*
- Get proper release naming in the control panel
- modified from koji ,ks by tg
cat >> /boot/olpc_build << EOF Sugar on a Stick 10 (Remix) Fedora release 20 EOF
- Add our activities to the favorites
cat > /usr/share/sugar/data/activities.defaults << EOF org.laptop.WebActivity org.laptop.HelpActivity org.laptop.Chat org.laptop.sugar.ReadActivity org.laptop.sugar.GetBooksActivity org.laptop.AbiWordActivity org.laptop.TurtleArtActivity org.laptop.Calculate org.laptop.Clock org.laptop.ImageViewerActivity org.laptop.Memorize org.laptop.physics org.laptop.Pippy org.laptop.RecordActivity org.laptop.Oficina org.laptop.StopWatchActivity org.laptop.community.Finance org.laptop.community.TypingTurtle org.laptop.sugar.Jukebox org.gnome.Labyrinth com.laptop.Ruler org.sugarlabs.AbacusActivity org.sugarlabs.IRC org.sugarlabs.InfoSlicer org.sugarlabs.PortfolioActivity org.sugarlabs.VisualMatchActivity com.garycmartin.Moon mulawa.Countries tv.alterna.Clock vu.lux.olpc.Maze vu.lux.olpc.Speak EOF
cat > /etc/sysconfig/desktop <<EOF PREFERRED=/usr/bin/sugar DISPLAYMANAGER=/usr/sbin/lightdm EOF
- set up lightdm autologin
sed -i 's/^#autologin-user=.*/autologin-user=liveuser/' /etc/lightdm/lightdm.conf sed -i 's/^#autologin-user-timeout=.*/autologin-user-timeout=0/' /etc/lightdm/lightdm.conf
- Don't use the default system user (in SoaS liveuser) as nick name
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t string /desktop/sugar/user/default_nick disabled >/dev/null
- Disable the logout menu item in Sugar
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /desktop/sugar/show_logout false >/dev/null
- Enable Sugar power management
gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s -t bool /desktop/sugar/power/automatic True >/dev/null
cat >> /etc/rc.d/init.d/livesys << EOF
- set up lightdm autologin
sed -i 's/^#autologin-user=.*/autologin-user=liveuser/' /etc/lightdm/lightdm.conf sed -i 's/^#autologin-user-timeout=.*/autologin-user-timeout=0/' /etc/lightdm/lightdm.conf
- sed -i 's/^#show-language-selector=.*/show-language-selector=true/' /etc/lightdm/lightdm-gtk-greeter.conf
- set Sugar as default session, otherwise login will fail
sed -i 's/^#user-session=.*/user-session=sugar/' /etc/lightdm/lightdm.conf EOF
cat >> /etc/rc.d/init.d/livesys-late << EOF
- disable screensaver locking
cat >> /usr/share/glib-2.0/schemas/org.gnome.desktop.screensaver.gschema.override << FOE [org.gnome.desktop.screensaver] lock-enabled=false FOE
- and hide the lock screen option
cat >> /usr/share/glib-2.0/schemas/org.gnome.desktop.lockdown.gschema.override << FOE [org.gnome.desktop.lockdown] disable-lock-screen=true FOE
- rebuild schema cache with any overrides we installed
glib-compile-schemas /usr/share/glib-2.0/schemas
EOF
chmod 755 /etc/rc.d/init.d/livesys-late /sbin/restorecon /etc/rc.d/init.d/livesys-late /sbin/chkconfig --add livesys-late
%end
%packages @anaconda-tools @base-x @core @guest-desktop-agents @hardware-support @input-methods @input-methods @standard @sugar-desktop alsa-plugins-pulseaudio alsa-utils anaconda gstreamer-plugins-espeak gstreamer1-plugins-bad-free gstreamer1-plugins-base gstreamer1-plugins-good kernel livecd-tools memtest86+ pulseaudio pulseaudio-utils qemu-guest-agent rp-pppoe sugar-cp-updater sugar-logos
- next 2 Added by TG
lightdm -gdm -@dial-up -@fonts -@gnome-desktop -@multimedia -@printing -PackageKit -autofs -coolkey -eekboard-libs -firefox -foomatic -glx-utils -hpijs -hplip -icedtea-web -isdn4k-utils -libfprint -mpage -nmap-ncat -numactl -open-vm-tools* -openbox -plymouth-system-theme -plymouth-theme-charge -ql2100-firmware -ql2200-firmware -ql23xx-firmware -rdate -rdist -realmd -sane-backends -sane-backends-drivers-scanners -sox -sugar-ruler -wget -xsane -xsane-gimp -yp-tools -ypbind
%end