Compare commits

..

No commits in common. "ubuntu/plucky" and "ubuntu/1%25.04.22" have entirely different histories.

27 changed files with 73 additions and 320 deletions

View File

@ -0,0 +1,10 @@
---
dontChroot: true
timeout: 10
firmwareType:
efi:
- -cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)
- -mkdir -pv ${ROOT}/media/cdrom
- -mount --bind /cdrom ${ROOT}/media/cdrom
bios:
- -cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)

View File

@ -1,5 +0,0 @@
---
dontChroot: true
timeout: 60
script:
- command: "cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)"

View File

@ -21,9 +21,6 @@ extraMounts:
- device: /run/systemd/resolve
mountPoint: /run/systemd/resolve
options: [ bind ]
- device: /cdrom
mountPoint: /media/cdrom
options: [ bind ]
mountOptions:
- filesystem: default

View File

@ -100,8 +100,7 @@ void PackageSelectViewStep::onActivate()
bool hasInternet = network.hasInternet();
// Handle network unavailability
//if (!hasInternet) {
// Disable almost all fancy features to avoid bugs, revert in 25.10 cycle
if (!hasInternet) {
ui->full_button->setVisible(false);
ui->full_text->setVisible(false);
@ -115,7 +114,7 @@ void PackageSelectViewStep::onActivate()
ui->extraparty_scroll->setVisible(false);
ui->extraparty_text->setVisible(false);
ui->mandatory_warning_label->setVisible(false);
//}
}
// Dynamically create package checkboxes only once
if (m_packageCheckBoxes.isEmpty()) {
@ -325,23 +324,6 @@ void PackageSelectViewStep::onLeave()
presentSnapList.append(snapId);
}
// As a temporary measure until OEM is refactored in the 25.10 cycle,
// we need to ensure that Calamares and its necessary dependencies are
// installed on the target, iff this is a stacked squashfs.
// FIXME: remove in favor of more nuanced stacked squashfs
// functionality in 25.10
// Ref: https://discourse.ubuntu.com/t/implementation-of-ship-live-within-a-squashfs/57510
// LP: #2104343
if (isStackedSquashfs) {
QVector<QString> stage_two_packages = {"calamares", "kdialog"};
for (QString& package_name : stage_two_packages) {
QVariantMap package_details;
package_details.insert("id", package_name);
package_details.insert("snap", false);
selectedPackagesList.append(package_details);
}
}
globalData.insert("packages_to_install", selectedPackagesList);
if (!isStackedSquashfs) {
QVariantList installerPackages = m_configurationMap.value("packages").toMap().value("installer_remove_packages").toList();

View File

@ -9,6 +9,10 @@ packages:
name: "Thunderbird"
description: "Email, newsfeed, chat, and calendaring client."
snap: true
- id: "virt-manager"
name: "Virtual Machine Manager"
description: "Desktop user interface for managing virtual machines through libvirt."
snap: false
- id: "krita"
name: "Krita"
description: "Graphics editor designed primarily for digital art and 2D animation."

View File

@ -6,7 +6,6 @@
#include <QDir>
#include <QCoreApplication>
#include <QRegularExpression>
#include <QFile>
CALAMARES_PLUGIN_FACTORY_DEFINITION(PackageSelectProcessFactory, registerPlugin<PackageSelectProcess>();)
@ -37,7 +36,6 @@ Calamares::JobResult PackageSelectProcess::runAptCommand(const QString& command,
double endProgress,
bool verboseProgress)
{
qDebug() << "Running apt command:" << command;
QProcess aptProcess(this);
aptProcess.setProgram("/usr/sbin/chroot");
aptProcess.setArguments({ rootMountPoint, "/bin/bash", "-c", command });
@ -55,19 +53,14 @@ Calamares::JobResult PackageSelectProcess::runAptCommand(const QString& command,
commandHRPrefix = tr("Upgrading installed system: ");
} else if (command.contains("remove")) {
commandHRPrefix = tr("Cleaning up packages: ");
} else if (command.contains("cdrom")) {
commandHRPrefix = tr("cdrom: ");
}
QRegularExpression getRegex(R"(Get:\d+\s+[^ ]+\s+[^ ]+\s+(.+?)\s+\S+\s+(\S+)\s+\[(.*?)\])");
connect(&aptProcess, &QProcess::readyReadStandardOutput, this,
[this, &lineCount, progressPerLine, startProgress, endProgress, verboseProgress, commandHRPrefix, getRegex]() {
QProcess *aptProcess = (QProcess *)(QObject::sender());
if (aptProcess == NULL) return;
while (aptProcess->canReadLine()) {
QString line = QString::fromUtf8(aptProcess->readLine()).trimmed();
qDebug() << "Apt log line: " << line;
[this, &aptProcess, &lineCount, progressPerLine, startProgress, endProgress, verboseProgress, commandHRPrefix, getRegex]() mutable {
while (aptProcess.canReadLine()) {
QString line = QString::fromUtf8(aptProcess.readLine()).trimmed();
if (line.isEmpty()) {
continue;
}
@ -148,7 +141,7 @@ Calamares::JobResult PackageSelectProcess::runSnapCommand(const QStringList& sna
QString currentDescription;
connect(&snapProcess, &QProcess::readyReadStandardOutput, this,
connect(&snapProcess, &QProcess::readyReadStandardOutput, this,
[&snapProcess, this, &currentDescription, startProgress, endProgress]( ) {
while (snapProcess.canReadLine()) {
QString line = QString::fromUtf8(snapProcess.readLine()).trimmed();
@ -284,8 +277,7 @@ Calamares::JobResult PackageSelectProcess::exec()
const QVariantMap installationData = gs->value("installation_data").toMap();
const QString installationMode = installationData.value("installation_mode").toString();
const bool hasInternet = gs->value("hasInternet").toBool();
const bool downloadUpdates = (installationData.value("download_updates").toBool() && hasInternet);
const bool downloadUpdates = installationData.value("download_updates").toBool();
const QVariantList packagesToInstall = installationData.value("packages_to_install").toList();
const QVariantList packagesToRemove = installationData.value("packages_to_remove").toList();
const QVariantList presentSnaps = installationData.value("present_snaps").toList();
@ -296,10 +288,6 @@ Calamares::JobResult PackageSelectProcess::exec()
rootMountPoint = gs->value("rootMountPoint").toString();
}
const QString checkpackage_path = "/usr/libexec/checkpackage-backend";
const QString chroot_checkpackage_path = rootMountPoint + checkpackage_path;
QFile* cpbe = new QFile(chroot_checkpackage_path);
static const QMap<QString, QVector<ProgressAllocation>> allocationMap = {
{ "minimal", { {0.0, 1.0} } },
{ "normal", { {0.0, 0.4}, {0.4, 1.0} } },
@ -307,35 +295,12 @@ Calamares::JobResult PackageSelectProcess::exec()
};
const QVector<ProgressAllocation> allocations = allocationMap.value(installationMode, { {0.0, 1.0} });
// Run apt update
const double aptRange = allocations[0].end - allocations[0].start;
const double updateStart = allocations[0].start;
const double updateEnd = updateStart + 0.1 * aptRange;
// Temporarily copy ubuntu.sources elsewhere, if we do not have network
// This is so we can update the apt cache safely
// FIXME: there has to be a better, more native way to do this. It works
// for now, but in the 25.10 cycle, we're probably going to move some of
// these command-line apt calls to the libapt C library. LP: #2107287
if (!hasInternet) {
const QString ubuntu_sources_path = rootMountPoint + "/etc/apt/sources.list.d/ubuntu.sources";
QFile* ubuntu_sources = new QFile(ubuntu_sources_path);
// Just in case this module is used in a non-Ubuntu environment, make sure ubuntu.sources exists
// TODO: make this configurable in the 25.10 cycle
if (ubuntu_sources->exists()) {
const QString backup_name = ubuntu_sources_path + ".bak";
if (!ubuntu_sources->rename(ubuntu_sources_path + ".bak")) {
return Calamares::JobResult::error(tr("Internal Error"),
tr("Permission denied when moving ubuntu.sources to prepare for offline install"));
}
Calamares::JobResult addCdromResult = runAptCommand("apt-cdrom add -m -d=/media/cdrom/", rootMountPoint, updateStart, updateEnd, true);
if (!addCdromResult) return std::move(addCdromResult);
} else {
return Calamares::JobResult::error(tr("Internal Error"),
tr("/etc/apt/sources.list.d/ubuntu.sources not found in the target, are you a downstream?"));
}
}
// Run apt update
m_prettyStatus = tr("Updating apt cache");
emit prettyStatusMessageChanged(m_prettyStatus);
emit progress(updateStart);
@ -358,14 +323,12 @@ Calamares::JobResult PackageSelectProcess::exec()
}
// Add diversions for dracut, update-initramfs, and locale-gen
/*
dpkgDiversions = {
{"dracut", "/usr/bin/dracut"},
{"update-initramfs", "/usr/sbin/update-initramfs"},
{"locale-gen", "/usr/sbin/locale-gen"}
};
divert(true);
*/
double installStart;
double installEnd;
@ -396,46 +359,15 @@ Calamares::JobResult PackageSelectProcess::exec()
qDebug() << "Progress range: installStart:" << installStart << "installEnd:" << installEnd;
if (!debPackages.isEmpty()) {
// Corresponding to the temporary hack in pkgselect adding calamares
// and kdialog to the list, we only want those two included in the
// final installation if we're actually in OEM mode. Otherwise, they
// can be ignored, and are just clutter.
// FIXME: When the OEM stack is rewritten in 25.10, this needs to be
// removed.
if (!QFile::exists("/etc/calamares/OEM_MODE_ACTIVATED")) {
QStringList wip_list;
for (auto debPackage : debPackages) {
if (!debPackage.contains(QString("calamares")) &&
!debPackage.contains(QString("kdialog"))) {
wip_list << debPackage;
}
}
debPackages = wip_list;
}
// checkpackage-backend needs to be explicitly copied to the chroot
// and removed later for systems with stacked squashfses, or the
// install command will fail. LP: #2104243
if (!cpbe->exists()) {
QFile* parent_cpbe = new QFile(checkpackage_path);
if (!parent_cpbe->copy(chroot_checkpackage_path)) {
return Calamares::JobResult::error(tr("Internal Error"),
tr("Permission denied when copying checkpackage-backend, are you running Calamares correctly?"));
}
}
const QString packageList = debPackages.join(" ");
const QString installCommand = QString("DEBIAN_FRONTEND=noninteractive apt-get -y install $(/usr/libexec/checkpackage-backend %1);").arg(packageList);
Calamares::JobResult installResult = runAptCommand(installCommand,
rootMountPoint,
installStart,
installEnd,
true);
if (!installResult) {
if (!cpbe->remove()) qDebug() << "Warning: failed to clean up /usr/libexec/checkpackage-backend";
return std::move(installResult);
}
rootMountPoint,
installStart,
installEnd,
true);
if (!installResult) return std::move(installResult);
}
else qDebug() << "No packages to install.";
@ -444,31 +376,20 @@ Calamares::JobResult PackageSelectProcess::exec()
removeDebPackages << var.toString();
}
// As part of the fix for LP: #2104343, we need to ensure that, if
// we are currently in OEM mode, Calamares and friends remain
// installed. During stage two, we clean it up.
// FIXME: When the OEM stack is rewritten in 25.10, this needs to be
// rewritten.
if (QFile::exists("/etc/calamares/OEM_MODE_ACTIVATED")) {
QStringList wip_list;
for (auto removeDebPackage : removeDebPackages) {
if (!removeDebPackage.contains(QString("calamares"))) wip_list << removeDebPackage;
}
removeDebPackages = wip_list;
}
const double removeStart = installEnd;
const double removeEnd = removeStart + 0.2 * aptRange;
if (!removeDebPackages.isEmpty()) {
const QString removeCommand = QString("DEBIAN_FRONTEND=noninteractive apt-get -y --purge remove $(/usr/libexec/checkpackage-backend %1);")
const QString removeCommand = QString("DEBIAN_FRONTEND=noninteractive apt-get -y --purge remove %1")
.arg(removeDebPackages.join(" "));
Calamares::JobResult removeResult = runAptCommand(removeCommand,
rootMountPoint,
removeStart,
removeEnd,
true);
if (!removeResult) return std::move(removeResult);
if (!removeResult) { // Using operator bool() to check for errors
return std::move(removeResult); // Move to avoid copy
}
}
const double autoremoveStart = removeEnd;
@ -481,45 +402,7 @@ Calamares::JobResult PackageSelectProcess::exec()
true);
// Disable diversions
//divert(false);
// Move ubuntu.sources back, and clean up the cdrom file
// FIXME: there has to be a better, more native way to do this. It works
// for now, but in the 25.10 cycle, we're probably going to move some of
// these command-line apt calls to the libapt C library. LP: #2107287
try {
if (!hasInternet) {
const QString ubuntu_sources_path = rootMountPoint + "/etc/apt/sources.list.d/ubuntu.sources";
const QString backup_name = ubuntu_sources_path + ".bak";
QFile* ubuntu_sources = new QFile(ubuntu_sources_path);
QFile* ubuntu_sources_bak = new QFile(backup_name);
// Just in case this module is used in a non-Ubuntu environment, make sure ubuntu.sources exists
// TODO: make this configurable in the 25.10 cycle
if (ubuntu_sources->exists()) {
if (!ubuntu_sources->remove()) {
return Calamares::JobResult::error(tr("Internal Error"),
tr("/etc/apt/sources.list.d/ubuntu.sources already exists and it won't budge - this is a rare edge case, please report!"));
}
}
if (!ubuntu_sources_bak->rename(ubuntu_sources_path)) {
return Calamares::JobResult::error(tr("Internal Error"),
tr("Permission denied when moving ubuntu.sources back after offline install"));
}
// Remove the apt-cdrom entry we added earlier
// This may seem drastic, but we already expect that the automirror
// module, ran before this, creates a deb822-style ubuntu.sources
QFile* cdrom_sources_list = new QFile(rootMountPoint + "/etc/apt/sources.list");
if (!cdrom_sources_list->remove()) {
return Calamares::JobResult::error(tr("Internal Error"),
tr("Failed to remove classic sources.list file"));
}
}
} catch (const std::exception &exc) {
qDebug() << exc.what();
} catch (...) {
qDebug() << "Caught unknown error";
}
divert(false);
// Handle snap packages
if (installationMode != "minimal") {
@ -567,7 +450,5 @@ Calamares::JobResult PackageSelectProcess::exec()
m_prettyStatus = tr("All selected packages installed successfully.");
emit prettyStatusMessageChanged(m_prettyStatus);
if (!cpbe->remove()) qDebug() << "Warning: failed to clean up /usr/libexec/checkpackage-backend";
return Calamares::JobResult::ok();
}

View File

@ -1,6 +1,5 @@
#include <iostream>
#include <string>
#include <unordered_set>
#include <apt-pkg/algorithms.h>
#include <apt-pkg/cacheiterators.h>
#include <apt-pkg/init.h>
@ -29,23 +28,9 @@ int main(int argc, char* argv[]) {
std::vector<std::string> package_names(argv + 1, argv + argc);
if (package_names.empty()) return 0;
std::unordered_set<std::string> seen_packages;
for (std::string package_name : package_names) {
if (seen_packages.contains(package_name)) continue;
seen_packages.insert(package_name);
// Tasks and wildcards should just be passed through as-is, for now
if (package_name.starts_with('^') || package_name.contains('*')) {
std::cout << package_name << " ";
continue;
}
pkgCache::GrpIterator grp = cache->GetPkgCache()->FindGrp(package_name);
if (!grp.end()) {
pkgCache::PkgIterator it = grp.FindPreferredPkg(true);
if (!it.end() && !it.VersionList().end()) {
std::cout << package_name << " ";
}
}
pkgCache::PkgIterator it = cache->GetPkgCache()->FindPkg(package_name);
if (!it.end()) std::cout << package_name << " ";
}
std::cout << "\n";

107
debian/changelog vendored
View File

@ -1,104 +1,7 @@
calamares-settings-ubuntu (1:25.04.27) plucky; urgency=medium
* Disable virt-manager installation in third-party software options, as the
package is broken when installed by pkgselect.
* Remove full installation and third-party software options from all
flavors.
* Fix segfaults during installation. (LP: #2107486)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 16 Apr 2025 18:23:56 -0500
calamares-settings-ubuntu (1:25.04.26) plucky; urgency=medium
* [bootloader] Instead of utilizing a contextualprocess to only bind-mount
/cdrom to /media/cdrom when it's a specific type of system, simply add it
to the mounts for all flavors, and move the specific copy of the vmlinuz
file to a dedicated shellprocess module. This will be re-factored next
cycle, ideally being worked directly into a dedicated C++ module instead
of several, miscellaneous shell scripts wrapped in YAML.
* [pkgselectprocess] Explicitly log all apt commands in the debug logs.
* [pkgselectprocess] Ensure apt-cdrom command outputs have their own prefix.
* [checkpackage-backend] Simply pass through packages starting with "^" or
containing "*". For this cycle we can trust our distributors won't do
anything unusual, but next cycle, we need to perform explicit validation
on these items. If you are a downstream, please be careful.
* [pkgselectprocess] Ensure hasInternet is available as a local variable, so
we can use it.
* [pkgselectprocess] When running apt remove, use CPBE just in case.
* [pkgselectprocess] When doing installations without network, we need to
ensure that we don't try to perform apt operations that require internet.
To do this in Plucky, we need to temporarily copy the ubuntu.sources file
to an ubuntu.sources.bak file. To bring all of the previous commits in
this upload together, we use the bind-mounted /media/cdrom not only to
install the correct GRUB packages, but to ensure that we can still install
them and any other packages on ship-live. There has to be a better, more
native way to do this. It works for now, but in the Questing cycle, we're
probably going to move some of these command-line apt calls to be a
consumer of the libapt C library (LP: #2107287).
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 15 Apr 2025 22:36:52 -0500
calamares-settings-ubuntu (1:25.04.25) plucky; urgency=medium
* [pkgselectprocess] When we are creating the final list of packages to feed
to "apt install," virtual packages which do not have a valid candidate are
included in this list, causing the installation to fail. When creating
this list, use FindGrp instead of FindPkg, and only add it to the list if
there is a valid candidate. Additionally, add these items to an unordered
set, to eliminate deduplication (LP: #2106773).
* [pkgselect] As a temporary measure until OEM is refactored in the 25.10
cycle, we need to ensure that Calamares and its necessary dependencies are
installed on the target, iff this is a stacked squashfs. We're doing this
in pkgselect instead of pkgselectprocess because pkgselect already knows
about stacked squashfses, it's what provides the final "additional install
list" to be considered by checkpackage-backend, and this is a temporary
fix anyway (LP: #2104343).
* [pkgselectprocess] To complement the last fix, ensure that Calamares ends
up on the removal list for non-stacked squashfses if and only if OEM is
disabled, and Calamares shows up on the install list only for stacked
squashfses which have OEM enabled. This nuanced approach ensures all
potential combinations have the intended functionality.
* [OEM] Ensure the final desktop file completing OEM is marked as executable.
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 13 Apr 2025 03:17:13 -0500
calamares-settings-ubuntu (1:25.04.24) plucky; urgency=medium
* Bump Standards-Version to 4.7.2, no changes needed.
* [pkgselectprocess] If checkpackage-backend does not exist in the target
system, likely due to the use of stacked squashfses, ensure it temporarily
exists so it can be used in the install process. This fixes installation
of the Virtual Machine Manager when selected on the Customize menu
(LP: #2104243).
* [OEM] As a temporary stop-gap until this can be completely re-written next
cycle, ensure the sed call in the Calamares OEM setup refers to
pkgselectprocess, not packages. This was preventing the OEM processing
step (as opposed to just the GUI configuration) to be missing
(LP: #2104343).
* [OEM] [Kubuntu] In stage two, ensure we use Wayland, consistent with the
rest of the session scripts.
* [pkgselectprocess] Disable the dpkg trigger inhibition logic this cycle.
The original goal here was to de-duplicate some of the trigger processing
work, but it's obvious this needs more work. It's too premature to ship
right now, unfortunately.
* [Lubuntu] Remove the Dracut configuration so we fall back to the defaults
provided by the package. This is a no-op.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 09 Apr 2025 07:02:36 -0500
calamares-settings-ubuntu (1:25.04.23) plucky; urgency=medium
* [Kubuntu] Update welcome images for 25.04 (LP: #2104062)
* [Kubuntu] Update 07_Free_and_Open_Source installer slide for plucky
puffin mascot image.
* [Kubuntu] Update 10_Kubuntu_Focus installer slide.
-- Rik Mills <rikmills@kde.org> Mon, 07 Apr 2025 11:38:23 +0100
calamares-settings-ubuntu (1:25.04.22) plucky; urgency=medium
* [Unity] Update welcome slide for Plucky.
* [Unity] Set Kvantum theme to KvGnomeDark for Calamares.
* [Unity] Update welcome slide for Plucky.
* [Unity] Set Kvantum theme to KvGnomeDark for Calamares.
-- Walter Lapchynski <wxl@ubuntu.com> Wed, 26 Mar 2025 00:05:56 +0000
@ -118,19 +21,19 @@ calamares-settings-ubuntu (1:25.04.19) plucky; urgency=medium
* [Lubuntu] Update slides for current applications:
* Support: IRC -> Matrix, Lubuntu -> Ubuntu Discourse
* Lightweight: KCalc -> Qalc
* Lightweight: KCalc -> Qalc
-- Walter Lapchynski <wxl@ubuntu.com> Fri, 07 Mar 2025 03:21:03 +0000
calamares-settings-ubuntu (1:25.04.18) plucky; urgency=medium
* Add python3 as build-dep.
* Add python3 as build-dep.
-- Walter Lapchynski <wxl@ubuntu.com> Fri, 07 Mar 2025 01:11:36 +0000
calamares-settings-ubuntu (1:25.04.17) plucky; urgency=medium
* [Lubuntu] Update welcome slides for Plucky.
* [Lubuntu] Update welcome slides for Plucky.
-- Walter Lapchynski <wxl@ubuntu.com> Thu, 06 Mar 2025 10:23:08 +0000

4
debian/control vendored
View File

@ -7,7 +7,6 @@ Build-Depends: debhelper-compat (= 13),
dh-sequence-qmldeps,
cmake,
extra-cmake-modules,
fakeroot,
intltool,
libapt-pkg-dev,
libcalamares-dev (>= 3.3.13-0ubuntu4),
@ -20,7 +19,7 @@ Build-Depends: debhelper-compat (= 13),
qt6-l10n-tools,
qt6-tools-dev,
qt6-tools-dev-tools
Standards-Version: 4.7.2
Standards-Version: 4.7.0
Homepage: https://code.launchpad.net/~ubuntu-qt-code/+git/calamares-settings-ubuntu
Vcs-Browser: https://git.launchpad.net/~ubuntu-qt-code/+git/calamares-settings-ubuntu
Vcs-Git: https://git.launchpad.net/~ubuntu-qt-code/+git/calamares-settings-ubuntu
@ -76,7 +75,6 @@ Depends: calamares (>= 3.3.13-0ubuntu4),
dracut-core,
kdialog,
keyutils,
libglib2.0-bin,
snapd-seed-glue,
squashfs-tools,
sudo,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

@ -5,6 +5,10 @@ packages:
name: "Element"
description: "Matrix-based end-to-end encrypted messenger and secure collaboration app."
snap: true
- id: "virt-manager"
name: "Virtual Machine Manager"
description: "Desktop user interface for managing virtual machines through libvirt."
snap: false
- id: "krita"
name: "Krita"
description: "Graphics editor designed primarily for digital art and 2D animation."

View File

@ -29,7 +29,7 @@ if kdialog --warningyesno "${msg}"; then
sed -i "/- welcome$/a \ \ - oemid" /etc/calamares/settings.conf;
# Enable OEM prep module
sed -i "/- pkgselectprocess$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
sed -i "/- packages$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
# Fix OEM UID
sed -i "/- shellprocess@oemprep$/a \ \ - shellprocess@fix-oem-uid" /etc/calamares/settings.conf;

View File

@ -7,10 +7,6 @@
tar xvzf /etc/calamares/oemconfig.tar.gz -C "$1" --strip-components=2;
chown -R 1000:1000 "$1"/home/oem
# Ensure the desktop file is marked as trusted
# See line 96 of scripts/casper-bottom/25adduser in src:casper as shipped in Plucky
gio set /home/oem/Desktop/calamares-finish-oem.desktop metadata::trusted true
# Enable passwordless sudo for the OEM user, making sure this can be undone later
mv "$1"/etc/sudoers "$1"/etc/sudoers.orig
mv "$1"/etc/sudoers.oem "$1"/etc/sudoers

View File

@ -1,15 +1,11 @@
#!/bin/bash
# Starts the Kubuntu OEM Environment.
export XDG_SESSION_CLASS="user"
export XDG_SESSION_DESKTOP="KDE"
export DESKTOP_SESSION="plasma"
export QT_QPA_PLATFORMTHEME="kde"
export BROWSER='sudo -H -u kubuntu firefox'
/usr/bin/kwin_wayland --no-lockscreen &
while [ ! -e "/run/user/$(id -u)/wayland-0" ]; do sleep 1; done
/usr/bin/kwin_x11 &
/usr/bin/basicwallpaper /usr/share/wallpapers/Next/contents/3840x2160.png &
WAYLAND_DISPLAY="wayland-0" sudo -E /usr/bin/calamares -D8 # This is intentionally *not* backgrounded.
sudo -E /usr/bin/calamares -D8 # This is intentionally *not* backgrounded.
# If it exits...
killall basicwallpaper
killall kwin_wayland
killall kwin_x11

View File

@ -2,12 +2,12 @@
modules-search: [ local ]
instances:
- id: before_bootloader_mkdirs
module: contextualprocess
config: before_bootloader_mkdirs_context.conf
- id: before_bootloader
module: contextualprocess
config: before_bootloader_context.conf
- id: copy_vmlinuz_shellprocess
module: shellprocess
config: copy_vmlinuz_shellprocess.conf
- id: logs
module: shellprocess
config: shellprocess_logs.conf
@ -53,7 +53,7 @@ sequence:
- displaymanager
- networkcfg
- hwclock
- shellprocess@copy_vmlinuz_shellprocess
- contextualprocess@before_bootloader_mkdirs
- shellprocess@bug-LP#1829805
- shellprocess@fixconkeys_part1
- shellprocess@fixconkeys_part2

View File

@ -0,0 +1,2 @@
---
options: [ "-f", "-H", "--hostonly-mode=sloppy" ]

View File

@ -10,6 +10,10 @@ packages:
name: "Thunderbird"
description: "Email, newsfeed, chat, and calendaring client."
snap: true
- id: "virt-manager"
name: "Virtual Machine Manager"
description: "Desktop user interface for managing virtual machines through libvirt."
snap: false
- id: "krita"
name: "Krita"
description: "Graphics editor designed primarily for digital art and 2D animation."

View File

@ -29,7 +29,7 @@ if kdialog --warningyesno "${msg}"; then
sed -i "/- welcome$/a \ \ - oemid" /etc/calamares/settings.conf;
# Enable OEM prep module
sed -i "/- pkgselectprocess$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
sed -i "/- packages$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
# Fix OEM UID
sed -i "/- shellprocess@oemprep$/a \ \ - shellprocess@fix-oem-uid" /etc/calamares/settings.conf;

View File

@ -7,10 +7,6 @@
tar xvzf /etc/calamares/oemconfig.tar.gz -C "$1" --strip-components=2;
chown -R 1000:1000 "$1"/home/oem
# Ensure the desktop file is marked as trusted
# See line 96 of scripts/casper-bottom/25adduser in src:casper as shipped in Plucky
gio set /home/oem/Desktop/calamares-finish-oem.desktop metadata::trusted true
# Enable passwordless sudo for the OEM user, making sure this can be undone later
mv "$1"/etc/sudoers "$1"/etc/sudoers.orig
mv "$1"/etc/sudoers.oem "$1"/etc/sudoers

View File

@ -2,12 +2,12 @@
modules-search: [ local ]
instances:
- id: before_bootloader_mkdirs
module: contextualprocess
config: before_bootloader_mkdirs_context.conf
- id: before_bootloader
module: contextualprocess
config: before_bootloader_context.conf
- id: copy_vmlinuz_shellprocess
module: shellprocess
config: copy_vmlinuz_shellprocess.conf
- id: logs
module: shellprocess
config: shellprocess_logs.conf
@ -57,7 +57,7 @@ sequence:
- pkgselectprocess
- dracutlukscfg
- dracut
- shellprocess@copy_vmlinuz_shellprocess
- contextualprocess@before_bootloader_mkdirs
- shellprocess@bug-LP#1829805
- shellprocess@fixconkeys_part1
- shellprocess@fixconkeys_part2

View File

@ -9,6 +9,10 @@ packages:
name: "Thunderbird"
description: "Email, newsfeed, chat, and calendaring client."
snap: true
- id: "virt-manager"
name: "Virtual Machine Manager"
description: "Desktop user interface for managing virtual machines through libvirt."
snap: false
- id: "krita"
name: "Krita"
description: "Graphics editor designed primarily for digital art and 2D animation."

View File

@ -26,7 +26,7 @@ if zenity --question --text="${msg}"; then
sed -i "/- welcome$/a \ \ - oemid" /etc/calamares/settings.conf;
# Enable OEM prep module
sed -i "/- pkgselectprocess$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
sed -i "/- packages$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
# Fix OEM UID
sed -i "/- shellprocess@oemprep$/a \ \ - shellprocess@fix-oem-uid" /etc/calamares/settings.conf;

View File

@ -7,10 +7,6 @@
tar xvzf /etc/calamares/oemconfig.tar.gz -C "$1" --strip-components=2;
chown -R 1000:1000 "$1"/home/oem
# Ensure the desktop file is marked as trusted
# See line 96 of scripts/casper-bottom/25adduser in src:casper as shipped in Plucky
gio set /home/oem/Desktop/calamares-finish-oem.desktop metadata::trusted true
# Enable passwordless sudo for the OEM user, making sure this can be undone later
mv "$1"/etc/sudoers "$1"/etc/sudoers.orig
mv "$1"/etc/sudoers.oem "$1"/etc/sudoers

View File

@ -2,12 +2,12 @@
modules-search: [ local ]
instances:
- id: before_bootloader_mkdirs
module: contextualprocess
config: before_bootloader_mkdirs_context.conf
- id: before_bootloader
module: contextualprocess
config: before_bootloader_context.conf
- id: copy_vmlinuz_shellprocess
module: shellprocess
config: copy_vmlinuz_shellprocess.conf
- id: logs
module: shellprocess
config: shellprocess_logs.conf
@ -53,7 +53,7 @@ sequence:
- displaymanager
- networkcfg
- hwclock
- shellprocess@copy_vmlinuz_shellprocess
- contextualprocess@before_bootloader_mkdirs
- shellprocess@bug-LP#1829805
- shellprocess@fixconkeys_part1
- shellprocess@fixconkeys_part2