penguins-eggs 10.0.37 → 10.0.40

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 (71) hide show
  1. package/.oclif.manifest.json +1 -1
  2. package/README.md +31 -30
  3. package/conf/derivatives.yaml +3 -2
  4. package/conf/distros/opensuse/README.md +3 -0
  5. package/conf/distros/opensuse/calamares/calamares-modules/bootloader-config/bootloader-config.sh +40 -0
  6. package/conf/distros/opensuse/calamares/calamares-modules/bootloader-config/module.yml +9 -0
  7. package/conf/distros/opensuse/calamares/calamares-modules/cleanup/cleanup.sh +13 -0
  8. package/conf/distros/opensuse/calamares/calamares-modules/cleanup/module.yml +9 -0
  9. package/conf/distros/opensuse/calamares/modules/bootloader.yml +57 -0
  10. package/conf/distros/opensuse/calamares/modules/displaymanager.yml +23 -0
  11. package/conf/distros/opensuse/calamares/modules/finished.yml +5 -0
  12. package/conf/distros/opensuse/calamares/modules/fstab.yml +12 -0
  13. package/conf/distros/opensuse/calamares/modules/locale.yml +98 -0
  14. package/conf/distros/opensuse/calamares/modules/luksopenswaphookcfg.yml +5 -0
  15. package/conf/distros/opensuse/calamares/modules/machineid.yml +17 -0
  16. package/conf/distros/opensuse/calamares/modules/mount.yml +56 -0
  17. package/conf/distros/opensuse/calamares/modules/packages.yml +6 -0
  18. package/conf/distros/opensuse/calamares/modules/partition.yml +242 -0
  19. package/conf/distros/opensuse/calamares/modules/removeuser.yml +15 -0
  20. package/conf/distros/opensuse/calamares/modules/unpackfs.yml +6 -0
  21. package/conf/distros/opensuse/calamares/modules/users.yml +18 -0
  22. package/conf/distros/opensuse/calamares/modules/welcome.yml +19 -0
  23. package/conf/distros/opensuse/calamares/settings.yml +57 -0
  24. package/conf/distros/rolling/calamares/modules/finished.yml +2 -1
  25. package/conf/distros/rolling/calamares/modules/partition.yml +1 -1
  26. package/conf/distros/rolling/calamares/settings.yml +3 -1
  27. package/dist/classes/bleach.js +5 -1
  28. package/dist/classes/cli-autologin.js +33 -27
  29. package/dist/classes/distro.js +48 -47
  30. package/dist/classes/families/fedora.js +1 -1
  31. package/dist/classes/incubation/fisherman.d.ts +1 -1
  32. package/dist/classes/incubation/fisherman.js +1 -1
  33. package/dist/classes/incubation/incubator.js +8 -0
  34. package/dist/classes/locales.js +1 -1
  35. package/dist/classes/ovary.d.ts +2 -6
  36. package/dist/classes/ovary.js +25 -32
  37. package/dist/classes/pacman.js +11 -11
  38. package/dist/classes/tailor.d.ts +11 -14
  39. package/dist/classes/tailor.js +184 -247
  40. package/dist/classes/utils.js +1 -1
  41. package/dist/commands/wardrobe/wear.js +3 -0
  42. package/dist/components/finished.js +5 -4
  43. package/dist/components/install.js +12 -8
  44. package/dist/interfaces/i-materia.d.ts +9 -14
  45. package/dist/krill/modules/add-user.js +9 -12
  46. package/dist/krill/modules/bootloader-config.js +15 -0
  47. package/dist/krill/modules/bootloader.js +2 -2
  48. package/dist/krill/modules/del-live-user.js +3 -2
  49. package/dist/krill/modules/fstab.js +2 -0
  50. package/dist/krill/modules/initramfs.js +10 -0
  51. package/dist/krill/modules/locale.js +5 -5
  52. package/dist/krill/modules/m-keyboard.js +3 -16
  53. package/dist/krill/modules/machine-id.js +3 -3
  54. package/dist/krill/modules/mkfs.d.ts +2 -0
  55. package/dist/krill/modules/mkfs.js +2 -0
  56. package/dist/krill/modules/unpackfs.js +3 -2
  57. package/dist/krill/sequence.d.ts +9 -6
  58. package/dist/krill/sequence.js +162 -259
  59. package/dracut/dracut.conf.d/01-live.conf +2 -1
  60. package/manpages/doc/man/eggs.1.gz +0 -0
  61. package/manpages/doc/man/eggs.html +4 -4
  62. package/mkinitcpio/arch/README.md +48 -0
  63. package/mkinitcpio/arch/mkinitcpio.conf +4 -3
  64. package/mkinitfs/initramfs-init.in +4 -3
  65. package/package.json +12 -9
  66. package/syslinux/chain.c32 +0 -0
  67. package/syslinux/isolinux.bin +0 -0
  68. package/syslinux/ldlinux.c32 +0 -0
  69. package/syslinux/libcom32.c32 +0 -0
  70. package/syslinux/libutil.c32 +0 -0
  71. package/syslinux/vesamenu.c32 +0 -0
