#5 i3 on Live
Merged 3 years ago by x3mboy. Opened 3 years ago by nasirhm.
i3-sig/ nasirhm/Fedora-i3-Spin i3flat  into  master

file modified
+9
@@ -7,6 +7,15 @@ 

  

  == Current Workflow:

  

+ == Changelog

+ 

+ === With respin 20200710 :

+ 

+ We now have a flat i3 with lightdm-gtk as a Display manager and the live works fine on QEMU/KVM.

+ The ks is initially brached off from XFCE and hence still have some bits that needs to be removed without breaking the live.

+ The respin seems to cause some issues while installing with `liveinst` on urxvt with a GTK erorr.

+ 

+ === With respin 20200615

  For now, we've started with flattening/forking two widely used spins: `xfce` and `lxde` and adding the i3 packages there to ensure stability among packages.

  A compose build was made as `F32-20200615` with the help of folks from the Respins SiG.

  

file added
+434
@@ -0,0 +1,434 @@ 

+ #version=DEVEL

+ # X Window System configuration information

+ xconfig  --startxonboot

+ # Keyboard layouts

+ keyboard 'us'

+ # Root password

+ rootpw --iscrypted --lock locked

+ # System language

+ lang en_US.UTF-8

+ # Shutdown after installation

+ shutdown

+ # Network information

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

+ # System authorization information

+ auth --useshadow --passalgo=sha512

+ # Firewall configuration

+ firewall --enabled --service=mdns

+ repo --name="fedora" --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch

+ repo --name="updates" --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch

+ # Use network installation

+ url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch"

+ # System timezone

+ timezone US/Eastern

+ # 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

F33 is probably going to use btrfs. Shouldn't we use it then as well?

+ 

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

+ 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

Not to collect what?

+ # 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

+ 

+ %post

+ # xfce configuration

+ 

+ # create /etc/sysconfig/desktop (needed for installation)

+ 

+ cat > /etc/sysconfig/desktop <<EOF

+ PREFERRED=/usr/bin/i3

+ DISPLAYMANAGER=/usr/sbin/lightdm

+ EOF

+ 

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

+ 

+ FOE

Shouldn't this be an EOF?

EDIT: ok, I actually don't know why this is in there, because the cat <<< EOF from line 344 is terminated in line 380.

+ 

+ # disable screensaver locking (#674410)

+ cat >> /home/liveuser/.xscreensaver << FOE

+ mode:           off

+ lock:           False

+ dpmsEnabled:    False

+ FOE

+ 

+ # deactivate xfconf-migration (#683161)

+ rm -f /etc/xdg/autostart/xfconf-migration-4.6.desktop || :

+ 

+ # deactivate xfce4-panel first-run dialog (#693569)

+ mkdir -p /home/liveuser/.config/xfce4/xfconf/xfce-perchannel-xml

+ cp /etc/xdg/xfce4/panel/default.xml /home/liveuser/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml

+ 

+ # 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 i3 as default session, otherwise login will fail

+ sed -i 's/^#user-session=.*/user-session=i3/' /etc/lightdm/lightdm.conf

+ 

+ # no updater applet in live environment

+ rm -f /etc/xdg/autostart/org.mageia.dnfdragora-updater.desktop

+ 

+ # and mark it as executable (new Xfce security feature)

+ 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

+ 

+ %end

+ 

+ %packages

+ @admin-tools

+ @anaconda-tools

+ @base-x

+ @core

+ @dial-up

+ @fonts

+ @guest-desktop-agents

+ @hardware-support

+ @input-methods

+ @multimedia

+ @networkmanager-submodules

+ @printing

+ @standard

+ lightdm-gtk

+ aajohan-comfortaa-fonts

+ anaconda

+ anaconda-install-env-deps

+ anaconda-live

+ chkconfig

+ dracut-live

+ glibc-all-langpacks

+ gnome-keyring-pam

+ initscripts

+ kernel

+ kernel-modules

+ kernel-modules-extra

+ memtest86+

+ syslinux

+ system-config-printer

+ wget

+ xscreensaver-extras

+ -acpid

+ -aspell-*

+ -autofs

+ -desktop-backgrounds-basic

+ -gimp-help

+ -hplip

+ -isdn4k-utils

+ -mpage

+ -sane-backends

+ -xsane

+ -xsane-gimp

+ 

+ # i3 Packages

+ i3

+ i3lock

+ i3status

+ dunst

Does the live image need a notification daemon?

+ brightlight

+ 

+ %end

Made changes to Change-log with latest info and added the flat i3 ks file

F33 is probably going to use btrfs. Shouldn't we use it then as well?

Shouldn't this be an EOF?

EDIT: ok, I actually don't know why this is in there, because the cat <<< EOF from line 344 is terminated in line 380.

Does the live image need a notification daemon?

F33 is probably going to use btrfs. Shouldn't we use it then as well?

We've using the non rawhide version, the last stable branch which is F32 in our case and it doesn't have btrfs yet. Once we're good with the branched version, we can change it according to rawhide by flattening the rawhide ks.

F33 is probably going to use btrfs. Shouldn't we use it then as well?

Better wait until the change is approved

Shouldn't this be an EOF?
EDIT: ok, I actually don't know why this is in there, because the cat <<< EOF from line 344 is terminated in line 380.

It's a new HEREDOC

Not to collect what?

Hmm, As far as I know about redahead, It was removed from systemDwith SystemD's version 217.

It was used earlier to load a file's content into a page cache, Which prefetched the file so that when it's accessed it's contents are read from RAM rather than HDD.

Does the live image need a notification daemon?

It's in the Brainstorm minimal page, Although I think it's good to have it there along with in the packages after installation.

Wiki Page: https://fedoraproject.org/wiki/SIGs/i3/Brainstorm

Pull-Request has been merged by x3mboy

3 years ago