penguins-eggs 10.0.53 → 10.0.54
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 +1548 -2
- package/README.md +788 -0
- package/addons/eggs/theme/livecd/grub.main.simple.cfg +49 -0
- package/addons/eggs/theme/livecd/isolinux.theme.cfg +6 -5
- package/conf/distros/fedora/calamares/settings.yml +0 -6
- package/dist/classes/bleach.d.ts +32 -0
- package/dist/classes/bleach.js +135 -0
- package/dist/classes/cfs.d.ts +17 -0
- package/dist/classes/cfs.js +39 -0
- package/dist/classes/cli-autologin.d.ts +52 -0
- package/dist/classes/cli-autologin.js +247 -0
- package/dist/classes/compressors.d.ts +54 -0
- package/dist/classes/compressors.js +109 -0
- package/dist/classes/daddy.d.ts +26 -0
- package/dist/classes/daddy.js +167 -0
- package/dist/classes/distro.d.ts +32 -0
- package/dist/classes/distro.js +341 -0
- package/dist/classes/diversions.d.ts +48 -0
- package/dist/classes/diversions.js +116 -0
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +85 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
- package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
- package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
- package/dist/classes/incubation/fisherman.d.ts +70 -0
- package/dist/classes/incubation/fisherman.js +263 -0
- package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/alpine.js +78 -0
- package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/bionic.js +83 -0
- package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/buster.js +85 -0
- package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
- package/dist/classes/incubation/incubator.d/jessie.js +44 -0
- package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/noble.js +85 -0
- package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
- package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
- package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/rolling.js +80 -0
- package/dist/classes/incubation/incubator.d.ts +44 -0
- package/dist/classes/incubation/incubator.js +382 -0
- package/dist/classes/incubation/installer.d.ts +13 -0
- package/dist/classes/incubation/installer.js +52 -0
- package/dist/classes/keyboards.d.ts +50 -0
- package/dist/classes/keyboards.js +287 -0
- package/dist/classes/locales.d.ts +21 -0
- package/dist/classes/locales.js +77 -0
- package/dist/classes/network.d.ts +37 -0
- package/dist/classes/network.js +98 -0
- package/dist/classes/ovary.d.ts +198 -0
- package/dist/classes/ovary.js +1849 -0
- package/dist/classes/pacman.d/aldos.d.ts +52 -0
- package/dist/classes/pacman.d/aldos.js +100 -0
- package/dist/classes/pacman.d/alpine.d.ts +56 -0
- package/dist/classes/pacman.d/alpine.js +162 -0
- package/dist/classes/pacman.d/archlinux.d.ts +62 -0
- package/dist/classes/pacman.d/archlinux.js +137 -0
- package/dist/classes/pacman.d/debian.d.ts +65 -0
- package/dist/classes/pacman.d/debian.js +143 -0
- package/dist/classes/pacman.d/fedora.d.ts +53 -0
- package/dist/classes/pacman.d/fedora.js +101 -0
- package/dist/classes/pacman.d/openmamba.d.ts +52 -0
- package/dist/classes/pacman.d/openmamba.js +100 -0
- package/dist/classes/pacman.d/opensuse.d.ts +53 -0
- package/dist/classes/pacman.d/opensuse.js +102 -0
- package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
- package/dist/classes/pacman.d/voidlinux.js +90 -0
- package/dist/classes/pacman.d.ts +139 -0
- package/dist/classes/pacman.js +775 -0
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +52 -0
- package/dist/classes/pxe.d.ts +74 -0
- package/dist/classes/pxe.js +410 -0
- package/dist/classes/settings.d.ts +53 -0
- package/dist/classes/settings.js +185 -0
- package/dist/classes/sources_list.d.ts +28 -0
- package/dist/classes/sources_list.js +89 -0
- package/dist/classes/systemctl.d.ts +47 -0
- package/dist/classes/systemctl.js +86 -0
- package/dist/classes/tailor.d.ts +50 -0
- package/dist/classes/tailor.js +526 -0
- package/dist/classes/tools.d.ts +26 -0
- package/dist/classes/tools.js +50 -0
- package/dist/classes/users.d.ts +28 -0
- package/dist/classes/users.js +143 -0
- package/dist/classes/utils.d.ts +324 -0
- package/dist/classes/utils.js +984 -0
- package/dist/classes/xdg.d.ts +45 -0
- package/dist/classes/xdg.js +337 -0
- package/dist/classes/yolk.d.ts +33 -0
- package/dist/classes/yolk.js +114 -0
- package/dist/commands/adapt.d.ts +17 -0
- package/dist/commands/adapt.js +33 -0
- package/dist/commands/analyze.d.ts +26 -0
- package/dist/commands/analyze.js +95 -0
- package/dist/commands/calamares.d.ts +29 -0
- package/dist/commands/calamares.js +112 -0
- package/dist/commands/config.d.ts +35 -0
- package/dist/commands/config.js +120 -0
- package/dist/commands/cuckoo.d.ts +16 -0
- package/dist/commands/cuckoo.js +62 -0
- package/dist/commands/dad.d.ts +20 -0
- package/dist/commands/dad.js +46 -0
- package/dist/commands/export/iso.d.ts +19 -0
- package/dist/commands/export/iso.js +55 -0
- package/dist/commands/export/pkg.d.ts +29 -0
- package/dist/commands/export/pkg.js +163 -0
- package/dist/commands/export/tarballs.d.ts +27 -0
- package/dist/commands/export/tarballs.js +84 -0
- package/dist/commands/install.d.ts +37 -0
- package/dist/commands/install.js +88 -0
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +50 -0
- package/dist/commands/love.d.ts +20 -0
- package/dist/commands/love.js +59 -0
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +30 -0
- package/dist/commands/produce.d.ts +34 -0
- package/dist/commands/produce.js +201 -0
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +31 -0
- package/dist/commands/syncfrom.d.ts +45 -0
- package/dist/commands/syncfrom.js +152 -0
- package/dist/commands/syncto.d.ts +40 -0
- package/dist/commands/syncto.js +175 -0
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +37 -0
- package/dist/commands/tools/ppa.d.ts +26 -0
- package/dist/commands/tools/ppa.js +138 -0
- package/dist/commands/tools/skel.d.ts +18 -0
- package/dist/commands/tools/skel.js +44 -0
- package/dist/commands/tools/stat.d.ts +31 -0
- package/dist/commands/tools/stat.js +70 -0
- package/dist/commands/tools/yolk.d.ts +24 -0
- package/dist/commands/tools/yolk.js +45 -0
- package/dist/commands/update.d.ts +51 -0
- package/dist/commands/update.js +219 -0
- package/dist/commands/wardrobe/get.d.ts +23 -0
- package/dist/commands/wardrobe/get.js +52 -0
- package/dist/commands/wardrobe/list.d.ts +24 -0
- package/dist/commands/wardrobe/list.js +125 -0
- package/dist/commands/wardrobe/show.d.ts +25 -0
- package/dist/commands/wardrobe/show.js +97 -0
- package/dist/commands/wardrobe/wear.d.ts +26 -0
- package/dist/commands/wardrobe/wear.js +84 -0
- package/dist/components/finished.d.ts +16 -0
- package/dist/components/finished.js +56 -0
- package/dist/components/information.d.ts +8 -0
- package/dist/components/information.js +154 -0
- package/dist/components/install.d.ts +15 -0
- package/dist/components/install.js +60 -0
- package/dist/components/keyboard.d.ts +16 -0
- package/dist/components/keyboard.js +54 -0
- package/dist/components/location.d.ts +16 -0
- package/dist/components/location.js +59 -0
- package/dist/components/network.d.ts +19 -0
- package/dist/components/network.js +65 -0
- package/dist/components/partitions.d.ts +16 -0
- package/dist/components/partitions.js +73 -0
- package/dist/components/steps.d.ts +13 -0
- package/dist/components/steps.js +148 -0
- package/dist/components/summary.d.ts +24 -0
- package/dist/components/summary.js +81 -0
- package/dist/components/title.d.ts +11 -0
- package/dist/components/title.js +35 -0
- package/dist/components/users.d.ts +24 -0
- package/dist/components/users.js +80 -0
- package/dist/components/welcome.d.ts +13 -0
- package/dist/components/welcome.js +63 -0
- package/dist/index-old.d.ts +8 -0
- package/dist/index-old.js +8 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +147 -0
- package/dist/interfaces/i-addons.d.ts +12 -0
- package/dist/interfaces/i-addons.js +8 -0
- package/dist/interfaces/i-analyze.d.ts +17 -0
- package/dist/interfaces/i-analyze.js +17 -0
- package/dist/interfaces/i-app.d.ts +14 -0
- package/dist/interfaces/i-app.js +8 -0
- package/dist/interfaces/i-branding.d.ts +36 -0
- package/dist/interfaces/i-branding.js +8 -0
- package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
- package/dist/interfaces/i-calamares-displaymanager.js +1 -0
- package/dist/interfaces/i-calamares-finished.d.ts +12 -0
- package/dist/interfaces/i-calamares-finished.js +1 -0
- package/dist/interfaces/i-calamares-packages.d.ts +28 -0
- package/dist/interfaces/i-calamares-packages.js +1 -0
- package/dist/interfaces/i-calamares-partition.d.ts +40 -0
- package/dist/interfaces/i-calamares-partition.js +1 -0
- package/dist/interfaces/i-config-tools.d.ts +15 -0
- package/dist/interfaces/i-config-tools.js +8 -0
- package/dist/interfaces/i-devices.d.ts +20 -0
- package/dist/interfaces/i-devices.js +8 -0
- package/dist/interfaces/i-distro.d.ts +23 -0
- package/dist/interfaces/i-distro.js +8 -0
- package/dist/interfaces/i-drive-list.d.ts +33 -0
- package/dist/interfaces/i-drive-list.js +8 -0
- package/dist/interfaces/i-eggs-config.d.ts +32 -0
- package/dist/interfaces/i-eggs-config.js +8 -0
- package/dist/interfaces/i-excludes.d.ts +14 -0
- package/dist/interfaces/i-excludes.js +8 -0
- package/dist/interfaces/i-exec.d.ts +11 -0
- package/dist/interfaces/i-exec.js +8 -0
- package/dist/interfaces/i-initrd.d.ts +13 -0
- package/dist/interfaces/i-initrd.js +8 -0
- package/dist/interfaces/i-install.d.ts +16 -0
- package/dist/interfaces/i-install.js +8 -0
- package/dist/interfaces/i-installer.d.ts +17 -0
- package/dist/interfaces/i-installer.js +8 -0
- package/dist/interfaces/i-krill-config.d.ts +33 -0
- package/dist/interfaces/i-krill-config.js +8 -0
- package/dist/interfaces/i-krill.d.ts +42 -0
- package/dist/interfaces/i-krill.js +8 -0
- package/dist/interfaces/i-materia.d.ts +36 -0
- package/dist/interfaces/i-materia.js +8 -0
- package/dist/interfaces/i-net.d.ts +16 -0
- package/dist/interfaces/i-net.js +8 -0
- package/dist/interfaces/i-packages.d.ts +16 -0
- package/dist/interfaces/i-packages.js +8 -0
- package/dist/interfaces/i-partitions.d.ts +16 -0
- package/dist/interfaces/i-partitions.js +8 -0
- package/dist/interfaces/i-pxe.d.ts +45 -0
- package/dist/interfaces/i-pxe.js +1 -0
- package/dist/interfaces/i-remix.d.ts +21 -0
- package/dist/interfaces/i-remix.js +8 -0
- package/dist/interfaces/i-settings.d.ts +33 -0
- package/dist/interfaces/i-settings.js +8 -0
- package/dist/interfaces/i-user.d.ts +14 -0
- package/dist/interfaces/i-user.js +8 -0
- package/dist/interfaces/i-workdir.d.ts +14 -0
- package/dist/interfaces/i-workdir.js +8 -0
- package/dist/interfaces/i-xkb-model.d.ts +24 -0
- package/dist/interfaces/i-xkb-model.js +8 -0
- package/dist/interfaces/index.d.ts +25 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/krill/modules/add-user.d.ts +20 -0
- package/dist/krill/modules/add-user.js +48 -0
- package/dist/krill/modules/bootloader-config.d.ts +14 -0
- package/dist/krill/modules/bootloader-config.js +165 -0
- package/dist/krill/modules/bootloader.d.ts +14 -0
- package/dist/krill/modules/bootloader.js +157 -0
- package/dist/krill/modules/change-password.d.ts +15 -0
- package/dist/krill/modules/change-password.js +18 -0
- package/dist/krill/modules/del-live-user.d.ts +14 -0
- package/dist/krill/modules/del-live-user.js +39 -0
- package/dist/krill/modules/fstab.d.ts +14 -0
- package/dist/krill/modules/fstab.js +123 -0
- package/dist/krill/modules/grubcfg.d.ts +17 -0
- package/dist/krill/modules/grubcfg.js +29 -0
- package/dist/krill/modules/hostname.d.ts +13 -0
- package/dist/krill/modules/hostname.js +50 -0
- package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
- package/dist/krill/modules/initramfs-cfg.js +22 -0
- package/dist/krill/modules/initramfs.d.ts +13 -0
- package/dist/krill/modules/initramfs.js +54 -0
- package/dist/krill/modules/locale-cfg.d.ts +10 -0
- package/dist/krill/modules/locale-cfg.js +58 -0
- package/dist/krill/modules/locale.d.ts +13 -0
- package/dist/krill/modules/locale.js +91 -0
- package/dist/krill/modules/m-keyboard.d.ts +14 -0
- package/dist/krill/modules/m-keyboard.js +58 -0
- package/dist/krill/modules/machine-id.d.ts +15 -0
- package/dist/krill/modules/machine-id.js +33 -0
- package/dist/krill/modules/mkfs.d.ts +15 -0
- package/dist/krill/modules/mkfs.js +50 -0
- package/dist/krill/modules/mount-fs.d.ts +17 -0
- package/dist/krill/modules/mount-fs.js +62 -0
- package/dist/krill/modules/mount-vfs.d.ts +17 -0
- package/dist/krill/modules/mount-vfs.js +40 -0
- package/dist/krill/modules/network-cfg.d.ts +19 -0
- package/dist/krill/modules/network-cfg.js +64 -0
- package/dist/krill/modules/packages.d.ts +14 -0
- package/dist/krill/modules/packages.js +111 -0
- package/dist/krill/modules/partition.d.ts +20 -0
- package/dist/krill/modules/partition.js +324 -0
- package/dist/krill/modules/remove-installer-link.d.ts +13 -0
- package/dist/krill/modules/remove-installer-link.js +35 -0
- package/dist/krill/modules/umount.d.ts +14 -0
- package/dist/krill/modules/umount.js +28 -0
- package/dist/krill/modules/unpackfs.d.ts +13 -0
- package/dist/krill/modules/unpackfs.js +20 -0
- package/dist/krill/prepare.d.ts +78 -0
- package/dist/krill/prepare.js +624 -0
- package/dist/krill/sequence.d.ts +154 -0
- package/dist/krill/sequence.js +652 -0
- package/dist/lib/get_address.d.ts +8 -0
- package/dist/lib/get_address.js +23 -0
- package/dist/lib/get_dns.d.ts +8 -0
- package/dist/lib/get_dns.js +23 -0
- package/dist/lib/get_domain.d.ts +8 -0
- package/dist/lib/get_domain.js +23 -0
- package/dist/lib/get_gateway.d.ts +8 -0
- package/dist/lib/get_gateway.js +23 -0
- package/dist/lib/get_hostname.d.ts +8 -0
- package/dist/lib/get_hostname.js +23 -0
- package/dist/lib/get_netmask.d.ts +8 -0
- package/dist/lib/get_netmask.js +23 -0
- package/dist/lib/get_password.d.ts +8 -0
- package/dist/lib/get_password.js +36 -0
- package/dist/lib/get_userfullname.d.ts +8 -0
- package/dist/lib/get_userfullname.js +23 -0
- package/dist/lib/get_username.d.ts +8 -0
- package/dist/lib/get_username.js +23 -0
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +61 -0
- package/dist/lib/select_address_type.d.ts +8 -0
- package/dist/lib/select_address_type.js +24 -0
- package/dist/lib/select_filesystem_type.d.ts +8 -0
- package/dist/lib/select_filesystem_type.js +46 -0
- package/dist/lib/select_installation_device.d.ts +8 -0
- package/dist/lib/select_installation_device.js +30 -0
- package/dist/lib/select_installation_mode.d.ts +8 -0
- package/dist/lib/select_installation_mode.js +24 -0
- package/dist/lib/select_interface.d.ts +8 -0
- package/dist/lib/select_interface.js +24 -0
- package/dist/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/lib/select_keyboard_layout.js +36 -0
- package/dist/lib/select_keyboard_model.d.ts +11 -0
- package/dist/lib/select_keyboard_model.js +34 -0
- package/dist/lib/select_keyboard_option.d.ts +11 -0
- package/dist/lib/select_keyboard_option.js +34 -0
- package/dist/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/lib/select_keyboard_variant.js +35 -0
- package/dist/lib/select_languages.d.ts +8 -0
- package/dist/lib/select_languages.js +28 -0
- package/dist/lib/select_regions.d.ts +8 -0
- package/dist/lib/select_regions.js +24 -0
- package/dist/lib/select_user_swap_choice.d.ts +8 -0
- package/dist/lib/select_user_swap_choice.js +34 -0
- package/dist/lib/select_zones.d.ts +8 -0
- package/dist/lib/select_zones.js +518 -0
- package/dist/lib/utils.d.ts +34 -0
- package/dist/lib/utils.js +79 -0
- package/dist/penguins-eggs-tarball-10.0.54-1-linux-x64.tar.gz +0 -0
- package/package.json +11 -7
- package/scripts/_eggs +10 -1
- package/scripts/eggs.bash +1 -0
- /package/addons/eggs/theme/livecd/{grub.main.cfg → grub.main.full.cfg} +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#
|
|
2
|
+
# eggs: grub.main.cfg
|
|
3
|
+
#
|
|
4
|
+
if loadfont $prefix/font.pf2 ; then
|
|
5
|
+
set gfxmode=1024x768x32
|
|
6
|
+
insmod efi_gop
|
|
7
|
+
insmod efi_uga
|
|
8
|
+
insmod video_bochs
|
|
9
|
+
insmod video_cirrus
|
|
10
|
+
insmod gfxterm
|
|
11
|
+
insmod jpeg
|
|
12
|
+
insmod png
|
|
13
|
+
terminal_output gfxterm
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
set theme=/boot/grub/theme.cfg
|
|
17
|
+
|
|
18
|
+
menuentry "{{{fullname}}} Live/Installation" {
|
|
19
|
+
set gfxpayload=keep
|
|
20
|
+
{{{rmModules}}}
|
|
21
|
+
linux {{{vmlinuz}}} {{{kernel_parameters}}} quiet splash
|
|
22
|
+
initrd {{{initrdImg}}}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
menuentry "{{{fullname}}} Safe Mode" {
|
|
26
|
+
set gfxpayload=keep
|
|
27
|
+
{{{rmModules}}}
|
|
28
|
+
linux {{{vmlinuz}}} {{{kernel_parameters}}} quiet splash
|
|
29
|
+
initrd {{{initrdImg}}}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
menuentry "{{{fullname}}} Text Mode" {
|
|
33
|
+
set gfxpayload=keep
|
|
34
|
+
{{{rmModules}}}
|
|
35
|
+
linux {{{vmlinuz}}} {{{kernel_parameters}}} quiet splash
|
|
36
|
+
initrd {{{initrdImg}}}
|
|
37
|
+
}
|
|
38
|
+
grub_platform
|
|
39
|
+
if [ "$grub_platform" = "efi" ]; then
|
|
40
|
+
menuentry "Boot from local disk" {
|
|
41
|
+
exit 1
|
|
42
|
+
}
|
|
43
|
+
#menuentry 'UEFI Firmware Settings' {
|
|
44
|
+
# fwsetup
|
|
45
|
+
#}
|
|
46
|
+
#menuentry 'Memory test' {
|
|
47
|
+
# linux /boot/memtest.efi
|
|
48
|
+
#}
|
|
49
|
+
fi
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# eggs: isolinux.theme
|
|
3
3
|
#
|
|
4
4
|
|
|
5
|
-
# MENU COLOR element
|
|
5
|
+
# MENU COLOR element background foreground shadow
|
|
6
6
|
# background and foreground are hexadecimal digits for alpha (opacity), red, green and blue,
|
|
7
7
|
# respectively. #00000000 represents fully transparent, and #ffffffff represents opaque white.
|
|
8
8
|
# shadow none/std
|
|
@@ -10,14 +10,15 @@
|
|
|
10
10
|
MENU COLOR screen 37;40 #80ffffff #00000000 std
|
|
11
11
|
MENU COLOR border 30;44 #40000000 #00000000 std
|
|
12
12
|
MENU COLOR title 1;36;44 #c00090f0 #00000000 std
|
|
13
|
-
MENU COLOR unsel 37;44 #c00090f0
|
|
14
|
-
MENU COLOR sel 7;37;40 #FF00FF
|
|
15
|
-
MENU COLOR hotsel 1;7;37;40 #FF00FF
|
|
13
|
+
MENU COLOR unsel 37;44 #c00090f0 #00000000 std
|
|
14
|
+
MENU COLOR sel 7;37;40 #FF00FF #E0FFAF all
|
|
15
|
+
MENU COLOR hotsel 1;7;37;40 #FF00FF #E0FFFF all
|
|
16
16
|
MENU COLOR disabled 1;30;44 #c00090f0 #00000000 std
|
|
17
17
|
MENU COLOR scrollbar 30;44 #c00090f0 #00000000 std
|
|
18
18
|
MENU COLOR tabmsg 31;40 #c00090f0 #00000000 std
|
|
19
19
|
MENU COLOR cmdmark 1;36;40 #c00090f0 #00000000 std
|
|
20
|
-
MENU COLOR cmdline 37;40 #c00090f0#00000000 std
|
|
20
|
+
#MENU COLOR cmdline 37;40 #c00090f0 #00000000 std
|
|
21
|
+
MENU COLOR cmdline 37;40 #FFFFFF #0000FF std
|
|
21
22
|
MENU COLOR pwdborder 30;47 #c00090f0 #20ffffff std
|
|
22
23
|
MENU COLOR pwdheader 31;47 #c00090f0 #20ffffff std
|
|
23
24
|
MENU COLOR pwdentry 30;47 #c00090f0 #20ffffff std
|
|
@@ -37,11 +37,6 @@ disable-cancel-during-exec: false
|
|
|
37
37
|
#
|
|
38
38
|
quit-at-end: false
|
|
39
39
|
|
|
40
|
-
instances:
|
|
41
|
-
- id: cleanup
|
|
42
|
-
module: shellprocess
|
|
43
|
-
config: shellprocess_cleanup.conf
|
|
44
|
-
|
|
45
40
|
sequence:
|
|
46
41
|
# Phase 1 - prepare.
|
|
47
42
|
# View modules are shown as UI pages, jobs from job modules
|
|
@@ -82,7 +77,6 @@ sequence:
|
|
|
82
77
|
- bootloader
|
|
83
78
|
- packages
|
|
84
79
|
- removeuser
|
|
85
|
-
- cleanup
|
|
86
80
|
- umount
|
|
87
81
|
|
|
88
82
|
# Phase 3 - postinstall.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/bleach.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Bleach:
|
|
10
|
+
*/
|
|
11
|
+
export default class Bleach {
|
|
12
|
+
/**
|
|
13
|
+
* clean
|
|
14
|
+
* @param verbose
|
|
15
|
+
*/
|
|
16
|
+
clean(verbose?: boolean): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* cleanHistory
|
|
19
|
+
* @param verbose
|
|
20
|
+
*/
|
|
21
|
+
private cleanHistory;
|
|
22
|
+
/**
|
|
23
|
+
* cleanJournal
|
|
24
|
+
* @param verbose
|
|
25
|
+
*/
|
|
26
|
+
private cleanJournal;
|
|
27
|
+
/**
|
|
28
|
+
* cleanSystemCache
|
|
29
|
+
* @param verbose
|
|
30
|
+
*/
|
|
31
|
+
private cleanSystemCache;
|
|
32
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/bleach.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import fs from 'node:fs';
|
|
9
|
+
// libraries
|
|
10
|
+
import { exec } from '../lib/utils.js';
|
|
11
|
+
import Distro from './distro.js';
|
|
12
|
+
import Utils from './utils.js';
|
|
13
|
+
/**
|
|
14
|
+
* Bleach:
|
|
15
|
+
*/
|
|
16
|
+
export default class Bleach {
|
|
17
|
+
/**
|
|
18
|
+
* clean
|
|
19
|
+
* @param verbose
|
|
20
|
+
*/
|
|
21
|
+
async clean(verbose = false) {
|
|
22
|
+
let echo = { capture: false, echo: false, ignore: true };
|
|
23
|
+
if (verbose) {
|
|
24
|
+
echo = { capture: false, echo: true, ignore: true };
|
|
25
|
+
Utils.warning('cleaning the system');
|
|
26
|
+
}
|
|
27
|
+
const distro = new Distro();
|
|
28
|
+
if (distro.familyId === 'alpine') {
|
|
29
|
+
await exec('apk cache clean', echo);
|
|
30
|
+
await exec('apk cache purge', echo);
|
|
31
|
+
}
|
|
32
|
+
else if (distro.familyId === 'archlinux') {
|
|
33
|
+
await exec('yes | sudo pacman -Scc', Utils.setEcho(true));
|
|
34
|
+
}
|
|
35
|
+
else if (distro.familyId === 'debian') {
|
|
36
|
+
await exec('apt-get clean', echo);
|
|
37
|
+
await exec('apt-get autoclean', echo);
|
|
38
|
+
await exec(`rm /var/lib/apt/lists/lock -rf`, echo);
|
|
39
|
+
}
|
|
40
|
+
else if (distro.familyId === 'fedora' || distro.familyId === 'openmamba') {
|
|
41
|
+
await exec(`dnf remove $(dnf repoquery --installonly --latest-limit=-1 -q)`);
|
|
42
|
+
await exec(`dnf clean all`, echo);
|
|
43
|
+
}
|
|
44
|
+
else if (distro.familyId === 'opensuse') {
|
|
45
|
+
await exec(`zypper clean`, echo);
|
|
46
|
+
}
|
|
47
|
+
else if (distro.familyId === 'voidlinux') {
|
|
48
|
+
await exec(`xbps-remove -O`, echo);
|
|
49
|
+
}
|
|
50
|
+
await this.cleanHistory(verbose);
|
|
51
|
+
await this.cleanJournal(verbose);
|
|
52
|
+
await this.cleanSystemCache(verbose);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* cleanHistory
|
|
56
|
+
* @param verbose
|
|
57
|
+
*/
|
|
58
|
+
async cleanHistory(verbose = false) {
|
|
59
|
+
if (verbose) {
|
|
60
|
+
Utils.warning('cleaning bash history');
|
|
61
|
+
}
|
|
62
|
+
const dest = '/root/.bash_history';
|
|
63
|
+
if (fs.existsSync(dest)) {
|
|
64
|
+
await rm(dest, verbose);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* cleanJournal
|
|
69
|
+
* @param verbose
|
|
70
|
+
*/
|
|
71
|
+
async cleanJournal(verbose = false) {
|
|
72
|
+
let echo = { capture: false, echo: false, ignore: true };
|
|
73
|
+
if (verbose) {
|
|
74
|
+
echo = { capture: false, echo: true, ignore: true };
|
|
75
|
+
Utils.warning('cleaning journald');
|
|
76
|
+
}
|
|
77
|
+
if (Utils.isSystemd()) {
|
|
78
|
+
try {
|
|
79
|
+
await exec('journalctl --rotate', echo);
|
|
80
|
+
await exec('journalctl --vacuum-time=1s', echo);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
Utils.error(error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Truncate logs, remove archived logs.
|
|
88
|
+
await exec('find /var/log -name "*gz" -print0 | xargs -0r rm -f', echo);
|
|
89
|
+
await exec('find /var/log/ -type f -exec truncate -s 0 {} \\;', echo);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* cleanSystemCache
|
|
94
|
+
* @param verbose
|
|
95
|
+
*/
|
|
96
|
+
async cleanSystemCache(verbose = false) {
|
|
97
|
+
let echo = { capture: false, echo: false, ignore: true };
|
|
98
|
+
if (verbose) {
|
|
99
|
+
echo = { capture: false, echo: true, ignore: true };
|
|
100
|
+
Utils.warning('cleaning system cache');
|
|
101
|
+
}
|
|
102
|
+
// Clear PageCache only.
|
|
103
|
+
await exec('sync; echo 1 > /proc/sys/vm/drop_caches', echo);
|
|
104
|
+
// Clear dentries and inodes.
|
|
105
|
+
await exec('sync; echo 2 > /proc/sys/vm/drop_caches', echo);
|
|
106
|
+
// Clear PageCache, dentries and inodes.
|
|
107
|
+
await exec('sync; echo 3 > /proc/sys/vm/drop_caches', echo);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
*
|
|
112
|
+
* @param dest
|
|
113
|
+
*/
|
|
114
|
+
async function rm(dest = '', verbose = false) {
|
|
115
|
+
let echo = { capture: false, echo: false, ignore: true };
|
|
116
|
+
if (verbose) {
|
|
117
|
+
echo = { capture: false, echo: true, ignore: true };
|
|
118
|
+
}
|
|
119
|
+
if (fs.existsSync(dest)) {
|
|
120
|
+
await exec(`rm ${dest} -rf`, echo);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.log(`non esiste ${dest}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function rmdir(dest = '', verbose = false) {
|
|
127
|
+
let echo = { capture: false, echo: false, ignore: true };
|
|
128
|
+
if (verbose) {
|
|
129
|
+
echo = { capture: false, echo: true, ignore: true };
|
|
130
|
+
}
|
|
131
|
+
const result = fs.readdirSync(dest);
|
|
132
|
+
if (result.length > 0) {
|
|
133
|
+
await exec(`rm ${dest} -rf`, echo);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/families/cfs.ts (custom final steps)
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* cfs
|
|
10
|
+
*/
|
|
11
|
+
export default class CFS {
|
|
12
|
+
/**
|
|
13
|
+
* steps
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
steps(): Promise<string[]>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/families/cfs.ts (custom final steps)
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import yaml from 'js-yaml';
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
import Pacman from './pacman.js';
|
|
11
|
+
/**
|
|
12
|
+
* cfs
|
|
13
|
+
*/
|
|
14
|
+
export default class CFS {
|
|
15
|
+
/**
|
|
16
|
+
* steps
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
async steps() {
|
|
20
|
+
const cfs = [];
|
|
21
|
+
let configRoot = '/etc/penguins-eggs.d/krill/';
|
|
22
|
+
if (Pacman.calamaresExists()) {
|
|
23
|
+
configRoot = '/etc/calamares/';
|
|
24
|
+
}
|
|
25
|
+
// solo se esiste settings.conf CALAMARES
|
|
26
|
+
if (fs.existsSync(`${configRoot}settings.conf`)) {
|
|
27
|
+
const settingsVar = fs.readFileSync(`${configRoot}settings.conf`, 'utf8');
|
|
28
|
+
const settingsYaml = yaml.load(settingsVar);
|
|
29
|
+
const execSequence = settingsYaml.sequence[1];
|
|
30
|
+
const steps = execSequence.exec;
|
|
31
|
+
for (const step of steps) {
|
|
32
|
+
if (step.includes('cfs-')) {
|
|
33
|
+
cfs.push(step);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return cfs;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/lib/cli-autologin.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* CliAutologin
|
|
10
|
+
*/
|
|
11
|
+
export default class CliAutologin {
|
|
12
|
+
/**
|
|
13
|
+
* add
|
|
14
|
+
* @param distro
|
|
15
|
+
* @param version
|
|
16
|
+
* @param user
|
|
17
|
+
* @param userPasswd
|
|
18
|
+
* @param rootPasswd
|
|
19
|
+
* @param chroot
|
|
20
|
+
*/
|
|
21
|
+
add(distro: string, version: string, user: string, userPasswd: string, rootPasswd: string, chroot?: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param distro
|
|
25
|
+
* @param version
|
|
26
|
+
* @param user
|
|
27
|
+
* @param userPasswd
|
|
28
|
+
* @param rootPasswd
|
|
29
|
+
* @param chroot
|
|
30
|
+
*/
|
|
31
|
+
addIssue(distro: string, version: string, user: string, userPasswd: string, rootPasswd: string, chroot?: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param distro
|
|
35
|
+
* @param version
|
|
36
|
+
* @param user
|
|
37
|
+
* @param userPasswd
|
|
38
|
+
* @param rootPasswd
|
|
39
|
+
* @param chroot
|
|
40
|
+
*/
|
|
41
|
+
addMotd(distro: string, version: string, user: string, userPasswd: string, rootPasswd: string, chroot?: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* remove
|
|
44
|
+
* @param chroot
|
|
45
|
+
*/
|
|
46
|
+
remove(chroot?: string): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* @param path
|
|
50
|
+
*/
|
|
51
|
+
private msgRemove;
|
|
52
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/lib/cli-autologin.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { execSync } from 'node:child_process';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import shx from 'shelljs';
|
|
13
|
+
// libraries
|
|
14
|
+
import { exec } from '../lib/utils.js';
|
|
15
|
+
import Pacman from './pacman.js';
|
|
16
|
+
import Utils from './utils.js';
|
|
17
|
+
const startMessage = 'eggs-start-message';
|
|
18
|
+
const stopMessage = 'eggs-stop-message';
|
|
19
|
+
/*
|
|
20
|
+
* Comando per avviare ubiquity:
|
|
21
|
+
* sudo --preserve-env DBUS_SESSION_BUS_ADDRESS, XDG_RUNTIME sh -c 'calamares'
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* CliAutologin
|
|
25
|
+
*/
|
|
26
|
+
export default class CliAutologin {
|
|
27
|
+
/**
|
|
28
|
+
* add
|
|
29
|
+
* @param distro
|
|
30
|
+
* @param version
|
|
31
|
+
* @param user
|
|
32
|
+
* @param userPasswd
|
|
33
|
+
* @param rootPasswd
|
|
34
|
+
* @param chroot
|
|
35
|
+
*/
|
|
36
|
+
async add(distro, version, user, userPasswd, rootPasswd, chroot = '/') {
|
|
37
|
+
if (Utils.isSystemd()) {
|
|
38
|
+
/**
|
|
39
|
+
* systemd
|
|
40
|
+
*/
|
|
41
|
+
Utils.warning("creating CLI autologin systemd");
|
|
42
|
+
const fileOverride = `${chroot}/etc/systemd/system/getty@.service.d/override.conf`;
|
|
43
|
+
const dirOverride = path.dirname(fileOverride);
|
|
44
|
+
if (fs.existsSync(dirOverride)) {
|
|
45
|
+
shx.exec(`rm ${dirOverride} -rf`);
|
|
46
|
+
}
|
|
47
|
+
shx.exec(`mkdir ${dirOverride}`);
|
|
48
|
+
let content = '';
|
|
49
|
+
content += '[Service]' + '\n';
|
|
50
|
+
content += 'ExecStart=' + '\n';
|
|
51
|
+
content += 'ExecStart=-/sbin/agetty --noclear --autologin ' + user + ' %I $TERM' + '\n';
|
|
52
|
+
fs.writeFileSync(fileOverride, content);
|
|
53
|
+
shx.exec(`chmod +x ${fileOverride}`);
|
|
54
|
+
await this.addIssue(distro, version, user, userPasswd, rootPasswd, chroot);
|
|
55
|
+
await this.addMotd(distro, version, user, userPasswd, rootPasswd, chroot);
|
|
56
|
+
}
|
|
57
|
+
else if (Utils.isOpenRc()) {
|
|
58
|
+
/**
|
|
59
|
+
* openrc
|
|
60
|
+
*/
|
|
61
|
+
Utils.warning("creating CLI autologin openrc");
|
|
62
|
+
const inittab = chroot + '/etc/inittab';
|
|
63
|
+
let content = '';
|
|
64
|
+
const search = `tty1::respawn:/sbin/getty 38400 tty1`;
|
|
65
|
+
const replace = `tty1::respawn:/sbin/getty -L 38400 tty1 -n -l /bin/autologin`;
|
|
66
|
+
const lines = fs.readFileSync(inittab, 'utf8').split('\n');
|
|
67
|
+
for (let i = 0; i < lines.length; i++) {
|
|
68
|
+
if (lines[i].includes(search)) {
|
|
69
|
+
lines[i] = replace;
|
|
70
|
+
}
|
|
71
|
+
content += lines[i] + '\n';
|
|
72
|
+
}
|
|
73
|
+
fs.writeFileSync(inittab, content, 'utf-8');
|
|
74
|
+
const autologin = chroot + '/bin/autologin';
|
|
75
|
+
content = '#!/bin/sh' + '\n';
|
|
76
|
+
content += `/bin/login -f ${user}` + '\n';
|
|
77
|
+
fs.writeFileSync(autologin, content, 'utf-8');
|
|
78
|
+
execSync(`chmod +x ${autologin}`);
|
|
79
|
+
await this.addIssue(distro, version, user, userPasswd, rootPasswd, chroot);
|
|
80
|
+
await this.addMotd(distro, version, user, userPasswd, rootPasswd, chroot);
|
|
81
|
+
}
|
|
82
|
+
else if (Utils.isSysvinit()) {
|
|
83
|
+
/**
|
|
84
|
+
* sysvinit
|
|
85
|
+
*/
|
|
86
|
+
Utils.warning("creating CLI autologin sysvinit");
|
|
87
|
+
const inittab = chroot + '/etc/inittab';
|
|
88
|
+
const search = '1:2345:respawn:/sbin/getty';
|
|
89
|
+
const replace = `1:2345:respawn:/sbin/getty --autologin ${user} 38400 tty1`;
|
|
90
|
+
let content = '';
|
|
91
|
+
const lines = fs.readFileSync(inittab, 'utf8').split('\n');
|
|
92
|
+
for (let i = 0; i < lines.length; i++) {
|
|
93
|
+
if (lines[i].includes(search)) {
|
|
94
|
+
lines[i] = replace;
|
|
95
|
+
}
|
|
96
|
+
content += lines[i] + '\n';
|
|
97
|
+
}
|
|
98
|
+
fs.writeFileSync(inittab, content, 'utf-8');
|
|
99
|
+
await this.addMotd(distro, version, user, userPasswd, rootPasswd, chroot);
|
|
100
|
+
await this.addIssue(distro, version, user, userPasswd, rootPasswd, chroot);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
*
|
|
105
|
+
* @param distro
|
|
106
|
+
* @param version
|
|
107
|
+
* @param user
|
|
108
|
+
* @param userPasswd
|
|
109
|
+
* @param rootPasswd
|
|
110
|
+
* @param chroot
|
|
111
|
+
*/
|
|
112
|
+
async addIssue(distro, version, user, userPasswd, rootPasswd, chroot = '/') {
|
|
113
|
+
const fileIssue = `${chroot}/etc/issue`;
|
|
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
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
*
|
|
128
|
+
* @param distro
|
|
129
|
+
* @param version
|
|
130
|
+
* @param user
|
|
131
|
+
* @param userPasswd
|
|
132
|
+
* @param rootPasswd
|
|
133
|
+
* @param chroot
|
|
134
|
+
*/
|
|
135
|
+
async addMotd(distro, version, user, userPasswd, rootPasswd, chroot = '/') {
|
|
136
|
+
const fileMotd = `${chroot}/etc/motd`;
|
|
137
|
+
let installer = 'sudo eggs install';
|
|
138
|
+
if (Pacman.calamaresExists()) {
|
|
139
|
+
if (Pacman.packageIsInstalled('plasma-desktop')) {
|
|
140
|
+
installer = 'startplasma-wayland to run GUI and launch calamares';
|
|
141
|
+
}
|
|
142
|
+
else if (Pacman.packageIsInstalled('xfce4')) {
|
|
143
|
+
installer = 'startxfce4 to run GUI and launch calamares installer';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (!fs.existsSync(fileMotd)) {
|
|
147
|
+
await exec(`touch ${fileMotd}`);
|
|
148
|
+
}
|
|
149
|
+
this.msgRemove(fileMotd);
|
|
150
|
+
let eggsMotd = fs.readFileSync(fileMotd, 'utf8');
|
|
151
|
+
eggsMotd += startMessage + '\n';
|
|
152
|
+
eggsMotd += Utils.flag() + '\n';
|
|
153
|
+
eggsMotd += 'You are logged as: ' + chalk.bold(user) + ' your password is: ' + chalk.bold(userPasswd) + ', root password: ' + chalk.bold(rootPasswd) + '\n\n';
|
|
154
|
+
eggsMotd += 'install : ' + chalk.bold(installer) + '\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';
|
|
159
|
+
eggsMotd += stopMessage + '\n';
|
|
160
|
+
fs.writeFileSync(fileMotd, eggsMotd);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* remove
|
|
164
|
+
* @param chroot
|
|
165
|
+
*/
|
|
166
|
+
async remove(chroot = '/') {
|
|
167
|
+
if (Utils.isSystemd()) {
|
|
168
|
+
/**
|
|
169
|
+
* Systemd
|
|
170
|
+
*/
|
|
171
|
+
const fileOverride = `${chroot}/etc/systemd/system/getty@.service.d/override.conf`;
|
|
172
|
+
const dirOverride = path.dirname(fileOverride);
|
|
173
|
+
if (fs.existsSync(dirOverride)) {
|
|
174
|
+
shx.exec(`rm ${dirOverride} -rf`);
|
|
175
|
+
}
|
|
176
|
+
this.msgRemove(`${chroot}/etc/motd`);
|
|
177
|
+
this.msgRemove(`${chroot}/etc/issue`);
|
|
178
|
+
}
|
|
179
|
+
else if (Utils.isOpenRc()) {
|
|
180
|
+
/**
|
|
181
|
+
* openrc
|
|
182
|
+
*/
|
|
183
|
+
const inittab = chroot + '/etc/inittab';
|
|
184
|
+
const search = 'autologin';
|
|
185
|
+
const replace = `tty1::respawn:/sbin/getty 38400 tty1`;
|
|
186
|
+
let content = '';
|
|
187
|
+
const lines = fs.readFileSync(inittab, 'utf8').split('\n');
|
|
188
|
+
for (let i = 0; i < lines.length; i++) {
|
|
189
|
+
if (lines[i].includes(search)) {
|
|
190
|
+
lines[i] = replace;
|
|
191
|
+
}
|
|
192
|
+
content += lines[i] + '\n';
|
|
193
|
+
}
|
|
194
|
+
fs.writeFileSync(inittab, content, 'utf-8');
|
|
195
|
+
this.msgRemove(`${chroot}/etc/motd`);
|
|
196
|
+
this.msgRemove(`${chroot}/etc/issue`);
|
|
197
|
+
const autologin = `${chroot}/bin/autologin`;
|
|
198
|
+
execSync(`rm -f ${autologin}`);
|
|
199
|
+
}
|
|
200
|
+
else if (Utils.isSysvinit()) {
|
|
201
|
+
/**
|
|
202
|
+
* sysvinit
|
|
203
|
+
*/
|
|
204
|
+
const inittab = chroot + '/etc/inittab';
|
|
205
|
+
const search = '--autologin';
|
|
206
|
+
const replace = '1:2345:respawn:/sbin/getty 38400 tty1 ';
|
|
207
|
+
let content = '';
|
|
208
|
+
const lines = fs.readFileSync(inittab, 'utf8').split('\n');
|
|
209
|
+
for (let i = 0; i < lines.length; i++) {
|
|
210
|
+
if (lines[i].includes(search)) {
|
|
211
|
+
lines[i] = replace;
|
|
212
|
+
}
|
|
213
|
+
content += lines[i] + '\n';
|
|
214
|
+
}
|
|
215
|
+
// motd
|
|
216
|
+
fs.writeFileSync(inittab, content, 'utf-8');
|
|
217
|
+
this.msgRemove(`${chroot}/etc/motd`);
|
|
218
|
+
// issue
|
|
219
|
+
this.msgRemove(`${chroot}/etc/issue`);
|
|
220
|
+
} // to add: openrc and runit for Devuan
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
*
|
|
224
|
+
* @param path
|
|
225
|
+
*/
|
|
226
|
+
async msgRemove(path) {
|
|
227
|
+
if (fs.existsSync(path)) {
|
|
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
|
+
}
|
|
242
|
+
}
|
|
243
|
+
fs.writeFileSync(path, cleaned, 'utf-8');
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/compressors.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
+
* author: Piero Proietti
|
|
5
|
+
* email: piero.proietti@gmail.com
|
|
6
|
+
* license: MIT
|
|
7
|
+
*/
|
|
8
|
+
export default class Compressors {
|
|
9
|
+
dest: string;
|
|
10
|
+
isEnabled: {
|
|
11
|
+
error: boolean;
|
|
12
|
+
gzip: boolean;
|
|
13
|
+
lz4: boolean;
|
|
14
|
+
lzma: boolean;
|
|
15
|
+
lzo: boolean;
|
|
16
|
+
xz: boolean;
|
|
17
|
+
zstd: boolean;
|
|
18
|
+
};
|
|
19
|
+
source: string;
|
|
20
|
+
/**
|
|
21
|
+
* fast compression
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
fast(): string;
|
|
25
|
+
/**
|
|
26
|
+
* max
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
max(): string;
|
|
30
|
+
pendrive(level?: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* populate
|
|
33
|
+
*/
|
|
34
|
+
populate(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* standard
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
standard(): string;
|
|
40
|
+
/**
|
|
41
|
+
* check mksquashfs exists
|
|
42
|
+
* @param compressor
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
private check;
|
|
46
|
+
/**
|
|
47
|
+
* prepareCheck
|
|
48
|
+
*/
|
|
49
|
+
private prepareCheck;
|
|
50
|
+
/**
|
|
51
|
+
* removeCheck
|
|
52
|
+
*/
|
|
53
|
+
private removeCheck;
|
|
54
|
+
}
|