@@ -0,0 +1,242 @@
1
+ # # Alpine 3.18
2
+ # partition.yaml
3
+ ---
4
+ # This setting specifies the mount point of the EFI system partition. Some
5
+ # distributions (Fedora, Debian, Manjaro, etc.) use /boot/efi, others (KaOS,
6
+ # etc.) use just /boot.
7
+ efiSystemPartition: "/boot/efi"
8
+
9
+ # This optional setting specifies the size of the EFI system partition.
10
+ # If nothing is specified, the default size of 300MiB will be used.
11
+ # efiSystemPartitionSize: 300M
12
+
13
+ # In autogenerated partitioning, allow the user to select a swap size?
14
+ # If there is exactly one choice, no UI is presented, and the user
15
+ # cannot make a choice -- this setting is used. If there is more than
16
+ # one choice, a UI is presented.
17
+ #
18
+ # Legacy settings *neverCreateSwap* and *ensureSuspendToDisk* correspond
19
+ # to values of *userSwapChoices* as follows:
20
+ # - *neverCreateSwap* is true, means [none]
21
+ # - *neverCreateSwap* is false, *ensureSuspendToDisk* is false, [small]
22
+ # - *neverCreateSwap* is false, *ensureSuspendToDisk* is true, [suspend]
23
+ #
24
+ # Autogenerated swap sizes are as follows:
25
+ # - *suspend*: Swap is always at least total memory size,
26
+ # and up to 4GiB RAM follows the rule-of-thumb 2 * memory;
27
+ # from 4GiB to 8 GiB it stays steady at 8GiB, and over 8 GiB memory
28
+ # swap is the size of main memory.
29
+ # - *small*: Follows the rules above, but Swap is at
30
+ # most 8GiB, and no more than 10% of available disk.
31
+ # In both cases, a fudge factor (usually 10% extra) is applied so that there
32
+ # is some space for administrative overhead (e.g. 8 GiB swap will allocate
33
+ # 8.8GiB on disk in the end).
34
+ #
35
+ # If *file* is enabled here, make sure to have the *fstab* module
36
+ # as well (later in the exec phase) so that the swap file is
37
+ # actually created.
38
+ userSwapChoices:
39
+ - none # Create no swap, use no swap
40
+ - small # Up to 4GB
41
+ - suspend # At least main memory size
42
+ # - reuse # Re-use existing swap, but don't create any (unsupported right now)
43
+ - file # To swap file instead of partition
44
+
45
+ # This optional setting specifies the name of the swap partition (see
46
+ # PARTLABEL; gpt only; requires KPMCore >= 4.2.0).
47
+ # If nothing is specified, the partition name is left unset.
48
+ # swapPartitionName: swap
49
+
50
+ # LEGACY SETTINGS (these will generate a warning)
51
+ # ensureSuspendToDisk: true
52
+ # neverCreateSwap: false
53
+
54
+ # Correctly draw nested (e.g. logical) partitions as such.
55
+ drawNestedPartitions: false
56
+
57
+ # Show/hide partition labels on manual partitioning page.
58
+ alwaysShowPartitionLabels: true
59
+
60
+ # Allow manual partitioning.
61
+ #
62
+ # When set to false, this option hides the "Manual partitioning" button,
63
+ # limiting the user's choice to "Erase", "Replace" or "Alongside".
64
+ # This can be useful when using a custom partition layout we don't want
65
+ # the user to modify.
66
+ #
67
+ # If nothing is specified, manual partitioning is enabled.
68
+ #allowManualPartitioning: true
69
+
70
+ # Initial selection on the Choice page
71
+ #
72
+ # There are four radio buttons (in principle: erase, replace, alongside, manual),
73
+ # and you can pick which of them, if any, is initially selected. For most
74
+ # installers, "none" is the right choice: it makes the user pick something specific,
75
+ # rather than accidentally being able to click past an important choice (in particular,
76
+ # "erase" is a dangerous choice).
77
+ #
78
+ # The default is "none"
79
+ #
80
+ initialPartitioningChoice: none
81
+ #
82
+ # Similarly, some of the installation choices may offer a choice of swap;
83
+ # the available choices depend on *userSwapChoices*, above, and this
84
+ # setting can be used to pick a specific one.
85
+ #
86
+ # The default is "none" (no swap) if that is one of the enabled options, otherwise
87
+ # one of the items from the options.
88
+ initialSwapChoice: none
89
+
90
+ # Default partition table type, used when a "erase" disk is made.
91
+ #
92
+ # When erasing a disk, a new partition table is created on disk.
93
+ # In other cases, e.g. Replace and Alongside, as well as when using
94
+ # manual partitioning, this partition table exists already on disk
95
+ # and it is left unmodified.
96
+ #
97
+ # Suggested values: gpt, msdos
98
+ # If nothing is specified, Calamares defaults to "gpt" if system is
99
+ # efi or "msdos".
100
+ #
101
+ # Names are case-sensitive and defined by KPMCore.
102
+ # defaultPartitionTableType: msdos
103
+
104
+ # Requirement for partition table type
105
+ #
106
+ # Restrict the installation on disks that match the type of partition
107
+ # tables that are specified.
108
+ #
109
+ # Possible values: msdos, gpt. Names are case-sensitive and defined by KPMCore.
110
+ #
111
+ # If nothing is specified, Calamares defaults to both "msdos" and "gpt".
112
+ #
113
+ # requiredPartitionTableType: gpt
114
+ # requiredPartitionTableType:
115
+ # - msdos
116
+ # - gpt
117
+
118
+ # Default filesystem type, used when a "new" partition is made.
119
+ #
120
+ # When replacing a partition, the existing filesystem inside the
121
+ # partition is retained. In other cases, e.g. Erase and Alongside,
122
+ # as well as when using manual partitioning and creating a new
123
+ # partition, this filesystem type is pre-selected. Note that
124
+ # editing a partition in manual-creation mode will not automatically
125
+ # change the filesystem type to this default value -- it is not
126
+ # creating a new partition.
127
+ #
128
+ # Suggested values: ext2, ext3, ext4, reiser, xfs, jfs, btrfs
129
+ # If nothing is specified, Calamares defaults to "ext4".
130
+ #
131
+ # Names are case-sensitive and defined by KPMCore.
132
+ defaultFileSystemType: "ext4"
133
+
134
+ # Selectable filesystem type, used when "erase" is done.
135
+ #
136
+ # When erasing the disk, the *defaultFileSystemType* is used (see
137
+ # above), but it is also possible to give users a choice:
138
+ # list suitable filesystems here. A drop-down is provided
139
+ # to pick which is the filesystems will be used.
140
+ #
141
+ # The value *defaultFileSystemType* is added to this list (with a warning)
142
+ # if not present; the default pick is the *defaultFileSystemType*.
143
+ #
144
+ # If not specified at all, uses *defaultFileSystemType* without a
145
+ # warning (this matches traditional no-choice-available behavior best).
146
+ availableFileSystemTypes: ["ext4"]
147
+
148
+ # Show/hide LUKS related functionality in automated partitioning modes.
149
+ # Disable this if you choose not to deploy early unlocking support in GRUB2
150
+ # and/or your distribution's initramfs solution.
151
+ #
152
+ # BIG FAT WARNING:
153
+ #
154
+ # This option is unsupported, as it cuts out a crucial security feature.
155
+ # Disabling LUKS and shipping Calamares without a correctly configured GRUB2
156
+ # and initramfs is considered suboptimal use of the Calamares software. The
157
+ # Calamares team will not provide user support for any potential issue that
158
+ # may arise as a consequence of setting this option to false.
159
+ # It is strongly recommended that system integrators put in the work to support
160
+ # LUKS unlocking support in GRUB2 and initramfs/dracut/mkinitcpio/etc.
161
+ # For more information on setting up GRUB2 for Calamares with LUKS, see
162
+ # https://github.com/calamares/calamares/wiki/Deploy-LUKS
163
+ #
164
+ # If nothing is specified, LUKS is enabled in automated modes.
165
+ #enableLuksAutomatedPartitioning: true
166
+
167
+ # Partition layout.
168
+ #
169
+ # This optional setting specifies a custom partition layout.
170
+ #
171
+ # If nothing is specified, the default partition layout is a single partition
172
+ # for root that uses 100% of the space and uses the filesystem defined by
173
+ # defaultFileSystemType.
174
+ #
175
+ # Note: the EFI system partition is prepend automatically to the layout if
176
+ # needed; the swap partition is appended to the layout if enabled (small of
177
+ # suspend).
178
+ #
179
+ # Otherwise, the partition layout is defined as follow:
180
+ #
181
+ # partitionLayout:
182
+ # - name: "rootfs"
183
+ # type: "4f68bce3-e8cd-4db1-96e7-fbcaf984b709"
184
+ # filesystem: "ext4"
185
+ # mountPoint: "/"
186
+ # size: 20%
187
+ # minSize: 500M
188
+ # maxSize: 10G
189
+ # attributes: 0xffff000000000003
190
+ # - name: "home"
191
+ # type = "933ac7e1-2eb4-4f13-b844-0e14e2aef915"
192
+ # filesystem: "ext4"
193
+ # mountPoint: "/home"
194
+ # size: 3G
195
+ # minSize: 1.5G
196
+ # features:
197
+ # 64bit: false
198
+ # casefold: true
199
+ # - name: "data"
200
+ # filesystem: "fat32"
201
+ # mountPoint: "/data"
202
+ # features:
203
+ # sector-size: 4096
204
+ # sectors-per-cluster: 128
205
+ # size: 100%
206
+ #
207
+ # There can be any number of partitions, each entry having the following attributes:
208
+ # - name: filesystem label
209
+ # and
210
+ # partition name (gpt only; since KPMCore 4.2.0)
211
+ # - uuid: partition uuid (optional parameter; gpt only; requires KPMCore >= 4.2.0)
212
+ # - type: partition type (optional parameter; gpt only; requires KPMCore >= 4.2.0)
213
+ # - attributes: partition attributes (optional parameter; gpt only; requires KPMCore >= 4.2.0)
214
+ # - filesystem: filesystem type (optional parameter)
215
+ # - if not set at all, treat as "unformatted"
216
+ # - if "unformatted", no filesystem will be created
217
+ # - if "unknown" (or an unknown FS name, like "elephant") then the
218
+ # default filesystem type, or the user's choice, will be applied instead
219
+ # of "unknown" (e.g. the user might pick ext4, or xfs).
220
+ # - mountPoint: partition mount point (optional parameter; not mounted if unset)
221
+ # - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB)
222
+ # or
223
+ # % of the available drive space if a '%' is appended to the value
224
+ # - minSize: minimum partition size (optional parameter)
225
+ # - maxSize: maximum partition size (optional parameter)
226
+ # - features: filesystem features (optional parameter; requires KPMCore >= 4.2.0)
227
+ # name: boolean or integer or string
228
+
229
+ # Checking for available storage
230
+ #
231
+ # This overlaps with the setting of the same name in the welcome module's
232
+ # requirements section. If nothing is set by the welcome module, this
233
+ # value is used instead. It is still a problem if there is no required
234
+ # size set at all, and the replace and resize options will not be offered
235
+ # if no required size is set.
236
+ #
237
+ # The value is in Gibibytes (GiB).
238
+ #
239
+ # BIG FAT WARNING: except for OEM-phase-0 use, you should be using
240
+ # the welcome module, **and** configure this value in
241
+ # `welcome.conf`, not here.
242
+ requiredStorage: 6.0
@@ -0,0 +1,15 @@
1
+ # # Alpine 3.18
2
+ # removeuser
3
+ # SPDX-FileCopyrightText: no
4
+ # SPDX-License-Identifier: CC0-1.0
5
+ #
6
+ # Removes a single user (with userdel) from the system.
7
+ # This is typically used in OEM setups or if the live user
8
+ # spills into the target system.
9
+ #
10
+ # The module never fails; if userdel fails, this is logged
11
+ # but the module still reports success and installation / setup
12
+ # continues as normal.
13
+ ---
14
+ # Username in the target system to be removed.
15
+ username: {{username}}
@@ -0,0 +1,6 @@
1
+ # # Alpine 3.18
2
+ ---
3
+ unpack:
4
+ - source: {{source}}
5
+ sourcefs: "squashfs"
6
+ destination: ""
@@ -0,0 +1,18 @@
1
+ ---
2
+ userGroup: users
3
+ defaultGroups:
4
+ - cdrom
5
+ - floppy
6
+ - sudo
7
+ - audio
8
+ - dip
9
+ - video
10
+ - plugdev
11
+ - netdev
12
+ - lpadmin
13
+ - scanner
14
+ - bluetooth
15
+ autologinGroup: autologin
16
+ sudoersGroup: sudo
17
+ setRootPassword: true
18
+ doReusePassword: false
@@ -0,0 +1,19 @@
1
+ # Alpine 3.18
2
+ # welcome
3
+ ---
4
+ showSupportUrl: true
5
+ showKnownIssuesUrl: true
6
+ showReleaseNotesUrl: true
7
+
8
+ requirements:
9
+ requiredStorage: 10
10
+ requiredRam: 1.0
11
+ check:
12
+ - storage
13
+ - ram
14
+ - power
15
+ - root
16
+ required:
17
+ - storage
18
+ - ram
19
+ - root
@@ -0,0 +1,57 @@
1
+ # Alpine 3.18
2
+ ---
3
+ # "local" is LIBDIR/calamares/modules with settings in SHARE/calamares/modules
4
+ modules-search: [ local, /usr/lib/calamares/modules ]
5
+
6
+ oem-setup: false
7
+ disable-cancel: false
8
+ disable-cancel-during-exec: false
9
+ quit-at-end: false
10
+
11
+ instances:
12
+ - id: cleanup
13
+ module: shellprocess
14
+ config: shellprocess_cleanup.conf
15
+
16
+ sequence:
17
+ # Phase 1 - prepare.
18
+ - show:
19
+ - welcome
20
+ - locale
21
+ - keyboard
22
+ - partition
23
+ - users
24
+ - summary
25
+
26
+ # Phase 2 - install.
27
+ - exec:
28
+ - partition
29
+ - mount
30
+ - unpackfs
31
+ - machineid
32
+ - fstab
33
+ - locale
34
+ - keyboard
35
+ - users
36
+ - displaymanager
37
+ - networkcfg
38
+ - hwclock
39
+ - services-openrc
40
+ - bootloader-config
41
+ - grubcfg
42
+ - bootloader
43
+ - packages
44
+ - luksbootkeyfile
45
+ - plymouthcfg
46
+ - mkinitfs
47
+ - removeuser
48
+ - umount
49
+
50
+ # Phase 3 - postinstall.
51
+ - show:
52
+ - finished
53
+
54
+ # branding
55
+ branding: {{branding}}
56
+ prompt-install: false
57
+ dont-chroot: false
@@ -31,7 +31,8 @@
31
31
  # This is new behavior.
