@ -0,0 +1,31 @@ | |||
#!/bin/bash | |||
set -eu | |||
##################################################################### | |||
# TigerOS Build Script for running on the build box with Jenkins CI # | |||
# @author: Aidan Kahrs # | |||
# # | |||
# Usage: sudo bash ci-build-mock.sh # | |||
# # | |||
##################################################################### | |||
# Check that the current user is root | |||
if [ $EUID != 0 ] | |||
then | |||
echo "Please run this script as root (sudo $@$0)." | |||
exit | |||
fi | |||
wget -O tigeros.ks https://raw.githubusercontent.com/RITlug/TigerOS/master/tigeros.ks | |||
mock -r fedora-26-x86_64 --init | |||
mock -r fedora-26-x86_64 --copyin tigeros.ks ./tigeros.ks | |||
mock -r fedora-26-x86_64 --install lorax-lmc-novirt git vim-minimal pykickstart | |||
mock -r fedora-26-x86_64 --chroot "livemedia-creator --ks tigeros.ks --no-virt --resultdir /var/lmc --project TigerOS-Live --make-iso --volid TigerOS --iso-only --iso-name TigerOS.iso --releasever 26 --title TigerOS-live --macboot" | |||
rm -rf /srv/isos/TigerOS-$(date +%Y%m%d).iso | |||
mock -r fedora-26-x86_64 --copyout /var/lmc/TigerOS.iso /srv/isos/TigerOS-$(date +%Y%m%d).iso | |||
rm -rf /var/lib/mock/ | |||
cd /srv/isos | |||
rm -rf CHECKSUM512-$(date +%Y%m%d) | |||
sha512sum TigerOS-$(date +%Y%m%d).iso > CHECKSUM512-$(date +%Y%m%d) | |||
chown -R nginx:nginx /srv | |||
chmod 755 /srv/isos/*.iso | |||
echo "Build finished" | |||
@ -0,0 +1,31 @@ | |||
#!/bin/bash | |||
set -eu | |||
################################################################################# | |||
# TigerOS Build Script(source iso) for running on the build box with Jenkins CI # | |||
# @author: Aidan Kahrs # | |||
# # | |||
# Usage: sudo bash ci-build-mock.sh # | |||
# # | |||
################################################################################# | |||
# Check that the current user is root | |||
if [ $EUID != 0 ] | |||
then | |||
echo "Please run this script as root (sudo $@$0)." | |||
exit | |||
fi | |||
wget -O tigeros-source.ks https://raw.githubusercontent.com/RITlug/TigerOS/master/tigeros-source.ks | |||
mock -r fedora-26-x86_64 --init | |||
mock -r fedora-26-x86_64 --copyin tigeros-source.ks ./tigeros-source.ks | |||
mock -r fedora-26-x86_64 --install pungi | |||
mock -r fedora-26-x86_64 --chroot "pungi -G -c tigeros-source.ks --name=TigerOS --ver 26 --force && pungi -C -c tigeros-source.ks --name=TigerOS --ver=26 --force && pungi -I -c tigeros-source.ks --name=TigerOS --ver=26 --sourceisos --force" | |||
rm -rf /srv/isos/TigerOS-source-$(date +%Y%m%d).iso | |||
mock -r fedora-26-x86_64 --copyout /26/source/iso/TigerOS-DVD-source-26.iso /srv/isos/TigerOS-source-$(date +%Y%m%d).iso | |||
rm -rf /var/lib/mock/ | |||
cd /srv/isos | |||
rm -rf CHECKSUM512-source-$(date +%Y%m%d) | |||
sha512sum TigerOS-source-$(date +%Y%m%d).iso > CHECKSUM512-source-$(date +%Y%m%d) | |||
chown -R nginx:nginx /srv | |||
chmod 755 /srv/isos/*.iso | |||
echo "Pungi finished" | |||
@ -0,0 +1,59 @@ | |||
repo --name="rpmfusion-free" --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-$releasever&arch=$basearch | |||
repo --name="rpmfusion-free-updates" --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-updates-released-$releasever&arch=$basearch | |||
repo --name="tigeros" --baseurl=https://tigeros.ritlug.com/packages/$basearch/ | |||
repo --name="Copr repo for gscreenshot owned by thenaterhood" --baseurl=https://copr-be.cloud.fedoraproject.org/results/thenaterhood/gscreenshot/fedora-$releasever-$basearch/ | |||
anaconda-installclass-tigeros | |||
chromium | |||
generic-release-notes | |||
gimp | |||
glibc-all-langpacks | |||
gscreenshot | |||
hexchat | |||
htop | |||
inkscape | |||
lynx | |||
memtest86+ | |||
parole | |||
pidgin | |||
rhythmbox | |||
rpmfusion-free-release | |||
scrot | |||
tigeros-backgrounds | |||
tigeros-ff-profile | |||
tigeros-logos | |||
tigeros-release | |||
tigeros-repos | |||
tigeros-scripts | |||
transmission | |||
vim | |||
wget | |||
yumex-dnf | |||
zsh | |||
#exclude things (packagekit breaks things, fedora-* packages are replaced by ones we customized.) | |||
-PackageKit* | |||
-autofs | |||
-coolkey | |||
-fedora-bookmarks | |||
-fedora-icon-theme | |||
-fedora-logos | |||
-fedora-release | |||
-fedora-release-notes | |||
-gnome-screenshot | |||
-hplip | |||
-isdn4k-utils | |||
-mpage | |||
-numactl | |||
-policycoreutils-gui | |||
-sane-backends | |||
-sox | |||
-system-config-boot | |||
-system-config-language | |||
-system-config-network | |||
-system-config-rootpassword | |||
-system-config-services | |||
-xsane | |||
-xsane-gimp | |||
%end |
@ -0,0 +1,451 @@ | |||
#version=DEVEL | |||
# X Window System configuration information | |||
xconfig --startxonboot | |||
# Keyboard layouts | |||
keyboard 'us' | |||
# Use network installation | |||
url --mirrorlist="https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch" | |||
# System language | |||
lang en_US.UTF-8 | |||
# Firewall configuration | |||
firewall --enabled --service=mdns | |||
repo --name="fedora" --mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch | |||
repo --name="updates" --mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch | |||
repo --name="rpmfusion-free" --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-$releasever&arch=$basearch | |||
repo --name="rpmfusion-free-updates" --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-updates-released-$releasever&arch=$basearch | |||
repo --name="google-chrome" --baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64 | |||
repo --name="tigeros" --baseurl=https://tigeros.ritlug.com/packages/$basearch/ | |||
# Source repos | |||
repo --name="source" --baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/source/tree/ | |||
repo --name="updates-source" --baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/SRPMS/ | |||
repo --name="tigeros-source" --baseurl=https://tigeros.ritlug.com/packages/source/ | |||
repo --name="rpmfusion-free-source" --baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/source/SRPMS/ | |||
repo --name="rpmfusion-free-updates-source" --baseurl=http://download1.rpmfusion.org/free/fedora/updates/$releasever/SRPMS/ | |||
repo --name="Copr repo for gscreenshot owned by thenaterhood" --baseurl=https://copr-be.cloud.fedoraproject.org/results/thenaterhood/gscreenshot/fedora-$releasever-$basearch/ | |||
# Shutdown after installation | |||
shutdown | |||
# Network information | |||
network --bootproto=dhcp --device=link --activate | |||
# System timezone | |||
timezone US/Eastern | |||
# System authorization information | |||
auth --useshadow --passalgo=sha512 | |||
# SELinux configuration | |||
selinux --enforcing | |||
# System services | |||
services --disabled="sshd" --enabled="NetworkManager,ModemManager" | |||
# System bootloader configuration | |||
bootloader --location=none | |||
# Clear the Master Boot Record | |||
zerombr | |||
# Partition clearing information | |||
clearpart --all | |||
# Disk partitioning information | |||
part / --fstype="ext4" --size=5120 | |||
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 chronyd | |||
### 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 || : | |||
# Don't sync the system clock when running live (RHBZ #1018162) | |||
sed -i 's/rtcsync//' /etc/chrony.conf | |||
# Mark things as configured | |||
touch /.liveimg-configured | |||
# add static hostname to work around xauth bug | |||
# https://bugzilla.redhat.com/show_bug.cgi?id=679486 | |||
# the hostname must be something else than 'localhost' | |||
# https://bugzilla.redhat.com/show_bug.cgi?id=1370222 | |||
echo "localhost-live" > /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 | |||
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* | |||
# remove random seed, the newly installed instance should make it's own | |||
rm -f /var/lib/systemd/random-seed | |||
# convince readahead not to collect | |||
# FIXME: for systemd | |||
echo 'File created by kickstart. See systemd-update-done.service(8).' \ | |||
| tee /etc/.updated >/var/.updated | |||
# Drop the rescue kernel and initramfs, we don't need them on the live media itself. | |||
# See bug 1317709 | |||
rm -f /boot/*-rescue* | |||
# Disable network service here, as doing it in the services line | |||
# fails due to RHBZ #1369794 | |||
/sbin/chkconfig network off | |||
# Remove machine-id on pre generated images | |||
rm -f /etc/machine-id | |||
touch /etc/machine-id | |||
%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 | |||
# cinnamon configuration | |||
# create /etc/sysconfig/desktop (needed for installation) | |||
cat > /etc/sysconfig/desktop <<EOF | |||
PREFERRED=/usr/bin/cinnamon-session | |||
DISPLAYMANAGER=/usr/sbin/lightdm | |||
EOF | |||
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 Cinnamon as default session, otherwise login will fail | |||
sed -i 's/^#user-session=.*/user-session=cinnamon/' /etc/lightdm/lightdm.conf | |||
# Show harddisk install on the desktop | |||
sed -i -e 's/NoDisplay=true/NoDisplay=false/' /usr/share/applications/liveinst.desktop | |||
mkdir /home/liveuser/Desktop | |||
cp /usr/share/applications/liveinst.desktop /home/liveuser/Desktop | |||
# and mark it as executable | |||
chmod +x /home/liveuser/Desktop/liveinst.desktop | |||
# this goes at the end after all other changes. | |||
chown -R liveuser:liveuser /home/liveuser | |||
restorecon -R /home/liveuser | |||
EOF | |||
# TigerOS specific setup | |||
chmod +x /usr/local/bin/\* | |||
#gsettings set org.cinnamon.desktop.background picture-uri "file:///usr/share/backgrounds/tigeros/wallpaper2-1920x1080.jpg" | |||
rm -rf /home/liveuser/.config/autostart/tigeros-postinstall.desktop | |||
restorecon -R /usr/local/bin | |||
chown -R liveuser:liveuser /home/liveuser | |||
restorecon -R /home/liveuser | |||
%end | |||
%packages | |||
@anaconda-tools | |||
@base-x | |||
@cinnamon-desktop | |||
@core | |||
@dial-up | |||
@fonts | |||
@guest-desktop-agents | |||
@hardware-support | |||
@input-methods | |||
@libreoffice | |||
@multimedia | |||
@networkmanager-submodules | |||
@printing | |||
@standard | |||
aajohan-comfortaa-fonts | |||
anaconda | |||
anaconda-installclass-tigeros | |||
desktop-backgrounds-basic | |||
dracut-live | |||
f24-backgrounds-extras-gnome | |||
generic-release-notes | |||
gimp | |||
glibc-all-langpacks | |||
#remove chrome until we verify licensing | |||
#google-chrome-stable | |||
grub2-efi | |||
gscreenshot | |||
hexchat | |||
htop | |||
inkscape | |||
kernel | |||
kernel-modules | |||
kernel-modules-extra | |||
lynx | |||
memtest86+ | |||
parole | |||
pidgin | |||
rhythmbox | |||
rpmfusion-free-release | |||
scrot | |||
syslinux | |||
tigeros-backgrounds | |||
tigeros-ff-profile | |||
tigeros-logos | |||
tigeros-release | |||
tigeros-repos | |||
tigeros-scripts | |||
transmission | |||
vim | |||
wget | |||
yumex-dnf | |||
zsh | |||
#exclude things (packagekit breaks things, fedora-* packages are replaced by ones we customized.) | |||
-PackageKit* | |||
-autofs | |||
-coolkey | |||
-fedora-bookmarks | |||
-fedora-icon-theme | |||
-fedora-logos | |||
-fedora-release | |||
-fedora-release-notes | |||
-gnome-screenshot | |||
-hplip | |||
-isdn4k-utils | |||
-mpage | |||
-numactl | |||
-policycoreutils-gui | |||
-sane-backends | |||
-sox | |||
-system-config-boot | |||
-system-config-language | |||
-system-config-network | |||
-system-config-rootpassword | |||
-system-config-services | |||
-xsane | |||
-xsane-gimp | |||
%end |
@ -0,0 +1,448 @@ | |||
#version=DEVEL | |||
# X Window System configuration information | |||
xconfig --startxonboot | |||
# Keyboard layouts | |||
keyboard 'us' | |||
# Root password | |||
rootpw --iscrypted --lock locked | |||
# Use network installation | |||
url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch" | |||
# System language | |||
lang en_US.UTF-8 | |||
# Firewall configuration | |||
firewall --enabled --service=mdns | |||
repo --name="fedora" --mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch | |||
repo --name="updates" --mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch | |||
repo --name="rpmfusion-free" --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-$releasever&arch=$basearch | |||
repo --name="rpmfusion-free-updates" --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-updates-released-$releasever&arch=$basearch | |||
repo --name="google-chrome" --baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64 | |||
repo --name="tigeros" --baseurl=https://tigeros.ritlug.com/packages/$basearch/ | |||
repo --name="Copr repo for gscreenshot owned by thenaterhood" --baseurl=https://copr-be.cloud.fedoraproject.org/results/thenaterhood/gscreenshot/fedora-$releasever-$basearch/ | |||
# Shutdown after installation | |||
shutdown | |||
# Network information | |||
network --bootproto=dhcp --device=link --activate | |||
# System timezone | |||
timezone US/Eastern | |||
# System authorization information | |||
auth --useshadow --passalgo=sha512 | |||
# SELinux configuration | |||
selinux --enforcing | |||
# System services | |||
services --disabled="sshd" --enabled="NetworkManager,ModemManager" | |||
# System bootloader configuration | |||
bootloader --location=none | |||
# Clear the Master Boot Record | |||
zerombr | |||
# Partition clearing information | |||
clearpart --all | |||
# Disk partitioning information | |||
part / --fstype="ext4" --size=5120 | |||
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 chronyd | |||
### 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 || : | |||
# Don't sync the system clock when running live (RHBZ #1018162) | |||
sed -i 's/rtcsync//' /etc/chrony.conf | |||
# Mark things as configured | |||
touch /.liveimg-configured | |||
# add static hostname to work around xauth bug | |||
# https://bugzilla.redhat.com/show_bug.cgi?id=679486 | |||
# the hostname must be something else than 'localhost' | |||
# https://bugzilla.redhat.com/show_bug.cgi?id=1370222 | |||
echo "localhost-live" > /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 | |||
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* | |||
# remove random seed, the newly installed instance should make it's own | |||
rm -f /var/lib/systemd/random-seed | |||
# convince readahead not to collect | |||
# FIXME: for systemd | |||
echo 'File created by kickstart. See systemd-update-done.service(8).' \ | |||
| tee /etc/.updated >/var/.updated | |||
# Drop the rescue kernel and initramfs, we don't need them on the live media itself. | |||
# See bug 1317709 | |||
rm -f /boot/*-rescue* | |||
# Disable network service here, as doing it in the services line | |||
# fails due to RHBZ #1369794 | |||
/sbin/chkconfig network off | |||
# Remove machine-id on pre generated images | |||
rm -f /etc/machine-id | |||
touch /etc/machine-id | |||
%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 | |||
# cinnamon configuration | |||
# create /etc/sysconfig/desktop (needed for installation) | |||
cat > /etc/sysconfig/desktop <<EOF | |||
PREFERRED=/usr/bin/cinnamon-session | |||
DISPLAYMANAGER=/usr/sbin/lightdm | |||
EOF | |||
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 Cinnamon as default session, otherwise login will fail | |||
sed -i 's/^#user-session=.*/user-session=cinnamon/' /etc/lightdm/lightdm.conf | |||
# Show harddisk install on the desktop | |||
sed -i -e 's/NoDisplay=true/NoDisplay=false/' /usr/share/applications/liveinst.desktop | |||
mkdir /home/liveuser/Desktop | |||
cp /usr/share/applications/liveinst.desktop /home/liveuser/Desktop | |||
# and mark it as executable | |||
chmod +x /home/liveuser/Desktop/liveinst.desktop | |||
# this goes at the end after all other changes. | |||
chown -R liveuser:liveuser /home/liveuser | |||
restorecon -R /home/liveuser | |||
EOF | |||
# TigerOS specific setup | |||
chmod +x /usr/local/bin/\* | |||
#gsettings set org.cinnamon.desktop.background picture-uri "file:///usr/share/backgrounds/tigeros/wallpaper2-1920x1080.jpg" | |||
rm -rf /home/liveuser/.config/autostart/tigeros-postinstall.desktop | |||
restorecon -R /usr/local/bin | |||
chown -R liveuser:liveuser /home/liveuser | |||
restorecon -R /home/liveuser | |||
%end | |||
%packages | |||
@anaconda-tools | |||
@base-x | |||
@cinnamon-desktop | |||
@core | |||
@dial-up | |||
@fonts | |||
@guest-desktop-agents | |||
@hardware-support | |||
@input-methods | |||
@libreoffice | |||
@multimedia | |||
@networkmanager-submodules | |||
@printing | |||
@standard | |||
aajohan-comfortaa-fonts | |||
anaconda | |||
anaconda-installclass-tigeros | |||
desktop-backgrounds-basic | |||
dracut-live | |||
f26-backgrounds-extras-gnome | |||
generic-release-notes | |||
gimp | |||
glibc-all-langpacks | |||
#remove chrome until we verify licensing | |||
#google-chrome-stable | |||
grub2-efi | |||
gscreenshot | |||
hexchat | |||
htop | |||
inkscape | |||
kernel | |||
kernel-modules | |||
kernel-modules-extra | |||
lynx | |||
memtest86+ | |||
parole | |||
pidgin | |||
rhythmbox | |||
rpmfusion-free-release | |||
scrot | |||
syslinux | |||
tigeros-backgrounds | |||
tigeros-ff-profile | |||
tigeros-logos | |||
tigeros-release | |||
tigeros-repos | |||
tigeros-scripts | |||
transmission | |||
vim | |||
wget | |||
yumex-dnf | |||
zsh | |||
#exclude things (packagekit breaks things, fedora-* packages are replaced by ones we customized.) | |||
-PackageKit* | |||
-autofs | |||
-coolkey | |||
-fedora-bookmarks | |||
-fedora-icon-theme | |||
-fedora-logos | |||
-fedora-release | |||
-fedora-release-notes | |||
-gnome-screenshot | |||
-hplip | |||
-isdn4k-utils | |||
-mpage | |||
-numactl | |||
-policycoreutils-gui | |||
-sane-backends | |||
-sox | |||
-system-config-boot | |||
-system-config-language | |||
-system-config-network | |||
-system-config-rootpassword | |||
-system-config-services | |||
-xsane | |||
-xsane-gimp | |||
%end |