#571 Create separate Live Workstation kickstart file for ppc64le
Closed 4 years ago by dftxbs3e. Opened 4 years ago by dftxbs3e.
dftxbs3e/fedora-kickstarts live-workstation-ppc64le  into  master

@@ -0,0 +1,359 @@ 

+ # fedora-live-base.ks

+ #

+ # 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 --passalgo=sha512

+ selinux --enforcing

+ firewall --enabled --service=mdns

+ xconfig --startxonboot

+ zerombr

+ clearpart --all

+ part / --size 5120 --fstype ext4

+ services --enabled=NetworkManager,ModemManager --disabled=sshd

+ network --bootproto=dhcp --device=link --activate

+ rootpw --lock --iscrypted locked

+ shutdown

+ 

+ %include fedora-repo.ks

+ 

+ %packages

+ @base-x

+ @guest-desktop-agents

+ @standard

+ @core

+ @fonts

+ @input-methods

+ @dial-up

+ @multimedia

+ @hardware-support

+ @printing

+ 

+ # Explicitly specified here:

+ # <notting> walters: because otherwise dependency loops cause yum issues.

+ kernel

+ kernel-modules

+ kernel-modules-extra

+ 

+ # The point of a live image is to install

+ anaconda

+ anaconda-install-env-deps

+ anaconda-live

+ @anaconda-tools

+ 

+ # Need aajohan-comfortaa-fonts for the SVG rnotes images

+ aajohan-comfortaa-fonts

+ 

+ # Without this, initramfs generation during live image creation fails: #1242586

+ dracut-live

+ 

+ # anaconda needs the locales available to run for different locales

+ glibc-all-langpacks

+ 

+ # no longer in @core since 2018-10, but needed for livesys script

+ initscripts

+ chkconfig

+ %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 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=}

+     continue

+   fi

+   if [ "\${arg##live_dir=}" != "\${arg}" ]; then

+     livedir=\${arg##live_dir=}

+   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=}

+     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 liveuser 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 || :

+ 

+ # turn off abrtd on a live image

+ systemctl --no-reload disable abrtd.service 2> /dev/null || :

+ systemctl stop abrtd.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

+ hostnamectl set-hostname "localhost-live"

+ 

+ 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 --eval '%{fedora}')

+ 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

+     # For livecd-creator builds

+     if [ ! -d $LIVE_ROOT/LiveOS ]; then mkdir -p $LIVE_ROOT/LiveOS ; fi

+     cp /usr/bin/livecd-iso-to-disk $LIVE_ROOT/LiveOS

+ 

+     # For lorax/livemedia-creator builds

+     sed -i '

+     /## make boot.iso/ i\

+     # Add livecd-iso-to-disk script to .iso filesystem at /LiveOS/\

+     <% f = "usr/bin/livecd-iso-to-disk" %>\

+     %if exists(f):\

+         install ${f} ${LIVEDIR}/${f|basename}\

+     %endif\

+     ' /usr/share/lorax/templates.d/99-generic/live/x86.tmpl

+ fi

+ 

+ %end

@@ -0,0 +1,96 @@ 

+ # Maintained by the Fedora Workstation WG:

+ # http://fedoraproject.org/wiki/Workstation

+ # mailto:desktop@lists.fedoraproject.org

+ 

+ %include fedora-live-ppc64le-base.ks

+ %include fedora-workstation-common.ks

+ #

+ # Disable this for now as packagekit is causing compose failures

+ # by leaving a gpg-agent around holding /dev/null open.

+ #

+ #include snippets/packagekit-cached-metadata.ks

+ 

+ part / --size 6656

+ 

+ %post

+ 

+ cat >> /etc/rc.d/init.d/livesys << EOF

+ 

+ 

+ # disable gnome-software automatically downloading updates

+ cat >> /usr/share/glib-2.0/schemas/org.gnome.software.gschema.override << FOE

+ [org.gnome.software]

+ download-updates=false

+ FOE

+ 

+ # don't autostart gnome-software session service

+ rm -f /etc/xdg/autostart/gnome-software-service.desktop

+ 

+ # disable the gnome-software shell search provider

+ cat >> /usr/share/gnome-shell/search-providers/org.gnome.Software-search-provider.ini << FOE

+ DefaultDisabled=true

+ FOE

+ 

+ # don't run gnome-initial-setup

+ mkdir ~liveuser/.config

+ touch ~liveuser/.config/gnome-initial-setup-done

+ 

+ # suppress anaconda spokes redundant with gnome-initial-setup

+ cat >> /etc/sysconfig/anaconda << FOE

+ [NetworkSpoke]

+ visited=1

+ 

+ [PasswordSpoke]

+ visited=1

+ 

+ [UserSpoke]

+ visited=1

+ FOE

+ 

+ # make the installer show up

+ if [ -f /usr/share/applications/liveinst.desktop ]; 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', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'anaconda.desktop']

+ FOE

+ 

+   # Make the welcome screen show up

+   if [ -f /usr/share/anaconda/gnome/fedora-welcome.desktop ]; then

+     mkdir -p ~liveuser/.config/autostart

+     cp /usr/share/anaconda/gnome/fedora-welcome.desktop /usr/share/applications/

+     cp /usr/share/anaconda/gnome/fedora-welcome.desktop ~liveuser/.config/autostart/

+   fi

+ 

+   # Copy Anaconda branding in place

+   if [ -d /usr/share/lorax/product/usr/share/anaconda ]; then

+     cp -a /usr/share/lorax/product/* /

+   fi

+ fi

+ 

+ # rebuild schema cache with any overrides we installed

+ glib-compile-schemas /usr/share/glib-2.0/schemas

+ 

+ # set up auto-login

+ cat > /etc/gdm/custom.conf << FOE

+ [daemon]

+ AutomaticLoginEnable=True

+ AutomaticLogin=liveuser

+ FOE

+ 

+ # Turn off PackageKit-command-not-found while uninstalled

+ if [ -f /etc/PackageKit/CommandNotFound.conf ]; then

+   sed -i -e 's/^SoftwareSourceSearch=true/SoftwareSourceSearch=false/' /etc/PackageKit/CommandNotFound.conf

+ fi

+ 

+ # make sure to set the right permissions and selinux contexts

+ chown -R liveuser:liveuser /home/liveuser/

+ restorecon -R /home/liveuser/

+ 

+ EOF

+ 

+ %end

I did not find a way to add a condition on the architecture so I created separate files.

memtest86+ and syslinux were removed because they are x86-only tools.

Signed-off-by: dftxbs3e dftxbs3e@free.fr

This should be resolvable in other ways, we've had similar issues with cloud images where things for VMware are only available on x86 yet we can build using a single kickstart across all arches.

@pbrobinson The only way I see is by using package groups, however it's not practical to do this for only two packages and for ppc64le only.

Cloud images have the 'cloud-server-environment' group. See: https://pagure.io/fedora-kickstarts/blob/master/f/fedora-cloud-base.ks#_63

Check out arm-tools group, it had 4 packages, and is funnily enough specific to Arm

@pbrobinson alright what would you call a group for memtest and syslinux? Also, how do we create groups? I'm unfamiliar with the infra

The groups are in the fedora-comps git repo: https://pagure.io/fedora-comps check the arm-tools group with in the comps-f31.xml.in comps-f32.xml.in files. Maybe call it x86-tools as they're only built on x86?

Pull-Request has been closed by dftxbs3e

4 years ago