32
32
  #
33
33
  # The three combinations of legacy values are still supported.
34
- restartNowMode: user-unchecked
34
+ #restartNowMode: user-unchecked
35
+ restartNowEnabled: true
35
36
  restartNowChecked: true
36
37
  # If the checkbox is shown, and the checkbox is checked, then when
37
38
  # Calamares exits from the finished-page it will run this command.
@@ -143,7 +143,7 @@ defaultFileSystemType: "ext4"
143
143
  #
144
144
  # If not specified at all, uses *defaultFileSystemType* without a
145
145
  # warning (this matches traditional no-choice-available behavior best).
146
- availableFileSystemTypes: ["ext4"]
146
+ availableFileSystemTypes: ["ext4","btrfs"]
147
147
 
148
148
  # Show/hide LUKS related functionality in automated partitioning modes.
149
149
  # Disable this if you choose not to deploy early unlocking support in GRUB2
@@ -40,7 +40,7 @@ sequence:
40
40
  {{hasDisplaymanager}}displaymanager
41
41
  - networkcfg
42
42
  - hwclock
43
- - grubcfg
43
+ # grubcfg
44
44
  - bootloader
45
45
  - packages
46
46
  - luksbootkeyfile
@@ -87,3 +87,5 @@ prompt-install: false
87
87
  # YAML: boolean.
