penguins-eggs 10.1.1 → 25.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.oclif.manifest.json +1 -1
- package/README.md +55 -60
- package/assets/calamares/install-system.sh +2 -1
- package/conf/derivatives.yaml +5 -1
- package/conf/distros/alpine/calamares/modules/packages.yml +1 -1
- package/conf/distros/alpine/calamares/settings.yml +16 -29
- package/conf/distros/buster/calamares/modules/fstab.yml +1 -1
- package/conf/distros/buster/calamares/modules/mount.yml +4 -12
- package/conf/distros/fedora/calamares/modules/bootloader.yml +46 -17
- package/conf/distros/fedora/calamares/modules/fstab.yml +36 -11
- package/conf/distros/fedora/calamares/modules/mount.yml +101 -39
- package/conf/distros/fedora/calamares/modules/partition.yml +173 -23
- package/conf/distros/fedora/calamares/modules/users.yml +7 -9
- package/conf/distros/openmamba/calamares/settings.yml +0 -2
- package/conf/distros/opensuse/calamares/modules/bootloader.yml +46 -17
- package/conf/distros/opensuse/calamares/modules/displaymanager.yml +9 -5
- package/conf/distros/opensuse/calamares/modules/finished.yml +1 -1
- package/conf/distros/opensuse/calamares/modules/fstab.yml +36 -11
- package/conf/distros/opensuse/calamares/modules/grubcfg.yml +51 -0
- package/conf/distros/opensuse/calamares/modules/mount.yml +104 -39
- package/conf/distros/opensuse/calamares/modules/packages.yml +3 -3
- package/conf/distros/opensuse/calamares/modules/partition.yml +30 -237
- package/conf/distros/opensuse/calamares/modules/removeuser.yml +1 -14
- package/conf/distros/opensuse/calamares/modules/unpackfs.yml +0 -1
- package/conf/distros/opensuse/calamares/modules/users.yml +296 -16
- package/conf/distros/opensuse/calamares/modules/welcome.yml +91 -16
- package/conf/distros/opensuse/calamares/settings.yml +34 -120
- package/conf/distros/opensuse/calamares/zstd2lzo.sh +2 -0
- package/conf/distros/rolling/calamares/modules/shellprocess_sync.yml +5 -0
- package/conf/distros/rolling/calamares/settings.yml +4 -5
- package/dist/classes/bleach.d.ts +5 -0
- package/dist/classes/bleach.js +13 -0
- package/dist/classes/cli-autologin.js +14 -9
- package/dist/classes/daddy.js +9 -1
- package/dist/classes/distro.js +0 -9
- package/dist/classes/incubation/incubator.d/fedora.d.ts +32 -0
- package/dist/classes/incubation/incubator.d/fedora.js +79 -0
- package/dist/classes/incubation/incubator.d/opensuse.js +4 -6
- package/dist/classes/incubation/incubator.d/rolling.js +1 -3
- package/dist/classes/incubation/incubator.js +6 -11
- package/dist/classes/ovary.d/initrd.js +40 -11
- package/dist/classes/ovary.d/make-dot-disk.js +21 -11
- package/dist/classes/ovary.d/make-efi.js +13 -11
- package/dist/classes/ovary.d/merged.d.ts +1 -1
- package/dist/classes/ovary.d/merged.js +3 -2
- package/dist/classes/ovary.d/produce.js +7 -6
- package/dist/classes/ovary.d/user-create-live.js +15 -11
- package/dist/classes/ovary.d.ts +1 -1
- package/dist/classes/ovary.js +1 -1
- package/dist/classes/pacman.d/alpine.js +12 -7
- package/dist/classes/pacman.d/opensuse.js +4 -3
- package/dist/classes/pacman.js +3 -12
- package/dist/classes/pxe.d.ts +21 -18
- package/dist/classes/pxe.js +192 -259
- package/dist/classes/tailor.js +69 -33
- package/dist/classes/utils.d/filesystem.js +2 -0
- package/dist/classes/utils.d/kernel.js +12 -2
- package/dist/classes/utils.d/snapshot.js +1 -1
- package/dist/classes/utils.d/system.js +2 -2
- package/dist/commands/cuckoo.js +4 -6
- package/dist/commands/export/pkg.js +28 -12
- package/dist/commands/wardrobe/wear.js +1 -1
- package/dist/dhcpd-proxy/classes/packet.d.ts +36 -0
- package/dist/dhcpd-proxy/classes/packet.js +124 -0
- package/dist/dhcpd-proxy/index.d.ts +4 -0
- package/dist/dhcpd-proxy/index.js +4 -0
- package/dist/dhcpd-proxy/interfaces/i-pxe.d.ts +45 -0
- package/dist/dhcpd-proxy/interfaces/i-pxe.js +1 -0
- package/dist/dhcpd-proxy/lib/packet/converters.d.ts +11 -0
- package/dist/dhcpd-proxy/lib/packet/converters.js +395 -0
- package/dist/dhcpd-proxy/lib/packet/message-types.d.ts +10 -0
- package/dist/dhcpd-proxy/lib/packet/message-types.js +12 -0
- package/dist/dhcpd-proxy/lib/packet/options.d.ts +8 -0
- package/dist/dhcpd-proxy/lib/packet/options.js +264 -0
- package/dist/dhcpd-proxy/lib/sprintf.d.ts +6 -0
- package/dist/dhcpd-proxy/lib/sprintf.js +130 -0
- package/dist/dhcpd-proxy/lib/utils.d.ts +126 -0
- package/dist/dhcpd-proxy/lib/utils.js +255 -0
- package/dist/dhcpd-proxy/simple-proxy.d.ts +11 -0
- package/dist/dhcpd-proxy/simple-proxy.js +118 -0
- package/dist/interfaces/i-pxe.d.ts +16 -16
- package/dist/krill/classes/sequence.d/add_user.d.ts +3 -3
- package/dist/krill/classes/sequence.d/add_user.js +34 -29
- package/dist/krill/classes/sequence.d/bootloader_config.js +3 -26
- package/dist/krill/classes/sequence.d/fstab.js +10 -22
- package/dist/krill/classes/sequence.d/grubcfg.js +5 -3
- package/dist/krill/classes/sequence.d/mkfs.d.ts +1 -1
- package/dist/krill/classes/sequence.d/mkfs.js +10 -11
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +3 -4
- package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +31 -16
- package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +0 -1
- package/dist/krill/lib/select_filesystem_type.js +2 -1
- package/dist/lib/utils.d.ts +2 -25
- package/dist/lib/utils.js +4 -27
- package/dist/{penguins-eggs_10.1.1-0_amd64.deb → penguins-eggs_25.7.7-1_amd64.deb} +0 -0
- package/dist/penguins-eggs_25.7.7-1_amd64.deb.sha256 +1 -0
- package/dracut/README.md +14 -0
- package/dracut/dracut.conf +3 -3
- package/dracut/dracut.conf.d/10-persistent_policy.conf +1 -0
- package/dracut/dracut.conf.d/{01-live.conf → 50-live.conf} +3 -2
- package/ipxe/grub/acpi.mod +0 -0
- package/ipxe/grub/adler32.mod +0 -0
- package/ipxe/grub/affs.mod +0 -0
- package/ipxe/grub/afs.mod +0 -0
- package/ipxe/grub/afsplitter.mod +0 -0
- package/ipxe/grub/ahci.mod +0 -0
- package/ipxe/grub/all_video.mod +0 -0
- package/ipxe/grub/aout.mod +0 -0
- package/ipxe/grub/appleldr.mod +0 -0
- package/ipxe/grub/archelp.mod +0 -0
- package/ipxe/grub/at_keyboard.mod +0 -0
- package/ipxe/grub/ata.mod +0 -0
- package/ipxe/grub/backtrace.mod +0 -0
- package/ipxe/grub/bfs.mod +0 -0
- package/ipxe/grub/bitmap.mod +0 -0
- package/ipxe/grub/bitmap_scale.mod +0 -0
- package/ipxe/grub/blocklist.mod +0 -0
- package/ipxe/grub/boot.mod +0 -0
- package/ipxe/grub/bsd.mod +0 -0
- package/ipxe/grub/bswap_test.mod +0 -0
- package/ipxe/grub/btrfs.mod +0 -0
- package/ipxe/grub/bufio.mod +0 -0
- package/ipxe/grub/cat.mod +0 -0
- package/ipxe/grub/cbfs.mod +0 -0
- package/ipxe/grub/cbls.mod +0 -0
- package/ipxe/grub/cbmemc.mod +0 -0
- package/ipxe/grub/cbtable.mod +0 -0
- package/ipxe/grub/cbtime.mod +0 -0
- package/ipxe/grub/chain.mod +0 -0
- package/ipxe/grub/cmdline_cat_test.mod +0 -0
- package/ipxe/grub/cmp.mod +0 -0
- package/ipxe/grub/cmp_test.mod +0 -0
- package/ipxe/grub/command.lst +194 -0
- package/ipxe/grub/config.h +69 -0
- package/ipxe/grub/configfile.mod +0 -0
- package/ipxe/grub/cpio.mod +0 -0
- package/ipxe/grub/cpio_be.mod +0 -0
- package/ipxe/grub/cpuid.mod +0 -0
- package/ipxe/grub/crc64.mod +0 -0
- package/ipxe/grub/crypto.lst +45 -0
- package/ipxe/grub/crypto.mod +0 -0
- package/ipxe/grub/cryptodisk.mod +0 -0
- package/ipxe/grub/cs5536.mod +0 -0
- package/ipxe/grub/ctz_test.mod +0 -0
- package/ipxe/grub/date.mod +0 -0
- package/ipxe/grub/datehook.mod +0 -0
- package/ipxe/grub/datetime.mod +0 -0
- package/ipxe/grub/disk.mod +0 -0
- package/ipxe/grub/diskfilter.mod +0 -0
- package/ipxe/grub/div.mod +0 -0
- package/ipxe/grub/div_test.mod +0 -0
- package/ipxe/grub/dm_nv.mod +0 -0
- package/ipxe/grub/echo.mod +0 -0
- package/ipxe/grub/efi_gop.mod +0 -0
- package/ipxe/grub/efi_uga.mod +0 -0
- package/ipxe/grub/efifwsetup.mod +0 -0
- package/ipxe/grub/efinet.mod +0 -0
- package/ipxe/grub/ehci.mod +0 -0
- package/ipxe/grub/elf.mod +0 -0
- package/ipxe/grub/eval.mod +0 -0
- package/ipxe/grub/exfat.mod +0 -0
- package/ipxe/grub/exfctest.mod +0 -0
- package/ipxe/grub/ext2.mod +0 -0
- package/ipxe/grub/extcmd.mod +0 -0
- package/ipxe/grub/f2fs.mod +0 -0
- package/ipxe/grub/fat.mod +0 -0
- package/ipxe/grub/fdt.lst +0 -0
- package/ipxe/grub/file.mod +0 -0
- package/ipxe/grub/fixvideo.mod +0 -0
- package/ipxe/grub/font.mod +0 -0
- package/ipxe/grub/fs.lst +37 -0
- package/ipxe/grub/fshelp.mod +0 -0
- package/ipxe/grub/functional_test.mod +0 -0
- package/ipxe/grub/gcry_arcfour.mod +0 -0
- package/ipxe/grub/gcry_blowfish.mod +0 -0
- package/ipxe/grub/gcry_camellia.mod +0 -0
- package/ipxe/grub/gcry_cast5.mod +0 -0
- package/ipxe/grub/gcry_crc.mod +0 -0
- package/ipxe/grub/gcry_des.mod +0 -0
- package/ipxe/grub/gcry_dsa.mod +0 -0
- package/ipxe/grub/gcry_idea.mod +0 -0
- package/ipxe/grub/gcry_md4.mod +0 -0
- package/ipxe/grub/gcry_md5.mod +0 -0
- package/ipxe/grub/gcry_rfc2268.mod +0 -0
- package/ipxe/grub/gcry_rijndael.mod +0 -0
- package/ipxe/grub/gcry_rmd160.mod +0 -0
- package/ipxe/grub/gcry_rsa.mod +0 -0
- package/ipxe/grub/gcry_seed.mod +0 -0
- package/ipxe/grub/gcry_serpent.mod +0 -0
- package/ipxe/grub/gcry_sha1.mod +0 -0
- package/ipxe/grub/gcry_sha256.mod +0 -0
- package/ipxe/grub/gcry_sha512.mod +0 -0
- package/ipxe/grub/gcry_tiger.mod +0 -0
- package/ipxe/grub/gcry_twofish.mod +0 -0
- package/ipxe/grub/gcry_whirlpool.mod +0 -0
- package/ipxe/grub/geli.mod +0 -0
- package/ipxe/grub/gettext.mod +0 -0
- package/ipxe/grub/gfxmenu.mod +0 -0
- package/ipxe/grub/gfxterm.mod +0 -0
- package/ipxe/grub/gfxterm_background.mod +0 -0
- package/ipxe/grub/gfxterm_menu.mod +0 -0
- package/ipxe/grub/gptsync.mod +0 -0
- package/ipxe/grub/gzio.mod +0 -0
- package/ipxe/grub/halt.mod +0 -0
- package/ipxe/grub/hashsum.mod +0 -0
- package/ipxe/grub/hdparm.mod +0 -0
- package/ipxe/grub/hello.mod +0 -0
- package/ipxe/grub/help.mod +0 -0
- package/ipxe/grub/hexdump.mod +0 -0
- package/ipxe/grub/hfs.mod +0 -0
- package/ipxe/grub/hfsplus.mod +0 -0
- package/ipxe/grub/hfspluscomp.mod +0 -0
- package/ipxe/grub/http.mod +0 -0
- package/ipxe/grub/iorw.mod +0 -0
- package/ipxe/grub/iso9660.mod +0 -0
- package/ipxe/grub/jfs.mod +0 -0
- package/ipxe/grub/jpeg.mod +0 -0
- package/ipxe/grub/json.mod +0 -0
- package/ipxe/grub/kernel.img +0 -0
- package/ipxe/grub/keylayouts.mod +0 -0
- package/ipxe/grub/keystatus.mod +0 -0
- package/ipxe/grub/ldm.mod +0 -0
- package/ipxe/grub/legacy_password_test.mod +0 -0
- package/ipxe/grub/legacycfg.mod +0 -0
- package/ipxe/grub/linux.mod +0 -0
- package/ipxe/grub/linux16.mod +0 -0
- package/ipxe/grub/linuxefi.mod +0 -0
- package/ipxe/grub/loadbios.mod +0 -0
- package/ipxe/grub/loadenv.mod +0 -0
- package/ipxe/grub/loopback.mod +0 -0
- package/ipxe/grub/ls.mod +0 -0
- package/ipxe/grub/lsacpi.mod +0 -0
- package/ipxe/grub/lsefi.mod +0 -0
- package/ipxe/grub/lsefimmap.mod +0 -0
- package/ipxe/grub/lsefisystab.mod +0 -0
- package/ipxe/grub/lsmmap.mod +0 -0
- package/ipxe/grub/lspci.mod +0 -0
- package/ipxe/grub/lssal.mod +0 -0
- package/ipxe/grub/luks.mod +0 -0
- package/ipxe/grub/luks2.mod +0 -0
- package/ipxe/grub/lvm.mod +0 -0
- package/ipxe/grub/lzopio.mod +0 -0
- package/ipxe/grub/macbless.mod +0 -0
- package/ipxe/grub/macho.mod +0 -0
- package/ipxe/grub/mdraid09.mod +0 -0
- package/ipxe/grub/mdraid09_be.mod +0 -0
- package/ipxe/grub/mdraid1x.mod +0 -0
- package/ipxe/grub/memdisk.mod +0 -0
- package/ipxe/grub/memrw.mod +0 -0
- package/ipxe/grub/minicmd.mod +0 -0
- package/ipxe/grub/minix.mod +0 -0
- package/ipxe/grub/minix2.mod +0 -0
- package/ipxe/grub/minix2_be.mod +0 -0
- package/ipxe/grub/minix3.mod +0 -0
- package/ipxe/grub/minix3_be.mod +0 -0
- package/ipxe/grub/minix_be.mod +0 -0
- package/ipxe/grub/mmap.mod +0 -0
- package/ipxe/grub/moddep.lst +267 -0
- package/ipxe/grub/modinfo.sh +40 -0
- package/ipxe/grub/monolithic/gcdx64.efi +0 -0
- package/ipxe/grub/monolithic/grubnetx64-installer.efi +0 -0
- package/ipxe/grub/monolithic/grubnetx64.efi +0 -0
- package/ipxe/grub/monolithic/grubx64.efi +0 -0
- package/ipxe/grub/morse.mod +0 -0
- package/ipxe/grub/mpi.mod +0 -0
- package/ipxe/grub/msdospart.mod +0 -0
- package/ipxe/grub/mul_test.mod +0 -0
- package/ipxe/grub/multiboot.mod +0 -0
- package/ipxe/grub/multiboot2.mod +0 -0
- package/ipxe/grub/nativedisk.mod +0 -0
- package/ipxe/grub/net.mod +0 -0
- package/ipxe/grub/newc.mod +0 -0
- package/ipxe/grub/nilfs2.mod +0 -0
- package/ipxe/grub/normal.mod +0 -0
- package/ipxe/grub/ntfs.mod +0 -0
- package/ipxe/grub/ntfscomp.mod +0 -0
- package/ipxe/grub/odc.mod +0 -0
- package/ipxe/grub/offsetio.mod +0 -0
- package/ipxe/grub/ohci.mod +0 -0
- package/ipxe/grub/part_acorn.mod +0 -0
- package/ipxe/grub/part_amiga.mod +0 -0
- package/ipxe/grub/part_apple.mod +0 -0
- package/ipxe/grub/part_bsd.mod +0 -0
- package/ipxe/grub/part_dfly.mod +0 -0
- package/ipxe/grub/part_dvh.mod +0 -0
- package/ipxe/grub/part_gpt.mod +0 -0
- package/ipxe/grub/part_msdos.mod +0 -0
- package/ipxe/grub/part_plan.mod +0 -0
- package/ipxe/grub/part_sun.mod +0 -0
- package/ipxe/grub/part_sunpc.mod +0 -0
- package/ipxe/grub/partmap.lst +11 -0
- package/ipxe/grub/parttool.lst +1 -0
- package/ipxe/grub/parttool.mod +0 -0
- package/ipxe/grub/password.mod +0 -0
- package/ipxe/grub/password_pbkdf2.mod +0 -0
- package/ipxe/grub/pata.mod +0 -0
- package/ipxe/grub/pbkdf2.mod +0 -0
- package/ipxe/grub/pbkdf2_test.mod +0 -0
- package/ipxe/grub/pcidump.mod +0 -0
- package/ipxe/grub/pgp.mod +0 -0
- package/ipxe/grub/play.mod +0 -0
- package/ipxe/grub/png.mod +0 -0
- package/ipxe/grub/priority_queue.mod +0 -0
- package/ipxe/grub/probe.mod +0 -0
- package/ipxe/grub/procfs.mod +0 -0
- package/ipxe/grub/progress.mod +0 -0
- package/ipxe/grub/raid5rec.mod +0 -0
- package/ipxe/grub/raid6rec.mod +0 -0
- package/ipxe/grub/random.mod +0 -0
- package/ipxe/grub/rdmsr.mod +0 -0
- package/ipxe/grub/read.mod +0 -0
- package/ipxe/grub/reboot.mod +0 -0
- package/ipxe/grub/regexp.mod +0 -0
- package/ipxe/grub/reiserfs.mod +0 -0
- package/ipxe/grub/relocator.mod +0 -0
- package/ipxe/grub/romfs.mod +0 -0
- package/ipxe/grub/scsi.mod +0 -0
- package/ipxe/grub/search.mod +0 -0
- package/ipxe/grub/search_fs_file.mod +0 -0
- package/ipxe/grub/search_fs_uuid.mod +0 -0
- package/ipxe/grub/search_label.mod +0 -0
- package/ipxe/grub/serial.mod +0 -0
- package/ipxe/grub/setjmp.mod +0 -0
- package/ipxe/grub/setjmp_test.mod +0 -0
- package/ipxe/grub/setpci.mod +0 -0
- package/ipxe/grub/sfs.mod +0 -0
- package/ipxe/grub/shift_test.mod +0 -0
- package/ipxe/grub/signature_test.mod +0 -0
- package/ipxe/grub/sleep.mod +0 -0
- package/ipxe/grub/sleep_test.mod +0 -0
- package/ipxe/grub/smbios.mod +0 -0
- package/ipxe/grub/spkmodem.mod +0 -0
- package/ipxe/grub/squash4.mod +0 -0
- package/ipxe/grub/strtoull_test.mod +0 -0
- package/ipxe/grub/syslinuxcfg.mod +0 -0
- package/ipxe/grub/tar.mod +0 -0
- package/ipxe/grub/terminal.lst +9 -0
- package/ipxe/grub/terminal.mod +0 -0
- package/ipxe/grub/terminfo.mod +0 -0
- package/ipxe/grub/test.mod +0 -0
- package/ipxe/grub/test_blockarg.mod +0 -0
- package/ipxe/grub/testload.mod +0 -0
- package/ipxe/grub/testspeed.mod +0 -0
- package/ipxe/grub/tftp.mod +0 -0
- package/ipxe/grub/tga.mod +0 -0
- package/ipxe/grub/time.mod +0 -0
- package/ipxe/grub/tpm.mod +0 -0
- package/ipxe/grub/tr.mod +0 -0
- package/ipxe/grub/trig.mod +0 -0
- package/ipxe/grub/true.mod +0 -0
- package/ipxe/grub/udf.mod +0 -0
- package/ipxe/grub/ufs1.mod +0 -0
- package/ipxe/grub/ufs1_be.mod +0 -0
- package/ipxe/grub/ufs2.mod +0 -0
- package/ipxe/grub/uhci.mod +0 -0
- package/ipxe/grub/usb.mod +0 -0
- package/ipxe/grub/usb_keyboard.mod +0 -0
- package/ipxe/grub/usbms.mod +0 -0
- package/ipxe/grub/usbserial_common.mod +0 -0
- package/ipxe/grub/usbserial_ftdi.mod +0 -0
- package/ipxe/grub/usbserial_pl2303.mod +0 -0
- package/ipxe/grub/usbserial_usbdebug.mod +0 -0
- package/ipxe/grub/usbtest.mod +0 -0
- package/ipxe/grub/video.lst +4 -0
- package/ipxe/grub/video.mod +0 -0
- package/ipxe/grub/video_bochs.mod +0 -0
- package/ipxe/grub/video_cirrus.mod +0 -0
- package/ipxe/grub/video_colors.mod +0 -0
- package/ipxe/grub/video_fb.mod +0 -0
- package/ipxe/grub/videoinfo.mod +0 -0
- package/ipxe/grub/videotest.mod +0 -0
- package/ipxe/grub/videotest_checksum.mod +0 -0
- package/ipxe/grub/wrmsr.mod +0 -0
- package/ipxe/grub/xfs.mod +0 -0
- package/ipxe/grub/xnu.mod +0 -0
- package/ipxe/grub/xnu_uuid.mod +0 -0
- package/ipxe/grub/xnu_uuid_test.mod +0 -0
- package/ipxe/grub/xzio.mod +0 -0
- package/ipxe/grub/zfs.mod +0 -0
- package/ipxe/grub/zfscrypt.mod +0 -0
- package/ipxe/grub/zfsinfo.mod +0 -0
- package/ipxe/grub/zstd.mod +0 -0
- package/ipxe/grubnetx64.efi.signed +0 -0
- package/ipxe/ipxe.pxe +0 -0
- package/ipxe/undionly.kpxe +0 -0
- package/mkinitcpio/arch/live.conf +3 -2
- package/mkinitcpio/manjaro/live.conf +1 -1
- package/mkinitfs/README.md +10 -49
- package/mkinitfs/live.conf +2 -0
- package/package.json +27 -24
- package/pods/ci/minimal/opensuse-container2host.sh +1 -1
- package/scripts/99clean +42 -0
- package/conf/distros/aldos/calamares/modules/bootloader.yml +0 -85
- package/conf/distros/aldos/calamares/modules/displaymanager.yml +0 -22
- package/conf/distros/aldos/calamares/modules/finished.yml +0 -5
- package/conf/distros/aldos/calamares/modules/fstab.yml +0 -12
- package/conf/distros/aldos/calamares/modules/locale.yml +0 -97
- package/conf/distros/aldos/calamares/modules/luksopenswaphookcfg.yml +0 -5
- package/conf/distros/aldos/calamares/modules/machineid.yml +0 -17
- package/conf/distros/aldos/calamares/modules/mount.yml +0 -56
- package/conf/distros/aldos/calamares/modules/packages.yml +0 -6
- package/conf/distros/aldos/calamares/modules/partition.yml +0 -242
- package/conf/distros/aldos/calamares/modules/removeuser.yml +0 -15
- package/conf/distros/aldos/calamares/modules/unpackfs.yml +0 -6
- package/conf/distros/aldos/calamares/modules/users.yml +0 -19
- package/conf/distros/aldos/calamares/modules/welcome.yml +0 -19
- package/conf/distros/aldos/calamares/settings.yml +0 -124
- package/conf/distros/fedora/calamares/modules/bootloader.conf +0 -85
- package/conf/distros/opensuse/calamares/modules/bootloader.conf +0 -86
- package/conf/distros/opensuse/calamares/modules/locale.yml +0 -98
- package/conf/distros/opensuse/calamares/modules/luksopenswaphookcfg.yml +0 -5
- package/conf/distros/opensuse/calamares/modules/machineid.yml +0 -17
- package/conf/distros/rolling/calamares/modules/shellprocess_removelink.yml +0 -8
- package/dist/index_old.d.ts +0 -8
- package/dist/index_old.js +0 -8
- package/dist/penguins-eggs_10.1.1-0_amd64.deb.sha256 +0 -1
- package/dracut/sidecar.sh +0 -19
- package/ipxe/ipxe.efi +0 -0
- package/mkinitfs/initramfs-init.in +0 -1051
- package/mkinitfs/sidecar.sh +0 -52
- /package/dist/classes/ovary.d/{xorriso-commend.d.ts → xorriso-command.d.ts} +0 -0
- /package/dist/classes/ovary.d/{xorriso-commend.js → xorriso-command.js} +0 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* util.ts
|
|
3
|
+
*
|
|
4
|
+
* used in dhcpd
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
import sprintf from "./sprintf.js";
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param _buffer
|
|
11
|
+
* @param byteArray
|
|
12
|
+
* @param offset
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
export const writeBytes = (_buffer, byteArray, offset) => {
|
|
16
|
+
let _bytesWritten = 0;
|
|
17
|
+
let i = 0;
|
|
18
|
+
while (i < byteArray.length) {
|
|
19
|
+
_buffer[offset++] = byteArray[i];
|
|
20
|
+
i++;
|
|
21
|
+
}
|
|
22
|
+
if (offset > _bytesWritten) {
|
|
23
|
+
_bytesWritten = offset;
|
|
24
|
+
}
|
|
25
|
+
return this;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param _buffer
|
|
30
|
+
* @param integer
|
|
31
|
+
* @param offset
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
export function writeInt32(_buffer, integer, offset) {
|
|
35
|
+
_buffer[offset++] = integer >>> 24;
|
|
36
|
+
_buffer[offset++] = integer >>> 16;
|
|
37
|
+
_buffer[offset++] = integer >>> 8;
|
|
38
|
+
_buffer[offset++] = integer;
|
|
39
|
+
return offset;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @param _buffer
|
|
44
|
+
* @param integer
|
|
45
|
+
* @param offset
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
export function writeInt16(_buffer, integer, offset) {
|
|
49
|
+
_buffer[offset++] = integer >>> 8;
|
|
50
|
+
_buffer[offset++] = integer;
|
|
51
|
+
return offset;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param _buffer
|
|
56
|
+
* @param integer
|
|
57
|
+
* @param offset
|
|
58
|
+
* @returns
|
|
59
|
+
*/
|
|
60
|
+
export function writeInt8(_buffer, integer, offset) {
|
|
61
|
+
_buffer[offset++] = integer;
|
|
62
|
+
return offset;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @param _buffer
|
|
67
|
+
* @param length
|
|
68
|
+
* @param copy
|
|
69
|
+
* @param offset
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
export function readBytes(_buffer, length, copy, offset) {
|
|
73
|
+
let bufCopy;
|
|
74
|
+
if (copy) {
|
|
75
|
+
bufCopy = new Buffer(length);
|
|
76
|
+
_buffer.copy(bufCopy, 0, offset, (offset += length));
|
|
77
|
+
return bufCopy;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return _buffer.slice(offset, (offset += length));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
*
|
|
85
|
+
* @param _buffer
|
|
86
|
+
* @param offset
|
|
87
|
+
* @returns
|
|
88
|
+
*/
|
|
89
|
+
export function readInt32(_buffer, offset) {
|
|
90
|
+
return ((_buffer[offset++] << 24) |
|
|
91
|
+
(_buffer[offset++] << 16) |
|
|
92
|
+
(_buffer[offset++] << 8) |
|
|
93
|
+
_buffer[offset++]);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* @param _buffer
|
|
98
|
+
* @param offset
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
export function readInt16(_buffer, offset) {
|
|
102
|
+
return (_buffer[offset++] << 8) | _buffer[offset++];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
*
|
|
106
|
+
* @param _buffer
|
|
107
|
+
* @param offset
|
|
108
|
+
* @returns
|
|
109
|
+
*/
|
|
110
|
+
export function readInt8(_buffer, offset) {
|
|
111
|
+
return _buffer[offset++];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
*
|
|
115
|
+
* @param buf
|
|
116
|
+
* @returns
|
|
117
|
+
*/
|
|
118
|
+
export function readString(buf) {
|
|
119
|
+
let j, s;
|
|
120
|
+
s = "";
|
|
121
|
+
j = 0;
|
|
122
|
+
while (j < buf.length) {
|
|
123
|
+
s += String.fromCharCode(buf[j]);
|
|
124
|
+
j++;
|
|
125
|
+
}
|
|
126
|
+
return s;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
*
|
|
130
|
+
* @param buf
|
|
131
|
+
* @returns
|
|
132
|
+
*/
|
|
133
|
+
export function readHex(buf) {
|
|
134
|
+
let j, s;
|
|
135
|
+
s = "";
|
|
136
|
+
j = 0;
|
|
137
|
+
while (j < buf.length) {
|
|
138
|
+
// check was b not buf
|
|
139
|
+
s += sprintf("%02x", buf[j]);
|
|
140
|
+
j++;
|
|
141
|
+
}
|
|
142
|
+
return s;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
*
|
|
146
|
+
* @param buf
|
|
147
|
+
* @returns
|
|
148
|
+
*/
|
|
149
|
+
export function readHexAddress(buf) {
|
|
150
|
+
let j, s;
|
|
151
|
+
s = [];
|
|
152
|
+
j = 0;
|
|
153
|
+
while (j < buf.length) {
|
|
154
|
+
s.push(sprintf("%02d", buf[j]));
|
|
155
|
+
j++;
|
|
156
|
+
}
|
|
157
|
+
return s.join(":");
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
*
|
|
161
|
+
* @param buffer
|
|
162
|
+
* @param offset
|
|
163
|
+
* @returns
|
|
164
|
+
*/
|
|
165
|
+
export function readIp(buffer, offset) {
|
|
166
|
+
let stop;
|
|
167
|
+
if (offset === null) {
|
|
168
|
+
offset = 0;
|
|
169
|
+
}
|
|
170
|
+
if (offset > buffer.length) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
if (0 === buffer.readUInt8(offset)) {
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
stop = offset + 4;
|
|
178
|
+
return (function () {
|
|
179
|
+
const _results = [];
|
|
180
|
+
while (offset < stop) {
|
|
181
|
+
_results.push(buffer.readUInt8(offset++));
|
|
182
|
+
}
|
|
183
|
+
return _results;
|
|
184
|
+
})().join(".");
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
*
|
|
189
|
+
* @param buffer
|
|
190
|
+
* @returns
|
|
191
|
+
*/
|
|
192
|
+
export function readMacAddress(buffer) {
|
|
193
|
+
let byte;
|
|
194
|
+
return (function () {
|
|
195
|
+
let _i, _len;
|
|
196
|
+
const _results = [];
|
|
197
|
+
for (_i = 0, _len = buffer.length; _i < _len; _i++) {
|
|
198
|
+
byte = buffer[_i];
|
|
199
|
+
_results.push((byte + 0x100).toString(16).substr(-2));
|
|
200
|
+
}
|
|
201
|
+
return _results;
|
|
202
|
+
})().join(":");
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
*
|
|
206
|
+
* @param buf
|
|
207
|
+
* @param num
|
|
208
|
+
* @param offsetHours
|
|
209
|
+
* @param offset
|
|
210
|
+
* @returns
|
|
211
|
+
*/
|
|
212
|
+
export function writeTimeOffset(buf, num, offsetHours, offset) {
|
|
213
|
+
buf[offset++] = 0;
|
|
214
|
+
return offset;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
*
|
|
218
|
+
* @param buf
|
|
219
|
+
* @param num
|
|
220
|
+
* @param ip
|
|
221
|
+
* @param offset
|
|
222
|
+
* @returns
|
|
223
|
+
*/
|
|
224
|
+
export function writeIp(buf, num, ip, offset) {
|
|
225
|
+
buf[offset++] = num;
|
|
226
|
+
buf[offset++] = 4;
|
|
227
|
+
if ((typeof ip !== "string" && !(ip instanceof String)) ||
|
|
228
|
+
ip.indexOf(".") === -1) {
|
|
229
|
+
ip = "0.0.0.0";
|
|
230
|
+
}
|
|
231
|
+
ip.split(".").forEach(function (item) {
|
|
232
|
+
buf[offset++] = item;
|
|
233
|
+
});
|
|
234
|
+
return offset;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
*
|
|
238
|
+
* @param buf
|
|
239
|
+
* @param num
|
|
240
|
+
* @param hostname
|
|
241
|
+
* @param offset
|
|
242
|
+
* @returns
|
|
243
|
+
*/
|
|
244
|
+
export function writeString(buf, num, hostname, offset) {
|
|
245
|
+
let charArr;
|
|
246
|
+
charArr = hostname.split("");
|
|
247
|
+
buf[offset++] = num;
|
|
248
|
+
buf[offset++] = charArr.length;
|
|
249
|
+
charArr.forEach(function (chr) {
|
|
250
|
+
// charCodeAt(index: number): number
|
|
251
|
+
//buf[offset++] = chr.charCodeAt() original
|
|
252
|
+
buf[offset++] = chr.charCodeAt(0);
|
|
253
|
+
});
|
|
254
|
+
return offset;
|
|
255
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* simple-proxy.ts
|
|
3
|
+
* Un proxy DHCP minimale che agisce come un mini-server DHCP completo
|
|
4
|
+
* solo per i client PXE, per aggirare le protezioni di rete.
|
|
5
|
+
*/
|
|
6
|
+
import type { IDhcpOptions } from '../dhcpd-proxy//interfaces/i-pxe.js';
|
|
7
|
+
/**
|
|
8
|
+
* La nostra unica funzione. Prende le opzioni e avvia il proxy.
|
|
9
|
+
* @param options Le opzioni di configurazione PXE
|
|
10
|
+
*/
|
|
11
|
+
export declare function startSimpleProxy(options: IDhcpOptions): void;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* simple-proxy.ts
|
|
3
|
+
* Un proxy DHCP minimale che agisce come un mini-server DHCP completo
|
|
4
|
+
* solo per i client PXE, per aggirare le protezioni di rete.
|
|
5
|
+
*/
|
|
6
|
+
import { createSocket } from 'dgram';
|
|
7
|
+
import ansis from 'ansis';
|
|
8
|
+
import { Packet } from '../dhcpd-proxy/classes/packet.js';
|
|
9
|
+
import { DhcpMessageType } from '../dhcpd-proxy//lib/packet/message-types.js';
|
|
10
|
+
// Un semplice Map in memoria per tracciare gli IP offerti
|
|
11
|
+
const offeredIPs = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* La nostra unica funzione. Prende le opzioni e avvia il proxy.
|
|
14
|
+
* @param options Le opzioni di configurazione PXE
|
|
15
|
+
*/
|
|
16
|
+
export function startSimpleProxy(options) {
|
|
17
|
+
const socket = createSocket({ type: 'udp4', reuseAddr: true });
|
|
18
|
+
socket.on('error', (err) => {
|
|
19
|
+
console.error(ansis.red.bold(`ERRORE SOCKET: ${err.stack}`));
|
|
20
|
+
socket.close();
|
|
21
|
+
});
|
|
22
|
+
socket.on('listening', () => {
|
|
23
|
+
const address = socket.address();
|
|
24
|
+
socket.setBroadcast(true);
|
|
25
|
+
console.log(ansis.green.inverse(`\n Proxy DHCP listening su ${address.address}:${address.port}. CTRL-C to end!\n`));
|
|
26
|
+
});
|
|
27
|
+
socket.on('message', (buffer, rinfo) => {
|
|
28
|
+
try {
|
|
29
|
+
const packet = Packet.fromBuffer(buffer);
|
|
30
|
+
packet.remote = rinfo;
|
|
31
|
+
const messageType = packet.options[53] || 0;
|
|
32
|
+
if (packet.op === 1 && messageType === DhcpMessageType.DHCPDISCOVER) {
|
|
33
|
+
handleDiscover(packet, options);
|
|
34
|
+
}
|
|
35
|
+
else if (packet.op === 1 && messageType === DhcpMessageType.DHCPREQUEST) {
|
|
36
|
+
handleRequest(packet, options);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
// Ignoriamo errori di parsing
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
socket.bind(67, '0.0.0.0');
|
|
44
|
+
// --- Funzioni Helper Interne ---
|
|
45
|
+
function setBootFilename(packet, opts) {
|
|
46
|
+
const isIpxe = packet.options[77] && packet.options[77].toString().includes('iPXE');
|
|
47
|
+
const arch = packet.options[93] || packet.options[60];
|
|
48
|
+
const isUefi64 = arch && (String(arch).includes('00007') || String(arch).includes('00009'));
|
|
49
|
+
// LOGICA DI ASSEGNAZIONE PRECISA
|
|
50
|
+
if (isIpxe && isUefi64) {
|
|
51
|
+
// CASO 1: Il client è iPXE e anche UEFI. Offriamo lo script!
|
|
52
|
+
console.log(ansis.magenta.bold(`<- Rilevato client iPXE su UEFI! Offro script autoexec...`));
|
|
53
|
+
return `http://${opts.host}/autoexec.ipxe`;
|
|
54
|
+
}
|
|
55
|
+
else if (isUefi64) {
|
|
56
|
+
// CASO 2: Il client è UEFI ma non è ancora iPXE. Offriamo il bootloader iPXE per UEFI.
|
|
57
|
+
return opts.efi64_filename;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// CASO 3: Il client è BIOS. Offriamo il bootloader iPXE per BIOS.
|
|
61
|
+
// (Aggiunta logica per altri tipi di architettura se necessario)
|
|
62
|
+
return opts.bios_filename;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function handleDiscover(packet, opts) {
|
|
66
|
+
console.log(ansis.blue.bold(`\n-> DISCOVER Ricevuto`));
|
|
67
|
+
console.log(ansis.dim(` └─ Da MAC: ${ansis.white(packet.chaddr)}`));
|
|
68
|
+
if (packet.options[60]?.includes('PXEClient')) {
|
|
69
|
+
console.log(ansis.cyan.bold(`<- Rilevato PXEClient! Preparo un'offerta completa...`));
|
|
70
|
+
const offerPacket = new Packet(packet);
|
|
71
|
+
offerPacket.op = 2; // BOOTREPLY
|
|
72
|
+
const ipParts = opts.host.split('.');
|
|
73
|
+
ipParts[3] = (parseInt(ipParts[3]) + 10).toString();
|
|
74
|
+
const offeredIp = ipParts.join('.');
|
|
75
|
+
offeredIPs.set(packet.chaddr, offeredIp);
|
|
76
|
+
offerPacket.yiaddr = offeredIp;
|
|
77
|
+
offerPacket.siaddr = opts.tftpserver;
|
|
78
|
+
offerPacket.options[53] = DhcpMessageType.DHCPOFFER;
|
|
79
|
+
offerPacket.options[54] = opts.host;
|
|
80
|
+
// Imposta il filename usando la nuova funzione logica
|
|
81
|
+
offerPacket.fname = setBootFilename(packet, opts);
|
|
82
|
+
console.log(ansis.dim(` ├─ Offro IP: ${ansis.green(offeredIp)}`));
|
|
83
|
+
console.log(ansis.dim(` ├─ Next-Server: ${ansis.white(offerPacket.siaddr)}`));
|
|
84
|
+
console.log(ansis.dim(` └─ Filename: ${ansis.white(offerPacket.fname)}`));
|
|
85
|
+
send(offerPacket, opts.broadcast, 68);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function handleRequest(packet, opts) {
|
|
89
|
+
const offeredIp = offeredIPs.get(packet.chaddr);
|
|
90
|
+
if (!offeredIp || (packet.options[50] && packet.options[50] !== offeredIp)) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
console.log(ansis.yellow.bold(`-> REQUEST per la nostra offerta ricevuto!`));
|
|
94
|
+
console.log(ansis.dim(` └─ Da MAC: ${ansis.white(packet.chaddr)}`));
|
|
95
|
+
const ackPacket = new Packet(packet);
|
|
96
|
+
ackPacket.op = 2;
|
|
97
|
+
ackPacket.yiaddr = offeredIp;
|
|
98
|
+
ackPacket.siaddr = opts.tftpserver;
|
|
99
|
+
ackPacket.options[53] = DhcpMessageType.DHCPACK;
|
|
100
|
+
ackPacket.options[54] = opts.host;
|
|
101
|
+
// Imposta il filename usando la stessa logica
|
|
102
|
+
ackPacket.fname = setBootFilename(packet, opts);
|
|
103
|
+
console.log(ansis.cyan.bold(`<- Invio ACK finale...`));
|
|
104
|
+
send(ackPacket, opts.broadcast, 68);
|
|
105
|
+
}
|
|
106
|
+
function send(packet, ip, port) {
|
|
107
|
+
const buffer = packet.toBuffer();
|
|
108
|
+
const typeName = DhcpMessageType[packet.options[53]] || 'UNKNOWN';
|
|
109
|
+
socket.send(buffer, 0, buffer.length, port, ip, (err, bytes) => {
|
|
110
|
+
if (err) {
|
|
111
|
+
console.error(ansis.red.bold(`[PROXY-ERROR] Errore invio ${typeName}:`), err);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
console.log(ansis.green(` ✔︎ ${typeName} inviata a ${ip}:${port} (${bytes} bytes)`));
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
export interface ITftpOptions {
|
|
2
|
-
denyPUT: boolean;
|
|
3
2
|
host: string;
|
|
4
3
|
port: number;
|
|
5
4
|
root: string;
|
|
5
|
+
denyPUT: boolean;
|
|
6
6
|
}
|
|
7
7
|
export interface IDhcpOptions {
|
|
8
|
+
subnet: string;
|
|
9
|
+
host: string;
|
|
10
|
+
tftpserver: string;
|
|
8
11
|
bios_filename: string;
|
|
9
12
|
efi32_filename: string;
|
|
10
13
|
efi64_filename: string;
|
|
11
|
-
|
|
12
|
-
subnet: string;
|
|
13
|
-
tftpserver: string;
|
|
14
|
+
broadcast: string;
|
|
14
15
|
}
|
|
15
16
|
export interface IDhcpd {
|
|
16
|
-
|
|
17
|
+
pre_init: (pkt: IPacket) => void;
|
|
17
18
|
discover: (pkt: IPacket) => void;
|
|
19
|
+
request: (pkt: IPacket) => void;
|
|
18
20
|
inform: (pkt: IPacket) => void;
|
|
19
|
-
pre_init: (pkt: IPacket) => void;
|
|
20
21
|
proxy_request: (pkt: IPacket) => IPacket;
|
|
21
|
-
request: (pkt: IPacket) => void;
|
|
22
22
|
}
|
|
23
23
|
export interface IProxy {
|
|
24
24
|
bind: (port: number, addr: string, cb: any) => IPacket;
|
|
@@ -27,19 +27,19 @@ export interface IServer {
|
|
|
27
27
|
bind: (port: number, addr: string, cb: any) => IPacket;
|
|
28
28
|
}
|
|
29
29
|
export interface IPacket {
|
|
30
|
-
chaddr: (chaddr: any) => IPacket;
|
|
31
|
-
ciaddr: (ciaddr: string) => IPacket;
|
|
32
|
-
flags: (flags: any) => IPacket;
|
|
33
|
-
fname: (fname: any) => IPacket;
|
|
34
30
|
getRequestedIPAddress: () => string;
|
|
35
|
-
|
|
31
|
+
op: (op: any) => IPacket;
|
|
32
|
+
htype: (htype: any) => IPacket;
|
|
36
33
|
hlen: (hlen: any) => IPacket;
|
|
37
34
|
hops: (hops: any) => IPacket;
|
|
38
|
-
|
|
39
|
-
op: (op: any) => IPacket;
|
|
40
|
-
options: (options: any) => IPacket;
|
|
35
|
+
xid: (xid: any) => IPacket;
|
|
41
36
|
secs: (secs: any) => IPacket;
|
|
37
|
+
flags: (flags: any) => IPacket;
|
|
38
|
+
ciaddr: (ciaddr: string) => IPacket;
|
|
42
39
|
siaddr: (siaddr: string) => IPacket;
|
|
40
|
+
giaddr: (giaddr: string) => IPacket;
|
|
41
|
+
chaddr: (chaddr: any) => IPacket;
|
|
43
42
|
sname: (sname: any) => IPacket;
|
|
44
|
-
|
|
43
|
+
fname: (fname: any) => IPacket;
|
|
44
|
+
options: (options: any) => IPacket;
|
|
45
45
|
}
|
|
@@ -10,11 +10,11 @@ import Sequence from '../sequence.js';
|
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
12
12
|
* @param this
|
|
13
|
-
* @param
|
|
13
|
+
* @param username
|
|
14
14
|
* @param password
|
|
15
|
-
* @param
|
|
15
|
+
* @param fullusername
|
|
16
16
|
* @param roomNumber
|
|
17
17
|
* @param workPhone
|
|
18
18
|
* @param homePhone
|
|
19
19
|
*/
|
|
20
|
-
export default function addUser(this: Sequence,
|
|
20
|
+
export default function addUser(this: Sequence, username?: string, password?: string, fullusername?: string, roomNumber?: string, workPhone?: string, homePhone?: string): Promise<void>;
|
|
@@ -6,61 +6,66 @@
|
|
|
6
6
|
* license: MIT
|
|
7
7
|
* https://stackoverflow.com/questions/23876782/how-do-i-split-a-typescript-class-into-multiple-files
|
|
8
8
|
*/
|
|
9
|
+
import Utils from '../../../classes/utils.js';
|
|
9
10
|
import fs from 'fs';
|
|
10
11
|
import yaml from 'js-yaml';
|
|
11
12
|
import { exec } from '../../../lib/utils.js';
|
|
12
13
|
/**
|
|
13
14
|
*
|
|
14
15
|
* @param this
|
|
15
|
-
* @param
|
|
16
|
+
* @param username
|
|
16
17
|
* @param password
|
|
17
|
-
* @param
|
|
18
|
+
* @param fullusername
|
|
18
19
|
* @param roomNumber
|
|
19
20
|
* @param workPhone
|
|
20
21
|
* @param homePhone
|
|
21
22
|
*/
|
|
22
|
-
export default async function addUser(
|
|
23
|
+
export default async function addUser(username = 'live', password = 'evolution', fullusername = '', roomNumber = '', workPhone = '', homePhone = '') {
|
|
23
24
|
// adduser user
|
|
24
|
-
let cmd = `chroot ${this.installTarget} adduser ${
|
|
25
|
+
let cmd = `chroot ${this.installTarget} adduser ${username} --home /home/${username} --shell /bin/bash --disabled-password --gecos "${fullusername},${roomNumber},${workPhone},${homePhone}" ${this.toNull}`;
|
|
25
26
|
if (this.distro.familyId === 'archlinux') {
|
|
26
|
-
cmd = `chroot ${this.installTarget} useradd --create-home --shell /bin/bash ${
|
|
27
|
+
cmd = `chroot ${this.installTarget} useradd --create-home --shell /bin/bash ${username} ${this.toNull}`;
|
|
27
28
|
}
|
|
28
29
|
else if (this.distro.familyId === 'fedora') {
|
|
29
|
-
cmd = `chroot ${this.installTarget} adduser ${
|
|
30
|
+
cmd = `chroot ${this.installTarget} adduser ${username} --create-home --shell /bin/bash --comment "${fullusername},${roomNumber},${workPhone},${homePhone}" ${this.toNull}`;
|
|
30
31
|
}
|
|
31
32
|
else if (this.distro.familyId === 'opensuse') {
|
|
32
|
-
cmd = `chroot ${this.installTarget} useradd ${
|
|
33
|
+
cmd = `chroot ${this.installTarget} useradd ${username} --create-home --shell /bin/bash --comment "${fullusername},${roomNumber},${workPhone},${homePhone}" ${this.toNull}`;
|
|
33
34
|
}
|
|
34
35
|
await exec(cmd, this.echo);
|
|
35
|
-
|
|
36
|
-
cmd = `echo ${name}:${password} | chroot ${this.installTarget} chpasswd ${this.toNull}`;
|
|
36
|
+
cmd = `echo ${username}:${password} | chroot ${this.installTarget} chpasswd ${this.toNull}`;
|
|
37
37
|
await exec(cmd, this.echo);
|
|
38
38
|
let group = 'wheel';
|
|
39
39
|
if (this.distro.familyId === 'debian') {
|
|
40
|
-
|
|
41
|
-
* look to calamares/modules/users.yml for groups
|
|
42
|
-
*/
|
|
43
|
-
let usersConf = '/etc/calamares/modules/users.conf';
|
|
44
|
-
if (!fs.existsSync(usersConf)) {
|
|
45
|
-
usersConf = '/etc/penguins-eggs.d/krill/modules/users.conf';
|
|
46
|
-
}
|
|
47
|
-
if (fs.existsSync(usersConf)) {
|
|
48
|
-
const o = yaml.load(fs.readFileSync(usersConf, 'utf8'));
|
|
49
|
-
for (const group of o.defaultGroups) {
|
|
50
|
-
cmd = `chroot ${this.installTarget} usermod -aG ${group} ${name} ${this.toNull}`;
|
|
51
|
-
await exec(cmd, this.echo);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
group = 'sudo';
|
|
56
|
-
}
|
|
57
|
-
cmd = `chroot ${this.installTarget} usermod -aG ${group} ${name} ${this.toNull}`;
|
|
58
|
-
await exec(cmd, this.echo);
|
|
40
|
+
group = 'sudo';
|
|
59
41
|
}
|
|
42
|
+
cmd = `chroot ${this.installTarget} usermod -aG ${group} ${username} ${this.toNull}`;
|
|
43
|
+
await exec(cmd, this.echo);
|
|
60
44
|
// add autologin group in archlinux
|
|
61
45
|
await exec(cmd, this.echo);
|
|
62
46
|
if (this.distro.familyId === 'archlinux') {
|
|
63
47
|
await exec(`chroot ${this.installTarget} getent group autologin || groupadd autologin`);
|
|
64
|
-
await exec(`chroot ${this.installTarget}
|
|
48
|
+
await exec(`chroot ${this.installTarget} usermod -aG autologin ${username}`);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* look to calamares/modules/users.conf for groups
|
|
52
|
+
*/
|
|
53
|
+
let usersConf = '/etc/calamares/modules/users.conf';
|
|
54
|
+
if (!fs.existsSync(usersConf)) {
|
|
55
|
+
usersConf = '/etc/penguins-eggs.d/krill/modules/users.conf';
|
|
56
|
+
}
|
|
57
|
+
if (fs.existsSync(usersConf)) {
|
|
58
|
+
const o = yaml.load(fs.readFileSync(usersConf, 'utf8'));
|
|
59
|
+
for (const group of o.defaultGroups) {
|
|
60
|
+
const groupExists = await exec(`getent group ${group}`);
|
|
61
|
+
if (groupExists.code == 0) {
|
|
62
|
+
let addGroup = `chroot ${this.installTarget} usermod -aG ${group} ${username}`;
|
|
63
|
+
await exec(addGroup);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
console.log(`cannot find: ${usersConf}!`);
|
|
69
|
+
await Utils.pressKeyToExit();
|
|
65
70
|
}
|
|
66
71
|
}
|
|
@@ -15,32 +15,9 @@ import { exec } from '../../../lib/utils.js';
|
|
|
15
15
|
export default async function bootloaderConfig() {
|
|
16
16
|
let cmd = '';
|
|
17
17
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (this.distro.familyId === '
|
|
21
|
-
if (this.efi) {
|
|
22
|
-
try {
|
|
23
|
-
cmd = `chroot ${this.installTarget} yum install grub2 grub2-efi-x64 efibootmgr} ${this.toNull}`;
|
|
24
|
-
await exec(cmd, this.echo);
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
await showError(cmd, error);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
try {
|
|
32
|
-
cmd = `chroot ${this.installTarget} yum install grub2 grub2-pc ${this.toNull}`;
|
|
33
|
-
await exec(cmd, this.echo);
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
await showError(cmd, error);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* alpine
|
|
41
|
-
*/
|
|
42
|
-
}
|
|
43
|
-
else if (this.distro.familyId === 'alpine') {
|
|
18
|
+
* alpine
|
|
19
|
+
*/
|
|
20
|
+
if (this.distro.familyId === 'alpine') {
|
|
44
21
|
if (this.efi) {
|
|
45
22
|
try {
|
|
46
23
|
cmd = `chroot ${this.installTarget} apk add grub grub-efi efibootmgr} ${this.toNull}`;
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import shx from 'shelljs';
|
|
10
10
|
import { InstallationMode } from '../krill_enums.js';
|
|
11
|
-
import Pacman from '../../../classes/pacman.js';
|
|
12
11
|
import Utils from '../../../classes/utils.js';
|
|
13
12
|
import { SwapChoice } from '../krill_enums.js';
|
|
14
13
|
/**
|
|
@@ -42,9 +41,6 @@ export default async function fstab(installDevice, crypted = false) {
|
|
|
42
41
|
/**
|
|
43
42
|
* fstab
|
|
44
43
|
*/
|
|
45
|
-
if (!Pacman.packageIsInstalled('btrfs-progs')) {
|
|
46
|
-
this.partitions.filesystemType === 'ext4';
|
|
47
|
-
}
|
|
48
44
|
const fstab = this.installTarget + '/etc/fstab';
|
|
49
45
|
/**
|
|
50
46
|
boot: IDevice
|
|
@@ -144,27 +140,19 @@ export default async function fstab(installDevice, crypted = false) {
|
|
|
144
140
|
text += `# swap undefined\n`;
|
|
145
141
|
}
|
|
146
142
|
/**
|
|
147
|
-
*
|
|
143
|
+
* btrfs
|
|
148
144
|
*/
|
|
149
145
|
}
|
|
150
146
|
else if (this.partitions.filesystemType === 'btrfs') {
|
|
151
|
-
const
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
text +=
|
|
160
|
-
text += `UUID=${Utils.uuid(this.devices.root.name)} ${base}\n`;
|
|
161
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${snapshots}\n`;
|
|
162
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${home}\n`;
|
|
163
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${root}\n`;
|
|
164
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_log}\n`;
|
|
165
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_lib_AccountsService}\n`;
|
|
166
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${var_lib_blueman}\n`;
|
|
167
|
-
text += `# UUID=${Utils.uuid(this.devices.root.name)} ${tmp}\n`;
|
|
147
|
+
const rootMountPoint = this.devices.root.mountPoint;
|
|
148
|
+
const rootUuid = Utils.uuid(this.devices.root.name);
|
|
149
|
+
text += `# ${this.devices.root.name} btrfs ${rootMountPoint} subvol\n`;
|
|
150
|
+
text += `UUID=${rootUuid} / btrfs subvol=/@,defaults 0 0\n`;
|
|
151
|
+
text += `UUID=${rootUuid} /home btrfs /@home,defaults 0 0\n`;
|
|
152
|
+
text += `UUID=${rootUuid} /var/cache btrfs /@cache,defaults 0 0\n`;
|
|
153
|
+
text += `UUID=${rootUuid} /var/log btrfs /@log,defaults 0 0\n`;
|
|
154
|
+
text += `# swapfile\n`;
|
|
155
|
+
text += `/swapfile none swap sw 0 0`;
|
|
168
156
|
}
|
|
169
157
|
Utils.write(fstab, text);
|
|
170
158
|
}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import fs from 'node:fs';
|
|
10
10
|
import Utils from '../../../classes/utils.js';
|
|
11
|
-
import { SwapChoice } from '../krill_enums.js';
|
|
12
11
|
import { InstallationMode } from '../krill_enums.js';
|
|
13
12
|
/**
|
|
14
13
|
* grubcfg
|
|
@@ -22,9 +21,12 @@ export default async function grubcfg() {
|
|
|
22
21
|
let content = '';
|
|
23
22
|
const grubs = fs.readFileSync(file, 'utf8').split('\n');
|
|
24
23
|
for (let i = 0; i < grubs.length; i++) {
|
|
24
|
+
// RESUME
|
|
25
25
|
if (grubs[i].includes('GRUB_CMDLINE_LINUX_DEFAULT=')) {
|
|
26
|
-
if (this.partitions.
|
|
27
|
-
|
|
26
|
+
if (this.partitions.filesystemType === 'btrfs') {
|
|
27
|
+
// userSwapChoice != SwapChoice.File) {
|
|
28
|
+
// grubs[i] = this.partitions.installationMode === InstallationMode.Luks ? `GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=${Utils.uuid(this.devices.swap.name)}"` : `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=${Utils.uuid(this.devices.swap.name)}"`
|
|
29
|
+
grubs[i] = this.partitions.installationMode === InstallationMode.Luks ? `GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=${Utils.uuid(this.devices.swap.name)}"` : `GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rootflags=subvol=@"`;
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
content += grubs[i] + '\n';
|