penguins-eggs 10.0.22 → 10.0.26
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 +8 -8
- package/README.md +27 -27
- package/addons/eggs/theme/livecd/grub.main.cfg +11 -5
- package/addons/eggs/theme/livecd/isolinux.main.cfg +10 -12
- package/conf/distros/devel/README.md +3 -0
- package/conf/distros/focal/README.md +3 -0
- package/conf/distros/jammy/README.md +1 -1
- package/conf/distros/noble/calamares/calamares-modules/.keepit +0 -0
- package/conf/distros/{focal/calamares/modules → noble/calamares/modules/focal-jammy}/fstab.yml +2 -2
- package/conf/distros/{focal/calamares/modules → noble/calamares/modules/focal-jammy}/mount.yml +2 -2
- package/conf/distros/{focal/calamares/modules → noble/calamares/modules/focal-jammy}/users.yml +2 -2
- package/conf/distros/noble/calamares/modules/mount.yml +1 -0
- package/conf/distros/noble/calamares/modules/partition.yml +2 -2
- package/conf/distros/noble/calamares/modules/users.yml +1 -0
- package/conf/distros/noble/calamares/modules/welcome.yml +1 -1
- package/conf/distros/noble/calamares/settings.yml +8 -8
- package/conf/distros/rolling/calamares/modules/finished.yml +1 -1
- package/dist/classes/bleach.js +22 -15
- package/dist/{lib → classes}/cli-autologin.d.ts +15 -6
- package/dist/{lib → classes}/cli-autologin.js +82 -36
- package/dist/classes/compressors.d.ts +1 -1
- package/dist/classes/compressors.js +10 -10
- package/dist/classes/daddy.d.ts +6 -6
- package/dist/classes/daddy.js +67 -67
- package/dist/classes/distro.js +206 -202
- package/dist/classes/families/alpine.js +2 -2
- package/dist/classes/incubation/distros/{focal.d.ts → noble.d.ts} +1 -1
- package/dist/classes/incubation/distros/{focal.js → noble.js} +1 -1
- package/dist/classes/incubation/incubator.js +5 -5
- package/dist/classes/keyboards.js +15 -0
- package/dist/classes/locales.js +25 -7
- package/dist/classes/ovary.d.ts +11 -11
- package/dist/classes/ovary.js +109 -93
- package/dist/classes/pacman.js +21 -19
- package/dist/classes/pxe.d.ts +6 -6
- package/dist/classes/pxe.js +42 -42
- package/dist/classes/utils.d.ts +5 -1
- package/dist/classes/utils.js +20 -17
- package/dist/classes/xdg.js +15 -14
- package/dist/classes/yolk.js +1 -1
- package/dist/commands/cuckoo.js +1 -1
- package/dist/commands/dad.d.ts +1 -1
- package/dist/commands/dad.js +5 -7
- package/dist/commands/produce.js +1 -1
- package/dist/commands/syncfrom.d.ts +1 -1
- package/dist/commands/syncfrom.js +1 -1
- package/dist/components/information.js +5 -10
- package/dist/components/summary.js +2 -1
- package/dist/interfaces/i-excludes.d.ts +2 -2
- package/dist/interfaces/i-pxe.d.ts +15 -15
- package/dist/krill/modules/add-user.js +10 -6
- package/dist/krill/modules/machine-id.js +1 -1
- package/dist/krill/modules/network-cfg.js +1 -1
- package/dist/krill/modules/packages.js +22 -0
- package/dist/krill/sequence.d.ts +1 -1
- package/dist/krill/sequence.js +3 -3
- package/dracut/README.md +84 -0
- package/dracut/dracut.conf +3 -0
- package/dracut/dracut.conf.d/90overlayfs.conf +5 -0
- package/dracut/dracut.conf.d/99custom.conf +4 -0
- package/dracut/install-dracut-99custom +1 -0
- package/dracut/usr/lib/dracut/modules.d/99custom/init-live.sh +4 -0
- package/dracut/usr/lib/dracut/modules.d/99custom/module-setup.sh +15 -0
- package/dracut/usr/lib/dracut/modules.d/99custom/mount-live.sh +25 -0
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +22 -28
- package/mkinitfs/README.md +46 -0
- package/mkinitfs/live.conf +2 -0
- package/mkinitfs/machine-id-gen.sh +3 -0
- package/mkinitfs/sidecar.sh +40 -0
- package/package.json +7 -5
- package/conf/distros/devel/calamares/calamares-modules/automirror/automirror.yml +0 -17
- package/conf/distros/devel/calamares/calamares-modules/automirror/main.py +0 -168
- package/conf/distros/devel/calamares/calamares-modules/automirror/module.yml +0 -7
- package/conf/distros/devel/calamares/modules/_packages.yml +0 -16
- package/conf/distros/devel/calamares/modules/after_bootloader_context.yml +0 -18
- package/conf/distros/devel/calamares/modules/automirror.yml +0 -16
- package/conf/distros/devel/calamares/modules/before_bootloader_context.yml +0 -24
- package/conf/distros/devel/calamares/modules/bootloader.yml +0 -33
- package/conf/distros/devel/calamares/modules/finished.yml +0 -3
- package/conf/distros/devel/calamares/modules/fstab.yml +0 -2
- package/conf/distros/devel/calamares/modules/grubcfg.yml +0 -3
- package/conf/distros/devel/calamares/modules/locale.yml +0 -8
- package/conf/distros/devel/calamares/modules/machineid.yml +0 -8
- package/conf/distros/devel/calamares/modules/mount.yml +0 -38
- package/conf/distros/devel/calamares/modules/partition.yml +0 -8
- package/conf/distros/devel/calamares/modules/shellprocess_add386arch.yml +0 -5
- package/conf/distros/devel/calamares/modules/shellprocess_bug-LP#1829805.yml +0 -5
- package/conf/distros/devel/calamares/modules/unpackfs.yml +0 -5
- package/conf/distros/devel/calamares/modules/users.yml +0 -23
- package/conf/distros/devel/calamares/modules/welcome.yml +0 -26
- package/conf/distros/devel/calamares/settings.yml +0 -72
- package/conf/distros/focal/calamares/calamares-modules/automirror/automirror.yml +0 -17
- package/conf/distros/focal/calamares/calamares-modules/automirror/main.py +0 -168
- package/conf/distros/focal/calamares/calamares-modules/automirror/module.yml +0 -7
- package/conf/distros/focal/calamares/modules/after_bootloader_context.yml +0 -19
- package/conf/distros/focal/calamares/modules/automirror.yml +0 -6
- package/conf/distros/focal/calamares/modules/before_bootloader_context.yml +0 -19
- package/conf/distros/focal/calamares/modules/before_bootloader_mkdirs_context.yml +0 -11
- package/conf/distros/focal/calamares/modules/bootloader.yml +0 -34
- package/conf/distros/focal/calamares/modules/finished.yml +0 -4
- package/conf/distros/focal/calamares/modules/grubcfg.yml +0 -5
- package/conf/distros/focal/calamares/modules/locale.yml +0 -9
- package/conf/distros/focal/calamares/modules/machineid.yml +0 -9
- package/conf/distros/focal/calamares/modules/partition.yml +0 -10
- package/conf/distros/focal/calamares/modules/shellprocess_add386arch.yml +0 -6
- package/conf/distros/focal/calamares/modules/shellprocess_bug-LP#1829805.yml +0 -5
- package/conf/distros/focal/calamares/modules/shellprocess_logs.yml +0 -6
- package/conf/distros/focal/calamares/modules/unpackfs.yml +0 -7
- package/conf/distros/focal/calamares/modules/welcome.yml +0 -26
- package/conf/distros/focal/calamares/settings.yml +0 -72
- package/conf/distros/noble/calamares/modules/before_bootloader_mkdirs_context.yml +0 -10
- package/conf/distros/noble/calamares/modules/displaymanager.yml +0 -9
- package/conf/distros/noble/calamares/modules/shellprocess_logs.yml +0 -5
- /package/conf/distros/noble/calamares/modules/{automirror.yml → _automirror.yml} +0 -0
- /package/conf/distros/noble/calamares/modules/{before_bootloader_context.yml → _before_bootloader_context.yml} +0 -0
- /package/conf/distros/{devel/calamares/modules/before_bootloader_mkdirs_context.yml → noble/calamares/modules/_before_bootloader_mkdirs_context.yml} +0 -0
- /package/conf/distros/{devel → noble}/calamares/modules/_displaymanager.yml +0 -0
- /package/conf/distros/noble/calamares/modules/{oemid.yml → _oemid.yml} +0 -0
- /package/conf/distros/noble/calamares/modules/{pkgselect_context.yml → _pkgselect_context.yml} +0 -0
- /package/conf/distros/noble/calamares/modules/{pkgselect_snap_context.yml → _pkgselect_snap_context.yml} +0 -0
- /package/conf/distros/{devel/calamares/modules/shellprocess_logs.yml → noble/calamares/modules/_shellprocess_logs.yml} +0 -0
- /package/conf/distros/noble/calamares/modules/{users.conf.oem → _users.conf.oem} +0 -0
package/dist/classes/xdg.js
CHANGED
|
@@ -27,6 +27,7 @@ export default class Xdg {
|
|
|
27
27
|
* @param chroot
|
|
28
28
|
*/
|
|
29
29
|
static async autologin(olduser, newuser, chroot = '/') {
|
|
30
|
+
//console.log("old: " + olduser, "new: " + newuser, "chroot: " + chroot)
|
|
30
31
|
if (Pacman.isInstalledGui()) {
|
|
31
32
|
/**
|
|
32
33
|
* SLIM & SLIMSKI
|
|
@@ -51,11 +52,11 @@ export default class Xdg {
|
|
|
51
52
|
const regexDefaultUser = new RegExp(`default_user\\s*${olduser}`, 'g');
|
|
52
53
|
content = content.replace(regexDefaultUser, `default_user ${newuser}`);
|
|
53
54
|
fs.writeFileSync(`${chroot}/etc/${slimConf}`, content, 'utf8');
|
|
55
|
+
/**
|
|
56
|
+
* LIGHTDM
|
|
57
|
+
*/
|
|
54
58
|
}
|
|
55
|
-
|
|
56
|
-
* LIGHTDM
|
|
57
|
-
*/
|
|
58
|
-
if (Pacman.packageIsInstalled('lightdm')) {
|
|
59
|
+
else if (Pacman.packageIsInstalled('lightdm')) {
|
|
59
60
|
const dc = `${chroot}/etc/lightdm/`;
|
|
60
61
|
const files = fs.readdirSync(dc);
|
|
61
62
|
for (const elem of files) {
|
|
@@ -71,10 +72,10 @@ export default class Xdg {
|
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
else if (Pacman.packageIsInstalled('sddm')) {
|
|
76
|
+
/**
|
|
77
|
+
* SDDM
|
|
78
|
+
*/
|
|
78
79
|
let sddmChanged = false;
|
|
79
80
|
const curFile = `${chroot}/etc/sddm.conf`;
|
|
80
81
|
if (fs.existsSync(curFile)) {
|
|
@@ -115,11 +116,11 @@ export default class Xdg {
|
|
|
115
116
|
fs.writeFileSync(curFile, content, 'utf8');
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
else if (Pacman.packageIsInstalled('gdm') || Pacman.packageIsInstalled('gdm3')) {
|
|
120
|
+
/**
|
|
121
|
+
* GDM/GDM3
|
|
122
|
+
* in manjaro è /etc/gdm/custom.conf
|
|
123
|
+
*/
|
|
123
124
|
let gdmConf = `${chroot}/etc/gdm3`;
|
|
124
125
|
if (Pacman.packageIsInstalled('gdm3')) {
|
|
125
126
|
gdmConf = `${chroot}/etc/gdm3`;
|
|
@@ -198,7 +199,7 @@ export default class Xdg {
|
|
|
198
199
|
await rsyncIfExist(`/home/${user}/.config`, '/etc/skel', verbose);
|
|
199
200
|
// use .cinnamon NOT cinnamon/
|
|
200
201
|
// removed because it's not necessary
|
|
201
|
-
//await rsyncIfExist(`/home/${user}/.cinnamon`, '/etc/skel', verbose)
|
|
202
|
+
// await rsyncIfExist(`/home/${user}/.cinnamon`, '/etc/skel', verbose)
|
|
202
203
|
}
|
|
203
204
|
else if (Pacman.packageIsInstalled('plasma-desktop')) {
|
|
204
205
|
// use .kde NOT .kde/
|
package/dist/classes/yolk.js
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* email: piero.proietti@gmail.com
|
|
6
6
|
* license: MIT
|
|
7
7
|
*/
|
|
8
|
+
import yaml from 'js-yaml';
|
|
8
9
|
import fs from 'node:fs';
|
|
9
10
|
import shx from 'shelljs';
|
|
10
|
-
import yaml from 'js-yaml';
|
|
11
11
|
import { exec } from '../lib/utils.js';
|
|
12
12
|
import Bleach from './bleach.js';
|
|
13
13
|
import Pacman from './pacman.js';
|
package/dist/commands/cuckoo.js
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
import { Command, Flags } from '@oclif/core';
|
|
9
9
|
import network from '../classes/network.js';
|
|
10
10
|
import Pxe from '../classes/pxe.js';
|
|
11
|
-
import Utils from '../classes/utils.js';
|
|
12
11
|
import Settings from '../classes/settings.js';
|
|
12
|
+
import Utils from '../classes/utils.js';
|
|
13
13
|
export default class Cuckoo extends Command {
|
|
14
14
|
static description = 'PXE start with proxy-dhcp';
|
|
15
15
|
static examples = ['sudo eggs cuckoo'];
|
package/dist/commands/dad.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ export default class Dad extends Command {
|
|
|
12
12
|
static flags: {
|
|
13
13
|
clean: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
default: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
-
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
16
15
|
file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
17
17
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
18
|
};
|
|
19
19
|
run(): Promise<void>;
|
package/dist/commands/dad.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Command, Flags } from '@oclif/core';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
|
-
import fs from 'fs';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
11
|
import Daddy from '../classes/daddy.js';
|
|
12
12
|
import Utils from '../classes/utils.js';
|
|
13
13
|
import { exec } from '../lib/utils.js';
|
|
@@ -17,8 +17,8 @@ export default class Dad extends Command {
|
|
|
17
17
|
static flags = {
|
|
18
18
|
clean: Flags.boolean({ char: 'c', description: 'remove old configuration before to create' }),
|
|
19
19
|
default: Flags.boolean({ char: 'd', description: 'reset to default values' }),
|
|
20
|
-
help: Flags.help({ char: 'h' }),
|
|
21
20
|
file: Flags.string({ char: 'f', description: 'use a file configuration custom' }),
|
|
21
|
+
help: Flags.help({ char: 'h' }),
|
|
22
22
|
verbose: Flags.boolean({ char: 'v' })
|
|
23
23
|
};
|
|
24
24
|
async run() {
|
|
@@ -32,11 +32,9 @@ export default class Dad extends Command {
|
|
|
32
32
|
if (flags.clean || flags.default || flags.mine) {
|
|
33
33
|
await exec('rm /etc/penguins-eggs.d -rf');
|
|
34
34
|
}
|
|
35
|
-
if (isCustom) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
process.exit(1);
|
|
39
|
-
}
|
|
35
|
+
if (isCustom && !fs.existsSync(fileCustom)) {
|
|
36
|
+
console.log(chalk.red(`Custom configuration file: ${flags.custom} not found!`));
|
|
37
|
+
process.exit(1);
|
|
40
38
|
}
|
|
41
39
|
const daddy = new Daddy();
|
|
42
40
|
daddy.helpMe(reset, isCustom, fileCustom, flags.verbose);
|
package/dist/commands/produce.js
CHANGED
|
@@ -53,7 +53,7 @@ export default class Produce extends Command {
|
|
|
53
53
|
async run() {
|
|
54
54
|
Utils.titles(this.id + ' ' + this.argv);
|
|
55
55
|
const { flags } = await this.parse(Produce);
|
|
56
|
-
|
|
56
|
+
const pendrive = flags.pendrive === undefined ? null : Number(flags.pendrive);
|
|
57
57
|
if (Utils.isRoot()) {
|
|
58
58
|
/**
|
|
59
59
|
* ADDONS dei vendors
|
|
@@ -21,9 +21,9 @@ export default class Syncfrom extends Command {
|
|
|
21
21
|
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
22
22
|
};
|
|
23
23
|
echo: {};
|
|
24
|
+
luksFile: string;
|
|
24
25
|
luksName: string;
|
|
25
26
|
luksDevice: string;
|
|
26
|
-
luksFile: string;
|
|
27
27
|
luksMountpoint: string;
|
|
28
28
|
remix: IRemix;
|
|
29
29
|
rootDir: string;
|
|
@@ -25,9 +25,9 @@ export default class Syncfrom extends Command {
|
|
|
25
25
|
verbose: Flags.boolean({ char: 'v', description: 'verbose' })
|
|
26
26
|
};
|
|
27
27
|
echo = {};
|
|
28
|
+
luksFile = '';
|
|
28
29
|
luksName = 'luks-volume';
|
|
29
30
|
luksDevice = `/dev/mapper/${this.luksName}`;
|
|
30
|
-
luksFile = '';
|
|
31
31
|
luksMountpoint = `/tmp/mnt/${this.luksName}`;
|
|
32
32
|
remix = {};
|
|
33
33
|
rootDir = '/';
|
|
@@ -85,19 +85,14 @@ export default async function information(verbose = false) {
|
|
|
85
85
|
const CLI = () => (React.createElement(Text, { color: "cyan" }, "krill"));
|
|
86
86
|
const GUI = () => (React.createElement(Text, { color: "cyan" }, "calamares"));
|
|
87
87
|
let initType = '';
|
|
88
|
-
if (Utils.isSysvinit()) {
|
|
89
|
-
initType = 'sysvinit';
|
|
90
|
-
}
|
|
91
88
|
if (Utils.isSystemd()) {
|
|
92
|
-
if (initType === 'sysvinit') {
|
|
93
|
-
initType += '/';
|
|
94
|
-
}
|
|
95
89
|
initType = 'systemd';
|
|
96
90
|
}
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
91
|
+
else if (Utils.isOpenRc()) {
|
|
92
|
+
initType = 'openrc';
|
|
93
|
+
}
|
|
94
|
+
else if (Utils.isSysvinit()) {
|
|
95
|
+
initType = 'sysvinit';
|
|
101
96
|
}
|
|
102
97
|
const Checks = () => (React.createElement(Box, { borderStyle: "round", marginRight: 2, flexDirection: "row" },
|
|
103
98
|
React.createElement(Box, { marginRight: 2 },
|
|
@@ -10,7 +10,7 @@ import Title from './title.js';
|
|
|
10
10
|
import Steps from './steps.js';
|
|
11
11
|
import yaml from 'js-yaml';
|
|
12
12
|
import fs from 'fs';
|
|
13
|
-
import { Text, Box } from 'ink';
|
|
13
|
+
import { Text, Box, Newline } from 'ink';
|
|
14
14
|
export default function Summary({ username = '', password = '', rootPassword = '', hostname = '', region = '', zone = '', language = '', keyboardModel = '', keyboardLayout = '', installationDevice = '', filesystemType, message = '' }) {
|
|
15
15
|
let productName = 'unknown';
|
|
16
16
|
let version = 'x.x.x';
|
|
@@ -38,6 +38,7 @@ export default function Summary({ username = '', password = '', rootPassword = '
|
|
|
38
38
|
React.createElement(Box, null,
|
|
39
39
|
React.createElement(Text, null, "Installing "),
|
|
40
40
|
React.createElement(Text, { color: "green" }, productName)),
|
|
41
|
+
React.createElement(Newline, null),
|
|
41
42
|
React.createElement(Box, null,
|
|
42
43
|
React.createElement(Text, null),
|
|
43
44
|
React.createElement(Text, { color: "green" }, username),
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
export interface ITftpOptions {
|
|
2
|
+
denyPUT: boolean;
|
|
2
3
|
host: string;
|
|
3
4
|
port: number;
|
|
4
5
|
root: string;
|
|
5
|
-
denyPUT: boolean;
|
|
6
6
|
}
|
|
7
7
|
export interface IDhcpOptions {
|
|
8
|
-
subnet: string;
|
|
9
|
-
host: string;
|
|
10
|
-
tftpserver: string;
|
|
11
8
|
bios_filename: string;
|
|
12
9
|
efi32_filename: string;
|
|
13
10
|
efi64_filename: string;
|
|
11
|
+
host: string;
|
|
12
|
+
subnet: string;
|
|
13
|
+
tftpserver: string;
|
|
14
14
|
}
|
|
15
15
|
export interface IDhcpd {
|
|
16
16
|
constructor(opts: IDhcpOptions): void;
|
|
17
|
-
pre_init: (pkt: IPacket) => void;
|
|
18
17
|
discover: (pkt: IPacket) => void;
|
|
19
|
-
request: (pkt: IPacket) => void;
|
|
20
18
|
inform: (pkt: IPacket) => void;
|
|
19
|
+
pre_init: (pkt: IPacket) => void;
|
|
21
20
|
proxy_request: (pkt: IPacket) => IPacket;
|
|
21
|
+
request: (pkt: IPacket) => void;
|
|
22
22
|
}
|
|
23
23
|
export interface IProxy {
|
|
24
24
|
bind: (port: number, addr: string, cb: any) => IPacket;
|
|
@@ -27,19 +27,19 @@ export interface IServer {
|
|
|
27
27
|
bind: (port: number, addr: string, cb: any) => IPacket;
|
|
28
28
|
}
|
|
29
29
|
export interface IPacket {
|
|
30
|
+
chaddr: (chaddr: any) => IPacket;
|
|
31
|
+
ciaddr: (ciaddr: string) => IPacket;
|
|
32
|
+
flags: (flags: any) => IPacket;
|
|
33
|
+
fname: (fname: any) => IPacket;
|
|
30
34
|
getRequestedIPAddress: () => string;
|
|
31
|
-
|
|
32
|
-
htype: (htype: any) => IPacket;
|
|
35
|
+
giaddr: (giaddr: string) => IPacket;
|
|
33
36
|
hlen: (hlen: any) => IPacket;
|
|
34
37
|
hops: (hops: any) => IPacket;
|
|
35
|
-
|
|
38
|
+
htype: (htype: any) => IPacket;
|
|
39
|
+
op: (op: any) => IPacket;
|
|
40
|
+
options: (options: any) => IPacket;
|
|
36
41
|
secs: (secs: any) => IPacket;
|
|
37
|
-
flags: (flags: any) => IPacket;
|
|
38
|
-
ciaddr: (ciaddr: string) => IPacket;
|
|
39
42
|
siaddr: (siaddr: string) => IPacket;
|
|
40
|
-
giaddr: (giaddr: string) => IPacket;
|
|
41
|
-
chaddr: (chaddr: any) => IPacket;
|
|
42
43
|
sname: (sname: any) => IPacket;
|
|
43
|
-
|
|
44
|
-
options: (options: any) => IPacket;
|
|
44
|
+
xid: (xid: any) => IPacket;
|
|
45
45
|
}
|
|
@@ -19,22 +19,26 @@ import { exec } from '../../lib/utils.js';
|
|
|
19
19
|
* @param homePhone
|
|
20
20
|
*/
|
|
21
21
|
export default async function addUser(name = 'live', password = 'evolution', fullName = '', roomNumber = '', workPhone = '', homePhone = '') {
|
|
22
|
-
//
|
|
22
|
+
// adduser user
|
|
23
23
|
let cmd = `chroot ${this.installTarget} adduser ${name} --home /home/${name} --shell /bin/bash --disabled-password --gecos "${fullName},${roomNumber},${workPhone},${homePhone}" ${this.toNull}`;
|
|
24
24
|
if (this.distro.familyId === 'archlinux') {
|
|
25
25
|
cmd = `chroot ${this.installTarget} useradd --create-home --shell /bin/bash ${name} ${this.toNull}`;
|
|
26
26
|
}
|
|
27
27
|
await exec(cmd, this.echo);
|
|
28
|
+
// chapasswd user
|
|
28
29
|
cmd = `echo ${name}:${password} | chroot ${this.installTarget} chpasswd ${this.toNull}`;
|
|
29
30
|
await exec(cmd, this.echo);
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
if (this.distro.familyId === 'archlinux'
|
|
33
|
-
|
|
31
|
+
// sudo ot wheel
|
|
32
|
+
let group = 'sudo';
|
|
33
|
+
if (this.distro.familyId === 'archlinux' ||
|
|
34
|
+
this.distro.familyId === 'alpine') {
|
|
35
|
+
group = 'wheel';
|
|
34
36
|
}
|
|
37
|
+
cmd = `chroot ${this.installTarget} usermod -aG ${group} ${name} ${this.toNull}`;
|
|
38
|
+
await exec(cmd, this.echo);
|
|
39
|
+
// autologin
|
|
35
40
|
try {
|
|
36
41
|
await exec(cmd, this.echo);
|
|
37
|
-
// check or create group: autologin
|
|
38
42
|
if (this.distro.familyId === 'archlinux') {
|
|
39
43
|
await exec(`chroot ${this.installTarget} getent group autologin || groupadd autologin`);
|
|
40
44
|
await exec(`chroot ${this.installTarget} gpasswd -a ${this.settings.config.user_opt} autologin`);
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
8
|
*/
|
|
9
9
|
import fs from 'node:fs';
|
|
10
|
-
import { exec } from '../../lib/utils.js';
|
|
11
10
|
import Distro from '../../classes/distro.js';
|
|
11
|
+
import { exec } from '../../lib/utils.js';
|
|
12
12
|
/**
|
|
13
13
|
* On Ubuntu
|
|
14
14
|
* /etc/machine-id must exist to be re-created
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* license: MIT
|
|
7
7
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
8
|
*/
|
|
9
|
-
import fs from 'fs';
|
|
9
|
+
import fs from 'node:fs';
|
|
10
10
|
import Pacman from '../../classes/pacman.js';
|
|
11
11
|
import Systemctl from '../../classes/systemctl.js';
|
|
12
12
|
import Utils from '../../classes/utils.js';
|
|
@@ -34,6 +34,28 @@ export default async function packages() {
|
|
|
34
34
|
packagesToInstall = operation.try_install;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
// Alpine
|
|
38
|
+
if (this.distro.familyId === "alpine") {
|
|
39
|
+
packages.backend = "apk";
|
|
40
|
+
if (packagesToRemove != undefined && packagesToRemove.length > 0) {
|
|
41
|
+
let cmd = `chroot ${this.installTarget} apk del `;
|
|
42
|
+
for (const elem of packagesToRemove) {
|
|
43
|
+
if (Pacman.packageIsInstalled(elem)) {
|
|
44
|
+
cmd += elem + ' ';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
48
|
+
}
|
|
49
|
+
if (packagesToInstall != undefined && packagesToInstall.length > 0) {
|
|
50
|
+
let cmd = `chroot ${this.installTarget} apk add `;
|
|
51
|
+
for (const elem of packagesToInstall) {
|
|
52
|
+
cmd += elem + ' ';
|
|
53
|
+
}
|
|
54
|
+
const update = `chroot ${this.installTarget} apk update ${this.toNull}`;
|
|
55
|
+
await exec(update, this.echo);
|
|
56
|
+
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
37
59
|
if (packages.backend === 'apt') {
|
|
38
60
|
// Debian/Devuan/Ubuntu
|
|
39
61
|
if (packagesToRemove != undefined && packagesToRemove.length > 0) {
|
package/dist/krill/sequence.d.ts
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
*/
|
|
45
45
|
import { IRemix, IDistro, INet } from '../interfaces/index.js';
|
|
46
46
|
import Settings from '../classes/settings.js';
|
|
47
|
-
import CliAutologin from '../
|
|
47
|
+
import CliAutologin from '../classes/cli-autologin.js';
|
|
48
48
|
import { IInstaller, IDevices } from '../interfaces/index.js';
|
|
49
49
|
import { ILocation, IKeyboard, IPartitions, IUsers } from '../interfaces/i-krill.js';
|
|
50
50
|
import partition from './modules/partition.js';
|
package/dist/krill/sequence.js
CHANGED
|
@@ -14,7 +14,7 @@ import Finished from '../components/finished.js';
|
|
|
14
14
|
import fs from 'fs';
|
|
15
15
|
import yaml from 'js-yaml';
|
|
16
16
|
import Utils from '../classes/utils.js';
|
|
17
|
-
import CliAutologin from '../
|
|
17
|
+
import CliAutologin from '../classes/cli-autologin.js';
|
|
18
18
|
import Pacman from '../classes/pacman.js';
|
|
19
19
|
import { installer } from '../classes/incubation/installer.js';
|
|
20
20
|
import Xdg from '../classes/xdg.js';
|
|
@@ -416,11 +416,11 @@ export default class Sequence {
|
|
|
416
416
|
catch (error) {
|
|
417
417
|
await Utils.pressKeyToExit(JSON.stringify(error));
|
|
418
418
|
}
|
|
419
|
-
// autologin
|
|
419
|
+
// autologin GUI
|
|
420
420
|
if (Pacman.isInstalledGui()) {
|
|
421
421
|
try {
|
|
422
422
|
message = "Autologin GUI";
|
|
423
|
-
percent = 0.
|
|
423
|
+
percent = 0.78;
|
|
424
424
|
if (this.users.autologin) {
|
|
425
425
|
await Xdg.autologin(await Utils.getPrimaryUser(), this.users.username, this.installTarget);
|
|
426
426
|
if (this.distro.distroLike === 'Arch') {
|
package/dracut/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# dracut
|
|
2
|
+
E' solo un tentativo...:
|
|
3
|
+
|
|
4
|
+
* copiare `99custom` in `/usr/lib/dracut/modules.d`
|
|
5
|
+
* installare dracut in Alpine
|
|
6
|
+
* modificare initrdAlpine in ovary.ts
|
|
7
|
+
* create modulo 99custom
|
|
8
|
+
* create script 99custom/module-setup.sh
|
|
9
|
+
* create script 99custom/mount-live.sh
|
|
10
|
+
* create script 99custom/init-live.sh
|
|
11
|
+
|
|
12
|
+
## 99custom
|
|
13
|
+
```
|
|
14
|
+
mkdir -p /usr/lib/dracut/modules.d/99custom
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 99custom/module-setup.sh
|
|
18
|
+
```
|
|
19
|
+
#!/bin/bash
|
|
20
|
+
|
|
21
|
+
check() {
|
|
22
|
+
return 0
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
depends() {
|
|
26
|
+
echo "shutdown"
|
|
27
|
+
return 0
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
install() {
|
|
31
|
+
inst_hook cmdline 90 "$moddir/mount-live.sh"
|
|
32
|
+
inst_hook pre-mount 50 "$moddir/init-live.sh"
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 99custom/mount-live.sh
|
|
37
|
+
```
|
|
38
|
+
#!/bin/sh
|
|
39
|
+
|
|
40
|
+
mount_live() {
|
|
41
|
+
# Trova il dispositivo CD-ROM
|
|
42
|
+
for device in $(ls /dev/sr*); do
|
|
43
|
+
if mount -r $device /mnt; then
|
|
44
|
+
break
|
|
45
|
+
fi
|
|
46
|
+
done
|
|
47
|
+
|
|
48
|
+
# Monta il filesystem squashfs in RO
|
|
49
|
+
if [ -e /mnt/live/filesystem.squashfs ]; then
|
|
50
|
+
mkdir -p /run/rootro
|
|
51
|
+
mount -t squashfs -o ro /mnt/live/filesystem.squashfs /run/rootro
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
# Monta il filesystem union (overlay)
|
|
55
|
+
if [ -d /run/rootro ]; then
|
|
56
|
+
mkdir -p /run/root-rw /run/overlay
|
|
57
|
+
mount -t tmpfs -o rw,noatime,mode=755 tmpfs /run/root-rw
|
|
58
|
+
mount -t overlay -o lowerdir=/run/rootro,upperdir=/run/root-rw,workdir=/run/overlay overlay /sysroot
|
|
59
|
+
fi
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
mount_live
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 99custom/init-live.sh
|
|
66
|
+
```
|
|
67
|
+
#!/bin/sh
|
|
68
|
+
|
|
69
|
+
# Esempio di inizializzazioni aggiuntive
|
|
70
|
+
echo "Inizializzazioni aggiuntive possono essere aggiunte qui"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
# Comando in ovary
|
|
74
|
+
```
|
|
75
|
+
let initrdImg = 'initramfs-lts'
|
|
76
|
+
// dracut
|
|
77
|
+
const pathConf = path.resolve(__dirname, `../../dracut/dracut.conf.d`)
|
|
78
|
+
await exec(`dracut --confdir ${pathConf} ${this.settings.iso_work}live/${initrdImg}`, Utils.setEcho(true))
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
# TESTING
|
|
82
|
+
sudo ./install-dracut-99-custom
|
|
83
|
+
sudo dracut --confdir dracut/dracut.conf.d initramfs-dummy
|
|
84
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
sudo cp usr/* /usr/ -R
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
mount_live() {
|
|
4
|
+
# Trova il dispositivo CD-ROM
|
|
5
|
+
for device in $(ls /dev/sr*); do
|
|
6
|
+
if mount -r $device /mnt; then
|
|
7
|
+
break
|
|
8
|
+
fi
|
|
9
|
+
done
|
|
10
|
+
|
|
11
|
+
# Monta il filesystem squashfs in RO
|
|
12
|
+
if [ -e /mnt/live/filesystem.squashfs ]; then
|
|
13
|
+
mkdir -p /run/rootro
|
|
14
|
+
mount -t squashfs -o ro /mnt/live/filesystem.squashfs /run/rootro
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
# Monta il filesystem union (overlay)
|
|
18
|
+
if [ -d /run/rootro ]; then
|
|
19
|
+
mkdir -p /run/root-rw /run/overlay
|
|
20
|
+
mount -t tmpfs -o rw,noatime,mode=755 tmpfs /run/root-rw
|
|
21
|
+
mount -t overlay -o lowerdir=/run/rootro,upperdir=/run/root-rw,workdir=/run/overlay overlay /sysroot
|
|
22
|
+
fi
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
mount_live
|
|
Binary file
|
|
@@ -6,31 +6,28 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
7
|
</head>
|
|
8
8
|
<body>
|
|
9
|
-
<h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.
|
|
9
|
+
<h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.26</h1>
|
|
10
10
|
<h1>SYNOPSIS</h1>
|
|
11
|
-
<p>
|
|
12
|
-
<
|
|
11
|
+
<p>eggs is a console utility, in active development, who let you to remaster your system and redistribuite it as live ISO image.</p>
|
|
12
|
+
<h1>INSTALL</h1>
|
|
13
|
+
<p>AlpineLinux</p>
|
|
14
|
+
<pre><code>$ doas apk add penguins-eggs@testing
|
|
13
15
|
</code></pre>
|
|
14
|
-
<p>
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
$ cd penguins-eggs.git
|
|
18
|
-
$ makepkg -si
|
|
16
|
+
<p>Arch</p>
|
|
17
|
+
<pre><code>$ sudo pacman -S penguins-eggs
|
|
18
|
+
$ sudo pacman -U penguins-eggs_10.0.26-1_i386-1-x86_64.pkg.tar.zst
|
|
19
19
|
</code></pre>
|
|
20
|
-
<p>
|
|
21
|
-
<pre><code>$
|
|
22
|
-
$
|
|
23
|
-
$ makepkg -si
|
|
20
|
+
<p>Debian/Devuan/Ubuntu</p>
|
|
21
|
+
<pre><code>$ sudo apt install penguins-eggs
|
|
22
|
+
$ sudo dpkg -i penguins-eggs_10.0.26-1_i386.deb
|
|
24
23
|
</code></pre>
|
|
25
|
-
<p>Manjaro
|
|
26
|
-
<pre><code>$
|
|
27
|
-
$ cd penguins-eggs-manjaro
|
|
28
|
-
$ makepkg -si
|
|
24
|
+
<p>Manjaro</p>
|
|
25
|
+
<pre><code>$ sudo pamac install penguins-eggs
|
|
29
26
|
</code></pre>
|
|
30
27
|
<h1>USAGE</h1>
|
|
31
28
|
<pre><code>$ eggs (-v|--version|version)
|
|
32
29
|
|
|
33
|
-
penguins-eggs/10.0.
|
|
30
|
+
penguins-eggs/10.0.26
|
|
34
31
|
$ eggs --help [COMMAND]
|
|
35
32
|
|
|
36
33
|
USAGE
|
|
@@ -39,19 +36,16 @@ $ eggs COMMAND
|
|
|
39
36
|
<p>Most of the commands of eggs need sudo, but there are exceptions for export, info and mom.</p>
|
|
40
37
|
<p>examples:</p>
|
|
41
38
|
<pre><code>sudo eggs produce
|
|
42
|
-
sudo eggs produce --
|
|
43
|
-
sudo eggs produce --clone
|
|
39
|
+
sudo eggs produce --pendrive --clone
|
|
44
40
|
sudo eggs kill
|
|
45
41
|
</code></pre>
|
|
46
|
-
<p>There are too two interactive helpers:</p>
|
|
42
|
+
<p>There are too two interactive helpers, probably you already know:</p>
|
|
47
43
|
<pre><code>eggs mom
|
|
48
44
|
sudo eggs dad
|
|
49
|
-
sudo eggs dad -d
|
|
50
45
|
</code></pre>
|
|
51
|
-
<p>
|
|
46
|
+
<p>We have a comprehensive guide at https://penguins-eggs.net, help yorself signing on telegram https://t.me/penguins_eggs on facebook group, or writing me.</p>
|
|
52
47
|
<h1>DESCRIPTION</h1>
|
|
53
|
-
<p>
|
|
54
|
-
<p>The scope of this project is to implement the process of remastering your version of Linux, generate it as ISO image to burn on a CD/DVD or copy to a usb key to boot your system. You can easily install your live system with gui installer (calamares) or eggs CLI installer (krill).</p>
|
|
48
|
+
<p>The scope of this project is to implement the process of remastering your version of Linux, generate it as ISO image, to burn on a CD/DVD or copy to a usb key, to boot your system live. Of course, You can easily install your live image using GUI installer (calamares) or CLI installer (krill) always included.</p>
|
|
55
49
|
<h1>COMMANDS</h1>
|
|
56
50
|
<ul>
|
|
57
51
|
<li><a href="#eggs-adapt"><code>eggs adapt</code></a></li>
|
|
@@ -204,7 +198,7 @@ EXAMPLES
|
|
|
204
198
|
<h2><code>eggs dad</code></h2>
|
|
205
199
|
<p>ask help from daddy - TUI configuration helper</p>
|
|
206
200
|
<pre><code>USAGE
|
|
207
|
-
$ eggs dad [-c] [-d] [-
|
|
201
|
+
$ eggs dad [-c] [-d] [-f <value>] [-h] [-v]
|
|
208
202
|
|
|
209
203
|
FLAGS
|
|
210
204
|
-c, --clean remove old configuration before to create
|
|
@@ -701,10 +695,10 @@ EXAMPLES
|
|
|
701
695
|
all eggs configurations are here
|
|
702
696
|
|
|
703
697
|
/etc/penguins-eggs.d/exclude.list
|
|
704
|
-
exclude.list
|
|
698
|
+
exclude.list
|
|
705
699
|
|
|
706
|
-
/usr/lib/penguins-eggs
|
|
707
|
-
|
|
700
|
+
/usr/lib/penguins-eggs
|
|
701
|
+
where eggs is installed
|
|
708
702
|
</code></pre>
|
|
709
703
|
<h1>TROUBLES</h1>
|
|
710
704
|
<h2>BUGS</h2>
|