move everything configurable to /cfg and try selinux
This commit is contained in:
		
							parent
							
								
									a95907fd97
								
							
						
					
					
						commit
						8dfaa0d4be
					
				
					 9 changed files with 172 additions and 120 deletions
				
			
		| 
						 | 
				
			
			@ -158,7 +158,7 @@ fi
 | 
			
		|||
mkdir -p boot
 | 
			
		||||
mount ${OUT}1 boot
 | 
			
		||||
mkdir -p boot/EFI/FedoraBook
 | 
			
		||||
cp /efi/EFI/FedoraBook/bootx64.efi boot/EFI/FedoraBook/1.efi
 | 
			
		||||
cp /efi/EFI/FedoraBook/1.efi boot/EFI/FedoraBook/1.efi
 | 
			
		||||
[[ -e /efi/Lockdown.efi ]] && cp /efi/Lockdown.efi boot
 | 
			
		||||
[[ -e /efi/Shell.efi ]] && cp /efi/Lockdown.efi boot/EFI/Boot/bootx64.efi
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,5 @@ systemd-bootchart
 | 
			
		|||
grubby
 | 
			
		||||
grub*
 | 
			
		||||
plymouth
 | 
			
		||||
selinux-policy-targeted
 | 
			
		||||
libselinux-utils
 | 
			
		||||
httpd
 | 
			
		||||
gnome-boxes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -169,12 +169,13 @@ mkdir -p "$MY_TMPDIR"/boot/EFI/Boot
 | 
			
		|||
mkdir -p "$MY_TMPDIR"/boot/EFI/FedoraBook
 | 
			
		||||
 | 
			
		||||
if [[ $USE_EFISHELL ]]; then
 | 
			
		||||
    [[ -e "${SOURCE}"/startup.nsh ]] && cp "${SOURCE}"/startup.nsh "$MY_TMPDIR"/boot/
 | 
			
		||||
    [[ -e "${SOURCE}"/LockDown.efi ]] && cp "${SOURCE}"/LockDown.efi "$MY_TMPDIR"/boot/
 | 
			
		||||
    cp "${SOURCE}"/Shell.efi "$MY_TMPDIR"/boot/EFI/Boot/bootx64.efi
 | 
			
		||||
    cp "$SOURCE"/bootx64.efi "$MY_TMPDIR"/boot/EFI/FedoraBook/bootx64.efi
 | 
			
		||||
    [[ -e "${SOURCE}"/efi/startup.nsh ]] && cp "${SOURCE}"/efi/startup.nsh "$MY_TMPDIR"/boot/
 | 
			
		||||
    [[ -e "${SOURCE}"/efi/LockDown.efi ]] && cp "${SOURCE}"/efi/LockDown.efi "$MY_TMPDIR"/boot/
 | 
			
		||||
    cp "${SOURCE}"/efi/Shell.efi "$MY_TMPDIR"/boot/EFI/Boot/bootx64.efi
 | 
			
		||||
    cp "$SOURCE"/bootx64.efi "$MY_TMPDIR"/boot/EFI/FedoraBook/1.efi
 | 
			
		||||
else
 | 
			
		||||
    cp "$SOURCE"/bootx64.efi "$MY_TMPDIR"/boot/EFI/Boot/bootx64.efi
 | 
			
		||||
    cp "$SOURCE"/bootx64.efi "$MY_TMPDIR"/boot/EFI/FedoraBook/1.efi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
umount "$MY_TMPDIR"/boot
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										31
									
								
								mkrelease.sh
									
										
									
									
									
								
							
							
						
						
									
										31
									
								
								mkrelease.sh
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -66,21 +66,24 @@ JSON="$(realpath -e $1)"
 | 
			
		|||
BASEDIR="${JSON%/*}"
 | 
			
		||||
IMAGE="${BASEDIR}/$(jq -r '.name' ${JSON})-$(jq -r '.version' ${JSON})"
 | 
			
		||||
 | 
			
		||||
(
 | 
			
		||||
    cd "$IMAGE"
 | 
			
		||||
    if ! [[ $NOSIGN ]]; then
 | 
			
		||||
        if ! [[ $DBKEY ]] || ! [[ $DBCRT ]]; then
 | 
			
		||||
            echo "Need --dbkey KEY --dbcrt CRT options"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
        if ! sbverify --cert "$DBCRT" bootx64.efi &>/dev/null ; then
 | 
			
		||||
            sbsign --key "$DBKEY" --cert "$DBCRT" --output bootx64-signed.efi bootx64.efi
 | 
			
		||||
            mv bootx64-signed.efi bootx64.efi
 | 
			
		||||
        fi
 | 
			
		||||
pushd "$IMAGE"
 | 
			
		||||
if ! [[ $NOSIGN ]]; then
 | 
			
		||||
    if ! [[ $DBKEY ]] || ! [[ $DBCRT ]]; then
 | 
			
		||||
        echo "Need --dbkey KEY --dbcrt CRT options"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    [[ -f sha512sum.txt ]] || sha512sum * > sha512sum.txt
 | 
			
		||||
    [[ -f sha512sum.txt.sig ]] || gpg2 --detach-sign sha512sum.txt
 | 
			
		||||
)
 | 
			
		||||
    for i in $(find . -type f -name '*.efi'); do
 | 
			
		||||
        [[ -f "$i" ]] || continue
 | 
			
		||||
        if ! sbverify --cert "$DBCRT" "$i" &>/dev/null ; then
 | 
			
		||||
            sbsign --key "$DBKEY" --cert "$DBCRT" --output "${i}signed" "$i"
 | 
			
		||||
            mv "${i}signed" "$i"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