88
88
  dont-chroot: false
89
89
 
90
+ # preso da debian
91
+ quit-at-end: false
@@ -42,7 +42,11 @@ export default class Bleach {
42
42
  await exec('apk cache purge', echo);
43
43
  break;
44
44
  }
45
- case 'suse': {
45
+ case 'fedora': {
46
+ await exec(`dnf clean all`, echo);
47
+ break;
48
+ }
49
+ case 'opensuse': {
46
50
  await exec(`zypper clean`, echo);
47
51
  break;
48
52
  }
@@ -96,8 +96,8 @@ export default class CliAutologin {
96
96
  content += lines[i] + '\n';
97
97
  }
98
98
  fs.writeFileSync(inittab, content, 'utf-8');
99
- await this.addIssue(distro, version, user, userPasswd, rootPasswd, chroot);
100
99
  await this.addMotd(distro, version, user, userPasswd, rootPasswd, chroot);
100
+ await this.addIssue(distro, version, user, userPasswd, rootPasswd, chroot);
101
101
  }
102
102
  }
103
103
  /**
@@ -111,13 +111,17 @@ export default class CliAutologin {
111
111
  */
112
112
  async addIssue(distro, version, user, userPasswd, rootPasswd, chroot = '/') {
113
113
  const fileIssue = `${chroot}/etc/issue`;
114
- this.msgRemove(fileIssue);
115
- const eggsIssue = fs.readFileSync(fileIssue, 'utf8');
116
- // eggsIssue += startMessage + '\n'
117
- // eggsIssue += `This is a ${distro}/${version} system created by Penguins' eggs.\n`
118
- // eggsIssue += 'You can login with user: ' + chalk.bold(user) + ' and password: ' + chalk.bold(userPasswd) + ', root password: ' + chalk.bold(rootPasswd) + '\n'
119
- // eggsIssue += stopMessage + '\n'
120
- fs.writeFileSync(fileIssue, eggsIssue);
114
+ if (fs.existsSync(fileIssue)) {
115
+ if (!fs.lstatSync(fileIssue).isSymbolicLink()) {
116
+ this.msgRemove(fileIssue);
117
+ let content = fs.readFileSync(fileIssue, 'utf8');
118
+ content += startMessage + '\n';
119
+ content += `This is a ${distro}/${version} system created by Penguins' eggs.\n`;
120
+ content += 'You can login with user: ' + chalk.bold(user) + ' and password: ' + chalk.bold(userPasswd) + ', root password: ' + chalk.bold(rootPasswd) + '\n';
121
+ content += stopMessage + '\n';
122
+ fs.writeFileSync(fileIssue, content);
123
+ }
124
+ }
121
125
  }
