basementhud/mkrootfs.sh

87 lines
2.0 KiB
Bash

#!/bin/sh
set -e
srcdir="$(dirname "$0")"
destdir="$(mkdir -p "$1" && readlink -e "$1")"
dest=basementhud.squashfs
releasever=37
mkdir -p "${destdir}"
dnf --installroot "${destdir}" install -y \
--releasever ${releasever} \
fedora-release
cp /etc/dnf/dnf.conf "${destdir}/etc/dnf/"
echo install_weak_deps=False >> "${destdir}"/etc/dnf/dnf.conf
dnf --installroot "${destdir}" install -y \
bcm2711-firmware \
curl \
dhcp-client \
dracut-network \
firefox \
hostname \
kmod \
mesa-dri-drivers \
nbd \
openbox \
openssh-server \
openssl1.1 \
rsyslog \
systemd \
xinit \
xorg-x11-server-Xorg \
xrandr \
xset \
zram-generator \
zram-generator-defaults \
--
dnf --installroot "${destdir}" install -y \
--setopt tsflags=noscripts \
kernel \
--
kver=$(rpm --root "${destdir}" -q --qf '%{VERSION}-%{RELEASE}.%{ARCH}' kernel)
if [ ! -f "${destdir}"/lib/modules/"${kver}"/modules.dep ]; then
chroot "${destdir}" depmod -a "${kver}"
fi
cp -p \
"${srcdir}"/cmdline.txt \
"${srcdir}"/config.txt \
"${destdir}"/boot/efi
tar --owner root:0 --group root:0 -C "${srcdir}/overlay" -c . \
| tar -C "${destdir}" -x
chown -R 1000:1000 "${destdir}"/home/user
if ! grep -q ^user: "${destdir}"/etc/group; then
chroot "${destdir}" groupadd -g 1000 user
fi
if ! grep -q ^user: "${destdir}"/etc/passwd; then
chroot "${destdir}" useradd -u 1000 -g 1000 user
fi
if ! grep -qE '^video:.*:.+:.*,?user' "${destdir}"/etc/group; then
chroot "${destdir}" gpasswd -a user video
fi
chroot "${destdir}" systemctl enable \
dhclient@eth0 \
systemd-time-wait-sync \
systemd-timesyncd \
xinit@user
chroot "${destdir}" systemctl disable \
systemd-homed \
systemd-userdbd
ln -sf /run/resolv.conf "${destdir}"/etc/resolv.conf
grep -lR pam_sss "${destdir}"/etc/pam.d \
| xargs sed -i /pam_sss/d
umask 0022
mksquashfs "${destdir}" "${destdir}/boot/${dest}" \
-comp lz4 \
-noappend \
-ef "${srcdir}"/squashfs-exclude.txt \
-no-exports \
-wildcards