penguins-eggs 10.0.57 → 10.1.0
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 +100 -1
- package/README.md +84 -44
- package/addons/eggs/theme/calamares/modules/{_users.yml → users.yml} +3 -3
- package/addons/eggs/theme/livecd/grub.main.full.cfg +1 -7
- package/addons/eggs/theme/livecd/grub.main.simple.cfg +1 -1
- package/assets/config.cfg +30 -0
- package/conf/derivatives.yaml +1 -3
- package/conf/derivatives_fedora.yaml +6 -0
- package/conf/distros/alpine/calamares/modules/users.yml +3 -3
- package/conf/distros/bionic/calamares/calamares-modules/grubcfg/grubcfg.yml +1 -1
- package/conf/distros/bionic/calamares/modules/users.yml +3 -3
- package/conf/distros/buster/calamares/calamares-modules/cleanup/cleanup.sh +8 -1
- package/conf/distros/buster/calamares/modules/partition.yml +159 -23
- package/conf/distros/buster/calamares/modules/removeuser.yml +1 -1
- package/conf/distros/buster/calamares/modules/users.yml +3 -3
- package/conf/distros/fedora/calamares/modules/users.yml +3 -3
- package/conf/distros/noble/calamares/modules/focal-jammy/users.yml +3 -3
- package/conf/distros/opensuse/calamares/modules/users.yml +3 -3
- package/conf/distros/rolling/calamares/modules/users.yml +3 -3
- package/conf/eggs.yaml +1 -1
- package/conf/exclude.list.d/master.list +1 -0
- package/conf/krill.yaml +8 -0
- package/conf/love.yaml +4 -4
- package/package.json +33 -29
- package/perrisbrewery/scripts/postinst +98 -0
- package/perrisbrewery/scripts/postrm +82 -0
- package/perrisbrewery/scripts/preinst +40 -0
- package/perrisbrewery/scripts/prerm +47 -0
- package/perrisbrewery/template/control.template +17 -0
- package/perrisbrewery/template/dependencies-bionic.yaml +33 -0
- package/perrisbrewery/template/dependencies.yaml +37 -0
- package/perrisbrewery/template/man.template.md +110 -0
- package/pods/README.md +14 -0
- package/pods/almalinux.sh +10 -0
- package/pods/archlinux.sh +10 -0
- package/pods/ci/README.md +5 -0
- package/pods/ci/kernel-overlay-install.sh +114 -0
- package/pods/ci/minimal/almalinux-container2host.sh +165 -0
- package/pods/ci/minimal/archlinux-container2host.sh +125 -0
- package/pods/ci/minimal/debian-container2host.sh +173 -0
- package/pods/ci/minimal/fedora-container2host.sh +170 -0
- package/pods/ci/minimal/manjaro-container2host.sh +123 -0
- package/pods/ci/minimal/opensuse-container2host.sh +143 -0
- package/pods/ci/penguins-eggs-execute.sh +22 -0
- package/pods/ci/penguins-eggs-install.sh +115 -0
- package/pods/ci/run +34 -0
- package/pods/ci/run-on-almalinux.sh +50 -0
- package/pods/ci/run-on-archlinux.sh +64 -0
- package/pods/ci/run-on-debian.sh +51 -0
- package/pods/ci/run-on-devuan.sh +48 -0
- package/pods/ci/run-on-fedora.sh +51 -0
- package/pods/ci/run-on-manjaro.sh +61 -0
- package/pods/ci/run-on-opensuse.sh +58 -0
- package/pods/ci/run-on-rockylinux.sh +51 -0
- package/pods/ci/run-on-ubuntu.sh +52 -0
- package/pods/debian.sh +23 -0
- package/pods/devuan.sh +26 -0
- package/pods/fedora.sh +12 -0
- package/pods/lmde.sh +22 -0
- package/pods/manjaro.sh +10 -0
- package/pods/opensuse.sh +12 -0
- package/pods/podman.command.sh +85 -0
- package/pods/rocky.sh +12 -0
- package/pods/run-build-packages-debs.sh +45 -0
- package/pods/run-create-debs.sh +23 -0
- package/pods/ubuntu.sh +24 -0
- package/scripts/_eggs +23 -6
- package/scripts/eggs.bash +8 -6
- package/dist/classes/bleach.d.ts +0 -32
- package/dist/classes/bleach.js +0 -135
- package/dist/classes/cfs.d.ts +0 -17
- package/dist/classes/cfs.js +0 -39
- package/dist/classes/cli-autologin.d.ts +0 -52
- package/dist/classes/cli-autologin.js +0 -247
- 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 -167
- package/dist/classes/distro.d.ts +0 -32
- package/dist/classes/distro.js +0 -341
- package/dist/classes/diversions.d.ts +0 -52
- package/dist/classes/diversions.js +0 -126
- package/dist/classes/incubation/branding.d.ts +0 -17
- package/dist/classes/incubation/branding.js +0 -85
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -11
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +0 -40
- 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 -83
- package/dist/classes/incubation/fisherman.d.ts +0 -70
- package/dist/classes/incubation/fisherman.js +0 -263
- 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/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 -85
- package/dist/classes/incubation/incubator.d/jessie.d.ts +0 -31
- package/dist/classes/incubation/incubator.d/jessie.js +0 -44
- package/dist/classes/incubation/incubator.d/noble.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/noble.js +0 -85
- 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/rolling.d.ts +0 -32
- package/dist/classes/incubation/incubator.d/rolling.js +0 -80
- package/dist/classes/incubation/incubator.d.ts +0 -44
- package/dist/classes/incubation/incubator.js +0 -382
- 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.ts +0 -198
- package/dist/classes/ovary.js +0 -1850
- package/dist/classes/pacman.d/aldos.d.ts +0 -52
- package/dist/classes/pacman.d/aldos.js +0 -100
- package/dist/classes/pacman.d/alpine.d.ts +0 -56
- package/dist/classes/pacman.d/alpine.js +0 -162
- package/dist/classes/pacman.d/archlinux.d.ts +0 -62
- package/dist/classes/pacman.d/archlinux.js +0 -139
- 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 -101
- package/dist/classes/pacman.d/openmamba.d.ts +0 -52
- package/dist/classes/pacman.d/openmamba.js +0 -100
- package/dist/classes/pacman.d/opensuse.d.ts +0 -53
- package/dist/classes/pacman.d/opensuse.js +0 -102
- package/dist/classes/pacman.d/voidlinux.d.ts +0 -52
- package/dist/classes/pacman.d/voidlinux.js +0 -90
- package/dist/classes/pacman.d.ts +0 -139
- package/dist/classes/pacman.js +0 -775
- package/dist/classes/pve-live.d.ts +0 -17
- package/dist/classes/pve-live.js +0 -52
- package/dist/classes/pxe.d.ts +0 -74
- package/dist/classes/pxe.js +0 -410
- package/dist/classes/settings.d.ts +0 -53
- 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 -526
- 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.ts +0 -326
- package/dist/classes/utils.js +0 -1025
- 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 -16
- package/dist/commands/cuckoo.js +0 -62
- package/dist/commands/dad.d.ts +0 -20
- package/dist/commands/dad.js +0 -46
- 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 -163
- package/dist/commands/export/tarballs.d.ts +0 -27
- package/dist/commands/export/tarballs.js +0 -84
- package/dist/commands/install.d.ts +0 -37
- package/dist/commands/install.js +0 -88
- package/dist/commands/kill.d.ts +0 -24
- package/dist/commands/kill.js +0 -50
- package/dist/commands/love.d.ts +0 -20
- package/dist/commands/love.js +0 -59
- package/dist/commands/mom.d.ts +0 -16
- package/dist/commands/mom.js +0 -30
- package/dist/commands/produce.d.ts +0 -34
- package/dist/commands/produce.js +0 -201
- package/dist/commands/status.d.ts +0 -23
- package/dist/commands/status.js +0 -31
- package/dist/commands/syncfrom.d.ts +0 -45
- package/dist/commands/syncfrom.js +0 -152
- package/dist/commands/syncto.d.ts +0 -40
- package/dist/commands/syncto.js +0 -175
- package/dist/commands/tools/clean.d.ts +0 -18
- package/dist/commands/tools/clean.js +0 -37
- package/dist/commands/tools/ppa.d.ts +0 -26
- package/dist/commands/tools/ppa.js +0 -138
- 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 -51
- package/dist/commands/update.js +0 -219
- 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/components/finished.d.ts +0 -16
- package/dist/components/finished.js +0 -56
- package/dist/components/information.d.ts +0 -8
- package/dist/components/information.js +0 -156
- package/dist/components/install.d.ts +0 -15
- package/dist/components/install.js +0 -60
- package/dist/components/keyboard.d.ts +0 -16
- package/dist/components/keyboard.js +0 -54
- package/dist/components/location.d.ts +0 -16
- package/dist/components/location.js +0 -59
- package/dist/components/network.d.ts +0 -19
- package/dist/components/network.js +0 -65
- package/dist/components/partitions.d.ts +0 -16
- package/dist/components/partitions.js +0 -73
- package/dist/components/steps.d.ts +0 -13
- package/dist/components/steps.js +0 -148
- package/dist/components/summary.d.ts +0 -24
- package/dist/components/summary.js +0 -81
- package/dist/components/title.d.ts +0 -11
- package/dist/components/title.js +0 -35
- package/dist/components/users.d.ts +0 -24
- package/dist/components/users.js +0 -80
- package/dist/components/welcome.d.ts +0 -13
- package/dist/components/welcome.js +0 -63
- package/dist/index-old.d.ts +0 -8
- package/dist/index-old.js +0 -8
- package/dist/index.d.ts +0 -54
- package/dist/index.js +0 -147
- 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-branding.d.ts +0 -36
- package/dist/interfaces/i-branding.js +0 -8
- package/dist/interfaces/i-calamares-displaymanager.d.ts +0 -17
- package/dist/interfaces/i-calamares-displaymanager.js +0 -1
- package/dist/interfaces/i-calamares-finished.d.ts +0 -12
- package/dist/interfaces/i-calamares-finished.js +0 -1
- package/dist/interfaces/i-calamares-packages.d.ts +0 -28
- package/dist/interfaces/i-calamares-packages.js +0 -1
- package/dist/interfaces/i-calamares-partition.d.ts +0 -40
- package/dist/interfaces/i-calamares-partition.js +0 -1
- 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-krill-config.d.ts +0 -33
- package/dist/interfaces/i-krill-config.js +0 -8
- package/dist/interfaces/i-krill.d.ts +0 -42
- package/dist/interfaces/i-krill.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 -25
- package/dist/interfaces/index.js +0 -8
- package/dist/krill/modules/add-user.d.ts +0 -20
- package/dist/krill/modules/add-user.js +0 -48
- package/dist/krill/modules/bootloader-config.d.ts +0 -14
- package/dist/krill/modules/bootloader-config.js +0 -165
- package/dist/krill/modules/bootloader.d.ts +0 -14
- package/dist/krill/modules/bootloader.js +0 -95
- package/dist/krill/modules/change-password.d.ts +0 -15
- package/dist/krill/modules/change-password.js +0 -18
- package/dist/krill/modules/del-live-user.d.ts +0 -14
- package/dist/krill/modules/del-live-user.js +0 -39
- package/dist/krill/modules/fstab.d.ts +0 -14
- package/dist/krill/modules/fstab.js +0 -128
- package/dist/krill/modules/grubcfg.d.ts +0 -17
- package/dist/krill/modules/grubcfg.js +0 -29
- package/dist/krill/modules/hostname.d.ts +0 -13
- package/dist/krill/modules/hostname.js +0 -50
- package/dist/krill/modules/initramfs-cfg.d.ts +0 -14
- package/dist/krill/modules/initramfs-cfg.js +0 -22
- package/dist/krill/modules/initramfs.d.ts +0 -13
- package/dist/krill/modules/initramfs.js +0 -54
- package/dist/krill/modules/locale-cfg.d.ts +0 -10
- package/dist/krill/modules/locale-cfg.js +0 -58
- package/dist/krill/modules/locale.d.ts +0 -13
- package/dist/krill/modules/locale.js +0 -91
- package/dist/krill/modules/m-keyboard.d.ts +0 -14
- package/dist/krill/modules/m-keyboard.js +0 -58
- package/dist/krill/modules/machine-id.d.ts +0 -15
- package/dist/krill/modules/machine-id.js +0 -33
- package/dist/krill/modules/mkfs.d.ts +0 -15
- package/dist/krill/modules/mkfs.js +0 -50
- package/dist/krill/modules/mount-fs.d.ts +0 -17
- package/dist/krill/modules/mount-fs.js +0 -62
- package/dist/krill/modules/mount-vfs.d.ts +0 -17
- package/dist/krill/modules/mount-vfs.js +0 -40
- package/dist/krill/modules/network-cfg.d.ts +0 -19
- package/dist/krill/modules/network-cfg.js +0 -64
- package/dist/krill/modules/packages.d.ts +0 -14
- package/dist/krill/modules/packages.js +0 -111
- package/dist/krill/modules/partition.d.ts +0 -20
- package/dist/krill/modules/partition.js +0 -345
- package/dist/krill/modules/remove-installer-link.d.ts +0 -13
- package/dist/krill/modules/remove-installer-link.js +0 -35
- package/dist/krill/modules/umount.d.ts +0 -14
- package/dist/krill/modules/umount.js +0 -28
- package/dist/krill/modules/unpackfs.d.ts +0 -13
- package/dist/krill/modules/unpackfs.js +0 -20
- package/dist/krill/prepare.d.ts +0 -78
- package/dist/krill/prepare.js +0 -626
- package/dist/krill/sequence.d.ts +0 -154
- package/dist/krill/sequence.js +0 -652
- package/dist/lib/get_address.d.ts +0 -8
- package/dist/lib/get_address.js +0 -23
- package/dist/lib/get_dns.d.ts +0 -8
- package/dist/lib/get_dns.js +0 -23
- package/dist/lib/get_domain.d.ts +0 -8
- package/dist/lib/get_domain.js +0 -23
- package/dist/lib/get_gateway.d.ts +0 -8
- package/dist/lib/get_gateway.js +0 -23
- package/dist/lib/get_hostname.d.ts +0 -8
- package/dist/lib/get_hostname.js +0 -23
- package/dist/lib/get_netmask.d.ts +0 -8
- package/dist/lib/get_netmask.js +0 -23
- package/dist/lib/get_password.d.ts +0 -8
- package/dist/lib/get_password.js +0 -36
- package/dist/lib/get_userfullname.d.ts +0 -8
- package/dist/lib/get_userfullname.js +0 -23
- package/dist/lib/get_username.d.ts +0 -8
- package/dist/lib/get_username.js +0 -23
- package/dist/lib/kill_me_softly.d.ts +0 -11
- package/dist/lib/kill_me_softly.js +0 -61
- package/dist/lib/select_address_type.d.ts +0 -8
- package/dist/lib/select_address_type.js +0 -24
- package/dist/lib/select_filesystem_type.d.ts +0 -8
- package/dist/lib/select_filesystem_type.js +0 -46
- package/dist/lib/select_installation_device.d.ts +0 -8
- package/dist/lib/select_installation_device.js +0 -34
- package/dist/lib/select_installation_mode.d.ts +0 -8
- package/dist/lib/select_installation_mode.js +0 -24
- package/dist/lib/select_interface.d.ts +0 -8
- package/dist/lib/select_interface.js +0 -24
- package/dist/lib/select_keyboard_layout.d.ts +0 -11
- package/dist/lib/select_keyboard_layout.js +0 -36
- package/dist/lib/select_keyboard_model.d.ts +0 -11
- package/dist/lib/select_keyboard_model.js +0 -34
- package/dist/lib/select_keyboard_option.d.ts +0 -11
- package/dist/lib/select_keyboard_option.js +0 -34
- package/dist/lib/select_keyboard_variant.d.ts +0 -11
- package/dist/lib/select_keyboard_variant.js +0 -35
- package/dist/lib/select_languages.d.ts +0 -8
- package/dist/lib/select_languages.js +0 -28
- package/dist/lib/select_regions.d.ts +0 -8
- package/dist/lib/select_regions.js +0 -24
- package/dist/lib/select_user_swap_choice.d.ts +0 -8
- package/dist/lib/select_user_swap_choice.js +0 -34
- package/dist/lib/select_zones.d.ts +0 -8
- package/dist/lib/select_zones.js +0 -518
- package/dist/lib/utils.d.ts +0 -34
- package/dist/lib/utils.js +0 -79
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/packages.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import yaml from 'js-yaml';
|
|
10
|
-
import fs from 'node:fs';
|
|
11
|
-
import Pacman from '../../classes/pacman.js';
|
|
12
|
-
import Utils from '../../classes/utils.js';
|
|
13
|
-
import { exec } from '../../lib/utils.js';
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @param this
|
|
17
|
-
*/
|
|
18
|
-
export default async function packages() {
|
|
19
|
-
const echoYes = Utils.setEcho(true);
|
|
20
|
-
let modulePath = '/etc/penguins-eggs.d/krill/';
|
|
21
|
-
if (Pacman.packageIsInstalled('calamares')) {
|
|
22
|
-
modulePath = '/etc/calamares/';
|
|
23
|
-
}
|
|
24
|
-
const config_file = `${modulePath}modules/packages.conf`;
|
|
25
|
-
if (fs.existsSync(config_file)) {
|
|
26
|
-
const packages = yaml.load(fs.readFileSync(config_file, 'utf8'));
|
|
27
|
-
let packagesToInstall = [];
|
|
28
|
-
let packagesToRemove = [];
|
|
29
|
-
if (packages.operations !== undefined) {
|
|
30
|
-
for (const operation of packages.operations) {
|
|
31
|
-
if ('try_remove' in operation) {
|
|
32
|
-
packagesToRemove = operation.try_remove;
|
|
33
|
-
}
|
|
34
|
-
if ('try_install' in operation) {
|
|
35
|
-
packagesToInstall = operation.try_install;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Alpine
|
|
40
|
-
if (this.distro.familyId === 'alpine') {
|
|
41
|
-
packages.backend = 'apk';
|
|
42
|
-
}
|
|
43
|
-
switch (packages.backend) {
|
|
44
|
-
case 'apt': {
|
|
45
|
-
/**
|
|
46
|
-
* apt
|
|
47
|
-
*/
|
|
48
|
-
if (packagesToRemove != undefined && packagesToRemove.length > 0) {
|
|
49
|
-
let cmd = `chroot ${this.installTarget} apt-get purge -y `;
|
|
50
|
-
for (const elem of packagesToRemove) {
|
|
51
|
-
if (Pacman.packageIsInstalled(elem)) {
|
|
52
|
-
cmd += elem + ' ';
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
56
|
-
const autoremove = `chroot ${this.installTarget} apt-get autoremove -y ${this.toNull}`;
|
|
57
|
-
await exec(autoremove, this.echo);
|
|
58
|
-
}
|
|
59
|
-
if (packagesToInstall != undefined && packagesToInstall.length > 0) {
|
|
60
|
-
let cmd = `chroot ${this.installTarget} apt-get install -y `;
|
|
61
|
-
for (const elem of packagesToInstall) {
|
|
62
|
-
cmd += elem + ' ';
|
|
63
|
-
}
|
|
64
|
-
const update = `chroot ${this.installTarget} apt-get update ${this.toNull}`;
|
|
65
|
-
await exec(update, this.echo);
|
|
66
|
-
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
67
|
-
}
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
case 'pacman': {
|
|
71
|
-
/**
|
|
72
|
-
* pacman
|
|
73
|
-
*/
|
|
74
|
-
if (packagesToRemove != undefined && packagesToRemove.length > 0) {
|
|
75
|
-
let cmd = `chroot ${this.installTarget} pacman -R\n`;
|
|
76
|
-
for (const elem of packagesToRemove) {
|
|
77
|
-
cmd += elem + ' ';
|
|
78
|
-
}
|
|
79
|
-
await exec(`${cmd} ${echoYes}`, this.echo);
|
|
80
|
-
}
|
|
81
|
-
if (packagesToInstall != undefined && packagesToInstall.length > 0) {
|
|
82
|
-
for (const elem of packagesToInstall) {
|
|
83
|
-
await exec(`chroot ${this.installTarget} pacman -S ${elem}`, echoYes);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
case 'apk': {
|
|
89
|
-
/**
|
|
90
|
-
* apk
|
|
91
|
-
*/
|
|
92
|
-
if (packagesToRemove != undefined && packagesToRemove.length > 0) {
|
|
93
|
-
let cmd = `chroot ${this.installTarget} apk del `;
|
|
94
|
-
for (const elem of packagesToRemove) {
|
|
95
|
-
cmd += elem + ' ';
|
|
96
|
-
}
|
|
97
|
-
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
98
|
-
}
|
|
99
|
-
if (packagesToInstall != undefined && packagesToInstall.length > 0) {
|
|
100
|
-
let cmd = `chroot ${this.installTarget} apk add `;
|
|
101
|
-
for (const elem of packagesToInstall) {
|
|
102
|
-
cmd += elem + ' ';
|
|
103
|
-
}
|
|
104
|
-
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
105
|
-
}
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
// No default
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/partition.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import Sequence from '../sequence.js';
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* @param this
|
|
13
|
-
*/
|
|
14
|
-
export default function partition(this: Sequence): Promise<boolean>;
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* @param installDevice
|
|
18
|
-
* @returns
|
|
19
|
-
*/
|
|
20
|
-
export declare function lvmPartInfo(installDevice?: string): Promise<[string, number, number, number]>;
|
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/partition.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import os from 'node:os';
|
|
10
|
-
import shx from 'shelljs';
|
|
11
|
-
import Utils from '../../classes/utils.js';
|
|
12
|
-
import { exec } from '../../lib/utils.js';
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
* @param this
|
|
16
|
-
*/
|
|
17
|
-
export default async function partition() {
|
|
18
|
-
const echoYes = Utils.setEcho(true);
|
|
19
|
-
let retVal = false;
|
|
20
|
-
const installDevice = this.partitions.installationDevice;
|
|
21
|
-
/**
|
|
22
|
-
* Support for NVMe
|
|
23
|
-
*
|
|
24
|
-
* /dev/sda1 = /dev/nvme0n1p1 = /dev/md0p1
|
|
25
|
-
*/
|
|
26
|
-
let p = '';
|
|
27
|
-
if (installDevice.includes('nvme') || installDevice.startsWith('/dev/md')) {
|
|
28
|
-
p = 'p';
|
|
29
|
-
}
|
|
30
|
-
const installMode = this.partitions.installationMode;
|
|
31
|
-
let swapSize = Math.round(os.totalmem() / 1_073_741_824) * 1024;
|
|
32
|
-
switch (this.partitions.userSwapChoice) {
|
|
33
|
-
case 'none': {
|
|
34
|
-
swapSize = 256;
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
case 'small': {
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
case 'suspend': {
|
|
41
|
-
swapSize *= 2;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case 'file': {
|
|
45
|
-
swapSize = 0;
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
// No default
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Quindi, per risolvere questo problema, invece di creare RAID e poi partizionare, è necessario
|
|
52
|
-
* prima partizionare i dischi e poi raccogliere alcune partizioni in RAID.
|
|
53
|
-
* Anche se questo è discutibile, suggerisco il seguente schema:
|
|
54
|
-
*
|
|
55
|
-
* per l'installazione EFI: un ESP (tipo 1) di 511MiB (offset predefinito 1MiB),
|
|
56
|
-
* poi 512MiB per /boot di tipo Linux RAID, poi il resto per il resto di tipo Linux RAID
|
|
57
|
-
* (questo è il tipo 29 in fdisk se non sbaglio).
|
|
58
|
-
*
|
|
59
|
-
* per l'installazione legacy: 1 MiB (tipo 4 - biosgrub), 510 MiB di avvio (RAID) e il resto RAID.
|
|
60
|
-
*
|
|
61
|
-
* Quindi, si creano due RAID (/boot e il resto) e si seleziona uno degli ESP come “l'ESP”.
|
|
62
|
-
*
|
|
63
|
-
* Dopo l'installazione si abilita l'avvio dal secondo disco. Poi si crea LVM sul RAID grande, per contenere
|
|
64
|
-
* i filesystem; si può creare un volume di swap, un volume FS di root (30 GiB sono sufficienti
|
|
65
|
-
* per Debian ed è facile da ingrandire al volo; si noti che tutti i dati saranno collocati
|
|
66
|
-
* in altri volumi dedicati montati - non è utile memorizzare i dati delle applicazioni nel
|
|
67
|
-
* volume di root).
|
|
68
|
-
*
|
|
69
|
-
* Il resto può essere creato secondo le necessità, durante la vita del sistema.
|
|
70
|
-
*/
|
|
71
|
-
if (installMode === 'standard' && !this.efi) {
|
|
72
|
-
/**
|
|
73
|
-
* ===========================================================================================
|
|
74
|
-
* BIOS: working
|
|
75
|
-
* ===========================================================================================
|
|
76
|
-
*/
|
|
77
|
-
await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
|
|
78
|
-
await exec(`parted --script --align optimal ${installDevice} mkpart primary linux-swap 1MiB ${swapSize + 1}MiB`, this.echo); // dev/sda1 swap
|
|
79
|
-
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 ${swapSize + 1}MiB 100%`, this.echo); // dev/sda2 root
|
|
80
|
-
await exec(`parted ${installDevice} set 1 boot on`, this.echo);
|
|
81
|
-
await exec(`parted ${installDevice} set 1 esp on`, this.echo);
|
|
82
|
-
// SWAP
|
|
83
|
-
this.devices.swap.name = `${installDevice}${p}1`;
|
|
84
|
-
this.devices.swap.fsType = 'swap';
|
|
85
|
-
this.devices.swap.mountPoint = 'none';
|
|
86
|
-
// ROOT
|
|
87
|
-
this.devices.root.name = `${installDevice}${p}2`;
|
|
88
|
-
this.devices.root.fsType = 'ext4';
|
|
89
|
-
this.devices.root.mountPoint = '/';
|
|
90
|
-
// BOOT/DATA/EFI
|
|
91
|
-
this.devices.boot.name = 'none';
|
|
92
|
-
this.devices.data.name = 'none';
|
|
93
|
-
this.devices.efi.name = 'none';
|
|
94
|
-
retVal = true;
|
|
95
|
-
}
|
|
96
|
-
else if (installMode === 'full-encrypted' && !this.efi) {
|
|
97
|
-
/**
|
|
98
|
-
* ===========================================================================================
|
|
99
|
-
* BIOS: full-encrypt:
|
|
100
|
-
* ===========================================================================================
|
|
101
|
-
*/
|
|
102
|
-
await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
|
|
103
|
-
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 1MiB 512MiB`, this.echo); // sda1
|
|
104
|
-
await exec(`parted --script --align optimal ${installDevice} mkpart primary linux-swap 512MiB ${swapSize + 512}MiB`, this.echo); // sda2
|
|
105
|
-
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 ${swapSize + 512}MiB 100%`, this.echo); // sda3
|
|
106
|
-
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
107
|
-
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
108
|
-
// BOOT 512M
|
|
109
|
-
this.devices.boot.name = `${installDevice}${p}1`; // 'boot'
|
|
110
|
-
this.devices.boot.fsType = 'ext4';
|
|
111
|
-
this.devices.boot.mountPoint = '/boot';
|
|
112
|
-
// SWAP 8G
|
|
113
|
-
// this.redraw(<Install message={`Formatting LUKS ${installDevice}2`} percent={0} />)
|
|
114
|
-
const crytoSwap = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}2`, echoYes);
|
|
115
|
-
if (crytoSwap.code !== 0) {
|
|
116
|
-
Utils.warning(`Error: ${crytoSwap.code} ${crytoSwap.data}`);
|
|
117
|
-
process.exit(1);
|
|
118
|
-
}
|
|
119
|
-
// this.redraw(<Install message={`Opening ${installDevice}${p}2 as swap_crypted`} percent={0} />)
|
|
120
|
-
const crytoSwapOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}2 swap_crypted`, echoYes);
|
|
121
|
-
if (crytoSwapOpen.code !== 0) {
|
|
122
|
-
Utils.warning(`Error: ${crytoSwapOpen.code} ${crytoSwapOpen.data}`);
|
|
123
|
-
process.exit(1);
|
|
124
|
-
}
|
|
125
|
-
this.devices.swap.name = '/dev/mapper/swap_crypted';
|
|
126
|
-
this.devices.swap.cryptedFrom = `${installDevice}${p}2`;
|
|
127
|
-
this.devices.swap.fsType = 'swap';
|
|
128
|
-
this.devices.swap.mountPoint = 'none';
|
|
129
|
-
// ROOT
|
|
130
|
-
// this.redraw(<Install message={`Formatting LUKS ${installDevice}${p}3`} percent={0} />)
|
|
131
|
-
const crytoRoot = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}3`, echoYes);
|
|
132
|
-
if (crytoRoot.code !== 0) {
|
|
133
|
-
Utils.warning(`Error: ${crytoRoot.code} ${crytoRoot.data}`);
|
|
134
|
-
process.exit(1);
|
|
135
|
-
}
|
|
136
|
-
// this.redraw(<Install message={`Opening ${installDevice}${p}3 as root_crypted`} percent={0} />)
|
|
137
|
-
const crytoRootOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}3 root_crypted`, echoYes);
|
|
138
|
-
if (crytoRootOpen.code !== 0) {
|
|
139
|
-
Utils.warning(`Error: ${crytoRootOpen.code} ${crytoRootOpen.data}`);
|
|
140
|
-
process.exit(1);
|
|
141
|
-
}
|
|
142
|
-
this.devices.root.name = '/dev/mapper/root_crypted';
|
|
143
|
-
this.devices.root.cryptedFrom = `${installDevice}${p}3`;
|
|
144
|
-
this.devices.root.fsType = 'ext4';
|
|
145
|
-
this.devices.root.mountPoint = '/';
|
|
146
|
-
// BOOT/DATA/EFI
|
|
147
|
-
this.devices.data.name = 'none';
|
|
148
|
-
this.devices.efi.name = 'none';
|
|
149
|
-
retVal = true;
|
|
150
|
-
}
|
|
151
|
-
else if (installMode === 'standard' && this.efi) {
|
|
152
|
-
/**
|
|
153
|
-
* ===========================================================================================
|
|
154
|
-
* UEFI: working
|
|
155
|
-
* ===========================================================================================
|
|
156
|
-
*/
|
|
157
|
-
await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
|
|
158
|
-
await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
|
|
159
|
-
await exec(`parted --script ${installDevice} mkpart swap linux-swap 256MiB ${swapSize + 256}Mib`, this.echo); // sda2 swap
|
|
160
|
-
await exec(`parted --script ${installDevice} mkpart root ext4 ${swapSize + 256}MiB 100%`, this.echo); // sda3 root
|
|
161
|
-
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
162
|
-
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
163
|
-
this.devices.efi.name = `${installDevice}${p}1`;
|
|
164
|
-
this.devices.efi.fsType = 'F 32 -I';
|
|
165
|
-
this.devices.efi.mountPoint = '/boot/efi';
|
|
166
|
-
this.devices.boot.name = 'none';
|
|
167
|
-
this.devices.swap.name = `${installDevice}${p}2`;
|
|
168
|
-
this.devices.swap.fsType = 'swap';
|
|
169
|
-
this.devices.root.name = `${installDevice}${p}3`;
|
|
170
|
-
this.devices.root.fsType = 'ext4';
|
|
171
|
-
this.devices.root.mountPoint = '/';
|
|
172
|
-
// BOOT/DATA/EFI
|
|
173
|
-
this.devices.boot.name = 'none';
|
|
174
|
-
this.devices.data.name = 'none';
|
|
175
|
-
// this.devices.efi.name = `none`
|
|
176
|
-
retVal = true;
|
|
177
|
-
}
|
|
178
|
-
else if (installMode === 'full-encrypted' && this.efi) {
|
|
179
|
-
/**
|
|
180
|
-
* ===========================================================================================
|
|
181
|
-
* UEFI, full-encrypt
|
|
182
|
-
* ===========================================================================================
|
|
183
|
-
*/
|
|
184
|
-
await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
|
|
185
|
-
await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
|
|
186
|
-
await exec(`parted --script ${installDevice} mkpart boot ext4 256MiB 768MiB`, this.echo); // sda2 boot
|
|
187
|
-
await exec(`parted --script ${installDevice} mkpart swap linux-swap 768MiB ${swapSize + 768}MiB`, this.echo); // sda3 swap
|
|
188
|
-
await exec(`parted --script ${installDevice} mkpart root ext4 ${swapSize + 768}MiB 100%`, this.echo); // sda4 root
|
|
189
|
-
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
190
|
-
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
191
|
-
// EFI 256M
|
|
192
|
-
this.devices.efi.name = `${installDevice}${p}1`; // 'efi'
|
|
193
|
-
this.devices.efi.fsType = 'F 32 -I';
|
|
194
|
-
this.devices.efi.mountPoint = '/boot/efi';
|
|
195
|
-
// BOOT 512M
|
|
196
|
-
this.devices.boot.name = `${installDevice}${p}2`; // 'boot'
|
|
197
|
-
this.devices.boot.fsType = 'ext4';
|
|
198
|
-
this.devices.boot.mountPoint = '/boot';
|
|
199
|
-
/**
|
|
200
|
-
* cryptsetup return codes are:
|
|
201
|
-
*
|
|
202
|
-
* 1 wrong parameters,
|
|
203
|
-
* 2 no permission (bad passphrase),
|
|
204
|
-
* 3 out of memory,
|
|
205
|
-
* 4 wrong device specified,
|
|
206
|
-
* 5 device already exists or device is busy.
|
|
207
|
-
*
|
|
208
|
-
* sometime due scarce memory 2GB, we can have the process killed
|
|
209
|
-
*/
|
|
210
|
-
// SWAP 8G
|
|
211
|
-
// redraw(<Install message={`Formatting LUKS ${installDevice}${p}3`} percent={0} />)
|
|
212
|
-
const crytoSwap = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}3`, echoYes);
|
|
213
|
-
if (crytoSwap.code !== 0) {
|
|
214
|
-
Utils.warning(`Error: ${crytoSwap.code} ${crytoSwap.data}`);
|
|
215
|
-
process.exit(1);
|
|
216
|
-
}
|
|
217
|
-
// this.redraw(<Install message={`Opening ${installDevice}${p}3 as swap_crypted`} percent={0} />)
|
|
218
|
-
const crytoSwapOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}3 swap_crypted`, echoYes);
|
|
219
|
-
if (crytoSwapOpen.code !== 0) {
|
|
220
|
-
Utils.warning(`Error: ${crytoSwapOpen.code} ${crytoSwapOpen.data}`);
|
|
221
|
-
process.exit(1);
|
|
222
|
-
}
|
|
223
|
-
this.devices.swap.name = '/dev/mapper/swap_crypted';
|
|
224
|
-
this.devices.swap.cryptedFrom = `${installDevice}${p}3`;
|
|
225
|
-
this.devices.swap.fsType = 'swap';
|
|
226
|
-
this.devices.swap.mountPoint = 'none';
|
|
227
|
-
// ROOT
|
|
228
|
-
// this.redraw(<Install message={`Formatting LUKS ${installDevice}${p}4`} percent={0} />)
|
|
229
|
-
const crytoRoot = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}4`, echoYes);
|
|
230
|
-
if (crytoRoot.code !== 0) {
|
|
231
|
-
Utils.warning(`Error: ${crytoRoot.code} ${crytoRoot.data}`);
|
|
232
|
-
process.exit(1);
|
|
233
|
-
}
|
|
234
|
-
// this.redraw(<Install message={`Opening ${installDevice}${p}4 as root_crypted`} percent={0} />)
|
|
235
|
-
const crytoRootOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}4 root_crypted`, echoYes);
|
|
236
|
-
if (crytoRootOpen.code !== 0) {
|
|
237
|
-
Utils.warning(`Error: ${crytoRootOpen.code} ${crytoRootOpen.data}`);
|
|
238
|
-
process.exit(1);
|
|
239
|
-
}
|
|
240
|
-
this.devices.root.name = '/dev/mapper/root_crypted';
|
|
241
|
-
this.devices.root.cryptedFrom = `${installDevice}${p}4`;
|
|
242
|
-
this.devices.root.fsType = 'ext4';
|
|
243
|
-
this.devices.root.mountPoint = '/';
|
|
244
|
-
// BOOT/DATA/EFI
|
|
245
|
-
// this.devices.boot.name = `none`
|
|
246
|
-
this.devices.data.name = 'none';
|
|
247
|
-
// this.devices.efi.name = `none`
|
|
248
|
-
retVal = true;
|
|
249
|
-
}
|
|
250
|
-
else if (installMode === 'lvm2' && !this.efi) {
|
|
251
|
-
/**
|
|
252
|
-
* ===========================================================================================
|
|
253
|
-
* PROXMOX VE: BIOS and lvm2
|
|
254
|
-
* ===========================================================================================
|
|
255
|
-
*/
|
|
256
|
-
// Creo partizioni
|
|
257
|
-
await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
|
|
258
|
-
await exec(`parted --script ${installDevice} mkpart primary ext2 1 512`, this.echo); // sda1
|
|
259
|
-
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext2 512 100%`, this.echo); // sda2
|
|
260
|
-
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
261
|
-
await exec(`parted --script ${installDevice} set 2 lvm on`, this.echo); // sda2
|
|
262
|
-
const partInfo = await lvmPartInfo(installDevice);
|
|
263
|
-
const lvmPartname = partInfo[0];
|
|
264
|
-
const lvmSwapSize = partInfo[1];
|
|
265
|
-
const lvmRootSize = partInfo[2];
|
|
266
|
-
await exec(`pvcreate /dev/${lvmPartname}`, this.echo);
|
|
267
|
-
await exec(`vgcreate pve /dev/${lvmPartname}`, this.echo);
|
|
268
|
-
await exec('vgchange -an', this.echo);
|
|
269
|
-
await exec(`lvcreate -L ${lvmSwapSize} -nswap pve`, this.echo);
|
|
270
|
-
await exec(`lvcreate -L ${lvmRootSize} -nroot pve`, this.echo);
|
|
271
|
-
await exec('lvcreate -l 100%FREE -ndata pve', this.echo);
|
|
272
|
-
await exec('vgchange -a y pve', this.echo);
|
|
273
|
-
this.devices.efi.name = 'none';
|
|
274
|
-
this.devices.boot.name = `${installDevice}${p}1`;
|
|
275
|
-
this.devices.root.fsType = 'ext2';
|
|
276
|
-
this.devices.root.mountPoint = '/boot';
|
|
277
|
-
this.devices.root.name = '/dev/pve/root';
|
|
278
|
-
this.devices.root.fsType = 'ext4';
|
|
279
|
-
this.devices.root.mountPoint = '/';
|
|
280
|
-
this.devices.data.name = '/dev/pve/data';
|
|
281
|
-
this.devices.data.fsType = 'ext4';
|
|
282
|
-
this.devices.data.mountPoint = '/var/lib/vz';
|
|
283
|
-
this.devices.swap.name = '/dev/pve/swap';
|
|
284
|
-
retVal = true;
|
|
285
|
-
}
|
|
286
|
-
else if (this.partitions.installationMode === 'lvm2' && this.efi) {
|
|
287
|
-
/**
|
|
288
|
-
* ===========================================================================================
|
|
289
|
-
* PROXMOX VE: lvm2 and UEFI
|
|
290
|
-
* ===========================================================================================
|
|
291
|
-
*/
|
|
292
|
-
await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
|
|
293
|
-
await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
|
|
294
|
-
await exec(`parted --script ${installDevice} mkpart boot ext2 256MiB 768MiB`, this.echo); // sda2 boot
|
|
295
|
-
await exec(`parted --script ${installDevice} mkpart lvm ext4 768MiB 100%`, this.echo); // sda3 lmv2
|
|
296
|
-
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
297
|
-
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
298
|
-
await exec(`parted --script ${installDevice} set 3 lvm on`, this.echo); // sda3
|
|
299
|
-
const partInfo = await lvmPartInfo(installDevice);
|
|
300
|
-
const lvmPartname = partInfo[0];
|
|
301
|
-
const lvmSwapSize = partInfo[1];
|
|
302
|
-
const lvmRootSize = partInfo[2];
|
|
303
|
-
await exec(`pvcreate /dev/${lvmPartname}`, this.echo);
|
|
304
|
-
await exec(`vgcreate pve /dev/${lvmPartname}`, this.echo);
|
|
305
|
-
await exec('vgchange -an', this.echo);
|
|
306
|
-
await exec(`lvcreate -L ${lvmSwapSize} -nswap pve`, this.echo);
|
|
307
|
-
await exec(`lvcreate -L ${lvmRootSize} -nroot pve`, this.echo);
|
|
308
|
-
await exec('lvcreate -l 100%FREE -ndata pve', this.echo);
|
|
309
|
-
await exec('vgchange -a y pve', this.echo);
|
|
310
|
-
this.devices.efi.name = `${installDevice}${p}1`;
|
|
311
|
-
this.devices.efi.fsType = 'F 32 -I';
|
|
312
|
-
this.devices.efi.mountPoint = '/boot/efi';
|
|
313
|
-
this.devices.boot.name = `${installDevice}${p}2`;
|
|
314
|
-
this.devices.boot.fsType = 'ext4';
|
|
315
|
-
this.devices.boot.mountPoint = '/boot';
|
|
316
|
-
this.devices.root.name = '/dev/pve/root';
|
|
317
|
-
this.devices.root.fsType = 'ext4';
|
|
318
|
-
this.devices.root.mountPoint = '/';
|
|
319
|
-
this.devices.data.name = '/dev/pve/data';
|
|
320
|
-
this.devices.data.fsType = 'ext4';
|
|
321
|
-
this.devices.data.mountPoint = '/var/lib/vz';
|
|
322
|
-
this.devices.swap.name = '/dev/pve/swap';
|
|
323
|
-
retVal = true;
|
|
324
|
-
}
|
|
325
|
-
return retVal;
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
*
|
|
329
|
-
* @param installDevice
|
|
330
|
-
* @returns
|
|
331
|
-
*/
|
|
332
|
-
export async function lvmPartInfo(installDevice = '/dev/sda') {
|
|
333
|
-
// Partizione LVM
|
|
334
|
-
const lvmPartname = shx.exec(`fdisk ${installDevice} -l | grep LVM | awk '{print $1}' | cut -d "/" -f3`).stdout.trim();
|
|
335
|
-
const lvmByteSize = Number(shx.exec(`cat /proc/partitions | grep ${lvmPartname}| awk '{print $3}' | grep "[0-9]"`).stdout.trim());
|
|
336
|
-
const lvmSize = lvmByteSize / 1024;
|
|
337
|
-
// La partizione di root viene posta ad 1/4 della partizione LVM, limite max 100 GB
|
|
338
|
-
const lvmSwapSize = 8192;
|
|
339
|
-
let lvmRootSize = lvmSize / 8;
|
|
340
|
-
if (lvmRootSize < 20_480) {
|
|
341
|
-
lvmRootSize = 20_480;
|
|
342
|
-
}
|
|
343
|
-
const lvmDataSize = lvmSize - lvmRootSize - lvmSwapSize;
|
|
344
|
-
return [lvmPartname, lvmSwapSize, lvmRootSize, lvmDataSize];
|
|
345
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/remove-installer-link.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import Sequence from '../sequence.js';
|
|
10
|
-
/**
|
|
11
|
-
* removeInstallerLink
|
|
12
|
-
*/
|
|
13
|
-
export default function removeInstallerLink(this: Sequence): Promise<void>;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/remove-installer-link.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import fs from 'node:fs';
|
|
10
|
-
/**
|
|
11
|
-
* removeInstallerLink
|
|
12
|
-
*/
|
|
13
|
-
export default async function removeInstallerLink() {
|
|
14
|
-
const file = `${this.installTarget}/usr/bin/penguins-links-add.sh`;
|
|
15
|
-
let lines = [];
|
|
16
|
-
let content = '';
|
|
17
|
-
if (fs.existsSync(file)) {
|
|
18
|
-
lines = fs.readFileSync(file, { encoding: 'utf8', flag: 'r' }).split('\n');
|
|
19
|
-
for (let i = 0; i < lines.length; i++) {
|
|
20
|
-
if (lines[i]) {
|
|
21
|
-
if (lines[i].search('penguins-krill.desktop') !== -1) {
|
|
22
|
-
lines[i] = '#' + lines[i];
|
|
23
|
-
}
|
|
24
|
-
if (lines[i].search('penguins-clinstaller.desktop') !== -1) {
|
|
25
|
-
lines[i] = '#' + lines[i];
|
|
26
|
-
}
|
|
27
|
-
if (lines[i].search('install-system.desktop') !== -1) {
|
|
28
|
-
lines[i] = '#' + lines[i];
|
|
29
|
-
}
|
|
30
|
-
content += lines[i] + '\n';
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
fs.writeFileSync(file, content);
|
|
35
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/umount.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import Sequence from '../sequence.js';
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* @param mountpoint
|
|
13
|
-
*/
|
|
14
|
-
export default function umount(this: Sequence, mountPoint?: string): Promise<void>;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/umount.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import Utils from '../../classes/utils.js';
|
|
10
|
-
import { exec } from '../../lib/utils.js';
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* @param mountpoint
|
|
14
|
-
*/
|
|
15
|
-
export default async function umount(mountPoint = '') {
|
|
16
|
-
let message = 'umount: ' + mountPoint;
|
|
17
|
-
if (Utils.isMountpoint(mountPoint)) {
|
|
18
|
-
let cmd = `umount ${mountPoint} ${this.toNull}`;
|
|
19
|
-
try {
|
|
20
|
-
await exec(cmd, this.echo);
|
|
21
|
-
await exec('sleep 1', this.echo);
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
message += cmd + JSON.stringify(error);
|
|
25
|
-
await Utils.pressKeyToExit(message, true);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/unpackfs.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import Sequence from '../sequence.js';
|
|
10
|
-
/**
|
|
11
|
-
* unpackfs
|
|
12
|
-
*/
|
|
13
|
-
export default function unpackfs(this: Sequence): Promise<void>;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/krill/modules/unpackfs.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
|
-
*/
|
|
9
|
-
import Utils from '../../classes/utils.js';
|
|
10
|
-
import { exec } from '../../lib/utils.js';
|
|
11
|
-
/**
|
|
12
|
-
* unpackfs
|
|
13
|
-
*/
|
|
14
|
-
export default async function unpackfs() {
|
|
15
|
-
// const cmd = `unsquashfs -d ${this.installTarget} -f ${this.distro.liveMediumPath}`
|
|
16
|
-
const cmd = `unsquashfs -d ${this.installTarget} -f ${this.distro.liveMediumPath}${this.distro.squashfs} ${this.toNull}`;
|
|
17
|
-
const echoYes = Utils.setEcho(true);
|
|
18
|
-
const echoNo = Utils.setEcho(false);
|
|
19
|
-
await exec(cmd, echoNo);
|
|
20
|
-
}
|