penguins-eggs 10.0.24 → 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.
Files changed (56) hide show
  1. package/.oclif.manifest.json +8 -8
  2. package/README.md +27 -27
  3. package/conf/distros/noble/calamares/modules/users.yml +1 -0
  4. package/conf/distros/rolling/calamares/modules/finished.yml +1 -1
  5. package/dist/classes/bleach.js +22 -15
  6. package/dist/{lib → classes}/cli-autologin.d.ts +15 -6
  7. package/dist/{lib → classes}/cli-autologin.js +82 -36
  8. package/dist/classes/compressors.d.ts +1 -1
  9. package/dist/classes/compressors.js +10 -10
  10. package/dist/classes/daddy.d.ts +6 -6
  11. package/dist/classes/daddy.js +67 -67
  12. package/dist/classes/distro.js +206 -202
  13. package/dist/classes/families/alpine.js +2 -2
  14. package/dist/classes/incubation/incubator.js +1 -1
  15. package/dist/classes/keyboards.d.ts +1 -1
  16. package/dist/classes/keyboards.js +16 -1
  17. package/dist/classes/locales.js +20 -9
  18. package/dist/classes/ovary.d.ts +11 -11
  19. package/dist/classes/ovary.js +109 -93
  20. package/dist/classes/pacman.js +3 -5
  21. package/dist/classes/pxe.d.ts +6 -6
  22. package/dist/classes/pxe.js +42 -42
  23. package/dist/classes/utils.d.ts +5 -1
  24. package/dist/classes/utils.js +20 -17
  25. package/dist/classes/xdg.js +15 -14
  26. package/dist/classes/yolk.js +1 -1
  27. package/dist/commands/cuckoo.js +1 -1
  28. package/dist/commands/dad.d.ts +1 -1
  29. package/dist/commands/dad.js +5 -7
  30. package/dist/commands/produce.js +1 -1
  31. package/dist/commands/syncfrom.d.ts +1 -1
  32. package/dist/commands/syncfrom.js +1 -1
  33. package/dist/components/information.js +5 -10
  34. package/dist/components/summary.js +2 -1
  35. package/dist/interfaces/i-excludes.d.ts +2 -2
  36. package/dist/interfaces/i-pxe.d.ts +15 -15
  37. package/dist/krill/modules/machine-id.js +1 -1
  38. package/dist/krill/modules/network-cfg.js +1 -1
  39. package/dist/krill/modules/packages.js +22 -0
  40. package/dist/krill/sequence.d.ts +1 -1
  41. package/dist/krill/sequence.js +3 -3
  42. package/dracut/README.md +84 -0
  43. package/dracut/dracut.conf +3 -0
  44. package/dracut/dracut.conf.d/90overlayfs.conf +5 -0
  45. package/dracut/dracut.conf.d/99custom.conf +4 -0
  46. package/dracut/install-dracut-99custom +1 -0
  47. package/dracut/usr/lib/dracut/modules.d/99custom/init-live.sh +4 -0
  48. package/dracut/usr/lib/dracut/modules.d/99custom/module-setup.sh +15 -0
  49. package/dracut/usr/lib/dracut/modules.d/99custom/mount-live.sh +25 -0
  50. package/manpages/doc/man/eggs.1.gz +0 -0
  51. package/manpages/doc/man/eggs.html +22 -28
  52. package/mkinitfs/README.md +46 -0
  53. package/mkinitfs/live.conf +2 -0
  54. package/mkinitfs/machine-id-gen.sh +3 -0
  55. package/mkinitfs/sidecar.sh +40 -0
  56. package/package.json +7 -5
@@ -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
- * SDDM
76
- */
77
- if (Pacman.packageIsInstalled('sddm')) {
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
- * GDM/GDM3
120
- * in manjaro è /etc/gdm/custom.conf
121
- */
122
- if (Pacman.packageIsInstalled('gdm') || Pacman.packageIsInstalled('gdm3')) {
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/
@@ -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';
@@ -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'];
@@ -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>;
@@ -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
- if (!fs.existsSync(fileCustom)) {
37
- console.log(chalk.red(`Custom configuration file: ${flags.custom} not found!`));
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);
@@ -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
- let pendrive = flags.pendrive !== undefined ? Number(flags.pendrive) : null;
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 (initType === 'sysvinit') {
98
- if (Utils.isOpenRc()) {
99
- initType = 'openrc';
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),
@@ -6,9 +6,9 @@
6
6
  * license: MIT
7
7
  */
8
8
  export interface IExcludes {
9
- static: boolean;
10
- homes: boolean;
11
9
  home: boolean;
10
+ homes: boolean;
11
+ static: boolean;
12
12
  usr: boolean;
13
13
  var: boolean;
14
14
  }
@@ -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
- op: (op: any) => IPacket;
32
- htype: (htype: any) => IPacket;
35
+ giaddr: (giaddr: string) => IPacket;
33
36
  hlen: (hlen: any) => IPacket;
34
37
  hops: (hops: any) => IPacket;
35
- xid: (xid: any) => IPacket;
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
- fname: (fname: any) => IPacket;
44
- options: (options: any) => IPacket;
44
+ xid: (xid: any) => IPacket;
45
45
  }
@@ -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) {
@@ -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 '../lib/cli-autologin.js';
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';
@@ -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 '../lib/cli-autologin.js';
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.76;
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') {
@@ -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,3 @@
1
+ # PUT YOUR CONFIG IN separate files
2
+ # in /etc/dracut.conf.d named "<name>.conf"
3
+ # SEE man dracut.conf(5) for options
@@ -0,0 +1,5 @@
1
+ # /etc/dracut.conf.d/90overlayfs.conf
2
+
3
+ # force_drivers+=" overlay "
4
+ # dracut[E]: Module 'overlayfs' cannot be installed.
5
+ add_dracutmodules+=" overlayfs "
@@ -0,0 +1,4 @@
1
+ # /etc/dracut/conf.d/99custom.conf
2
+
3
+ # Includi il modulo custom e overlay
4
+ add_dracutmodules+=" custom "
@@ -0,0 +1 @@
1
+ sudo cp usr/* /usr/ -R
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ # Esempio di inizializzazioni aggiuntive
4
+ echo "Inizializzazioni aggiuntive possono essere aggiunte qui"
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+
3
+ check() {
4
+ return 0
5
+ }
6
+
7
+ depends() {
8
+ echo "shutdown"
9
+ return 0
10
+ }
11
+
12
+ install() {
13
+ inst_hook cmdline 90 "$moddir/mount-live.sh"
14
+ inst_hook pre-mount 50 "$moddir/init-live.sh"
15
+ }
@@ -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.24</h1>
9
+ <h1>eggs(1) -- the reproductive system of penguins: eggs v10.0.26</h1>
10
10
  <h1>SYNOPSIS</h1>
11
- <p>Install Debian families (debian/devuan/ubuntu)</p>
12
- <pre><code>$ sudo dpkg -i penguins-eggs_10.0.24-1_amd64.deb
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>Install Arch families (Arch, manjaro Linux)</p>
15
- <p>Arch from AUR</p>
16
- <pre><code>$ git clone https://aur.archlinux.org/penguins-eggs.git
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>Arch from development repo</p>
21
- <pre><code>$ git clone https://github.com/pieroproietti/penguins-eggs-arch
22
- $ cd penguins-eggs-arch
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 from development repo</p>
26
- <pre><code>$ git clone https://github.com/pieroproietti/penguins-eggs-manjaro
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.24
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 --max
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>Help yorself signing on telegram https://t.me/penguins_eggs or in facebook group page or asking me.</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>eggs is a console utility, in active development, who let you to remaster your system and redistribuite it as iso image.</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] [-h] [-f &#x3C;value>] [-v]
201
+ $ eggs dad [-c] [-d] [-f &#x3C;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 rsync
698
+ exclude.list
705
699
 
706
- /usr/lib/penguins-eggs (deb package)
707
- here eggs is installed
700
+ /usr/lib/penguins-eggs
701
+ where eggs is installed
708
702
  </code></pre>
709
703
  <h1>TROUBLES</h1>
710
704
  <h2>BUGS</h2>