122
126
  /**
123
127
  *
@@ -148,11 +152,10 @@ export default class CliAutologin {
148
152
  eggsMotd += Utils.flag() + '\n';
149
153
  eggsMotd += 'You are logged as: ' + chalk.bold(user) + ' your password is: ' + chalk.bold(userPasswd) + ', root password: ' + chalk.bold(rootPasswd) + '\n\n';
150
154
  eggsMotd += 'install : ' + chalk.bold(installer) + '\n';
151
- eggsMotd += ' unattended : ' + chalk.bold('sudo eggs install --unattended # us configuration') + '\n';
152
- eggsMotd += ' chroot : ' + chalk.bold('sudo eggs install --chroot # chroot on installed before to end') + '\n';
153
- eggsMotd += 'PXE server : ' + chalk.bold('sudo eggs cuckoo') + '\n';
154
- eggsMotd += '(*) to get your custom unattended configuration: fork https://github.com/pieroproietti/penguins-wardrobe' + '\n';
155
- eggsMotd += ' create your configuration in /config and ask for a Pull Request' + '\n';
155
+ eggsMotd += ' --unattended : ' + chalk.bold('sudo eggs install --unattended') + '\n';
156
+ eggsMotd += ' --chroot : ' + chalk.bold('sudo eggs install --chroot') + '\n';
157
+ eggsMotd += ' --help : ' + chalk.bold('sudo eggs install --help') + '\n';
158
+ eggsMotd += '\n';
156
159
  eggsMotd += stopMessage + '\n';
157
160
  fs.writeFileSync(fileMotd, eggsMotd);
158
161
  }
@@ -170,7 +173,6 @@ export default class CliAutologin {
170
173
  if (fs.existsSync(dirOverride)) {
171
174
  shx.exec(`rm ${dirOverride} -rf`);
172
175
  }
173
- // shx.exec(`systemctl revert getty@.service`)
174
176
  this.msgRemove(`${chroot}/etc/motd`);
175
177
  this.msgRemove(`${chroot}/etc/issue`);
176
178
  }
@@ -210,8 +212,10 @@ export default class CliAutologin {
210
212
  }
211
213
  content += lines[i] + '\n';
212
214
  }
215
+ // motd
213
216
  fs.writeFileSync(inittab, content, 'utf-8');
214
217
  this.msgRemove(`${chroot}/etc/motd`);
218
+ // issue
215
219
  this.msgRemove(`${chroot}/etc/issue`);
216
220
  } // to add: openrc and runit for Devuan
217
221
  }
@@ -221,21 +225,23 @@ export default class CliAutologin {
221
225
  */
