penguins-eggs 25.9.2 → 25.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.oclif.manifest.json +1 -1
- package/README.md +47 -45
- package/README.pdf +815 -801
- package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
- package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
- package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
- package/addons/eggs/theme/applications/install-system.desktop +0 -0
- package/assets/calamares/install-system.sh +0 -0
- package/assets/penguins-eggs.desktop +0 -0
- package/assets/penguins-krill.desktop +0 -0
- package/assets/penguins-links-add.desktop +0 -0
- package/assets/penguins-live-installer.desktop +0 -0
- package/bin/dev.js +0 -0
- package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
- package/conf/distros/bionic/calamares/calamares-modules/after-bootloader/after-bootloader.sh +0 -0
- package/conf/distros/bionic/calamares/calamares-modules/before-bootloader/before-bootloader.sh +0 -0
- package/conf/distros/bionic/calamares/calamares-modules/before-bootloader-mkdirs/before-bootloader-mkdirs.sh +0 -0
- package/conf/distros/bionic/calamares/calamares-modules/bug/bug.sh +0 -0
- package/conf/distros/bionic/calamares/calamares-modules/grubcfg/main.py +0 -0
- package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/openmamba/calamares/modules/users.yml +1 -1
- package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/opensuse/calamares/settings.yml +0 -0
- package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
- package/conf/exclude.list.d/master.list +4 -0
- package/conf/init/unattended.sh +0 -0
- package/dist/classes/incubation/incubator.js +5 -1
- package/dist/classes/utils.d/kernel.d.ts +9 -1
- package/dist/classes/utils.d/kernel.js +86 -1
- package/dist/classes/utils.d.ts +2 -1
- package/dist/classes/utils.js +14 -2
- package/dist/commands/export/pkg.js +16 -22
- package/dist/commands/tools/ppa.d.ts +6 -0
- package/dist/commands/tools/ppa.js +73 -26
- package/dist/commands/update.d.ts +2 -7
- package/dist/commands/update.js +102 -91
- package/dist/krill/classes/sequence.d/bootloader.js +24 -10
- package/dist/krill/classes/sequence.d/bootloader_config.js +58 -8
- package/dist/krill/classes/sequence.d/mkfs.js +8 -4
- package/dist/krill/classes/sequence.d/mount_vfs.js +24 -5
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +7 -5
- package/dist/krill/classes/sequence.js +9 -9
- package/dist/penguins-eggs_25.9.7-1_amd64.deb +0 -0
- package/dist/penguins-eggs_25.9.7-1_amd64.deb.sha256 +1 -0
- package/dist/penguins-eggs_25.9.7-1_arm64.deb +0 -0
- package/dist/penguins-eggs_25.9.7-1_arm64.deb.sha256 +1 -0
- package/dist/penguins-eggs_25.9.7-1_i386.deb +0 -0
- package/dist/penguins-eggs_25.9.7-1_i386.deb.sha256 +1 -0
- package/eui/eui-autostart-cinnamon.desktop +0 -0
- package/eui/eui-autostart-xfce.desktop +0 -0
- package/eui/eui-create-image.sh +0 -0
- package/eui/eui-start.sh +0 -0
- package/package.json +131 -125
- package/perrisbrewery/scripts/postinst +0 -0
- package/perrisbrewery/scripts/postrm +0 -0
- package/perrisbrewery/scripts/preinst +0 -0
- package/perrisbrewery/scripts/prerm +0 -0
- package/perrisbrewery/template/dependencies-bionic.yaml +6 -23
- package/pods/almalinux.sh +0 -0
- package/pods/archlinux.sh +0 -0
- package/pods/ci/kernel-overlay-install.sh +0 -0
- package/pods/ci/minimal/almalinux-container2host.sh +0 -0
- package/pods/ci/minimal/archlinux-container2host.sh +0 -0
- package/pods/ci/minimal/debian-container2host.sh +0 -0
- package/pods/ci/minimal/fedora-container2host.sh +0 -0
- package/pods/ci/minimal/manjaro-container2host.sh +0 -0
- package/pods/ci/minimal/opensuse-container2host.sh +0 -0
- package/pods/ci/penguins-eggs-execute.sh +0 -0
- package/pods/ci/penguins-eggs-install.sh +0 -0
- package/pods/ci/run +0 -0
- package/pods/ci/run-on-almalinux.sh +0 -0
- package/pods/ci/run-on-archlinux.sh +0 -0
- package/pods/ci/run-on-debian.sh +0 -0
- package/pods/ci/run-on-devuan.sh +0 -0
- package/pods/ci/run-on-fedora.sh +0 -0
- package/pods/ci/run-on-manjaro.sh +0 -0
- package/pods/ci/run-on-opensuse.sh +0 -0
- package/pods/ci/run-on-rockylinux.sh +0 -0
- package/pods/ci/run-on-ubuntu.sh +0 -0
- package/pods/debian.sh +0 -0
- package/pods/devuan.sh +0 -0
- package/pods/fedora.sh +0 -0
- package/pods/lmde.sh +0 -0
- package/pods/manjaro.sh +0 -0
- package/pods/opensuse.sh +0 -0
- package/pods/podman.command.sh +0 -0
- package/pods/rocky.sh +0 -0
- package/pods/run-build-packages-debs.sh +0 -0
- package/pods/run-create-debs.sh +0 -0
- package/pods/ubuntu.sh +0 -0
- package/scripts/99clean +0 -0
- package/scripts/adapt.sh +0 -0
- package/scripts/bros/waydroid-helper.sh +0 -0
- package/scripts/lsb_release +0 -0
- package/scripts/mom.sh +0 -0
- package/scripts/pve-live.service +0 -0
- package/scripts/pve-live.sh +0 -0
- package/scripts/resy +0 -0
package/dist/commands/update.js
CHANGED
|
@@ -53,20 +53,16 @@ export default class Update extends Command {
|
|
|
53
53
|
const choose = await this.choosePkg();
|
|
54
54
|
Utils.titles(`updating via ${choose}`);
|
|
55
55
|
switch (choose) {
|
|
56
|
-
case '
|
|
57
|
-
await this.getPkgFromRepo();
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
case 'lan': {
|
|
56
|
+
case 'LAN': {
|
|
61
57
|
await this.getPkgFromLan();
|
|
62
58
|
break;
|
|
63
59
|
}
|
|
64
|
-
case '
|
|
65
|
-
this.
|
|
60
|
+
case 'Package_Manager': {
|
|
61
|
+
await this.getPkgFromPackageManager();
|
|
66
62
|
break;
|
|
67
63
|
}
|
|
68
|
-
case '
|
|
69
|
-
this.
|
|
64
|
+
case 'Source': {
|
|
65
|
+
this.getFromSource();
|
|
70
66
|
break;
|
|
71
67
|
}
|
|
72
68
|
// No default
|
|
@@ -76,18 +72,18 @@ export default class Update extends Command {
|
|
|
76
72
|
*
|
|
77
73
|
*/
|
|
78
74
|
async choosePkg() {
|
|
79
|
-
const choices = ['
|
|
80
|
-
choices.push('
|
|
75
|
+
const choices = ['Abort'];
|
|
76
|
+
choices.push('LAN', 'Source', 'Package_Manager');
|
|
81
77
|
const questions = [
|
|
82
78
|
{
|
|
83
79
|
choices,
|
|
84
|
-
message: '
|
|
80
|
+
message: 'Select update method',
|
|
85
81
|
name: 'selected',
|
|
86
82
|
type: 'list'
|
|
87
83
|
}
|
|
88
84
|
];
|
|
89
85
|
const answer = await inquirer.prompt(questions);
|
|
90
|
-
if (answer.selected === '
|
|
86
|
+
if (answer.selected === 'Abort') {
|
|
91
87
|
process.exit(0);
|
|
92
88
|
}
|
|
93
89
|
return answer.selected;
|
|
@@ -95,19 +91,31 @@ export default class Update extends Command {
|
|
|
95
91
|
/**
|
|
96
92
|
*
|
|
97
93
|
*/
|
|
98
|
-
async
|
|
94
|
+
async getPkgFromPackageManager() {
|
|
99
95
|
let cmd = "";
|
|
100
|
-
if (this.distro.familyId ===
|
|
101
|
-
cmd =
|
|
96
|
+
if (this.distro.familyId === 'alpine') {
|
|
97
|
+
cmd = `doas apk add penguins-egga`;
|
|
102
98
|
}
|
|
103
99
|
else if (this.distro.familyId === 'archlinux') {
|
|
104
|
-
cmd = 'pacman -S penguins-eggs';
|
|
100
|
+
cmd = 'sudo pacman -S penguins-eggs';
|
|
101
|
+
}
|
|
102
|
+
else if (this.distro.familyId === "debian") {
|
|
103
|
+
cmd = 'sudo apt install penguins-eggs';
|
|
105
104
|
}
|
|
106
|
-
else if (this.distro.familyId ===
|
|
107
|
-
cmd =
|
|
105
|
+
else if (this.distro.familyId === "fedora") {
|
|
106
|
+
cmd = 'sudo dnf install penguins-eggs\nsudo dnf install penguins-eggs';
|
|
108
107
|
}
|
|
108
|
+
else if (this.distro.familyId === "openmamba") {
|
|
109
|
+
cmd = 'sudo dnf install penguins-eggs\nsudo dnf install penguins-eggs';
|
|
110
|
+
}
|
|
111
|
+
else if (this.distro.familyId === "opensuse") {
|
|
112
|
+
cmd = 'sudo zypper install penguins-eggs';
|
|
113
|
+
}
|
|
114
|
+
Utils.titles(`update`);
|
|
115
|
+
Utils.warning(`To update/install penguins-eggs cut and copy follow commands`);
|
|
116
|
+
console.log();
|
|
109
117
|
console.log(cmd);
|
|
110
|
-
|
|
118
|
+
console.log();
|
|
111
119
|
}
|
|
112
120
|
/**
|
|
113
121
|
* download da LAN
|
|
@@ -115,92 +123,95 @@ export default class Update extends Command {
|
|
|
115
123
|
async getPkgFromLan() {
|
|
116
124
|
const Tu = new Tools();
|
|
117
125
|
await Tu.loadSettings();
|
|
118
|
-
Utils.warning('Update from LAN');
|
|
119
|
-
|
|
126
|
+
Utils.warning('Update penguins-eggs from LAN');
|
|
127
|
+
let filter = '';
|
|
128
|
+
let copy = '';
|
|
129
|
+
let install = '';
|
|
130
|
+
/**
|
|
131
|
+
* Alpine
|
|
132
|
+
*/
|
|
133
|
+
if (this.distro.familyId === 'alpine') {
|
|
134
|
+
let repo = `alpine/x86_64`;
|
|
135
|
+
filter = `penguins-eggs-*-*.*.?-r?.apk`;
|
|
136
|
+
copy = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${repo}/${filter} /tmp`;
|
|
137
|
+
install = `apk add /tmp/${filter}`;
|
|
138
|
+
/**
|
|
139
|
+
* Arch
|
|
140
|
+
*/
|
|
141
|
+
}
|
|
142
|
+
else if (this.distro.familyId === 'archlinux') {
|
|
120
143
|
let repo = "aur";
|
|
144
|
+
filter = `penguins-eggs-??.*.*-?-any.pkg.tar.zst`;
|
|
121
145
|
if (Diversions.isManjaroBased(this.distro.distroId)) {
|
|
122
146
|
repo = 'manjaro';
|
|
147
|
+
filter = `penguins-eggs-??.*.*-?-any.pkg.tar.*`;
|
|
123
148
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
else if (this.distro.familyId === 'alpine') {
|
|
132
|
-
let arch = 'x86_64';
|
|
133
|
-
if (process.arch === 'ia32') {
|
|
134
|
-
arch = 'i386';
|
|
135
|
-
}
|
|
136
|
-
const filter = `penguins-eggs-25.*.*-r*.apk`;
|
|
137
|
-
const cmd = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/alpine/${filter} /tmp`;
|
|
138
|
-
await exec(cmd, { capture: true, echo: true });
|
|
139
|
-
if (await Utils.customConfirm(`Want to install ${filter}`)) {
|
|
140
|
-
await exec(`apk add /tmp/${filter}`);
|
|
141
|
-
}
|
|
149
|
+
copy = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${repo}/${filter} /tmp`;
|
|
150
|
+
install = `pacman -U /tmp/${filter}`;
|
|
151
|
+
/**
|
|
152
|
+
* Devuan/Debian/Ubuntu
|
|
153
|
+
*/
|
|
142
154
|
}
|
|
143
155
|
else if (this.distro.familyId === "debian") {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
156
|
+
let repo = 'debs';
|
|
157
|
+
filter = `penguins-eggs_??.*.*-?_${Utils.uefiArch()}.deb`;
|
|
158
|
+
copy = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${repo}/${filter} /tmp`;
|
|
159
|
+
install = `dpkg -i /tmp/${filter}`;
|
|
160
|
+
/**
|
|
161
|
+
* fedora/el9
|
|
162
|
+
*/
|
|
150
163
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
let cmd = '';
|
|
158
|
-
let url = 'https://sourceforge.net/projects/penguins-eggs/files/Packages';
|
|
159
|
-
let filter = `penguins-eggs`;
|
|
160
|
-
if (this.distro.familyId === 'archlinux') {
|
|
161
|
-
repo = "aur";
|
|
162
|
-
filter = `penguins-eggs-10.?.*-?-any.pkg.tar.zst`;
|
|
163
|
-
cmd = `sudo pacman -U ${filter}`;
|
|
164
|
-
if (Diversions.isManjaroBased(this.distro.distroId)) {
|
|
165
|
-
repo = 'manjaro';
|
|
164
|
+
else if (this.distro.familyId === "fedora") {
|
|
165
|
+
let repo = 'fedora';
|
|
166
|
+
let ftype = 'fc??';
|
|
167
|
+
if (this.distro.distroId !== 'Fedora') {
|
|
168
|
+
repo = 'el9';
|
|
169
|
+
ftype = 'el?';
|
|
166
170
|
}
|
|
167
|
-
|
|
171
|
+
filter = `penguins-eggs-??.*.*-?.${ftype}.x86_64.rpm`;
|
|
172
|
+
copy = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${repo}/${filter} /tmp`;
|
|
173
|
+
install = `dnf reinstall /tmp/${filter} || dnf install /tmp/${filter}`;
|
|
174
|
+
/**
|
|
175
|
+
* openmamba
|
|
176
|
+
*/
|
|
168
177
|
}
|
|
169
|
-
else if (this.distro.familyId === "
|
|
170
|
-
let
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
+
else if (this.distro.familyId === "openmamba") {
|
|
179
|
+
let repo = 'openmamba';
|
|
180
|
+
filter = `penguins-eggs-??.*.*-?mamba.x86_64.rpm`;
|
|
181
|
+
copy = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${repo}/${filter} /tmp`;
|
|
182
|
+
install = `dnf reinstall /tmp/${filter} || dnf install /tmp/${filter}`;
|
|
183
|
+
/**
|
|
184
|
+
* opensuse
|
|
185
|
+
*/
|
|
186
|
+
}
|
|
187
|
+
else if (this.distro.familyId === "opensuse") {
|
|
188
|
+
let repo = 'opensuse';
|
|
189
|
+
filter = `penguins-eggs-*.*.*-?.opensuse.x86_64.rpm`;
|
|
190
|
+
copy = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${repo}/${filter} /tmp`;
|
|
191
|
+
install = `zypper install /tmp/${filter}`;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* copy and install
|
|
195
|
+
*/
|
|
196
|
+
if (await Utils.customConfirm(`Want to update/reinstall penguins-eggs`)) {
|
|
197
|
+
await exec(copy, { capture: true, echo: true });
|
|
198
|
+
await exec(install);
|
|
178
199
|
}
|
|
179
|
-
else if (this.distro.familyId === "debian") {
|
|
180
|
-
repo = "debs";
|
|
181
|
-
url = `${url}/${repo}`;
|
|
182
|
-
filter = `penguins-eggs_25.*.*-*_${Utils.uefiArch()}.deb`;
|
|
183
|
-
cmd = `sudo apt-get install ./${filter}`;
|
|
184
|
-
}
|
|
185
|
-
let command = `- open your browser at ${url}\n`;
|
|
186
|
-
command += `- select and download last package: ${filter}\n`;
|
|
187
|
-
command += `- ${cmd}\n`;
|
|
188
|
-
console.log(command);
|
|
189
|
-
this.show(url);
|
|
190
200
|
}
|
|
191
201
|
/**
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
console.log('
|
|
202
|
+
*
|
|
203
|
+
*/
|
|
204
|
+
getFromSource() {
|
|
205
|
+
console.log('Use the following commands to use penguins-eggs from source:');
|
|
206
|
+
console.log('');
|
|
197
207
|
console.log('cd ~');
|
|
198
208
|
console.log('git clone https://github.com/pieroproietti/penguins-eggs');
|
|
209
|
+
console.log('cd penguins-eggs');
|
|
210
|
+
console.log('pnpm install');
|
|
211
|
+
console.log('pnpm build');
|
|
212
|
+
console.log('./eggs');
|
|
199
213
|
console.log('');
|
|
200
|
-
console.log('
|
|
201
|
-
console.log('https://github.com/pieroproietti/penguins-eggs/blob/master/PREREQUISITES/README.md');
|
|
202
|
-
console.log('');
|
|
203
|
-
console.log('');
|
|
214
|
+
console.log('NOTE: requires nodejs>18 and pnpm installed');
|
|
204
215
|
}
|
|
205
216
|
/**
|
|
206
217
|
* show
|
|
@@ -18,18 +18,32 @@ import path from 'node:path';
|
|
|
18
18
|
export default async function bootloader() {
|
|
19
19
|
let grubName = Diversion.grubName(this.distro.familyId);
|
|
20
20
|
let grubForce = Diversion.grubForce(this.distro.familyId);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
let cmd = '';
|
|
22
|
+
if (this.efi) {
|
|
23
|
+
/**
|
|
24
|
+
* UEFI Installation
|
|
25
|
+
* This is the correct way to install GRUB for UEFI systems.
|
|
26
|
+
* --target: Specifies the EFI architecture (x86_64-efi or arm64-efi).
|
|
27
|
+
* --efi-directory: Tells GRUB where the EFI System Partition is mounted. CRITICAL.
|
|
28
|
+
* --bootloader-id: Creates the \EFI\fedora directory on the ESP and labels the NVRAM entry. CRITICAL.
|
|
29
|
+
* We do NOT specify the device (e.g., /dev/sda) for UEFI.
|
|
30
|
+
*/
|
|
31
|
+
let target = `x86_64-efi`;
|
|
32
|
+
if (process.arch === 'arm64') {
|
|
33
|
+
target = `arm64-efi`;
|
|
34
|
+
}
|
|
35
|
+
let bootloaderId = this.distro.distroLike.toLowerCase();
|
|
36
|
+
cmd = `chroot ${this.installTarget} ${grubName}-install --target=${target} --efi-directory=/boot/efi --bootloader-id=${bootloaderId} --recheck ${grubForce}`;
|
|
28
37
|
}
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
else {
|
|
39
|
+
/**
|
|
40
|
+
* MBR (Legacy BIOS) Installation
|
|
41
|
+
* For legacy boot, we specify the installation device directly.
|
|
42
|
+
*/
|
|
43
|
+
const target = 'i386-pc';
|
|
44
|
+
cmd = `chroot ${this.installTarget} ${grubName}-install --target=${target} ${this.partitions.installationDevice} ${grubForce}`;
|
|
31
45
|
}
|
|
32
|
-
|
|
46
|
+
// await Utils.debug(`grub-install: ${cmd}`)
|
|
33
47
|
await exec(cmd, this.echo);
|
|
34
48
|
/**
|
|
35
49
|
* grub-mkconfig
|
|
@@ -20,7 +20,7 @@ export default async function bootloaderConfig() {
|
|
|
20
20
|
if (this.distro.familyId === 'alpine') {
|
|
21
21
|
if (this.efi) {
|
|
22
22
|
try {
|
|
23
|
-
cmd = `chroot ${this.installTarget} apk add grub grub-efi efibootmgr} ${this.toNull}`;
|
|
23
|
+
cmd = `chroot ${this.installTarget} apk add grub grub-efi efibootmgr shim} ${this.toNull}`;
|
|
24
24
|
await exec(cmd, this.echo);
|
|
25
25
|
}
|
|
26
26
|
catch (error) {
|
|
@@ -43,7 +43,7 @@ export default async function bootloaderConfig() {
|
|
|
43
43
|
else if (this.distro.familyId === 'archlinux') {
|
|
44
44
|
if (this.efi) {
|
|
45
45
|
try {
|
|
46
|
-
cmd = `chroot ${this.installTarget} pacman -Sy grub efibootmgr} ${this.toNull}`;
|
|
46
|
+
cmd = `chroot ${this.installTarget} pacman -Sy grub efibootmgr shim} ${this.toNull}`;
|
|
47
47
|
await exec(cmd, this.echo);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
@@ -75,7 +75,7 @@ export default async function bootloaderConfig() {
|
|
|
75
75
|
const aptInstallOptions = ' apt install -y --no-upgrade --allow-unauthenticated -o Acquire::gpgv::Options::=--ignore-time-conflict ';
|
|
76
76
|
if (this.efi) {
|
|
77
77
|
try {
|
|
78
|
-
cmd = `chroot ${this.installTarget} ${aptInstallOptions} grub-efi-${Utils.uefiArch()} --allow-unauthenticated ${this.toNull}`;
|
|
78
|
+
cmd = `chroot ${this.installTarget} ${aptInstallOptions} grub-efi-${Utils.uefiArch()} efibootmgr shim-signed --allow-unauthenticated ${this.toNull}`;
|
|
79
79
|
await exec(cmd, this.echo);
|
|
80
80
|
}
|
|
81
81
|
catch (error) {
|
|
@@ -92,13 +92,19 @@ export default async function bootloaderConfig() {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
|
-
* fedora
|
|
95
|
+
* fedora
|
|
96
96
|
*/
|
|
97
97
|
}
|
|
98
|
-
else if (this.distro.familyId === 'fedora'
|
|
98
|
+
else if (this.distro.familyId === 'fedora') {
|
|
99
99
|
if (this.efi) {
|
|
100
100
|
try {
|
|
101
|
-
cmd =
|
|
101
|
+
cmd = ``;
|
|
102
|
+
cmd += `chroot ${this.installTarget} `;
|
|
103
|
+
cmd += `dnf -y install grub2 `;
|
|
104
|
+
cmd += `grub2-efi-${process.arch} `;
|
|
105
|
+
cmd += `grub2-efi-${process.arch}-modules `;
|
|
106
|
+
cmd += `efibootmgr `;
|
|
107
|
+
cmd += `shim-${process.arch} ${this.toNull}`;
|
|
102
108
|
await exec(cmd, this.echo);
|
|
103
109
|
}
|
|
104
110
|
catch (error) {
|
|
@@ -107,7 +113,41 @@ export default async function bootloaderConfig() {
|
|
|
107
113
|
}
|
|
108
114
|
else {
|
|
109
115
|
try {
|
|
110
|
-
cmd =
|
|
116
|
+
cmd = ``;
|
|
117
|
+
cmd += `chroot ${this.installTarget} `;
|
|
118
|
+
cmd += `dnf -y install grub2 `;
|
|
119
|
+
cmd += `grub2-pc `;
|
|
120
|
+
cmd += `grub2-pc-modules ${this.toNull}`;
|
|
121
|
+
await exec(cmd, this.echo);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
await showError(cmd, error);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* openmamba
|
|
129
|
+
*/
|
|
130
|
+
}
|
|
131
|
+
else if (this.distro.familyId === 'openmamba') {
|
|
132
|
+
if (this.efi) {
|
|
133
|
+
try {
|
|
134
|
+
cmd = ``;
|
|
135
|
+
cmd += `chroot ${this.installTarget} `;
|
|
136
|
+
cmd += `dnf -y install grub `;
|
|
137
|
+
cmd += `grub-efi-x86_64 `;
|
|
138
|
+
cmd += `efibootmgr `;
|
|
139
|
+
cmd += `shim-signed ${this.toNull}`;
|
|
140
|
+
await exec(cmd, this.echo);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
await showError(cmd, error);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
try {
|
|
148
|
+
cmd = ``;
|
|
149
|
+
cmd += `chroot ${this.installTarget} `;
|
|
150
|
+
cmd += `dnf -y install grub ${this.toNull}`;
|
|
111
151
|
await exec(cmd, this.echo);
|
|
112
152
|
}
|
|
113
153
|
catch (error) {
|
|
@@ -121,7 +161,16 @@ export default async function bootloaderConfig() {
|
|
|
121
161
|
else if (this.distro.familyId === 'opensuse') {
|
|
122
162
|
if (this.efi) {
|
|
123
163
|
try {
|
|
124
|
-
cmd = `chroot ${this.installTarget} zypper install -y grub2 grub2-
|
|
164
|
+
cmd = `chroot ${this.installTarget} zypper install -y grub2 grub2-x86_64-efi efibootmgr shim} ${this.toNull}`;
|
|
165
|
+
await exec(cmd, this.echo);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
await showError(cmd, error);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
try {
|
|
173
|
+
cmd = `chroot ${this.installTarget} zypper install -y zypper install -y grub2 grub2-i386-pc ${this.toNull}`;
|
|
125
174
|
await exec(cmd, this.echo);
|
|
126
175
|
}
|
|
127
176
|
catch (error) {
|
|
@@ -129,6 +178,7 @@ export default async function bootloaderConfig() {
|
|
|
129
178
|
}
|
|
130
179
|
}
|
|
131
180
|
}
|
|
181
|
+
// await Utils.debug(`grub packages install cmd: ${cmd}`)
|
|
132
182
|
}
|
|
133
183
|
/**
|
|
134
184
|
*
|
|
@@ -29,9 +29,11 @@ export default async function mkfs() {
|
|
|
29
29
|
this.devices.efi.name = 'none'; // Trovare il modo
|
|
30
30
|
}
|
|
31
31
|
if (this.partitions.filesystemType === 'ext4') {
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* EFI
|
|
34
|
+
*/
|
|
33
35
|
if (this.efi) {
|
|
34
|
-
await exec(`
|
|
36
|
+
await exec(`mkfs.vfat -F 32 ${this.devices.efi.name} ${this.toNull}`, this.echo);
|
|
35
37
|
}
|
|
36
38
|
// boot
|
|
37
39
|
if (this.devices.boot.name !== 'none') {
|
|
@@ -39,11 +41,13 @@ export default async function mkfs() {
|
|
|
39
41
|
this.devices.boot.fsType = 'ext2';
|
|
40
42
|
this.devices.boot.mountPoint = '/boot';
|
|
41
43
|
}
|
|
42
|
-
await exec(`mke2fs -Ft ${this.devices.boot.fsType} ${this.devices.boot.name} ${this.toNull}`, this.echo)
|
|
44
|
+
// await exec(`mke2fs -Ft ${this.devices.boot.fsType} ${this.devices.boot.name} ${this.toNull}`, this.echo)
|
|
45
|
+
await exec(`mkfs.${this.devices.boot.fsType} -F ${this.devices.boot.name} ${this.toNull}`, this.echo);
|
|
43
46
|
}
|
|
44
47
|
// root
|
|
45
48
|
if (this.devices.root.name !== 'none') {
|
|
46
|
-
await exec(`mke2fs -Ft ${this.devices.root.fsType} ${this.devices.root.name} ${this.toNull}`, this.echo)
|
|
49
|
+
// await exec(`mke2fs -Ft ${this.devices.root.fsType} ${this.devices.root.name} ${this.toNull}`, this.echo)
|
|
50
|
+
await exec(`mkfs.ext4 -F ${this.devices.root.name} ${this.toNull}`, this.echo);
|
|
47
51
|
}
|
|
48
52
|
// data
|
|
49
53
|
if (this.devices.data.name !== 'none') {
|
|
@@ -11,18 +11,37 @@ import { exec } from '../../../lib/utils.js';
|
|
|
11
11
|
* mountvfs()
|
|
12
12
|
*/
|
|
13
13
|
export async function mountVfs() {
|
|
14
|
+
/**
|
|
15
|
+
* dev
|
|
16
|
+
*/
|
|
14
17
|
await exec(`mkdir ${this.installTarget}/dev ${this.toNull}`, this.echo);
|
|
15
|
-
await exec(`mkdir ${this.installTarget}/dev/pts ${this.toNull}`, this.echo);
|
|
16
|
-
await exec(`mkdir ${this.installTarget}/proc ${this.toNull}`, this.echo);
|
|
17
|
-
await exec(`mkdir ${this.installTarget}/sys ${this.toNull}`, this.echo);
|
|
18
|
-
await exec(`mkdir ${this.installTarget}/run ${this.toNull}`, this.echo);
|
|
19
18
|
await exec(`mount -o bind /dev ${this.installTarget}/dev ${this.toNull}`, this.echo);
|
|
19
|
+
/**
|
|
20
|
+
* dev/pts
|
|
21
|
+
*/
|
|
22
|
+
await exec(`mkdir ${this.installTarget}/dev/pts ${this.toNull}`, this.echo);
|
|
20
23
|
await exec(`mount -o bind /dev/pts ${this.installTarget}/dev/pts ${this.toNull}`, this.echo);
|
|
24
|
+
/**
|
|
25
|
+
* proc
|
|
26
|
+
*/
|
|
27
|
+
await exec(`mkdir ${this.installTarget}/proc ${this.toNull}`, this.echo);
|
|
21
28
|
await exec(`mount -o bind /proc ${this.installTarget}/proc ${this.toNull}`, this.echo);
|
|
29
|
+
/**
|
|
30
|
+
* sys
|
|
31
|
+
*/
|
|
32
|
+
await exec(`mkdir ${this.installTarget}/sys ${this.toNull}`, this.echo);
|
|
22
33
|
await exec(`mount -o bind /sys ${this.installTarget}/sys ${this.toNull}`, this.echo);
|
|
34
|
+
/**
|
|
35
|
+
* sys/efivar
|
|
36
|
+
*/
|
|
23
37
|
if (this.efi) {
|
|
24
|
-
await exec(`
|
|
38
|
+
await exec(`mkdir -p ${this.installTarget}/sys/firmware/efi/efivars ${this.toNull}`, this.echo);
|
|
39
|
+
await exec(`mount -o bind /sys/firmware/efi/efivars ${this.installTarget}/sys/firmware/efi/efivars`);
|
|
25
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* run: use recursive binding rbins
|
|
43
|
+
*/
|
|
44
|
+
await exec(`mkdir ${this.installTarget}/run ${this.toNull}`, this.echo);
|
|
26
45
|
await exec(`mount -o rbind /run ${this.installTarget}/run ${this.toNull}`, this.echo);
|
|
27
46
|
}
|
|
28
47
|
/**
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
import { exec } from '../../../../lib/utils.js';
|
|
10
10
|
export default async function uefiStandard(installDevice = "", p = "") {
|
|
11
11
|
await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
await exec(`parted --script ${installDevice} mkpart
|
|
15
|
-
await exec(`parted --script ${installDevice}
|
|
16
|
-
await exec(`parted --script ${installDevice}
|
|
12
|
+
// Partizione EFI: inizia a 1MiB e ha una dimensione di circa 256MiB
|
|
13
|
+
// Finisce a 257MiB per avere uno spazio netto di 256MiB
|
|
14
|
+
await exec(`parted --script ${installDevice} mkpart efi fat32 1MiB 257MiB`, this.echo);
|
|
15
|
+
await exec(`parted --script ${installDevice} mkpart swap linux-swap 257MiB ${this.swapSize + 257}MiB`, this.echo);
|
|
16
|
+
await exec(`parted --script ${installDevice} mkpart root ext4 ${this.swapSize + 257}MiB 100%`, this.echo);
|
|
17
|
+
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo);
|
|
18
|
+
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo);
|
|
17
19
|
this.devices.efi.name = `${installDevice}${p}1`;
|
|
18
20
|
this.devices.efi.fsType = 'F 32 -I';
|
|
19
21
|
this.devices.efi.mountPoint = '/boot/efi';
|
|
@@ -140,7 +140,7 @@ export default class Sequence {
|
|
|
140
140
|
this.devices.data = {};
|
|
141
141
|
this.devices.swap = {};
|
|
142
142
|
this.distro = new Distro();
|
|
143
|
-
this.efi = fs.existsSync('/efivars');
|
|
143
|
+
this.efi = fs.existsSync('/sys/firmware/efi/efivars');
|
|
144
144
|
this.luksFile = `${this.distro.liveMediumPath}live/${this.luksName}`;
|
|
145
145
|
}
|
|
146
146
|
/**
|
|
@@ -162,12 +162,7 @@ export default class Sequence {
|
|
|
162
162
|
// Setup (unchanged)
|
|
163
163
|
await this.setupInstallation(domain, unattended, nointeractive, chroot, halt, verbose);
|
|
164
164
|
// Installation sequence - each step clearly visible
|
|
165
|
-
await this.runInstallationSequence();
|
|
166
|
-
// Handle chroot if requested
|
|
167
|
-
if (chroot) {
|
|
168
|
-
const message = `You are in chroot mode under ${this.installTarget}, type "exit" to exit.`;
|
|
169
|
-
await this.emergencyShell(message);
|
|
170
|
-
}
|
|
165
|
+
await this.runInstallationSequence(chroot);
|
|
171
166
|
// Completion
|
|
172
167
|
await this.completeInstallation();
|
|
173
168
|
}
|
|
@@ -211,7 +206,7 @@ export default class Sequence {
|
|
|
211
206
|
/**
|
|
212
207
|
* Main installation sequence - Linear and clear
|
|
213
208
|
*/
|
|
214
|
-
async runInstallationSequence() {
|
|
209
|
+
async runInstallationSequence(chroot = false) {
|
|
215
210
|
// 1. Partitioning and formatting
|
|
216
211
|
let isPartitioned = false;
|
|
217
212
|
await this.executeStep("Creating partitions", 0, async () => {
|
|
@@ -316,7 +311,12 @@ export default class Sequence {
|
|
|
316
311
|
await this.executeStep(`running ${step}`, 90, () => this.execCalamaresModule(step));
|
|
317
312
|
}
|
|
318
313
|
}
|
|
319
|
-
// 14
|
|
314
|
+
// 14- Handle chroot if requested
|
|
315
|
+
if (chroot) {
|
|
316
|
+
const message = `You are in chroot mode under ${this.installTarget}, type "exit" to exit.`;
|
|
317
|
+
await this.emergencyShell(message);
|
|
318
|
+
}
|
|
319
|
+
// 15. Unmounting
|
|
320
320
|
await this.executeStep("umount Virtual File System", 96, () => this.umountVfs());
|
|
321
321
|
await this.executeStep("umount File system", 99, () => this.umountFs());
|
|
322
322
|
}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3930ad85d31d4d2446c15a710bc0263d2fdb86d17ab6632db42a07a5b60c7404 penguins-eggs_25.9.7-1_amd64.deb
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a6f9943c573d294c3d67e3c475cfd04fa80b4a97a5a25304ce93eaaae0251d0c penguins-eggs_25.9.7-1_arm64.deb
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
590e0952befc90f777d12c52e8c7ce0ac5232637f0b61bfb5d7592038f5da3c3 penguins-eggs_25.9.7-1_i386.deb
|
|
File without changes
|
|
File without changes
|
package/eui/eui-create-image.sh
CHANGED
|
File without changes
|
package/eui/eui-start.sh
CHANGED
|
File without changes
|