penguins-eggs 9.6.34 → 10.0.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 +1458 -1
- package/README.md +823 -8
- package/addons/eggs/theme/livecd/grub.main.cfg +4 -4
- package/addons/eggs/theme/livecd/isolinux.main.cfg +5 -5
- package/bin/dev.cmd +1 -1
- package/bin/dev.js +6 -0
- package/bin/run.js +5 -0
- package/conf/derivatives.yaml +2 -0
- package/conf/distros/buster/calamares/calamares-modules/bootloader-config/bootloader-config.sh +3 -3
- package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +1 -1
- package/conf/distros/buster/calamares/modules/fstab.yml +1 -1
- package/conf/distros/focal/calamares/modules/fstab.yml +1 -1
- package/conf/{exclude.list.homes → exclude.list.d/home.list} +6 -1
- package/conf/{exclude.list.template → exclude.list.d/master.list} +15 -24
- package/conf/exclude.list.d/var.list +21 -0
- package/conf/tools.yaml +1 -3
- package/dist/classes/bleach.d.ts +37 -0
- package/dist/classes/bleach.js +43 -91
- package/dist/classes/cfs.d.ts +17 -0
- package/dist/classes/cfs.js +15 -12
- package/dist/classes/compressors.d.ts +53 -0
- package/dist/classes/compressors.js +51 -58
- package/dist/classes/daddy.d.ts +18 -0
- package/dist/classes/daddy.js +93 -101
- package/dist/classes/distro.d.ts +26 -0
- package/dist/classes/distro.js +45 -27
- package/dist/classes/families/archlinux.d.ts +61 -0
- package/dist/classes/families/archlinux.js +56 -113
- package/dist/classes/families/debian.d.ts +65 -0
- package/dist/classes/families/debian.js +68 -143
- package/dist/classes/families/fedora.d.ts +52 -0
- package/dist/classes/families/fedora.js +43 -99
- package/dist/classes/families/mockup.d.ts +60 -0
- package/dist/classes/families/mockup.js +27 -46
- package/dist/classes/families/suse.d.ts +52 -0
- package/dist/classes/families/suse.js +45 -97
- package/dist/classes/incubation/branding.d.ts +17 -0
- package/dist/classes/incubation/branding.js +33 -32
- package/dist/classes/incubation/distros/bionic.d.ts +32 -0
- package/dist/classes/incubation/distros/bionic.js +15 -15
- package/dist/classes/incubation/distros/buster.d.ts +32 -0
- package/dist/classes/incubation/distros/buster.js +15 -15
- package/dist/classes/incubation/distros/focal.d.ts +32 -0
- package/dist/classes/incubation/distros/focal.js +15 -15
- package/dist/classes/incubation/distros/jessie.d.ts +31 -0
- package/dist/classes/incubation/distros/jessie.js +11 -13
- package/dist/classes/incubation/distros/rolling.d.ts +32 -0
- package/dist/classes/incubation/distros/rolling.js +15 -16
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +8 -9
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
- package/dist/classes/incubation/fisherman-helper/packages.js +17 -17
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
- package/dist/classes/incubation/fisherman-helper/settings.js +30 -28
- package/dist/classes/incubation/fisherman.d.ts +77 -0
- package/dist/classes/incubation/fisherman.js +137 -132
- package/dist/classes/incubation/incubator.d.ts +40 -0
- package/dist/classes/incubation/incubator.js +93 -87
- package/dist/classes/incubation/installer.d.ts +13 -0
- package/dist/classes/incubation/installer.js +27 -12
- package/dist/classes/initrd.d.ts +41 -0
- package/dist/classes/initrd.js +42 -44
- package/dist/classes/keyboards.d.ts +50 -0
- package/dist/classes/keyboards.js +110 -107
- package/dist/classes/locales.d.ts +21 -0
- package/dist/classes/locales.js +30 -34
- package/dist/classes/n8.d.ts +17 -0
- package/dist/classes/n8.js +16 -22
- package/dist/classes/network.d.ts +37 -0
- package/dist/classes/network.js +21 -25
- package/dist/classes/ovary.d.ts +205 -0
- package/dist/classes/ovary.js +1262 -1334
- package/dist/classes/pacman.d.ts +149 -0
- package/dist/classes/pacman.js +347 -426
- package/dist/classes/pve-live.d.ts +17 -0
- package/dist/classes/pve-live.js +23 -25
- package/dist/classes/pxe.d.ts +65 -0
- package/dist/classes/pxe.js +206 -210
- package/dist/classes/settings.d.ts +53 -0
- package/dist/classes/settings.js +99 -102
- package/dist/classes/sources_list.d.ts +28 -0
- package/dist/classes/sources_list.js +35 -39
- package/dist/classes/systemctl.d.ts +47 -0
- package/dist/classes/systemctl.js +35 -39
- package/dist/classes/tailor.d.ts +46 -0
- package/dist/classes/tailor.js +225 -241
- package/dist/classes/tools.d.ts +30 -0
- package/dist/classes/tools.js +20 -26
- package/dist/classes/users.d.ts +28 -0
- package/dist/classes/users.js +22 -16
- package/dist/classes/utils.d.ts +318 -0
- package/dist/classes/utils.js +91 -76
- package/dist/classes/xdg.d.ts +45 -0
- package/dist/classes/xdg.js +129 -133
- package/dist/classes/yolk.d.ts +33 -0
- package/dist/classes/yolk.js +54 -60
- package/dist/commands/adapt.d.ts +17 -0
- package/dist/commands/adapt.js +21 -25
- package/dist/commands/analyze.d.ts +26 -0
- package/dist/commands/analyze.js +60 -74
- package/dist/commands/calamares.d.ts +29 -0
- package/dist/commands/calamares.js +53 -60
- package/dist/commands/config.d.ts +36 -0
- package/dist/commands/config.js +120 -142
- package/dist/commands/cuckoo.d.ts +16 -0
- package/dist/commands/cuckoo.js +24 -28
- package/dist/commands/dad.d.ts +19 -0
- package/dist/commands/dad.js +26 -30
- package/dist/commands/export/deb.d.ts +19 -0
- package/dist/commands/export/deb.js +33 -42
- package/dist/commands/export/iso.d.ts +19 -0
- package/dist/commands/export/iso.js +24 -28
- package/dist/commands/install.d.ts +37 -0
- package/dist/commands/install.js +68 -68
- package/dist/commands/kill.d.ts +24 -0
- package/dist/commands/kill.js +31 -38
- package/dist/commands/mom.d.ts +16 -0
- package/dist/commands/mom.js +20 -22
- package/dist/commands/produce.d.ts +33 -0
- package/dist/commands/produce.js +100 -92
- package/dist/commands/status.d.ts +23 -0
- package/dist/commands/status.js +14 -20
- package/dist/commands/syncfrom.d.ts +45 -0
- package/dist/commands/syncfrom.js +99 -109
- package/dist/commands/syncto.d.ts +40 -0
- package/dist/commands/syncto.js +152 -216
- package/dist/commands/tools/clean.d.ts +18 -0
- package/dist/commands/tools/clean.js +21 -25
- package/dist/commands/tools/ppa.d.ts +26 -0
- package/dist/commands/tools/ppa.js +46 -50
- package/dist/commands/tools/skel.d.ts +18 -0
- package/dist/commands/tools/skel.js +27 -31
- package/dist/commands/tools/stat.d.ts +31 -0
- package/dist/commands/tools/stat.js +21 -25
- package/dist/commands/tools/yolk.d.ts +24 -0
- package/dist/commands/tools/yolk.js +23 -27
- package/dist/commands/update.d.ts +47 -0
- package/dist/commands/update.js +66 -70
- package/dist/commands/wardrobe/get.d.ts +23 -0
- package/dist/commands/wardrobe/get.js +26 -28
- package/dist/commands/wardrobe/list.d.ts +24 -0
- package/dist/commands/wardrobe/list.js +69 -67
- package/dist/commands/wardrobe/show.d.ts +25 -0
- package/dist/commands/wardrobe/show.js +57 -52
- package/dist/commands/wardrobe/wear.d.ts +26 -0
- package/dist/commands/wardrobe/wear.js +39 -41
- package/dist/components/finished.d.ts +15 -0
- package/dist/components/finished.js +37 -42
- package/dist/components/information.d.ts +8 -0
- package/dist/components/information.js +155 -0
- package/dist/components/install.d.ts +15 -0
- package/dist/components/install.js +31 -35
- package/dist/components/keyboard.d.ts +16 -0
- package/dist/components/keyboard.js +37 -40
- package/dist/components/location.d.ts +16 -0
- package/dist/components/location.js +38 -38
- package/dist/components/network.d.ts +19 -0
- package/dist/components/network.js +47 -48
- package/dist/components/partitions.d.ts +16 -0
- package/dist/components/partitions.js +47 -51
- package/dist/components/steps.d.ts +13 -0
- package/dist/components/steps.js +148 -0
- package/dist/components/summary.d.ts +24 -0
- package/dist/components/summary.js +53 -54
- package/dist/components/title.d.ts +12 -0
- package/dist/components/title.js +35 -0
- package/dist/components/users.d.ts +24 -0
- package/dist/components/users.js +43 -43
- package/dist/components/welcome.d.ts +13 -0
- package/dist/components/welcome.js +37 -38
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -5
- package/dist/interfaces/i-addons.d.ts +13 -0
- package/dist/interfaces/i-addons.js +8 -3
- package/dist/interfaces/i-analyze.d.ts +17 -0
- package/dist/interfaces/i-analyze.js +11 -16
- package/dist/interfaces/i-app.d.ts +14 -0
- package/dist/interfaces/i-app.js +8 -2
- package/dist/interfaces/i-branding.d.ts +36 -0
- package/dist/interfaces/i-branding.js +8 -2
- package/dist/interfaces/i-calamares-partition.d.ts +18 -0
- package/dist/interfaces/i-calamares-partition.js +3 -4
- package/dist/interfaces/i-config-tools.d.ts +18 -0
- package/dist/interfaces/i-config-tools.js +8 -2
- package/dist/interfaces/i-devices.d.ts +20 -0
- package/dist/interfaces/i-devices.js +8 -2
- package/dist/interfaces/i-distro.d.ts +27 -0
- package/dist/interfaces/i-distro.js +3 -4
- package/dist/interfaces/i-drive-list.d.ts +33 -0
- package/dist/interfaces/i-drive-list.js +3 -4
- package/dist/interfaces/i-eggs-config.d.ts +32 -0
- package/dist/interfaces/i-eggs-config.js +3 -4
- 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 +3 -4
- package/dist/interfaces/i-initrd.d.ts +13 -0
- package/dist/interfaces/i-initrd.js +8 -2
- package/dist/interfaces/i-install.d.ts +16 -0
- package/dist/interfaces/i-install.js +8 -2
- package/dist/interfaces/i-installer.d.ts +17 -0
- package/dist/interfaces/i-installer.js +8 -2
- package/dist/interfaces/i-krill-config.d.ts +33 -0
- package/dist/interfaces/i-krill-config.js +3 -4
- package/dist/interfaces/i-krill.d.ts +42 -0
- package/dist/interfaces/i-krill.js +8 -2
- package/dist/interfaces/i-materia.d.ts +41 -0
- package/dist/interfaces/i-materia.js +8 -2
- package/dist/interfaces/i-net.d.ts +16 -0
- package/dist/interfaces/i-net.js +8 -2
- package/dist/interfaces/i-packages.d.ts +29 -0
- package/dist/interfaces/i-packages.js +3 -4
- package/dist/interfaces/i-partitions.d.ts +16 -0
- package/dist/interfaces/i-partitions.js +8 -2
- package/dist/interfaces/i-pxe.d.ts +21 -0
- package/dist/interfaces/i-pxe.js +8 -39
- package/dist/interfaces/i-remix.d.ts +21 -0
- package/dist/interfaces/i-remix.js +3 -4
- package/dist/interfaces/i-settings.d.ts +39 -0
- package/dist/interfaces/i-settings.js +8 -2
- package/dist/interfaces/i-user.d.ts +14 -0
- package/dist/interfaces/i-user.js +8 -2
- package/dist/interfaces/i-workdir.d.ts +14 -0
- package/dist/interfaces/i-workdir.js +8 -2
- package/dist/interfaces/i-xkb-model.d.ts +24 -0
- package/dist/interfaces/i-xkb-model.js +8 -2
- package/dist/interfaces/index.d.ts +25 -0
- package/dist/interfaces/index.js +3 -4
- package/dist/krill/modules/add-user.d.ts +20 -0
- package/dist/krill/modules/add-user.js +11 -15
- package/dist/krill/modules/bootloader-config-arch.d.ts +14 -0
- package/dist/krill/modules/bootloader-config-arch.js +15 -11
- package/dist/krill/modules/bootloader-config-debian.d.ts +10 -0
- package/dist/krill/modules/bootloader-config-debian.js +20 -16
- package/dist/krill/modules/bootloader-config.d.ts +10 -0
- package/dist/krill/modules/bootloader-config.js +3 -6
- package/dist/krill/modules/bootloader.d.ts +14 -0
- package/dist/krill/modules/bootloader.js +9 -13
- package/dist/krill/modules/change-password.d.ts +15 -0
- package/dist/krill/modules/change-password.js +5 -8
- package/dist/krill/modules/del-live-user.d.ts +14 -0
- package/dist/krill/modules/del-live-user.js +8 -12
- package/dist/krill/modules/fstab.d.ts +14 -0
- package/dist/krill/modules/fstab.js +69 -46
- package/dist/krill/modules/grubcfg.d.ts +17 -0
- package/dist/krill/modules/grubcfg.js +8 -17
- package/dist/krill/modules/hostname.d.ts +13 -0
- package/dist/krill/modules/hostname.js +11 -17
- package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
- package/dist/krill/modules/initramfs-cfg.js +6 -15
- package/dist/krill/modules/initramfs.d.ts +13 -0
- package/dist/krill/modules/initramfs.js +17 -19
- package/dist/krill/modules/locale-cfg.d.ts +10 -0
- package/dist/krill/modules/locale-cfg.js +8 -12
- package/dist/krill/modules/locale.d.ts +13 -0
- package/dist/krill/modules/locale.js +7 -11
- package/dist/krill/modules/m-keyboard.d.ts +14 -0
- package/dist/krill/modules/m-keyboard.js +14 -18
- package/dist/krill/modules/m-timezone.d.ts +14 -0
- package/dist/krill/modules/m-timezone.js +8 -12
- package/dist/krill/modules/machine-id.d.ts +15 -0
- package/dist/krill/modules/machine-id.js +6 -10
- package/dist/krill/modules/mkfs.d.ts +13 -0
- package/dist/krill/modules/mkfs.js +33 -23
- package/dist/krill/modules/mount-fs.d.ts +17 -0
- package/dist/krill/modules/mount-fs.js +20 -26
- package/dist/krill/modules/mount-vfs.d.ts +17 -0
- package/dist/krill/modules/mount-vfs.js +16 -21
- package/dist/krill/modules/network-cfg.d.ts +19 -0
- package/dist/krill/modules/network-cfg.js +28 -31
- package/dist/krill/modules/packages.d.ts +14 -0
- package/dist/krill/modules/packages.js +17 -21
- package/dist/krill/modules/partition.d.ts +20 -0
- package/dist/krill/modules/partition.js +80 -86
- package/dist/krill/modules/remove-installer-link.d.ts +13 -0
- package/dist/krill/modules/remove-installer-link.js +7 -11
- package/dist/krill/modules/umount.d.ts +14 -0
- package/dist/krill/modules/umount.js +9 -13
- package/dist/krill/modules/unpackfs.d.ts +13 -0
- package/dist/krill/modules/unpackfs.js +7 -11
- package/dist/krill/prepare.d.ts +77 -0
- package/dist/krill/{krill-prepare.js → prepare.js} +136 -130
- package/dist/krill/sequence.d.ts +156 -0
- package/dist/krill/sequence.js +640 -0
- package/dist/lib/cli-autologin.d.ts +43 -0
- package/dist/lib/cli-autologin.js +88 -92
- package/dist/lib/get_address.d.ts +8 -0
- package/dist/lib/get_address.js +9 -11
- package/dist/lib/get_dns.d.ts +8 -0
- package/dist/lib/get_dns.js +9 -11
- package/dist/lib/get_domain.d.ts +8 -0
- package/dist/lib/get_domain.js +9 -11
- package/dist/lib/get_gateway.d.ts +8 -0
- package/dist/lib/get_gateway.js +9 -11
- package/dist/lib/get_hostname.d.ts +8 -0
- package/dist/lib/get_hostname.js +9 -11
- package/dist/lib/get_netmask.d.ts +8 -0
- package/dist/lib/get_netmask.js +9 -11
- package/dist/lib/get_password.d.ts +8 -0
- package/dist/lib/get_password.js +10 -13
- package/dist/lib/get_userfullname.d.ts +8 -0
- package/dist/lib/get_userfullname.js +9 -11
- package/dist/lib/get_username.d.ts +8 -0
- package/dist/lib/get_username.js +9 -12
- package/dist/lib/kill_me_softly.d.ts +11 -0
- package/dist/lib/kill_me_softly.js +19 -24
- package/dist/lib/select_address_type.d.ts +8 -0
- package/dist/lib/select_address_type.js +9 -12
- package/dist/lib/select_filesystem_type.d.ts +8 -0
- package/dist/lib/select_filesystem_type.js +19 -17
- package/dist/lib/select_installation_device.d.ts +8 -0
- package/dist/lib/select_installation_device.js +11 -15
- package/dist/lib/select_installation_mode.d.ts +8 -0
- package/dist/lib/select_installation_mode.js +9 -11
- package/dist/lib/select_interface.d.ts +8 -0
- package/dist/lib/select_interface.js +9 -12
- package/dist/lib/select_keyboard_layout.d.ts +11 -0
- package/dist/lib/select_keyboard_layout.js +11 -15
- package/dist/lib/select_keyboard_model.d.ts +11 -0
- package/dist/lib/select_keyboard_model.js +11 -15
- package/dist/lib/select_keyboard_option.d.ts +11 -0
- package/dist/lib/select_keyboard_option.js +11 -15
- package/dist/lib/select_keyboard_variant.d.ts +11 -0
- package/dist/lib/select_keyboard_variant.js +11 -15
- package/dist/lib/select_languages.d.ts +8 -0
- package/dist/lib/select_languages.js +11 -15
- package/dist/lib/select_regions.d.ts +8 -0
- package/dist/lib/select_regions.js +9 -11
- package/dist/lib/select_user_swap_choice.d.ts +8 -0
- package/dist/lib/select_user_swap_choice.js +13 -17
- package/dist/lib/select_zones.d.ts +8 -0
- package/dist/lib/select_zones.js +9 -11
- package/dist/lib/utils.d.ts +34 -0
- package/dist/lib/utils.js +24 -14
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +130 -76
- package/package.json +55 -74
- package/scripts/_eggs +9 -7
- package/scripts/eggs.bash +4 -4
- package/LICENSE +0 -339
- package/bin/dev +0 -17
- package/bin/run +0 -5
- package/conf/exclude.list.custom +0 -3
- package/dist/components/elements/information.js +0 -194
- package/dist/components/elements/steps.js +0 -152
- package/dist/components/elements/title.js +0 -36
- package/dist/interfaces/i-filters.js +0 -3
- package/dist/krill/krill-sequence.js +0 -645
- package/dist/lib/dependencies.js +0 -120
- package/manpages/doc/man/README.md +0 -0
- /package/conf/{exclude.list.usr → exclude.list.d/usr.list} +0 -0
|
@@ -1,38 +1,34 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ./src/krill/modules/mount-vfs.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
5
4
|
* author: Piero Proietti
|
|
6
5
|
* email: piero.proietti@gmail.com
|
|
7
6
|
* license: MIT
|
|
8
7
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
exports.umountVfs = exports.mountVfs = void 0;
|
|
12
|
-
const utils_1 = require("../../lib/utils");
|
|
9
|
+
import { exec } from '../../lib/utils.js';
|
|
13
10
|
/**
|
|
14
11
|
* mountvfs()
|
|
15
12
|
*/
|
|
16
|
-
async function mountVfs() {
|
|
17
|
-
await
|
|
18
|
-
await
|
|
19
|
-
await
|
|
20
|
-
await
|
|
21
|
-
await
|
|
22
|
-
await
|
|
23
|
-
await
|
|
24
|
-
await
|
|
25
|
-
await
|
|
13
|
+
export async function mountVfs() {
|
|
14
|
+
await exec(`mkdir ${this.installTarget}/dev ${this.toNull}`, this.echo);
|
|
15
|
+
await exec(`mkdir ${this.installTarget}/dev/pts ${this.toNull}`, this.echo);
|
|
16
|
+
await exec(`mkdir ${this.installTarget}/proc ${this.toNull}`, this.echo);
|
|
17
|
+
await exec(`mkdir ${this.installTarget}/sys ${this.toNull}`, this.echo);
|
|
18
|
+
await exec(`mkdir ${this.installTarget}/run ${this.toNull}`, this.echo);
|
|
19
|
+
await exec(`mount -o bind /dev ${this.installTarget}/dev ${this.toNull}`, this.echo);
|
|
20
|
+
await exec(`mount -o bind /dev/pts ${this.installTarget}/dev/pts ${this.toNull}`, this.echo);
|
|
21
|
+
await exec(`mount -o bind /proc ${this.installTarget}/proc ${this.toNull}`, this.echo);
|
|
22
|
+
await exec(`mount -o bind /sys ${this.installTarget}/sys ${this.toNull}`, this.echo);
|
|
26
23
|
if (this.efi) {
|
|
27
|
-
await
|
|
24
|
+
await exec(`mount -o bind /sys/firmware/efi/efivars ${this.installTarget}/sys/firmware/efi/efivars ${this.toNull}`, this.echo);
|
|
28
25
|
}
|
|
29
|
-
await
|
|
26
|
+
await exec(`mount -o rbind /run ${this.installTarget}/run ${this.toNull}`, this.echo);
|
|
30
27
|
}
|
|
31
|
-
exports.mountVfs = mountVfs;
|
|
32
28
|
/**
|
|
33
29
|
*
|
|
34
30
|
*/
|
|
35
|
-
async function umountVfs() {
|
|
31
|
+
export async function umountVfs() {
|
|
36
32
|
await this.umount(`${this.installTarget}/dev/pts`);
|
|
37
33
|
await this.umount(`${this.installTarget}/dev`);
|
|
38
34
|
await this.umount(`${this.installTarget}/proc`);
|
|
@@ -42,4 +38,3 @@ async function umountVfs() {
|
|
|
42
38
|
}
|
|
43
39
|
await this.umount(`${this.installTarget}/sys`);
|
|
44
40
|
}
|
|
45
|
-
exports.umountVfs = umountVfs;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./src/krill/modules/network-cfg.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
|
+
* networkcfg
|
|
12
|
+
*
|
|
13
|
+
* - debian: /etc/network/interface
|
|
14
|
+
* - ubuntu: netplan
|
|
15
|
+
* - arch:
|
|
16
|
+
*
|
|
17
|
+
* - all: /etc/resolv.conf
|
|
18
|
+
*/
|
|
19
|
+
export default function networkCfg(this: Sequence): Promise<void>;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ./src/krill/modules/network-cfg.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
5
4
|
* author: Piero Proietti
|
|
6
5
|
* email: piero.proietti@gmail.com
|
|
7
6
|
* license: MIT
|
|
8
7
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
import Pacman from '../../classes/pacman.js';
|
|
10
|
+
import Systemctl from '../../classes/systemctl.js';
|
|
11
|
+
import Utils from '../../classes/utils.js';
|
|
12
|
+
import { exec } from '../../lib/utils.js';
|
|
14
13
|
/**
|
|
15
14
|
* networkcfg
|
|
16
15
|
*
|
|
@@ -20,11 +19,12 @@ const pacman_1 = tslib_1.__importDefault(require("../../classes/pacman"));
|
|
|
20
19
|
*
|
|
21
20
|
* - all: /etc/resolv.conf
|
|
22
21
|
*/
|
|
23
|
-
async function networkCfg() {
|
|
22
|
+
export default async function networkCfg() {
|
|
23
|
+
const systemdCtl = new Systemctl();
|
|
24
24
|
/**
|
|
25
25
|
* debian: /etc/network/interfaces
|
|
26
26
|
*/
|
|
27
|
-
if (this.distro.familyId === 'debian' && !
|
|
27
|
+
if (this.distro.familyId === 'debian' && !Pacman.packageIsInstalled('netplan.io')) {
|
|
28
28
|
const file = this.installTarget + '/etc/network/interfaces';
|
|
29
29
|
let content = '# created by eggs\n\n';
|
|
30
30
|
content += 'auto lo\n';
|
|
@@ -36,37 +36,34 @@ async function networkCfg() {
|
|
|
36
36
|
content += ' netmask ' + this.network.netmask + '\n';
|
|
37
37
|
content += ' gateway ' + this.network.gateway + '\n';
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
// trixie
|
|
41
|
-
// const systemdCtl = new Systemctl()
|
|
39
|
+
Utils.write(file, content);
|
|
40
|
+
// trixie
|
|
42
41
|
// if (await systemdCtl.isActive('systemd-networkd.service')) {
|
|
43
42
|
// await exec (`rm ${file}`)
|
|
44
43
|
// }
|
|
45
44
|
}
|
|
46
|
-
else if (this.distro.familyId === 'debian' &&
|
|
47
|
-
//
|
|
45
|
+
else if (this.distro.familyId === 'debian' && Pacman.packageIsInstalled('netplan.io')) {
|
|
46
|
+
// netplan: to do
|
|
48
47
|
}
|
|
49
48
|
else if (this.distro.familyId === 'arch') {
|
|
50
|
-
// arch:
|
|
49
|
+
// arch: seem to work
|
|
51
50
|
}
|
|
52
51
|
/**
|
|
53
|
-
*
|
|
54
|
-
|
|
52
|
+
* resolv.conf
|
|
53
|
+
*/
|
|
55
54
|
if (this.network.addressType === 'dhcp') {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
55
|
+
if (await systemdCtl.isActive('resolvconf.service')) {
|
|
56
|
+
await exec(`rm ${this.installTarget}/etc/resolv.conf`);
|
|
57
|
+
await exec(`ln -s usr/lib/systemd/resolv.conf /etc/resolv.conf`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const file = this.installTarget + '/etc/resolv.conf';
|
|
61
|
+
let content = '# created by eggs\n\n';
|
|
62
|
+
content += 'domain ' + this.network.domain + '\n';
|
|
63
|
+
for (const element of this.network.dns) {
|
|
64
|
+
content += 'nameserver ' + element + '\n';
|
|
65
|
+
}
|
|
66
|
+
Utils.write(file, content);
|
|
66
67
|
}
|
|
67
|
-
Utils.write(file, content)
|
|
68
|
-
}
|
|
69
68
|
}
|
|
70
|
-
*/
|
|
71
69
|
}
|
|
72
|
-
exports.default = networkCfg;
|
|
@@ -0,0 +1,14 @@
|
|
|
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 Sequence from '../sequence.js';
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param this
|
|
13
|
+
*/
|
|
14
|
+
export default function packages(this: Sequence): Promise<void>;
|
|
@@ -1,34 +1,31 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ./src/krill/modules/packages.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
5
4
|
* author: Piero Proietti
|
|
6
5
|
* email: piero.proietti@gmail.com
|
|
7
6
|
* license: MIT
|
|
8
7
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
16
|
-
const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
|
|
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';
|
|
17
14
|
/**
|
|
18
15
|
*
|
|
19
16
|
* @param this
|
|
20
17
|
*/
|
|
21
|
-
async function packages() {
|
|
22
|
-
const echoYes =
|
|
18
|
+
export default async function packages() {
|
|
19
|
+
const echoYes = Utils.setEcho(true);
|
|
23
20
|
let modulePath = '/etc/penguins-eggs.d/krill/';
|
|
24
|
-
if (
|
|
21
|
+
if (Pacman.packageIsInstalled('calamares')) {
|
|
25
22
|
modulePath = '/etc/calamares/';
|
|
26
23
|
}
|
|
27
24
|
const config_file = `${this.installTarget}${modulePath}modules/packages.conf`;
|
|
28
25
|
let remove = [];
|
|
29
26
|
let install = [];
|
|
30
|
-
if (
|
|
31
|
-
const packages =
|
|
27
|
+
if (fs.existsSync(config_file)) {
|
|
28
|
+
const packages = yaml.load(fs.readFileSync(config_file, 'utf8'));
|
|
32
29
|
const operations = JSON.parse(JSON.stringify(packages.operations));
|
|
33
30
|
remove = operations[0].remove;
|
|
34
31
|
if (operations.length > 1) {
|
|
@@ -44,15 +41,15 @@ async function packages() {
|
|
|
44
41
|
for (const elem of remove) {
|
|
45
42
|
cmd += elem + ' ';
|
|
46
43
|
}
|
|
47
|
-
await
|
|
44
|
+
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
48
45
|
}
|
|
49
46
|
if (install.length > 0) {
|
|
50
47
|
let cmd = `chroot ${this.installTarget} apt-get install -y `;
|
|
51
48
|
for (const elem of install) {
|
|
52
49
|
cmd += elem + ' ';
|
|
53
50
|
}
|
|
54
|
-
await
|
|
55
|
-
await
|
|
51
|
+
await exec(`chroot ${this.installTarget} apt-get update ${this.toNull}`, this.echo);
|
|
52
|
+
await exec(`${cmd} ${this.toNull}`, this.echo);
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
55
|
else if (packages.backend === 'pacman') {
|
|
@@ -64,15 +61,14 @@ async function packages() {
|
|
|
64
61
|
for (const elem of remove) {
|
|
65
62
|
cmd += elem + ' ';
|
|
66
63
|
}
|
|
67
|
-
await
|
|
64
|
+
await exec(`${cmd} ${echoYes}`, this.echo);
|
|
68
65
|
}
|
|
69
66
|
if (install.length > 0) {
|
|
70
67
|
for (const elem of install) {
|
|
71
|
-
await
|
|
68
|
+
await exec(`chroot ${this.installTarget} pacman -S ${elem}`, echoYes);
|
|
72
69
|
}
|
|
73
70
|
}
|
|
74
71
|
}
|
|
75
72
|
}
|
|
76
73
|
}
|
|
77
74
|
}
|
|
78
|
-
exports.default = packages;
|
|
@@ -0,0 +1,20 @@
|
|
|
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,25 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ./src/krill/modules/partition.ts
|
|
3
|
+
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
5
4
|
* author: Piero Proietti
|
|
6
5
|
* email: piero.proietti@gmail.com
|
|
7
6
|
* license: MIT
|
|
8
7
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const utils_2 = tslib_1.__importDefault(require("../../classes/utils"));
|
|
15
|
-
const shelljs_1 = tslib_1.__importDefault(require("shelljs"));
|
|
16
|
-
const os_1 = tslib_1.__importDefault(require("os"));
|
|
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';
|
|
17
13
|
/**
|
|
18
14
|
*
|
|
19
15
|
* @param this
|
|
20
16
|
*/
|
|
21
|
-
async function partition() {
|
|
22
|
-
const echoYes =
|
|
17
|
+
export default async function partition() {
|
|
18
|
+
const echoYes = Utils.setEcho(true);
|
|
23
19
|
let retVal = false;
|
|
24
20
|
const installDevice = this.partitions.installationDevice;
|
|
25
21
|
/**
|
|
@@ -32,7 +28,7 @@ async function partition() {
|
|
|
32
28
|
p = 'p';
|
|
33
29
|
}
|
|
34
30
|
const installMode = this.partitions.installationMode;
|
|
35
|
-
let swapSize = Math.round(
|
|
31
|
+
let swapSize = Math.round(os.totalmem() / 1_073_741_824) * 1024;
|
|
36
32
|
switch (this.partitions.userSwapChoice) {
|
|
37
33
|
case 'none': {
|
|
38
34
|
swapSize = 256;
|
|
@@ -57,11 +53,11 @@ async function partition() {
|
|
|
57
53
|
* BIOS: working
|
|
58
54
|
* ===========================================================================================
|
|
59
55
|
*/
|
|
60
|
-
await
|
|
61
|
-
await
|
|
62
|
-
await
|
|
63
|
-
await
|
|
64
|
-
await
|
|
56
|
+
await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
|
|
57
|
+
await exec(`parted --script --align optimal ${installDevice} mkpart primary linux-swap 1MiB ${swapSize + 1}MiB`, this.echo); // dev/sda1 swap
|
|
58
|
+
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 ${swapSize + 1}MiB 100%`, this.echo); // dev/sda2 root
|
|
59
|
+
await exec(`parted ${installDevice} set 1 boot on`, this.echo);
|
|
60
|
+
await exec(`parted ${installDevice} set 1 esp on`, this.echo);
|
|
65
61
|
// SWAP
|
|
66
62
|
this.devices.swap.name = `${installDevice}${p}1`;
|
|
67
63
|
this.devices.swap.fsType = 'swap';
|
|
@@ -82,27 +78,27 @@ async function partition() {
|
|
|
82
78
|
* BIOS: full-encrypt:
|
|
83
79
|
* ===========================================================================================
|
|
84
80
|
*/
|
|
85
|
-
await
|
|
86
|
-
await
|
|
87
|
-
await
|
|
88
|
-
await
|
|
89
|
-
await
|
|
90
|
-
await
|
|
81
|
+
await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
|
|
82
|
+
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 1MiB 512MiB`, this.echo); // sda1
|
|
83
|
+
await exec(`parted --script --align optimal ${installDevice} mkpart primary linux-swap 512MiB ${swapSize + 512}MiB`, this.echo); // sda2
|
|
84
|
+
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext4 ${swapSize + 512}MiB 100%`, this.echo); // sda3
|
|
85
|
+
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
86
|
+
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
91
87
|
// BOOT 512M
|
|
92
88
|
this.devices.boot.name = `${installDevice}${p}1`; // 'boot'
|
|
93
89
|
this.devices.boot.fsType = 'ext4';
|
|
94
90
|
this.devices.boot.mountPoint = '/boot';
|
|
95
91
|
// SWAP 8G
|
|
96
92
|
// this.redraw(<Install message={`Formatting LUKS ${installDevice}2`} percent={0} />)
|
|
97
|
-
const crytoSwap = await
|
|
93
|
+
const crytoSwap = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}2`, echoYes);
|
|
98
94
|
if (crytoSwap.code !== 0) {
|
|
99
|
-
|
|
95
|
+
Utils.warning(`Error: ${crytoSwap.code} ${crytoSwap.data}`);
|
|
100
96
|
process.exit(1);
|
|
101
97
|
}
|
|
102
98
|
// this.redraw(<Install message={`Opening ${installDevice}${p}2 as swap_crypted`} percent={0} />)
|
|
103
|
-
const crytoSwapOpen = await
|
|
99
|
+
const crytoSwapOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}2 swap_crypted`, echoYes);
|
|
104
100
|
if (crytoSwapOpen.code !== 0) {
|
|
105
|
-
|
|
101
|
+
Utils.warning(`Error: ${crytoSwapOpen.code} ${crytoSwapOpen.data}`);
|
|
106
102
|
process.exit(1);
|
|
107
103
|
}
|
|
108
104
|
this.devices.swap.name = '/dev/mapper/swap_crypted';
|
|
@@ -111,15 +107,15 @@ async function partition() {
|
|
|
111
107
|
this.devices.swap.mountPoint = 'none';
|
|
112
108
|
// ROOT
|
|
113
109
|
// this.redraw(<Install message={`Formatting LUKS ${installDevice}${p}3`} percent={0} />)
|
|
114
|
-
const crytoRoot = await
|
|
110
|
+
const crytoRoot = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}3`, echoYes);
|
|
115
111
|
if (crytoRoot.code !== 0) {
|
|
116
|
-
|
|
112
|
+
Utils.warning(`Error: ${crytoRoot.code} ${crytoRoot.data}`);
|
|
117
113
|
process.exit(1);
|
|
118
114
|
}
|
|
119
115
|
// this.redraw(<Install message={`Opening ${installDevice}${p}3 as root_crypted`} percent={0} />)
|
|
120
|
-
const crytoRootOpen = await
|
|
116
|
+
const crytoRootOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}3 root_crypted`, echoYes);
|
|
121
117
|
if (crytoRootOpen.code !== 0) {
|
|
122
|
-
|
|
118
|
+
Utils.warning(`Error: ${crytoRootOpen.code} ${crytoRootOpen.data}`);
|
|
123
119
|
process.exit(1);
|
|
124
120
|
}
|
|
125
121
|
this.devices.root.name = '/dev/mapper/root_crypted';
|
|
@@ -137,12 +133,12 @@ async function partition() {
|
|
|
137
133
|
* UEFI: working
|
|
138
134
|
* ===========================================================================================
|
|
139
135
|
*/
|
|
140
|
-
await
|
|
141
|
-
await
|
|
142
|
-
await
|
|
143
|
-
await
|
|
144
|
-
await
|
|
145
|
-
await
|
|
136
|
+
await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
|
|
137
|
+
await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
|
|
138
|
+
await exec(`parted --script ${installDevice} mkpart swap linux-swap 256MiB ${swapSize + 256}Mib`, this.echo); // sda2 swap
|
|
139
|
+
await exec(`parted --script ${installDevice} mkpart root ext4 ${swapSize + 256}MiB 100%`, this.echo); // sda3 root
|
|
140
|
+
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
141
|
+
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
146
142
|
this.devices.efi.name = `${installDevice}${p}1`;
|
|
147
143
|
this.devices.efi.fsType = 'F 32 -I';
|
|
148
144
|
this.devices.efi.mountPoint = '/boot/efi';
|
|
@@ -164,13 +160,13 @@ async function partition() {
|
|
|
164
160
|
* UEFI, full-encrypt
|
|
165
161
|
* ===========================================================================================
|
|
166
162
|
*/
|
|
167
|
-
await
|
|
168
|
-
await
|
|
169
|
-
await
|
|
170
|
-
await
|
|
171
|
-
await
|
|
172
|
-
await
|
|
173
|
-
await
|
|
163
|
+
await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
|
|
164
|
+
await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
|
|
165
|
+
await exec(`parted --script ${installDevice} mkpart boot ext4 256MiB 768MiB`, this.echo); // sda2 boot
|
|
166
|
+
await exec(`parted --script ${installDevice} mkpart swap linux-swap 768MiB ${swapSize + 768}MiB`, this.echo); // sda3 swap
|
|
167
|
+
await exec(`parted --script ${installDevice} mkpart root ext4 ${swapSize + 768}MiB 100%`, this.echo); // sda4 root
|
|
168
|
+
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
169
|
+
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
174
170
|
// EFI 256M
|
|
175
171
|
this.devices.efi.name = `${installDevice}${p}1`; // 'efi'
|
|
176
172
|
this.devices.efi.fsType = 'F 32 -I';
|
|
@@ -192,15 +188,15 @@ async function partition() {
|
|
|
192
188
|
*/
|
|
193
189
|
// SWAP 8G
|
|
194
190
|
// redraw(<Install message={`Formatting LUKS ${installDevice}${p}3`} percent={0} />)
|
|
195
|
-
const crytoSwap = await
|
|
191
|
+
const crytoSwap = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}3`, echoYes);
|
|
196
192
|
if (crytoSwap.code !== 0) {
|
|
197
|
-
|
|
193
|
+
Utils.warning(`Error: ${crytoSwap.code} ${crytoSwap.data}`);
|
|
198
194
|
process.exit(1);
|
|
199
195
|
}
|
|
200
196
|
// this.redraw(<Install message={`Opening ${installDevice}${p}3 as swap_crypted`} percent={0} />)
|
|
201
|
-
const crytoSwapOpen = await
|
|
197
|
+
const crytoSwapOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}3 swap_crypted`, echoYes);
|
|
202
198
|
if (crytoSwapOpen.code !== 0) {
|
|
203
|
-
|
|
199
|
+
Utils.warning(`Error: ${crytoSwapOpen.code} ${crytoSwapOpen.data}`);
|
|
204
200
|
process.exit(1);
|
|
205
201
|
}
|
|
206
202
|
this.devices.swap.name = '/dev/mapper/swap_crypted';
|
|
@@ -209,15 +205,15 @@ async function partition() {
|
|
|
209
205
|
this.devices.swap.mountPoint = 'none';
|
|
210
206
|
// ROOT
|
|
211
207
|
// this.redraw(<Install message={`Formatting LUKS ${installDevice}${p}4`} percent={0} />)
|
|
212
|
-
const crytoRoot = await
|
|
208
|
+
const crytoRoot = await exec(`cryptsetup -y -v luksFormat --type luks2 ${installDevice}${p}4`, echoYes);
|
|
213
209
|
if (crytoRoot.code !== 0) {
|
|
214
|
-
|
|
210
|
+
Utils.warning(`Error: ${crytoRoot.code} ${crytoRoot.data}`);
|
|
215
211
|
process.exit(1);
|
|
216
212
|
}
|
|
217
213
|
// this.redraw(<Install message={`Opening ${installDevice}${p}4 as root_crypted`} percent={0} />)
|
|
218
|
-
const crytoRootOpen = await
|
|
214
|
+
const crytoRootOpen = await exec(`cryptsetup luksOpen --type luks2 ${installDevice}${p}4 root_crypted`, echoYes);
|
|
219
215
|
if (crytoRootOpen.code !== 0) {
|
|
220
|
-
|
|
216
|
+
Utils.warning(`Error: ${crytoRootOpen.code} ${crytoRootOpen.data}`);
|
|
221
217
|
process.exit(1);
|
|
222
218
|
}
|
|
223
219
|
this.devices.root.name = '/dev/mapper/root_crypted';
|
|
@@ -237,22 +233,22 @@ async function partition() {
|
|
|
237
233
|
* ===========================================================================================
|
|
238
234
|
*/
|
|
239
235
|
// Creo partizioni
|
|
240
|
-
await
|
|
241
|
-
await
|
|
242
|
-
await
|
|
243
|
-
await
|
|
244
|
-
await
|
|
236
|
+
await exec(`parted --script ${installDevice} mklabel msdos`, this.echo);
|
|
237
|
+
await exec(`parted --script ${installDevice} mkpart primary ext2 1 512`, this.echo); // sda1
|
|
238
|
+
await exec(`parted --script --align optimal ${installDevice} mkpart primary ext2 512 100%`, this.echo); // sda2
|
|
239
|
+
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
240
|
+
await exec(`parted --script ${installDevice} set 2 lvm on`, this.echo); // sda2
|
|
245
241
|
const partInfo = await lvmPartInfo(installDevice);
|
|
246
242
|
const lvmPartname = partInfo[0];
|
|
247
243
|
const lvmSwapSize = partInfo[1];
|
|
248
244
|
const lvmRootSize = partInfo[2];
|
|
249
|
-
await
|
|
250
|
-
await
|
|
251
|
-
await
|
|
252
|
-
await
|
|
253
|
-
await
|
|
254
|
-
await
|
|
255
|
-
await
|
|
245
|
+
await exec(`pvcreate /dev/${lvmPartname}`, this.echo);
|
|
246
|
+
await exec(`vgcreate pve /dev/${lvmPartname}`, this.echo);
|
|
247
|
+
await exec('vgchange -an', this.echo);
|
|
248
|
+
await exec(`lvcreate -L ${lvmSwapSize} -nswap pve`, this.echo);
|
|
249
|
+
await exec(`lvcreate -L ${lvmRootSize} -nroot pve`, this.echo);
|
|
250
|
+
await exec('lvcreate -l 100%FREE -ndata pve', this.echo);
|
|
251
|
+
await exec('vgchange -a y pve', this.echo);
|
|
256
252
|
this.devices.efi.name = 'none';
|
|
257
253
|
this.devices.boot.name = `${installDevice}${p}1`;
|
|
258
254
|
this.devices.root.fsType = 'ext2';
|
|
@@ -272,24 +268,24 @@ async function partition() {
|
|
|
272
268
|
* PROXMOX VE: lvm2 and UEFI
|
|
273
269
|
* ===========================================================================================
|
|
274
270
|
*/
|
|
275
|
-
await
|
|
276
|
-
await
|
|
277
|
-
await
|
|
278
|
-
await
|
|
279
|
-
await
|
|
280
|
-
await
|
|
281
|
-
await
|
|
271
|
+
await exec(`parted --script ${installDevice} mklabel gpt`, this.echo);
|
|
272
|
+
await exec(`parted --script ${installDevice} mkpart efi fat32 34s 256MiB`, this.echo); // sda1 EFI
|
|
273
|
+
await exec(`parted --script ${installDevice} mkpart boot ext2 256MiB 768MiB`, this.echo); // sda2 boot
|
|
274
|
+
await exec(`parted --script ${installDevice} mkpart lvm ext4 768MiB 100%`, this.echo); // sda3 lmv2
|
|
275
|
+
await exec(`parted --script ${installDevice} set 1 boot on`, this.echo); // sda1
|
|
276
|
+
await exec(`parted --script ${installDevice} set 1 esp on`, this.echo); // sda1
|
|
277
|
+
await exec(`parted --script ${installDevice} set 3 lvm on`, this.echo); // sda3
|
|
282
278
|
const partInfo = await lvmPartInfo(installDevice);
|
|
283
279
|
const lvmPartname = partInfo[0];
|
|
284
280
|
const lvmSwapSize = partInfo[1];
|
|
285
281
|
const lvmRootSize = partInfo[2];
|
|
286
|
-
await
|
|
287
|
-
await
|
|
288
|
-
await
|
|
289
|
-
await
|
|
290
|
-
await
|
|
291
|
-
await
|
|
292
|
-
await
|
|
282
|
+
await exec(`pvcreate /dev/${lvmPartname}`, this.echo);
|
|
283
|
+
await exec(`vgcreate pve /dev/${lvmPartname}`, this.echo);
|
|
284
|
+
await exec('vgchange -an', this.echo);
|
|
285
|
+
await exec(`lvcreate -L ${lvmSwapSize} -nswap pve`, this.echo);
|
|
286
|
+
await exec(`lvcreate -L ${lvmRootSize} -nroot pve`, this.echo);
|
|
287
|
+
await exec('lvcreate -l 100%FREE -ndata pve', this.echo);
|
|
288
|
+
await exec('vgchange -a y pve', this.echo);
|
|
293
289
|
this.devices.efi.name = `${installDevice}${p}1`;
|
|
294
290
|
this.devices.efi.fsType = 'F 32 -I';
|
|
295
291
|
this.devices.efi.mountPoint = '/boot/efi';
|
|
@@ -307,24 +303,22 @@ async function partition() {
|
|
|
307
303
|
}
|
|
308
304
|
return retVal;
|
|
309
305
|
}
|
|
310
|
-
exports.default = partition;
|
|
311
306
|
/**
|
|
312
307
|
*
|
|
313
308
|
* @param installDevice
|
|
314
309
|
* @returns
|
|
315
310
|
*/
|
|
316
|
-
async function lvmPartInfo(installDevice = '/dev/sda') {
|
|
311
|
+
export async function lvmPartInfo(installDevice = '/dev/sda') {
|
|
317
312
|
// Partizione LVM
|
|
318
|
-
const lvmPartname =
|
|
319
|
-
const lvmByteSize = Number(
|
|
313
|
+
const lvmPartname = shx.exec(`fdisk ${installDevice} -l | grep LVM | awk '{print $1}' | cut -d "/" -f3`).stdout.trim();
|
|
314
|
+
const lvmByteSize = Number(shx.exec(`cat /proc/partitions | grep ${lvmPartname}| awk '{print $3}' | grep "[0-9]"`).stdout.trim());
|
|
320
315
|
const lvmSize = lvmByteSize / 1024;
|
|
321
316
|
// La partizione di root viene posta ad 1/4 della partizione LVM, limite max 100 GB
|
|
322
317
|
const lvmSwapSize = 8192;
|
|
323
318
|
let lvmRootSize = lvmSize / 8;
|
|
324
|
-
if (lvmRootSize <
|
|
325
|
-
lvmRootSize =
|
|
319
|
+
if (lvmRootSize < 20_480) {
|
|
320
|
+
lvmRootSize = 20_480;
|
|
326
321
|
}
|
|
327
322
|
const lvmDataSize = lvmSize - lvmRootSize - lvmSwapSize;
|
|
328
323
|
return [lvmPartname, lvmSwapSize, lvmRootSize, lvmDataSize];
|
|
329
324
|
}
|
|
330
|
-
exports.lvmPartInfo = lvmPartInfo;
|
|
@@ -0,0 +1,13 @@
|
|
|
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>;
|