penguins-eggs 25.10.23 → 25.10.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.oclif.manifest.json +17 -3
- package/README.md +34 -32
- package/README.pdf +1008 -1045
- package/addons/eggs/adapt/applications/eggs-adapt.desktop +0 -0
- package/addons/eggs/pve/applications/eggs-pve.desktop +0 -0
- package/addons/eggs/rsupport/applications/eggs-rsupport.desktop +0 -0
- package/addons/eggs/theme/applications/install-system.desktop +0 -0
- package/addons/eggs/theme/livecd/{grub.theme.cfg → full.grub.theme.cfg} +1 -1
- package/addons/eggs/theme/livecd/{isolinux.theme.cfg → full.isolinux.theme.cfg} +1 -1
- package/addons/eggs/theme/livecd/generic-splash.png +0 -0
- package/addons/eggs/theme/livecd/generic.grub.main.cfg +29 -0
- package/addons/eggs/theme/livecd/generic.grub.theme.cfg +67 -0
- package/addons/eggs/theme/livecd/generic.isolinux.main.cfg +34 -0
- package/addons/eggs/theme/livecd/generic.isolinux.theme.cfg +34 -0
- package/addons/eggs/theme/livecd/simple.grub.main.cfg +29 -0
- package/addons/eggs/theme/livecd/simple.grub.theme.cfg +67 -0
- package/addons/eggs/theme/livecd/{isolinux.main.simple.cfg → simple.isolinux.main.cfg} +1 -1
- package/addons/eggs/theme/livecd/simple.isolinux.theme.cfg +47 -0
- package/assets/calamares/install-system.sh +0 -0
- package/assets/penguins-eggs.desktop +0 -0
- package/assets/penguins-krill.desktop +0 -0
- package/assets/penguins-links-add.desktop +0 -0
- package/assets/penguins-live-installer.desktop +0 -0
- package/bin/dev.js +0 -0
- package/conf/distros/alpine/calamares/calamares-modules/machineid-openrc/machineid-openrc.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
- package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/fedora/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/focal/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/focal/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/noble/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/noble/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-aptsources.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-l10n-helper.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-logs-helper.sh +0 -0
- package/conf/distros/noble/calamares/libexec/calamares-nomodeset.sh +0 -0
- package/conf/distros/opensuse/calamares/calamares-modules/bootloaderspecification/bootloaderspecification.sh +0 -0
- package/conf/distros/opensuse/calamares/settings.yml +0 -0
- package/conf/distros/opensuse/calamares/zstd2lzo.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/cleanup/cleanup.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/dpkg-unsafe-io/dpkg-unsafe-io.sh +0 -0
- package/conf/distros/trixie/calamares/calamares-modules/sources-yolk/sources-yolk.sh +0 -0
- package/conf/init/unattended.sh +0 -0
- package/dist/classes/bleach.d.ts +37 -0
- package/dist/classes/bleach.js +148 -0
- package/dist/classes/cli-autologin.d.ts +52 -0
- package/dist/classes/cli-autologin.js +252 -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 +175 -0
- package/dist/classes/distro.d.ts +32 -0
- package/dist/classes/distro.js +363 -0
- package/dist/classes/diversions.d.ts +53 -0
- package/dist/classes/diversions.js +131 -0
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +85 -0
- package/dist/classes/incubation/customize/customize-partitions.d.ts +4 -0
- package/dist/classes/incubation/customize/customize-partitions.js +29 -0
- package/dist/classes/incubation/fisherman-helper/initcpio.d.ts +1 -0
- package/dist/classes/incubation/fisherman-helper/initcpio.js +69 -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 +116 -0
- package/dist/classes/incubation/fisherman.d.ts +71 -0
- package/dist/classes/incubation/fisherman.js +281 -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/archlinux.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/archlinux.js +82 -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 +101 -0
- package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/fedora.js +81 -0
- package/dist/classes/incubation/incubator.d/focal.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/focal.js +85 -0
- package/dist/classes/incubation/incubator.d/manjaro.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/manjaro.js +82 -0
- package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/noble.js +102 -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/trixie.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/trixie.js +98 -0
- package/dist/classes/incubation/incubator.d.ts +48 -0
- package/dist/classes/incubation/incubator.js +378 -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/bind-live-fs.d.ts +18 -0
- package/dist/classes/ovary.d/bind-live-fs.js +185 -0
- package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
- package/dist/classes/ovary.d/bind-vfs.js +37 -0
- package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
- package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
- package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
- package/dist/classes/ovary.d/edit-live-fs.js +239 -0
- package/dist/classes/ovary.d/fertilization.d.ts +12 -0
- package/dist/classes/ovary.d/fertilization.js +53 -0
- package/dist/classes/ovary.d/finished.d.ts +13 -0
- package/dist/classes/ovary.d/finished.js +40 -0
- package/dist/classes/ovary.d/initrd.d.ts +21 -0
- package/dist/classes/ovary.d/initrd.js +96 -0
- package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
- package/dist/classes/ovary.d/kernel-copy.js +22 -0
- package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
- package/dist/classes/ovary.d/live-create-structure.js +70 -0
- package/dist/classes/ovary.d/luks-get-password.d.ts +12 -0
- package/dist/classes/ovary.d/luks-get-password.js +58 -0
- package/dist/classes/ovary.d/luks-home-support.d.ts +12 -0
- package/dist/classes/ovary.d/luks-home-support.js +75 -0
- package/dist/classes/ovary.d/luks-home.d.ts +15 -0
- package/dist/classes/ovary.d/luks-home.js +159 -0
- package/dist/classes/ovary.d/luks-interactive-crypto-config.d.ts +47 -0
- package/dist/classes/ovary.d/luks-interactive-crypto-config.js +135 -0
- package/dist/classes/ovary.d/luks-root-initrd.d.ts +17 -0
- package/dist/classes/ovary.d/luks-root-initrd.js +213 -0
- package/dist/classes/ovary.d/luks-root.d.ts +15 -0
- package/dist/classes/ovary.d/luks-root.js +185 -0
- package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
- package/dist/classes/ovary.d/make-dot-disk.js +71 -0
- package/dist/classes/ovary.d/make-efi.d.ts +14 -0
- package/dist/classes/ovary.d/make-efi.js +290 -0
- package/dist/classes/ovary.d/make-iso.d.ts +13 -0
- package/dist/classes/ovary.d/make-iso.js +45 -0
- package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
- package/dist/classes/ovary.d/make-squashfs.js +111 -0
- package/dist/classes/ovary.d/merged.d.ts +27 -0
- package/dist/classes/ovary.d/merged.js +78 -0
- package/dist/classes/ovary.d/produce.d.ts +23 -0
- package/dist/classes/ovary.d/produce.js +354 -0
- package/dist/classes/ovary.d/rexec.d.ts +13 -0
- package/dist/classes/ovary.d/rexec.js +34 -0
- package/dist/classes/ovary.d/syslinux.d.ts +12 -0
- package/dist/classes/ovary.d/syslinux.js +95 -0
- package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
- package/dist/classes/ovary.d/user-create-live.js +97 -0
- package/dist/classes/ovary.d/users-remove.d.ts +9 -0
- package/dist/classes/ovary.d/users-remove.js +38 -0
- package/dist/classes/ovary.d/xorriso-command.d.ts +14 -0
- package/dist/classes/ovary.d/xorriso-command.js +120 -0
- package/dist/classes/ovary.d.ts +108 -0
- package/dist/classes/ovary.js +119 -0
- package/dist/classes/pacman.d/alpine.d.ts +56 -0
- package/dist/classes/pacman.d/alpine.js +167 -0
- package/dist/classes/pacman.d/archlinux.d.ts +62 -0
- package/dist/classes/pacman.d/archlinux.js +128 -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 +107 -0
- package/dist/classes/pacman.d/openmamba.d.ts +52 -0
- package/dist/classes/pacman.d/openmamba.js +106 -0
- package/dist/classes/pacman.d/opensuse.d.ts +53 -0
- package/dist/classes/pacman.d/opensuse.js +109 -0
- package/dist/classes/pacman.d.ts +139 -0
- package/dist/classes/pacman.js +683 -0
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +52 -0
- package/dist/classes/pxe.d.ts +76 -0
- package/dist/classes/pxe.js +353 -0
- package/dist/classes/settings.d.ts +52 -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 +563 -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/kernel.d.ts +39 -0
- package/dist/classes/utils.d/kernel.js +206 -0
- package/dist/classes/utils.d.ts +330 -0
- package/dist/classes/utils.js +968 -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 +17 -0
- package/dist/commands/cuckoo.js +61 -0
- package/dist/commands/dad.d.ts +21 -0
- package/dist/commands/dad.js +47 -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 +173 -0
- package/dist/commands/export/tarballs.d.ts +27 -0
- package/dist/commands/export/tarballs.js +79 -0
- package/dist/commands/install.d.ts +39 -0
- package/dist/commands/install.js +113 -0
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +50 -0
- package/dist/commands/love.d.ts +25 -0
- package/dist/commands/love.js +118 -0
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +30 -0
- package/dist/commands/pods.d.ts +22 -0
- package/dist/commands/pods.js +92 -0
- package/dist/commands/produce.d.ts +37 -0
- package/dist/commands/produce.js +232 -0
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +31 -0
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +37 -0
- package/dist/commands/tools/repo.d.ts +31 -0
- package/dist/commands/tools/repo.js +246 -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 +46 -0
- package/dist/commands/update.js +238 -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/dhcpd-proxy/classes/packet.d.ts +36 -0
- package/dist/dhcpd-proxy/classes/packet.js +124 -0
- package/dist/dhcpd-proxy/index.d.ts +4 -0
- package/dist/dhcpd-proxy/index.js +4 -0
- package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
- package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
- package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
- package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
- package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
- package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
- package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
- package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
- package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
- package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
- package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
- package/dist/dhcpd-proxy/lib/utils.js +255 -0
- package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
- package/dist/dhcpd-proxy/simple-proxy.js +118 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -0
- package/dist/interfaces/calamares/i-calamares-bootloader.d.ts +23 -0
- package/dist/interfaces/calamares/i-calamares-bootloader.js +7 -0
- package/dist/interfaces/calamares/i-calamares-branding.d.ts +46 -0
- package/dist/interfaces/calamares/i-calamares-branding.js +1 -0
- package/dist/interfaces/calamares/i-calamares-displaymanager.d.ts +34 -0
- package/dist/interfaces/calamares/i-calamares-displaymanager.js +1 -0
- package/dist/interfaces/calamares/i-calamares-finished.d.ts +14 -0
- package/dist/interfaces/calamares/i-calamares-finished.js +1 -0
- package/dist/interfaces/calamares/i-calamares-packages.d.ts +26 -0
- package/dist/interfaces/calamares/i-calamares-packages.js +1 -0
- package/dist/interfaces/calamares/i-calamares-partitions.d.ts +39 -0
- package/dist/interfaces/calamares/i-calamares-partitions.js +1 -0
- package/dist/interfaces/calamares/i-calamares-settings.d.ts +36 -0
- package/dist/interfaces/calamares/i-calamares-settings.js +1 -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-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-luks-passphrase.d.ts +11 -0
- package/dist/interfaces/i-luks-passphrase.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-os-release.d.ts +5 -0
- package/dist/interfaces/i-os-release.js +1 -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 +26 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/krill/classes/cfs.d.ts +17 -0
- package/dist/krill/classes/cfs.js +39 -0
- package/dist/krill/classes/krill_enums.d.ts +37 -0
- package/dist/krill/classes/krill_enums.js +41 -0
- package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
- package/dist/krill/classes/prepare.d/confirm.js +30 -0
- package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
- package/dist/krill/classes/prepare.d/keyboard.js +62 -0
- package/dist/krill/classes/prepare.d/location.d.ts +17 -0
- package/dist/krill/classes/prepare.d/location.js +59 -0
- package/dist/krill/classes/prepare.d/network.d.ts +14 -0
- package/dist/krill/classes/prepare.d/network.js +68 -0
- package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
- package/dist/krill/classes/prepare.d/partitions.js +86 -0
- package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
- package/dist/krill/classes/prepare.d/summary.js +72 -0
- package/dist/krill/classes/prepare.d/users.d.ts +6 -0
- package/dist/krill/classes/prepare.d/users.js +63 -0
- package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
- package/dist/krill/classes/prepare.d/welcome.js +30 -0
- package/dist/krill/classes/prepare.d.ts +89 -0
- package/dist/krill/classes/prepare.js +319 -0
- package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
- package/dist/krill/classes/sequence.d/add_user.js +77 -0
- package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
- package/dist/krill/classes/sequence.d/bootloader.js +117 -0
- package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
- package/dist/krill/classes/sequence.d/bootloader_config.js +192 -0
- package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
- package/dist/krill/classes/sequence.d/change_password.js +18 -0
- package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
- package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
- package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
- package/dist/krill/classes/sequence.d/fstab.js +177 -0
- package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
- package/dist/krill/classes/sequence.d/grubcfg.js +35 -0
- package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
- package/dist/krill/classes/sequence.d/hostname.js +50 -0
- package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
- package/dist/krill/classes/sequence.d/initramfs.js +54 -0
- package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
- package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
- package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
- package/dist/krill/classes/sequence.d/locale.js +91 -0
- package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
- package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
- package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
- package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
- package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
- package/dist/krill/classes/sequence.d/machine_id.js +33 -0
- package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
- package/dist/krill/classes/sequence.d/mkfs.js +88 -0
- package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
- package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
- package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
- package/dist/krill/classes/sequence.d/mount_vfs.js +59 -0
- package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
- package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
- package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
- package/dist/krill/classes/sequence.d/packages.js +111 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +16 -0
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +51 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +77 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +33 -0
- package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
- package/dist/krill/classes/sequence.d/partition.js +84 -0
- package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
- package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
- package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
- package/dist/krill/classes/sequence.d/umount.js +28 -0
- package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
- package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
- package/dist/krill/classes/sequence.d.ts +134 -0
- package/dist/krill/classes/sequence.js +400 -0
- package/dist/krill/components/finished.d.ts +16 -0
- package/dist/krill/components/finished.js +56 -0
- package/dist/krill/components/information.d.ts +8 -0
- package/dist/krill/components/information.js +162 -0
- package/dist/krill/components/install.d.ts +15 -0
- package/dist/krill/components/install.js +60 -0
- package/dist/krill/components/keyboard.d.ts +16 -0
- package/dist/krill/components/keyboard.js +54 -0
- package/dist/krill/components/location.d.ts +16 -0
- package/dist/krill/components/location.js +59 -0
- package/dist/krill/components/network.d.ts +19 -0
- package/dist/krill/components/network.js +65 -0
- package/dist/krill/components/partitions.d.ts +18 -0
- package/dist/krill/components/partitions.js +89 -0
- package/dist/krill/components/steps.d.ts +13 -0
- package/dist/krill/components/steps.js +148 -0
- package/dist/krill/components/summary.d.ts +25 -0
- package/dist/krill/components/summary.js +77 -0
- package/dist/krill/components/title.d.ts +11 -0
- package/dist/krill/components/title.js +35 -0
- package/dist/krill/components/users.d.ts +24 -0
- package/dist/krill/components/users.js +80 -0
- package/dist/krill/components/welcome.d.ts +13 -0
- package/dist/krill/components/welcome.js +63 -0
- package/dist/krill/interfaces/i_krill.d.ts +44 -0
- package/dist/krill/interfaces/i_krill.js +8 -0
- package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
- package/dist/krill/interfaces/i_krill_config.js +8 -0
- package/dist/krill/lib/get_address.d.ts +8 -0
- package/dist/krill/lib/get_address.js +23 -0
- package/dist/krill/lib/get_dns.d.ts +8 -0
- package/dist/krill/lib/get_dns.js +23 -0
- package/dist/krill/lib/get_domain.d.ts +8 -0
- package/dist/krill/lib/get_domain.js +23 -0
- package/dist/krill/lib/get_gateway.d.ts +8 -0
- package/dist/krill/lib/get_gateway.js +23 -0
- package/dist/krill/lib/get_hostname.d.ts +8 -0
- package/dist/krill/lib/get_hostname.js +23 -0
- package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
- package/dist/krill/lib/get_luks_passphrase.js +32 -0
- package/dist/krill/lib/get_netmask.d.ts +8 -0
- package/dist/krill/lib/get_netmask.js +23 -0
- package/dist/krill/lib/get_password.d.ts +8 -0
- package/dist/krill/lib/get_password.js +36 -0
- package/dist/krill/lib/get_userfullname.d.ts +8 -0
- package/dist/krill/lib/get_userfullname.js +23 -0
- package/dist/krill/lib/get_username.d.ts +8 -0
- package/dist/krill/lib/get_username.js +23 -0
- package/dist/krill/lib/select_address_type.d.ts +8 -0
- package/dist/krill/lib/select_address_type.js +24 -0
- package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
- package/dist/krill/lib/select_filesystem_type.js +40 -0
- package/dist/krill/lib/select_installation_device.d.ts +8 -0
- package/dist/krill/lib/select_installation_device.js +40 -0
- package/dist/krill/lib/select_installation_mode.d.ts +9 -0
- package/dist/krill/lib/select_installation_mode.js +25 -0
- package/dist/krill/lib/select_interface.d.ts +8 -0
- package/dist/krill/lib/select_interface.js +24 -0
- package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_layout.js +36 -0
- package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_model.js +34 -0
- package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_option.js +34 -0
- package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/krill/lib/select_keyboard_variant.js +35 -0
- package/dist/krill/lib/select_languages.d.ts +8 -0
- package/dist/krill/lib/select_languages.js +28 -0
- package/dist/krill/lib/select_regions.d.ts +8 -0
- package/dist/krill/lib/select_regions.js +24 -0
- package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
- package/dist/krill/lib/select_replaced_partition.js +31 -0
- package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
- package/dist/krill/lib/select_user_swap_choice.js +35 -0
- package/dist/krill/lib/select_zones.d.ts +8 -0
- package/dist/krill/lib/select_zones.js +518 -0
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +61 -0
- package/dist/lib/utils.d.ts +19 -0
- package/dist/lib/utils.js +65 -0
- package/dracut/create-symlink +0 -0
- package/dracut/export +0 -0
- package/dracut/export-dracut-analysis +0 -0
- package/dracut/export-dracut-log +0 -0
- package/dracut/mkisofs +0 -0
- package/dracut/modules.d/00debug-shell/debug-hook.sh +0 -0
- package/dracut/modules.d/00debug-shell/module-setup.sh +0 -0
- package/dracut/modules.d/90block/block-cmdline.sh +0 -0
- package/dracut/modules.d/90block/module-setup.sh +0 -0
- package/dracut/modules.d/95iso-scan/iso-scan-fallback.sh +0 -0
- package/dracut/modules.d/95iso-scan/iso-scan.sh +0 -0
- package/dracut/modules.d/95iso-scan/module-setup.sh +0 -0
- package/dracut/modules.d/95luks-loop/luks-loop.sh +0 -0
- package/dracut/modules.d/95luks-loop/module-setup.sh +0 -0
- package/dracut/renew-initramfs +0 -0
- package/dracut/sbin2bin +0 -0
- package/dracut/update-dracut-conf-d +0 -0
- package/dracut/update-dracut-modules +0 -0
- package/eui/eui-autostart-cinnamon.desktop +0 -0
- package/eui/eui-autostart-xfce.desktop +0 -0
- package/eui/eui-create-image.sh +0 -0
- package/eui/eui-start.sh +0 -0
- package/package.json +124 -130
- package/perrisbrewery/scripts/postinst +0 -0
- package/perrisbrewery/scripts/postrm +0 -0
- package/perrisbrewery/scripts/preinst +0 -0
- package/perrisbrewery/scripts/prerm +0 -0
- package/scripts/99clean +0 -0
- package/scripts/_eggs +3 -1
- package/scripts/adapt.sh +0 -0
- package/scripts/boot-encrypted-root.sh +138 -95
- package/scripts/bros/waydroid-helper.sh +0 -0
- package/scripts/eggs.bash +2 -2
- package/scripts/lsb_release +0 -0
- package/scripts/mom.sh +0 -0
- package/scripts/mount-encrypted-home.sh +130 -65
- package/scripts/pve-live.service +0 -0
- package/scripts/pve-live.sh +0 -0
- package/scripts/resy +0 -0
- /package/addons/eggs/theme/livecd/{grub.main.cfg → full.grub.main.cfg} +0 -0
- /package/addons/eggs/theme/livecd/{isolinux.main.full.cfg → full.isolinux.main.cfg} +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
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>;
|
|
@@ -0,0 +1,185 @@
|
|
|
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
|
+
const noop = () => { };
|
|
14
|
+
/**
|
|
15
|
+
* luksRoot()
|
|
16
|
+
*
|
|
17
|
+
* create a container LUKS with the entire
|
|
18
|
+
* filesystem.squashfs
|
|
19
|
+
*/
|
|
20
|
+
export async function luksRoot() {
|
|
21
|
+
const loggers = {
|
|
22
|
+
log: this.hidden ? noop : console.log,
|
|
23
|
+
warning: this.hidden ? noop : Utils.warning,
|
|
24
|
+
success: this.hidden ? noop : Utils.success,
|
|
25
|
+
info: this.hidden ? noop : Utils.info,
|
|
26
|
+
};
|
|
27
|
+
const { log, warning, success, info } = loggers;
|
|
28
|
+
// filesystem.squashfs
|
|
29
|
+
const live_fs = `${this.settings.iso_work}live/filesystem.squashfs`;
|
|
30
|
+
try {
|
|
31
|
+
/**
|
|
32
|
+
* this.luksMappedName = 'luks.img';
|
|
33
|
+
* this.luksFile = `/tmp/${luksMappedName}`
|
|
34
|
+
* this.luksDevice = `/dev/mapper/${luksMappedName}`
|
|
35
|
+
* this.luksMountpoint = `/tmp/mnt/${luksMappedName}`
|
|
36
|
+
* this.luksPassword = '0'
|
|
37
|
+
*/
|
|
38
|
+
if (this.hidden) {
|
|
39
|
+
Utils.warning("intentionally blank. System is working, please wait");
|
|
40
|
+
}
|
|
41
|
+
log();
|
|
42
|
+
log('====================================');
|
|
43
|
+
log(` Creating ${this.luksMappedName}`);
|
|
44
|
+
log('====================================');
|
|
45
|
+
if (!fs.existsSync(live_fs)) {
|
|
46
|
+
throw new Error(`filesystem.squashfs not found at: ${live_fs}`);
|
|
47
|
+
}
|
|
48
|
+
const stats = fs.statSync(live_fs);
|
|
49
|
+
let size = stats.size; // Dimensione REALE del file in Byte
|
|
50
|
+
// Add overhead * 1.25 per più sicurezza con file grandi
|
|
51
|
+
const luksSize = Math.ceil(size * 1.25);
|
|
52
|
+
warning(`filesystem.squashfs size: ${bytesToGB(size)}`);
|
|
53
|
+
warning(`partition LUKS ${this.luksFile} size: ${bytesToGB(luksSize)}`);
|
|
54
|
+
warning(`creating partition LUKS: ${this.luksFile}`);
|
|
55
|
+
await executeCommand('truncate', ['--size', `${luksSize}`, this.luksFile]);
|
|
56
|
+
warning(`formatting ${this.luksFile} as a LUKS volume...`);
|
|
57
|
+
// await executeCommand('cryptsetup', ['--batch-mode', 'luksFormat', this.luksFile], `${this.luksPassword}\n`);
|
|
58
|
+
const luksFormatArgs = buildLuksFormatArgs(this.luksConfig, this.luksFile);
|
|
59
|
+
await executeCommand('cryptsetup', luksFormatArgs, `${this.luksPassword}\n`);
|
|
60
|
+
warning(`opening the LUKS volume. It will be mapped to ${this.luksDevice}`);
|
|
61
|
+
await executeCommand('cryptsetup', ['luksOpen', this.luksFile, this.luksMappedName], `${this.luksPassword}\n`);
|
|
62
|
+
warning(`formatting ext4 (without journal)...`);
|
|
63
|
+
await exec(`mkfs.ext4 -O ^has_journal -L live-root ${this.luksDevice}`, this.echo);
|
|
64
|
+
warning(`mounting ${this.luksDevice} on ${this.luksMountpoint}`);
|
|
65
|
+
if (fs.existsSync(this.luksMountpoint)) {
|
|
66
|
+
if (!Utils.isMountpoint(this.luksMountpoint)) {
|
|
67
|
+
await exec(`rm -rf ${this.luksMountpoint}`, this.echo);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
throw new Error(`${this.luksMountpoint} is already mounted, process will abort!`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
await exec(`mkdir -p ${this.luksMountpoint}`, this.echo);
|
|
74
|
+
await exec(`mount /dev/mapper/${this.luksMappedName} ${this.luksMountpoint}`, this.echo);
|
|
75
|
+
warning(`moving ${live_fs} ${this.luksMountpoint}/filesystem.squashfs`);
|
|
76
|
+
await exec(`mv ${live_fs} ${this.luksMountpoint}/filesystem.squashfs`, this.echo);
|
|
77
|
+
warning(`Syncing filesystem on ${this.luksMountpoint}...`);
|
|
78
|
+
await exec('sync', this.echo); // Forza scrittura dati su disco
|
|
79
|
+
warning(`Attempting unmount ${this.luksMountpoint}...`);
|
|
80
|
+
try {
|
|
81
|
+
await exec(`umount ${this.luksMountpoint}`, this.echo);
|
|
82
|
+
success(`Unmounted ${this.luksMountpoint} successfully.`);
|
|
83
|
+
}
|
|
84
|
+
catch (umountError) {
|
|
85
|
+
Utils.error(`Failed to unmount ${this.luksMountpoint}! Trying force unmount...`);
|
|
86
|
+
// Tenta un unmount forzato/lazy come ultima risorsa
|
|
87
|
+
await exec(`umount -lf ${this.luksMountpoint}`).catch((forceError) => {
|
|
88
|
+
Utils.error(`Force unmount also failed: ${forceError}`);
|
|
89
|
+
// Considera se lanciare un errore qui per fermare il processo
|
|
90
|
+
});
|
|
91
|
+
// Lancia comunque l'errore originale per segnalare il problema
|
|
92
|
+
throw umountError;
|
|
93
|
+
}
|
|
94
|
+
warning(`closing LUKS volume ${this.luksFile}.`);
|
|
95
|
+
await executeCommand('cryptsetup', ['close', this.luksMappedName]);
|
|
96
|
+
warning(`moving ${this.luksMappedName} on (ISO)/live.`);
|
|
97
|
+
await exec(`mv ${this.luksFile} ${this.settings.iso_work}/live`, this.echo);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (error instanceof Error) {
|
|
101
|
+
Utils.error(`ERROR: ${error.message}`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
Utils.error(`An unknown error has occurred.`);
|
|
105
|
+
}
|
|
106
|
+
Utils.warning('Cleaning performed following the error...');
|
|
107
|
+
if (fs.existsSync(this.luksMountpoint)) {
|
|
108
|
+
await exec(`umount -lf ${this.luksMountpoint}`).catch(() => { });
|
|
109
|
+
}
|
|
110
|
+
if (fs.existsSync(this.luksDevice)) {
|
|
111
|
+
await executeCommand('cryptsetup', ['close', this.luksMappedName]).catch(() => { });
|
|
112
|
+
}
|
|
113
|
+
await Utils.pressKeyToExit();
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Funzione helper per eseguire comandi esterni in modo asincrono,
|
|
119
|
+
* gestendo lo standard input per passare le password.
|
|
120
|
+
* Restituisce una Promise che si risolve al successo o si rigetta in caso di errore.
|
|
121
|
+
*/
|
|
122
|
+
function executeCommand(command, args, stdinData) {
|
|
123
|
+
return new Promise((resolve, reject) => {
|
|
124
|
+
// Se passiamo dati a stdin, dobbiamo usare 'pipe'. Altrimenti, 'inherit'.
|
|
125
|
+
const stdioConfig = stdinData ? ['pipe', 'inherit', 'inherit'] : 'inherit';
|
|
126
|
+
const process = spawn(command, args, { stdio: stdioConfig });
|
|
127
|
+
// Se fornito, scriviamo i dati (es. la password) nello stdin del processo.
|
|
128
|
+
if (stdinData && process.stdin) {
|
|
129
|
+
process.stdin.write(stdinData);
|
|
130
|
+
process.stdin.end();
|
|
131
|
+
}
|
|
132
|
+
process.on('error', (err) => {
|
|
133
|
+
reject(new Error(`Error starting command "${command}": ${err.message}`));
|
|
134
|
+
});
|
|
135
|
+
process.on('close', (code) => {
|
|
136
|
+
if (code === 0) {
|
|
137
|
+
resolve(); // Success
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
reject(new Error(`Command "${command} ${args.join(' ')}" ended with error code ${code}`));
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Converte bytes in gigabytes per la visualizzazione.
|
|
147
|
+
*/
|
|
148
|
+
function bytesToGB(bytes) {
|
|
149
|
+
if (bytes === 0)
|
|
150
|
+
return '0.00 GB';
|
|
151
|
+
const gigabytes = bytes / (1024 * 1024 * 1024);
|
|
152
|
+
return gigabytes.toFixed(2) + ' GB';
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* buildLuksFormatArgs
|
|
156
|
+
*/
|
|
157
|
+
function buildLuksFormatArgs(config, luksFile) {
|
|
158
|
+
const args = [
|
|
159
|
+
'--batch-mode', // Per saltare la conferma "YES"
|
|
160
|
+
'luksFormat',
|
|
161
|
+
'--type', 'luks2',
|
|
162
|
+
// Parametri base
|
|
163
|
+
'--cipher', config.cipher,
|
|
164
|
+
'--key-size', config['key-size'].toString(),
|
|
165
|
+
'--hash', config.hash,
|
|
166
|
+
'--sector-size', config['sector-size'].toString(),
|
|
167
|
+
'--pbkdf', config.pbkdf,
|
|
168
|
+
];
|
|
169
|
+
// Aggiungi i parametri condizionali del PBKDF
|
|
170
|
+
switch (config.pbkdf) {
|
|
171
|
+
case 'argon2id':
|
|
172
|
+
case 'argon2i':
|
|
173
|
+
const argonConfig = config;
|
|
174
|
+
args.push('--pbkdf-memory', argonConfig['pbkdf-memory (KiB)'].toString());
|
|
175
|
+
args.push('--pbkdf-parallel', argonConfig['pbkdf-parallel (threads)'].toString());
|
|
176
|
+
break;
|
|
177
|
+
case 'pbkdf2':
|
|
178
|
+
const pbkdf2Config = config;
|
|
179
|
+
args.push('--iter-time', pbkdf2Config['iter-time (ms)'].toString());
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
// Aggiungi il file di destinazione
|
|
183
|
+
args.push(luksFile);
|
|
184
|
+
return args;
|
|
185
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
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;
|
|
@@ -0,0 +1,71 @@
|
|
|
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 = "Linux live";
|
|
32
|
+
if (this.hidden) {
|
|
33
|
+
fs.writeFileSync(path.join(dotDisk, 'info'), volidContent, 'utf-8');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* write volid .disk/info
|
|
38
|
+
* Complete
|
|
39
|
+
*/
|
|
40
|
+
volidContent = this.settings.isoFilename;
|
|
41
|
+
fs.writeFileSync(path.join(dotDisk, 'info'), volidContent, 'utf-8');
|
|
42
|
+
/**
|
|
43
|
+
* A readme now replace the old .disk/info
|
|
44
|
+
*/
|
|
45
|
+
let readme = ``;
|
|
46
|
+
readme += `# penguins_eggs\n`;
|
|
47
|
+
readme += `\n`;
|
|
48
|
+
readme += `Volinfo: ${this.volid}\n`;
|
|
49
|
+
readme += `Image created at: ${Utils.formatDate(new Date())} using penguins_eggs v. ${Utils.getPackageVersion()})\n`;
|
|
50
|
+
readme += `repo: [penguins-eggs](https://github.com/penguins-eggs)\n`;
|
|
51
|
+
readme += `blog: [penguins-eggs.net](https://penguins-eggs.net)\n`;
|
|
52
|
+
readme += `author: [Piero Proietti](mailto://piero.proietti@gmail.com)\n`;
|
|
53
|
+
fs.writeFileSync(path.join(dotDisk, 'README.md'), readme, 'utf-8');
|
|
54
|
+
/**
|
|
55
|
+
* write mksquashfs as .disk/mksquashfs
|
|
56
|
+
*/
|
|
57
|
+
fs.writeFileSync(path.join(dotDisk, 'mksquashfs'), mksquashfs, 'utf-8');
|
|
58
|
+
/**
|
|
59
|
+
* write mkisofs as .disk/mkisofs
|
|
60
|
+
*/
|
|
61
|
+
fs.writeFileSync(path.join(dotDisk, 'mkisofs'), mkisofs, 'utf-8');
|
|
62
|
+
/**
|
|
63
|
+
* touch uuid as file name on .disk/id
|
|
64
|
+
*
|
|
65
|
+
* This is a DEBIAN standard
|
|
66
|
+
*/
|
|
67
|
+
if (this.uuid && this.uuid.trim() !== '') {
|
|
68
|
+
shx.mkdir(path.join(dotDisk, 'id'));
|
|
69
|
+
shx.touch(path.join(dotDisk, 'id', this.uuid));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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>;
|
|
@@ -0,0 +1,290 @@
|
|
|
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 mustache from 'mustache';
|
|
9
|
+
// packages
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
// classes
|
|
13
|
+
import { exec } from '../../lib/utils.js';
|
|
14
|
+
import Diversions from '../diversions.js';
|
|
15
|
+
import Utils from '../utils.js';
|
|
16
|
+
// _dirname
|
|
17
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param this
|
|
21
|
+
* @param theme
|
|
22
|
+
*/
|
|
23
|
+
export async function makeEfi(theme = 'eggs') {
|
|
24
|
+
const bootloaders = Diversions.bootloaders(this.familyId);
|
|
25
|
+
/**
|
|
26
|
+
* except Debian/Devuan/Ubuntu all distros will use: not signed
|
|
27
|
+
* paths here for Ubuntu and Debian are the same, here checked!
|
|
28
|
+
*/
|
|
29
|
+
let signed = false;
|
|
30
|
+
let grubEfi = path.resolve(bootloaders, `grub/x86_64-efi/monolithic/grubx64.efi`);
|
|
31
|
+
let shimEfi = path.resolve(bootloaders, `shim/shimx64.efi`);
|
|
32
|
+
if (this.familyId === "debian") {
|
|
33
|
+
signed = true;
|
|
34
|
+
if (process.arch === 'x64') {
|
|
35
|
+
grubEfi = path.resolve(bootloaders, `grub/x86_64-efi-signed/grubx64.efi.signed`);
|
|
36
|
+
shimEfi = path.resolve(bootloaders, `shim/shimx64.efi.signed`);
|
|
37
|
+
}
|
|
38
|
+
else if (process.arch === 'ia32') {
|
|
39
|
+
grubEfi = path.resolve(bootloaders, `grub/i386-efi-signed/grubia32.efi.signed`);
|
|
40
|
+
shimEfi = path.resolve(bootloaders, `shim/shimia32.efi.signed`);
|
|
41
|
+
}
|
|
42
|
+
else if (process.arch === 'arm64') {
|
|
43
|
+
grubEfi = path.resolve(bootloaders, `grub/arm64-efi-signed/grubaa64.efi.signed`);
|
|
44
|
+
shimEfi = path.resolve(bootloaders, `shim/shimaa64.efi.signed`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (signed) {
|
|
48
|
+
Utils.warning(`Your live system ${this.distroId}/${process.arch} can boot with Secure Boot enabled`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
Utils.warning(`You must disable Secure Boot to boot live system ${this.distroId}/${process.arch}`);
|
|
52
|
+
}
|
|
53
|
+
// 2 secondi per leggere...
|
|
54
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
55
|
+
const efiPath = path.join(this.settings.config.snapshot_mnt, '/efi/');
|
|
56
|
+
const efiWorkDir = path.join(efiPath, '/work/');
|
|
57
|
+
const efiMemdiskDir = path.join(efiPath, '/memdisk/');
|
|
58
|
+
const efiImgMnt = path.join(efiPath, 'mnt');
|
|
59
|
+
const isoDir = this.settings.iso_work;
|
|
60
|
+
// create (ISO)/boot/grub
|
|
61
|
+
await exec(`mkdir ${isoDir}/boot/grub/${Utils.uefiFormat()} -p`, this.echo);
|
|
62
|
+
// create (ISO)/EFI
|
|
63
|
+
await exec(`mkdir ${isoDir}/EFI/boot -p`, this.echo);
|
|
64
|
+
await exec(`cp ${shimEfi} ${isoDir}/EFI/boot/${bootEfiName()}`, this.echo);
|
|
65
|
+
await exec(`cp ${grubEfi} ${isoDir}/EFI/boot/${grubEfiName()}`, this.echo);
|
|
66
|
+
// clean/create all in efiPath
|
|
67
|
+
if (fs.existsSync(efiPath)) {
|
|
68
|
+
await exec(`rm -rf ${efiPath}`);
|
|
69
|
+
}
|
|
70
|
+
await exec(`mkdir ${efiPath}`, this.echo);
|
|
71
|
+
await exec(`mkdir ${efiMemdiskDir}`, this.echo);
|
|
72
|
+
await exec(`mkdir ${efiImgMnt}`, this.echo);
|
|
73
|
+
await exec(`mkdir ${efiWorkDir}`, this.echo);
|
|
74
|
+
/**
|
|
75
|
+
* create efi.img
|
|
76
|
+
*/
|
|
77
|
+
let seeker = '';
|
|
78
|
+
seeker += `search --file --set=root /.disk/id/${this.uuid}\n`;
|
|
79
|
+
seeker += "set prefix=($root)/boot/grub\n";
|
|
80
|
+
seeker += "source $prefix/${grub_cpu}-efi/grub.cfg\n";
|
|
81
|
+
/**
|
|
82
|
+
* creating grub.cfg (1) seeker for usb on (efi.img)/boot/grub/grub.cfg
|
|
83
|
+
*/
|
|
84
|
+
Utils.warning("creating grub.cfg seeker USB on (efi.img)/boot/grub");
|
|
85
|
+
await exec(`mkdir ${path.join(efiMemdiskDir, "/boot/grub -p")}`, this.echo);
|
|
86
|
+
const cfgSeekerUsb = `${efiMemdiskDir}/boot/grub/grub.cfg`;
|
|
87
|
+
let cfgSeekerUsbText = '';
|
|
88
|
+
cfgSeekerUsbText += `# grub.cfg seeker\n`;
|
|
89
|
+
cfgSeekerUsbText += `# created on ${efiMemdiskDir}, path ${cfgSeekerUsb}\n`;
|
|
90
|
+
cfgSeekerUsbText += `\n`;
|
|
91
|
+
cfgSeekerUsbText += seeker;
|
|
92
|
+
Utils.write(cfgSeekerUsb, cfgSeekerUsbText);
|
|
93
|
+
/**
|
|
94
|
+
* create grub.cfg (bridge) on (ISO)/boot/grub/x86_64-efi/grub.cfg
|
|
95
|
+
*/
|
|
96
|
+
Utils.warning(`creating grub.cfg bridge to main. (ISO)/boot/grub/${Utils.uefiFormat()}`);
|
|
97
|
+
let cfgBridge = `${isoDir}/boot/grub/${Utils.uefiFormat()}/grub.cfg`;
|
|
98
|
+
let cfgBridgeText = `# grub.cfg bridge\n`;
|
|
99
|
+
cfgBridgeText += `# created on ${cfgBridge}\n`;
|
|
100
|
+
cfgBridgeText += `\n`;
|
|
101
|
+
cfgBridgeText += `source /boot/grub/grub.cfg\n`;
|
|
102
|
+
fs.writeFileSync(cfgBridge, cfgBridgeText);
|
|
103
|
+
/**
|
|
104
|
+
* grub bait: si applica a tutte le distro:
|
|
105
|
+
* /EFI/debian per tutti, tranne ubuntu
|
|
106
|
+
*/
|
|
107
|
+
let pathBait = path.join(isoDir, '/EFI/debian');
|
|
108
|
+
if (this.distroLike === 'Ubuntu') {
|
|
109
|
+
pathBait = path.join(isoDir, '/EFI/ubuntu');
|
|
110
|
+
}
|
|
111
|
+
await exec(`mkdir ${pathBait} -p`, this.echo);
|
|
112
|
+
Utils.warning(`creating grub.cfg seeker ISO/DVD on (ISO)/EFI/${path.basename(pathBait)}`);
|
|
113
|
+
let cfgBait = path.join(pathBait, '/grub.cfg');
|
|
114
|
+
let cfgBaitText = '';
|
|
115
|
+
cfgBaitText += `\n`;
|
|
116
|
+
cfgBaitText += seeker;
|
|
117
|
+
Utils.write(cfgBait, cfgBaitText);
|
|
118
|
+
/**
|
|
119
|
+
* README.md, per tutti tranne distrolike Debian ed Ubuntu
|
|
120
|
+
*/
|
|
121
|
+
let baitReadme = path.join(pathBait, '/README.md');
|
|
122
|
+
let baitReadmeText = ``;
|
|
123
|
+
if (this.distroLike !== 'Debian' && this.distroLike !== 'Ubuntu') {
|
|
124
|
+
baitReadmeText += `# penguins-eggs\n`;
|
|
125
|
+
baitReadmeText += '\n';
|
|
126
|
+
baitReadmeText += `This is just an hack, to let ${this.distroId} boot using Debian trixie bootloaders\n`;
|
|
127
|
+
fs.writeFileSync(baitReadme, baitReadmeText);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* creating structure efiWordDir
|
|
131
|
+
*/
|
|
132
|
+
await exec(`mkdir -p ${efiWorkDir}/boot/grub`, this.echo); // qua va grub.cfg 2
|
|
133
|
+
await exec(`mkdir -p ${efiWorkDir}/EFI/boot`);
|
|
134
|
+
/**
|
|
135
|
+
* create tarred efiMemdiskDir
|
|
136
|
+
*/
|
|
137
|
+
const currentDir = process.cwd();
|
|
138
|
+
process.chdir(efiMemdiskDir);
|
|
139
|
+
await exec('tar -cvf memdisk boot', this.echo);
|
|
140
|
+
process.chdir(currentDir);
|
|
141
|
+
/**
|
|
142
|
+
* Create boot image "boot/grub/efi.img"
|
|
143
|
+
*/
|
|
144
|
+
const efiImg = path.join(efiWorkDir, `boot/grub/efi.img`);
|
|
145
|
+
await exec(`dd if=/dev/zero of=${efiImg} bs=1M count=16`, this.echo);
|
|
146
|
+
await exec(`/sbin/mkdosfs -F 12 ${efiImg}`, this.echo);
|
|
147
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
148
|
+
// mount efi.img on mountpoint mnt-img
|
|
149
|
+
await exec(`mount --make-shared -o loop ${efiImg} ${efiImgMnt}`, this.echo);
|
|
150
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
151
|
+
// create structure inside (efi.img)
|
|
152
|
+
await exec(`mkdir -p ${efiImgMnt}/boot`, this.echo);
|
|
153
|
+
await exec(`mkdir -p ${efiImgMnt}/EFI/boot`, this.echo);
|
|
154
|
+
/**
|
|
155
|
+
* copy grubCfg1 (grub.cfg) to (efi.img)/boot/grub
|
|
156
|
+
*/
|
|
157
|
+
await exec(`cp ${cfgSeekerUsb} ${efiImgMnt}/boot/grub.cfg`, this.echo);
|
|
158
|
+
await exec(`cp ${shimEfi} ${efiImgMnt}/EFI/boot/${bootEfiName()}`, this.echo);
|
|
159
|
+
await exec(`cp ${grubEfi} ${efiImgMnt}/EFI/boot/${grubEfiName()}`, this.echo);
|
|
160
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
161
|
+
if (!fs.existsSync(`${efiImgMnt}/boot/grub.cfg`)) {
|
|
162
|
+
console.log(`error copyng ${cfgSeekerUsb} seeker for USB on (efi.img)/boot/grub.cfg`);
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
166
|
+
await exec(`umount ${efiImgMnt}`, this.echo);
|
|
167
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
168
|
+
// Copy isoImg in ${${isoDir}/boot/grub
|
|
169
|
+
Utils.warning("copyng (efi.img) on (ISO)/boot/grub");
|
|
170
|
+
await exec(`cp ${efiImg} ${isoDir}/boot/grub`, this.echo);
|
|
171
|
+
/**
|
|
172
|
+
* creating grub.cfg (4) on (ISO)/boot/grub
|
|
173
|
+
*/
|
|
174
|
+
Utils.warning("creating grub.cfg main on (ISO)/boot/grub");
|
|
175
|
+
// splash.png
|
|
176
|
+
let splashSrc = '';
|
|
177
|
+
const splashDest = `${efiWorkDir}/boot/grub/splash.png`;
|
|
178
|
+
let themeSrc = '';
|
|
179
|
+
const themeDest = `${isoDir}/boot/grub/theme.cfg`;
|
|
180
|
+
let grubTemplate = '';
|
|
181
|
+
if (this.hidden) {
|
|
182
|
+
splashSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/generic-splash.png`);
|
|
183
|
+
grubTemplate = path.resolve(__dirname, '../../../addons/eggs/theme/livecd/generic.grub.main.cfg');
|
|
184
|
+
themeSrc = path.resolve(__dirname, '../../../addons/eggs/theme/livecd/generic.grub.theme.cfg');
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// copy splash to efiWorkDir
|
|
188
|
+
splashSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/splash.png`);
|
|
189
|
+
if (this.theme.includes('/')) {
|
|
190
|
+
splashSrc = `${theme}/theme/livecd/splash.png`;
|
|
191
|
+
}
|
|
192
|
+
if (!fs.existsSync(splashSrc)) {
|
|
193
|
+
Utils.warning(`warning: ${splashSrc} does not exists`);
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
// select themeSrc
|
|
197
|
+
themeSrc = path.resolve(__dirname, `../../../addons/${theme}/theme/livecd/grub.theme.cfg`);
|
|
198
|
+
if (this.theme.includes('/')) {
|
|
199
|
+
themeSrc = `${theme}/theme/livecd/grub.theme.cfg`;
|
|
200
|
+
}
|
|
201
|
+
// copy theme
|
|
202
|
+
if (!fs.existsSync(themeSrc)) {
|
|
203
|
+
Utils.error(`error: ${themeSrc} does not exist`);
|
|
204
|
+
process.exit(1);
|
|
205
|
+
}
|
|
206
|
+
// selecting available fonts
|
|
207
|
+
if (fs.existsSync('/usr/share/grub/font.pf2')) {
|
|
208
|
+
await exec(`cp /usr/share/grub/font.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
|
|
209
|
+
}
|
|
210
|
+
else if (fs.existsSync('/usr/share/grub/unicode.pf2')) {
|
|
211
|
+
await exec(`cp /usr/share/grub/unicode.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
|
|
212
|
+
}
|
|
213
|
+
else if (fs.existsSync('/usr/share/grub/ascii.pf2')) {
|
|
214
|
+
await exec(`cp /usr/share/grub/ascii.pf2 ${efiWorkDir}boot/grub/font.pf2`, this.echo);
|
|
215
|
+
}
|
|
216
|
+
// Copy workdir files to ISO/boot
|
|
217
|
+
await exec(`rsync -avx ${efiWorkDir}/boot ${isoDir}/`, this.echo);
|
|
218
|
+
/**
|
|
219
|
+
* prepare main grub.cfg from grub.main.cfg
|
|
220
|
+
*/
|
|
221
|
+
grubTemplate = `${theme}/theme/livecd/grub.main.cfg`;
|
|
222
|
+
if (!fs.existsSync(grubTemplate)) {
|
|
223
|
+
grubTemplate = path.resolve(__dirname, '../../../addons/eggs/theme/livecd/grub.main.cfg');
|
|
224
|
+
}
|
|
225
|
+
if (!fs.existsSync(grubTemplate)) {
|
|
226
|
+
Utils.error(`error: ${grubTemplate} does not exist`);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// splash.png
|
|
231
|
+
await exec(`cp ${splashSrc} ${splashDest}`, this.echo);
|
|
232
|
+
// grub.theme.png
|
|
233
|
+
fs.copyFileSync(themeSrc, themeDest);
|
|
234
|
+
// grub.main.png
|
|
235
|
+
const kernel_parameters = Diversions.kernelParameters(this.familyId, this.volid, this.fullcrypt);
|
|
236
|
+
const cfgMain = path.join(isoDir, '/boot/grub/grub.cfg');
|
|
237
|
+
const template = fs.readFileSync(grubTemplate, 'utf8');
|
|
238
|
+
const view = {
|
|
239
|
+
fullname: this.settings.remix.fullname.toUpperCase(),
|
|
240
|
+
initrdImg: `/live/${path.basename(this.initrd)}`,
|
|
241
|
+
kernel: this.kernel,
|
|
242
|
+
kernel_parameters,
|
|
243
|
+
vmlinuz: `/live/${path.basename(this.vmlinuz)}`
|
|
244
|
+
};
|
|
245
|
+
let cfgMainText = '';
|
|
246
|
+
cfgMainText += `# grub.cfg (4) main\n`;
|
|
247
|
+
if (!this.hidden) {
|
|
248
|
+
cfgMainText += `# created on ${cfgMain}`;
|
|
249
|
+
}
|
|
250
|
+
cfgMainText += `\n`;
|
|
251
|
+
cfgMainText += mustache.render(template, view);
|
|
252
|
+
fs.writeFileSync(cfgMain, cfgMainText);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* FUNCTIONS
|
|
256
|
+
*/
|
|
257
|
+
/**
|
|
258
|
+
*
|
|
259
|
+
* @returns
|
|
260
|
+
*/
|
|
261
|
+
function bootEfiName() {
|
|
262
|
+
let ben = '';
|
|
263
|
+
if (process.arch === 'x64') {
|
|
264
|
+
ben = 'bootx64.efi';
|
|
265
|
+
}
|
|
266
|
+
else if (process.arch === 'ia32') {
|
|
267
|
+
ben = 'bootia32.efi';
|
|
268
|
+
}
|
|
269
|
+
else if (process.arch === 'arm64') {
|
|
270
|
+
ben = 'bootaa64.efi';
|
|
271
|
+
}
|
|
272
|
+
return ben;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
*
|
|
276
|
+
* @returns
|
|
277
|
+
*/
|
|
278
|
+
function grubEfiName() {
|
|
279
|
+
let gen = '';
|
|
280
|
+
if (process.arch === 'x64') {
|
|
281
|
+
gen = 'grubx64.efi';
|
|
282
|
+
}
|
|
283
|
+
else if (process.arch === 'ia32') {
|
|
284
|
+
gen = 'grub ia32.efi';
|
|
285
|
+
}
|
|
286
|
+
else if (process.arch === 'arm64') {
|
|
287
|
+
gen = 'grubaa64.efi';
|
|
288
|
+
}
|
|
289
|
+
return gen;
|
|
290
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/ovary.d/make-iso.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
|
+
* makeIso
|
|
11
|
+
* cmd: cmd 4 xorriso
|
|
12
|
+
*/
|
|
13
|
+
export declare function makeIso(this: Ovary, cmd: string, scriptOnly?: boolean): Promise<void>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/ovary.d/make-iso.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 path from 'node:path';
|
|
10
|
+
// classes
|
|
11
|
+
import { exec } from '../../lib/utils.js';
|
|
12
|
+
import Utils from '../utils.js';
|
|
13
|
+
// _dirname
|
|
14
|
+
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
15
|
+
/**
|
|
16
|
+
* makeIso
|
|
17
|
+
* cmd: cmd 4 xorriso
|
|
18
|
+
*/
|
|
19
|
+
export async function makeIso(cmd, scriptOnly = false) {
|
|
20
|
+
// echo = { echo: true, ignore: false }
|
|
21
|
+
if (this.verbose) {
|
|
22
|
+
console.log('Ovary: makeIso');
|
|
23
|
+
}
|
|
24
|
+
Utils.writeX(`${this.settings.work_dir.ovarium}mkisofs`, cmd);
|
|
25
|
+
// Create link to iso ALLWAYS
|
|
26
|
+
const src = this.settings.config.snapshot_mnt + this.settings.isoFilename;
|
|
27
|
+
const dest = this.settings.config.snapshot_dir + this.settings.isoFilename;
|
|
28
|
+
await exec(`ln -s ${src} ${dest}`);
|
|
29
|
+
if (!scriptOnly) {
|
|
30
|
+
const test = (await exec(cmd, Utils.setEcho(true))).code;
|
|
31
|
+
if (test !== 0) {
|
|
32
|
+
process.exit();
|
|
33
|
+
}
|
|
34
|
+
// Create link to iso
|
|
35
|
+
const src = this.settings.config.snapshot_mnt + this.settings.isoFilename;
|
|
36
|
+
const dest = this.settings.config.snapshot_dir + this.settings.isoFilename;
|
|
37
|
+
await exec(`ln -s ${src} ${dest}`);
|
|
38
|
+
// Create md5sum, sha256sum
|
|
39
|
+
if (this.settings.config.make_md5sum) {
|
|
40
|
+
Utils.warning('creating md5, sha256');
|
|
41
|
+
await exec(`md5sum ${src} > ${dest.replace('.iso', '.md5')}`);
|
|
42
|
+
await exec(`sha256sum ${src} > ${dest.replace('.iso', '.sha256')}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/classes/ovary.d/make-squashfs.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
|
+
* squashFs: crea in live filesystem.squashfs
|
|
11
|
+
*/
|
|
12
|
+
export declare function makeSquashfs(this: Ovary, scriptOnly?: boolean, includeRootHome?: boolean): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Add or remove exclusion
|
|
15
|
+
* @param add {boolean} true = add, false remove
|
|
16
|
+
* @param exclusion {string} path to add/remove
|
|
17
|
+
*/
|
|
18
|
+
export declare function addExclusion(this: Ovary, exclusion: string): void;
|