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.
Files changed (101) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/README.md +47 -45
  3. package/README.pdf +815 -801
  4. package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
  5. package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
  6. package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
  7. package/addons/eggs/theme/applications/install-system.desktop +0 -0
  8. package/assets/calamares/install-system.sh +0 -0
  9. package/assets/penguins-eggs.desktop +0 -0
  10. package/assets/penguins-krill.desktop +0 -0
  11. package/assets/penguins-links-add.desktop +0 -0
  12. package/assets/penguins-live-installer.desktop +0 -0
  13. package/bin/dev.js +0 -0
  14. package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
  15. package/conf/distros/bionic/calamares/calamares-modules/after-bootloader/after-bootloader.sh +0 -0
  16. package/conf/distros/bionic/calamares/calamares-modules/before-bootloader/before-bootloader.sh +0 -0
  17. package/conf/distros/bionic/calamares/calamares-modules/before-bootloader-mkdirs/before-bootloader-mkdirs.sh +0 -0
  18. package/conf/distros/bionic/calamares/calamares-modules/bug/bug.sh +0 -0
  19. package/conf/distros/bionic/calamares/calamares-modules/grubcfg/main.py +0 -0
  20. package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
  21. package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
  22. package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
  23. package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  24. package/conf/distros/openmamba/calamares/modules/users.yml +1 -1
  25. package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
  26. package/conf/distros/opensuse/calamares/settings.yml +0 -0
  27. package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
  28. package/conf/exclude.list.d/master.list +4 -0
  29. package/conf/init/unattended.sh +0 -0
  30. package/dist/classes/incubation/incubator.js +5 -1
  31. package/dist/classes/utils.d/kernel.d.ts +9 -1
  32. package/dist/classes/utils.d/kernel.js +86 -1
  33. package/dist/classes/utils.d.ts +2 -1
  34. package/dist/classes/utils.js +14 -2
  35. package/dist/commands/export/pkg.js +16 -22
  36. package/dist/commands/tools/ppa.d.ts +6 -0
  37. package/dist/commands/tools/ppa.js +73 -26
  38. package/dist/commands/update.d.ts +2 -7
  39. package/dist/commands/update.js +102 -91
  40. package/dist/krill/classes/sequence.d/bootloader.js +24 -10
  41. package/dist/krill/classes/sequence.d/bootloader_config.js +58 -8
  42. package/dist/krill/classes/sequence.d/mkfs.js +8 -4
  43. package/dist/krill/classes/sequence.d/mount_vfs.js +24 -5
  44. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +7 -5
  45. package/dist/krill/classes/sequence.js +9 -9
  46. package/dist/penguins-eggs_25.9.7-1_amd64.deb +0 -0
  47. package/dist/penguins-eggs_25.9.7-1_amd64.deb.sha256 +1 -0
  48. package/dist/penguins-eggs_25.9.7-1_arm64.deb +0 -0
  49. package/dist/penguins-eggs_25.9.7-1_arm64.deb.sha256 +1 -0
  50. package/dist/penguins-eggs_25.9.7-1_i386.deb +0 -0
  51. package/dist/penguins-eggs_25.9.7-1_i386.deb.sha256 +1 -0
  52. package/eui/eui-autostart-cinnamon.desktop +0 -0
  53. package/eui/eui-autostart-xfce.desktop +0 -0
  54. package/eui/eui-create-image.sh +0 -0
  55. package/eui/eui-start.sh +0 -0
  56. package/package.json +131 -125
  57. package/perrisbrewery/scripts/postinst +0 -0
  58. package/perrisbrewery/scripts/postrm +0 -0
  59. package/perrisbrewery/scripts/preinst +0 -0
  60. package/perrisbrewery/scripts/prerm +0 -0
  61. package/perrisbrewery/template/dependencies-bionic.yaml +6 -23
  62. package/pods/almalinux.sh +0 -0
  63. package/pods/archlinux.sh +0 -0
  64. package/pods/ci/kernel-overlay-install.sh +0 -0
  65. package/pods/ci/minimal/almalinux-container2host.sh +0 -0
  66. package/pods/ci/minimal/archlinux-container2host.sh +0 -0
  67. package/pods/ci/minimal/debian-container2host.sh +0 -0
  68. package/pods/ci/minimal/fedora-container2host.sh +0 -0
  69. package/pods/ci/minimal/manjaro-container2host.sh +0 -0
  70. package/pods/ci/minimal/opensuse-container2host.sh +0 -0
  71. package/pods/ci/penguins-eggs-execute.sh +0 -0
  72. package/pods/ci/penguins-eggs-install.sh +0 -0
  73. package/pods/ci/run +0 -0
  74. package/pods/ci/run-on-almalinux.sh +0 -0
  75. package/pods/ci/run-on-archlinux.sh +0 -0
  76. package/pods/ci/run-on-debian.sh +0 -0
  77. package/pods/ci/run-on-devuan.sh +0 -0
  78. package/pods/ci/run-on-fedora.sh +0 -0
  79. package/pods/ci/run-on-manjaro.sh +0 -0
  80. package/pods/ci/run-on-opensuse.sh +0 -0
  81. package/pods/ci/run-on-rockylinux.sh +0 -0
  82. package/pods/ci/run-on-ubuntu.sh +0 -0
  83. package/pods/debian.sh +0 -0
  84. package/pods/devuan.sh +0 -0
  85. package/pods/fedora.sh +0 -0
  86. package/pods/lmde.sh +0 -0
  87. package/pods/manjaro.sh +0 -0
  88. package/pods/opensuse.sh +0 -0
  89. package/pods/podman.command.sh +0 -0
  90. package/pods/rocky.sh +0 -0
  91. package/pods/run-build-packages-debs.sh +0 -0
  92. package/pods/run-create-debs.sh +0 -0
  93. package/pods/ubuntu.sh +0 -0
  94. package/scripts/99clean +0 -0
  95. package/scripts/adapt.sh +0 -0
  96. package/scripts/bros/waydroid-helper.sh +0 -0
  97. package/scripts/lsb_release +0 -0
  98. package/scripts/mom.sh +0 -0
  99. package/scripts/pve-live.service +0 -0
  100. package/scripts/pve-live.sh +0 -0
  101. package/scripts/resy +0 -0
