penguins-eggs 25.10.19 → 25.10.23
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 +1 -1
- package/README.md +767 -2
- package/README.pdf +1723 -1731
- package/addons/eggs/theme/livecd/isolinux.main.simple.cfg +0 -1
- package/package.json +3 -3
- package/scripts/boot-encrypted-root.sh +177 -0
- package/scripts/mount-encrypted-home.sh +92 -56
- package/dist/classes/bleach.d.ts +0 -37
- package/dist/classes/bleach.js +0 -148
- package/dist/classes/cli-autologin.d.ts +0 -52
- package/dist/classes/cli-autologin.js +0 -252
- package/dist/classes/compressors.d.ts +0 -54
- package/dist/classes/compressors.js +0 -109
- package/dist/classes/daddy.d.ts +0 -26
- package/dist/classes/daddy.js +0 -175
- package/dist/classes/distro.d.ts +0 -32
- package/dist/classes/distro.js +0 -363
- package/dist/classes/diversions.d.ts +0 -53
- package/dist/classes/diversions.js +0 -152
- package/dist/classes/incubation/branding.d.ts +0 -17
- package/dist/classes/incubation/branding.js +0 -85
- package/dist/classes/incubation/customize/customize-partitions.d.ts +0 -4
- package/dist/classes/incubation/customize/customize-partitions.js +0 -29
- package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +0 -1
- package/dist/classes/incubation/fisherman-helper/initcpio.js +0 -69
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
- package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
- package/dist/classes/incubation/fisherman-helper/settings.js +0 -116
- package/dist/classes/incubation/fisherman.d.ts +0 -71
- package/dist/classes/incubation/fisherman.js +0 -281
- package/dist/classes/incubation/incubator.d/alpine.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/alpine.js +0 -78
- package/dist/classes/incubation/incubator.d/archlinux.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/archlinux.js +0 -82
- package/dist/classes/incubation/incubator.d/bionic.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/bionic.js +0 -83
- package/dist/classes/incubation/incubator.d/buster.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/buster.js +0 -101
- package/dist/classes/incubation/incubator.d/fedora.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/fedora.js +0 -81
- package/dist/classes/incubation/incubator.d/focal.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/focal.js +0 -85
- package/dist/classes/incubation/incubator.d/manjaro.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/manjaro.js +0 -82
- package/dist/classes/incubation/incubator.d/noble.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/noble.js +0 -102
- package/dist/classes/incubation/incubator.d/openmamba.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/openmamba.js +0 -81
- package/dist/classes/incubation/incubator.d/opensuse.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/opensuse.js +0 -81
- package/dist/classes/incubation/incubator.d/trixie.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/trixie.js +0 -98
- package/dist/classes/incubation/incubator.d.ts +0 -48
- package/dist/classes/incubation/incubator.js +0 -378
- package/dist/classes/incubation/installer.d.ts +0 -13
- package/dist/classes/incubation/installer.js +0 -52
- package/dist/classes/keyboards.d.ts +0 -50
- package/dist/classes/keyboards.js +0 -287
- package/dist/classes/locales.d.ts +0 -21
- package/dist/classes/locales.js +0 -77
- package/dist/classes/network.d.ts +0 -37
- package/dist/classes/network.js +0 -98
- package/dist/classes/ovary.d/bind-live-fs.d.ts +0 -18
- package/dist/classes/ovary.d/bind-live-fs.js +0 -185
- package/dist/classes/ovary.d/bind-vfs.d.ts +0 -17
- package/dist/classes/ovary.d/bind-vfs.js +0 -37
- package/dist/classes/ovary.d/create-xdg-autostart.d.ts +0 -13
- package/dist/classes/ovary.d/create-xdg-autostart.js +0 -194
- package/dist/classes/ovary.d/edit-live-fs.d.ts +0 -20
- package/dist/classes/ovary.d/edit-live-fs.js +0 -239
- package/dist/classes/ovary.d/fertilization.d.ts +0 -12
- package/dist/classes/ovary.d/fertilization.js +0 -53
- package/dist/classes/ovary.d/finished.d.ts +0 -13
- package/dist/classes/ovary.d/finished.js +0 -40
- package/dist/classes/ovary.d/initrd.d.ts +0 -21
- package/dist/classes/ovary.d/initrd.js +0 -95
- package/dist/classes/ovary.d/kernel-copy.d.ts +0 -12
- package/dist/classes/ovary.d/kernel-copy.js +0 -22
- package/dist/classes/ovary.d/live-create-structure.d.ts +0 -12
- package/dist/classes/ovary.d/live-create-structure.js +0 -70
- package/dist/classes/ovary.d/luks-get-password.d.ts +0 -12
- package/dist/classes/ovary.d/luks-get-password.js +0 -57
- package/dist/classes/ovary.d/luks-home-support.d.ts +0 -12
- package/dist/classes/ovary.d/luks-home-support.js +0 -75
- package/dist/classes/ovary.d/luks-home.d.ts +0 -15
- package/dist/classes/ovary.d/luks-home.js +0 -140
- package/dist/classes/ovary.d/luks-root-bootstrap-builder.d.ts +0 -11
- package/dist/classes/ovary.d/luks-root-bootstrap-builder.js +0 -45
- package/dist/classes/ovary.d/luks-root.d.ts +0 -15
- package/dist/classes/ovary.d/luks-root.js +0 -126
- package/dist/classes/ovary.d/make-dot-disk.d.ts +0 -12
- package/dist/classes/ovary.d/make-dot-disk.js +0 -62
- package/dist/classes/ovary.d/make-efi.d.ts +0 -14
- package/dist/classes/ovary.d/make-efi.js +0 -274
- package/dist/classes/ovary.d/make-iso.d.ts +0 -13
- package/dist/classes/ovary.d/make-iso.js +0 -45
- package/dist/classes/ovary.d/make-squashfs.d.ts +0 -18
- package/dist/classes/ovary.d/make-squashfs.js +0 -114
- package/dist/classes/ovary.d/merged.d.ts +0 -27
- package/dist/classes/ovary.d/merged.js +0 -78
- package/dist/classes/ovary.d/produce.d.ts +0 -23
- package/dist/classes/ovary.d/produce.js +0 -347
- package/dist/classes/ovary.d/rexec.d.ts +0 -13
- package/dist/classes/ovary.d/rexec.js +0 -34
- package/dist/classes/ovary.d/syslinux.d.ts +0 -12
- package/dist/classes/ovary.d/syslinux.js +0 -82
- package/dist/classes/ovary.d/user-create-live.d.ts +0 -14
- package/dist/classes/ovary.d/user-create-live.js +0 -97
- package/dist/classes/ovary.d/users-remove.d.ts +0 -9
- package/dist/classes/ovary.d/users-remove.js +0 -38
- package/dist/classes/ovary.d/xorriso-command.d.ts +0 -14
- package/dist/classes/ovary.d/xorriso-command.js +0 -121
- package/dist/classes/ovary.d.ts +0 -106
- package/dist/classes/ovary.js +0 -116
- package/dist/classes/pacman.d/alpine.d.ts +0 -56
- package/dist/classes/pacman.d/alpine.js +0 -167
- package/dist/classes/pacman.d/archlinux.d.ts +0 -62
- package/dist/classes/pacman.d/archlinux.js +0 -128
- package/dist/classes/pacman.d/debian.d.ts +0 -65
- package/dist/classes/pacman.d/debian.js +0 -143
- package/dist/classes/pacman.d/fedora.d.ts +0 -53
- package/dist/classes/pacman.d/fedora.js +0 -107
- package/dist/classes/pacman.d/openmamba.d.ts +0 -52
- package/dist/classes/pacman.d/openmamba.js +0 -106
- package/dist/classes/pacman.d/opensuse.d.ts +0 -53
- package/dist/classes/pacman.d/opensuse.js +0 -109
- package/dist/classes/pacman.d.ts +0 -139
- package/dist/classes/pacman.js +0 -683
- package/dist/classes/pve-live.d.ts +0 -17
- package/dist/classes/pve-live.js +0 -52
- package/dist/classes/pxe.d.ts +0 -76
- package/dist/classes/pxe.js +0 -353
- package/dist/classes/settings.d.ts +0 -52
- package/dist/classes/settings.js +0 -185
- package/dist/classes/sources_list.d.ts +0 -28
- package/dist/classes/sources_list.js +0 -89
- package/dist/classes/systemctl.d.ts +0 -47
- package/dist/classes/systemctl.js +0 -86
- package/dist/classes/tailor.d.ts +0 -50
- package/dist/classes/tailor.js +0 -563
- package/dist/classes/tools.d.ts +0 -26
- package/dist/classes/tools.js +0 -50
- package/dist/classes/users.d.ts +0 -28
- package/dist/classes/users.js +0 -143
- package/dist/classes/utils.d/kernel.d.ts +0 -39
- package/dist/classes/utils.d/kernel.js +0 -206
- package/dist/classes/utils.d.ts +0 -328
- package/dist/classes/utils.js +0 -958
- package/dist/classes/xdg.d.ts +0 -45
- package/dist/classes/xdg.js +0 -337
- package/dist/classes/yolk.d.ts +0 -33
- package/dist/classes/yolk.js +0 -114
- package/dist/commands/adapt.d.ts +0 -17
- package/dist/commands/adapt.js +0 -33
- package/dist/commands/analyze.d.ts +0 -26
- package/dist/commands/analyze.js +0 -95
- package/dist/commands/calamares.d.ts +0 -29
- package/dist/commands/calamares.js +0 -112
- package/dist/commands/config.d.ts +0 -35
- package/dist/commands/config.js +0 -120
- package/dist/commands/cuckoo.d.ts +0 -17
- package/dist/commands/cuckoo.js +0 -61
- package/dist/commands/dad.d.ts +0 -21
- package/dist/commands/dad.js +0 -47
- package/dist/commands/export/iso.d.ts +0 -19
- package/dist/commands/export/iso.js +0 -55
- package/dist/commands/export/pkg.d.ts +0 -29
- package/dist/commands/export/pkg.js +0 -173
- package/dist/commands/export/tarballs.d.ts +0 -27
- package/dist/commands/export/tarballs.js +0 -79
- package/dist/commands/install.d.ts +0 -39
- package/dist/commands/install.js +0 -113
- package/dist/commands/kill.d.ts +0 -24
- package/dist/commands/kill.js +0 -50
- package/dist/commands/love.d.ts +0 -24
- package/dist/commands/love.js +0 -111
- package/dist/commands/mom.d.ts +0 -16
- package/dist/commands/mom.js +0 -30
- package/dist/commands/pods.d.ts +0 -22
- package/dist/commands/pods.js +0 -92
- package/dist/commands/produce.d.ts +0 -36
- package/dist/commands/produce.js +0 -218
- package/dist/commands/status.d.ts +0 -23
- package/dist/commands/status.js +0 -31
- package/dist/commands/tools/clean.d.ts +0 -18
- package/dist/commands/tools/clean.js +0 -37
- package/dist/commands/tools/repo.d.ts +0 -31
- package/dist/commands/tools/repo.js +0 -246
- package/dist/commands/tools/skel.d.ts +0 -18
- package/dist/commands/tools/skel.js +0 -44
- package/dist/commands/tools/stat.d.ts +0 -31
- package/dist/commands/tools/stat.js +0 -70
- package/dist/commands/tools/yolk.d.ts +0 -24
- package/dist/commands/tools/yolk.js +0 -45
- package/dist/commands/update.d.ts +0 -46
- package/dist/commands/update.js +0 -238
- package/dist/commands/wardrobe/get.d.ts +0 -23
- package/dist/commands/wardrobe/get.js +0 -52
- package/dist/commands/wardrobe/list.d.ts +0 -24
- package/dist/commands/wardrobe/list.js +0 -125
- package/dist/commands/wardrobe/show.d.ts +0 -25
- package/dist/commands/wardrobe/show.js +0 -97
- package/dist/commands/wardrobe/wear.d.ts +0 -26
- package/dist/commands/wardrobe/wear.js +0 -84
- package/dist/dhcpd-proxy/classes/packet.d.ts +0 -36
- package/dist/dhcpd-proxy/classes/packet.js +0 -124
- package/dist/dhcpd-proxy/index.d.ts +0 -4
- package/dist/dhcpd-proxy/index.js +0 -4
- package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +0 -45
- package/dist/dhcpd-proxy/interfaces/i-pxe.js +0 -1
- package/dist/dhcpd-proxy/lib/packet/converters.d.ts +0 -11
- package/dist/dhcpd-proxy/lib/packet/converters.js +0 -395
- package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +0 -10
- package/dist/dhcpd-proxy/lib/packet/message-types.js +0 -12
- package/dist/dhcpd-proxy/lib/packet/options.d.ts +0 -8
- package/dist/dhcpd-proxy/lib/packet/options.js +0 -264
- package/dist/dhcpd-proxy/lib/sprintf.d.ts +0 -6
- package/dist/dhcpd-proxy/lib/sprintf.js +0 -130
- package/dist/dhcpd-proxy/lib/utils.d.ts +0 -126
- package/dist/dhcpd-proxy/lib/utils.js +0 -255
- package/dist/dhcpd-proxy/simple-proxy.d.ts +0 -11
- package/dist/dhcpd-proxy/simple-proxy.js +0 -118
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -8
- package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +0 -23
- package/dist/interfaces/calamares/i-calamares-bootloader.js +0 -7
- package/dist/interfaces/calamares/i-calamares-branding.d.ts +0 -46
- package/dist/interfaces/calamares/i-calamares-branding.js +0 -1
- package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +0 -34
- package/dist/interfaces/calamares/i-calamares-displaymanager.js +0 -1
- package/dist/interfaces/calamares/i-calamares-finished.d.ts +0 -14
- package/dist/interfaces/calamares/i-calamares-finished.js +0 -1
- package/dist/interfaces/calamares/i-calamares-packages.d.ts +0 -26
- package/dist/interfaces/calamares/i-calamares-packages.js +0 -1
- package/dist/interfaces/calamares/i-calamares-partitions.d.ts +0 -39
- package/dist/interfaces/calamares/i-calamares-partitions.js +0 -1
- package/dist/interfaces/calamares/i-calamares-settings.d.ts +0 -36
- package/dist/interfaces/calamares/i-calamares-settings.js +0 -1
- package/dist/interfaces/i-addons.d.ts +0 -12
- package/dist/interfaces/i-addons.js +0 -8
- package/dist/interfaces/i-analyze.d.ts +0 -17
- package/dist/interfaces/i-analyze.js +0 -17
- package/dist/interfaces/i-app.d.ts +0 -14
- package/dist/interfaces/i-app.js +0 -8
- package/dist/interfaces/i-config-tools.d.ts +0 -15
- package/dist/interfaces/i-config-tools.js +0 -8
- package/dist/interfaces/i-devices.d.ts +0 -20
- package/dist/interfaces/i-devices.js +0 -8
- package/dist/interfaces/i-distro.d.ts +0 -23
- package/dist/interfaces/i-distro.js +0 -8
- package/dist/interfaces/i-drive-list.d.ts +0 -33
- package/dist/interfaces/i-drive-list.js +0 -8
- package/dist/interfaces/i-eggs-config.d.ts +0 -32
- package/dist/interfaces/i-eggs-config.js +0 -8
- package/dist/interfaces/i-excludes.d.ts +0 -14
- package/dist/interfaces/i-excludes.js +0 -8
- package/dist/interfaces/i-exec.d.ts +0 -11
- package/dist/interfaces/i-exec.js +0 -8
- package/dist/interfaces/i-initrd.d.ts +0 -13
- package/dist/interfaces/i-initrd.js +0 -8
- package/dist/interfaces/i-install.d.ts +0 -16
- package/dist/interfaces/i-install.js +0 -8
- package/dist/interfaces/i-installer.d.ts +0 -17
- package/dist/interfaces/i-installer.js +0 -8
- package/dist/interfaces/i-luks-passphrase.d.ts +0 -11
- package/dist/interfaces/i-luks-passphrase.js +0 -8
- package/dist/interfaces/i-materia.d.ts +0 -36
- package/dist/interfaces/i-materia.js +0 -8
- package/dist/interfaces/i-net.d.ts +0 -16
- package/dist/interfaces/i-net.js +0 -8
- package/dist/interfaces/i-os-release.d.ts +0 -5
- package/dist/interfaces/i-os-release.js +0 -1
- package/dist/interfaces/i-packages.d.ts +0 -16
- package/dist/interfaces/i-packages.js +0 -8
- package/dist/interfaces/i-partitions.d.ts +0 -16
- package/dist/interfaces/i-partitions.js +0 -8
- package/dist/interfaces/i-pxe.d.ts +0 -45
- package/dist/interfaces/i-pxe.js +0 -1
- package/dist/interfaces/i-remix.d.ts +0 -21
- package/dist/interfaces/i-remix.js +0 -8
- package/dist/interfaces/i-settings.d.ts +0 -33
- package/dist/interfaces/i-settings.js +0 -8
- package/dist/interfaces/i-user.d.ts +0 -14
- package/dist/interfaces/i-user.js +0 -8
- package/dist/interfaces/i-workdir.d.ts +0 -14
- package/dist/interfaces/i-workdir.js +0 -8
- package/dist/interfaces/i-xkb-model.d.ts +0 -24
- package/dist/interfaces/i-xkb-model.js +0 -8
- package/dist/interfaces/index.d.ts +0 -26
- package/dist/interfaces/index.js +0 -8
- package/dist/krill/classes/cfs.d.ts +0 -17
- package/dist/krill/classes/cfs.js +0 -39
- package/dist/krill/classes/krill_enums.d.ts +0 -37
- package/dist/krill/classes/krill_enums.js +0 -41
- package/dist/krill/classes/prepare.d/confirm.d.ts +0 -5
- package/dist/krill/classes/prepare.d/confirm.js +0 -30
- package/dist/krill/classes/prepare.d/keyboard.d.ts +0 -14
- package/dist/krill/classes/prepare.d/keyboard.js +0 -62
- package/dist/krill/classes/prepare.d/location.d.ts +0 -17
- package/dist/krill/classes/prepare.d/location.js +0 -59
- package/dist/krill/classes/prepare.d/network.d.ts +0 -14
- package/dist/krill/classes/prepare.d/network.js +0 -68
- package/dist/krill/classes/prepare.d/partitions.d.ts +0 -14
- package/dist/krill/classes/prepare.d/partitions.js +0 -86
- package/dist/krill/classes/prepare.d/summary.d.ts +0 -15
- package/dist/krill/classes/prepare.d/summary.js +0 -72
- package/dist/krill/classes/prepare.d/users.d.ts +0 -6
- package/dist/krill/classes/prepare.d/users.js +0 -63
- package/dist/krill/classes/prepare.d/welcome.d.ts +0 -6
- package/dist/krill/classes/prepare.d/welcome.js +0 -30
- package/dist/krill/classes/prepare.d.ts +0 -89
- package/dist/krill/classes/prepare.js +0 -319
- package/dist/krill/classes/sequence.d/add_user.d.ts +0 -20
- package/dist/krill/classes/sequence.d/add_user.js +0 -77
- package/dist/krill/classes/sequence.d/bootloader.d.ts +0 -14
- package/dist/krill/classes/sequence.d/bootloader.js +0 -117
- package/dist/krill/classes/sequence.d/bootloader_config.d.ts +0 -14
- package/dist/krill/classes/sequence.d/bootloader_config.js +0 -192
- package/dist/krill/classes/sequence.d/change_password.d.ts +0 -15
- package/dist/krill/classes/sequence.d/change_password.js +0 -18
- package/dist/krill/classes/sequence.d/del_live_user.d.ts +0 -14
- package/dist/krill/classes/sequence.d/del_live_user.js +0 -39
- package/dist/krill/classes/sequence.d/fstab.d.ts +0 -14
- package/dist/krill/classes/sequence.d/fstab.js +0 -177
- package/dist/krill/classes/sequence.d/grubcfg.d.ts +0 -17
- package/dist/krill/classes/sequence.d/grubcfg.js +0 -35
- package/dist/krill/classes/sequence.d/hostname.d.ts +0 -13
- package/dist/krill/classes/sequence.d/hostname.js +0 -50
- package/dist/krill/classes/sequence.d/initramfs.d.ts +0 -13
- package/dist/krill/classes/sequence.d/initramfs.js +0 -54
- package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +0 -14
- package/dist/krill/classes/sequence.d/initramfs_cfg.js +0 -35
- package/dist/krill/classes/sequence.d/locale.d.ts +0 -13
- package/dist/krill/classes/sequence.d/locale.js +0 -91
- package/dist/krill/classes/sequence.d/locale_cfg.d.ts +0 -10
- package/dist/krill/classes/sequence.d/locale_cfg.js +0 -58
- package/dist/krill/classes/sequence.d/m_keyboard.d.ts +0 -14
- package/dist/krill/classes/sequence.d/m_keyboard.js +0 -58
- package/dist/krill/classes/sequence.d/machine_id.d.ts +0 -15
- package/dist/krill/classes/sequence.d/machine_id.js +0 -33
- package/dist/krill/classes/sequence.d/mkfs.d.ts +0 -15
- package/dist/krill/classes/sequence.d/mkfs.js +0 -88
- package/dist/krill/classes/sequence.d/mount_fs.d.ts +0 -17
- package/dist/krill/classes/sequence.d/mount_fs.js +0 -68
- package/dist/krill/classes/sequence.d/mount_vfs.d.ts +0 -17
- package/dist/krill/classes/sequence.d/mount_vfs.js +0 -59
- package/dist/krill/classes/sequence.d/network_cfg.d.ts +0 -19
- package/dist/krill/classes/sequence.d/network_cfg.js +0 -73
- package/dist/krill/classes/sequence.d/packages.d.ts +0 -14
- package/dist/krill/classes/sequence.d/packages.js +0 -111
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +0 -17
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +0 -73
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +0 -16
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +0 -51
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +0 -17
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +0 -77
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +0 -10
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +0 -33
- package/dist/krill/classes/sequence.d/partition.d.ts +0 -14
- package/dist/krill/classes/sequence.d/partition.js +0 -84
- package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +0 -13
- package/dist/krill/classes/sequence.d/remove_installer_link.js +0 -35
- package/dist/krill/classes/sequence.d/umount.d.ts +0 -14
- package/dist/krill/classes/sequence.d/umount.js +0 -28
- package/dist/krill/classes/sequence.d/unpackfs.d.ts +0 -13
- package/dist/krill/classes/sequence.d/unpackfs.js +0 -20
- package/dist/krill/classes/sequence.d.ts +0 -134
- package/dist/krill/classes/sequence.js +0 -400
- package/dist/krill/components/finished.d.ts +0 -16
- package/dist/krill/components/finished.js +0 -56
- package/dist/krill/components/information.d.ts +0 -8
- package/dist/krill/components/information.js +0 -162
- package/dist/krill/components/install.d.ts +0 -15
- package/dist/krill/components/install.js +0 -60
- package/dist/krill/components/keyboard.d.ts +0 -16
- package/dist/krill/components/keyboard.js +0 -54
- package/dist/krill/components/location.d.ts +0 -16
- package/dist/krill/components/location.js +0 -59
- package/dist/krill/components/network.d.ts +0 -19
- package/dist/krill/components/network.js +0 -65
- package/dist/krill/components/partitions.d.ts +0 -18
- package/dist/krill/components/partitions.js +0 -89
- package/dist/krill/components/steps.d.ts +0 -13
- package/dist/krill/components/steps.js +0 -148
- package/dist/krill/components/summary.d.ts +0 -25
- package/dist/krill/components/summary.js +0 -77
- package/dist/krill/components/title.d.ts +0 -11
- package/dist/krill/components/title.js +0 -35
- package/dist/krill/components/users.d.ts +0 -24
- package/dist/krill/components/users.js +0 -80
- package/dist/krill/components/welcome.d.ts +0 -13
- package/dist/krill/components/welcome.js +0 -63
- package/dist/krill/interfaces/i_krill.d.ts +0 -44
- package/dist/krill/interfaces/i_krill.js +0 -8
- package/dist/krill/interfaces/i_krill_config.d.ts +0 -35
- package/dist/krill/interfaces/i_krill_config.js +0 -8
- package/dist/krill/lib/get_address.d.ts +0 -8
- package/dist/krill/lib/get_address.js +0 -23
- package/dist/krill/lib/get_dns.d.ts +0 -8
- package/dist/krill/lib/get_dns.js +0 -23
- package/dist/krill/lib/get_domain.d.ts +0 -8
- package/dist/krill/lib/get_domain.js +0 -23
- package/dist/krill/lib/get_gateway.d.ts +0 -8
- package/dist/krill/lib/get_gateway.js +0 -23
- package/dist/krill/lib/get_hostname.d.ts +0 -8
- package/dist/krill/lib/get_hostname.js +0 -23
- package/dist/krill/lib/get_luks_passphrase.d.ts +0 -8
- package/dist/krill/lib/get_luks_passphrase.js +0 -32
- package/dist/krill/lib/get_netmask.d.ts +0 -8
- package/dist/krill/lib/get_netmask.js +0 -23
- package/dist/krill/lib/get_password.d.ts +0 -8
- package/dist/krill/lib/get_password.js +0 -36
- package/dist/krill/lib/get_userfullname.d.ts +0 -8
- package/dist/krill/lib/get_userfullname.js +0 -23
- package/dist/krill/lib/get_username.d.ts +0 -8
- package/dist/krill/lib/get_username.js +0 -23
- package/dist/krill/lib/select_address_type.d.ts +0 -8
- package/dist/krill/lib/select_address_type.js +0 -24
- package/dist/krill/lib/select_filesystem_type.d.ts +0 -8
- package/dist/krill/lib/select_filesystem_type.js +0 -40
- package/dist/krill/lib/select_installation_device.d.ts +0 -8
- package/dist/krill/lib/select_installation_device.js +0 -40
- package/dist/krill/lib/select_installation_mode.d.ts +0 -9
- package/dist/krill/lib/select_installation_mode.js +0 -25
- package/dist/krill/lib/select_interface.d.ts +0 -8
- package/dist/krill/lib/select_interface.js +0 -24
- package/dist/krill/lib/select_keyboard_layout.d.ts +0 -11
- package/dist/krill/lib/select_keyboard_layout.js +0 -36
- package/dist/krill/lib/select_keyboard_model.d.ts +0 -11
- package/dist/krill/lib/select_keyboard_model.js +0 -34
- package/dist/krill/lib/select_keyboard_option.d.ts +0 -11
- package/dist/krill/lib/select_keyboard_option.js +0 -34
- package/dist/krill/lib/select_keyboard_variant.d.ts +0 -11
- package/dist/krill/lib/select_keyboard_variant.js +0 -35
- package/dist/krill/lib/select_languages.d.ts +0 -8
- package/dist/krill/lib/select_languages.js +0 -28
- package/dist/krill/lib/select_regions.d.ts +0 -8
- package/dist/krill/lib/select_regions.js +0 -24
- package/dist/krill/lib/select_replaced_partition.d.ts +0 -8
- package/dist/krill/lib/select_replaced_partition.js +0 -31
- package/dist/krill/lib/select_user_swap_choice.d.ts +0 -9
- package/dist/krill/lib/select_user_swap_choice.js +0 -35
- package/dist/krill/lib/select_zones.d.ts +0 -8
- package/dist/krill/lib/select_zones.js +0 -518
- package/dist/lib/kill_me_softly.d.ts +0 -11
- package/dist/lib/kill_me_softly.js +0 -61
- package/dist/lib/utils.d.ts +0 -19
- package/dist/lib/utils.js +0 -65
- package/scripts/luks-root-bootstrap-create.sh +0 -235
- package/scripts/luks-root-unlock.sh +0 -172
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/luks-home-support.ts
|
|
3
|
-
* penguins-eggs v.25.10.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
import Ovary from '../ovary.js';
|
|
9
|
-
/**
|
|
10
|
-
* Installa i file necessari per sbloccare home.img LUKS durante il boot
|
|
11
|
-
*/
|
|
12
|
-
export declare function installHomecryptSupport(this: Ovary, squashfsRoot: string, homeImgPath: string): void;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/luks-home-support.ts
|
|
3
|
-
* penguins-eggs v.25.10.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
// packages
|
|
9
|
-
import fs from 'fs';
|
|
10
|
-
import path from 'path';
|
|
11
|
-
import { fileURLToPath } from 'url';
|
|
12
|
-
import { dirname } from 'path';
|
|
13
|
-
import Utils from '../utils.js';
|
|
14
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
-
const __dirname = dirname(__filename);
|
|
16
|
-
/**
|
|
17
|
-
* Installa i file necessari per sbloccare home.img LUKS durante il boot
|
|
18
|
-
*/
|
|
19
|
-
export function installHomecryptSupport(squashfsRoot, homeImgPath) {
|
|
20
|
-
Utils.warning('installing encrypted home support...');
|
|
21
|
-
// console.log("squashfsRoot:", squashfsRoot)
|
|
22
|
-
// console.log("homeImgPath:", homeImgPath)
|
|
23
|
-
// Leggi il template bash
|
|
24
|
-
const templatePath = path.join(__dirname, '../../../scripts/mount-encrypted-home.sh');
|
|
25
|
-
let bashScript = fs.readFileSync(templatePath, 'utf8');
|
|
26
|
-
// Sostituisci il placeholder con il path reale
|
|
27
|
-
bashScript = bashScript.replace('__HOME_IMG_PATH__', homeImgPath);
|
|
28
|
-
// Systemd service
|
|
29
|
-
const systemdService = `[Unit]
|
|
30
|
-
Description=Unlock and mount encrypted home.img
|
|
31
|
-
DefaultDependencies=no
|
|
32
|
-
After=systemd-udev-settle.service local-fs-pre.target
|
|
33
|
-
Before=local-fs.target display-manager.service
|
|
34
|
-
ConditionPathExists=${homeImgPath}
|
|
35
|
-
|
|
36
|
-
[Service]
|
|
37
|
-
Type=oneshot
|
|
38
|
-
RemainAfterExit=yes
|
|
39
|
-
StandardInput=tty
|
|
40
|
-
StandardOutput=journal+console
|
|
41
|
-
StandardError=journal+console
|
|
42
|
-
TTYPath=/dev/console
|
|
43
|
-
TTYReset=yes
|
|
44
|
-
TTYVHangup=yes
|
|
45
|
-
ExecStart=/usr/local/bin/mount-encrypted-home.sh
|
|
46
|
-
ExecStop=/bin/bash -c 'umount /home && cryptsetup close live-home'
|
|
47
|
-
|
|
48
|
-
[Install]
|
|
49
|
-
WantedBy=local-fs.target
|
|
50
|
-
`;
|
|
51
|
-
// Percorsi di destinazione
|
|
52
|
-
const scriptPath = path.join(squashfsRoot, 'usr/local/bin/mount-encrypted-home.sh');
|
|
53
|
-
const servicePath = path.join(squashfsRoot, 'etc/systemd/system/mount-encrypted-home.service');
|
|
54
|
-
const symlinkDir = path.join(squashfsRoot, 'etc/systemd/system/local-fs.target.wants');
|
|
55
|
-
const symlinkPath = path.join(symlinkDir, 'mount-encrypted-home.service');
|
|
56
|
-
// Crea le directory necessarie
|
|
57
|
-
fs.mkdirSync(path.dirname(scriptPath), { recursive: true });
|
|
58
|
-
fs.mkdirSync(path.dirname(servicePath), { recursive: true });
|
|
59
|
-
fs.mkdirSync(symlinkDir, { recursive: true });
|
|
60
|
-
// Scrivi lo script
|
|
61
|
-
fs.writeFileSync(scriptPath, bashScript);
|
|
62
|
-
fs.chmodSync(scriptPath, 0o755);
|
|
63
|
-
// console.log(`✓ Created: ${scriptPath}`)
|
|
64
|
-
// Scrivi il service
|
|
65
|
-
fs.writeFileSync(servicePath, systemdService);
|
|
66
|
-
// console.log(`✓ Created: ${servicePath}`)
|
|
67
|
-
// Crea il symlink per abilitare il service
|
|
68
|
-
if (fs.existsSync(symlinkPath)) {
|
|
69
|
-
fs.unlinkSync(symlinkPath);
|
|
70
|
-
}
|
|
71
|
-
fs.symlinkSync('../mount-encrypted-home.service', symlinkPath);
|
|
72
|
-
// console.log(`✓ Enabled: mount-encrypted-home.service`)
|
|
73
|
-
// console.log('Encrypted home support installed successfully')
|
|
74
|
-
// console.log('Logs will be available at: /var/log/mount-encrypted-home.log')
|
|
75
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/luks-home.ts
|
|
3
|
-
* penguins-eggs v.25.10.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
import Ovary from '../ovary.js';
|
|
9
|
-
/**
|
|
10
|
-
* luksHome()
|
|
11
|
-
*
|
|
12
|
-
* create a container LUKS with the entire
|
|
13
|
-
* filesystem.squashfs
|
|
14
|
-
*/
|
|
15
|
-
export declare function luksHome(this: Ovary, clone?: boolean, homecrypt?: boolean): Promise<void>;
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/luks-home.ts
|
|
3
|
-
* penguins-eggs v.25.10.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
// packages
|
|
9
|
-
import fs from 'fs';
|
|
10
|
-
import { spawn } from 'node:child_process';
|
|
11
|
-
import Utils from '../utils.js';
|
|
12
|
-
import { exec } from '../../lib/utils.js';
|
|
13
|
-
/**
|
|
14
|
-
* luksHome()
|
|
15
|
-
*
|
|
16
|
-
* create a container LUKS with the entire
|
|
17
|
-
* filesystem.squashfs
|
|
18
|
-
*/
|
|
19
|
-
export async function luksHome(clone = false, homecrypt = false) {
|
|
20
|
-
try {
|
|
21
|
-
/**
|
|
22
|
-
* this.luksName = 'home.img';
|
|
23
|
-
* this.luksFile = `/tmp/${luksName}`
|
|
24
|
-
* this.luksDevice = `/dev/mapper/${luksName}`
|
|
25
|
-
* this.luksMappedName = this.luksName
|
|
26
|
-
* this.luksMountpoint = `/tmp/mnt/${luksName}`
|
|
27
|
-
* this.luksPassword = 'evolution'
|
|
28
|
-
*/
|
|
29
|
-
console.log();
|
|
30
|
-
console.log('====================================');
|
|
31
|
-
console.log(` Creating ${this.luksName}`);
|
|
32
|
-
console.log('====================================');
|
|
33
|
-
// Utils.warning('1. Calculation of space requirements...')
|
|
34
|
-
let sizeString = (await exec('du -sb --exclude=/home/eggs /home', { capture: true })).data.trim().split(/\s+/)[0];
|
|
35
|
-
let size = Number.parseInt(sizeString, 10);
|
|
36
|
-
// const fsOverhead = Math.max(size * 0.1, 100 * 1024 * 1024)
|
|
37
|
-
// const luksSize = size + fsOverhead + (size * 0.2) // +20% di sicurezza
|
|
38
|
-
const luksSize = Math.ceil(size * 2);
|
|
39
|
-
Utils.warning(`homes size: ${bytesToGB(size)}`);
|
|
40
|
-
Utils.warning(`partition LUKS ${this.luksFile} size: ${bytesToGB(luksSize)}`);
|
|
41
|
-
Utils.warning(`creating partition LUKS: ${this.luksFile}`);
|
|
42
|
-
await executeCommand('truncate', ['--size', `${luksSize}`, this.luksFile]);
|
|
43
|
-
Utils.warning(`formatting ${this.luksFile} as a LUKS volume...`);
|
|
44
|
-
await executeCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
|
|
45
|
-
this.luksUuid = (await exec(`cryptsetup luksUUID ${this.luksFile}`, { capture: true, echo: false })).data.trim();
|
|
46
|
-
Utils.warning(`LUKS uuid: ${this.luksUuid}`);
|
|
47
|
-
Utils.warning(`opening the LUKS volume. It will be mapped to ${this.luksDevice}`);
|
|
48
|
-
await executeCommand('cryptsetup', ['luksOpen', this.luksFile, this.luksMappedName], `${this.luksPassword}\n`);
|
|
49
|
-
Utils.warning(`formatting c ext4 `);
|
|
50
|
-
await exec(`mkfs.ext4 -L live-home ${this.luksDevice}`, this.echo);
|
|
51
|
-
Utils.warning(`mounting ${this.luksDevice} on ${this.luksMountpoint}`);
|
|
52
|
-
if (fs.existsSync(this.luksMountpoint)) {
|
|
53
|
-
if (!Utils.isMountpoint(this.luksMountpoint)) {
|
|
54
|
-
await exec(`rm -rf ${this.luksMountpoint}`, this.echo);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
throw new Error(`${this.luksMountpoint} is already mounted, process will abort!`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
|
|
61
|
-
await exec(`mount /dev/mapper/${this.luksName} ${this.luksMountpoint}`, this.echo);
|
|
62
|
-
Utils.warning(`copying /home on ${this.luksMountpoint}`);
|
|
63
|
-
await exec(`rsync -ah --exclude='eggs' /home/ ${this.luksMountpoint}`, this.echo);
|
|
64
|
-
Utils.warning(`saving user accounts info...`);
|
|
65
|
-
// Crea directory per backup system files
|
|
66
|
-
await exec(`mkdir -p ${this.luksMountpoint}/.system-backup`, this.echo);
|
|
67
|
-
// Filtra solo utenti con UID >= 1000
|
|
68
|
-
await exec(`awk -F: '$3 >= 1000 {print}' /etc/passwd > ${this.luksMountpoint}/.system-backup/passwd`, this.echo);
|
|
69
|
-
await exec(`awk -F: '$3 >= 1000 {print}' /etc/shadow > ${this.luksMountpoint}/.system-backup/shadow`, this.echo);
|
|
70
|
-
// Per i gruppi: salva TUTTI (non filtrare per GID)
|
|
71
|
-
// Gli utenti possono appartenere a gruppi di sistema (sudo, audio, video, etc.)
|
|
72
|
-
await exec(`cp /etc/group ${this.luksMountpoint}/.system-backup/group`, this.echo);
|
|
73
|
-
await exec(`cp /etc/gshadow ${this.luksMountpoint}/.system-backup/gshadow`, this.echo);
|
|
74
|
-
Utils.warning(`unmount ${this.luksDevice}`);
|
|
75
|
-
await exec(`umount ${this.luksMountpoint}`, this.echo);
|
|
76
|
-
Utils.warning(`closing LUKS volume ${this.luksMappedName}.`);
|
|
77
|
-
await executeCommand('cryptsetup', ['close', this.luksMappedName]);
|
|
78
|
-
Utils.warning(`moving ${this.luksName} to (ISO)/live/.`);
|
|
79
|
-
await exec(`mv ${this.luksFile} ${this.settings.iso_work}/live`, this.echo);
|
|
80
|
-
Utils.warning('encryption process successfully completed!');
|
|
81
|
-
/**
|
|
82
|
-
* YOU MUST! unlink the key on production
|
|
83
|
-
*/
|
|
84
|
-
// fs.unlinkSync(`${this.settings.iso_work}/live/home.key`)
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
if (error instanceof Error) {
|
|
88
|
-
Utils.error(`ERROR: ${error.message}`);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
Utils.error(`An unknown error has occurred.`);
|
|
92
|
-
}
|
|
93
|
-
Utils.warning('Cleaning performed following the error...');
|
|
94
|
-
if (fs.existsSync(this.luksMountpoint)) {
|
|
95
|
-
await exec(`umount -lf ${this.luksMountpoint}`).catch(() => { });
|
|
96
|
-
}
|
|
97
|
-
if (fs.existsSync(this.luksDevice)) {
|
|
98
|
-
await executeCommand('cryptsetup', ['luksClose', this.luksName]).catch(() => { });
|
|
99
|
-
}
|
|
100
|
-
await Utils.pressKeyToExit();
|
|
101
|
-
process.exit(1);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Funzione helper per eseguire comandi esterni in modo asincrono,
|
|
106
|
-
* gestendo lo standard input per passare le password.
|
|
107
|
-
* Restituisce una Promise che si risolve al successo o si rigetta in caso di errore.
|
|
108
|
-
*/
|
|
109
|
-
function executeCommand(command, args, stdinData) {
|
|
110
|
-
return new Promise((resolve, reject) => {
|
|
111
|
-
// Se passiamo dati a stdin, dobbiamo usare 'pipe'. Altrimenti, 'inherit'.
|
|
112
|
-
const stdioConfig = stdinData ? ['pipe', 'inherit', 'inherit'] : 'inherit';
|
|
113
|
-
const process = spawn(command, args, { stdio: stdioConfig });
|
|
114
|
-
// Se fornito, scriviamo i dati (es. la password) nello stdin del processo.
|
|
115
|
-
if (stdinData && process.stdin) {
|
|
116
|
-
process.stdin.write(stdinData);
|
|
117
|
-
process.stdin.end();
|
|
118
|
-
}
|
|
119
|
-
process.on('error', (err) => {
|
|
120
|
-
reject(new Error(`Error starting command "${command}": ${err.message}`));
|
|
121
|
-
});
|
|
122
|
-
process.on('close', (code) => {
|
|
123
|
-
if (code === 0) {
|
|
124
|
-
resolve(); // Success
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
reject(new Error(`Command "${command} ${args.join(' ')}" ended with error code ${code}`));
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Converte bytes in gigabytes per la visualizzazione.
|
|
134
|
-
*/
|
|
135
|
-
function bytesToGB(bytes) {
|
|
136
|
-
if (bytes === 0)
|
|
137
|
-
return '0.00 GB';
|
|
138
|
-
const gigabytes = bytes / (1024 * 1024 * 1024);
|
|
139
|
-
return gigabytes.toFixed(2) + ' GB';
|
|
140
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* luks-root-bootstrap-builder.ts
|
|
3
|
-
*
|
|
4
|
-
* Crea un filesystem.squashfs bootstrap completo con Debian
|
|
5
|
-
* per sbloccare il sistema principale cifrato
|
|
6
|
-
*/
|
|
7
|
-
import Ovary from '../ovary.js';
|
|
8
|
-
/**
|
|
9
|
-
* Crea il filesystem bootstrap completo
|
|
10
|
-
*/
|
|
11
|
-
export declare function createBootstrapFilesystem(this: Ovary, outputSquashfs: string): Promise<void>;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* luks-root-bootstrap-builder.ts
|
|
3
|
-
*
|
|
4
|
-
* Crea un filesystem.squashfs bootstrap completo con Debian
|
|
5
|
-
* per sbloccare il sistema principale cifrato
|
|
6
|
-
*/
|
|
7
|
-
import fs from 'fs';
|
|
8
|
-
import path from 'path';
|
|
9
|
-
import Utils from '../utils.js';
|
|
10
|
-
import { exec } from '../../lib/utils.js';
|
|
11
|
-
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
12
|
-
/**
|
|
13
|
-
* Crea il filesystem bootstrap completo
|
|
14
|
-
*/
|
|
15
|
-
export async function createBootstrapFilesystem(outputSquashfs) {
|
|
16
|
-
Utils.warning('Creating full Debian bootstrap filesystem...');
|
|
17
|
-
Utils.warning('This will take several minutes...');
|
|
18
|
-
const scriptsDir = path.join(__dirname, '../../../scripts');
|
|
19
|
-
const createScript = path.join(scriptsDir, 'luks-root-bootstrap-create.sh');
|
|
20
|
-
const unlockScript = path.join(scriptsDir, 'luks-root-unlock.sh');
|
|
21
|
-
// Verifica che gli script esistano
|
|
22
|
-
if (!fs.existsSync(createScript)) {
|
|
23
|
-
throw new Error(`Build script not found: ${createScript}`);
|
|
24
|
-
}
|
|
25
|
-
if (!fs.existsSync(unlockScript)) {
|
|
26
|
-
throw new Error(`Unlock script not found: ${unlockScript}`);
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
29
|
-
// Esegui lo script di creazione bash
|
|
30
|
-
Utils.warning('Executing bootstrap creation script...');
|
|
31
|
-
await exec(`bash ${createScript} ${outputSquashfs} ${unlockScript}`, { echo: true });
|
|
32
|
-
// Verifica che il file sia stato creato
|
|
33
|
-
if (!fs.existsSync(outputSquashfs)) {
|
|
34
|
-
throw new Error('Bootstrap filesystem was not created');
|
|
35
|
-
}
|
|
36
|
-
const stats = fs.statSync(outputSquashfs);
|
|
37
|
-
const sizeMB = (stats.size / 1024 / 1024).toFixed(2);
|
|
38
|
-
Utils.success(`✓ Bootstrap filesystem created: ${sizeMB} MB`);
|
|
39
|
-
Utils.success(' Full Debian system with systemd and encrypted root unlock');
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
Utils.error(`Failed to create bootstrap filesystem: ${error}`);
|
|
43
|
-
throw error;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/encrypt-live-fs.ts
|
|
3
|
-
* penguins-eggs v.25.10.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
import Ovary from '../ovary.js';
|
|
9
|
-
/**
|
|
10
|
-
* luksRoot()
|
|
11
|
-
*
|
|
12
|
-
* create a container LUKS with the entire
|
|
13
|
-
* filesystem.squashfs
|
|
14
|
-
*/
|
|
15
|
-
export declare function luksRoot(this: Ovary): Promise<void>;
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/encrypt-live-fs.ts
|
|
3
|
-
* penguins-eggs v.25.10.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
// packages
|
|
9
|
-
import fs from 'fs';
|
|
10
|
-
import { spawn } from 'node:child_process';
|
|
11
|
-
import Utils from '../utils.js';
|
|
12
|
-
import { exec } from '../../lib/utils.js';
|
|
13
|
-
/**
|
|
14
|
-
* luksRoot()
|
|
15
|
-
*
|
|
16
|
-
* create a container LUKS with the entire
|
|
17
|
-
* filesystem.squashfs
|
|
18
|
-
*/
|
|
19
|
-
export async function luksRoot() {
|
|
20
|
-
// filesystem.squashfs.real
|
|
21
|
-
const live_fs = `${this.settings.iso_work}live/filesystem.squashfs.real`;
|
|
22
|
-
try {
|
|
23
|
-
/**
|
|
24
|
-
* this.luksName = 'luks.img';
|
|
25
|
-
* this.luksFile = `/tmp/${luksName}`
|
|
26
|
-
* this.luksDevice = `/dev/mapper/${luksName}`
|
|
27
|
-
* this.luksMappedName = this.luksName
|
|
28
|
-
* this.luksMountpoint = `/tmp/mnt/${luksName}`
|
|
29
|
-
* this.luksPassword = 'evolution'
|
|
30
|
-
*/
|
|
31
|
-
console.log();
|
|
32
|
-
console.log('====================================');
|
|
33
|
-
console.log(` Creating ${this.luksName}`);
|
|
34
|
-
console.log('====================================');
|
|
35
|
-
// Utils.warning('1. Calculation of space requirements...')
|
|
36
|
-
const sizeString = (await exec(`unsquashfs -s ${live_fs} | grep "Filesystem size" | sed -e 's/.*size //' -e 's/ .*//'`, { capture: true, echo: false })).data;
|
|
37
|
-
let size = Number.parseInt(sizeString); // Dimensione in Byte
|
|
38
|
-
// Add overhead * 1.20
|
|
39
|
-
const luksSize = Math.ceil(size * 1.20);
|
|
40
|
-
Utils.warning(`filesystem.squashfs size: ${bytesToGB(size)}`);
|
|
41
|
-
Utils.warning(`partition LUKS ${this.luksFile} size: ${bytesToGB(luksSize)}`);
|
|
42
|
-
Utils.warning(`creating partition LUKS: ${this.luksFile}`);
|
|
43
|
-
await executeCommand('truncate', ['--size', `${luksSize}`, this.luksFile]);
|
|
44
|
-
Utils.warning(`formatting ${this.luksFile} as a LUKS volume...`);
|
|
45
|
-
await executeCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
|
|
46
|
-
this.luksUuid = (await exec(`cryptsetup luksUUID ${this.luksFile}`, { capture: true, echo: false })).data.trim();
|
|
47
|
-
Utils.warning(`LUKS uuid: ${this.luksUuid}`);
|
|
48
|
-
Utils.warning(`opening the LUKS volume. It will be mapped to ${this.luksDevice}`);
|
|
49
|
-
await executeCommand('cryptsetup', ['luksOpen', this.luksFile, this.luksMappedName], `${this.luksPassword}\n`);
|
|
50
|
-
Utils.warning(`formatting ext4`);
|
|
51
|
-
await exec(`mkfs.ext4 -L live-root ${this.luksDevice}`, this.echo);
|
|
52
|
-
Utils.warning(`mounting ${this.luksDevice} on ${this.luksMountpoint}`);
|
|
53
|
-
if (fs.existsSync(this.luksMountpoint)) {
|
|
54
|
-
if (!Utils.isMountpoint(this.luksMountpoint)) {
|
|
55
|
-
await exec(`rm -rf ${this.luksMountpoint}`, this.echo);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
throw new Error(`${this.luksMountpoint} is already mounted, process will abort!`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
|
|
62
|
-
await exec(`mount /dev/mapper/${this.luksName} ${this.luksMountpoint}`, this.echo);
|
|
63
|
-
Utils.warning(`moving ${live_fs} ${this.luksMountpoint}/filesystem.squashfs`);
|
|
64
|
-
await exec(`mv ${live_fs} ${this.luksMountpoint}/filesystem.squashfs`, this.echo);
|
|
65
|
-
Utils.warning(`unmount ${this.luksMountpoint} `);
|
|
66
|
-
await exec(`umount ${this.luksMountpoint}`, this.echo);
|
|
67
|
-
Utils.warning(`closing LUKS volume ${this.luksFile}.`);
|
|
68
|
-
await executeCommand('cryptsetup', ['close', this.luksMappedName]);
|
|
69
|
-
Utils.warning(`moving ${this.luksMappedName} on (ISO)/live.`);
|
|
70
|
-
await exec(`mv ${this.luksFile} ${this.settings.iso_work}/live`, this.echo);
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
if (error instanceof Error) {
|
|
74
|
-
Utils.error(`ERROR: ${error.message}`);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
Utils.error(`An unknown error has occurred.`);
|
|
78
|
-
}
|
|
79
|
-
Utils.warning('Cleaning performed following the error...');
|
|
80
|
-
if (fs.existsSync(this.luksMountpoint)) {
|
|
81
|
-
await exec(`umount -lf ${this.luksMountpoint}`).catch(() => { });
|
|
82
|
-
}
|
|
83
|
-
if (fs.existsSync(this.luksDevice)) {
|
|
84
|
-
await executeCommand('cryptsetup', ['luksClose', this.luksName]).catch(() => { });
|
|
85
|
-
}
|
|
86
|
-
await Utils.pressKeyToExit();
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Funzione helper per eseguire comandi esterni in modo asincrono,
|
|
92
|
-
* gestendo lo standard input per passare le password.
|
|
93
|
-
* Restituisce una Promise che si risolve al successo o si rigetta in caso di errore.
|
|
94
|
-
*/
|
|
95
|
-
function executeCommand(command, args, stdinData) {
|
|
96
|
-
return new Promise((resolve, reject) => {
|
|
97
|
-
// Se passiamo dati a stdin, dobbiamo usare 'pipe'. Altrimenti, 'inherit'.
|
|
98
|
-
const stdioConfig = stdinData ? ['pipe', 'inherit', 'inherit'] : 'inherit';
|
|
99
|
-
const process = spawn(command, args, { stdio: stdioConfig });
|
|
100
|
-
// Se fornito, scriviamo i dati (es. la password) nello stdin del processo.
|
|
101
|
-
if (stdinData && process.stdin) {
|
|
102
|
-
process.stdin.write(stdinData);
|
|
103
|
-
process.stdin.end();
|
|
104
|
-
}
|
|
105
|
-
process.on('error', (err) => {
|
|
106
|
-
reject(new Error(`Error starting command "${command}": ${err.message}`));
|
|
107
|
-
});
|
|
108
|
-
process.on('close', (code) => {
|
|
109
|
-
if (code === 0) {
|
|
110
|
-
resolve(); // Success
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
reject(new Error(`Command "${command} ${args.join(' ')}" ended with error code ${code}`));
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Converte bytes in gigabytes per la visualizzazione.
|
|
120
|
-
*/
|
|
121
|
-
function bytesToGB(bytes) {
|
|
122
|
-
if (bytes === 0)
|
|
123
|
-
return '0.00 GB';
|
|
124
|
-
const gigabytes = bytes / (1024 * 1024 * 1024);
|
|
125
|
-
return gigabytes.toFixed(2) + ' GB';
|
|
126
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/produce.ts
|
|
3
|
-
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
import Ovary from './../ovary.js';
|
|
9
|
-
/**
|
|
10
|
-
* makeDotDisk
|
|
11
|
-
*/
|
|
12
|
-
export declare function makeDotDisk(this: Ovary, info?: string, mksquashfs?: string, mkisofs?: string): void;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/produce.ts
|
|
3
|
-
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
// packages
|
|
9
|
-
import fs from 'node:fs';
|
|
10
|
-
import shx from 'shelljs';
|
|
11
|
-
import path from 'path';
|
|
12
|
-
// interfaces
|
|
13
|
-
// libraries
|
|
14
|
-
// classes
|
|
15
|
-
import Utils from './../utils.js';
|
|
16
|
-
// _dirname
|
|
17
|
-
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
18
|
-
/**
|
|
19
|
-
* makeDotDisk
|
|
20
|
-
*/
|
|
21
|
-
export function makeDotDisk(info = '', mksquashfs = '', mkisofs = '') {
|
|
22
|
-
const dotDisk = this.settings.iso_work + '.disk';
|
|
23
|
-
if (fs.existsSync(dotDisk)) {
|
|
24
|
-
shx.rm('-rf', dotDisk);
|
|
25
|
-
}
|
|
26
|
-
shx.mkdir('-p', dotDisk);
|
|
27
|
-
/**
|
|
28
|
-
* write volid .disk/info
|
|
29
|
-
* Required
|
|
30
|
-
*/
|
|
31
|
-
let volidContent = this.settings.isoFilename;
|
|
32
|
-
fs.writeFileSync(path.join(dotDisk, 'info'), volidContent, 'utf-8');
|
|
33
|
-
/**
|
|
34
|
-
* A readme now replace the old .disk/info
|
|
35
|
-
*/
|
|
36
|
-
let readme = ``;
|
|
37
|
-
readme += `# penguins_eggs\n`;
|
|
38
|
-
readme += `\n`;
|
|
39
|
-
readme += `Volinfo: ${this.volid}\n`;
|
|
40
|
-
readme += `Image created at: ${Utils.formatDate(new Date())} using penguins_eggs v. ${Utils.getPackageVersion()})\n`;
|
|
41
|
-
readme += `repo: [penguins-eggs](https://github.com/penguins-eggs)\n`;
|
|
42
|
-
readme += `blog: [penguins-eggs.net](https://penguins-eggs.net)\n`;
|
|
43
|
-
readme += `author: [Piero Proietti](mailto://piero.proietti@gmail.com)\n`;
|
|
44
|
-
fs.writeFileSync(path.join(dotDisk, 'README.md'), readme, 'utf-8');
|
|
45
|
-
/**
|
|
46
|
-
* write mksquashfs as .disk/mksquashfs
|
|
47
|
-
*/
|
|
48
|
-
fs.writeFileSync(path.join(dotDisk, 'mksquashfs'), mksquashfs, 'utf-8');
|
|
49
|
-
/**
|
|
50
|
-
* write mkisofs as .disk/mkisofs
|
|
51
|
-
*/
|
|
52
|
-
fs.writeFileSync(path.join(dotDisk, 'mkisofs'), mkisofs, 'utf-8');
|
|
53
|
-
/**
|
|
54
|
-
* touch uuid as file name on .disk/id
|
|
55
|
-
*
|
|
56
|
-
* This is a DEBIAN standard
|
|
57
|
-
*/
|
|
58
|
-
if (this.uuid && this.uuid.trim() !== '') {
|
|
59
|
-
shx.mkdir(path.join(dotDisk, 'id'));
|
|
60
|
-
shx.touch(path.join(dotDisk, 'id', this.uuid));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/ovary.d/make-efi.ts
|
|
3
|
-
* penguins-eggs v.25.7.x / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
import Ovary from '../ovary.js';
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param this
|
|
12
|
-
* @param theme
|
|
13
|
-
*/
|
|
14
|
-
export declare function makeEfi(this: Ovary, theme?: string): Promise<void>;
|