fi
 | 
			
		||||
[[ -f sha512sum.txt ]] || sha512sum $(find . -type f) > sha512sum.txt
 | 
			
		||||
[[ -f sha512sum.txt.sig ]] || gpg2 --detach-sign sha512sum.txt
 | 
			
		||||
 | 
			
		||||
popd
 | 
			
		||||
 | 
			
		||||
if ! [[ $NOTAR ]] && ! [[ -e "$IMAGE".tgz ]]; then
 | 
			
		||||
    tar cf - -C "${IMAGE%/*}" "${IMAGE##*/}" | pigz -c > "$IMAGE".tgz
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,6 +48,7 @@ gobject-introspection-devel
 | 
			
		|||
gperf
 | 
			
		||||
help2man
 | 
			
		||||
iptables-devel
 | 
			
		||||
iputils
 | 
			
		||||
ipw2100-firmware
 | 
			
		||||
ipw2200-firmware
 | 
			
		||||
iscan-firmware
 | 
			
		||||
| 
						 | 
				
			
			@ -84,6 +85,8 @@ libseccomp-devel
 | 
			
		|||
libselinux-devel
 | 
			
		||||
libvirt-daemon-config-network
 | 
			
		||||
libvirt-daemon-kvm
 | 
			
		||||
libvirt-client
 | 
			
		||||
libvirt-bash-completion
 | 
			
		||||
libxkbcommon-devel
 | 
			
		||||
libxslt
 | 
			
		||||