@@ -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 'repos': {
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 'sourceforge': {
65
- this.getPkgFromSourceforge();
60
+ case 'Package_Manager': {
61
+ await this.getPkgFromPackageManager();
66
62
  break;
67
63
  }
68
- case 'sources': {
69
- this.getFromSources();
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 = ['abort'];
80
- choices.push('lan', 'repos', 'sourceforge', 'sources');
75
+ const choices = ['Abort'];
76
+ choices.push('LAN', 'Source', 'Package_Manager');
81
77
  const questions = [
82
78
  {
83
79
  choices,
84
- message: 'select update method',
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 === 'abort') {
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 getPkgFromRepo() {
94
+ async getPkgFromPackageManager() {
99
95
  let cmd = "";
100
- if (this.distro.familyId === "debian") {
101
- cmd = 'apt install penguins-eggs';
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 === 'alpine') {
107
- cmd = `apk add penguins-egga`;
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
- await exec(cmd);
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
- if (this.distro.familyId === 'archlinux') {
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
- const filter = `penguins-eggs-25.*.*-?-any.pkg.tar.zst`;
125
- const cmd = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/${repo}/${filter} /tmp`;
126
- await exec(cmd, { capture: true, echo: true });
127
- if (await Utils.customConfirm(`Want to install ${filter}`)) {
128
- await exec(`pacman -U /tmp/${filter}`);
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
- const filter = `penguins-eggs_25.*.*-*_${Utils.uefiArch()}.deb`;
145
- const cmd = `scp ${Tu.config.remoteUser}@${Tu.config.remoteHost}:${Tu.config.remotePathPackages}/debs/${filter} /tmp`;
146
- await exec(cmd, { capture: true, echo: true });
147
- if (await Utils.customConfirm(`Want to install ${filter}`)) {
148
- await exec(`dpkg -i /tmp/${filter}`);
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
- async getPkgFromSourceforge() {
156
- let repo = '';
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
- url = `${url}/${repo}`;
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 === "alpine") {
170
- let arch = 'x86_64';
171
- if (process.arch === 'ia32') {
172
- arch = 'i386';
173
- }
174
- repo = "alpine";
175
- url = `${url}/${repo}/$arch/${Utils.uefiArch()}`;
176
- const filter = `penguins-eggs-25.*.*-r*.apk`;
177
- cmd = `doas apk add ${filter}`;
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
- * @param aptVersion
194
- */
195
- getFromSources() {
196
- console.log('You can get a fresh installation, cloning penguins-eggs:');
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('Then, open your browser to read detailed instructions:');
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
- * grub-install: added --force per fedora family
23
- */
24
- // define grub-install --target=${target}
25
- let target = `x86_64-efi`;
26
- if (!this.efi) {
27
- target = 'i386-pc';
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
- if (process.arch === 'arm64') {
30
- target = `arm64-efi`;
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
- let cmd = `chroot ${this.installTarget} ${grubName}-install --target=${target} ${this.partitions.installationDevice} ${grubForce} ${this.toNull}`;
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/openmamba
95
+ * fedora
96
96
  */
97
97
  }
98
- else if (this.distro.familyId === 'fedora' || this.distro.familyId === 'openmamba') {
98
+ else if (this.distro.familyId === 'fedora') {
99
99
  if (this.efi) {
100
100
  try {
101
- cmd = `chroot ${this.installTarget} dnf -y install grub2 grub2-efi-x64 efibootmgr shim ${this.toNull}`;
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 = `chroot ${this.installTarget} dnf -y install grub2 grub2-pc ${this.toNull}`;
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-i386-pc grub2-x86_64-efi- efibootmgr} ${this.toNull}`;
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
- // efi
32
+ /**
33
+ * EFI
34
+ */
33
35
  if (this.efi) {
34
- await exec(`mkdosfs -F 32 -I ${this.devices.efi.name} ${this.toNull}`, this.echo);
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(`mount -o bind /sys/firmware/efi/efivars ${this.installTarget}/sys/firmware/efi/efivars ${this.toNull}`, this.echo);
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
- await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
13
- await exec(`parted --script ${installDevice} mkpart swap linux-swap 256MiB ${this.swapSize + 256}Mib`, this.echo); // sda2 swap
14
- await exec(`parted --script ${installDevice} mkpart root ext4 ${this.swapSize + 256}MiB 100%`, this.echo); // sda3 root
15
- await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
16
- await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
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. Unmounting
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
  }
@@ -0,0 +1 @@
1
+ 3930ad85d31d4d2446c15a710bc0263d2fdb86d17ab6632db42a07a5b60c7404 penguins-eggs_25.9.7-1_amd64.deb
@@ -0,0 +1 @@
1
+ a6f9943c573d294c3d67e3c475cfd04fa80b4a97a5a25304ce93eaaae0251d0c penguins-eggs_25.9.7-1_arm64.deb
@@ -0,0 +1 @@
1
+ 590e0952befc90f777d12c52e8c7ce0ac5232637f0b61bfb5d7592038f5da3c3 penguins-eggs_25.9.7-1_i386.deb
File without changes
File without changes
File without changes
package/eui/eui-start.sh CHANGED
File without changes