fix xfce settings, update copyright and add new functions to the build-x86-images.sh script

This commit is contained in:
manuel 2024-11-13 12:45:07 -01:00
parent 1e289dc7a8
commit 645693b512
16 changed files with 488 additions and 394 deletions

View File

@ -1,4 +1,32 @@
#!/bin/sh
#!/bin/bash
#
#-
#Copyright (c) 2009-2015 Juan Romero Pardines.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# Adapted by the Peppermint Team. Copyright (c) 2024 The Peppermint Team.
# All rights reserved.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#-
set -eu
@ -6,10 +34,14 @@ set -eu
PROGNAME=$(basename "$0")
ARCH=$(uname -m)
IMAGES="base"
IMAGES="xfce"
TRIPLET=
REPO=
DATE=$(date -u +%Y%m%d)
ARCH="${ARCH:-$(uname -m)}"
LOG_DIR="$(dirname "$0")/log"
LOGFILE="${LOG_DIR}/build-iso-${DATE}-${ARCH}-${IMAGES}.log"
exec > >(tee -a "$LOGFILE") 2>&1
usage() {
cat <<-EOH
@ -72,58 +104,213 @@ build_variant() {
variant="$1"
shift
IMG=pep-live-${ARCH}-${DATE}-${variant}.iso
GRUB_PKGS="grub-i386-efi grub-x86_64-efi"
A11Y_PKGS="espeakup void-live-audio brltty"
PKGS="dialog octoxbps cryptsetup lvm2 mdadm rsync void-docs-browse xtools-minimal xmirror chrony void-repo-nonfree void-repo-multilib void-repo-multilib-nonfree $A11Y_PKGS $GRUB_PKGS"
XORG_PKGS="xorg xorg-input-drivers xorg-video-drivers setxkbmap xauth font-misc-misc terminus-font dejavu-fonts-ttf orca"
SERVICES="sshd chronyd"
LIGHTDM_SESSION=''
echo "Building variant: $variant, Image: $IMG"
GRUB_PKGS="grub-i386-efi \
grub-x86_64-efi \
efitools \
sbsigntool \
tpm-tools \
tpm2-tools"
A11Y_PKGS="espeakup \
void-live-audio brltty"
XORG_PKGS="xorg xorg-input-drivers \
xorg-video-drivers \
xf86-video-intel \
setxkbmap \
xauth \
font-misc-misc \
terminus-font \
dejavu-fonts-ttf \
orca"
FIRMWARE_PKGS="linux-firmware \
broadcom-bt-firmware \
alsa-firmware \
linux-firmware-qualcomm \
qemu-firmware \
sof-firmware"
SHARED_PKGS="dialog \
octoxbps \
plymouth \
cryptsetup \
lvm2 \
mdadm \
rsync \
void-docs-browse \
xtools \
xmirror \
chrony \
void-repo-nonfree \
void-repo-multilib \
void-repo-multilib-nonfree \
gvfs-afc \
gvfs-mtp \
gvfs-smb \
udisks2 \
alsa-utils \
bluez \
bluez-cups \
btop \
console-setup \
cups \
curl \
dconf-editor \
dbus-x11 \
cantarell-fonts \
liberation-fonts-ttf \
git \
wget \
gparted \
gvfs \
samba \
samba-cups \
cups-pdf \
avahi \
inxi \
ntp \
python3-pipx \
smartmontools \
smbclient \
spice-vdagent \
sqlite \
openssh \
nano \
vim-x11 \
vim \
python3-tkinter \
python3-requests \
python3-certifi \
python3-Pillow \
blueman \
zip \
p7zip \
blueman \
gnome-keyring \
NetworkManager \
network-manager-applet \
$A11Y_PKGS \
$GRUB_PKGS \
$XORG_PKGS \
$FIRMWARE_PKGS"
SHARED_SERVICES="sshd \
chronyd \
dbus \
polkitd \
bluetoothd \
cupsd \
avahi-daemon \
ntpd \
smbd \
nmbd \
sshd \
spice-vdagentd \
NetworkManager"
LIGHTDM_PKGS="lightdm \
lightdm-gtk3-greeter \
lightdm-gtk-greeter-settings"
INSTALLER_PKGS="calamares"
XFCE_PKGS="xfce4 \
xfce4-pulseaudio-plugin \
xfce4-panel-profiles \
xfce4-plugins \
xfce4-screenshooter \
mousepad \
mugshot \
menulibre \
thunar-archive-plugin \
thunar-volman \
xfce4-plugins \
xfce4-screenshooter \
xarchiver \
gnome-disk-utility \
system-config-printer \
simple-scan \
gnome-themes-standard"
XFCE_LOADED_PKGS="xfce4 \
xfce4-pulseaudio-plugin \
xfce4-panel-profiles \
xfce4-plugins \
xfce4-screenshooter \
mousepad \
mugshot \
menulibre \
thunar-archive-plugin \
thunar-volman \
xfce4-plugins \
xfce4-screenshooter \
xarchiver \
gnome-disk-utility \
system-config-printer \
simple-scan \
gnome-themes-standard"
MATE_PKGS="mate \
mate-extra"
KDE_PKGS="kde5 \
konsole \
dolphin"
LXQT_PKGS=" lxqt \
sddm"
case $variant in
base)
SERVICES="$SERVICES dhcpcd wpa_supplicant acpid"
;;
enlightenment)
PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter enlightenment terminology udisks2 firefox"
SERVICES="$SERVICES acpid dhcpcd wpa_supplicant lightdm dbus polkitd"
LIGHTDM_SESSION=enlightenment
;;
xfce)
PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter xfce4 gnome-themes-standard gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox xfce4-pulseaudio-plugin
mousepad mugshot menulibre thunar-archive-plugin thunar-volman xfce4-panel-profiles xfce4 xfce4-plugins xfce4-screenshooter xarchiver alsa-utils bluez bluez-cups btop console-setup cups
curl dconf-editor dbus-x11 cantarell-fonts liberation-fonts-ttf git wget gnome-disk-utility gparted gvfs samba samba-cups cups-pdf avahi inxi network-manager-applet ntp python3-pipx
python3-tkinter python3-requests python3-certifi python3-Pillow system-config-printer simple-scan smartmontools smbclient spice-vdagent sqlite openssh nano vim-x11 vim linux-firmware
broadcom-bt-firmware alsa-firmware linux-firmware-qualcomm qemu-firmware sof-firmware blueman xf86-video-intel zip p7zip calamares"
SERVICES="$SERVICES dbus lightdm NetworkManager polkitd bluetoothd cupsd avahi-daemon ntpd smbd nmbd sshd spice-vdagentd"
PKGS="$XORG_PKGS \
$SHARED_PKGS \
$INSTALLER_PKGS \
$LIGHTDM_PKGS \
$XFCE_PKGS "
SERVICES="$SHARED_SERVICES \
lightdm"
LIGHTDM_SESSION=xfce
;;
mate)
PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter mate mate-extra gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
SERVICES="$SERVICES dbus lightdm NetworkManager polkitd"
PKGS="$XORG_PKGS \
$SHARED_PKGS \
$INSTALLER_PKGS \
$LIGHTDM_PKGS \
$MATE_PKGS "
SERVICES="$SHARED_SERVICES \
lightdm"
LIGHTDM_SESSION=mate
;;
cinnamon)
PKGS="$PKGS $XORG_PKGS lightdm lightdm-gtk3-greeter cinnamon gnome-keyring colord gnome-terminal gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
SERVICES="$SERVICES dbus lightdm NetworkManager polkitd"
LIGHTDM_SESSION=cinnamon
;;
gnome)
PKGS="$PKGS $XORG_PKGS gnome firefox"
SERVICES="$SERVICES dbus gdm NetworkManager polkitd"
;;
kde)
PKGS="$PKGS $XORG_PKGS kde5 konsole firefox dolphin NetworkManager"
SERVICES="$SERVICES dbus NetworkManager sddm"
;;
lxde)
PKGS="$PKGS $XORG_PKGS lxde lightdm lightdm-gtk3-greeter gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
SERVICES="$SERVICES acpid dbus dhcpcd wpa_supplicant lightdm polkitd"
LIGHTDM_SESSION=LXDE
PKGS="$XORG_PKGS \
$SHARED_PKGS \
$INSTALLER_PKGS \
$KDE_PKGS"
SERVICES="$SHARED_SERVICES \
sddm"
;;
lxqt)
PKGS="$PKGS $XORG_PKGS lxqt sddm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox"
SERVICES="$SERVICES dbus dhcpcd wpa_supplicant sddm polkitd"
PKGS="$XORG_PKGS \
$SHARED_PKGS \
$INSTALLER_PKGS \
$LXQT_PKGS"
SERVICES="$SHARED_SERVICES \
sddm \
wpa_supplicant"
;;
xfce-loaded)
PKGS="$XORG_PKGS \
$SHARED_PKGS \
$INSTALLER_PKGS \
$LIGHTDM_PKGS \
$XFCE_LOADED_PKGS "
SERVICES="$SHARED_SERVICES \
lightdm"
LIGHTDM_SESSION=xfce
;;
*)
>&2 echo "Unknown variant $variant"
@ -155,17 +342,6 @@ if [ ! -x mklive.sh ]; then
exit 1
fi
if [ -x installer.sh ]; then
MKLIVE_VERSION="$(PROGNAME='' version)"
installer=$(mktemp)
sed "s/@@MKLIVE_VERSION@@/${MKLIVE_VERSION}/" installer.sh > "$installer"
install -Dm755 "$installer" "$INCLUDEDIR"/usr/bin/pep-installer
rm "$installer"
else
echo installer.sh not found >&2
exit 1
fi
if [ -n "$TRIPLET" ]; then
VARIANT="${TRIPLET##*-}"
REST="${TRIPLET%-*}"
@ -178,23 +354,43 @@ else
done
fi
move_isos() {
echo "Movendo as ISOs para /var/www/html..."
mv pep-live-${ARCH}-${DATE}-*.iso /var/www/html/ || { echo "Erro ao mover as ISOs"; exit 1; }
check_disk_space() {
FREE_SPACE=$(df /var/www/html | awk 'NR==2 {print $4}')
MIN_SPACE_REQUIRED=10000 # Adjust this value based on expected file size
if [ "$FREE_SPACE" -lt "$MIN_SPACE_REQUIRED" ]; then
echo "Not enough free space in /var/www/html. Required: $MIN_SPACE_REQUIRED, Available: $FREE_SPACE"
exit 1
fi
}
# No final do script, após a chamada de build_variant
if [ -n "$TRIPLET" ]; then
VARIANT="${TRIPLET##*-}"
REST="${TRIPLET%-*}"
DATE="${REST##*-}"
ARCH="${REST%-*}"
build_variant "$VARIANT" "$@"
else
for image in $IMAGES; do
build_variant "$image" "$@"
done
fi
check_permissions() {
if [ ! -w "/var/www/html" ]; then
echo "You do not have write permissions to /var/www/html. Please check your permissions."
exit 1
fi
}
cleanup_old_isos() {
ISO_DIR="/var/www/html" # Directory where ISOs are stored
find "$ISO_DIR" -type f -name "*.iso" -mtime +2 -exec rm -f {} \; # Remove .iso files older than 2 days
echo "Old ISOs removed from $ISO_DIR"
}
move_isos() {
# Ensure the destination directory exists before moving the ISOs
if [ ! -d "/var/www/html" ]; then
echo "Creating the /var/www/html directory..."
mkdir -p /var/www/html || { echo "Error creating the /var/www/html directory"; exit 1; }
fi
echo "Moving the ISOs to /var/www/html..."
mv pep-live-${ARCH}-${DATE}-*.iso /var/www/html/ || { echo "Error moving the ISOs"; exit 1; }
}
check_disk_space
check_permissions
cleanup_old_isos
move_isos

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -1,2 +0,0 @@
[Seat:*]
user-session=xfce

View File

@ -1,171 +0,0 @@
[Seat:*]
#
# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# lock-memory = True to prevent memory from being paged to disk
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# logind-check-graphical = True to on start seats that are marked as graphical by logind
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
# greeters-directory = Directory to find greeters
# backup-logs = True to move add a .old suffix to old log files when opening new ones
# dbus-service = True if LightDM provides a D-Bus service to control it
#
#type=local
#pam-service=lightdm
#pam-autologin-service=lightdm-autologin
#pam-greeter-service=lightdm-greeter
#xserver-backend=
#xserver-command=X
#xmir-command=Xmir
#xserver-config=
#xserver-layout=
#xserver-allow-tcp=false
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
#unity-compositor-command=unity-system-compositor
#unity-compositor-timeout=60
#greeter-session=lightdm-gtk-greeter
greeter-hide-users=false
#greeter-allow-guest=true
#greeter-show-manual-login=false
#greeter-show-remote-login=true
#user-session=xfce
#allow-user-switching=true
#allow-guest=true
#guest-session=
#session-wrapper=lightdm-session
#greeter-wrapper=
#guest-wrapper=
#display-setup-script=
#display-stopped-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
#autologin-user=
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=
#exit-on-failure=false
#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively
# it can be a word and the first 7 characters are used as the key.
#
[LightDM]
#start-default-seat=true
#greeter-user=lightdm
#minimum-display-number=0
#minimum-vt=7
#lock-memory=true
#user-authority-in-system-dir=false
#guest-account-script=guest-account
#logind-check-graphical=false
#log-directory=/var/log/lightdm
#run-directory=/var/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters
#backup-logs=true
#dbus-service=true
#
# Seat configuration
#
# Seat configuration is matched against the seat name glob in the section, for example:
# [Seat:*] matches all seats and is applied first.
# [Seat:seat0] matches the seat named "seat0".
# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client".
#
# type = Seat type (local, xremote, unity)
# pam-service = PAM service to use for login
# pam-autologin-service = PAM service to use for autologin
# pam-greeter-service = PAM service to use for greeters
# xserver-backend = X backend to use (mir)
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
# xserver-config = Config file to pass to X server
# xserver-layout = Layout to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xserver-share = True if the X server is shared for both greeter and session
# xserver-hostname = Hostname of X server (only for type=xremote)
# xserver-display-number = Display number of X server (only for type=xremote)
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)
# unity-compositor-timeout = Number of seconds to wait for compositor to start
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# greeter-allow-guest = True if the greeter should show a guest login option
# greeter-show-manual-login = True if the greeter should offer a manual login option
# greeter-show-remote-login = True if the greeter should offer a remote login option
# user-session = Session to load for users
# allow-user-switching = True if allowed to switch users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# greeter-wrapper = Wrapper script to run greeter with
# guest-wrapper = Wrapper script to run guest sessions with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# display-stopped-script = Script to run after stopping the display server (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# autologin-in-background = True if autologin session should not be immediately activated
# exit-on-failure = True if the daemon should exit if this seat fails
#
[XDMCPServer]
#enabled=false
#port=177
#listen-address=
#key=
#hostname=
#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# command = Command to run Xvnc server with
# port = TCP/IP port to listen for connections on
# listen-address = Host/address to listen for VNC connections (use all addresses if not present)
# width = Width of display to use
# height = Height of display to use
# depth = Color depth of display to use
#
[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#listen-address=
#width=1024
#height=768
#depth=8

17
log/README Normal file
View File

@ -0,0 +1,17 @@
This directory contains log files generated during the ISO build process.
The logs capture the output of each build step, including any errors or warnings that may occur. These logs are useful for troubleshooting and monitoring the build process.
Each log file is named following the format:
build-iso-YYYYMMDD-variant.log
Where:
- `YYYYMMDD` is the date the build was initiated.
- `variant` is the variant of the image being built (e.g., xfce, kde, mate).
These log files are automatically generated and stored here. You can use them to track the progress of your builds or to identify and resolve any issues encountered during the process.
If you encounter any errors during the ISO build, you should check the corresponding log file for detailed information about the issue.
Thank you for using this build system!

157
mklive.sh
View File

@ -1,7 +1,7 @@
#!/bin/bash
#
#-
# Copyright (c) 2009-2015 Juan Romero Pardines.
#Copyright (c) 2009-2015 Juan Romero Pardines.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@ -13,10 +13,13 @@
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# Adapted by the Peppermint Team. Copyright (c) 2024 The Peppermint Team.
# All rights reserved.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
@ -28,8 +31,30 @@ umask 022
. ./lib.sh
readonly REQUIRED_PKGS="base-files libgcc dash coreutils sed tar gawk syslinux grub-i386-efi grub-x86_64-efi memtest86+ squashfs-tools xorriso"
readonly INITRAMFS_PKGS="binutils xz device-mapper dhclient dracut-network openresolv"
readonly REQUIRED_PKGS="base-files \
libgcc \
dash \
coreutils \
sed \
tar \
gawk \
syslinux \
tpm \
tpm-tools \
tpm2-tools \
tpm2-tss \
tpm2-tss-devel \
grub-i386-efi \
grub-x86_64-efi \
memtest86+ \
squashfs-tools \
xorriso"
readonly INITRAMFS_PKGS="binutils \
xz \
device-mapper \
dhclient \
dracut-network \
openresolv"
readonly PROGNAME=$(basename "$0")
declare -a INCLUDE_DIRS=()
@ -198,6 +223,16 @@ copy_pep_calamares_branding() {
cp -r calamares/calamares/* "$1"/etc/calamares
}
copy_pep_calamares_scripts() {
mkdir -p "$1"/usr/local/bin
cp -r calamares/scripts/* "$1"/usr/local/bin
}
copy_pep_calamares_autostart() {
mkdir -p "$1"/etc/xdg/autostart
cp -r calamares/autostart/* "$1"/etc/xdg/autostart
}
copy_void_keys() {
mkdir -p "$1"/var/db/xbps/keys
cp keys/*.plist "$1"/var/db/xbps/keys
@ -280,6 +315,31 @@ generate_initramfs() {
cp "$ROOTFS"/boot/vmlinuz-$KERNELVERSION "$BOOT_DIR"/vmlinuz
}
setup_plymouth() {
# Define the Plymouth directory in rootfs
local plymouth_dir="$1/usr/share/plymouth/themes"
local plymouth_config="$1/etc/plymouth/plymouthd.conf"
# Create the Plymouth themes directory if it doesn't exist
mkdir -p "$plymouth_dir"
# Copy theme files to the Plymouth directory
cp -r plymouth/theme/* "$plymouth_dir"
# Set Plymouth to use the copied default theme
mkdir -p "$(dirname "$plymouth_config")"
echo "[Daemon]" > "$plymouth_config"
echo "Theme=joy" >> "$plymouth_config"
# Ensure Plymouth will be started at boot
echo "HOOK+=plymouth" >> "$1/etc/dracut.conf.d/plymouth.conf"
# Add the service to the initramfs so it starts with the system
chroot "$1" dracut -f --add plymouth
info_msg "Plymouth configured successfully with theme 'joy'."
}
cleanup_rootfs() {
for f in ${INITRAMFS_PKGS}; do
revdeps=$(xbps-query -r "$ROOTFS" -X $f)
@ -319,21 +379,23 @@ generate_isolinux_boot() {
}
generate_grub_efi_boot() {
# Copy and configure GRUB files
cp -f grub/grub.cfg "$GRUB_DIR"
cp -f grub/grub_pep.cfg.in "$GRUB_DIR"/grub_pep.cfg
sed -i -e "s|@@SPLASHIMAGE@@|$(basename "${SPLASH_IMAGE}")|" \
-e "s|@@KERNVER@@|${KERNELVERSION}|" \
-e "s|@@KEYMAP@@|${KEYMAP}|" \
-e "s|@@ARCH@@|$BASE_ARCH|" \
-e "s|@@BOOT_TITLE@@|${BOOT_TITLE}|" \
-e "s|@@BOOT_CMDLINE@@|${BOOT_CMDLINE}|" \
-e "s|@@LOCALE@@|${LOCALE}|" "$GRUB_DIR"/grub_pep.cfg
-e "s|@@KERNVER@@|${KERNELVERSION}|" \
-e "s|@@KEYMAP@@|${KEYMAP}|" \
-e "s|@@ARCH@@|$BASE_ARCH|" \
-e "s|@@BOOT_TITLE@@|${BOOT_TITLE}|" \
-e "s|@@BOOT_CMDLINE@@|${BOOT_CMDLINE}|" \
-e "s|@@LOCALE@@|${LOCALE}|" "$GRUB_DIR"/grub_pep.cfg
mkdir -p "$GRUB_DIR"/fonts
cp -f "$GRUB_DATADIR"/unicode.pf2 "$GRUB_DIR"/fonts
# Ensure loop module is loaded
modprobe -q loop || :
# Create EFI vfat image.
# Create EFI vfat image
truncate -s 32M "$GRUB_DIR"/efiboot.img >/dev/null 2>&1
mkfs.vfat -F12 -S 512 -n "grub_uefi" "$GRUB_DIR/efiboot.img" >/dev/null 2>&1
@ -341,36 +403,76 @@ generate_grub_efi_boot() {
LOOP_DEVICE="$(losetup --show --find "${GRUB_DIR}"/efiboot.img)"
mount -o rw,flush -t vfat "${LOOP_DEVICE}" "${GRUB_EFI_TMPDIR}" >/dev/null 2>&1
# Generate 32-bit EFI loader
cp -a "$IMAGEDIR"/boot "$PEPHOSTDIR"
xbps-uchroot "$PEPHOSTDIR" grub-mkstandalone -- \
--directory="/usr/lib/grub/i386-efi" \
--format="i386-efi" \
--output="/tmp/bootia32.efi" \
"boot/grub/grub.cfg"
--directory="/usr/lib/grub/i386-efi" \
--format="i386-efi" \
--output="/tmp/bootia32.efi" \
"boot/grub/grub.cfg"
if [ $? -ne 0 ]; then
umount "$GRUB_EFI_TMPDIR"
losetup --detach "${LOOP_DEVICE}"
die "Failed to generate EFI loader"
die "Failed to generate EFI loader for 32-bit"
fi
mkdir -p "${GRUB_EFI_TMPDIR}"/EFI/BOOT
cp -f "$PEPHOSTDIR"/tmp/bootia32.efi "${GRUB_EFI_TMPDIR}"/EFI/BOOT/BOOTIA32.EFI
# Generate 64-bit EFI loader
xbps-uchroot "$PEPHOSTDIR" grub-mkstandalone -- \
--directory="/usr/lib/grub/x86_64-efi" \
--format="x86_64-efi" \
--output="/tmp/bootx64.efi" \
"boot/grub/grub.cfg"
--directory="/usr/lib/grub/x86_64-efi" \
--format="x86_64-efi" \
--output="/tmp/bootx64.efi" \
"boot/grub/grub.cfg"
if [ $? -ne 0 ]; then
umount "$GRUB_EFI_TMPDIR"
losetup --detach "${LOOP_DEVICE}"
die "Failed to generate EFI loader"
die "Failed to generate EFI loader for 64-bit"
fi
cp -f "$PEPHOSTDIR"/tmp/bootx64.efi "${GRUB_EFI_TMPDIR}"/EFI/BOOT/BOOTX64.EFI
# Add Secure Boot and TPM support
echo "[*] Configuring Secure Boot and TPM support..."
local SB_KEYS_DIR="/etc/secureboot/keys"
mkdir -p "$SB_KEYS_DIR"
if [[ ! -f "$SB_KEYS_DIR/db.key" || ! -f "$SB_KEYS_DIR/db.crt" ]]; then
openssl req -new -x509 -newkey rsa:2048 -keyout "$SB_KEYS_DIR/db.key" \
-out "$SB_KEYS_DIR/db.crt" -nodes -days 3650 \
-subj "/CN=SecureBoot DB"
echo "[*] Secure Boot keys generated."
fi
# Check if TPM is present
if [[ -c /dev/tpm0 || -c /dev/tpmrm0 ]]; then
echo "TPM detected. Proceeding with signing using TPM..."
# Commands for signing with TPM will go here
else
echo "TPM not detected. Skipping TPM signing."
export TSS2_TCTI="none" # Prevents TCTI initialization attempts without TPM
fi
# Sign the EFI files for Secure Boot
sbsign --key "$SB_KEYS_DIR/db.key" --cert "$SB_KEYS_DIR/db.crt" \
--output "${GRUB_EFI_TMPDIR}/EFI/BOOT/BOOTIA32.EFI" "${GRUB_EFI_TMPDIR}/EFI/BOOT/BOOTIA32.EFI"
sbsign --key "$SB_KEYS_DIR/db.key" --cert "$SB_KEYS_DIR/db.crt" \
--output "${GRUB_EFI_TMPDIR}/EFI/BOOT/BOOTX64.EFI" "${GRUB_EFI_TMPDIR}/EFI/BOOT/BOOTX64.EFI"
# TPM Support: Extend TPM PCR for measured boot
if command -v tpm2_pcrextend &>/dev/null; then
tpm2_pcrextend 0:sha256=$(sha256sum "${GRUB_EFI_TMPDIR}/EFI/BOOT/BOOTX64.EFI" | awk '{print $1}')
else
echo "Warning: TPM tools are not available; TPM support will be skipped."
fi
# Finalize and unmount
umount "$GRUB_EFI_TMPDIR"
losetup --detach "${LOOP_DEVICE}"
rm -rf "$GRUB_EFI_TMPDIR"
# include memtest86+
# Include memtest86+ if needed
cp -f "$PEPHOSTDIR"/boot/memtest.efi "$BOOT_DIR"
echo "[*] EFI loaders with Secure Boot and TPM support generated successfully."
}
generate_squashfs() {
@ -523,12 +625,14 @@ copy_pep_autostart "$ROOTFS"
copy_pep_font "$ROOTFS"
copy_pep_application "$ROOTFS"
copy_pep_PepProTools "$ROOTFS"
#copy_pep_lightdm "$ROOTFS"
copy_pep_lightdm "$ROOTFS"
copy_pep_aliases "$ROOTFS"
copy_pep_artwork "$ROOTFS"
copy_pep_default_grub "$ROOTFS"
copy_pep_calamares_modules "$ROOTFS"
copy_pep_calamares_branding "$ROOTFS"
copy_pep_calamares_scripts "$ROOTFS"
copy_pep_calamares_autostart "$ROOTFS"
# Get linux version for ISO
# If linux version option specified use
@ -579,6 +683,9 @@ fi
print_step "Generating initramfs image ($INITRAMFS_COMPRESSION)..."
generate_initramfs
print_step "Setup plymouth splash screen..."
setup_plymouth "$ROOTFS"
print_step "Generating isolinux support for PC-BIOS systems..."
generate_isolinux_boot
@ -586,7 +693,7 @@ print_step "Generating GRUB support for EFI systems..."
generate_grub_efi_boot
#print_step "Configuring Secure Boot and TPM support..."
#source ./secureboot_tpm_setup.sh
#source ./secureboot_tpm_setup.sh "$ROOTFS"
print_step "Cleaning up rootfs..."
cleanup_rootfs

View File

@ -1,9 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Peppermint Update
Comment=Simple Update Shortcut
Type=Application
Exec=sudo xDaily
Icon=system-software-update
Terminal=true
StartupNotify=false

View File

@ -1,13 +0,0 @@
[Desktop Entry]
Name=Synaptic Package Manager
GenericName=Package Manager
Comment=Install, remove and upgrade software packages
Exec=synaptic-pkexec
Icon=synaptic
Terminal=false
Type=Application
Categories=PackageManager;GTK;System;Settings;
X-Ubuntu-Gettext-Domain=synaptic
StartupNotify=true
StartupWMClass=synaptic
X-XFCE-Source=file:///usr/share/applications/synaptic.desktop

View File

@ -0,0 +1,20 @@
[Desktop Entry]
Categories=System;Tools;
Comment=Add or remove software installed on the system
Comment[pt]=Adicionar ou remover software instalado no sistema
Exec=/usr/bin/octoxbps
Name=OctoXBPS
Icon=octopi
MimeType=
GenericName=Add/Remove Software
GenericName[pt]=Adicionar/Remover Software
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=
X-XFCE-Source=file:///usr/share/applications/octoxbps.desktop

View File

@ -1,83 +0,0 @@
favorites=Welcome.desktop
recent=
button-title=Menu
button-icon=org.xfce.panel.whiskermenu
button-single-row=false
show-button-title=true
show-button-icon=false
launcher-show-name=true
launcher-show-description=false
launcher-show-tooltip=true
launcher-icon-size=1
hover-switch-category=true
category-show-name=true
category-icon-size=1
sort-categories=true
view-mode=2
default-category=2
recent-items-max=10
favorites-in-recent=true
position-search-alternate=true
position-commands-alternate=true
position-categories-alternate=true
position-categories-horizontal=false
stay-on-focus-out=false
profile-shape=0
confirm-session-command=true
menu-width=477
menu-height=566
menu-opacity=100
command-settings=xfce4-settings-manager
show-command-settings=true
command-lockscreen=xflock4
show-command-lockscreen=true
command-switchuser=dm-tool switch-to-greeter
show-command-switchuser=false
command-logoutuser=xfce4-session-logout --logout --fast
show-command-logoutuser=false
command-restart=xfce4-session-logout --reboot --fast
show-command-restart=false
command-shutdown=xfce4-session-logout --halt --fast
show-command-shutdown=false
command-suspend=xfce4-session-logout --suspend
show-command-suspend=false
command-hibernate=xfce4-session-logout --hibernate
show-command-hibernate=false
command-logout=xfce4-session-logout
show-command-logout=true
command-menueditor=menulibre
show-command-menueditor=true
command-profile=mugshot
show-command-profile=true
search-actions=5
[action0]
name=Man Pages
pattern=#
command=exo-open --launch TerminalEmulator man %s
regex=false
[action1]
name=Web Search
pattern=?
command=exo-open --launch WebBrowser https://duckduckgo.com/?q=%u
regex=false
[action2]
name=Wikipedia
pattern=!w
command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u
regex=false
[action3]
name=Run in Terminal
pattern=!
command=exo-open --launch TerminalEmulator %s
regex=false
[action4]
name=Open URI
pattern=^(file|http|https):\\/\\/(.*)$
command=exo-open \\0
regex=true

View File

@ -6,14 +6,14 @@
<property name="Virtual1" type="string" value="Virtual1">
<property name="Active" type="bool" value="true"/>
<property name="EDID" type="string" value=""/>
<property name="Resolution" type="string" value="1152x864"/>
<property name="RefreshRate" type="double" value="75.000000"/>
<property name="Resolution" type="string" value="1440x900"/>
<property name="RefreshRate" type="double" value="59.887445342162557"/>
<property name="Rotation" type="int" value="0"/>
<property name="Reflection" type="string" value="0"/>
<property name="Primary" type="bool" value="true"/>
<property name="Scale" type="empty">
<property name="X" type="double" value="1.000000"/>
<property name="Y" type="double" value="1.000000"/>
<property name="X" type="double" value="1"/>
<property name="Y" type="double" value="1"/>
</property>
<property name="Position" type="empty">
<property name="X" type="int" value="0"/>
@ -29,14 +29,14 @@
<property name="Virtual1" type="string" value="Virtual1">
<property name="Active" type="bool" value="true"/>
<property name="EDID" type="string" value=""/>
<property name="Resolution" type="string" value="1152x864"/>
<property name="RefreshRate" type="double" value="75.000000"/>
<property name="Resolution" type="string" value="1440x900"/>
<property name="RefreshRate" type="double" value="59.887445342162557"/>
<property name="Rotation" type="int" value="0"/>
<property name="Reflection" type="string" value="0"/>
<property name="Primary" type="bool" value="true"/>
<property name="Scale" type="empty">
<property name="X" type="double" value="1.000000"/>
<property name="Y" type="double" value="1.000000"/>
<property name="X" type="double" value="1"/>
<property name="Y" type="double" value="1"/>
</property>
<property name="Position" type="empty">
<property name="X" type="int" value="0"/>
@ -48,4 +48,5 @@
<property name="EDID" type="string" value="81abc3cda09a5b3f72e2b3f37433d47373d5f667"/>
</property>
</property>
<property name="Notify" type="int" value="1"/>
</channel>

View File

@ -7,6 +7,18 @@
<property name="image-path" type="string" value="/usr/share/backgrounds/pexels-sutee-vichaporn-8498924.jpg"/>
<property name="image-style" type="int" value="3"/>
</property>
<property name="monitorVirtual1" type="empty">
<property name="workspace0" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="3"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/pexels-sutee-vichaporn-8498924.jpg"/>
</property>
<property name="workspace1" type="empty">
<property name="color-style" type="int" value="0"/>
<property name="image-style" type="int" value="3"/>
<property name="last-image" type="string" value="/usr/share/backgrounds/pexels-sutee-vichaporn-8498924.jpg"/>
</property>
</property>
</property>
</property>
<property name="desktop-menu" type="empty">

View File

@ -9,4 +9,5 @@
<value type="string" value="xfce4-settings-helper"/>
</property>
</property>
<property name="log-max-size-enabled" type="bool" value="true"/>
</channel>

View File

@ -13,7 +13,6 @@
<property name="size" type="uint" value="32"/>
<property name="plugin-ids" type="array">
<value type="int" value="7"/>
<value type="int" value="1"/>
<value type="int" value="15"/>
<value type="int" value="16"/>
<value type="int" value="17"/>
@ -24,7 +23,6 @@
<value type="int" value="5"/>
<value type="int" value="6"/>
<value type="int" value="9"/>
<value type="int" value="14"/>
<value type="int" value="10"/>
<value type="int" value="8"/>
<value type="int" value="12"/>
@ -32,13 +30,13 @@
</property>
<property name="background-style" type="uint" value="0"/>
<property name="background-rgba" type="array">
<value type="double" value="0.227333"/>
<value type="double" value="0.22733300000000001"/>
<value type="double" value="0.243808"/>
<value type="double" value="0.310000"/>
<value type="double" value="0.500000"/>
<value type="double" value="0.31"/>
<value type="double" value="0.5"/>
</property>
<property name="enter-opacity" type="uint" value="100"/>
<property name="leave-opacity" type="uint" value="100"/>
<property name="leave-opacity" type="uint" value="100"/>
</property>
</property>
<property name="plugins" type="empty">
@ -61,6 +59,8 @@
<property name="plugin-6" type="string" value="systray">
<property name="square-icons" type="bool" value="true"/>
<property name="known-legacy-items" type="array">
<value type="string" value="octoxbps-notifier"/>
<value type="string" value="ethernet network connection “wired connection 1” active"/>
<value type="string" value="thunar"/>
<value type="string" value="networkmanager applet"/>
</property>
@ -77,11 +77,35 @@
<property name="plugin-12" type="string" value="clock">
<property name="tooltip-format" type="string" value="%A %d %B %Y"/>
<property name="digital-format" type="string" value="%_H:%M:%S "/>
<property name="digital-time-format" type="string" value="%_H:%M:%S "/>
<property name="digital-layout" type="uint" value="3"/>
</property>
<property name="plugin-13" type="string" value="separator">
<property name="style" type="uint" value="0"/>
</property>
<property name="plugin-7" type="string" value="whiskermenu"/>
<property name="plugin-7" type="string" value="whiskermenu">
<property name="button-title" type="string" value="Menu"/>
<property name="show-button-title" type="bool" value="true"/>
<property name="show-button-icon" type="bool" value="false"/>
<property name="launcher-show-description" type="bool" value="false"/>
<property name="launcher-icon-size" type="int" value="1"/>
<property name="hover-switch-category" type="bool" value="true"/>
<property name="view-mode" type="int" value="2"/>
<property name="default-category" type="int" value="2"/>
<property name="favorites-in-recent" type="bool" value="true"/>
<property name="position-search-alternate" type="bool" value="true"/>
<property name="position-commands-alternate" type="bool" value="true"/>
<property name="position-categories-alternate" type="bool" value="true"/>
<property name="menu-width" type="int" value="477"/>
<property name="menu-height" type="int" value="566"/>
<property name="command-switchuser" type="string" value="dm-tool switch-to-greeter"/>
<property name="favorites" type="array">
<value type="string" value="Welcome.desktop"/>
</property>
<property name="recent" type="array">
<value type="string" value="gparted.desktop"/>
</property>
</property>
<property name="plugin-15" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="16158061302.desktop"/>
@ -94,17 +118,11 @@
</property>
<property name="plugin-17" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="16158061764.desktop"/>
<value type="string" value="16158067576.desktop"/>
<value type="string" value="16158067647.desktop"/>
<value type="string" value="16158067718.desktop"/>
<value type="string" value="161580678811.desktop"/>
<value type="string" value="161580681212.desktop"/>
</property>
</property>
<property name="plugin-14" type="string" value="launcher">
<property name="items" type="array">
<value type="string" value="16211853731.desktop"/>
<value type="string" value="17315015632.desktop"/>
</property>
</property>
</property>

View File

@ -2,7 +2,7 @@
<channel name="xfce4-settings-manager" version="1.0">
<property name="last" type="empty">
<property name="window-width" type="int" value="648"/>
<property name="window-width" type="int" value="741"/>
<property name="window-height" type="int" value="500"/>
</property>
</channel>