linux-firmware
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										31
									
								
								pre-pivot.sh
									
										
									
									
									
								
							
							
						
						
									
										31
									
								
								pre-pivot.sh
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -21,7 +21,7 @@ get_disk() {
 | 
			
		|||
 | 
			
		||||
udevadm settle
 | 
			
		||||
 | 
			
		||||
BOOTDISK=$(get_disk $(bootdisk)) 
 | 
			
		||||
BOOTDISK=$(get_disk $(bootdisk))
 | 
			
		||||
[[ $BOOTDISK ]] || die "No boot disk found"
 | 
			
		||||
 | 
			
		||||
unset FOUND
 | 
			
		||||
| 
						 | 
				
			
			@ -107,17 +107,24 @@ if [[ $(blkid -o value -s TYPE "$datadev") != "xfs" ]]; then
 | 
			
		|||
    mkfs.xfs -f -L data "$datadev"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
mount -o discard $datadev /sysroot/data || die "Failed to mount $datadev"
 | 
			
		||||
mount -o discard $datadev /sysroot/mnt || die "Failed to mount $datadev"
 | 
			
		||||
 | 
			
		||||
[[ -d /sysroot/data/var  ]] || mkdir /sysroot/data/var
 | 
			
		||||
[[ -d /sysroot/data/home ]] || mkdir /sysroot/data/home
 | 
			
		||||
 | 
			
		||||
mount -o bind /sysroot/data/var /sysroot/var
 | 
			
		||||
mount -o bind /sysroot/data/home /sysroot/home
 | 
			
		||||
 | 
			
		||||
for i in passwd shadow group gshadow subuid subgid; do
 | 
			
		||||
    [[ -f /sysroot/var/$i ]] && continue
 | 
			
		||||
    cp -a /sysroot/usr/share/factory/var/$i /sysroot/var/$i
 | 
			
		||||
for i in var home cfg; do
 | 
			
		||||
    if ! [[ -d /sysroot/mnt/$i ]]; then
 | 
			
		||||
        mkdir /sysroot/mnt/$i
 | 
			
		||||
        FIRST_TIME=1
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
chroot /sysroot /usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev --exclude-prefix=/run --exclude-prefix=/tmp --exclude-prefix=/etc 2>&1 | vinfo
 | 
			
		||||
mount -o bind /sysroot/mnt/var /sysroot/var
 | 
			
		||||
mount -o bind /sysroot/mnt/home /sysroot/home
 | 
			
		||||
mount -o bind /sysroot/mnt/cfg /sysroot/cfg
 | 
			
		||||
umount -l /sysroot/mnt
 | 
			
		||||
 | 
			
		||||
#for i in passwd shadow group gshadow subuid subgid; do
 | 
			
		||||
#    [[ -f /sysroot/cfg/$i ]] && continue
 | 
			
		||||
#    cp -a /sysroot/usr/share/factory/cfg/$i /sysroot/cfg/$i
 | 
			
		||||
#done
 | 
			
		||||
if [[ $FIRST_TIME ]]; then
 | 
			
		||||
    chroot /sysroot bash -c '/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev --exclude-prefix=/run --exclude-prefix=/tmp  --exclude-prefix=/etc 2>&1;  restorecon -R -v /cfg /var 2>&1'| vinfo
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										128
									
								
								prepare-root.sh
									
										
									
									
									
								
							
							
						
						
									
										128
									
								
								prepare-root.sh
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -220,6 +220,11 @@ dnf -v --nogpgcheck \
 | 
			
		|||
    jq \
 | 
			
		||||
    gnupg2 \
 | 
			
		||||
    veritysetup \
 | 
			
		||||
    policycoreutils \
 | 
			
		||||
    selinux-policy-targeted \
 | 
			
		||||
    selinux-policy-devel \
 | 
			
		||||
    libselinux-utils \
 | 
			
		||||
    audit \
 | 
			
		||||
    $PKGLIST
 | 
			
		||||
 | 
			
		||||
for i in passwd shadow group gshadow subuid subgid; do
 | 
			
		||||
| 
						 | 
				
			
			@ -241,6 +246,8 @@ for i in passwd shadow group gshadow subuid subgid; do
 | 
			
		|||
    chmod u+r "${BASEDIR}/${NAME}/$i"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# chroot "$sysroot" bash -i
 | 
			
		||||
 | 
			
		||||
cp "$CURDIR/clonedisk.sh" "$sysroot"/usr/bin/clonedisk
 | 
			
		||||
cp "$CURDIR/update.sh" "$sysroot"/usr/bin/update
 | 
			
		||||
cp "$CURDIR/update.sh" "$sysroot"/usr/bin/update
 | 
			
		||||
| 
						 | 
				
			
			@ -267,7 +274,8 @@ chroot  "$sysroot" \
 | 
			
		|||
	dracut -N --kver $KVER --force \
 | 
			
		||||
	--filesystems "squashfs vfat xfs" \
 | 
			
		||||
	--add-drivers "=drivers/char/tpm" \
 | 
			
		||||
	-m "bash systemd systemd-initrd modsign crypt dm kernel-modules qemu rootfs-block udev-rules dracut-systemd base fs-lib shutdown terminfo resume verity" \
 | 
			
		||||
	-m "bash systemd systemd-initrd modsign crypt dm kernel-modules qemu rootfs-block" \
 | 
			
		||||
	-m "udev-rules dracut-systemd base fs-lib shutdown terminfo resume verity selinux" \
 | 
			
		||||
	--install "clonedisk wipefs sfdisk dd mkfs.xfs mkswap chroot mountpoint mkdir stat openssl" \
 | 
			
		||||
	--install "clevis clevis-luks-bind jose clevis-encrypt-tpm2 clevis-decrypt clevis-luks-unlock clevis-decrypt-tpm2"  \
 | 
			
		||||
	--install "cryptsetup tail sort pwmake mktemp swapon" \
 | 
			
		||||
| 
						 | 
				
			
			@ -289,7 +297,7 @@ rm -fr "$sysroot"/overlay
 | 
			
		|||
 | 
			
		||||
umount "$sysroot"/var/cache/dnf
 | 
			
		||||
 | 
			
		||||
mkdir -p "$sysroot"/usr/share/factory/{var/etc,home}
 | 
			
		||||
mkdir -p "$sysroot"/usr/share/factory/{var,cfg}
 | 
			
		||||
 | 
			
		||||
chroot "$sysroot" update-ca-trust
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -319,21 +327,21 @@ ln -fsnr "$sysroot"/usr/lib/systemd/system/dbus-broker.service "$sysroot"/etc/sy
 | 
			
		|||
#---------------
 | 
			
		||||
# ssh
 | 
			
		||||
if [[ -d "$sysroot"/etc/ssh ]]; then
 | 
			
		||||
    mv "$sysroot"/etc/ssh "$sysroot"/usr/share/factory/var/etc/ssh
 | 
			
		||||
    ln -sfnr "$sysroot"/var/etc/ssh "$sysroot"/etc/ssh
 | 
			
		||||
    mv "$sysroot"/etc/ssh "$sysroot"/usr/share/factory/cfg/ssh
 | 
			
		||||
    ln -sfnr "$sysroot"/cfg/ssh "$sysroot"/etc/ssh
 | 
			
		||||
    cat >> "$sysroot"/usr/lib/tmpfiles.d/ssh.conf <<EOF
 | 
			
		||||
C /var/etc/ssh - - - - -
 | 
			
		||||
C /cfg/ssh - - - - -
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# NetworkManager
 | 
			
		||||
if [[ -d "$sysroot"/etc/NetworkManager ]]; then
 | 
			
		||||
    mv "$sysroot"/etc/NetworkManager "$sysroot"/usr/share/factory/var/etc/
 | 
			
		||||
    ln -fsnr "$sysroot"/var/etc/NetworkManager "$sysroot"/etc/NetworkManager
 | 
			
		||||
    mv "$sysroot"/etc/NetworkManager "$sysroot"/usr/share/factory/cfg/
 | 
			
		||||
    ln -fsnr "$sysroot"/cfg/NetworkManager "$sysroot"/etc/NetworkManager
 | 
			
		||||
    cat >> "$sysroot"/usr/lib/tmpfiles.d/NetworkManager.conf <<EOF
 | 
			
		||||
d /var/lib/NetworkManager 0755 root root - -
 | 
			
		||||
C /var/etc/NetworkManager - - - - -
 | 
			
		||||
C /cfg/NetworkManager - - - - -
 | 
			
		||||
d /run/NetworkManager 0755 root root - -
 | 
			
		||||
EOF
 | 
			
		||||
    rm -fr "$sysroot"/etc/sysconfig/network-scripts
 | 
			
		||||
| 
						 | 
				
			
			@ -343,10 +351,10 @@ fi
 | 
			
		|||
#---------------
 | 
			
		||||
# libvirt
 | 
			
		||||
if [[ -d "$sysroot"/etc/libvirt ]]; then
 | 
			
		||||
    mv "$sysroot"/etc/libvirt "$sysroot"/usr/share/factory/var/etc/
 | 
			
		||||
    ln -fsnr "$sysroot"/var/etc/libvirt "$sysroot"/etc/libvirt
 | 
			
		||||
    mv "$sysroot"/etc/libvirt "$sysroot"/usr/share/factory/cfg/
 | 
			
		||||
    ln -fsnr "$sysroot"/cfg/libvirt "$sysroot"/etc/libvirt
 | 
			
		||||
    cat >> "$sysroot"/usr/lib/tmpfiles.d/libvirt.conf <<EOF
 | 
			
		||||
C /var/etc/libvirt - - - - -
 | 
			
		||||
C /cfg/libvirt - - - - -
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -355,62 +363,63 @@ fi
 | 
			
		|||
ln -fsrn "$sysroot"/run/NetworkManager/resolv.conf "$sysroot"/etc/resolv.conf
 | 
			
		||||
echo 'f /run/NetworkManager/resolv.conf 0755 root root - ' >> "$sysroot"/usr/lib/tmpfiles.d/resolv.conf
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# hostname
 | 
			
		||||
ln -sfrn "$sysroot"/var/hostname "$sysroot"/etc/hostname
 | 
			
		||||
echo "FedoraBook" > "$sysroot"/usr/share/factory/var/hostname
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# vconsole.conf
 | 
			
		||||
ln -fsnr "$sysroot"/var/vconsole.conf "$sysroot"/etc/vconsole.conf
 | 
			
		||||
echo -e 'FONT=latarcyrheb-sun16\nKEYMAP=us' > "$sysroot"/usr/share/factory/var/vconsole.conf
 | 
			
		||||
ln -fsnr "$sysroot"/cfg/vconsole.conf "$sysroot"/etc/vconsole.conf
 | 
			
		||||
echo -e 'FONT=latarcyrheb-sun16\nKEYMAP=us' > "$sysroot"/usr/share/factory/cfg/vconsole.conf
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# locale.conf
 | 
			
		||||
ln -fsnr "$sysroot"/var/locale.conf "$sysroot"/etc/locale.conf
 | 
			
		||||
echo 'LANG=en_US.UTF-8' > "$sysroot"/usr/share/factory/var/locale.conf
 | 
			
		||||
ln -fsnr "$sysroot"/cfg/locale.conf "$sysroot"/etc/locale.conf
 | 
			
		||||
echo 'LANG=en_US.UTF-8' > "$sysroot"/usr/share/factory/cfg/locale.conf
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# localtime
 | 
			
		||||
mv "$sysroot"/etc/localtime "$sysroot"/usr/share/factory/var/localtime
 | 
			
		||||
ln -fsnr "$sysroot"/var/localtime "$sysroot"/etc/localtime
 | 
			
		||||
mv "$sysroot"/etc/localtime "$sysroot"/usr/share/factory/cfg/localtime
 | 
			
		||||
ln -fsnr "$sysroot"/cfg/localtime "$sysroot"/etc/localtime
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# machine-id
 | 
			
		||||
rm -f "$sysroot"/etc/machine-id
 | 
			
		||||
ln -fsnr "$sysroot"/var/machine-id "$sysroot"/etc/machine-id
 | 
			
		||||
ln -fsnr "$sysroot"/cfg/machine-id "$sysroot"/etc/machine-id
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# adjtime
 | 
			
		||||
mv "$sysroot"/etc/adjtime "$sysroot"/usr/share/factory/var/adjtime
 | 
			
		||||
ln -fsnr "$sysroot"/var/adjtime "$sysroot"/etc/adjtime
 | 
			
		||||
mv "$sysroot"/etc/adjtime "$sysroot"/usr/share/factory/cfg/adjtime
 | 
			
		||||
ln -fsnr "$sysroot"/cfg/adjtime "$sysroot"/etc/adjtime
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#/etc/locale.conf#/var/locale.conf#g;s#/etc/vconsole.conf#/var/vconsole.conf#g' "$sysroot"/usr/lib/systemd/systemd-localed
 | 
			
		||||
sed -i -e 's#/etc/adjtime#/var/adjtime#g;s#/etc/localtime#/var/localtime#g' \
 | 
			
		||||
sed -i -e 's#/etc/locale.conf#/cfg/locale.conf#g;s#/etc/vconsole.conf#/cfg/vconsole.conf#g;s#/etc/X11/xorg.conf.d#/cfg/X11/xorg.conf.d#g' \
 | 
			
		||||
 "$sysroot"/usr/lib/systemd/systemd-localed
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#/etc/adjtime#/cfg/adjtime#g;s#/etc/localtime#/cfg/localtime#g' \
 | 
			
		||||
    "$sysroot"/usr/lib/systemd/systemd-timedated \
 | 
			
		||||
    "$sysroot"/usr/lib/systemd/libsystemd-shared*.so \
 | 
			
		||||
    "$sysroot"/lib*/libc.so.*
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#ReadWritePaths=/etc#ReadWritePaths=/var#g' "$sysroot"/lib/systemd/system/systemd-localed.service
 | 
			
		||||
sed -i -e 's#ReadWritePaths=/etc#ReadWritePaths=/var#g' "$sysroot"/lib/systemd/system/systemd-timedated.service
 | 
			
		||||
sed -i -e 's#ReadWritePaths=/etc#ReadWritePaths=/cfg#g' \
 | 
			
		||||
    "$sysroot"/lib/systemd/system/systemd-localed.service \
 | 
			
		||||
    "$sysroot"/lib/systemd/system/systemd-timedated.service \
 | 
			
		||||
    "$sysroot"/lib/systemd/system/systemd-hostnamed.service
 | 
			
		||||
 | 
			
		||||
cat >> "$sysroot"/usr/lib/tmpfiles.d/00-basics.conf <<EOF
 | 
			
		||||
C /var/hostname - - - - -
 | 
			
		||||
C /var/vconsole.conf - - - - -
 | 
			
		||||
C /var/locale.conf - - - - -
 | 
			
		||||
C /var/localtime - - - - -
 | 
			
		||||
C /var/adjtime - - - - -
 | 
			
		||||
C /cfg/hostname - - - - -
 | 
			
		||||
C /cfg/vconsole.conf - - - - -
 | 
			
		||||
C /cfg/locale.conf - - - - -
 | 
			
		||||
C /cfg/localtime - - - - -
 | 
			
		||||
C /cfg/adjtime - - - - -
 | 
			
		||||
Z /cfg 0755 root root - -
 | 
			
		||||
Z /var 0755 root root - -
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# X11
 | 
			
		||||
if [[ -d "$sysroot"/etc/X11/xorg.conf.d ]]; then
 | 
			
		||||
    mkdir -p "$sysroot"/usr/share/factory/var/etc
 | 
			
		||||
    mv "$sysroot"/etc/X11 "$sysroot"/usr/share/factory/var/etc/X11
 | 
			
		||||
    ln -fsnr "$sysroot"/var/etc/X11 "$sysroot"/etc/X11
 | 
			
		||||
    mkdir -p "$sysroot"/usr/share/factory/cfg
 | 
			
		||||
    mv "$sysroot"/etc/X11 "$sysroot"/usr/share/factory/cfg/X11
 | 
			
		||||
    ln -fsnr "$sysroot"/cfg/X11 "$sysroot"/etc/X11
 | 
			
		||||
    cat >> "$sysroot"/usr/lib/tmpfiles.d/X11.conf <<EOF
 | 
			
		||||
C /var/etc/X11 - - - - -
 | 
			
		||||
C /cfg/X11 - - - - -
 | 
			
		||||
EOF
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -442,16 +451,24 @@ cat > "$sysroot"/etc/sysctl.d/inotify.conf <<EOF
 | 
			
		|||
fs.inotify.max_user_watches = $((8192*10))
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
cat >"$sysroot"/etc/fstab <<EOF
 | 
			
		||||
LABEL=data /data xfs defaults,discard 0 0
 | 
			
		||||
/data/var  /var  - bind 0 0
 | 
			
		||||
/data/home /home - bind 0 0
 | 
			
		||||
EOF
 | 
			
		||||
#---------------
 | 
			
		||||
# gnome-initial-setup
 | 
			
		||||
> "$sysroot"/usr/share/gnome-initial-setup/vendor.conf
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ------------------------------------------------------------------------------
 | 
			
		||||
# selinux
 | 
			
		||||
sed -i -e 's#^SELINUX=.*#SELINUX=permissive#g' "$sysroot"/etc/selinux/config
 | 
			
		||||
chroot "$sysroot" semanage fcontext -a -e /etc /cfg
 | 
			
		||||
chroot "$sysroot" semanage fcontext -a -e /etc /usr/share/factory/etc
 | 
			
		||||
chroot "$sysroot" semanage fcontext -a -e /var /usr/share/factory/var
 | 
			
		||||
chroot "$sysroot" fixfiles -v -F -f relabel || :
 | 
			
		||||
chroot "$sysroot" restorecon -v -R /usr/share/factory/ || :
 | 
			
		||||
rm -fr "$sysroot"/var/lib/selinux
 | 
			
		||||
 | 
			
		||||
#---------------
 | 
			
		||||
# var
 | 
			
		||||
rm -fr "$sysroot"/var/lib/rpm
 | 
			
		||||
rm -fr "$sysroot"/var/lib/selinux
 | 
			
		||||
rm -fr "$sysroot"/var/log/dnf*
 | 
			
		||||
rm -fr "$sysroot"/var/cache/*/*
 | 
			
		||||
rm -fr "$sysroot"/var/tmp/*
 | 
			
		||||
| 
						 | 
				
			
			@ -461,7 +478,9 @@ chroot "$sysroot" bash -c 'for i in $(find -H /var -xdev -type d); do grep " $i
 | 
			
		|||
cp -avxr "$sysroot"/var/* "$sysroot"/usr/share/factory/var/
 | 
			
		||||
rm -fr "$sysroot"/usr/share/factory/var/{run,lock}
 | 
			
		||||
 | 
			
		||||
chroot "$sysroot" bash -c 'for i in $(find -H /var -xdev -maxdepth 2 -mindepth 1 -type d); do echo "C $i - - - - -"; done > /usr/lib/tmpfiles.d/var-quirk.conf; :'
 | 
			
		||||
chroot "$sysroot" bash -c 'for i in $(find -H /var -xdev -maxdepth 2 -mindepth 1 -type d); do echo "C $i - - - - -"; done >> /usr/lib/tmpfiles.d/var-quirk.conf; :'
 | 
			
		||||
echo 'C /var/mail - - - - -' >>  "$sysroot"/usr/lib/tmpfiles.d/var-quirk.conf
 | 
			
		||||
 | 
			
		||||
mv "$sysroot"/lib/tmpfiles.d-var.conf "$sysroot"/lib/tmpfiles.d/var.conf
 | 
			
		||||
 | 
			
		||||
sed -i -e "s#VERSION_ID=.*#VERSION_ID=$VERSION_ID#" "$sysroot"/etc/os-release
 | 
			
		||||
| 
						 | 
				
			
			@ -470,6 +489,11 @@ sed -i -e "s#NAME=.*#NAME=$NAME#" "$sysroot"/etc/os-release
 | 
			
		|||
mv -v "$sysroot"/boot/*/*/initrd "$MY_TMPDIR"/
 | 
			
		||||
cp "$sysroot"/lib/modules/*/vmlinuz "$MY_TMPDIR"/linux
 | 
			
		||||
 | 
			
		||||
if [[ -d "$sysroot"/boot/efi/EFI/fedora ]]; then
 | 
			
		||||
    mkdir -p "$MY_TMPDIR"/efi/EFI
 | 
			
		||||
    mv "$sysroot"/boot/efi/EFI/fedora "$MY_TMPDIR"/efi/EFI
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
rm -fr "$sysroot"/{boot,root}
 | 
			
		||||
ln -sfnr "$sysroot"/var/root "$sysroot"/root
 | 
			
		||||
mkdir "$sysroot"/efi
 | 
			
		||||
| 
						 | 
				
			
			@ -477,13 +501,12 @@ rm -fr "$sysroot"/var/*
 | 
			
		|||
rm -fr "$sysroot"/home/*
 | 
			
		||||
rm -f "$sysroot"/etc/yum.repos.d/*
 | 
			
		||||
mkdir -p "$sysroot"/home
 | 
			
		||||
rm -fr "$sysroot"/etc/selinux
 | 
			
		||||
mkdir "$sysroot"/data
 | 
			
		||||
mkdir -p "$sysroot"/cfg
 | 
			
		||||
 | 
			
		||||
for i in "$sysroot"/{dev,sys,proc,run}; do
 | 
			
		||||
    [[ -d "$i" ]] && mountpoint -q "$i" && umount "$i"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ------------------------------------------------------------------------------
 | 
			
		||||
# sysroot
 | 
			
		||||
mksquashfs "$MY_TMPDIR"/sysroot "$MY_TMPDIR"/root.squashfs.img \
 | 
			
		||||
| 
						 | 
				
			
			@ -504,7 +527,10 @@ IMAGE_SIZE=$(stat --printf '%s' "$MY_TMPDIR"/root.img)
 | 
			
		|||
 | 
			
		||||
# ------------------------------------------------------------------------------
 | 
			
		||||
# make bootx64.efi
 | 
			
		||||
echo -n "lockdown=1 quiet rd.shell=0 video=efifb:nobgrt audit=0 selinux=0 verity.imagesize=$IMAGE_SIZE verity.roothash=$ROOT_HASH verity.root=PARTUUID=$ROOT_UUID verity.hashoffset=$ROOT_SIZE raid=noautodetect root=/dev/mapper/root" > "$MY_TMPDIR"/options.txt
 | 
			
		||||
echo -n "lockdown=1 quiet rd.shell=0 video=efifb:nobgrt "\
 | 
			
		||||
 "verity.imagesize=$IMAGE_SIZE verity.roothash=$ROOT_HASH verity.root=PARTUUID=$ROOT_UUID " \
 | 
			
		||||
 "verity.hashoffset=$ROOT_SIZE raid=noautodetect root=/dev/mapper/root" > "$MY_TMPDIR"/options.txt
 | 
			
		||||
 | 
			
		||||
echo -n "${NAME}-${VERSION_ID}" > "$MY_TMPDIR"/release.txt
 | 
			
		||||
objcopy \
 | 
			
		||||
    --add-section .release="$MY_TMPDIR"/release.txt --change-section-vma .release=0x20000 \
 | 
			
		||||
| 
						 | 
				
			
			@ -525,9 +551,11 @@ mv "$MY_TMPDIR"/root-hash.txt \
 | 
			
		|||
   "$MY_TMPDIR"/initrd \
 | 
			
		||||
   "$OUTDIR"
 | 
			
		||||
 | 
			
		||||
[[ -d "$MY_TMPDIR"/efi ]] && mv "$MY_TMPDIR"/efi "$OUTDIR"/efi
 | 
			
		||||
 | 
			
		||||
for i in LockDown.efi Shell.efi startup.nsh; do
 | 
			
		||||
    [[ -e "${BASEDIR}"/$i ]] || continue
 | 
			
		||||
    cp "$i" "$OUTDIR"
 | 
			
		||||
    cp "$i" "$OUTDIR"/efi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
chown -R "$USER" "$OUTDIR"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,65 +1,73 @@
 | 
			
		|||
chroot "$sysroot" bash -c 'useradd -M -G wheel admin'
 | 
			
		||||
#!/usr/bin/bash -ex
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#^\(passwd:.*\) files#\1 files db altfile#g;s#^\(shadow:.*\) files#\1 files altfiles db#g;s#^\(group:.*\) files#\1 files altfiles db#g' \
 | 
			
		||||
    "$sysroot"/etc/nsswitch.conf
 | 
			
		||||
mkdir -p "$sysroot"/usr/db
 | 
			
		||||
sed -i -e 's#/var/db#/usr/db#g' "$sysroot"/lib64/libnss_db-2*.so "$sysroot"/var/db/Makefile
 | 
			
		||||
sed -i -e 's#/var/db#/usr/db#g' "$sysroot"/lib*/libnss_db-2*.so "$sysroot"/var/db/Makefile
 | 
			
		||||
 | 
			
		||||
egrep -e '^(adm|wheel):.*' "$sysroot"/etc/group > "$sysroot"/etc/group.admin
 | 
			
		||||
egrep -e '^(adm|wheel):.*' "$sysroot"/etc/gshadow > "$sysroot"/etc/gshadow.admin
 | 
			
		||||
egrep -e '^(adm|wheel):.*' "$sysroot"/etc/group > "$sysroot"/etc/group.adm
 | 
			
		||||
egrep -e '^(adm|wheel):.*' "$sysroot"/etc/gshadow > "$sysroot"/etc/gshadow.adm
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#:/root:#:/var/root:#g' "$sysroot"/etc/passwd
 | 
			
		||||
 | 
			
		||||
sed -i -e '/^wheel:.*/d;/^adm:.*/d' "$sysroot"/etc/group "$sysroot"/etc/gshadow
 | 
			
		||||
sed -i -e '/^admin:.*/d' "$sysroot"/etc/passwd "$sysroot"/etc/shadow "$sysroot"/etc/group "$sysroot"/etc/gshadow
 | 
			
		||||
 | 
			
		||||
chroot "$sysroot" bash -c 'make -C /var/db /usr/db/passwd.db /usr/db/shadow.db /usr/db/gshadow.db /usr/db/group.db && mv /etc/{passwd,shadow,group,gshadow} /lib && >/etc/passwd && > /etc/shadow && >/etc/group && >/etc/gshadow'
 | 
			
		||||
 | 
			
		||||
mv "$sysroot"/etc/group.admin "$sysroot"/etc/group
 | 
			
		||||
mv "$sysroot"/etc/gshadow.admin "$sysroot"/etc/gshadow
 | 
			
		||||
chmod 0000 "$sysroot"/etc/gshadow
 | 
			
		||||
mv "$sysroot"/etc/group.adm "$sysroot"/etc/group
 | 
			
		||||
mv "$sysroot"/etc/gshadow.adm "$sysroot"/etc/gshadow
 | 
			
		||||
chmod 0000 "$sysroot"/etc/gshadow "$sysroot"/etc/shadow
 | 
			
		||||
 | 
			
		||||
chroot "$sysroot" bash -c 'useradd admin; usermod -a -G wheel admin; echo -n admin | passwd --stdin admin'
 | 
			
		||||
chroot "$sysroot" bash -c 'passwd -e admin'
 | 
			
		||||
 | 
			
		||||
mkdir -p "$sysroot"/usr/share/factory/var
 | 
			
		||||
mv "$sysroot"/etc/passwd "$sysroot"/etc/sub{u,g}id "$sysroot"/etc/shadow "$sysroot"/etc/group "$sysroot"/etc/gshadow "$sysroot"/usr/share/factory/var/
 | 
			
		||||
mkdir -p "$sysroot"/usr/share/factory/cfg
 | 
			
		||||
mv "$sysroot"/etc/passwd \
 | 
			
		||||
    "$sysroot"/etc/sub{u,g}id \
 | 
			
		||||
    "$sysroot"/etc/shadow \
 | 
			
		||||
    "$sysroot"/etc/group \
 | 
			
		||||
    "$sysroot"/etc/gshadow \
 | 
			
		||||
    "$sysroot"/usr/share/factory/cfg/
 | 
			
		||||
 | 
			
		||||
rm -f "$sysroot"/etc/shadow- "$sysroot"/etc/gshadow-
 | 
			
		||||
 | 
			
		||||
sed -i -e 's!^# directory = /etc!directory = /var!g' "$sysroot"/etc/libuser.conf
 | 
			
		||||
 | 
			
		||||
for i in passwd shadow group gshadow .pwd.lock subuid subgid; do
 | 
			
		||||
    ln -sfnr "$sysroot"/var/"$i" "$sysroot"/etc/"$i"
 | 
			
		||||
    ln -sfnr "$sysroot"/cfg/"$i" "$sysroot"/etc/"$i"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#/etc/passwd#/var/passwd#g;s#/etc/npasswd#/var/npasswd#g' "$sysroot"/usr/lib64/security/pam_unix.so
 | 
			
		||||
sed -i -e 's#/etc/shadow#/var/shadow#g;s#/etc/nshadow#/var/nshadow#g' "$sysroot"/usr/lib64/security/pam_unix.so
 | 
			
		||||
sed -i -e 's#/etc/.pwdXXXXXX#/var/.pwdXXXXXX#g' "$sysroot"/usr/lib64/security/pam_unix.so
 | 
			
		||||
sed -i -e 's#/etc/passwd#/var/passwd#g;s#/etc/shadow#/var/shadow#g;s#/etc/gshadow#/var/gshadow#g;s#/etc/group#/var/group#g;s#/etc/subuid#/var/subuid#g;s#/etc/subgid#/var/subgid#g' "$sysroot"/usr/sbin/user{add,mod,del} "$sysroot"/usr/sbin/group{add,mod,del}
 | 
			
		||||
sed -i -e 's#/etc/.pwd.lock#/var/.pwd.lock#g' \
 | 
			
		||||
sed -i -e 's#/etc/passwd#/cfg/passwd#g;s#/etc/npasswd#/cfg/npasswd#g' \
 | 
			
		||||
    "$sysroot"/usr/lib*/security/pam_unix.so
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#/etc/shadow#/cfg/shadow#g;s#/etc/nshadow#/cfg/nshadow#g' \
 | 
			
		||||
    "$sysroot"/usr/lib*/security/pam_unix.so
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#/etc/.pwdXXXXXX#/cfg/.pwdXXXXXX#g' \
 | 
			
		||||
    "$sysroot"/usr/lib*/security/pam_unix.so
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#/etc/passwd#/cfg/passwd#g;s#/etc/shadow#/cfg/shadow#g;s#/etc/gshadow#/cfg/gshadow#g;s#/etc/group#/cfg/group#g;s#/etc/subuid#/cfg/subuid#g;s#/etc/subgid#/cfg/subgid#g' \
 | 
			
		||||
    "$sysroot"/usr/sbin/user{add,mod,del} \
 | 
			
		||||
    "$sysroot"/usr/sbin/group{add,mod,del} \
 | 
			
		||||
    "$sysroot"/usr/bin/newgidmap \
 | 
			
		||||
    "$sysroot"/usr/bin/newuidmap \
 | 
			
		||||
    "$sysroot"/usr/sbin/newusers
 | 
			
		||||
 | 
			
		||||
sed -i -e 's#/etc/.pwd.lock#/cfg/.pwd.lock#g' \
 | 
			
		||||
    "$sysroot"/lib*/libc.so.* \
 | 
			
		||||
    "$sysroot"/usr/lib/systemd/libsystemd-shared*.so
 | 
			
		||||
 | 
			
		||||
[[ -e "$sysroot"/usr/lib*/librpmostree-1.so.1 ]] \
 | 
			
		||||
    && sed -i -e 's#/etc/.pwd.lock#/var/.pwd.lock#g' \
 | 
			
		||||
    && sed -i -e 's#/etc/.pwd.lock#/cfg/.pwd.lock#g' \
 | 
			
		||||
    "$sysroot"/usr/lib*/librpmostree-1.so.1
 | 
			
		||||
 | 
			
		||||
mkdir -p "$sysroot"/usr/share/factory/home
 | 
			
		||||
cp -avxr "$sysroot"/etc/skel "$sysroot"/usr/share/factory/home/admin
 | 
			
		||||
chown -R +1000.+1000 "$sysroot"/usr/share/factory/home/admin
 | 
			
		||||
 | 
			
		||||
mkdir -p "$sysroot"/usr/share/factory/var/root
 | 
			
		||||
cp -avxr "$sysroot"/etc/skel "$sysroot"/usr/share/factory/var/root
 | 
			
		||||
chown -R +0.+0 "$sysroot"/usr/share/factory/var/root
 | 
			
		||||
chown +0.+0 "$sysroot"/usr/share/factory/var/root
 | 
			
		||||
 | 
			
		||||
cat > "$sysroot"/usr/lib/tmpfiles.d/home.conf <<EOF
 | 
			
		||||
C /home/admin - - - - -
 | 
			
		||||
C /var/root - - - - -
 | 
			
		||||
C /var/passwd - - - - -
 | 
			
		||||
C /var/shadow - - - - -
 | 
			
		||||
C /var/group - - - - -
 | 
			
		||||
C /var/gshadow - - - - -
 | 
			
		||||
C /var/subuid - - - - -
 | 
			
		||||
C /var/subgid - - - - -
 | 
			
		||||
C /cfg/passwd - - - - -
 | 
			
		||||
C /cfg/shadow - - - - -
 | 
			
		||||
C /cfg/group - - - - -
 | 
			
		||||
C /cfg/gshadow - - - - -
 | 
			
		||||
C /cfg/subuid - - - - -
 | 
			
		||||
C /cfg/subgid - - - - -
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								update.sh
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								update.sh
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -184,9 +184,9 @@ if ! [[ $NO_CHECK ]]; then
 | 
			
		|||
    while read _ file || [[ $file ]]; do
 | 
			
		||||
        FILES["$file"]="1"
 | 
			
		||||
    done < sha512sum.txt
 | 
			
		||||
    for i in $(ls -1); do
 | 
			
		||||
        [[ $i == sha512sum.txt ]] && continue
 | 
			
		||||
        [[ $i == sha512sum.txt.sig ]] && continue
 | 
			
		||||
    for i in $(find . -type f); do
 | 
			
		||||
        [[ $i == ./sha512sum.txt ]] && continue
 | 
			
		||||
        [[ $i == ./sha512sum.txt.sig ]] && continue
 | 
			
		||||
        if ! [[ ${FILES["$i"]} ]]; then
 | 
			
		||||
            echo "File $i not signed"
 | 
			
		||||
            exit 1
 | 
			
		||||
| 
						 | 
				
			
			@ -210,6 +210,10 @@ sfdisk --part-uuid ${ROOT_DEV} ${NEW_ROOT_PARTNO} ${ROOT_UUID}
 | 
			
		|||
mkdir -p /efi/EFI/${NAME}
 | 
			
		||||
cp bootx64.efi /efi/EFI/${NAME}/${NEW_ROOT_NUM}.efi
 | 
			
		||||
 | 
			
		||||
if [[ -d efi ]]; then
 | 
			
		||||
    cp -vr efi/* /efi/
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
mv /efi/EFI/${NAME}/${OLD_ROOT_NUM}.efi /efi/EFI/${NAME}/_${OLD_ROOT_NUM}.efi || :
 | 
			
		||||
rm -f /efi/EFI/${NAME}/_${NEW_ROOT_NUM}.efi
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -221,4 +225,4 @@ BOOT_ORDER=${BOOT_ORDER#,}
 | 
			
		|||
 | 
			
		||||
efibootmgr -o "FED${NEW_ROOT_NUM},FED$((${OLD_ROOT_NUM}+2)),$BOOT_ORDER"
 | 
			
		||||
 | 
			
		||||
echo "Update successful. Reboot your machine to use it."
 | 
			
		||||
echo "Update successful. Reboot your machine to use it."
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue