penguins-eggs 10.0.24 → 10.0.27

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 (57) 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 +7 -7
  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 +37 -8
  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
  57. package/scripts/love +13 -18
@@ -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.27</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.27-1_amd64-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.27-1_amd64.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.27
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>
@@ -0,0 +1,46 @@
1
+ # AlpineLinux
2
+
3
+ Sto cercando una soluzione per montare il mio `filesystem.squasfs` attraverso un apposito `initramfs-lts` custom che viene inserito nella ISO.
4
+
5
+ Dato che dobbiamo avere a disposizione squashfs ed overlay per montare il `filesystem.squash`, li ho aggiunti alle features del file utilizzato per la configurazione: `live.conf`
6
+
7
+ ```
8
+ # live conf
9
+ features="ata base ide scsi usb cdrom virtio blkid squashfs overlay ext4"
10
+ ```
11
+
12
+ La creazione di `initramfs-lts` avviene all'interno di `ovary.ts` chiamando il metodo `initrdAlpine()`:
13
+
14
+ ```
15
+ /**
16
+ * initrdAlpine()
17
+ */
18
+ async initrdAlpine() {
19
+ Utils.warning(`creating ${path.basename(this.settings.initrdImg)} Alpine on ISO/live`)
20
+ let initrdImg='initramfs-lts'
21
+ const pathConf = path.resolve(__dirname, `../../mkinitfs/live.conf`)
22
+ const sidecar = path.resolve(__dirname, `../../mkinitfs/sidecar.sh`)
23
+ await exec(`mkinitfs -c ${pathConf} -o ${this.settings.iso_work}live/${initrdImg}`, Utils.setEcho(true))
24
+ await exec(`cp ${sidecar} ${this.settings.iso_work}live/`)
25
+ }
26
+ ```
27
+
28
+ Nella stessa funzione, lo script `sidecar.sh` viene creato e viene inserito all'interno della carlella `live` della ISO.
29
+
30
+
31
+ L'avvio del live è possibile solo da sistemi BIOS, il sistema viene avviato ma `initramfs-lts` va in emergency mode, non è previsto il mount con overlayfs.
32
+
33
+ A questo punto, basta montare la ISO, digitare exit per trovarisi in emergency shell e lanciare sidecar.sh:
34
+
35
+ ```
36
+ mkdir /mnt/
37
+ mount /dev/sr0 /mnt
38
+ exit
39
+ /mnt/live/sidecar.sh
40
+ ```
41
+
42
+ Le istruzioni di `sidecar.sh` utilizzano `/sysroot` come mountpoint per il mount RW del filesystem live e, digitanto ancora `exit` per tornare all'init, verrà correttamente eseguito lo `switch_root` ed il sistema verrà avviato.
43
+
44
+ Resta da vedere se è possibile includere questo in un vero init.
45
+
46
+
@@ -0,0 +1,2 @@
1
+ # live conf
2
+ features="ata base ide scsi cdrom usb virtio ext4 blkid squashfs"
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+ MACHINE_ID=$(uuidgen)
3
+ echo "$MACHINE_ID" | tee /etc/machine-id
@@ -0,0 +1,40 @@
1
+ #!/bin/sh -e
2
+
3
+ # At the end of the boot, initram goes into emergency,
4
+ # we give the following commands:
5
+ # mkdir /mnt
6
+ # mount /dev/sr0 /mnt
7
+ # /mnt/live/sidecar.sh
8
+ #
9
+
10
+ DIRECTORY="/sysroot"
11
+ if [ -z "$(find "$DIRECTORY" -mindepth 1)" ]; then
12
+ echo "sidecar: /sysroot is again emply!"
13
+ echo " type 'exit' to return init, then run sidecar.sh again"
14
+ exit 0
15
+ fi
16
+
17
+ # Creating mountpoints
18
+ mkdir -p /media/root-ro
19
+ mkdir -p /media/root-rw
20
+
21
+ # mount filesystem squashfs on /media/root-ro
22
+ mount -t squashfs /mnt/live/filesystem.squashfs /media/root-ro
23
+
24
+ # Mount tmpfs on /media/root-rw
25
+ mount -t tmpfs root-tmpfs /media/root-rw
26
+
27
+ # Creare i punti di montaggio necessari
28
+ mkdir -p /media/root-rw/work
29
+ mkdir -p /media/root-rw/root
30
+
31
+ # mount overlayfs on //sysroot
32
+ mount -t overlay overlay -o lowerdir=/media/root-ro,upperdir=/media/root-rw/root,workdir=/media/root-rw/work /sysroot
33
+
34
+ # insert a dummy value for /etc/machine-id
35
+ echo "9350a55456f5bb96ef2fda0166a86d91" | tee /sysroot/etc/machine-id
36
+
37
+ echo "sidecar: /sysroot was mounted!"
38
+ echo " ================================"
39
+ echo " YOU CAN TYPE 'exit' TO BOOT LIVE"
40
+ echo " ================================"
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "penguins-eggs",
3
3
  "shortName": "eggs",
4
4
  "description": "A remaster system tool, compatible with Arch, Debian, Devuan, Ubuntu and others",
5
- "version": "10.0.24",
5
+ "version": "10.0.27",
6
6
  "author": "Piero Proietti",
7
7
  "bin": {
8
8
  "eggs": "./bin/run.js"
@@ -11,7 +11,7 @@
11
11
  "dependencies": {
12
12
  "@oclif/core": "^4.0.17",
13
13
  "@oclif/plugin-autocomplete": "^3.1.11",
14
- "@oclif/plugin-help": "^6.2.7",
14
+ "@oclif/plugin-help": "^6.2.8",
15
15
  "@oclif/plugin-version": "^2.2.10",
16
16
  "axios": "^1.7.3",
17
17
  "chalk": "^5.3.0",
@@ -25,12 +25,12 @@
25
25
  "node-static": "^0.7.11",
26
26
  "react": "^18.3.1",
27
27
  "shelljs": "^0.8.5",
28
- "systeminformation": "^5.22.11",
28
+ "systeminformation": "^5.23.4",
29
29
  "tftp": "^0.1.2"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@oclif/prettier-config": "^0.2.1",
33
- "@oclif/test": "^4.0.7",
33
+ "@oclif/test": "^4.0.8",
34
34
  "@types/chai": "^4.3.17",
35
35
  "@types/inquirer": "^9.0.7",
36
36
  "@types/js-yaml": "^4.0.9",
@@ -47,7 +47,7 @@
47
47
  "eslint-config-oclif-typescript": "^3.1.9",
48
48
  "eslint-config-prettier": "^9.1.0",
49
49
  "mocha": "^10.6.0",
50
- "oclif": "^4.14.13",
50
+ "oclif": "^4.14.15",
51
51
  "perrisbrewery": "^10.0.1",
52
52
  "prettier": "^3.3.3",
53
53
  "shx": "^0.3.4",
@@ -64,10 +64,12 @@
64
64
  "/bin",
65
65
  "/conf",
66
66
  "/dist",
67
+ "/dracut",
67
68
  "/eui",
68
69
  "/ipxe",
69
70
  "/manpages",
70
71
  "/mkinitcpio",
72
+ "/mkinitfs",
71
73
  "/scripts"
72
74
  ],
73
75
  "homepage": "https://penguins-eggs.net",
package/scripts/love CHANGED
@@ -1,30 +1,25 @@
1
1
  #!/bin/bash -e
2
2
 
3
-
4
3
  function press_a_key_to_continue {
5
4
  read -rp ">> Press enter to continue or CTRL-C to abort."
6
5
  }
7
6
 
8
-
9
- function kill {
10
- sudo eggs kill
11
- }
12
-
13
- function produce {
14
- sudo eggs dad --default
15
- sudo eggs tools clean
16
- sudo eggs produce
17
- }
18
-
19
7
  # main
8
+ if command -v sudo >/dev/null 2>&1; then
9
+ SUDO='sudo'
10
+ else
11
+ SUDO='doas'
12
+ fi
20
13
  clear
21
14
  echo ">>> L O V E : the simplest way to get a child!"
22
15
  echo
23
- echo "1) sudo eggs kill"
24
- echo "2) sudo eggs dad --default"
25
- echo "3) sudo eggs tools clean"
26
- echo "4) sudo eggs produce"
16
+ echo "1) $SUDO eggs kill"
17
+ echo "2) $SUDO eggs dad --default"
18
+ echo "3) $SUDO eggs tools clean"
19
+ echo "4) $SUDO eggs produce"
27
20
  echo
28
21
  press_a_key_to_continue
29
- kill
30
- produce
22
+ $SUDO eggs kill
23
+ $SUDO eggs dad --default
24
+ $SUDO eggs tools clean
25
+ $SUDO eggs produce