update calamares files and infra.py and inflate_bubble.py to improve the calamares files copy for deb, dev, debld, devld and ignore the other bases

This commit is contained in:
manuel 2024-05-25 11:06:14 +00:00
parent ac604b12c0
commit 0f667914dc
91 changed files with 2179 additions and 38 deletions

BIN
calamares_settings.tar.xz Normal file

Binary file not shown.

View File

@ -0,0 +1,21 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Install Peppermint
Name[bg]=Инсталиране на Peppermint
Name[es]=Instale Peppermint
Name[fr]= Installer Peppermint
Name[hu]=Telepítse a Peppermint
Name[it]=Installare Peppermint
Name[ja]= Peppermint
Name[pt]=Instalar Peppermint
Name[pt_BR]=Instalar Peppermint
Name[ru]=Установить Peppermint
Exec=install-peppermint
Icon=install-debian.png
Terminal=false
Categories=Settings
Comment=Calamares Installer for Peppermint Live
Keywords=calamares;system;install;peppermint;installer
StartupNotify=True
StartupWMClass=calamares

View File

@ -0,0 +1,34 @@
---
componentName: peppermint
welcomeStyleCalamares: false
welcomeExpandingLogo: true
windowExpanding: normal
windowSize: 700,450
windowPlacement: center
strings:
productName: Peppermint
shortProductName: Peppermint
version: 00
shortVersion: 00
versionedName: Peppermint
shortVersionedName: Peppermint
bootloaderEntryName: Peppermint
productUrl: https://peppermintos.com
supportUrl: https://sourceforge.net/p/peppermintos/pepos/
releaseNotesUrl: https://peppermintos.com
images:
productLogo: "pep-logo.png"
productIcon: "pep-logo.png"
productWelcome: "welcome.png"
slideshow: "show.qml"
style:
sidebarBackground: "#C0C0C0"
sidebarText: "#000000"
sidebarTextSelect: "#ffffff"
sidebarTextHighlight: "#f62817"

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -0,0 +1,40 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2018-2019, Jonathan Carter <jcc@debian.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, or (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
Timer {
interval: 20000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
Image {
id: background5
source: "s5.png"
width: 2000; height: 2000
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
}
}

View File

@ -0,0 +1,163 @@
/*########Current Calamares Styles##########*/
/* These "Q's" are master styles for overall colours */
#mainApp {background-color: #C0C0C0;
font-family: Cantarell;
font-weight: bold;
color: #000000
}
/* Set the entire Font and Background color */
QWidget { color: #000000 ;
background-color: #C0C0C0;
font-family: Cantarell;
font: 14px; }
#globalStorageTab { background-color: #C0C0C0 }
/* Set Drop Down Font and Background color */
QComboBox { font: 14px ;
color: #000000 ;
background-color: #ffffff ;
padding: 2px ;
border-radius: 10px
}
#languageWidget { font: 14px ;
color: #111111 ;
background-color: #ffffff ;
text-align: center ;
border-radius: 6px
}
/* Set the inline Text box edit Font and Background color */
QLineEdit { font: 14px;
color: #111111;
background-color: #ffffff;
border-color: #000000
}
/* Set List box Font and Background color */
QListView { font: 14px;
color: #000000;
background-color: #ffffff;
alternate-background-color: #C0C0C0;
padding: 2px;
border-radius: 4px
}
#layoutSelector {}
/* Set the TreeView Font and Background color */
QTreeView { color: #000000;
background-color: #ffffff;
border-radius: 14px
}
/* Set buttons Font and Background color */
QPushButton { font: 14px;
color: #000000;
background-color: #C0C0C0;
border-color: #000000;
border-width: 10px;}
#view-button-back { font: 14px;
background-color: #C0C0C0
}
#view-button-back:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000
}
#view-button-next { font: 14px;
background-color: #C0C0C0;
border-color: #000000
}
#view-button-next:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000
}
#view-button-cancel { font: 14px;
background-color: #C0C0C0;
border-color: #000000
}
#view-button-cancel:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000;
}
#view-button-install { font: 14px;
color: #C0C0C0;
border-color: #000000
}
#view-button-done { font: 14px;
color: #000000;
border-color: #000000
}
/* Set the color in the keyboard selection */
#layoutSelector { selection-background-color: #F62817 }
#variantSelector { selection-background-color: #F62817 }
/* Set the CheckBox size and Background color */
QCheckBox { color: #000000;
background-color: #C0C0C0;
border-width: 2px;
border-color: #000000
}
m_encryptCheckBox { font: 14px;
color: #F62817;
background-color: #C0C0C0;
border-radius: 4px;
padding: 6px
}
checkBoxDoAutoLogin { font: 14px;
color: #000000;
background-color: #C0C0C0;
padding: 4px
}
restartCheckBox { font: 14px;
color: #000000;
background-color: #C0C0C0;
border-color: #000000;
border-radius: 8px;
height: 16px;
width: 100px;
padding: 4px
}
#QCheckBox#restartCheckBox::indicator:checked { image: url(/usr/share/pixmaps/ckm.png) }
/* Set the color when selected */
QRadioButton { color: #000000;
background-color: #C0C0C0;
padding: 4px;
border-radius: 4px
}
QComboBoxPrivateContainer { background-color: #ffffff }
QComboBoxListView { background-color: #ffffff }
qt_scrollarea_hcontainer { background-color: #ffffff }
qt_scrollarea_vcontainer { background-color: #ffffff }
QRadioButton::indicator { width: 18px ; height: 18px }
QRadioButton::indicator::checked { image: url(/usr/share/pixmaps/peppermint.png) }
QRadioButton::indicator::checked:hover { image: url(/usr/share/pixmaps/peppermint-fm-20.png) }
QRadioButton::indicator::unchecked:hover { image: url(/usr/share/pixmaps/peppermint-inst.png) }
/* Set the tip Font and Background color */
QToolTip { font: 14px;
color: #000000;
background-color: #ffffff;
padding: 4px;
border-radius: 4px
}
/* Set the Progress Bar alignment and load color */
QProgressBar { text-align: center }
QProgressBar::chunk { background-color: #F62817 }
#debugButton {font: }
#sidebarMenuApp{ background-color: #C0C0C0 }
#tabWidget { background-color: #C0C0C0 }

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,54 @@
# Bootloader configuration. The bootloader is installed to allow
# the system to start (and pick one of the installed operating
# systems to run).
---
# Define which bootloader you want to use for EFI installations
# Possible options are 'grub', 'sb-shim' and 'systemd-boot'.
efiBootLoader: "grub"
# systemd-boot configuration files settings, set kernel and initramfs file names
# and amount of time before default selection boots
kernel: "/vmlinuz-linux"
img: "/initramfs-linux.img"
fallback: "/initramfs-linux-fallback.img"
timeout: "10"
# Optionally set the menu entry name and kernel name to use in systemd-boot.
# If not specified here, these settings will be taken from branding.desc.
#
# bootloaderEntryName: "Generic GNU/Linux"
# kernelLine: ", with Stable-Kernel"
# fallbackKernelLine: ", with Stable-Kernel (fallback initramfs)"
# GRUB 2 binary names and boot directory
# Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names.
# These names are also used when using sb-shim, since that needs some
# GRUB functionality (notably grub-probe) to work. As needed, you may use
# complete paths like `/usr/bin/efibootmgr` for the executables.
#
grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg"
grubProbe: "grub-probe"
efiBootMgr: "efibootmgr"
# Optionally set the bootloader ID to use for EFI. This is passed to
# grub-install --bootloader-id.
#
# If not set here, the value from bootloaderEntryName from branding.desc
# is used, with problematic characters (space and slash) replaced.
#
# The ID is also used as a directory name within the EFI environment,
# and the bootloader is copied from /boot/efi/EFI/<dirname>/ . When
# setting the option here, keep in mind that the name is sanitized
# (problematic characters, see above, are replaced).
#
efiBootloaderId: "peppermint"
# Optionally install a copy of the GRUB EFI bootloader as the EFI
# fallback loader (either bootia32.efi or bootx64.efi depending on
# the system). This may be needed on certain systems (Intel DH87MC
# seems to be the only one). If you set this to false, take care
# to add another module to optionally install the fallback on those
# boards that need it.
installEFIFallback: true

View File

@ -0,0 +1,28 @@
# Configure one or more display managers (e.g. SDDM)
# with a "best effort" approach.
---
#The DM module attempts to set up all the DMs found in this list, in that precise order.
#It also sets up autologin, if the feature is enabled in globalstorage.
#The displaymanagers list can also be set in globalstorage, and in that case it overrides anything set up here.
displaymanagers:
- slim
- sddm
- lightdm
- gdm
- mdm
- lxdm
- kdm
#Enable the following settings to force a desktop environment in your displaymanager configuration file:
#defaultDesktopEnvironment:
# executable: "startkde"
# desktopFile: "plasma"
#If true, try to ensure that the user, group, /var directory etc. for the
#display manager are set up correctly. This is normally done by the distribution
#packages, and best left to them. Therefore, it is disabled by default.
basicSetup: false
#If true, setup autologin for openSUSE. This only makes sense on openSUSE
#derivatives or other systems where /etc/sysconfig/displaymanager exists.
sysconfigSetup: false

View File

@ -0,0 +1,4 @@
---
restartNowEnabled: true
restartNowChecked: true
restartNowCommand: "systemctl -i reboot"

View File

@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configure fstab options
#
---
mountOptions:
default: defaults,noatime,nodiscard
btrfs: defaults,noatime,noautodefrag,nodiscard
btrfs_swap: defaults
swap: defaults
crypttabOptions: luks,keyscript=/bin/cat
efiMountOptions: umask=0077
ssdExtraMountOptions:
btrfs: ssd
tmpOptions:
default:
tmpfs: false
options: ""
ssd:
tmpfs: true
options: "defaults,noatime,mode=1777"

View File

@ -0,0 +1,6 @@
localeGenPath: "/etc/locale.gen"
geoip:
style: "json"
url: "https://ipapi.co/json"
selector: "timezone"

View File

@ -0,0 +1,4 @@
# Writes an openswap configuration with LUKS settings to the given path
---
# Path of the configuration file to write (in the target system)
configFilePath: /etc/openswap.conf

View File

@ -0,0 +1,15 @@
---
# Whether to create /etc/machine-id for systemd.
systemd: true
# Whether to create /var/lib/dbus/machine-id for D-Bus.
dbus: true
# Whether /var/lib/dbus/machine-id should be a symlink to /etc/machine-id
# (ignored if dbus is false, or if there is no /etc/machine-id to point to).
symlink: true
# Whether to copy entropy from the host
entropy-copy: true
# Which files to write (paths in the target)
entropy-files:
- /var/lib/urandom/random-seed
- /var/lib/systemd/random-seed

View File

@ -0,0 +1,38 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Mount filesystems in the target (generally, before treating the
# target as a usable chroot / "live" system).
---
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: /dev
mountPoint: /dev
options: bind
- device: tmpfs
fs: tmpfs
mountPoint: /run
- device: /run/udev
mountPoint: /run/udev
options: bind
extraMountsEfi:
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars
btrfsSubvolumes:
- mountPoint: /
subvolume: /@
- mountPoint: /home
subvolume: /@home
- mountPoint: /var/cache
subvolume: /@cache
- mountPoint: /var/log
subvolume: /@log

View File

@ -0,0 +1,7 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration file for opendmcryptcfg module
#
---
configFilePath: /etc/conf.d/dmcrypt

View File

@ -0,0 +1,15 @@
backend: apt
operations:
- remove:
- 'live-boot'
- 'live-boot-doc'
- 'live-config'
- 'live-config-doc'
- 'live-config-systemd'
- 'live-config-systemd'
- 'live-tools'
- 'live-task-localisation'
- 'live-task-recommended'
- 'calamares-settings-debian'
- 'calamares'

View File

@ -0,0 +1,17 @@
efiSystemPartition: "/boot/efi"
efiSystemPartitionSize: 300M
efiSystemPartitionName: EFI
userSwapChoices:
- none # Create no swap, use no swap
- small # Up to 4GB
- suspend # At least main memory size
- file # To swap file instead of partition
swapPartitionName: SWAP
drawNestedPartitions: false
alwaysShowPartitionLabels: true
allowManualPartitioning: true
initialPartitioningChoice: erase
initialSwapChoice: none
defaultFileSystemType: "ext4"
availableFileSystemTypes: ["ext4","btrfs", "f2fs","xfs"]

View File

@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Systemd services manipulation.
#
# This module can enable services, timers and targets for systemd
# (if packaging doesn't already do that). It can also
# disable services and targets as well as mask units.
timers:
- name: "fstrim"
mandatory: false

View File

@ -0,0 +1,5 @@
---
unpack:
- source: "/run/live/medium/live/filesystem.squashfs"
sourcefs: "squashfs"
destination: ""

View File

@ -0,0 +1,18 @@
---
userGroup: users
defaultGroups:
- cdrom
- floppy
- sudo
- audio
- dip
- video
- plugdev
- netdev
- lpadmin
- scanner
- bluetooth
autologinGroup: autologin
sudoersGroup: sudo
setRootPassword: false

View File

@ -0,0 +1,17 @@
---
showSupportUrl: false
showKnownIssuesUrl: false
showReleaseNotesUrl: false
requirements:
requiredStorage: 10
requiredRam: 1.0
check:
- storage
- ram
- power
- root
required:
- storage
- ram
- root

View File

@ -0,0 +1,6 @@
---
type: "job"
name: "grub-defaults"
interface: "process"
command: "/usr/sbin/grub-defaults"
timeout: 600

View File

@ -0,0 +1,6 @@
---
type: "job"
name: "update-system"
interface: "process"
command: "/usr/sbin/update-system"
timeout: 600

View File

@ -0,0 +1,10 @@
# Launcher icons
[org.gnome.shell]
favorite-apps=['install-peppermint.desktop', 'Welcome.desktop', firefox-esr.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop']
# We don't want the screensaver to enable on the live media while installing
[org.gnome.desktop.lockdown]
disable-lock-screen=true
[org.gnome.desktop.session]
idle-delay=0

View File

@ -0,0 +1,35 @@
#!/bin/sh
# Creates an "Install Debian" icon on the live session tested with:
# Xfce, LXDE, LXqt, Gnome, KDE, Mate, Cinnamon
# We query xdg-user-dir because the Desktop directory has different
# names for different languages
DESKTOP=$(xdg-user-dir DESKTOP)
# Create ~/Desktop just in case this runs before the xdg folder
# creation script.
mkdir -p $DESKTOP
# Among the Debian desktop environments, LXDE is the only one
# that behaves completely different.
if [ -f /usr/bin/lxsession ]; then
echo "[Desktop Entry]" > $DESKTOP/calamares-install-peppermint.desktop
echo "Type=Link" >> $DESKTOP/calamares-install-peppermint.desktop
echo "Name=Install Debian" >> $DESKTOP/calamares-install-peppermint.desktop
echo "Icon=install-debian" >> $DESKTOP/calamares-install-peppermint.desktop
echo "URL=/usr/share/applications/calamares-install-peppermint.desktop" \
>> $DESKTOP/calamares-install-peppermint.desktop
else
cp /usr/share/applications/calamares-install-peppermint.desktop $DESKTOP
# Xfce needs this executable otherwise it complains, everything
# else doesn't seem to care either way.
chmod +x $DESKTOP/calamares-install-peppermint.desktop
fi
# Set desktop launcher as trusted under gnome/xfce (See: #1037299)
gio set --type=string ~/Desktop/calamares-install-peppermint.desktop \
metadata::trusted true
gio set --type=string ~/Desktop/calamares-install-peppermint.desktop \
metadata::xfce-exe-checksum \
"$(sha256sum ~/Desktop/calamares-install-peppermint.desktop | cut -f1 -d' ')"
touch ~/Desktop/calamares-install-peppermint.desktop

View File

@ -0,0 +1,48 @@
#!/bin/bash
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Install luks utilities if needed.
# Also, set secure permissions for the initramfs if we're configuring
# full-disk-encryption. The initramfs is re-generated later in the
# installation process so we only set the permissions snippet without
# regenerating the initramfs right now:
if [ "$(mount | grep $CHROOT" " | cut -c -16)" = "/dev/mapper/luks" ]; then
echo "UMASK=0077" > $CHROOT/etc/initramfs-tools/conf.d/initramfs-permissions
chroot $CHROOT apt-get -y install cryptsetup-initramfs cryptsetup keyutils
fi
chroot $CHROOT apt-get update
echo "Running bootloader-config..."
# Detect architecture and install the appropriate GRUB package
ARCH=$(uname -m)
case "$ARCH" in
x86_64)
if [ -d /sys/firmware/efi/efivars ]; then
echo " * Installing grub-efi (uefi)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-amd64
else
echo " * Installing grub-pc (bios)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-pc
fi
;;
i686)
echo " * Installing grub-efi-ia32 (uefi 32-bit)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-ia32
;;
aarch64)
echo " * Installing grub-efi-arm64 (uefi arm64)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-arm64
;;
*)
echo "Unsupported architecture: $ARCH"
exit 1
;;
esac
# Re-enable os-prober:
sed -i "s/#GRUB_DISABLE_OS_PROBER=false/# OS_PROBER re-enabled by Debian Calamares installation:\nGRUB_DISABLE_OS_PROBER=false/g" $CHROOT/etc/default/grub
chroot $CHROOT /usr/sbin/update-grub

View File

@ -0,0 +1,53 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-or-later
#
# SPDX-FileCopyrightText: 2023 PeppermintOS Team (peppermintosteam@proton.me)
# This script configures grub defaults after Debian installation.
# Define CHROOT
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Sets GRUB configuration.
# Writes the configuration to the /etc/default/grub file.
# Updates the bootloader.
# Check if CHROOT is set
if [ -z "$CHROOT" ]; then
echo "CHROOT not set. Exiting."
exit 1
fi
# Defines the variables
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Peppermint"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_GFXMODE=1360x768
GRUB_THEME="/boot/grub/themes/peppermint/theme.txt"
GRUB_DISABLE_OS_PROBER=false
# GRUB configuration file path
GRUB_CONFIG_FILE="$CHROOT/etc/default/grub"
# Modify the GRUB file
sed -i "s/^GRUB_DEFAULT=.*/GRUB_DEFAULT=$GRUB_DEFAULT/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=$GRUB_TIMEOUT/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_DISTRIBUTOR=.*/GRUB_DISTRIBUTOR=\"$GRUB_DISTRIBUTOR\"/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE_LINUX_DEFAULT\"/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE_LINUX\"/" $GRUB_CONFIG_FILE
sed -i "s/^#GRUB_GFXMODE=.*/GRUB_GFXMODE=$GRUB_GFXMODE/" $GRUB_CONFIG_FILE
# Add GRUB_THEME if it doesn't exist
if ! grep -q "^GRUB_THEME=" $GRUB_CONFIG_FILE; then
echo "GRUB_THEME=\"$GRUB_THEME\"" >> $GRUB_CONFIG_FILE
else
sed -i "s#^GRUB_THEME=.*#GRUB_THEME=\"$GRUB_THEME\"#" $GRUB_CONFIG_FILE
fi
sed -i "s/^#GRUB_DISABLE_OS_PROBER=.*/GRUB_DISABLE_OS_PROBER=$GRUB_DISABLE_OS_PROBER/" $GRUB_CONFIG_FILE
# Run update-grub after modifying the file
chroot $CHROOT update-grub

View File

@ -0,0 +1,26 @@
#!/bin/sh
###
# Wrapper for running calamares on Debian live media
###
# Stale file left behind by live-build that messes with partitioning
sudo mv /etc/fstab /etc/fstab.orig.calamares
# Allow Calamares to scale the window for hidpi displays
# This is fixed in the Calamares 3.3.0 series, so we can remove this
# once we switch to that
# Upstream commit that will make this obsolete:
# https://github.com/calamares/calamares/commit/e9f011b686a0982fb7828e8ac02a8e0784d3b11f
# Upstream bug:
# https://github.com/calamares/calamares/issues/1945
# Debian bug:
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992162
export QT_AUTO_SCREEN_SCALE_FACTOR=1
# Access control to run calamares as root for xwayland
xhost +si:localuser:root
pkexec calamares -d
xhost -si:localuser:root
# Restore stale fstab, for what it's worth
sudo mv /etc/fstab.orig.calamares /etc/fstab

View File

@ -0,0 +1,35 @@
#!/bin/bash
# Apply updates to the system
# Function to update the system
function update_system() {
# Define CHROOT
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Verifying CHROOT
if [ -z "$CHROOT" ]; then
echo "Error: CHROOT is not set."
exit 1
fi
echo "Updating the system..."
# Update the package list
chroot $CHROOT /usr/bin/apt update
# Update installed packages
chroot $CHROOT /usr/bin/apt upgrade -y
# Remove unnecessary packages
chroot $CHROOT /usr/bin/apt autoremove -y
# Clean the APT cache
chroot $CHROOT /usr/bin/apt clean
echo "System successfully updated!"
}
# Run the function to update the system
update_system

View File

@ -0,0 +1,110 @@
# Configuration file for Calamares
# Syntax is YAML 1.2
---
# "local" is LIBDIR/calamares/modules with settings in SHARE/calamares/modules
modules-search: [ local, /usr/lib/calamares/modules ]
# YAML: list of maps of string:string key-value pairs.
instances:
#- id: packages
# module: netinstall
# config: netinstall-packages.conf
#- id: system
# module: netinstall
# config: netinstall-system.conf
#- id: pkgs
# module: netinstall
# config: netinstall-pkgs.conf
sequence:
# Phase 1 - prepare.
# View modules are shown as UI pages, jobs from job modules
# are executed immediately in the background.
# Jobs should be executed sparingly (if at all) in this phase.
- show:
- welcome
- locale
- keyboard
- partition
# - netinstall@packages
- users
- summary
# Phase 2 - install.
# View modules are not shown. Only the view modules shown
# in the previous phase are allowed, their names should be
# added here as placeholders to specify the order in which
# view module jobs should be enqueued. Job modules are
# also allowed.
- exec:
- partition
- mount
- unpackfs
- sources-media
- machineid
- fstab
- locale
- keyboard
- localecfg
- users
- displaymanager
- networkcfg
- hwclock
- services-systemd
- bootloader-config
- grubcfg
- bootloader
- packages
- luksbootkeyfile
- luksopenswaphookcfg
- plymouthcfg
- initramfscfg
- initramfs
- sources-media-unmount
- sources-final
- update-system
- grub-defaults
- shellprocess
- umount
# Phase 3 - postinstall.
# View modules are shown as UI pages, jobs from job modules are
# executed immediately in the background.
# Jobs should be executed sparingly (if at all) in this phase.
- show:
- finished
# A branding component is a directory, either in
# SHARE/calamares/branding or in /etc/calamares/branding
# (the latter takes precedence). The directory must contain a
# YAML file branding.desc which may reference additional resources
# (such as images) as paths relative to the current directory.
# Only the name of the branding component (directory) should be
# specified here, Calamares then takes care of finding it and
# loading the contents.
branding: peppermint
# If this is set to true, Calamares will show an "Are you sure?" prompt right
# before each execution phase, i.e. at points of no return. If this is set to
# false, no prompt is shown. Default is false.
#
# YAML: boolean.
prompt-install: false
# If this is set to true, Calamares will execute all target environment
# commands in the current environment, without chroot. This setting should
# only be used when setting up Calamares as a post-install configuration tool,
# as opposed to a full operating system installer.
#
# Some official Calamares modules are not expected to function with this
# setting. (e.g. partitioning seems like a bad idea, since that is expected to
# have been done already)
#
# Default is false (for a normal installer).
#
# YAML: boolean.
dont-chroot: false

View File

@ -0,0 +1,34 @@
#!/bin/sh
#
# Writes the final sources.list file
#
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
RELEASE="bookworm"
cat << EOF > $CHROOT/etc/apt/sources.list
# This system was installed using PeppermintOS removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were removed at the end of the installation process.
# For information about how to configure apt package sources,
# See https://wiki.debian.org/SourcesList for more information.
# Main Repo - main contrib non-free
deb http://deb.debian.org/debian $RELEASE main main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian $RELEASE main contrib non-free non-free-firmware
# Updates Repo - main contrib non-free
deb http://deb.debian.org/debian $RELEASE-updates main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian $RELEASE-updates main contrib non-free non-free-firmware
# Security Repo - main contrib non-free
deb http://security.debian.org/debian-security/ $RELEASE-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security/ $RELEASE-security main contrib non-free non-free-firmware
# Backports allow you to install newer versions of software made available for this release
deb http://deb.debian.org/debian $RELEASE-backports main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian $RELEASE-backports main contrib non-free non-free-firmware
EOF
exit 0

View File

@ -0,0 +1,25 @@
#!/bin/sh
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
MEDIUM_PATH="/run/live/medium"
RELEASE="bookworm"
if [ "$1" = "-u" ]; then
umount $CHROOT/$MEDIUM_PATH
rm $CHROOT/etc/apt/sources.list.d/debian-live-media.list
chroot $CHROOT apt-get update
exit 0
fi
# Remove the base sources, we will configure sources in a later phase
rm -f $CHROOT/etc/apt/sources.list.d/base.list
mkdir -p $CHROOT/$MEDIUM_PATH
mount --bind $MEDIUM_PATH $CHROOT/$MEDIUM_PATH
echo "deb [trusted=yes] file:$MEDIUM_PATH $RELEASE main" > $CHROOT/etc/apt/sources.list.d/debian-live-media.list
chroot $CHROOT apt-get update
# Attempt safest way to remove cruft
rmdir $CHROOT/run/live/medium
rmdir $CHROOT/run/live
exit 0

View File

@ -0,0 +1 @@
../deb/applications

View File

@ -0,0 +1 @@
../deb/branding

View File

@ -0,0 +1 @@
../deb/conf

View File

@ -0,0 +1 @@
../deb/modules

View File

@ -0,0 +1 @@
../deb/schemas

View File

@ -0,0 +1 @@
../deb/scripts

View File

@ -0,0 +1 @@
../deb/settings

View File

@ -0,0 +1 @@
../deb/sources

View File

@ -0,0 +1,21 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=Install Peppermint
Name[bg]=Инсталиране на Peppermint
Name[es]=Instale Peppermint
Name[fr]= Installer Peppermint
Name[hu]=Telepítse a Peppermint
Name[it]=Installare Peppermint
Name[ja]= Peppermint
Name[pt]=Instalar Peppermint
Name[pt_BR]=Instalar Peppermint
Name[ru]=Установить Peppermint
Exec=install-peppermint
Icon=install-debian.png
Terminal=false
Categories=Settings
Comment=Calamares Installer for Peppermint Live
Keywords=calamares;system;install;peppermint;installer
StartupNotify=True
StartupWMClass=calamares

View File

@ -0,0 +1,34 @@
---
componentName: peppermint
welcomeStyleCalamares: false
welcomeExpandingLogo: true
windowExpanding: normal
windowSize: 700,450
windowPlacement: center
strings:
productName: Peppermint
shortProductName: Peppermint
version: 00
shortVersion: 00
versionedName: Peppermint
shortVersionedName: Peppermint
bootloaderEntryName: Peppermint
productUrl: https://peppermintos.com
supportUrl: https://sourceforge.net/p/peppermintos/pepos/
releaseNotesUrl: https://peppermintos.com
images:
productLogo: "pep-logo.png"
productIcon: "pep-logo.png"
productWelcome: "welcome.png"
slideshow: "show.qml"
style:
sidebarBackground: "#C0C0C0"
sidebarText: "#000000"
sidebarTextSelect: "#ffffff"
sidebarTextHighlight: "#f62817"

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -0,0 +1,40 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2018-2019, Jonathan Carter <jcc@debian.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, or (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
Timer {
interval: 20000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
Image {
id: background5
source: "s5.png"
width: 2000; height: 2000
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
}
}

View File

@ -0,0 +1,163 @@
/*########Current Calamares Styles##########*/
/* These "Q's" are master styles for overall colours */
#mainApp {background-color: #C0C0C0;
font-family: Cantarell;
font-weight: bold;
color: #000000
}
/* Set the entire Font and Background color */
QWidget { color: #000000 ;
background-color: #C0C0C0;
font-family: Cantarell;
font: 14px; }
#globalStorageTab { background-color: #C0C0C0 }
/* Set Drop Down Font and Background color */
QComboBox { font: 14px ;
color: #000000 ;
background-color: #ffffff ;
padding: 2px ;
border-radius: 10px
}
#languageWidget { font: 14px ;
color: #111111 ;
background-color: #ffffff ;
text-align: center ;
border-radius: 6px
}
/* Set the inline Text box edit Font and Background color */
QLineEdit { font: 14px;
color: #111111;
background-color: #ffffff;
border-color: #000000
}
/* Set List box Font and Background color */
QListView { font: 14px;
color: #000000;
background-color: #ffffff;
alternate-background-color: #C0C0C0;
padding: 2px;
border-radius: 4px
}
#layoutSelector {}
/* Set the TreeView Font and Background color */
QTreeView { color: #000000;
background-color: #ffffff;
border-radius: 14px
}
/* Set buttons Font and Background color */
QPushButton { font: 14px;
color: #000000;
background-color: #C0C0C0;
border-color: #000000;
border-width: 10px;}
#view-button-back { font: 14px;
background-color: #C0C0C0
}
#view-button-back:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000
}
#view-button-next { font: 14px;
background-color: #C0C0C0;
border-color: #000000
}
#view-button-next:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000
}
#view-button-cancel { font: 14px;
background-color: #C0C0C0;
border-color: #000000
}
#view-button-cancel:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000;
}
#view-button-install { font: 14px;
color: #C0C0C0;
border-color: #000000
}
#view-button-done { font: 14px;
color: #000000;
border-color: #000000
}
/* Set the color in the keyboard selection */
#layoutSelector { selection-background-color: #F62817 }
#variantSelector { selection-background-color: #F62817 }
/* Set the CheckBox size and Background color */
QCheckBox { color: #000000;
background-color: #C0C0C0;
border-width: 2px;
border-color: #000000
}
m_encryptCheckBox { font: 14px;
color: #F62817;
background-color: #C0C0C0;
border-radius: 4px;
padding: 6px
}
checkBoxDoAutoLogin { font: 14px;
color: #000000;
background-color: #C0C0C0;
padding: 4px
}
restartCheckBox { font: 14px;
color: #000000;
background-color: #C0C0C0;
border-color: #000000;
border-radius: 8px;
height: 16px;
width: 100px;
padding: 4px
}
#QCheckBox#restartCheckBox::indicator:checked { image: url(/usr/share/pixmaps/ckm.png) }
/* Set the color when selected */
QRadioButton { color: #000000;
background-color: #C0C0C0;
padding: 4px;
border-radius: 4px
}
QComboBoxPrivateContainer { background-color: #ffffff }
QComboBoxListView { background-color: #ffffff }
qt_scrollarea_hcontainer { background-color: #ffffff }
qt_scrollarea_vcontainer { background-color: #ffffff }
QRadioButton::indicator { width: 18px ; height: 18px }
QRadioButton::indicator::checked { image: url(/usr/share/pixmaps/peppermint.png) }
QRadioButton::indicator::checked:hover { image: url(/usr/share/pixmaps/peppermint-fm-20.png) }
QRadioButton::indicator::unchecked:hover { image: url(/usr/share/pixmaps/peppermint-inst.png) }
/* Set the tip Font and Background color */
QToolTip { font: 14px;
color: #000000;
background-color: #ffffff;
padding: 4px;
border-radius: 4px
}
/* Set the Progress Bar alignment and load color */
QProgressBar { text-align: center }
QProgressBar::chunk { background-color: #F62817 }
#debugButton {font: }
#sidebarMenuApp{ background-color: #C0C0C0 }
#tabWidget { background-color: #C0C0C0 }

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,54 @@
# Bootloader configuration. The bootloader is installed to allow
# the system to start (and pick one of the installed operating
# systems to run).
---
# Define which bootloader you want to use for EFI installations
# Possible options are 'grub', 'sb-shim' and 'systemd-boot'.
efiBootLoader: "grub"
# systemd-boot configuration files settings, set kernel and initramfs file names
# and amount of time before default selection boots
kernel: "/vmlinuz-linux"
img: "/initramfs-linux.img"
fallback: "/initramfs-linux-fallback.img"
timeout: "10"
# Optionally set the menu entry name and kernel name to use in systemd-boot.
# If not specified here, these settings will be taken from branding.desc.
#
# bootloaderEntryName: "Generic GNU/Linux"
# kernelLine: ", with Stable-Kernel"
# fallbackKernelLine: ", with Stable-Kernel (fallback initramfs)"
# GRUB 2 binary names and boot directory
# Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names.
# These names are also used when using sb-shim, since that needs some
# GRUB functionality (notably grub-probe) to work. As needed, you may use
# complete paths like `/usr/bin/efibootmgr` for the executables.
#
grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg"
grubProbe: "grub-probe"
efiBootMgr: "efibootmgr"
# Optionally set the bootloader ID to use for EFI. This is passed to
# grub-install --bootloader-id.
#
# If not set here, the value from bootloaderEntryName from branding.desc
# is used, with problematic characters (space and slash) replaced.
#
# The ID is also used as a directory name within the EFI environment,
# and the bootloader is copied from /boot/efi/EFI/<dirname>/ . When
# setting the option here, keep in mind that the name is sanitized
# (problematic characters, see above, are replaced).
#
efiBootloaderId: "peppermint"
# Optionally install a copy of the GRUB EFI bootloader as the EFI
# fallback loader (either bootia32.efi or bootx64.efi depending on
# the system). This may be needed on certain systems (Intel DH87MC
# seems to be the only one). If you set this to false, take care
# to add another module to optionally install the fallback on those
# boards that need it.
installEFIFallback: true

View File

@ -0,0 +1,28 @@
# Configure one or more display managers (e.g. SDDM)
# with a "best effort" approach.
---
#The DM module attempts to set up all the DMs found in this list, in that precise order.
#It also sets up autologin, if the feature is enabled in globalstorage.
#The displaymanagers list can also be set in globalstorage, and in that case it overrides anything set up here.
displaymanagers:
- slim
- sddm
- lightdm
- gdm
- mdm
- lxdm
- kdm
#Enable the following settings to force a desktop environment in your displaymanager configuration file:
#defaultDesktopEnvironment:
# executable: "startkde"
# desktopFile: "plasma"
#If true, try to ensure that the user, group, /var directory etc. for the
#display manager are set up correctly. This is normally done by the distribution
#packages, and best left to them. Therefore, it is disabled by default.
basicSetup: false
#If true, setup autologin for openSUSE. This only makes sense on openSUSE
#derivatives or other systems where /etc/sysconfig/displaymanager exists.
sysconfigSetup: false

View File

@ -0,0 +1,4 @@
---
restartNowEnabled: true
restartNowChecked: true
restartNowCommand: "reboot"

View File

@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configure fstab options
#
---
mountOptions:
default: defaults,noatime,nodiscard
btrfs: defaults,noatime,noautodefrag,nodiscard
btrfs_swap: defaults
swap: defaults
crypttabOptions: luks,keyscript=/bin/cat
efiMountOptions: umask=0077
ssdExtraMountOptions:
btrfs: ssd
tmpOptions:
default:
tmpfs: false
options: ""
ssd:
tmpfs: true
options: "defaults,noatime,mode=1777"

View File

@ -0,0 +1,6 @@
localeGenPath: "/etc/locale.gen"
geoip:
style: "json"
url: "https://ipapi.co/json"
selector: "timezone"

View File

@ -0,0 +1,4 @@
# Writes an openswap configuration with LUKS settings to the given path
---
# Path of the configuration file to write (in the target system)
configFilePath: /etc/openswap.conf

View File

@ -0,0 +1,15 @@
---
# Whether to create /etc/machine-id for systemd.
systemd: false
# Whether to create /var/lib/dbus/machine-id for D-Bus.
dbus: true
# Whether /var/lib/dbus/machine-id should be a symlink to /etc/machine-id
# (ignored if dbus is false, or if there is no /etc/machine-id to point to).
symlink: true
# Whether to copy entropy from the host
entropy-copy: true
# Which files to write (paths in the target)
entropy-files:
- /var/lib/urandom/random-seed
- /var/lib/systemd/random-seed

View File

@ -0,0 +1,38 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Mount filesystems in the target (generally, before treating the
# target as a usable chroot / "live" system).
---
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: /dev
mountPoint: /dev
options: bind
- device: tmpfs
fs: tmpfs
mountPoint: /run
- device: /run/udev
mountPoint: /run/udev
options: bind
extraMountsEfi:
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars
btrfsSubvolumes:
- mountPoint: /
subvolume: /@
- mountPoint: /home
subvolume: /@home
- mountPoint: /var/cache
subvolume: /@cache
- mountPoint: /var/log
subvolume: /@log

View File

@ -0,0 +1,56 @@
---
# This is the URL that is retrieved to get the netinstall groups-and-packages
# data (which should be in the format described in netinstall.yaml), e.g.:
# groupsUrl: http://example.org/netinstall.php
# or it can be a locally installed file:
# groupsUrl: file:///usr/share/calamares/netinstall.yaml
#
# Note that the contents of the groups file is the **important**
# part of the configuration of this module. It specifies what
# the user may select and what commands are to be run.
#
# The format of the groups file is documented in `README.md`.
#
# As a special case, setting *groupsUrl* to the literal string
# `local` means that the data is obtained from **this** config
# file, under the key *groups*.
#
groupsUrl: file:///etc/calamares/modules/netinstall-packages.yaml
# If the installation can proceed without netinstall (e.g. the Live CD
# can create a working installed system, but netinstall is preferred
# to bring it up-to-date or extend functionality) leave this set to
# false (the default). If set to true, the netinstall data is required.
#
# This only has an effect if the netinstall data cannot be retrieved,
# or is corrupt: having "required" set, means the install cannot proceed.
required: false
# To support multiple instances of this module,
# some strings are configurable and translatable here.
# - *sidebar* This is the name of the module in the progress-tree / sidebar
# in Calamares.
# - *title* This is displayed above the list of packages.
# If no *sidebar* values are provided, defaults to "Package selection"
# and existing translations. If no *title* values are provided, no string
# is displayed.
#
# The following strings are already known to Calamares and can be
# listed here in *untranslated* form (e.g. as value of *sidebar*)
# without bothering with the translations: they are picked up from
# the regular translation framework:
# - "Package selection"
# - "Office software"
# - "Office package"
# - "Browser software"
# - "Browser package"
# - "Web browser"
label:
sidebar: "Packages"
sidebar[nl]: "Package selection"
sidebar[pt]: "Seleção de pacotes"
sidebar[ja]: "パッケージの選択"
title: "Packages"
title[nl]: "Package selection"
title[pt]: "Seleção de pacotes"
title[ja]: "パッケージの選択"

View File

@ -0,0 +1,20 @@
# Auto generated descriptions from netinstall-packages
- name: " Select your init systems "
description: "Choose an init system"
critical: false
selected: false
hidden: false
expanded: true
subgroups:
- name: " sysvinit-core"
description: " System-V-like init"
packages:
- sysvinit-core
- name: " runit-init"
description: " system-wide service supervision (as init system)"
packages:
- runit-init
- name: " openrc"
description: " dependency based service manager (runlevel change mechanism)"
packages:
- openrc

View File

@ -0,0 +1,7 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration file for opendmcryptcfg module
#
---
configFilePath: /etc/conf.d/dmcrypt

View File

@ -0,0 +1,15 @@
backend: apt
operations:
- remove:
- 'live-boot'
- 'live-boot-doc'
- 'live-config'
- 'live-config-doc'
- 'live-config-systemd'
- 'live-config-systemd'
- 'live-tools'
- 'live-task-localisation'
- 'live-task-recommended'
- 'calamares-settings-debian'
- 'calamares'

View File

@ -0,0 +1,17 @@
efiSystemPartition: "/boot/efi"
efiSystemPartitionSize: 300M
efiSystemPartitionName: EFI
userSwapChoices:
- none # Create no swap, use no swap
- small # Up to 4GB
- suspend # At least main memory size
- file # To swap file instead of partition
swapPartitionName: SWAP
drawNestedPartitions: false
alwaysShowPartitionLabels: true
allowManualPartitioning: true
initialPartitioningChoice: erase
initialSwapChoice: none
defaultFileSystemType: "ext4"
availableFileSystemTypes: ["ext4","btrfs", "f2fs","xfs"]

View File

@ -0,0 +1,5 @@
---
unpack:
- source: "/run/live/medium/live/filesystem.squashfs"
sourcefs: "squashfs"
destination: ""

View File

@ -0,0 +1,18 @@
---
userGroup: users
defaultGroups:
- cdrom
- floppy
- sudo
- audio
- dip
- video
- plugdev
- netdev
- lpadmin
- scanner
- bluetooth
autologinGroup: autologin
sudoersGroup: sudo
setRootPassword: false

View File

@ -0,0 +1,17 @@
---
showSupportUrl: false
showKnownIssuesUrl: false
showReleaseNotesUrl: false
requirements:
requiredStorage: 10
requiredRam: 1.0
check:
- storage
- ram
- power
- root
required:
- storage
- ram
- root

View File

@ -0,0 +1,6 @@
---
type: "job"
name: "grub-defaults"
interface: "process"
command: "/usr/sbin/grub-defaults"
timeout: 600

View File

@ -0,0 +1,6 @@
---
type: "job"
name: "update-system"
interface: "process"
command: "/usr/sbin/update-system"
timeout: 600

View File

@ -0,0 +1,10 @@
# Launcher icons
[org.gnome.shell]
favorite-apps=['install-peppermint.desktop', 'Welcome.desktop', firefox-esr.desktop', 'libreoffice-writer.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop']
# We don't want the screensaver to enable on the live media while installing
[org.gnome.desktop.lockdown]
disable-lock-screen=true
[org.gnome.desktop.session]
idle-delay=0

View File

@ -0,0 +1,35 @@
#!/bin/sh
# Creates an "Install Debian" icon on the live session tested with:
# Xfce, LXDE, LXqt, Gnome, KDE, Mate, Cinnamon
# We query xdg-user-dir because the Desktop directory has different
# names for different languages
DESKTOP=$(xdg-user-dir DESKTOP)
# Create ~/Desktop just in case this runs before the xdg folder
# creation script.
mkdir -p $DESKTOP
# Among the Debian desktop environments, LXDE is the only one
# that behaves completely different.
if [ -f /usr/bin/lxsession ]; then
echo "[Desktop Entry]" > $DESKTOP/calamares-install-peppermint.desktop
echo "Type=Link" >> $DESKTOP/calamares-install-peppermint.desktop
echo "Name=Install Debian" >> $DESKTOP/calamares-install-peppermint.desktop
echo "Icon=install-debian" >> $DESKTOP/calamares-install-peppermint.desktop
echo "URL=/usr/share/applications/calamares-install-peppermint.desktop" \
>> $DESKTOP/calamares-install-peppermint.desktop
else
cp /usr/share/applications/calamares-install-peppermint.desktop $DESKTOP
# Xfce needs this executable otherwise it complains, everything
# else doesn't seem to care either way.
chmod +x $DESKTOP/calamares-install-peppermint.desktop
fi
# Set desktop launcher as trusted under gnome/xfce (See: #1037299)
gio set --type=string ~/Desktop/calamares-install-peppermint.desktop \
metadata::trusted true
gio set --type=string ~/Desktop/calamares-install-peppermint.desktop \
metadata::xfce-exe-checksum \
"$(sha256sum ~/Desktop/calamares-install-peppermint.desktop | cut -f1 -d' ')"
touch ~/Desktop/calamares-install-peppermint.desktop

View File

@ -0,0 +1,48 @@
#!/bin/bash
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Install luks utilities if needed.
# Also, set secure permissions for the initramfs if we're configuring
# full-disk-encryption. The initramfs is re-generated later in the
# installation process so we only set the permissions snippet without
# regenerating the initramfs right now:
if [ "$(mount | grep $CHROOT" " | cut -c -16)" = "/dev/mapper/luks" ]; then
echo "UMASK=0077" > $CHROOT/etc/initramfs-tools/conf.d/initramfs-permissions
chroot $CHROOT apt-get -y install cryptsetup-initramfs cryptsetup keyutils
fi
chroot $CHROOT apt-get update
echo "Running bootloader-config..."
# Detect architecture and install the appropriate GRUB package
ARCH=$(uname -m)
case "$ARCH" in
x86_64)
if [ -d /sys/firmware/efi/efivars ]; then
echo " * Installing grub-efi (uefi)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-amd64
else
echo " * Installing grub-pc (bios)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-pc
fi
;;
i686)
echo " * Installing grub-efi-ia32 (uefi 32-bit)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-ia32
;;
aarch64)
echo " * Installing grub-efi-arm64 (uefi arm64)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-arm64
;;
*)
echo "Unsupported architecture: $ARCH"
exit 1
;;
esac
# Re-enable os-prober:
sed -i "s/#GRUB_DISABLE_OS_PROBER=false/# OS_PROBER re-enabled by Debian Calamares installation:\nGRUB_DISABLE_OS_PROBER=false/g" $CHROOT/etc/default/grub
chroot $CHROOT /usr/sbin/update-grub

View File

@ -0,0 +1,53 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-or-later
#
# SPDX-FileCopyrightText: 2023 PeppermintOS Team (peppermintosteam@proton.me)
# This script configures grub defaults after Debian installation.
# Define CHROOT
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Sets GRUB configuration.
# Writes the configuration to the /etc/default/grub file.
# Updates the bootloader.
# Check if CHROOT is set
if [ -z "$CHROOT" ]; then
echo "CHROOT not set. Exiting."
exit 1
fi
# Defines the variables
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Peppermint"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_GFXMODE=1360x768
GRUB_THEME="/boot/grub/themes/peppermint/theme.txt"
GRUB_DISABLE_OS_PROBER=false
# GRUB configuration file path
GRUB_CONFIG_FILE="$CHROOT/etc/default/grub"
# Modify the GRUB file
sed -i "s/^GRUB_DEFAULT=.*/GRUB_DEFAULT=$GRUB_DEFAULT/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=$GRUB_TIMEOUT/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_DISTRIBUTOR=.*/GRUB_DISTRIBUTOR=\"$GRUB_DISTRIBUTOR\"/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE_LINUX_DEFAULT\"/" $GRUB_CONFIG_FILE
sed -i "s/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE_LINUX\"/" $GRUB_CONFIG_FILE
sed -i "s/^#GRUB_GFXMODE=.*/GRUB_GFXMODE=$GRUB_GFXMODE/" $GRUB_CONFIG_FILE
# Add GRUB_THEME if it doesn't exist
if ! grep -q "^GRUB_THEME=" $GRUB_CONFIG_FILE; then
echo "GRUB_THEME=\"$GRUB_THEME\"" >> $GRUB_CONFIG_FILE
else
sed -i "s#^GRUB_THEME=.*#GRUB_THEME=\"$GRUB_THEME\"#" $GRUB_CONFIG_FILE
fi
sed -i "s/^#GRUB_DISABLE_OS_PROBER=.*/GRUB_DISABLE_OS_PROBER=$GRUB_DISABLE_OS_PROBER/" $GRUB_CONFIG_FILE
# Run update-grub after modifying the file
chroot $CHROOT update-grub

View File

@ -0,0 +1,26 @@
#!/bin/sh
###
# Wrapper for running calamares on Debian live media
###
# Stale file left behind by live-build that messes with partitioning
sudo mv /etc/fstab /etc/fstab.orig.calamares
# Allow Calamares to scale the window for hidpi displays
# This is fixed in the Calamares 3.3.0 series, so we can remove this
# once we switch to that
# Upstream commit that will make this obsolete:
# https://github.com/calamares/calamares/commit/e9f011b686a0982fb7828e8ac02a8e0784d3b11f
# Upstream bug:
# https://github.com/calamares/calamares/issues/1945
# Debian bug:
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992162
export QT_AUTO_SCREEN_SCALE_FACTOR=1
# Access control to run calamares as root for xwayland
xhost +si:localuser:root
pkexec calamares -d
xhost -si:localuser:root
# Restore stale fstab, for what it's worth
sudo mv /etc/fstab.orig.calamares /etc/fstab

View File

@ -0,0 +1,35 @@
#!/bin/bash
# Apply updates to the system
# Function to update the system
function update_system() {
# Define CHROOT
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Verifying CHROOT
if [ -z "$CHROOT" ]; then
echo "Error: CHROOT is not set."
exit 1
fi
echo "Updating the system..."
# Update the package list
chroot $CHROOT /usr/bin/apt update
# Update installed packages
chroot $CHROOT /usr/bin/apt upgrade -y
# Remove unnecessary packages
chroot $CHROOT /usr/bin/apt autoremove -y
# Clean the APT cache
chroot $CHROOT /usr/bin/apt clean
echo "System successfully updated!"
}
# Run the function to update the system
update_system

View File

@ -0,0 +1,110 @@
# Configuration file for Calamares
# Syntax is YAML 1.2
---
# "local" is LIBDIR/calamares/modules with settings in SHARE/calamares/modules
modules-search: [ local, /usr/lib/calamares/modules ]
# YAML: list of maps of string:string key-value pairs.
instances:
- id: packages
module: netinstall
config: netinstall-packages.conf
#- id: system
# module: netinstall
# config: netinstall-system.conf
#- id: pkgs
# module: netinstall
# config: netinstall-pkgs.conf
sequence:
# Phase 1 - prepare.
# View modules are shown as UI pages, jobs from job modules
# are executed immediately in the background.
# Jobs should be executed sparingly (if at all) in this phase.
- show:
- welcome
- locale
- keyboard
- partition
- netinstall@packages
- users
- summary
# Phase 2 - install.
# View modules are not shown. Only the view modules shown
# in the previous phase are allowed, their names should be
# added here as placeholders to specify the order in which
# view module jobs should be enqueued. Job modules are
# also allowed.
- exec:
- partition
- mount
- unpackfs
- sources-media
- machineid
- fstab
- locale
- keyboard
- localecfg
- users
- displaymanager
- networkcfg
- hwclock
- services-systemd
- bootloader-config
- grubcfg
- bootloader
- packages
- luksbootkeyfile
- luksopenswaphookcfg
- plymouthcfg
- initramfscfg
- initramfs
- sources-media-unmount
- sources-final
- grub-defaults
- update-system
- shellprocess
- umount
# Phase 3 - postinstall.
# View modules are shown as UI pages, jobs from job modules are
# executed immediately in the background.
# Jobs should be executed sparingly (if at all) in this phase.
- show:
- finished
# A branding component is a directory, either in
# SHARE/calamares/branding or in /etc/calamares/branding
# (the latter takes precedence). The directory must contain a
# YAML file branding.desc which may reference additional resources
# (such as images) as paths relative to the current directory.
# Only the name of the branding component (directory) should be
# specified here, Calamares then takes care of finding it and
# loading the contents.
branding: peppermint
# If this is set to true, Calamares will show an "Are you sure?" prompt right
# before each execution phase, i.e. at points of no return. If this is set to
# false, no prompt is shown. Default is false.
#
# YAML: boolean.
prompt-install: false
# If this is set to true, Calamares will execute all target environment
# commands in the current environment, without chroot. This setting should
# only be used when setting up Calamares as a post-install configuration tool,
# as opposed to a full operating system installer.
#
# Some official Calamares modules are not expected to function with this
# setting. (e.g. partitioning seems like a bad idea, since that is expected to
# have been done already)
#
# Default is false (for a normal installer).
#
# YAML: boolean.
dont-chroot: false

View File

@ -0,0 +1,34 @@
#!/bin/sh
#
# Writes the final sources.list file
#
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
RELEASE="daedalus"
cat << EOF > $CHROOT/etc/apt/sources.list
# This system was installed using PeppermintOS removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were removed at the end of the installation process.
# For information about how to configure apt package sources,
# See https://wiki.debian.org/SourcesList for more information.
# Main Repo - main contrib non-free
deb http://deb.debian.org/debian $RELEASE main main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian $RELEASE main contrib non-free non-free-firmware
# Updates Repo - main contrib non-free
deb http://deb.debian.org/debian $RELEASE-updates main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian $RELEASE-updates main contrib non-free non-free-firmware
# Security Repo - main contrib non-free
deb http://security.debian.org/debian-security/ $RELEASE-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security/ $RELEASE-security main contrib non-free non-free-firmware
# Backports allow you to install newer versions of software made available for this release
deb http://deb.debian.org/debian $RELEASE-backports main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian $RELEASE-backports main contrib non-free non-free-firmware
EOF
exit 0

View File

@ -0,0 +1,25 @@
#!/bin/sh
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
MEDIUM_PATH="/run/live/medium"
RELEASE="daedalus"
if [ "$1" = "-u" ]; then
umount $CHROOT/$MEDIUM_PATH
rm $CHROOT/etc/apt/sources.list.d/debian-live-media.list
chroot $CHROOT apt-get update
exit 0
fi
# Remove the base sources, we will configure sources in a later phase
rm -f $CHROOT/etc/apt/sources.list.d/base.list
mkdir -p $CHROOT/$MEDIUM_PATH
mount --bind $MEDIUM_PATH $CHROOT/$MEDIUM_PATH
echo "deb [trusted=yes] file:$MEDIUM_PATH $RELEASE main" > $CHROOT/etc/apt/sources.list.d/debian-live-media.list
chroot $CHROOT apt-get update
# Attempt safest way to remove cruft
rmdir $CHROOT/run/live/medium
rmdir $CHROOT/run/live
exit 0

View File

@ -0,0 +1 @@
../dev/applications

View File

@ -0,0 +1 @@
../dev/branding

View File

@ -0,0 +1 @@
../dev/conf

View File

@ -0,0 +1 @@
../dev/modules

View File

@ -0,0 +1 @@
../dev/schemas

View File

@ -0,0 +1 @@
../dev/scripts

View File

@ -0,0 +1 @@
../dev/settings

View File

@ -0,0 +1 @@
../dev/sources

View File

@ -0,0 +1,16 @@
# Put this file inthis location
# /etc/calamares/oem.conf
oem:
# OEM mode
enabled: truerrrrrrrrrrrrrrrrrrrrraserffewfrfesda sd f sdf sdf dsaf sdafa dsf sda fsd af
# OEM user account
user:
name: oemuser
password: oempassword
groups: [sudo, audio, video, plugdev]
# OEM system settings
system:
hostname: oemhostname

View File

@ -0,0 +1,110 @@
# Configuration file for Calamares
# Syntax is YAML 1.2
---
# "local" is LIBDIR/calamares/modules with settings in SHARE/calamares/modules
modules-search: [ local, /usr/lib/calamares/modules ]
# YAML: list of maps of string:string key-value pairs.
instances:
#- id: packages
# module: netinstall
# config: netinstall-packages.conf
#- id: system
# module: netinstall
# config: netinstall-system.conf
#- id: pkgs
# module: netinstall
# config: netinstall-pkgs.conf
sequence:
# Phase 1 - prepare.
# View modules are shown as UI pages, jobs from job modules
# are executed immediately in the background.
# Jobs should be executed sparingly (if at all) in this phase.
- show:
- welcome
- locale
- keyboard
- partition
# - netinstall@packages
- users
- summary
# Phase 2 - install.
# View modules are not shown. Only the view modules shown
# in the previous phase are allowed, their names should be
# added here as placeholders to specify the order in which
# view module jobs should be enqueued. Job modules are
# also allowed.
- exec:
- partition
- mount
- unpackfs
- sources-media
- machineid
- fstab
- locale
- keyboard
- localecfg
- users
- displaymanager
- networkcfg
- hwclock
- services-systemd
- bootloader-config
- grubcfg
- bootloader
- packages
- luksbootkeyfile
- luksopenswaphookcfg
- plymouthcfg
- initramfscfg
- initramfs
- sources-media-unmount
- sources-final
- shellprocess
- umount
# Phase 3 - postinstall.
# View modules are shown as UI pages, jobs from job modules are
# executed immediately in the background.
# Jobs should be executed sparingly (if at all) in this phase.
- show:
- finished
# A branding component is a directory, either in
# SHARE/calamares/branding or in /etc/calamares/branding
# (the latter takes precedence). The directory must contain a
# YAML file branding.desc which may reference additional resources
# (such as images) as paths relative to the current directory.
# Only the name of the branding component (directory) should be
# specified here, Calamares then takes care of finding it and
# loading the contents.
branding: peppermint
# If this is set to true, Calamares will show an "Are you sure?" prompt right
# before each execution phase, i.e. at points of no return. If this is set to
# false, no prompt is shown. Default is false.
#
# YAML: boolean.
prompt-install: false
# If this is set to true, Calamares will execute all target environment
# commands in the current environment, without chroot. This setting should
# only be used when setting up Calamares as a post-install configuration tool,
# as opposed to a full operating system installer.
#
# Some official Calamares modules are not expected to function with this
# setting. (e.g. partitioning seems like a bad idea, since that is expected to
# have been done already)
#
# Default is false (for a normal installer).
#
# YAML: boolean.
dont-chroot: false
# include the OEM settings
include_configuration("/etc/calamares/oem.conf")

View File

@ -83,7 +83,7 @@ def hblock_setup():
os.system('chmod 755 /usr/local/bin/hblock')
os.system('hblock -S none -D none exit 0')
## this function may not be necessary because the bug is already fixed in live-build.
def manage_raspi_firmware():
"""
Manage when the raspi firmware, is removed.

View File

@ -71,7 +71,8 @@ class BuildBase:
""" Get the build infrastucture ready """
infra_methods = [infra.ChrootFolders, infra.BinaryFolders,
infra.ArchitectureFiles, infra.Archive,
infra.InstallerFiles, infra.FusatoConfigs
infra.InstallerFiles, infra.FusatoConfigs,
infra.ChrootInstallerFiles,
]
for method in infra_methods:
method(self.sbase, self.sarch)

View File

@ -14,6 +14,7 @@
# inflate_bubble sets the configs files
# infra copies the needed configs
shared_setup_cmds = ('inflate_bubble.set_fusato_structure',
'inflate_bubble.set_fusato_installer_structure',
'inflate_bubble.set_general_shared',
'inflate_bubble.set_grub_shared',
'inflate_bubble.set_binary_shared',
@ -273,8 +274,6 @@ LOADED_LIST = ('xfce4\n'
'gnome-chess\n'
'gnome-mahjongg\n'
'gnome-sudoku\n'
#'guvcview\n'
#'vlc \n'
'cheese\n'
'parole \n'
'qt5-style-plugins\n'
@ -286,8 +285,6 @@ LOADED_LIST = ('xfce4\n'
'baobab\n'
'xdg-user-dirs-gtk\n'
'squashfs-tools\n'
#'calamares\n' ## These are in the GENERAL_SHARED_LIST
#'calamares-settings-debian\n' ## in the GENERAL_SHARED_LIST
)
SERVER_LIST = ('zonefstoolspep\n'
@ -354,9 +351,9 @@ GENERAL_SHARED_LIST = ('alsa-utils\n'
'libgtk2.0-0\n'
'libgtk2.0-common\n'
'nala\n'
'neofetch\n'
'network-manager-gnome\n'
'ntp\n'
'plank\n'
'pulseaudio-module-bluetooth\n'
'python3-pip\n'
'python3-tk\n'

View File

@ -11,12 +11,12 @@ import os
from pathlib import Path
import conf
# Set the home path used regardless the user logged in
BSTRING_ISO_CONFIGS = '~/bubbles/iso_configs'
HOME_FOLDER = str(Path(BSTRING_ISO_CONFIGS).expanduser())
PACKAGE_LIST = "fusato/config/package-lists/"
CHROOT_FOLDER = "fusato/config/includes.chroot/"
CHROOT_INSTALLER = "fusato/config/includes.chroot/"
INCLUDES_INSTALLER = "fusato/config/includes.installer/"
BOOTSTRAP_FOLDER = 'fusato/config/includes.bootstrap/'
FUSATO_ROOT = 'fusato'
@ -50,7 +50,6 @@ def set_fusato_structure():
os.system(rm_cmd)
os.makedirs('config')
make_bootstrap = ['etc/apt']
make_packages = ['package-lists/']
make_chfldrs = make_chroot
@ -74,7 +73,6 @@ def set_fusato_server_structure():
os.system(rm_cmd)
os.makedirs('config')
make_bootstrap = ['etc/apt']
make_packages = ['package-lists/']
make_chfldrs = make_chroot
@ -89,13 +87,13 @@ def set_fusato_server_installer_structure():
""" Make some needed folders for the fusato build process.
at the moment you deal with the installer
"""
# Define os diretórios a serem criados no includes-installer
# Define the directories to be created in includes-installer
installer_dirs = ['/preseed',
'/usr/lib/finish-install.d/',
'/usr/share/'
]
# Cria os diretórios no includes-installer
# Create the directories in includes-installer
for installer_dir in installer_dirs:
full_path = os.path.join(HOME_FOLDER, INCLUDES_INSTALLER, installer_dir.strip('/'))
os.makedirs(full_path, exist_ok=True)
@ -105,7 +103,7 @@ def set_fusato_mini_installer_structure():
""" Make some needed folders for the fusato build process.
at the moment you deal with the installer
"""
# Define os diretórios a serem criados no includes-installer
# Define the directories to be created in includes-installer
installer_dirs = ['/preseed',
'/usr/lib/finish-install.d/',
'/usr/share/',
@ -137,12 +135,43 @@ def set_fusato_mini_installer_structure():
'/etc/'
]
# Cria os diretórios no includes-installer
# Create the directories in includes-installer
for installer_dir in installer_dirs:
full_path = os.path.join(HOME_FOLDER, INCLUDES_INSTALLER, installer_dir.strip('/'))
os.makedirs(full_path, exist_ok=True)
print(f"Created directory: {full_path}")
def set_fusato_installer_structure():
""" Make some needed folders for the fusato build process.
at the moment you deal with chroot and bootstrap
"""
make_chroot = ['/etc/calamares/',
'/etc/calamares/modules/',
'/etc/calamares/branding/',
'/usr/bin/',
'/usr/sbin/',
'/usr/lib/calamares/modules',
'/usr/share/glib-2.0/schemas',
]
# Change directory to the correct path
try:
os.chdir(os.path.join(HOME_FOLDER, FUSATO_ROOT))
except Exception as e:
print(f"Error changing directory: {e}")
return
for f_f in make_chroot:
full_path = os.path.join(HOME_FOLDER, CHROOT_FOLDER.strip('/'), f_f.strip('/'))
try:
os.makedirs(full_path, exist_ok=True)
print(f"Created directory: {full_path}")
except Exception as e:
print(f"Error creating directory {full_path}: {e}")
if __name__ == "__main__":
set_fusato_installer_structure()
# Commonly Shared
def make_build_file(base, arch, extension, build_description):
"""
@ -154,27 +183,22 @@ def make_build_file(base, arch, extension, build_description):
with open(file_path, 'w', encoding='UTF-8') as f_p:
f_p.write(build_description)
def make_bld_xfce(base, arch):
"""Write the xfce build file"""
make_build_file(base, arch, 'xfc', 'XFCE Build')
def make_bld_gnomeflashback(base, arch):
"""Write the gnome fb build file"""
make_build_file(base, arch, 'gfb', 'Gnome Flash Back Build')
def make_bld_openbox(base, arch):
"""Write the openbox build file"""
make_build_file(base, arch, 'opb', 'OpenBox Build')
def make_bld_loaded(base, arch):
"""Write the loaded build file"""
make_build_file(base, arch, 'loaded', 'Loaded Build')
def make_bld_server(base, arch):
"""Write the server build file"""
make_build_file(base, arch, 'server', 'Server Build')
@ -198,29 +222,24 @@ def set_general_shared():
""" Create the list for general shared list"""
make_package_list('genshared.list.chroot', conf.GENERAL_SHARED_LIST, mode='x')
def set_grub_shared():
""" Create the list for shared grub list"""
make_package_list('grub.list.chroot', conf.GRUB_LIST_SHARED, mode='x')
def set_binary_shared():
""" Create the shared list for grub binary"""
make_package_list('installer.list.binary', conf.BINARY_LIST_SHARED, mode='x')
# Light DM paklage list login window
# Light DM package list login window
def set_lightdm():
""" Create the list for the light dm list """
make_package_list('lightdm.list.chroot', conf.LIGHT_DM_LIST, mode='x')
# Desktop Environments
def set_xfce():
""" Create the list for the xfce xfce list"""
make_package_list('xfce.list.chroot', conf.XFCE_LIST, mode='x')
def set_gfb():
""" Create the list for the gnomeflashback list"""
make_package_list('gfb.list.chroot', conf.GNOME_FLASHBACK_LIST, mode='x')
@ -248,12 +267,10 @@ def set_chroot_grub_64():
""" Append the grub list for 64 bit grub"""
make_package_list('gfb.list.chroot', conf.GRUB_LIST_64)
def set_chroot_grub_arm():
""" Append the grub list for the ARM grub"""
make_package_list('gfb.list.chroot', conf.GRUB_LIST_ARM64)
def set_chroot_grub_32():
""" Append the grub list for the 32 bit grub"""
make_package_list('gfb.list.chroot', conf.GRUB_LIST_32)
@ -279,3 +296,4 @@ def set_firmware():
def set_firmware_arm():
""" Create the list for the firmware support for arm ISOs"""
make_package_list('firmware.list.chroot', conf.FIRMWARE_LIST_ARM, mode='x')

View File

@ -95,6 +95,98 @@ class ChrootFolders:
)
logger.info(MSG_FIN + HOME_FOLDER + WPCHROOT + des)
class ChrootInstallerFiles:
"""
Copies all installer folders to CHROOT depending on the base.
"""
ALLOWED_BASES = {"deb", "dev", "debld", "devld"}
def __init__(self, base, sarch=None):
self.base = base
self.sarch = sarch
if self.base not in self.ALLOWED_BASES:
logger.warning(f"Base '{self.base}' is not allowed. Skipping.")
return
logger.info(f"Copy Installer Files for base: {self.base}")
calamares_path = '/calamares_settings/'
self.src_paths = (
f'{calamares_path}{self.base}/settings/settings.conf',
f'{calamares_path}{self.base}/conf/modules/',
f'{calamares_path}{self.base}/sources/sources-final',
f'{calamares_path}{self.base}/sources/sources-media',
f'{calamares_path}{self.base}/scripts/bootloader-config',
f'{calamares_path}{self.base}/scripts/update-system',
f'{calamares_path}{self.base}/scripts/grub-defaults',
f'{calamares_path}{self.base}/scripts/add-calamares-desktop-icon',
f'{calamares_path}{self.base}/scripts/install-peppermint',
f'{calamares_path}{self.base}/modules/',
f'{calamares_path}{self.base}/branding/peppermint/',
f'{calamares_path}{self.base}/schemas/96_calamares-settings-debian.gschema.override/',
f'{calamares_path}{self.base}/applications/calamares-install-peppermint.desktop'
)
self.des_paths = (
'/etc/calamares/',
'/etc/calamares/',
'/usr/sbin/',
'/usr/sbin/',
'/usr/sbin/',
'/usr/sbin/',
'/usr/sbin/',
'/usr/bin/',
'/usr/bin/',
'/usr/lib/calamares/',
'/etc/calamares/branding/',
'/usr/share/glib-2.0/schemas/',
'/usr/share/applications/'
)
self.copy_files()
def copy_files(self):
# Ensure destination directories exist before copying
for des in self.des_paths:
full_des_path = os.path.join(HOME_FOLDER, WPCHROOT.strip('/'), des.strip('/'))
try:
os.makedirs(full_des_path, exist_ok=True)
logger.info(f"Ensured directory exists: {full_des_path}")
except Exception as e:
logger.error(f"Error creating directory {full_des_path}: {e}")
# Copy files and directories to their CHROOT locations
src_q = collections.deque(self.src_paths)
des_q = collections.deque(self.des_paths)
size_q = len(src_q)
for _ in range(size_q):
source = src_q.popleft()
des = des_q.popleft()
full_src_path = os.path.join(HOME_FOLDER, source.strip('/'))
full_des_path = os.path.join(HOME_FOLDER, WPCHROOT.strip('/'), des.strip('/'))
logger.info(MSG_COPY + full_src_path)
try:
if os.path.exists(full_src_path):
if os.path.isdir(full_src_path):
shutil.copytree(full_src_path, os.path.join(full_des_path, os.path.basename(full_src_path)), dirs_exist_ok=True)
else:
shutil.copy(full_src_path, full_des_path)
logger.info(MSG_FIN + full_des_path)
else:
logger.error(f"Source path does not exist: {full_src_path}")
except Exception as e:
logger.error(f"Error copying {full_src_path} to {full_des_path}: {e}")
@classmethod
def run_for_all_bases(cls):
# Define the bases to be used
bases = ["deb", "dev", "debld", "devld", "invalid_base"]
for base in bases:
cls(base)
# Execute the copy for all bases
if __name__ == "__main__":
ChrootInstallerFiles.run_for_all_bases()
class BinaryFolders:
"""
@ -232,7 +324,7 @@ def mini_shared_installer_files():
for src, des in zip(src_paths, des_paths):
src_path = HOME_FOLDER + src
des_path = HOME_FOLDER + WPINSTALLER + des
if os.path.isdir(src_path): # Verificar se o caminho de origem é um diretório
if os.path.isdir(src_path): # Check if the source path is a directory.
for root, dirs, files in os.walk(src_path):
for file in files:
source_file = os.path.join(root, file)
@ -251,7 +343,7 @@ class ArchitectureFiles:
Copy all the needed files to CHROOT Depending on the
architecture it will, copy files as needed
"""
#another solution is necessary for the calamares files as they are not necessary in the server builds, the mini builds are not affected because the chroot is deleted during the binary phase.
def __init__(self, sbase, sarch):
logger.info("Copy Architecture")