# Build a Raspberry Pi - XFCE install using livemedia-creator
# Note this image will only boot if you reformat the boot partition to vfat
# you can manually reformat the boot partition after image creation or use the script provided below
#
# Reformat boot partition script:
# http://scotland.proximity.on.ca/raspberrypi/test-releases/rpfr18v6/latest/revfat
lang en_US.UTF-8
keyboard us
timezone --utc US/Eastern
auth --useshadow --enablemd5
selinux --disabled
firewall --enabled --service=mdns,ssh
network --bootproto=dhcp --device=eth0 --onboot=on --activate --hostname=pidora.local
services --enabled=NetworkManager,sshd,ntpd --disabled=network
# Only use this with Anaconda for serial console installs, not with livemedia-creator.
# Use this for serial console-only installs
#skipx
# Set a default root password for Rasbberry Pi
rootpw --plaintext raspberrypi
# Repositories
# apparently we must use 'url' for the install repo for livemedia-creator
url --url="http://japan.proximity.on.ca/kojifiles/repos/f20-build/latest/armv6hl/"
repo --name=pidora --ignoregroups=true --baseurl="http://japan.proximity.on.ca/kojifiles/mash20/pidora-20-latest/pidora-20-updates/armhfp/"
#repo --name=pidora-updates --baseurl="http://japan.proximity.on.ca/repos/f20-updates-build/latest/armv6hl/"
repo --name=pidora-rpfr --baseurl="http://japan.proximity.on.ca/kojifiles/mash20/pidora-20-latest/pidora-20-rpfr-updates/armhfp/"
#
# Define how large you want your rootfs to be
#
bootloader --location=boot
zerombr
clearpart --all
## Need to create logical volume groups first then partition
part /boot --size 50 --fstype ext4 --label=boot --asprimary
part swap --size 255 --label=swap
part / --size 3000 --fstype ext4 --label=rootfs --asprimary
#
# Add all the packages after the base packages
#
%packages --ignoremissing
%include packagelist.ks
%end
# more configuration
%post --log=ks-log-info.txt
echo "##### $(date) - Post-installation file configuration"
#mkdir -p /mnt/sysimage/boot/grub2/
# /etc/fstab
cat << EOF > /etc/fstab
LABEL="rootfs" / ext4 defaults,noatime 1 1
LABEL="BOOT" /boot vfat defaults 1 2
EOF
# /etc/hosts
cat << EOF > ${fsdir}/etc/hosts
127.0.0.1 localhost localhost.localdomain pidora.local
EOF
# root password
sed -i 's|^root:.*|root:x:0:0:root:/root:/bin/bash|' /etc/passwd
sed -i 's|^SELINUX=enforcing|SELINUX=permissive|' /etc/selinux/config
# hostname
cat << EOF > /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=pidora.local
NETWORKWAIT=1
EOF
# should be blacklisted, floods dmesg with logs
# /etc/modprobe.d/blacklist.conf
cat << EOF > /etc/modprobe.d/blacklist.conf
blacklist evbug
EOF
# create a releasever var
cat << EOF > /etc/yum/vars/releasever
20
EOF
#swapiness settings
cat << EOF > /etc/sysctl.conf
vm.swappiness=1
EOF
# Boot optimizations
cat << EOF > /tmp/optimize-systemd
#!/bin/bash
echo "Optimizing systemd within chroot."
#fedora-storage-init-late.service fedora-storage-init.service plymouth-halt.service plymouth-kexec.service plymouth-poweroff.service plymouth-quit.service plymouth-quit-wait.service plymouth-read-write.service plymouth-reboot.service plymouth-start.service mdmonitor.service mdmonitor-takeover.service auditd.service avahi-daemon.service avahi-daemon.socket bluetooth.target dev-hugepages.mount dev-mqueue.mount fedora-configure.service fedora-loadmodules.service fedora-readonly.service ip6tables.service sys-kernel-config.mount sys-kernel-debug.mount systemd-readahead-collect.service systemd-readahead-done.service systemd-readahead-done.timer systemd-readahead-replay.service
EOF
chmod 0755 /tmp/optimize-systemd
for i in gdm.service iprupdate.service iprdump.service iprinit.service firewalld.service auditd.service sendmail.service sm-client.service dmraid-activation.service bluetooth.service fedora-readonly.service sys-kerenl-debug.mount rtkit-daemon.service kmod-static-nodes.service
do
systemctl disable $i
systemctl mask $i
done
#modules loaded
for i in nf_conntrack_netbios_ns nf_conntrack_broadcast ipt_MASQUERADE ip6table_mangle bnep bluetooth rfkill ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 iptable_nat nf_nat iptable_mangle nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ebtable_filter ebtables ip6table_filter ip6_tables nls_ascii autofs4
do
modprobe $i
done
# gtk icon theme
mkdir -p /etc/gtk-3.0/
cat << EOF > /etc/gtk-3.0/settings.ini
[Settings]
gtk-icon-theme-name=gnome
EOF
# Headless service file fix
cat << EOF > /usr/lib/systemd/system/headless-mode.service
[Unit]
Description=Checking the status of headless mode
After=sound.target network.target
Before=firstboot-graphical.service
[Service]
Type=simple
ExecStart=/usr/bin/headon
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# Pidora 2014 Mock config file
cat << EOF > /etc/mock/pidora-20-armv6hl.cfg
# Auto-generated by the Koji build system
config_opts['root'] = 'pidora-19-armv6hl'
config_opts['chroothome'] = '/builddir'
config_opts['use_host_resolv'] = False
config_opts['basedir'] = '/var/lib/mock'
config_opts['rpmbuild_timeout'] = 86400
config_opts['yum.conf'] = '[main]\ncachedir=/var/cache/yum\ndebuglevel=1\nlogfile=/var/log/yum.log\nreposdir=/dev/null\nretries=20\nobsoletes=1\ngpgcheck=0\nassumeyes=1\n\n# repos\n\n[build]\nname=build\nbaseurl=http://koji.pidora.ca//repos/f20-build/30395/armv6hl\n'
config_opts['chroot_setup_cmd'] = 'groupinstall build'
config_opts['target_arch'] = 'armv6hl'
config_opts['root'] = 'f20'
config_opts['plugin_conf']['root_cache_enable'] = False
config_opts['plugin_conf']['yum_cache_enable'] = False
config_opts['plugin_conf']['ccache_enable'] = False
config_opts['macros']['%_host'] = 'armv6hl-koji-linux-gnu'
config_opts['macros']['%_host_cpu'] = 'armv6hl'
config_opts['macros']['%vendor'] = 'Koji'
config_opts['macros']['%distribution'] = 'Koji Testing'
config_opts['macros']['%_topdir'] = '/builddir/build'
config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'
config_opts['macros']['%packager'] = 'Koji'
EOF
# Enable needed services
for i in nortc.service lightdm.service firstboot-graphical.service polkit.service headless-mode.service
do
systemctl enable $i
done
# Missing symlink for sendmail.pid
ln -s /var/run /run
# run ld config for raspberrypi-vc-libs
ldconfig
# set graphical target
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
echo "##### $(date) - Final configurations"
# Firstboot timezone bug fix
sed -i "s|self.priority = 99|self.priority = 98|" /usr/share/firstboot/modules/date.py
# Firstboot reboot fix
echo ' os.system("/sbin/reboot")' >> /usr/sbin/firstboot
# Use this if you would like to quiet mode off for testing purposes
#sed -i "s|quiet||" /boot/cmdline.txt
# selinux disabled (memory requirements)
sed -i "s|SELINUX=.*|SELINUX=disabled|" /etc/selinux/config
for X in passwd shadow group gshadow
do
echo "==================================== $X"
ls -l /etc/$X
echo "------------------------------------"
cat /etc/$X
done
echo "===================================="
pwconv
grpconv
# password for root (password=raspberrypi, overwritten by firstboot)
sed -i 's|root:.*:|root:$6$KW0GGbE5$zlEB9.PbHVh8kmXj1WMFGLJGwwthhU4oXn2oNxHZllbUSzTsVhTZ9jts8RC7uicuUCWyrsZ1e2yEj4ErDLOHQ/:15525:0:99999:7:::|' /etc/shadow
# default network configuration (dhcp)
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
NM_CONTROLLED=yes
EOF
# force remove this package
yum remove -y gnome-session-xsession
%end