222
226
  async msgRemove(path) {
223
227
  if (fs.existsSync(path)) {
224
- const rows = fs.readFileSync(path, 'utf8').split('\n');
225
- let cleaned = '';
226
- let remove = false;
227
- for (const row of rows) {
228
- if (row.includes(startMessage)) {
229
- remove = true;
230
- }
231
- if (!remove && row !== '') {
232
- cleaned += row + '\n';
233
- }
234
- if (row.includes(stopMessage)) {
235
- remove = false;
228
+ if (!fs.lstatSync(path).isSymbolicLink()) {
229
+ const rows = fs.readFileSync(path, 'utf8').split('\n');
230
+ let cleaned = '';
231
+ let remove = false;
232
+ for (const row of rows) {
233
+ if (row.includes(startMessage)) {
234
+ remove = true;
235
+ }
236
+ if (!remove && row !== '') {
237
+ cleaned += row + '\n';
238
+ }
239
+ if (row.includes(stopMessage)) {
240
+ remove = false;
241
+ }
236
242
  }
243
+ fs.writeFileSync(path, cleaned, 'utf-8');
237
244
  }
238
- fs.writeFileSync(path, cleaned, 'utf-8');
239
245
  }
240
246
  }
241
247
  }
@@ -38,6 +38,7 @@ class Distro {
38
38
  * Costruttore
39
39
  */
40
40
  constructor() {
41
+ let found = false;
41
42
  this.bugReportUrl = 'https://github.com-pieroproietti/penguins-eggs/issue';
42
43
  this.codenameId = '';
43
44
  this.codenameLikeId = '';
@@ -124,7 +125,7 @@ class Distro {
124
125
  * opensuse compatible
125
126
  */
126
127
  case 'openSUSE': {
127
- this.familyId = 'suse';
128
+ this.familyId = 'opensuse';
128
129
  break;
129
130
  }
130
131
  /**
@@ -219,7 +220,6 @@ class Distro {
219
220
  /**
220
221
  * Arch
221
222
  */
222
- case 'Spizaetus':
223
223
  case 'n/a':
224
224
  case 'rolling': {
225
225
  this.familyId = 'archlinux';
@@ -237,7 +237,6 @@ class Distro {
237
237
  /**
238
238
  * patch per Roy VERIFICARE
239
239
  */
240
- let found = false;
241
240
  let file = path.resolve(__dirname, '../../conf/derivatives.yaml');
242
241
  if (fs.existsSync('/etc/penguins-eggs.d/derivatives.yaml')) {
243
242
  file = '/etc/penguins-eggs.d/derivatives.yaml';
@@ -256,15 +255,6 @@ class Distro {
256
255
  }
257
256
  }
258
257
  }
259
- if (!found) {
260
- console.log(`This distro ${this.distroId}/${this.codenameId} is not yet recognized!`);
261
- console.log('');
262
- console.log('You can edit /usr/lib/penguins-eggs/conf/derivatives.yaml to add it -');
263
- console.log('after that - run: sudo eggs dad -d to re-configure eggs.');
264
- console.log('If you can create your new iso, you can contribute to the project');
265
- console.log('by suggesting your modification.');
266
- process.exit(0);
267
- }
268
258
  }
269
259
  }
270
260
  /**
@@ -291,7 +281,26 @@ class Distro {
291
281
  }
292
282
  } // Fine analisi distroId
293
283
  /**
294
- * familyId
284
+ * if lsb-release exists
285
+ */
286
+ const lsbConfig = '/etc/lsb-release';
287
+ if (fs.existsSync(lsbConfig)) {
288
+ this.distroId = Utils.searchOnFile(lsbConfig, `DISTRIB_ID`);
289
+ this.codenameId = Utils.searchOnFile(lsbConfig, `DISTRIB_CODENAME`);
290
+ // patch for BigLinux
291
+ if (this.distroId.toLowerCase().includes('biglinux')) {
292
+ this.distroId = 'biglinux';
293
+ }
294
+ }
295
+ /**
296
+ * ManjaroLinux and BigLinux
297
+ */
298
+ if (this.distroId === 'ManjaroLinux' || this.distroId.toLowerCase().includes('biglinux')) {
299
+ this.liveMediumPath = '/run/miso/bootmnt/';
300
+ this.squashfs = 'manjaro/x86_64/livefs.sfs';
301
+ }
302
+ /**
303
+ * all the distros without codename: Alpine, fedora, opensuse
295
304
  */
296
305
  switch (this.familyId) {
297
306
  case 'alpine': {
@@ -306,6 +315,7 @@ class Distro {
306
315
  this.isolinuxPath = this.syslinuxPath;
307
316
  // At the moment
308
317
  this.isCalamaresAvailable = true;
318
+ found = true;
309
319
  break;
310
320
  }
311
321
  case 'fedora': {
@@ -318,43 +328,34 @@ class Distro {
318
328
  this.usrLibPath = '/usr/lib/';
319
329
  this.memdiskPath = this.syslinuxPath;
320
330
  this.isolinuxPath = this.syslinuxPath;
321
- // At the moment
322
331
  this.isCalamaresAvailable = true;
332
+ found = true;
323
333
  break;
324
334
  }
325
- case 'suse': {
326
- this.distroLike = 'openSUSE';
327
- this.codenameId = 'rolling';
328
- this.codenameLikeId = 'Tumbleweed';
329
- this.liveMediumPath = '/run/install/repo/'; // ? è il mount della root su cd di installatione
330
- this.syslinuxPath = '/usr/share/syslinux/';
331
- this.pxelinuxPath = this.syslinuxPath;
332
- this.usrLibPath = '/usr/lib/';
333
- this.memdiskPath = this.syslinuxPath;
334
- this.isolinuxPath = this.syslinuxPath;
335
- // At the moment
336
- this.isCalamaresAvailable = false;
337
- break;
338
- }
339
- }
340
- /**
341
- * if lsb-release exists
342
- */
343
- const lsbConfig = '/etc/lsb-release';
344
- if (fs.existsSync(lsbConfig)) {
345
- this.distroId = Utils.searchOnFile(lsbConfig, `DISTRIB_ID`);
346
- this.codenameId = Utils.searchOnFile(lsbConfig, `DISTRIB_CODENAME`);
347
- // patch for BigLinux
348
- if (this.distroId.toLowerCase().includes('biglinux')) {
349
- this.distroId = 'biglinux';
350
- }
351
- }
352
- /**
353
- * ManjaroLinux and BigLinux
354
- */
355
- if (this.distroId === 'ManjaroLinux' || this.distroId.toLowerCase().includes('biglinux')) {
356
- this.liveMediumPath = '/run/miso/bootmnt/';
357
- this.squashfs = 'manjaro/x86_64/livefs.sfs';
335
+ case 'opensuse':
336
+ {
337
+ this.distroLike = 'openSUSE';
338
+ this.codenameId = 'rolling';
339
+ this.codenameLikeId = 'opensuse';
340
+ this.liveMediumPath = '/run/initramfs/live/'; // è il mount della root su cd di installatione
341
+ this.syslinuxPath = '/usr/share/syslinux/';
342
+ this.pxelinuxPath = this.syslinuxPath;
343
+ this.usrLibPath = '/usr/lib/';
344
+ this.memdiskPath = this.syslinuxPath;
345
+ this.isolinuxPath = this.syslinuxPath;
346
+ this.isCalamaresAvailable = true;
347
+ found = true;
348
+ break;
349
+ }
350
+ if (!found) {
351
+ console.log(`This distro ${this.distroId}/${this.codenameId} is not yet recognized!`);
352
+ console.log('');
353
+ console.log('You can edit /usr/lib/penguins-eggs/conf/derivatives.yaml to add it -');
354
+ console.log('after that - run: sudo eggs dad -d to re-configure eggs.');
355
+ console.log('If you can create your new iso, you can contribute to the project');
356
+ console.log('by suggesting your modification.');
357
+ process.exit(0);
358
+ }
358
359
  }
359
360
  }
360
361
  }