4 Steps
1: make a LiveCD with the following Kickstart File I used --arch=i386
2: login to your system as a user named 'artemis', run wine "/path/to/artemis_installer.exe" to install Artemis under that users .wine home dir.
3: create a usb stick with the mkArtemisLiveUSB.sh See next post.
4: Eject USB stick or reboot to see it in action. it will boot, autologin to user artemis and autostart Artemis.
So far tested on multiple laptops.
Ok. Spin Kickstart file:
#
# Defines the basics for all kickstarts in the fedora-live branch
# Does not include package selection (other then mandatory)
# Does not include localization packages or configuration
#
# Does includes "default" language configuration (kickstarts including
# this template can override these settings)
lang en_US.UTF-8
keyboard us
timezone US/Eastern
auth --useshadow --enablemd5
selinux --disabled
firewall --disabled
xconfig --startxonboot
part / --size 3584 --fstype ext4
part /home --size 1024 --fstype ext4
services --enabled=NetworkManager --disabled=network,sshd
#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
%packages
@base-x
@base
@core
@fonts
@input-methods
#from fedore-laive-desktop
@graphical-internet
@sound-and-video
@gnome-desktop
nss-mdns
-smartmontools
-ibus-gnome3
vim
vim-X11
joystick-support
# end Fedora-live-desktop packages
# use a small pinyin db for live
-ibus-pinyin-db-open-phrase
ibus-pinyin-db-android
@admin-tools
#@dial-up
@hardware-support
#@printing
# Explicitly specified here:
# <notting> walters: because otherwise dependency loops cause yum issues.
kernel
# This was added a while ago, I think it falls into the category of
# "Diagnosis/recovery tool useful from a Live OS image". Leaving this untouched
# for now.
memtest86+
# The point of a live image is to install
# Unless is it to make an image to boot diskless systems for temporary use!
#anaconda
isomd5sum
# grub-efi and grub2 and efibootmgr so anaconda can use the right one on install.
grub-efi
grub2
efibootmgr
# fpaste is very useful for debugging and very small
fpaste
-selinux
#from fedora-live-minimization.ks
# save some space
-samba-client
-mpage
-sox
-hplip
-hpijs
-numactl
-isdn4k-utils
#-autofs
# smartcards won't really work on the livecd.
-coolkey
# qlogic firmwares
-ql2100-firmware
-ql2200-firmware
-ql23xx-firmware
-ql2400-firmware
# scanning takes quite a bit of space :/
-xsane
-xsane-gimp
-sane-backends
#from fedora-livecd-desktop.ks
-libreoffice-*
-planner
-linux-atm
-foomatic-db-ppds
-foomatic
-aspell-*
-hunspell-*
-words
-gnome-user-docs
-evolution-help
-gnome-games-help
-desktop-backgrounds-basic
-*backgrounds-extras
-krb5-auth-dialog
-krb5-workstation
-pam_krb5
-quota
-nano
-minicom
dos2unix
-finger
-ftp
-jwhois
-mtr
-pinfo
-rsh
telnet
nfs-utils
-ypbind
-yp-tools
-rpcbind
-acpid
-ntsysv
# Drop some system-config things
-system-config-boot
-system-config-language
system-config-network
-system-config-rootpassword
-system-config-services
-policycoreutils-gui
# This is Artemis stuff:
wine
mesa-dri-drivers
mumble
mumble-overlay
mumble-plugins
mumble-protocol
openarena
# More minimization
-cheese
-cdparanoia
%end
%post --log=/opt/artemis-livecd/logs/post_stage1.log
# 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.
. /etc/init.d/functions
if ! strstr "\`cat /proc/cmdline\`" liveimg || ["\$1" !]; then
exit 0
fi
if [-e] ; 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##live_dir=}"]; 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] ; then
for s in \$swaps ; do
action "Enabling swap partition \$s" swapon \$s
done
fi
if ! strstr "\`cat /proc/cmdline\`" noswap && [-f] ; then
action "Enabling swap file" swapon /run/initramfs/live/\${livedir}/swap.img
fi
mountPersistentHome() {
# support label/uuid
if ["\${homedev##LABEL=}"]; then
homedev=\`/sbin/blkid -o device -t "\$homedev"\`
fi
# if we're given a file rather than a blockdev, loopback it
if ["\${homedev##mtd}" !]; then
# mtd devs don't have a block device but get magic-mounted with -t jffs2
mountopts="-t jffs2"
elif [!]; then
loopdev=\`losetup -f\`
if ["\${homedev##/run/initramfs/live}" !]; 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)" ]; 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]; then mount --bind /home/home /home ; fi
[-x] && /sbin/restorecon /home
if [-d]; then USERADDARGS="-M" ; fi
}
findPersistentHome() {
for arg in \`cat /proc/cmdline\` ; do
if ["\${arg##persistenthome=}"]; then
homedev=\${arg##persistenthome=}
return
fi
done
}
if strstr "\`cat /proc/cmdline\`" persistenthome= ; then
findPersistentHome
elif [-e]; 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] ; 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 tmp /tmp
mount -t tmpfs vartmp /var/tmp
[-x] && /sbin/restorecon /var/cache/yum /tmp /var/tmp >/dev/null 2>&1
if [-n]; then
exit 0
fi
# add fedora user with no passwd
action "Adding live user: artemis" useradd \$USERADDARGS -c "Artemis User" -u 1000 artemis
#action "Adding live user: liveusr" useradd \$USERADDARGS -c "LiveCD User" liveusr
passwd -d artemis > /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 || :
# 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
# XXX: This often gets stuck during shutdown because /etc/init.d/halt
# (or something else still running) wants to read files from the block\
# device that was ejected. Disable for now. Bug #531924
# 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\`" liveimg || ["\$1" !] || [-e] ; 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]; 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
# 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
/sbin/useradd -m -d /home/artemis -c "Artemis User" -u 1000 artemis
%end
%post --nochroot --log=/opt/artemis-livecd/logs/post_stage2.log
echo Starting Stage 2
set
echo Liveroot: $LIVE_ROOT
echo Install_root: $INSTALL_ROOT
cp $INSTALL_ROOT/usr/share/doc/*-release-*/GPL $LIVE_ROOT/GPL
# Removed as this is handled by the livecd-iso-to-disk script for USB bootable.
# Uncomment below to make an actual DVD.
# echo creating Artemis user Homedir and wine environment
# Artemis install.. Do not use without proper licensing!
#echo "[!]&&mkdir -p $INSTALL_ROOT/home/artemis"
#[!]&&mkdir -p $INSTALL_ROOT/home/artemis
#echo copying Artemis wine environment
#echo rsync -a /home/artemis/ $INSTALL_ROOT/home/artemis/
#rsync -a /home/artemis/ $INSTALL_ROOT/home/artemis/
#echo Artemis complete
# only works on x86, x86_64
if ["$(uname -i)" ]; then
if [!]; then mkdir -p $LIVE_ROOT/LiveOS ; fi
cp /usr/bin/livecd-iso-to-disk $LIVE_ROOT/LiveOS
fi
%end
%post --log=/opt/artemis-livecd/logs/post_stage3.log
echo Starting Stage 3
# Setup Artemis Desktop Icon
echo chown -R artemis:artemis ~artemis/
chown -R artemis:artemis ~artemis/
cat >> /etc/rc.d/init.d/livesys << EOF
# disable screensaver locking
cat >> /usr/share/glib-2.0/schemas/org.gnome.desktop.screensaver.gschema.override << FOE
[org.gnome.desktop.screensaver]
idle-activation-enabled=false
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
# disable updates plugin
cat >> /usr/share/glib-2.0/schemas/org.gnome.settings-daemon.plugins.updates.gschema.override << FOE
[org.gnome.settings-daemon.plugins.updates]
active=false
FOE
cat >> /usr/share/glib-2.0/schemas/org.gnome.settings-daemon.plugins.power.gschema.override << FOE
[org.gnome.settings-daemon.plugins.power]
active=false
sleep-inactive-ac-timeout=0
sleep-display-ac-timeout=0
FOE
# Setup Artemis Desktop Icon
#echo Setting up Artemis Desktop Icon
[!]&& mkdir -p ~artemis/.local/share/applications/wine/Programs/Artemis/Artemis/
cat >~artemis/.local/share/applications/wine/Programs/Artemis/Artemis/Artemis.desktop <<FOE
[Desktop]
Name=Artemis
Exec=env WINEPREFIX="/home/artemis/.wine" wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/artemis/.wine/dosdevices/c:/users/Public/Start\\ Menu/Programs/Artemis/Artemis/Play\\ Artemis.lnk
Type=Application
StartupNotify=true
Path=/home/artemis/.wine/dosdevices/c:/Program Files/Artemis
Icon=23E5_Artemis.0
FOE
#--------- Disable The installer stuff.. this is not an install disk.. it's a portable boot sys.
## make the installer show up
#if [-f]; 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',]
#FOE
#
# # Make the welcome screen show up
# if [-f]; then
# mkdir -p ~artemis/.config/autostart
# cp /usr/share/anaconda/gnome/fedora-welcome.desktop /usr/share/applications/
# cp /usr/share/anaconda/gnome/fedora-welcome.desktop ~artemis/.config/autostart/
# chown -R artemis:artemis /home/artemis/.config/
# fi
#fi
#--------- END Disable The installer stuff.. this is not an install disk.. it's a portable boot sys.
# set up auto-login
cat >> /etc/gdm/custom.conf << FOE
[daemon]
AutomaticLoginEnable=True
AutomaticLogin=artemis
FOE
chown -R artemis:users /home/artemis
#autostart Artemis
mkdir -p ~artemis/.config/autostart
cat >> /usr/share/glib-2.0/schemas/org.gnome.shell.gschema.override << FOE
[org.gnome.shell]
favorite-apps=['firefox.desktop',]
FOE
# rebuild schema cache with any overrides we installed
glib-compile-schemas /usr/share/glib-2.0/schemas
# Turn off PackageKit-command-not-found while uninstalled
if [-f]; then
sed -i -e 's/^SoftwareSourceSearch=true/SoftwareSourceSearch=false/' /etc/PackageKit/CommandNotFound.conf
fi
EOF
%end
[Last edited Mar 12, 2013 22:25:11]