From 22f7f75d8d725c6f85e1555591835820b74c1b07 Mon Sep 17 00:00:00 2001 From: Artem Proskurnev Date: Mon, 7 Feb 2022 04:35:23 +0300 Subject: [PATCH] Initial --- COPYING | 340 +++++++++++ Makefile | 76 +++ QUICKSTART | 54 ++ README | 84 +++ apt.conf | 8 + bin/archdep-filter | 49 ++ bin/check-pkg-list | 100 ++++ bin/check-recipe | 14 + bin/cleanlog | 24 + bin/columnize | 36 ++ bin/metadep-expander | 30 + bin/mktmpdir | 97 +++ bin/mp-commit | 27 + bin/mp-showref | 11 + bin/pkgdups | 20 + bin/report-filter | 4 + bin/report-targets | 33 ++ bin/report-targets2vars | 52 ++ bin/tags2lists | 36 ++ bin/tar2fs | 458 +++++++++++++++ bld/Makefile | 125 ++++ bld/README | 21 + bld/build.log | 182 ++++++ bld/distcfg.mk | 525 +++++++++++++++++ bld/files/.disk/arch | 1 + bld/files/.disk/commit | 1 + bld/files/.disk/date | 1 + bld/files/.disk/info | 1 + bld/files/.disk/profile.tgz | Bin 0 -> 46882 bytes bld/files/Metadata/pkg-groups.tar | Bin 0 -> 10240 bytes bld/functions.mk | 55 ++ bld/image-scripts.d/01-rootdir | 6 + bld/image-scripts.d/99-tcb-fix | 5 + bld/lib/10-kernel.mk | 6 + bld/lib/20-branding.mk | 9 + bld/lib/30-docs.mk | 14 + bld/lib/50-metadata.mk | 46 ++ bld/lib/90-build-distro.mk | 47 ++ bld/live/Makefile | 77 +++ bld/live/README | 16 + bld/live/image-scripts.d/00-stage1 | 5 + bld/live/image-scripts.d/01-rootdir | 6 + bld/live/image-scripts.d/10-live-hooks | 5 + bld/live/image-scripts.d/10-plymouth | 10 + bld/live/image-scripts.d/10-services | 40 ++ bld/live/image-scripts.d/20-locale | 14 + bld/live/image-scripts.d/30-all-groups | 13 + bld/live/image-scripts.d/35-xdg-user-dirs | 15 + bld/live/image-scripts.d/40-x11-autologin | 212 +++++++ bld/live/image-scripts.d/40-x11-autostart | 19 + bld/live/image-scripts.d/50-bootargs | 11 + bld/live/image-scripts.d/50-control | 11 + bld/live/image-scripts.d/50-fontconfig | 33 ++ bld/live/image-scripts.d/50-issue | 23 + bld/live/image-scripts.d/50-l10n-kbd | 17 + bld/live/image-scripts.d/50-l10n-xkb | 19 + bld/live/image-scripts.d/50-net-nm | 17 + bld/live/image-scripts.d/50-net-resolv | 10 + bld/live/image-scripts.d/50-ntp | 10 + bld/live/image-scripts.d/50-power | 6 + bld/live/image-scripts.d/50-root | 16 + bld/live/image-scripts.d/50-udev | 9 + bld/live/image-scripts.d/50-users | 46 ++ bld/live/image-scripts.d/50-var-run-fix | 9 + bld/live/image-scripts.d/60-apt | 10 + bld/live/image-scripts.d/65-os-release | 15 + .../70-network-shares-dhcpcd.sh | 10 + .../image-scripts.d/70-network-shares-nscd.sh | 6 + .../70-network-shares-samba.sh | 117 ++++ bld/live/image-scripts.d/85-cleanup-cjk | 25 + bld/live/image-scripts.d/85-cleanup-legacy | 20 + bld/live/image-scripts.d/90-cleanup-drm | 10 + bld/live/image-scripts.d/90-firsttime | 3 + .../image-scripts.d/90-live-cleanup-drivers | 7 + bld/live/image-scripts.d/90-systemd | 21 + bld/live/image-scripts.d/91-systemd | 16 + .../image-scripts.d/97-cleanup-blacklisted | 12 + bld/live/image-scripts.d/98-depmod | 12 + bld/live/image-scripts.d/99-cleanup-boot | 15 + .../image-scripts.d/99-systemd-resolved-link | 10 + bld/live/image-scripts.d/99-tcb-fix | 5 + bld/live/image-scripts.d/99-urw | 4 + bld/live/image-scripts.d/99-xfce-theme | 7 + bld/live/lib/50-l10n.mk | 15 + bld/live/lib/50-pkgpriorities.mk | 26 + bld/live/lib/50branding.mk | 2 + bld/live/scripts.d/99-elf-stats | 48 ++ bld/live/stage2cfg.mk | 18 + bld/makedall.sh | 3 + bld/pkg/lists/.base | 556 ++++++++++++++++++ bld/pkg/lists/domain-client | 16 + bld/pkg/lists/grub | 6 + bld/pkg/lists/sound/base | 5 + bld/pkg/lists/sound/pulseaudio | 3 + bld/pkg/lists/systemd | 6 + bld/pkg/lists/tagged/base+desktop+live | 10 + bld/pkg/lists/tagged/base+efi | 6 + bld/pkg/lists/tagged/base+kde5 | 92 +++ bld/pkg/lists/tagged/base+kometa | 118 ++++ bld/pkg/lists/tagged/base+l10n | 2 + bld/pkg/lists/tagged/base+network | 3 + bld/pkg/lists/tagged/base+nm | 7 + bld/pkg/lists/tagged/base+regular | 35 ++ bld/pkg/lists/tagged/base+regular+extra | 4 + bld/pkg/lists/tagged/base+rescue | 30 + bld/pkg/lists/tagged/base+xorg | 10 + bld/pkg/lists/tagged/desktop+live | 9 + bld/pkg/lists/tagged/desktop+regular | 55 ++ bld/pkg/lists/tagged/desktop+xorg | 10 + bld/pkg/lists/tagged/security+luks | 2 + bld/pkg/lists/tools/wireless | 5 + bld/rootfs/README | 19 + bld/rootfs/image-scripts.d/10-plymouth | 10 + bld/rootfs/image-scripts.d/10-services | 40 ++ bld/rootfs/image-scripts.d/30-all-groups | 13 + bld/rootfs/image-scripts.d/35-xdg-user-dirs | 15 + bld/rootfs/image-scripts.d/40-x11-autologin | 212 +++++++ bld/rootfs/image-scripts.d/40-x11-autostart | 19 + bld/rootfs/image-scripts.d/50-bootargs | 11 + bld/rootfs/image-scripts.d/50-control | 11 + bld/rootfs/image-scripts.d/50-fontconfig | 33 ++ bld/rootfs/image-scripts.d/50-issue | 23 + bld/rootfs/image-scripts.d/50-l10n-kbd | 17 + bld/rootfs/image-scripts.d/50-l10n-xkb | 19 + bld/rootfs/image-scripts.d/50-net-nm | 17 + bld/rootfs/image-scripts.d/50-net-resolv | 10 + bld/rootfs/image-scripts.d/50-ntp | 10 + bld/rootfs/image-scripts.d/50-power | 6 + bld/rootfs/image-scripts.d/50-root | 16 + bld/rootfs/image-scripts.d/50-users | 46 ++ bld/rootfs/image-scripts.d/50-var-run-fix | 9 + bld/rootfs/image-scripts.d/65-os-release | 15 + .../70-network-shares-dhcpcd.sh | 10 + .../image-scripts.d/70-network-shares-nscd.sh | 6 + .../70-network-shares-samba.sh | 117 ++++ bld/rootfs/image-scripts.d/90-firsttime | 3 + bld/rootfs/image-scripts.d/90-systemd | 21 + .../image-scripts.d/99-systemd-resolved-link | 10 + bld/rootfs/lib/50-l10n.mk | 15 + bld/rootfs/lib/50-pkgpriorities.mk | 26 + bld/scripts.d/00-cleanup | 4 + bld/scripts.d/20-propagator-ramdisk-grub | 17 + bld/scripts.d/20-propagator-ramdisk-syslinux | 20 + bld/scripts.d/20-propagator-rescue-hash-grub | 15 + .../20-propagator-rescue-hash-syslinux | 20 + bld/scripts.d/50-docs-indexhtml | 46 ++ bld/scripts.d/50-docs-license | 9 + bld/sources.list | 4 + bld/squashcfg.mk | 1 + bld/stage1/Makefile | 76 +++ bld/stage1/README | 27 + bld/stage1/files/boot/grub/.in/00defaults.cfg | 25 + bld/stage1/files/boot/grub/.in/01gfxterm.cfg | 37 ++ .../files/boot/grub/.in/10localboot_bios.cfg | 13 + bld/stage1/files/boot/grub/.in/30live.cfg | 9 + bld/stage1/files/boot/grub/.in/32live_rw.cfg | 7 + bld/stage1/files/boot/grub/.in/86lang.cfg | 14 + .../files/boot/grub/.in/90memtest_bios.cfg | 5 + .../files/boot/grub/.in/95fwsetup_efi.cfg | 5 + bld/stage1/files/boot/grub/.in/grub.list | 1 + bld/stage1/files/index.html | 10 + bld/stage1/files/syslinux/.in/00defaults.cfg | 2 + bld/stage1/files/syslinux/.in/01gfxboot.cfg | 4 + bld/stage1/files/syslinux/.in/10localboot.cfg | 3 + bld/stage1/files/syslinux/.in/30live.cfg | 4 + bld/stage1/files/syslinux/.in/32live_rw.cfg | 4 + bld/stage1/files/syslinux/.in/90memtest.cfg | 3 + bld/stage1/files/syslinux/.in/modules.list | 1 + bld/stage1/files/syslinux/.in/syslinux.list | 1 + bld/stage1/initfs | 1 + bld/stage1/lib/50branding.mk | 1 + bld/stage1/modules | 19 + bld/stage1/modules.d/10-stage2 | 208 +++++++ bld/stage1/modules.d/50-l10n | 6 + bld/stage1/modules.d/50-net | 6 + bld/stage1/modules.d/50-stage2-ata | 21 + bld/stage1/modules.d/50-stage2-drm | 1 + bld/stage1/modules.d/50-stage2-fs | 10 + bld/stage1/modules.d/50-stage2-hid | 1 + bld/stage1/modules.d/50-stage2-md | 2 + bld/stage1/modules.d/50-stage2-mmc | 7 + bld/stage1/modules.d/50-stage2-net | 81 +++ bld/stage1/modules.d/50-stage2-net-cifs | 2 + bld/stage1/modules.d/50-stage2-net-nfs | 6 + bld/stage1/modules.d/50-stage2-pcmcia | 6 + bld/stage1/modules.d/50-stage2-rtc | 1 + bld/stage1/modules.d/50-stage2-sbc-aarch64 | 9 + bld/stage1/modules.d/50-stage2-scsi | 40 ++ bld/stage1/modules.d/50-stage2-usb | 16 + bld/stage1/modules.d/50-stage2-virtio | 2 + bld/stage1/modules.d/50-vmguest | 6 + bld/stage1/scripts.d/01-grub | 88 +++ bld/stage1/scripts.d/01-initfs | 2 + bld/stage1/scripts.d/01-syslinux | 63 ++ bld/stage1/scripts.d/02-gfxboot | 31 + bld/stage1/scripts.d/02-memtest | 7 + bld/stage1/scripts.d/03-test-kernel | 58 ++ bld/stage1/scripts.d/11-initrd-misc | 4 + bld/stage1/scripts.d/11-initrd-plymouth | 7 + bld/stage1/scripts.d/11-initrd-propagator | 7 + bld/stage1/scripts.d/20-initrd-cdrom | 9 + bld/stage1/scripts.d/20-initrd-cifs | 9 + bld/stage1/scripts.d/40-propagator-fuid-file | 5 + bld/stage1/scripts.d/50-disable-nvidia | 3 + .../scripts.d/80-make-initrd-for-propagator | 47 ++ bld/stage1/scripts.d/81-make-initfs | 29 + bld/stage1/scripts.d/90-build-propagator | 32 + bld/stage1/scripts.d/95-copy-kernel | 43 ++ bld/vars.mk | 22 + conf.d/Makefile | 2 + conf.d/README | 69 +++ conf.d/alt-server.mk | 74 +++ conf.d/basealt.mk | 109 ++++ conf.d/desktop.mk | 14 + conf.d/e2k.mk | 77 +++ conf.d/education.mk | 167 ++++++ conf.d/engineering.mk | 42 ++ conf.d/homeros.mk | 6 + conf.d/kworkstation.mk | 227 +++++++ conf.d/live.mk | 163 +++++ conf.d/mixin-alt-server.mk | 56 ++ conf.d/mixin-basealt.mk | 80 +++ conf.d/mixin.mk | 160 +++++ conf.d/realtime.mk | 16 + conf.d/regular-vm.mk | 222 +++++++ conf.d/regular.mk | 285 +++++++++ conf.d/server-v.mk | 151 +++++ conf.d/server.mk | 29 + conf.d/slinux.mk | 68 +++ conf.d/test.mk | 79 +++ conf.d/ve.mk | 70 +++ conf.d/vm.mk | 62 ++ doc/.fop.xconf | 54 ++ doc/.gitignore | 5 + doc/Makefile | 71 +++ doc/apt.conf.sample | 8 + doc/archdep.txt | 67 +++ doc/assumptions.txt | 55 ++ doc/branch.txt | 26 + doc/debug.txt | 26 + doc/features.txt | 40 ++ doc/gen-asciidoc.txt | 16 + doc/metadep.txt | 19 + doc/mkimage-profiles.7.in | 142 +++++ doc/mkimage-profiles.asciidoc | 87 +++ doc/params.txt | 170 ++++++ doc/pkglists.txt | 52 ++ doc/profiles.mk.sample | 24 + doc/qemu.txt | 13 + doc/style.txt | 47 ++ doc/vm.txt | 36 ++ features.in/00example/README | 48 ++ features.in/00example/config.mk | 13 + features.in/00example/generate.mk | 20 + features.in/00example/generate.sh | 20 + .../00example/main/scripts.d/89-example | 13 + features.in/Makefile | 134 +++++ features.in/README | 42 ++ features.in/aarch64-tegra/README | 2 + features.in/aarch64-tegra/config.mk | 6 + .../image-scripts.d/98-tegra-extlinux-conf | 17 + .../image-scripts.d/99-tegra-initrd-conf | 4 + features.in/apt-conf/README | 1 + features.in/apt-conf/config.mk | 8 + features.in/arm-rpi4/README | 2 + features.in/arm-rpi4/config.mk | 34 ++ .../82-timer-based-to-interrupt-driven | 11 + .../93-default-gouvernor-conservative | 12 + .../image-scripts.d/96-gen-brcmfmac43455 | 3 + .../98-bootstrap-boot-by-firmware | 49 ++ features.in/armh-mcom02/README | 2 + features.in/armh-mcom02/config.mk | 16 + .../image-scripts.d/01-mcom02-initrd | 3 + .../50-alsa-set-initial-options-ports | 6 + .../armh-mcom02/image-scripts.d/90-fbturbo | 13 + .../image-scripts.d/99-extlinux-conf-fix | 4 + features.in/armh-skit/README | 2 + features.in/armh-skit/config.mk | 8 + .../image-scripts.d/01-uboot-prepare | 15 + .../50-alsa-set-initial-options-ports | 6 + .../armh-skit/image-scripts.d/90-fbturbo | 13 + .../image-scripts.d/99-extlinux-conf-fix | 4 + features.in/auto-resize/README | 2 + features.in/auto-resize/config.mk | 3 + .../image-scripts.d/91-edit-fstab-growfs | 5 + features.in/bootloader/README | 21 + features.in/bootloader/config.mk | 50 ++ .../image-scripts.d/00-check-bootloader | 6 + .../rootfs/image-scripts.d/50-bootargs | 11 + features.in/branding/README | 26 + features.in/branding/config.mk | 32 + .../install2/image-scripts.d/50-branding.sh | 7 + .../branding/install2/lib/50branding.mk | 2 + features.in/branding/lib/20-branding.mk | 9 + features.in/branding/live/lib/50branding.mk | 2 + features.in/branding/main/lib/50branding.mk | 1 + features.in/branding/stage1/lib/50branding.mk | 1 + features.in/browser/README | 6 + features.in/browser/config.mk | 44 ++ features.in/build-distro/README | 14 + features.in/build-distro/config.mk | 3 + .../install2/image-scripts.d/86-all-groups | 24 + .../build-distro/lib/90-build-distro.mk | 47 ++ .../rootfs/image-scripts.d/30-all-groups | 13 + features.in/build-distro/scripts.d/00-cleanup | 4 + features.in/build-ve/README | 5 + features.in/build-ve/config.mk | 3 + .../build-ve/image-scripts.d/03-services | 14 + .../build-ve/image-scripts.d/04-inittab | 4 + features.in/build-ve/image-scripts.d/05-mtab | 3 + .../build-ve/image-scripts.d/06-syslog | 16 + features.in/build-ve/image-scripts.d/07-fstab | 6 + features.in/build-ve/lib/90-build-ve.mk | 29 + features.in/build-vm/README | 6 + features.in/build-vm/config.mk | 4 + features.in/build-vm/generate.mk | 4 + .../build-vm/image-scripts.d/03-services | 10 + .../build-vm/image-scripts.d/06-syslog | 12 + features.in/build-vm/image-scripts.d/16-fstab | 4 + .../build-vm/image-scripts.d/17-kernel | 55 ++ features.in/build-vm/lib/90-build-vm.mk | 122 ++++ features.in/cleanup/README | 13 + features.in/cleanup/config.mk | 57 ++ .../cleanup/image-scripts.d/90-cleanup-pkgs | 7 + .../install2/image-scripts.d/90-cleanup-pkgs | 26 + .../cleanup/live/image-scripts.d/80-locales | 12 + .../live/image-scripts.d/90-cleanup-docs | 10 + .../live/image-scripts.d/90-cleanup-pkgs | 7 + .../cleanup/live/image-scripts.d/99-cleanupdb | 22 + features.in/control/README | 2 + features.in/control/config.mk | 23 + .../install2/image-scripts.d/51-control | 7 + .../control/rootfs/image-scripts.d/50-control | 11 + features.in/deflogin/README | 23 + features.in/deflogin/config.mk | 45 ++ .../deflogin/rootfs/image-scripts.d/50-issue | 23 + .../deflogin/rootfs/image-scripts.d/50-root | 16 + .../deflogin/rootfs/image-scripts.d/50-users | 46 ++ features.in/dev/README | 10 + features.in/dev/config.mk | 34 ++ .../dev/live/image-scripts.d/51-hasher | 120 ++++ features.in/dev/main/lib/50-override.mk | 4 + features.in/docs/README | 12 + features.in/docs/config.mk | 25 + features.in/docs/lib/30-docs.mk | 14 + features.in/docs/scripts.d/50-docs-indexhtml | 46 ++ features.in/docs/scripts.d/50-docs-license | 9 + features.in/domain-client/README | 7 + features.in/domain-client/config.mk | 7 + .../70-network-shares-dhcpcd.sh | 10 + .../image-scripts.d/70-network-shares-nscd.sh | 6 + .../70-network-shares-samba.sh | 117 ++++ features.in/dos/README | 9 + features.in/dos/config.mk | 9 + .../dos/stage1/scripts.d/50-make-dos-floppy | 6 + features.in/drm/README | 7 + features.in/drm/config.mk | 44 ++ features.in/e2k/README | 1 + features.in/e2k/config.mk | 80 +++ .../e2k/install2/image-scripts.d/01-e2k-acpid | 5 + .../e2k/install2/image-scripts.d/01-e2k-apt | 4 + features.in/e2k/lib/50-e2k-write.sh | 64 ++ features.in/e2k/lib/50-e2k.mk | 4 + .../e2k/rootfs/image-scripts.d/50-e2k-serial | 14 + .../e2k/rootfs/image-scripts.d/50-e2k-utc | 6 + .../e2k/rootfs/image-scripts.d/51-e2k-koi8-r | 6 + .../e2k/rootfs/image-scripts.d/51-e2k-utf-8 | 8 + features.in/e2k/scripts.d/20-e2k-boot | 50 ++ .../e2k/stage1/scripts.d/20-initrd-e2k-kms | 4 + .../stage2/image-scripts.d/50-e2k-no-notes | 6 + features.in/efi/README | 10 + features.in/efi/config.mk | 68 +++ features.in/firmware/README | 7 + features.in/firmware/config.mk | 40 ++ features.in/fonts/README | 5 + features.in/fonts/config.mk | 62 ++ .../rootfs/image-scripts.d/50-fontconfig | 33 ++ features.in/grub/README | 35 ++ features.in/grub/cfg.in/00defaults.cfg | 24 + features.in/grub/cfg.in/01gfxterm.cfg | 37 ++ features.in/grub/cfg.in/10localboot_bios.cfg | 13 + features.in/grub/cfg.in/20install2.cfg | 7 + .../grub/cfg.in/25install-vnc-connect.cfg | 6 + .../grub/cfg.in/25install-vnc-listen.cfg | 7 + features.in/grub/cfg.in/30live.cfg | 9 + features.in/grub/cfg.in/32live_rw.cfg | 7 + features.in/grub/cfg.in/80rescue.cfg | 7 + features.in/grub/cfg.in/82rescue_rw.cfg | 7 + features.in/grub/cfg.in/83rescue_fm.cfg | 7 + features.in/grub/cfg.in/84rescue_remote.cfg | 6 + features.in/grub/cfg.in/85mediacheck.cfg | 6 + features.in/grub/cfg.in/86lang.cfg | 14 + features.in/grub/cfg.in/88netinstall.cfg | 80 +++ features.in/grub/cfg.in/89kernel.cfg | 19 + features.in/grub/cfg.in/90hdt_bios.cfg | 6 + features.in/grub/cfg.in/90memtest_bios.cfg | 5 + features.in/grub/cfg.in/90memtest_efi.cfg | 6 + features.in/grub/cfg.in/91shell_efi.cfg | 6 + features.in/grub/cfg.in/95fwsetup_efi.cfg | 5 + features.in/grub/cfg.in/95sdab_bios.cfg | 19 + features.in/grub/config.mk | 36 ++ features.in/grub/generate.mk | 140 +++++ .../grub/scripts.d/20-propagator-ramdisk-grub | 17 + .../scripts.d/20-propagator-rescue-hash-grub | 15 + features.in/grub/stage1/scripts.d/01-grub | 88 +++ features.in/hdt/README | 7 + features.in/hdt/config.mk | 12 + features.in/hdt/stage1/scripts.d/02-hdt | 9 + features.in/hdt/stage1/scripts.d/10-hdt-img | 27 + features.in/homeros/README | 5 + features.in/homeros/config.mk | 7 + .../image-scripts.d/10-console-keyboard-ru | 8 + .../homeros/live/image-scripts.d/10-sudo | 4 + .../live/image-scripts.d/20-altlinux-user | 5 + .../homeros/live/image-scripts.d/30-autologin | 13 + features.in/im/README | 4 + features.in/im/config.mk | 6 + features.in/init/README | 11 + features.in/init/config.mk | 56 ++ .../init/live/image-scripts.d/50-var-run-fix | 9 + .../rescue/image-scripts.d/50-var-run-fix | 9 + .../init/rescue/image-scripts.d/65-os-release | 15 + .../rootfs/image-scripts.d/50-var-run-fix | 9 + .../init/rootfs/image-scripts.d/65-os-release | 15 + .../init/rootfs/image-scripts.d/90-systemd | 21 + .../init/stage2/image-scripts.d/91-systemd | 16 + features.in/initrd-bootchain/README | 14 + features.in/initrd-bootchain/config.mk | 23 + features.in/initrd-bootchain/generate.mk | 40 ++ .../initrd-bootchain/stage1/files/bootchain | 78 +++ .../scripts.d/80-make-initrd-for-bootchain | 85 +++ features.in/initrd-propagator/README | 3 + features.in/initrd-propagator/config.mk | 7 + .../stage1/scripts.d/01-initfs | 2 + .../stage1/scripts.d/11-initrd-propagator | 7 + .../scripts.d/80-make-initrd-for-propagator | 47 ++ .../stage1/scripts.d/81-make-initfs | 29 + .../stage1/scripts.d/90-build-propagator | 32 + features.in/install2/README | 20 + features.in/install2/config.mk | 190 ++++++ .../install2/image-scripts.d/10-bootloader | 5 + .../install2/image-scripts.d/20-vm-profile | 4 + .../image-scripts.d/90-install2-cleanup-bin | 8 + .../image-scripts.d/90-install2-cleanup-bloat | 42 ++ .../image-scripts.d/90-install2-cleanup-docs | 5 + .../90-install2-cleanup-drivers | 120 ++++ .../image-scripts.d/90-install2-cleanup-l10n | 35 ++ .../image-scripts.d/91-install2-cleanup | 8 + .../install2/image-scripts.d/98-system | 4 + .../install2/image-scripts.d/99-cleanupdb | 9 + features.in/install2/install2/stage2cfg.mk | 18 + features.in/isohybrid/README | 12 + features.in/isohybrid/config.mk | 4 + features.in/kernel/README | 7 + features.in/kernel/config.mk | 90 +++ features.in/kernel/lib/10-kernel.mk | 6 + .../kernel/stage1/scripts.d/50-disable-nvidia | 3 + features.in/l10n/README | 1 + features.in/l10n/config.mk | 37 ++ .../l10n/rootfs/image-scripts.d/50-l10n-kbd | 17 + .../l10n/rootfs/image-scripts.d/50-l10n-xkb | 19 + features.in/l10n/rootfs/lib/50-l10n.mk | 15 + features.in/l10n/stage1/modules.d/50-l10n | 6 + features.in/ldm/README | 9 + features.in/ldm/config.mk | 23 + features.in/ldm/rootfs/image-scripts.d/50-ldm | 17 + features.in/live/README | 21 + features.in/live/config.mk | 116 ++++ features.in/live/generate.mk | 37 ++ .../live/live/image-scripts.d/10-live-hooks | 5 + .../live/live/image-scripts.d/20-locale | 14 + features.in/live/live/image-scripts.d/60-apt | 10 + .../image-scripts.d/90-live-cleanup-drivers | 7 + features.in/live/live/image-scripts.d/99-urw | 4 + .../live/live/image-scripts.d/99-xfce-theme | 7 + features.in/live/live/stage2cfg.mk | 18 + features.in/live/stage1/files/index.html | 10 + features.in/lowmem/README | 2 + features.in/lowmem/config.mk | 4 + .../image-scripts.d/85-cleanup-lowmem | 38 ++ features.in/ltsp/README | 5 + features.in/ltsp/config.mk | 11 + features.in/luks/README | 2 + features.in/luks/config.mk | 8 + .../install2/image-scripts.d/50-check-luks | 9 + features.in/lxc-guest/README | 1 + features.in/lxc-guest/config.mk | 2 + .../98-add-lxc-system-generator | 225 +++++++ .../image-scripts.d/99-disable-fstab | 3 + features.in/lxc/README | 1 + features.in/lxc/config.mk | 12 + features.in/lxc/stage2/image-scripts.d/30-lxd | 30 + features.in/mediacheck/README | 6 + features.in/mediacheck/config.mk | 8 + features.in/mediacheck/lib/89-mediacheck.mk | 4 + .../image-scripts.d/98-init-mediacheck | 3 + .../mediacheck/image-scripts.d/99-cleanup-all | 11 + .../mediacheck/mediacheck/stage2cfg.mk | 8 + features.in/memclean/README | 2 + features.in/memclean/config.mk | 4 + features.in/memtest/README | 2 + features.in/memtest/config.mk | 10 + .../memtest/stage1/scripts.d/02-memtest | 7 + features.in/metadata/README | 10 + features.in/metadata/config.mk | 2 + features.in/metadata/lib/50-metadata.mk | 46 ++ features.in/mipsel-bfk3/README | 2 + features.in/mipsel-bfk3/config.mk | 13 + .../rootfs/image-scripts.d/15-fstab | 5 + .../rootfs/image-scripts.d/40-boot | 23 + features.in/mipsel-mitx/README | 2 + features.in/mipsel-mitx/config.mk | 7 + .../rootfs/image-scripts.d/15-fstab | 7 + .../rootfs/image-scripts.d/40-boot | 38 ++ .../rootfs/image-scripts.d/40-cpufreq-simple | 9 + features.in/net-dns/README | 9 + features.in/net-dns/config.mk | 22 + .../net-dns/rootfs/image-scripts.d/60-net-dns | 17 + features.in/net-eth/README | 10 + features.in/net-eth/config.mk | 28 + .../net-eth/rootfs/image-scripts.d/50-net-eth | 97 +++ features.in/net-ssh/README | 3 + features.in/net-ssh/config.mk | 4 + features.in/net-ssh/generate.mk | 13 + features.in/net-usershares/README | 5 + features.in/net-usershares/config.mk | 5 + .../image-scripts.d/85-samba-usershares.sh | 36 ++ features.in/net/README | 2 + features.in/net/config.mk | 54 ++ .../net/rootfs/image-scripts.d/50-net-nm | 17 + .../net/rootfs/image-scripts.d/50-net-resolv | 10 + .../image-scripts.d/99-systemd-resolved-link | 10 + features.in/net/stage1/modules.d/50-net | 6 + features.in/no-sleep/README | 3 + features.in/no-sleep/config.mk | 2 + .../image-scripts.d/50-no-sleep-systemd | 13 + features.in/ntp/README | 4 + features.in/ntp/config.mk | 17 + features.in/ntp/rootfs/image-scripts.d/50-ntp | 10 + features.in/oem/README | 20 + features.in/oem/config.mk | 34 ++ features.in/oem/lib/60-oem-install.mk | 4 + .../oem/rootfs/image-scripts.d/99-oem-setup | 31 + features.in/office/README | 6 + features.in/office/config.mk | 46 ++ features.in/pack/README | 6 + features.in/pack/config.mk | 55 ++ features.in/pid1/README | 15 + features.in/pid1/config.mk | 20 + .../pid1/stage1/scripts.d/11-initrd-pid1 | 4 + .../pid1/stage1/scripts.d/82-gzip-initfs | 3 + features.in/pkgpriorities/README | 28 + features.in/pkgpriorities/config.mk | 3 + .../main/lib/50-pkgpriorities.mk | 26 + .../rootfs/lib/50-pkgpriorities.mk | 26 + .../stage2/lib/50-pkgpriorities.mk | 26 + features.in/plymouth/README | 5 + features.in/plymouth/config.mk | 54 ++ .../rootfs/image-scripts.d/10-plymouth | 10 + .../stage1/scripts.d/11-initrd-plymouth | 7 + features.in/power/README | 3 + features.in/power/config.mk | 32 + .../power/rootfs/image-scripts.d/50-power | 6 + features.in/relname/README | 4 + features.in/relname/config.mk | 3 + .../relname/stage2/image-scripts.d/91-relname | 20 + features.in/repo/README | 8 + features.in/repo/config.mk | 15 + .../repo/image-scripts.d/90-enable-repo | 15 + features.in/repo/lib/50-genbasedir.mk | 2 + .../repo/live/image-scripts.d/80-repo-main | 10 + .../image-scripts.d/01-genbasedir-rootfs | 35 ++ .../image-scripts.d/80-repo-rootfs-main | 12 + features.in/repo/scripts.d/01-genbasedir | 35 ++ features.in/repo/scripts.d/02-pubring | 9 + features.in/rescue/README | 9 + features.in/rescue/config.mk | 33 ++ .../rescue/image-scripts.d/00-test-rescue | 14 + .../rescue/rescue/image-scripts.d/20-locale | 12 + .../rescue/rescue/image-scripts.d/50-openssh | 19 + .../rescue/rescue/image-scripts.d/60-apt | 5 + .../image-scripts.d/70-cleanup-locale.sh | 9 + .../rescue/image-scripts.d/98-init-rescue | 23 + features.in/rescue/rescue/stage2cfg.mk | 12 + features.in/robotics/README | 3 + features.in/robotics/config.mk | 9 + features.in/server/README | 2 + features.in/server/config.mk | 60 ++ features.in/services/README | 13 + features.in/services/config.mk | 13 + .../install2/image-scripts.d/10-services | 82 +++ .../rootfs/image-scripts.d/10-services | 40 ++ features.in/slinux/README | 1 + features.in/slinux/config.mk | 121 ++++ .../slinux/live/image-scripts.d/30-local-time | 5 + .../image-scripts.d/40-slinux-installer.sh | 7 + .../slinux/live/image-scripts.d/50-services | 21 + .../slinux/rootfs/image-scripts.d/60-no-bell | 17 + .../rootfs/image-scripts.d/90-sl-cleanup-pkgs | 8 + features.in/sound/README | 2 + features.in/sound/config.mk | 16 + features.in/speech/README | 2 + features.in/speech/config.mk | 9 + .../speech/live/image-scripts.d/10-amixer | 13 + .../speech/live/image-scripts.d/10-voiceman | 15 + features.in/stage2/README | 9 + features.in/stage2/config.mk | 57 ++ features.in/stage2/stage1/modules.d/10-stage2 | 208 +++++++ .../stage2/stage1/modules.d/50-stage2-ata | 21 + .../stage2/stage1/modules.d/50-stage2-drm | 1 + .../stage2/stage1/modules.d/50-stage2-fs | 10 + .../stage2/stage1/modules.d/50-stage2-hid | 1 + .../stage2/stage1/modules.d/50-stage2-md | 2 + .../stage2/stage1/modules.d/50-stage2-mmc | 7 + .../stage2/stage1/modules.d/50-stage2-net | 81 +++ .../stage1/modules.d/50-stage2-net-cifs | 2 + .../stage2/stage1/modules.d/50-stage2-net-nfs | 6 + .../stage2/stage1/modules.d/50-stage2-pcmcia | 6 + .../stage2/stage1/modules.d/50-stage2-rtc | 1 + .../stage1/modules.d/50-stage2-sbc-aarch64 | 9 + .../stage2/stage1/modules.d/50-stage2-scsi | 40 ++ .../stage2/stage1/modules.d/50-stage2-usb | 16 + .../stage2/stage1/modules.d/50-stage2-virtio | 2 + .../stage2/stage1/scripts.d/03-test-kernel | 58 ++ .../stage2/stage1/scripts.d/11-initrd-misc | 4 + .../stage2/stage1/scripts.d/20-initrd-cifs | 9 + .../stage2/stage1/scripts.d/95-copy-kernel | 43 ++ features.in/syslinux/README | 36 ++ features.in/syslinux/cfg.in/00defaults.cfg | 2 + features.in/syslinux/cfg.in/00ttyS0.cfg | 1 + features.in/syslinux/cfg.in/01gfxboot.cfg | 4 + features.in/syslinux/cfg.in/01menu.cfg | 4 + features.in/syslinux/cfg.in/01none.cfg | 2 + features.in/syslinux/cfg.in/01prompt.cfg | 3 + features.in/syslinux/cfg.in/01vesamenu.cfg | 4 + features.in/syslinux/cfg.in/02noescape.cfg | 2 + features.in/syslinux/cfg.in/10localboot.cfg | 4 + features.in/syslinux/cfg.in/10removable.cfg | 4 + features.in/syslinux/cfg.in/20install2.cfg | 7 + features.in/syslinux/cfg.in/20pid1.cfg | 4 + .../syslinux/cfg.in/21install2-failsafe.cfg | 5 + .../cfg.in/25grub-install-vnc-connect.cfg | 5 + .../cfg.in/25grub-install-vnc-listen.cfg | 5 + .../syslinux/cfg.in/25install-vnc-connect.cfg | 5 + .../syslinux/cfg.in/25install-vnc-listen.cfg | 5 + features.in/syslinux/cfg.in/30live.cfg | 5 + features.in/syslinux/cfg.in/32live_rw.cfg | 5 + features.in/syslinux/cfg.in/40lateboot.cfg | 4 + features.in/syslinux/cfg.in/80rescue.cfg | 5 + features.in/syslinux/cfg.in/82rescue_rw.cfg | 5 + features.in/syslinux/cfg.in/83rescue_fm.cfg | 5 + .../syslinux/cfg.in/84rescue_remote.cfg | 4 + features.in/syslinux/cfg.in/85dos.cfg | 5 + features.in/syslinux/cfg.in/85mediacheck.cfg | 5 + features.in/syslinux/cfg.in/90hdt.cfg | 9 + features.in/syslinux/cfg.in/90memtest.cfg | 4 + features.in/syslinux/cfg.in/95sdab.cfg | 8 + features.in/syslinux/cfg.in/Makefile | 3 + features.in/syslinux/cfg.in/README | 19 + features.in/syslinux/config.mk | 34 ++ features.in/syslinux/generate.mk | 127 ++++ .../scripts.d/20-propagator-ramdisk-syslinux | 20 + .../20-propagator-rescue-hash-syslinux | 20 + .../syslinux/stage1/scripts.d/01-syslinux | 63 ++ .../syslinux/stage1/scripts.d/02-gfxboot | 31 + features.in/tty/README | 5 + features.in/tty/config.mk | 17 + .../tty/rootfs/image-scripts.d/50-serial | 18 + features.in/uboot/README | 1 + features.in/uboot/config.mk | 31 + .../uboot/image-scripts.d/00-uboot-prepare | 23 + .../image-scripts.d/90-uboot-config-install | 18 + features.in/uuid-iso/README | 13 + features.in/uuid-iso/config.mk | 9 + .../uuid-iso/stage1/scripts.d/20-initrd-cdrom | 9 + .../stage1/scripts.d/40-propagator-fuid-file | 5 + features.in/vagrant/README | 11 + features.in/vagrant/config.mk | 6 + .../vagrant/rootfs/image-scripts.d/50-vagrant | 19 + features.in/vmguest/README | 2 + features.in/vmguest/config.mk | 46 ++ .../image-scripts.d/50-vmguest-noservices | 16 + .../vmguest/stage1/modules.d/50-vmguest | 6 + features.in/volumes/README | 2 + features.in/volumes/config.mk | 7 + features.in/wireless/README | 1 + features.in/wireless/config.mk | 8 + features.in/x11-autologin/README | 11 + features.in/x11-autologin/config.mk | 3 + .../rootfs/image-scripts.d/40-x11-autologin | 212 +++++++ features.in/x11-autostart/README | 5 + features.in/x11-autostart/config.mk | 3 + .../rootfs/image-scripts.d/40-x11-autostart | 19 + features.in/x11-vnc/README | 4 + features.in/x11-vnc/config.mk | 4 + .../x11-vnc/rootfs/image-scripts.d/51-x11-vnc | 35 ++ features.in/x11/README | 34 ++ features.in/x11/config.mk | 205 +++++++ features.in/xdg-user-dirs/README | 5 + features.in/xdg-user-dirs/config.mk | 10 + .../rootfs/image-scripts.d/35-xdg-user-dirs | 15 + image.in/.gitignore | 3 + image.in/Makefile | 125 ++++ image.in/README | 21 + image.in/files/.gitignore | 0 image.in/functions.mk | 55 ++ image.in/image-scripts.d/.gitignore | 0 image.in/image-scripts.d/01-rootdir | 6 + image.in/image-scripts.d/99-tcb-fix | 5 + image.in/lib/.gitignore | 0 image.in/scripts.d/.gitignore | 0 image.in/vars.mk | 22 + lib/README | 9 + lib/boot.mk | 24 + lib/build.mk | 119 ++++ lib/check.mk | 17 + lib/clean.mk | 73 +++ lib/common.mk | 23 + lib/distro.mk | 28 + lib/functions.mk | 64 ++ lib/help.mk | 26 + lib/log.mk | 41 ++ lib/profile.mk | 138 +++++ lib/report.mk | 9 + lib/sugar.mk | 22 + lib/ve.mk | 21 + lib/vm.mk | 30 + main.mk | 105 ++++ makeimg.sh | 3 + myp10 | 5 + pkg.in/Makefile | 13 + pkg.in/README | 5 + pkg.in/groups/Makefile | 51 ++ pkg.in/groups/README | 9 + .../groups/centaurus/10-alterator.directory | 7 + .../groups/centaurus/20-server-apps.directory | 7 + pkg.in/groups/centaurus/30-cups.directory | 8 + pkg.in/groups/centaurus/40-pve.directory | 8 + pkg.in/groups/centaurus/50-freeipa.directory | 9 + .../groups/centaurus/60-openstack.directory | 6 + pkg.in/groups/centaurus/70-dev.directory | 7 + pkg.in/groups/centaurus/80-desktop.directory | 7 + pkg.in/groups/centaurus/90-docs.directory | 10 + pkg.in/groups/centaurus/admc.directory | 9 + pkg.in/groups/centaurus/alterator.directory | 7 + .../centaurus/bacula-client-a.directory | 9 + .../groups/centaurus/bacula-client.directory | 9 + .../groups/centaurus/bacula-server.directory | 9 + pkg.in/groups/centaurus/bacula.directory | 9 + pkg.in/groups/centaurus/blogs.directory | 9 + pkg.in/groups/centaurus/buildsystem.directory | 8 + pkg.in/groups/centaurus/cups.directory | 8 + .../groups/centaurus/dhcp-server-a.directory | 10 + pkg.in/groups/centaurus/diag-tools.directory | 10 + .../groups/centaurus/dns-server-a.directory | 10 + pkg.in/groups/centaurus/dns-server.directory | 10 + pkg.in/groups/centaurus/docs.directory | 10 + .../groups/centaurus/domain-server.directory | 8 + pkg.in/groups/centaurus/emulators.directory | 9 + .../groups/centaurus/freeipa-client.directory | 11 + .../groups/centaurus/freeipa-server.directory | 12 + .../groups/centaurus/freenx-server.directory | 8 + .../groups/centaurus/ftp-server-a.directory | 10 + pkg.in/groups/centaurus/ganeti.directory | 9 + .../centaurus/gnome-peer-to-peer.directory | 9 + .../centaurus/graphics-editing.directory | 9 + .../groups/centaurus/gtk-dictionary.directory | 10 + pkg.in/groups/centaurus/http-server.directory | 10 + pkg.in/groups/centaurus/ipmi.directory | 10 + pkg.in/groups/centaurus/jitsi-meet.directory | 10 + pkg.in/groups/centaurus/kvm-server.directory | 10 + .../groups/centaurus/mail-server-a.directory | 10 + pkg.in/groups/centaurus/mate.directory | 10 + pkg.in/groups/centaurus/mediawiki.directory | 10 + pkg.in/groups/centaurus/monitoring.directory | 10 + .../groups/centaurus/mysql-server-a.directory | 10 + pkg.in/groups/centaurus/netinst.directory | 9 + pkg.in/groups/centaurus/nm-daemon.directory | 8 + pkg.in/groups/centaurus/office.directory | 8 + .../centaurus/openstack-block.directory | 9 + .../centaurus/openstack-compute.directory | 9 + .../centaurus/openstack-controller.directory | 9 + .../centaurus/openstack-network.directory | 9 + .../centaurus/openstack-storage.directory | 9 + .../groups/centaurus/openuds-tunnel.directory | 11 + pkg.in/groups/centaurus/openuds.directory | 11 + pkg.in/groups/centaurus/owncloud.directory | 10 + pkg.in/groups/centaurus/pidgin.directory | 8 + pkg.in/groups/centaurus/publishing.directory | 9 + pkg.in/groups/centaurus/remmina.directory | 8 + pkg.in/groups/centaurus/samba.directory | 10 + pkg.in/groups/centaurus/sambaDC.directory | 10 + pkg.in/groups/centaurus/scanning.directory | 9 + pkg.in/groups/centaurus/sogo.directory | 11 + .../groups/centaurus/sound-editing.directory | 9 + .../centaurus/systemd-networkd.directory | 8 + pkg.in/groups/centaurus/v12n-server.directory | 10 + .../groups/centaurus/virt-manager.directory | 8 + pkg.in/groups/centaurus/vlc.directory | 8 + pkg.in/groups/centaurus/xorg.directory | 8 + pkg.in/groups/dev/builder.directory | 9 + pkg.in/groups/education/00_base.directory | 7 + .../groups/education/01_preschool.directory | 7 + .../groups/education/02_gradeschool.directory | 7 + .../groups/education/03_highschool.directory | 7 + .../04_secondary_vocational.directory | 7 + .../groups/education/05_university.directory | 7 + pkg.in/groups/education/06_kde5.directory | 7 + pkg.in/groups/education/06_kdesc.directory | 7 + pkg.in/groups/education/07_teacher.directory | 7 + .../education/08_server-apps-edu.directory | 7 + .../education/09_video-conferencing.directory | 7 + pkg.in/groups/engineering/05-apps.directory | 6 + pkg.in/groups/engineering/2d-cad.directory | 10 + pkg.in/groups/engineering/3d-cad.directory | 10 + .../groups/engineering/3d-printer.directory | 10 + pkg.in/groups/engineering/apcs.directory | 10 + pkg.in/groups/engineering/cam.directory | 10 + pkg.in/groups/engineering/cnc.directory | 10 + pkg.in/groups/engineering/eda.directory | 10 + pkg.in/groups/engineering/misc.directory | 10 + .../kworkstation/additional-oem.directory | 11 + .../groups/kworkstation/clients-ad.directory | 11 + .../kworkstation/clients-backup.directory | 11 + .../kworkstation/clients-cloud.directory | 11 + .../groups/kworkstation/clients-ipa.directory | 11 + .../kworkstation/clients-monitor.directory | 11 + pkg.in/groups/kworkstation/edu.directory | 10 + .../groups/kworkstation/emulators.directory | 11 + pkg.in/groups/kworkstation/games.directory | 10 + .../kworkstation/graphics-editing.directory | 10 + pkg.in/groups/kworkstation/kde5.directory | 10 + pkg.in/groups/kworkstation/printing.directory | 10 + .../groups/kworkstation/publishing.directory | 10 + .../kworkstation/remote-desktop.directory | 10 + pkg.in/groups/kworkstation/scanning.directory | 10 + .../kworkstation/sound-editing.directory | 10 + .../kworkstation/video-editing.directory | 10 + .../kworkstation/z01-add-clients.directory | 10 + .../kworkstation/z02-add-additional.directory | 10 + .../groups/server-v/110-opennebula.directory | 9 + .../groups/server-v/120-openstack.directory | 9 + pkg.in/groups/server-v/130-pve.directory | 9 + pkg.in/groups/server-v/140-basic.directory | 8 + pkg.in/groups/server-v/141-cockpit.directory | 9 + .../groups/server-v/200-container.directory | 8 + pkg.in/groups/server-v/300-cluster.directory | 8 + pkg.in/groups/server-v/400-storage.directory | 8 + pkg.in/groups/server-v/410-ceph.directory | 9 + .../groups/server-v/420-glusterfs.directory | 9 + pkg.in/groups/server-v/430-lizardfs.directory | 9 + pkg.in/groups/server-v/430-moosefs.directory | 9 + pkg.in/groups/server-v/450-nfs.directory | 9 + pkg.in/groups/server-v/460-iscsi.directory | 9 + pkg.in/groups/server-v/470-linstor.directory | 9 + pkg.in/groups/server-v/500-network.directory | 8 + .../groups/server-v/600-monitoring.directory | 8 + pkg.in/groups/server-v/700-backup.directory | 8 + pkg.in/groups/server-v/800-logging.directory | 8 + pkg.in/groups/server-v/apache2.directory | 9 + pkg.in/groups/server-v/bacula.directory | 8 + pkg.in/groups/server-v/bird.directory | 10 + pkg.in/groups/server-v/borg.directory | 8 + pkg.in/groups/server-v/burp.directory | 8 + pkg.in/groups/server-v/ceph/client.directory | 8 + pkg.in/groups/server-v/ceph/mgr.directory | 8 + pkg.in/groups/server-v/ceph/mon.directory | 8 + pkg.in/groups/server-v/ceph/osd.directory | 8 + pkg.in/groups/server-v/ceph/radosgw.directory | 8 + .../groups/server-v/cockpit/docker.directory | 10 + pkg.in/groups/server-v/cockpit/kvm.directory | 9 + pkg.in/groups/server-v/cockpit/web.directory | 8 + pkg.in/groups/server-v/collectd.directory | 9 + .../server-v/corosync_pacemaker.directory | 8 + pkg.in/groups/server-v/dhcp.directory | 8 + pkg.in/groups/server-v/dns.directory | 10 + pkg.in/groups/server-v/docker.directory | 8 + .../groups/server-v/freeipa-client.directory | 8 + .../server-v/glusterfs/client.directory | 8 + .../server-v/glusterfs/server.directory | 8 + pkg.in/groups/server-v/grafana.directory | 8 + pkg.in/groups/server-v/haproxy.directory | 8 + pkg.in/groups/server-v/influxdb.directory | 8 + .../groups/server-v/iscsi/initiator.directory | 8 + .../server-v/iscsi/scsitarget.directory | 8 + .../groups/server-v/iscsi/targetcli.directory | 9 + pkg.in/groups/server-v/keepalived.directory | 10 + .../server-v/kubernetes-master.directory | 9 + .../groups/server-v/kubernetes-node.directory | 9 + pkg.in/groups/server-v/kvm.directory | 8 + .../groups/server-v/linstor/client.directory | 10 + .../server-v/linstor/controller.directory | 10 + .../linstor/opennebula-addon.directory | 11 + .../server-v/linstor/pve-storage.directory | 11 + .../server-v/linstor/satellite.directory | 10 + .../server-v/lizardfs/cgiserv.directory | 8 + .../server-v/lizardfs/chunkserver.directory | 10 + .../groups/server-v/lizardfs/client.directory | 8 + .../groups/server-v/lizardfs/master.directory | 10 + .../server-v/lizardfs/metalogger.directory | 11 + pkg.in/groups/server-v/lxd.directory | 8 + pkg.in/groups/server-v/monit.directory | 9 + .../groups/server-v/moosefs/cgiserv.directory | 8 + .../server-v/moosefs/chunkserver.directory | 10 + .../groups/server-v/moosefs/client.directory | 8 + .../groups/server-v/moosefs/master.directory | 10 + .../server-v/moosefs/metalogger.directory | 11 + pkg.in/groups/server-v/nagios-nrpe.directory | 10 + pkg.in/groups/server-v/nfs-ganesha.directory | 8 + pkg.in/groups/server-v/nfs.directory | 8 + pkg.in/groups/server-v/nginx.directory | 10 + pkg.in/groups/server-v/ocfs2.directory | 8 + .../groups/server-v/opennebula/flow.directory | 8 + .../groups/server-v/opennebula/gate.directory | 8 + .../groups/server-v/opennebula/gui.directory | 8 + .../server-v/opennebula/node-kvm.directory | 10 + .../server-v/opennebula/node-lxd.directory | 9 + .../server-v/opennebula/server.directory | 8 + .../groups/server-v/openstack/block.directory | 8 + .../server-v/openstack/compute.directory | 10 + .../server-v/openstack/controller.directory | 8 + .../server-v/openstack/network.directory | 8 + .../server-v/openstack/storage.directory | 8 + pkg.in/groups/server-v/openvswitch.directory | 8 + pkg.in/groups/server-v/openvz.directory | 8 + pkg.in/groups/server-v/podman.directory | 8 + .../prometheus-node_exporter.directory | 8 + pkg.in/groups/server-v/prometheus.directory | 8 + pkg.in/groups/server-v/pve.directory | 10 + pkg.in/groups/server-v/restic.directory | 8 + pkg.in/groups/server-v/rkt.directory | 8 + .../groups/server-v/rsyslog-classic.directory | 10 + .../server-v/systemd-journal-remote.directory | 10 + pkg.in/groups/server-v/telegraf.directory | 9 + .../groups/server-v/urbackup-client.directory | 8 + pkg.in/groups/server-v/zabbix-agent.directory | 9 + pkg.in/groups/server-v/zabbix.directory | 8 + pkg.in/groups/server/apache2.directory | 10 + pkg.in/groups/server/dhcp.directory | 9 + pkg.in/groups/server/dns.directory | 9 + pkg.in/groups/server/ftp.directory | 9 + pkg.in/groups/server/kvm.directory | 9 + pkg.in/groups/server/mail.directory | 9 + pkg.in/groups/server/mariadb.directory | 10 + pkg.in/groups/server/mysql.directory | 10 + pkg.in/groups/server/nginx.directory | 10 + pkg.in/groups/server/pgsql-1C.directory | 9 + pkg.in/groups/server/pgsql.directory | 9 + pkg.in/groups/server/php7.directory | 10 + pkg.in/groups/server/rsync.directory | 9 + pkg.in/groups/server/sambaDC.directory | 9 + pkg.in/groups/server/sqlite.directory | 9 + pkg.in/groups/slinux/dropbox.directory | 7 + pkg.in/groups/slinux/emulators-full.directory | 8 + pkg.in/groups/slinux/games-base.directory | 9 + .../groups/slinux/games-full-steam.directory | 10 + pkg.in/groups/slinux/games-full.directory | 9 + pkg.in/groups/slinux/games.directory | 7 + pkg.in/groups/slinux/graphics-base.directory | 10 + .../slinux/graphics-full-inkscape.directory | 10 + .../slinux/graphics-full-shotwell.directory | 10 + pkg.in/groups/slinux/graphics.directory | 9 + .../groups/slinux/multimedia-base.directory | 10 + .../slinux/multimedia-full-audacity.directory | 10 + .../slinux/multimedia-full-cheese.directory | 10 + .../multimedia-full-obs-studio.directory | 10 + .../slinux/multimedia-full-shotcut.directory | 10 + .../multimedia-full-sound-juicer.directory | 10 + pkg.in/groups/slinux/multimedia.directory | 9 + pkg.in/groups/slinux/net-base.directory | 10 + pkg.in/groups/tools/diag.directory | 9 + pkg.in/groups/tools/hyperv.directory | 8 + pkg.in/groups/tools/ipmi.directory | 9 + pkg.in/groups/tools/monitoring.directory | 9 + pkg.in/groups/tools/tuning.directory | 8 + pkg.in/groups/tools/vzstats.directory | 9 + pkg.in/groups/workstation/10-office.directory | 8 + .../workstation/20-networking.directory | 8 + .../workstation/30-multimedia.directory | 8 + pkg.in/groups/workstation/3rdparty.directory | 9 + .../workstation/40-virtualization.directory | 8 + .../workstation/50-publishing.directory | 8 + pkg.in/groups/workstation/admc.directory | 8 + pkg.in/groups/workstation/agents.directory | 9 + .../workstation/alterator-web.directory | 11 + pkg.in/groups/workstation/blender.directory | 8 + pkg.in/groups/workstation/celluloid.directory | 8 + pkg.in/groups/workstation/clamav.directory | 9 + .../groups/workstation/claws-mail.directory | 8 + .../workstation/cloud-clients.directory | 9 + pkg.in/groups/workstation/emulators.directory | 11 + pkg.in/groups/workstation/freecad.directory | 8 + .../workstation/freeipa-client.directory | 9 + .../groups/workstation/ganttproject.directory | 8 + .../workstation/gnome-peer-to-peer.directory | 9 + .../workstation/graphics-editing.directory | 9 + .../workstation/gtk-dictionary.directory | 10 + pkg.in/groups/workstation/kvm.directory | 8 + .../groups/workstation/libreoffice.directory | 9 + .../workstation/mate-usershare.directory | 11 + pkg.in/groups/workstation/pidgin.directory | 9 + pkg.in/groups/workstation/qgis.directory | 7 + pkg.in/groups/workstation/raccess.directory | 8 + .../groups/workstation/runa-client.directory | 7 + pkg.in/groups/workstation/scanning.directory | 9 + pkg.in/groups/workstation/scribus.directory | 9 + pkg.in/groups/workstation/smartcard.directory | 9 + .../workstation/sound-editing.directory | 9 + .../groups/workstation/thunderbird.directory | 8 + .../groups/workstation/virtualbox.directory | 8 + pkg.in/groups/workstation/vlc.directory | 8 + .../groups/workstation/voip-clients.directory | 9 + pkg.in/groups/x-e2k/90-e801.directory | 8 + pkg.in/groups/x-e2k/90-e901.directory | 8 + pkg.in/groups/x-e2k/91-e101.directory | 8 + pkg.in/groups/x-e2k/e101-mga2.directory | 11 + .../groups/x-e2k/e101-modesetting.directory | 11 + pkg.in/groups/x-e2k/e801-1seat.directory | 13 + pkg.in/groups/x-e2k/e801-2seat.directory | 13 + pkg.in/groups/x-e2k/e801-3seat.directory | 13 + pkg.in/groups/x-e2k/e801-6seat.directory | 13 + pkg.in/groups/x-e2k/e901-1seat.directory | 13 + pkg.in/groups/x-e2k/e901-2seat.directory | 13 + pkg.in/groups/x-e2k/e901-3seat.directory | 13 + pkg.in/groups/x-e2k/x-autologin.directory | 10 + pkg.in/lists/.base | 1 + pkg.in/lists/Makefile | 105 ++++ pkg.in/lists/README | 24 + pkg.in/lists/base | 1 + pkg.in/lists/centaurus/10-alterator | 75 +++ pkg.in/lists/centaurus/30-cups | 5 + pkg.in/lists/centaurus/40-pve | 14 + pkg.in/lists/centaurus/70-dev | 4 + pkg.in/lists/centaurus/90-docs | 2 + pkg.in/lists/centaurus/admc | 8 + pkg.in/lists/centaurus/backup-server | 2 + pkg.in/lists/centaurus/bacula-a | 1 + pkg.in/lists/centaurus/bacula-client | 1 + pkg.in/lists/centaurus/bacula-client-a | 2 + pkg.in/lists/centaurus/base | 12 + pkg.in/lists/centaurus/base-server | 112 ++++ pkg.in/lists/centaurus/blogs | 2 + pkg.in/lists/centaurus/buildsystem | 13 + pkg.in/lists/centaurus/cluster | 83 +++ pkg.in/lists/centaurus/cppcheck | 2 + pkg.in/lists/centaurus/cups | 5 + pkg.in/lists/centaurus/dhcp-server-a | 1 + pkg.in/lists/centaurus/diag-tools | 10 + pkg.in/lists/centaurus/disk | 3 + pkg.in/lists/centaurus/disk-dvd | 97 +++ pkg.in/lists/centaurus/disk-server-light | 196 ++++++ pkg.in/lists/centaurus/dns-server-a | 3 + pkg.in/lists/centaurus/domain-client | 24 + pkg.in/lists/centaurus/domain-server | 17 + pkg.in/lists/centaurus/emulators | 21 + pkg.in/lists/centaurus/freeipa-client | 7 + pkg.in/lists/centaurus/freeipa-server | 5 + pkg.in/lists/centaurus/freenx-server | 1 + pkg.in/lists/centaurus/ftp-server-a | 2 + pkg.in/lists/centaurus/ganeti | 1 + pkg.in/lists/centaurus/gnome-office | 8 + pkg.in/lists/centaurus/gnome-peer-to-peer | 4 + pkg.in/lists/centaurus/graphics-editing | 2 + pkg.in/lists/centaurus/gtk-dictionary | 10 + pkg.in/lists/centaurus/ipmi | 4 + pkg.in/lists/centaurus/live | 10 + pkg.in/lists/centaurus/mail-server-a | 1 + pkg.in/lists/centaurus/mate | 207 +++++++ pkg.in/lists/centaurus/mediawiki | 5 + pkg.in/lists/centaurus/monitoring | 16 + pkg.in/lists/centaurus/netinst | 4 + pkg.in/lists/centaurus/nm | 9 + pkg.in/lists/centaurus/nm-daemon | 1 + pkg.in/lists/centaurus/openstack-block | 6 + pkg.in/lists/centaurus/openstack-compute | 4 + pkg.in/lists/centaurus/openstack-controller | 37 ++ pkg.in/lists/centaurus/openstack-network | 7 + pkg.in/lists/centaurus/openstack-storage | 7 + pkg.in/lists/centaurus/openuds | 1 + pkg.in/lists/centaurus/openuds-tunnel | 1 + pkg.in/lists/centaurus/owncloud | 5 + pkg.in/lists/centaurus/pidgin | 1 + pkg.in/lists/centaurus/publishing | 1 + pkg.in/lists/centaurus/remmina | 2 + pkg.in/lists/centaurus/samba | 3 + pkg.in/lists/centaurus/sambaDC | 12 + pkg.in/lists/centaurus/scanning | 7 + pkg.in/lists/centaurus/sogo | 1 + pkg.in/lists/centaurus/sound-editing | 2 + pkg.in/lists/centaurus/systemd-networkd | 1 + pkg.in/lists/centaurus/v12n-server | 7 + pkg.in/lists/centaurus/virt-manager | 5 + pkg.in/lists/centaurus/vlc | 1 + pkg.in/lists/centaurus/xorg | 61 ++ pkg.in/lists/centaurus/zero | 0 pkg.in/lists/cluster/corosync_pacemaker | 2 + pkg.in/lists/container/docker | 2 + pkg.in/lists/container/kubernetes-master | 3 + pkg.in/lists/container/kubernetes-node | 3 + pkg.in/lists/container/lxd | 8 + pkg.in/lists/container/openvz | 5 + pkg.in/lists/container/podman | 3 + pkg.in/lists/container/rkt | 2 + pkg.in/lists/dev/builder | 12 + pkg.in/lists/domain-client | 21 + pkg.in/lists/domain-client-i | 5 + pkg.in/lists/education/base | 17 + pkg.in/lists/education/gradeschool | 1 + pkg.in/lists/education/highschool | 1 + pkg.in/lists/education/kde5 | 1 + pkg.in/lists/education/kdesc | 24 + pkg.in/lists/education/misc | 309 ++++++++++ pkg.in/lists/education/preschool | 1 + pkg.in/lists/education/secondary_vocational | 1 + pkg.in/lists/education/server-apps-edu | 13 + pkg.in/lists/education/teacher | 1 + pkg.in/lists/education/university | 1 + pkg.in/lists/education/video-conferencing | 1 + pkg.in/lists/engineering/2d-cad | 2 + pkg.in/lists/engineering/3d-cad | 2 + pkg.in/lists/engineering/3d-printer | 2 + pkg.in/lists/engineering/apcs | 2 + pkg.in/lists/engineering/cam | 3 + pkg.in/lists/engineering/cnc | 2 + pkg.in/lists/engineering/eda | 2 + pkg.in/lists/engineering/misc | 1 + pkg.in/lists/gnome-p2p | 2 + pkg.in/lists/grub | 6 + pkg.in/lists/homeros/homeros | 2 + pkg.in/lists/homeros/tools | 6 + pkg.in/lists/homeros/yasr | 1 + pkg.in/lists/jitsi-meet | 6 + pkg.in/lists/kworkstation/additional-base | 0 pkg.in/lists/kworkstation/additional-oem | 1 + pkg.in/lists/kworkstation/clients-ad | 8 + pkg.in/lists/kworkstation/clients-backup | 3 + pkg.in/lists/kworkstation/clients-base | 0 pkg.in/lists/kworkstation/clients-cloud | 2 + pkg.in/lists/kworkstation/clients-ipa | 9 + pkg.in/lists/kworkstation/clients-monitor | 2 + pkg.in/lists/kworkstation/disk-install | 39 ++ pkg.in/lists/kworkstation/edu | 7 + pkg.in/lists/kworkstation/emulators | 12 + pkg.in/lists/kworkstation/games | 19 + pkg.in/lists/kworkstation/graphics-editing | 19 + pkg.in/lists/kworkstation/kde5 | 82 +++ pkg.in/lists/kworkstation/kde5-base | 132 +++++ pkg.in/lists/kworkstation/live-rescue | 20 + pkg.in/lists/kworkstation/printing | 15 + pkg.in/lists/kworkstation/publishing | 2 + pkg.in/lists/kworkstation/remote-desktop | 4 + pkg.in/lists/kworkstation/scanning | 9 + pkg.in/lists/kworkstation/sound-editing | 5 + pkg.in/lists/kworkstation/video-editing | 4 + pkg.in/lists/lilo | 2 + pkg.in/lists/logging/rsyslog | 1 + pkg.in/lists/logging/rsyslog-classic | 1 + pkg.in/lists/logging/rsyslog-elasticsearch | 1 + pkg.in/lists/logging/rsyslog-mysql | 1 + pkg.in/lists/logging/rsyslog-pgsql | 1 + pkg.in/lists/logging/systemd-journal-remote | 1 + pkg.in/lists/ltsp | 29 + pkg.in/lists/ltsp-client | 9 + pkg.in/lists/monitoring/collectd | 2 + pkg.in/lists/monitoring/grafana | 1 + pkg.in/lists/monitoring/influxdb | 1 + pkg.in/lists/monitoring/monit | 2 + pkg.in/lists/monitoring/nagios-nrpe | 1 + pkg.in/lists/monitoring/prometheus | 2 + .../lists/monitoring/prometheus-node_exporter | 4 + pkg.in/lists/monitoring/telegraf | 1 + pkg.in/lists/monitoring/zabbix-agent | 3 + pkg.in/lists/network/apache2 | 7 + pkg.in/lists/network/bird | 2 + pkg.in/lists/network/dhcp | 1 + pkg.in/lists/network/dns | 3 + pkg.in/lists/network/haproxy | 1 + pkg.in/lists/network/keepalived | 1 + pkg.in/lists/network/nginx | 4 + pkg.in/lists/network/openvswitch | 1 + pkg.in/lists/opencl | 4 + pkg.in/lists/openscada | 2 + pkg.in/lists/openssh | 5 + pkg.in/lists/osec | 3 + pkg.in/lists/realtime/tests | 4 + pkg.in/lists/remote-access | 6 + pkg.in/lists/robotics/reprap | 11 + pkg.in/lists/robotics/umki | 6 + pkg.in/lists/server-base | 7 + pkg.in/lists/server/apache2 | 2 + pkg.in/lists/server/dhcp | 1 + pkg.in/lists/server/dns | 3 + pkg.in/lists/server/ftp | 2 + pkg.in/lists/server/kvm | 2 + pkg.in/lists/server/mail | 3 + pkg.in/lists/server/mariadb | 6 + pkg.in/lists/server/mysql | 5 + pkg.in/lists/server/nginx | 2 + pkg.in/lists/server/pgsql | 2 + pkg.in/lists/server/pgsql-1C | 1 + pkg.in/lists/server/php7 | 24 + pkg.in/lists/server/rsync | 2 + pkg.in/lists/server/sambaDC | 5 + pkg.in/lists/server/sqlite | 1 + pkg.in/lists/singleboard-tools | 2 + pkg.in/lists/slinux/browser-chromium | 1 + pkg.in/lists/slinux/browser-firefox | 7 + pkg.in/lists/slinux/dropbox | 3 + pkg.in/lists/slinux/emulators-full | 16 + pkg.in/lists/slinux/games | 0 pkg.in/lists/slinux/games-base | 20 + pkg.in/lists/slinux/games-full | 16 + pkg.in/lists/slinux/games-full-steam | 2 + pkg.in/lists/slinux/graphics | 0 pkg.in/lists/slinux/graphics-base | 17 + pkg.in/lists/slinux/graphics-full-inkscape | 1 + pkg.in/lists/slinux/graphics-full-shotwell | 1 + pkg.in/lists/slinux/live | 21 + pkg.in/lists/slinux/live-install | 1 + pkg.in/lists/slinux/misc-base | 204 +++++++ pkg.in/lists/slinux/misc-full | 66 +++ pkg.in/lists/slinux/multimedia | 0 pkg.in/lists/slinux/multimedia-base | 5 + pkg.in/lists/slinux/multimedia-full-audacity | 1 + pkg.in/lists/slinux/multimedia-full-cheese | 1 + .../lists/slinux/multimedia-full-obs-studio | 1 + pkg.in/lists/slinux/multimedia-full-shotcut | 1 + .../lists/slinux/multimedia-full-sound-juicer | 1 + .../lists/slinux/multimedia-player-celluloid | 2 + pkg.in/lists/slinux/multimedia-player-vlc | 1 + pkg.in/lists/slinux/net-base | 9 + pkg.in/lists/slinux/not-install-full | 21 + pkg.in/lists/slinux/xfce-base | 63 ++ pkg.in/lists/sound/alsa | 1 + pkg.in/lists/sound/base | 6 + pkg.in/lists/sound/pulseaudio | 3 + pkg.in/lists/speech/emacspeak | 4 + pkg.in/lists/speech/en | 1 + pkg.in/lists/speech/ru | 2 + pkg.in/lists/speech/voiceman | 3 + pkg.in/lists/storage/bacula | 4 + pkg.in/lists/storage/borg | 1 + pkg.in/lists/storage/burp | 1 + pkg.in/lists/storage/ceph-client | 2 + pkg.in/lists/storage/ceph-mgr | 7 + pkg.in/lists/storage/ceph-mon | 1 + pkg.in/lists/storage/ceph-osd | 1 + pkg.in/lists/storage/ceph-radosgw | 1 + pkg.in/lists/storage/glusterfs-client | 1 + pkg.in/lists/storage/glusterfs-server | 1 + pkg.in/lists/storage/linstor-client | 1 + pkg.in/lists/storage/linstor-controller | 1 + pkg.in/lists/storage/linstor-opennebula | 1 + pkg.in/lists/storage/linstor-pve | 1 + pkg.in/lists/storage/linstor-satellite | 2 + pkg.in/lists/storage/lizardfs-cgiserv | 3 + pkg.in/lists/storage/lizardfs-chunkserver | 1 + pkg.in/lists/storage/lizardfs-client | 1 + pkg.in/lists/storage/lizardfs-master | 2 + pkg.in/lists/storage/lizardfs-metalogger | 1 + pkg.in/lists/storage/moosefs-cgiserv | 3 + pkg.in/lists/storage/moosefs-chunkserver | 1 + pkg.in/lists/storage/moosefs-client | 1 + pkg.in/lists/storage/moosefs-master | 1 + pkg.in/lists/storage/moosefs-metalogger | 1 + pkg.in/lists/storage/nfs-ganesha-server | 3 + pkg.in/lists/storage/nfs-server | 1 + pkg.in/lists/storage/ocfs2 | 1 + pkg.in/lists/storage/open-iscsi | 1 + pkg.in/lists/storage/restic | 1 + pkg.in/lists/storage/scsitarget | 3 + pkg.in/lists/storage/targetcli | 1 + pkg.in/lists/storage/urbackup-client | 1 + pkg.in/lists/storage/urbackup-server | 1 + pkg.in/lists/storage/zfs | 4 + pkg.in/lists/systemd | 6 + pkg.in/lists/sysvinit | 4 + pkg.in/lists/tagged/README | 15 + pkg.in/lists/tagged/archive+base | 6 + pkg.in/lists/tagged/archive+extra | 33 ++ pkg.in/lists/tagged/base+bench | 31 + pkg.in/lists/tagged/base+builder | 3 + pkg.in/lists/tagged/base+clamav | 2 + pkg.in/lists/tagged/base+comm | 3 + pkg.in/lists/tagged/base+desktop+live | 10 + pkg.in/lists/tagged/base+efi | 6 + pkg.in/lists/tagged/base+extra | 30 + pkg.in/lists/tagged/base+firmware+wireless | 7 + pkg.in/lists/tagged/base+l10n | 2 + pkg.in/lists/tagged/base+network | 3 + pkg.in/lists/tagged/base+nm | 9 + pkg.in/lists/tagged/base+openvz | 4 + pkg.in/lists/tagged/base+pkg | 2 + pkg.in/lists/tagged/base+regular | 45 ++ pkg.in/lists/tagged/base+regular+extra | 5 + pkg.in/lists/tagged/base+rescue | 39 ++ pkg.in/lists/tagged/base+security | 4 + pkg.in/lists/tagged/base+smartcard | 16 + pkg.in/lists/tagged/base+tablet | 35 ++ pkg.in/lists/tagged/base+xorg | 15 + pkg.in/lists/tagged/base+xscreensaver | 3 + pkg.in/lists/tagged/basesystem | 2 + pkg.in/lists/tagged/basesystem+alterator | 3 + pkg.in/lists/tagged/bench+hpc | 2 + pkg.in/lists/tagged/bench+x11 | 10 + pkg.in/lists/tagged/builder+extra | 20 + pkg.in/lists/tagged/desktop+cinnamon | 4 + pkg.in/lists/tagged/desktop+cinnamon+extra | 1 + pkg.in/lists/tagged/desktop+clamav | 1 + pkg.in/lists/tagged/desktop+cups | 18 + pkg.in/lists/tagged/desktop+deepin | 8 + pkg.in/lists/tagged/desktop+dwm | 3 + pkg.in/lists/tagged/desktop+enlightenment | 7 + .../lists/tagged/desktop+enlightenment+extra | 2 + pkg.in/lists/tagged/desktop+fvwm | 6 + pkg.in/lists/tagged/desktop+gnustep | 127 ++++ pkg.in/lists/tagged/desktop+gvfs | 4 + pkg.in/lists/tagged/desktop+ibus | 11 + pkg.in/lists/tagged/desktop+icewm | 2 + pkg.in/lists/tagged/desktop+live | 9 + pkg.in/lists/tagged/desktop+lxde | 3 + pkg.in/lists/tagged/desktop+lxde+extra | 28 + pkg.in/lists/tagged/desktop+lxqt | 23 + pkg.in/lists/tagged/desktop+lxqt+extra | 29 + pkg.in/lists/tagged/desktop+mate | 80 +++ pkg.in/lists/tagged/desktop+nm | 7 + pkg.in/lists/tagged/desktop+office | 8 + pkg.in/lists/tagged/desktop+regular | 80 +++ pkg.in/lists/tagged/desktop+sane | 6 + pkg.in/lists/tagged/desktop+smartcard | 1 + pkg.in/lists/tagged/desktop+wmaker | 11 + pkg.in/lists/tagged/desktop+wmaker+extra | 42 ++ pkg.in/lists/tagged/desktop+xfce+extra | 2 + pkg.in/lists/tagged/desktop+xorg | 10 + pkg.in/lists/tagged/desktop+xscreensaver | 3 + pkg.in/lists/tagged/dev+gnustep | 14 + pkg.in/lists/tagged/dev+security | 3 + pkg.in/lists/tagged/live+builder | 3 + pkg.in/lists/tagged/main+builder | 9 + pkg.in/lists/tagged/mobile+mate | 11 + pkg.in/lists/tagged/network+bench | 1 + pkg.in/lists/tagged/network+extra | 4 + pkg.in/lists/tagged/network+security | 3 + pkg.in/lists/tagged/pkg+extra | 1 + pkg.in/lists/tagged/regular+icewm | 27 + pkg.in/lists/tagged/regular+server | 7 + pkg.in/lists/tagged/regular+tde | 8 + pkg.in/lists/tagged/rescue+backup | 1 + pkg.in/lists/tagged/rescue+crypto | 6 + pkg.in/lists/tagged/rescue+extra | 220 +++++++ pkg.in/lists/tagged/rescue+fs | 8 + pkg.in/lists/tagged/rescue+live | 3 + pkg.in/lists/tagged/rescue+misc | 66 +++ pkg.in/lists/tagged/rescue+x11 | 12 + pkg.in/lists/tagged/rescue+x11+extra | 4 + pkg.in/lists/tagged/security+extra | 17 + pkg.in/lists/tagged/security+luks | 2 + pkg.in/lists/tagged/server+alterator | 14 + pkg.in/lists/tagged/server+extra | 13 + pkg.in/lists/tagged/server+network | 19 + pkg.in/lists/tagged/server+openvpn | 11 + pkg.in/lists/tagged/server+openvz | 5 + pkg.in/lists/tagged/server+sambaDC | 3 + pkg.in/lists/tagged/server+zabbix | 16 + pkg.in/lists/tagged/ve+tools | 5 + pkg.in/lists/tagged/xorg+misc | 1 + pkg.in/lists/tagged/xorg+vaapi | 5 + pkg.in/lists/tools/diag | 11 + pkg.in/lists/tools/hyperv | 2 + pkg.in/lists/tools/ipmi | 4 + pkg.in/lists/tools/monitoring | 20 + pkg.in/lists/tools/tuning | 2 + pkg.in/lists/tools/vzstats | 1 + pkg.in/lists/tools/wireless | 5 + pkg.in/lists/uboot | 8 + pkg.in/lists/virt/base.pkgs | 61 ++ pkg.in/lists/virt/cockpit/docker | 1 + pkg.in/lists/virt/cockpit/machines | 1 + pkg.in/lists/virt/cockpit/web | 2 + pkg.in/lists/virt/extra.pkgs | 28 + pkg.in/lists/virt/kvm | 6 + pkg.in/lists/virt/opennebula/flow | 1 + pkg.in/lists/virt/opennebula/gate | 1 + pkg.in/lists/virt/opennebula/gui | 2 + pkg.in/lists/virt/opennebula/node-kvm | 1 + pkg.in/lists/virt/opennebula/node-lxd | 1 + pkg.in/lists/virt/opennebula/server | 2 + pkg.in/lists/virt/openstack/block | 3 + pkg.in/lists/virt/openstack/compute | 4 + pkg.in/lists/virt/openstack/controller | 20 + pkg.in/lists/virt/openstack/network | 8 + pkg.in/lists/virt/openstack/storage | 4 + pkg.in/lists/virt/pve | 8 + pkg.in/lists/workstation/3rdparty | 9 + pkg.in/lists/workstation/admc | 8 + pkg.in/lists/workstation/agents | 8 + pkg.in/lists/workstation/alterator-web | 1 + pkg.in/lists/workstation/base.pkgs | 2 + pkg.in/lists/workstation/blender | 1 + pkg.in/lists/workstation/celluloid | 2 + pkg.in/lists/workstation/clamav | 2 + pkg.in/lists/workstation/claws-mail | 11 + pkg.in/lists/workstation/cloud-clients | 2 + pkg.in/lists/workstation/emulators | 14 + pkg.in/lists/workstation/extras | 34 ++ pkg.in/lists/workstation/freecad | 2 + pkg.in/lists/workstation/freeipa-client | 2 + pkg.in/lists/workstation/ganttproject | 2 + pkg.in/lists/workstation/gnome-peer-to-peer | 2 + pkg.in/lists/workstation/graphics-editing | 10 + pkg.in/lists/workstation/gtk-dictionary | 4 + pkg.in/lists/workstation/kvm | 4 + pkg.in/lists/workstation/libreoffice | 16 + pkg.in/lists/workstation/libreoffice-latest | 12 + pkg.in/lists/workstation/live.pkgs | 4 + pkg.in/lists/workstation/mate | 77 +++ pkg.in/lists/workstation/mate-usershare | 3 + pkg.in/lists/workstation/pidgin | 2 + pkg.in/lists/workstation/qgis | 3 + pkg.in/lists/workstation/raccess | 6 + pkg.in/lists/workstation/runa-client | 8 + pkg.in/lists/workstation/scanning | 7 + pkg.in/lists/workstation/scribus | 1 + pkg.in/lists/workstation/smartcard | 18 + pkg.in/lists/workstation/sound-editing | 1 + pkg.in/lists/workstation/the.pkgs | 93 +++ pkg.in/lists/workstation/thunderbird | 4 + pkg.in/lists/workstation/virtualbox | 1 + pkg.in/lists/workstation/vlc | 10 + pkg.in/lists/workstation/voip-clients | 3 + pkg.in/lists/x-e2k/e101-mga2 | 3 + pkg.in/lists/x-e2k/e101-modesetting | 2 + pkg.in/lists/x-e2k/e801-1seat | 0 pkg.in/lists/x-e2k/e801-2seat | 2 + pkg.in/lists/x-e2k/e801-3seat | 2 + pkg.in/lists/x-e2k/e801-6seat | 2 + pkg.in/lists/x-e2k/e901-1seat | 0 pkg.in/lists/x-e2k/e901-2seat | 2 + pkg.in/lists/x-e2k/e901-3seat | 2 + pkg.in/lists/x-e2k/x-autologin | 2 + pkg.in/lists/xfce-sysv | 26 + pkg.in/lists/zero | 0 pkg.in/profiles/Makefile | 29 + pkg.in/profiles/README | 5 + pkg.in/profiles/centaurus-10-server.directory | 5 + .../profiles/centaurus-20-serverDC.directory | 5 + .../profiles/centaurus-30-desktop.directory | 5 + .../profiles/engineering/00-minimal.directory | 5 + .../profiles/engineering/10-design.directory | 5 + .../engineering/20-automations.directory | 5 + pkg.in/profiles/minimal.directory | 5 + .../server-v/111-opennebula-server.directory | 5 + .../server-v/112-opennebula-node.directory | 5 + .../server-v/113-opennebula-lxd.directory | 5 + .../server-v/121-openstack-node.directory | 5 + .../122-openstack-controller.directory | 5 + pkg.in/profiles/server-v/130-pve.directory | 5 + pkg.in/profiles/server-v/140-basic.directory | 5 + pkg.in/profiles/server-v/201-docker.directory | 5 + pkg.in/profiles/server-v/211-openvz.directory | 5 + .../profiles/server-v/999-minimal.directory | 5 + reports.mk | 119 ++++ sub.in/Makefile | 35 ++ sub.in/README | 38 ++ sub.in/main/Makefile | 44 ++ sub.in/main/README | 23 + sub.in/main/lib/.gitignore | 0 sub.in/rootfs/README | 19 + sub.in/rootfs/image-scripts.d/90-firsttime | 3 + sub.in/stage1/Makefile | 76 +++ sub.in/stage1/README | 27 + sub.in/stage1/files/.gitignore | 0 sub.in/stage1/initfs | 1 + sub.in/stage1/modules | 19 + sub.in/stage1/modules.d/.gitignore | 0 sub.in/stage1/scripts.d/.gitignore | 0 sub.in/stage2/Makefile | 77 +++ sub.in/stage2/README | 16 + sub.in/stage2/files/.gitignore | 0 sub.in/stage2/image-scripts.d/00-stage1 | 5 + sub.in/stage2/image-scripts.d/01-rootdir | 6 + sub.in/stage2/image-scripts.d/50-udev | 9 + sub.in/stage2/image-scripts.d/85-cleanup-cjk | 25 + .../stage2/image-scripts.d/85-cleanup-legacy | 20 + sub.in/stage2/image-scripts.d/90-cleanup-drm | 10 + .../image-scripts.d/97-cleanup-blacklisted | 12 + sub.in/stage2/image-scripts.d/98-depmod | 12 + sub.in/stage2/image-scripts.d/99-cleanup-boot | 15 + sub.in/stage2/image-scripts.d/99-tcb-fix | 5 + sub.in/stage2/lib/.gitignore | 0 sub.in/stage2/scripts.d/99-elf-stats | 48 ++ 1491 files changed, 28323 insertions(+) create mode 100644 COPYING create mode 100644 Makefile create mode 100644 QUICKSTART create mode 100644 README create mode 100644 apt.conf create mode 100755 bin/archdep-filter create mode 100755 bin/check-pkg-list create mode 100755 bin/check-recipe create mode 100755 bin/cleanlog create mode 100755 bin/columnize create mode 100755 bin/metadep-expander create mode 100755 bin/mktmpdir create mode 100755 bin/mp-commit create mode 100755 bin/mp-showref create mode 100755 bin/pkgdups create mode 100755 bin/report-filter create mode 100755 bin/report-targets create mode 100755 bin/report-targets2vars create mode 100755 bin/tags2lists create mode 100755 bin/tar2fs create mode 100644 bld/Makefile create mode 100644 bld/README create mode 100644 bld/build.log create mode 100644 bld/distcfg.mk create mode 100644 bld/files/.disk/arch create mode 100644 bld/files/.disk/commit create mode 100644 bld/files/.disk/date create mode 100644 bld/files/.disk/info create mode 100644 bld/files/.disk/profile.tgz create mode 100644 bld/files/Metadata/pkg-groups.tar create mode 100644 bld/functions.mk create mode 100755 bld/image-scripts.d/01-rootdir create mode 100755 bld/image-scripts.d/99-tcb-fix create mode 100644 bld/lib/10-kernel.mk create mode 100644 bld/lib/20-branding.mk create mode 100644 bld/lib/30-docs.mk create mode 100644 bld/lib/50-metadata.mk create mode 100644 bld/lib/90-build-distro.mk create mode 100644 bld/live/Makefile create mode 100644 bld/live/README create mode 100755 bld/live/image-scripts.d/00-stage1 create mode 100755 bld/live/image-scripts.d/01-rootdir create mode 100755 bld/live/image-scripts.d/10-live-hooks create mode 100755 bld/live/image-scripts.d/10-plymouth create mode 100755 bld/live/image-scripts.d/10-services create mode 100755 bld/live/image-scripts.d/20-locale create mode 100755 bld/live/image-scripts.d/30-all-groups create mode 100755 bld/live/image-scripts.d/35-xdg-user-dirs create mode 100755 bld/live/image-scripts.d/40-x11-autologin create mode 100755 bld/live/image-scripts.d/40-x11-autostart create mode 100755 bld/live/image-scripts.d/50-bootargs create mode 100755 bld/live/image-scripts.d/50-control create mode 100755 bld/live/image-scripts.d/50-fontconfig create mode 100755 bld/live/image-scripts.d/50-issue create mode 100755 bld/live/image-scripts.d/50-l10n-kbd create mode 100755 bld/live/image-scripts.d/50-l10n-xkb create mode 100755 bld/live/image-scripts.d/50-net-nm create mode 100755 bld/live/image-scripts.d/50-net-resolv create mode 100755 bld/live/image-scripts.d/50-ntp create mode 100755 bld/live/image-scripts.d/50-power create mode 100755 bld/live/image-scripts.d/50-root create mode 100755 bld/live/image-scripts.d/50-udev create mode 100755 bld/live/image-scripts.d/50-users create mode 100755 bld/live/image-scripts.d/50-var-run-fix create mode 100755 bld/live/image-scripts.d/60-apt create mode 100755 bld/live/image-scripts.d/65-os-release create mode 100755 bld/live/image-scripts.d/70-network-shares-dhcpcd.sh create mode 100755 bld/live/image-scripts.d/70-network-shares-nscd.sh create mode 100755 bld/live/image-scripts.d/70-network-shares-samba.sh create mode 100755 bld/live/image-scripts.d/85-cleanup-cjk create mode 100755 bld/live/image-scripts.d/85-cleanup-legacy create mode 100755 bld/live/image-scripts.d/90-cleanup-drm create mode 100755 bld/live/image-scripts.d/90-firsttime create mode 100755 bld/live/image-scripts.d/90-live-cleanup-drivers create mode 100755 bld/live/image-scripts.d/90-systemd create mode 100755 bld/live/image-scripts.d/91-systemd create mode 100755 bld/live/image-scripts.d/97-cleanup-blacklisted create mode 100755 bld/live/image-scripts.d/98-depmod create mode 100755 bld/live/image-scripts.d/99-cleanup-boot create mode 100755 bld/live/image-scripts.d/99-systemd-resolved-link create mode 100755 bld/live/image-scripts.d/99-tcb-fix create mode 100755 bld/live/image-scripts.d/99-urw create mode 100755 bld/live/image-scripts.d/99-xfce-theme create mode 100644 bld/live/lib/50-l10n.mk create mode 100644 bld/live/lib/50-pkgpriorities.mk create mode 100644 bld/live/lib/50branding.mk create mode 100755 bld/live/scripts.d/99-elf-stats create mode 100644 bld/live/stage2cfg.mk create mode 100755 bld/makedall.sh create mode 100644 bld/pkg/lists/.base create mode 100644 bld/pkg/lists/domain-client create mode 100644 bld/pkg/lists/grub create mode 100644 bld/pkg/lists/sound/base create mode 100644 bld/pkg/lists/sound/pulseaudio create mode 100644 bld/pkg/lists/systemd create mode 100644 bld/pkg/lists/tagged/base+desktop+live create mode 100644 bld/pkg/lists/tagged/base+efi create mode 100644 bld/pkg/lists/tagged/base+kde5 create mode 100644 bld/pkg/lists/tagged/base+kometa create mode 100644 bld/pkg/lists/tagged/base+l10n create mode 100644 bld/pkg/lists/tagged/base+network create mode 100644 bld/pkg/lists/tagged/base+nm create mode 100644 bld/pkg/lists/tagged/base+regular create mode 100644 bld/pkg/lists/tagged/base+regular+extra create mode 100644 bld/pkg/lists/tagged/base+rescue create mode 100644 bld/pkg/lists/tagged/base+xorg create mode 100644 bld/pkg/lists/tagged/desktop+live create mode 100644 bld/pkg/lists/tagged/desktop+regular create mode 100644 bld/pkg/lists/tagged/desktop+xorg create mode 100644 bld/pkg/lists/tagged/security+luks create mode 100644 bld/pkg/lists/tools/wireless create mode 100644 bld/rootfs/README create mode 100755 bld/rootfs/image-scripts.d/10-plymouth create mode 100755 bld/rootfs/image-scripts.d/10-services create mode 100755 bld/rootfs/image-scripts.d/30-all-groups create mode 100755 bld/rootfs/image-scripts.d/35-xdg-user-dirs create mode 100755 bld/rootfs/image-scripts.d/40-x11-autologin create mode 100755 bld/rootfs/image-scripts.d/40-x11-autostart create mode 100755 bld/rootfs/image-scripts.d/50-bootargs create mode 100755 bld/rootfs/image-scripts.d/50-control create mode 100755 bld/rootfs/image-scripts.d/50-fontconfig create mode 100755 bld/rootfs/image-scripts.d/50-issue create mode 100755 bld/rootfs/image-scripts.d/50-l10n-kbd create mode 100755 bld/rootfs/image-scripts.d/50-l10n-xkb create mode 100755 bld/rootfs/image-scripts.d/50-net-nm create mode 100755 bld/rootfs/image-scripts.d/50-net-resolv create mode 100755 bld/rootfs/image-scripts.d/50-ntp create mode 100755 bld/rootfs/image-scripts.d/50-power create mode 100755 bld/rootfs/image-scripts.d/50-root create mode 100755 bld/rootfs/image-scripts.d/50-users create mode 100755 bld/rootfs/image-scripts.d/50-var-run-fix create mode 100755 bld/rootfs/image-scripts.d/65-os-release create mode 100755 bld/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh create mode 100755 bld/rootfs/image-scripts.d/70-network-shares-nscd.sh create mode 100755 bld/rootfs/image-scripts.d/70-network-shares-samba.sh create mode 100755 bld/rootfs/image-scripts.d/90-firsttime create mode 100755 bld/rootfs/image-scripts.d/90-systemd create mode 100755 bld/rootfs/image-scripts.d/99-systemd-resolved-link create mode 100644 bld/rootfs/lib/50-l10n.mk create mode 100644 bld/rootfs/lib/50-pkgpriorities.mk create mode 100755 bld/scripts.d/00-cleanup create mode 100755 bld/scripts.d/20-propagator-ramdisk-grub create mode 100755 bld/scripts.d/20-propagator-ramdisk-syslinux create mode 100755 bld/scripts.d/20-propagator-rescue-hash-grub create mode 100755 bld/scripts.d/20-propagator-rescue-hash-syslinux create mode 100755 bld/scripts.d/50-docs-indexhtml create mode 100755 bld/scripts.d/50-docs-license create mode 100644 bld/sources.list create mode 100644 bld/squashcfg.mk create mode 100644 bld/stage1/Makefile create mode 100644 bld/stage1/README create mode 100644 bld/stage1/files/boot/grub/.in/00defaults.cfg create mode 100644 bld/stage1/files/boot/grub/.in/01gfxterm.cfg create mode 100644 bld/stage1/files/boot/grub/.in/10localboot_bios.cfg create mode 100644 bld/stage1/files/boot/grub/.in/30live.cfg create mode 100644 bld/stage1/files/boot/grub/.in/32live_rw.cfg create mode 100644 bld/stage1/files/boot/grub/.in/86lang.cfg create mode 100644 bld/stage1/files/boot/grub/.in/90memtest_bios.cfg create mode 100644 bld/stage1/files/boot/grub/.in/95fwsetup_efi.cfg create mode 100644 bld/stage1/files/boot/grub/.in/grub.list create mode 100644 bld/stage1/files/index.html create mode 100644 bld/stage1/files/syslinux/.in/00defaults.cfg create mode 100644 bld/stage1/files/syslinux/.in/01gfxboot.cfg create mode 100644 bld/stage1/files/syslinux/.in/10localboot.cfg create mode 100644 bld/stage1/files/syslinux/.in/30live.cfg create mode 100644 bld/stage1/files/syslinux/.in/32live_rw.cfg create mode 100644 bld/stage1/files/syslinux/.in/90memtest.cfg create mode 100644 bld/stage1/files/syslinux/.in/modules.list create mode 100644 bld/stage1/files/syslinux/.in/syslinux.list create mode 100644 bld/stage1/initfs create mode 100644 bld/stage1/lib/50branding.mk create mode 100644 bld/stage1/modules create mode 100644 bld/stage1/modules.d/10-stage2 create mode 100644 bld/stage1/modules.d/50-l10n create mode 100644 bld/stage1/modules.d/50-net create mode 100644 bld/stage1/modules.d/50-stage2-ata create mode 100644 bld/stage1/modules.d/50-stage2-drm create mode 100644 bld/stage1/modules.d/50-stage2-fs create mode 100644 bld/stage1/modules.d/50-stage2-hid create mode 100644 bld/stage1/modules.d/50-stage2-md create mode 100644 bld/stage1/modules.d/50-stage2-mmc create mode 100644 bld/stage1/modules.d/50-stage2-net create mode 100644 bld/stage1/modules.d/50-stage2-net-cifs create mode 100644 bld/stage1/modules.d/50-stage2-net-nfs create mode 100644 bld/stage1/modules.d/50-stage2-pcmcia create mode 100644 bld/stage1/modules.d/50-stage2-rtc create mode 100644 bld/stage1/modules.d/50-stage2-sbc-aarch64 create mode 100644 bld/stage1/modules.d/50-stage2-scsi create mode 100644 bld/stage1/modules.d/50-stage2-usb create mode 100644 bld/stage1/modules.d/50-stage2-virtio create mode 100644 bld/stage1/modules.d/50-vmguest create mode 100755 bld/stage1/scripts.d/01-grub create mode 100755 bld/stage1/scripts.d/01-initfs create mode 100755 bld/stage1/scripts.d/01-syslinux create mode 100755 bld/stage1/scripts.d/02-gfxboot create mode 100755 bld/stage1/scripts.d/02-memtest create mode 100755 bld/stage1/scripts.d/03-test-kernel create mode 100755 bld/stage1/scripts.d/11-initrd-misc create mode 100755 bld/stage1/scripts.d/11-initrd-plymouth create mode 100755 bld/stage1/scripts.d/11-initrd-propagator create mode 100755 bld/stage1/scripts.d/20-initrd-cdrom create mode 100755 bld/stage1/scripts.d/20-initrd-cifs create mode 100755 bld/stage1/scripts.d/40-propagator-fuid-file create mode 100755 bld/stage1/scripts.d/50-disable-nvidia create mode 100755 bld/stage1/scripts.d/80-make-initrd-for-propagator create mode 100755 bld/stage1/scripts.d/81-make-initfs create mode 100755 bld/stage1/scripts.d/90-build-propagator create mode 100755 bld/stage1/scripts.d/95-copy-kernel create mode 100644 bld/vars.mk create mode 100644 conf.d/Makefile create mode 100644 conf.d/README create mode 100644 conf.d/alt-server.mk create mode 100644 conf.d/basealt.mk create mode 100644 conf.d/desktop.mk create mode 100644 conf.d/e2k.mk create mode 100644 conf.d/education.mk create mode 100644 conf.d/engineering.mk create mode 100644 conf.d/homeros.mk create mode 100644 conf.d/kworkstation.mk create mode 100644 conf.d/live.mk create mode 100644 conf.d/mixin-alt-server.mk create mode 100644 conf.d/mixin-basealt.mk create mode 100644 conf.d/mixin.mk create mode 100644 conf.d/realtime.mk create mode 100644 conf.d/regular-vm.mk create mode 100644 conf.d/regular.mk create mode 100644 conf.d/server-v.mk create mode 100644 conf.d/server.mk create mode 100644 conf.d/slinux.mk create mode 100644 conf.d/test.mk create mode 100644 conf.d/ve.mk create mode 100644 conf.d/vm.mk create mode 100644 doc/.fop.xconf create mode 100644 doc/.gitignore create mode 100644 doc/Makefile create mode 100644 doc/apt.conf.sample create mode 100644 doc/archdep.txt create mode 100644 doc/assumptions.txt create mode 100644 doc/branch.txt create mode 100644 doc/debug.txt create mode 100644 doc/features.txt create mode 100644 doc/gen-asciidoc.txt create mode 100644 doc/metadep.txt create mode 100644 doc/mkimage-profiles.7.in create mode 100644 doc/mkimage-profiles.asciidoc create mode 100644 doc/params.txt create mode 100644 doc/pkglists.txt create mode 100644 doc/profiles.mk.sample create mode 100644 doc/qemu.txt create mode 100644 doc/style.txt create mode 100644 doc/vm.txt create mode 100644 features.in/00example/README create mode 100644 features.in/00example/config.mk create mode 100644 features.in/00example/generate.mk create mode 100644 features.in/00example/generate.sh create mode 100755 features.in/00example/main/scripts.d/89-example create mode 100644 features.in/Makefile create mode 100644 features.in/README create mode 100644 features.in/aarch64-tegra/README create mode 100644 features.in/aarch64-tegra/config.mk create mode 100755 features.in/aarch64-tegra/image-scripts.d/98-tegra-extlinux-conf create mode 100755 features.in/aarch64-tegra/image-scripts.d/99-tegra-initrd-conf create mode 100644 features.in/apt-conf/README create mode 100644 features.in/apt-conf/config.mk create mode 100644 features.in/arm-rpi4/README create mode 100644 features.in/arm-rpi4/config.mk create mode 100755 features.in/arm-rpi4/image-scripts.d/82-timer-based-to-interrupt-driven create mode 100755 features.in/arm-rpi4/image-scripts.d/93-default-gouvernor-conservative create mode 100755 features.in/arm-rpi4/image-scripts.d/96-gen-brcmfmac43455 create mode 100755 features.in/arm-rpi4/image-scripts.d/98-bootstrap-boot-by-firmware create mode 100644 features.in/armh-mcom02/README create mode 100644 features.in/armh-mcom02/config.mk create mode 100755 features.in/armh-mcom02/image-scripts.d/01-mcom02-initrd create mode 100755 features.in/armh-mcom02/image-scripts.d/50-alsa-set-initial-options-ports create mode 100755 features.in/armh-mcom02/image-scripts.d/90-fbturbo create mode 100755 features.in/armh-mcom02/image-scripts.d/99-extlinux-conf-fix create mode 100644 features.in/armh-skit/README create mode 100644 features.in/armh-skit/config.mk create mode 100755 features.in/armh-skit/image-scripts.d/01-uboot-prepare create mode 100755 features.in/armh-skit/image-scripts.d/50-alsa-set-initial-options-ports create mode 100755 features.in/armh-skit/image-scripts.d/90-fbturbo create mode 100755 features.in/armh-skit/image-scripts.d/99-extlinux-conf-fix create mode 100644 features.in/auto-resize/README create mode 100644 features.in/auto-resize/config.mk create mode 100755 features.in/auto-resize/image-scripts.d/91-edit-fstab-growfs create mode 100644 features.in/bootloader/README create mode 100644 features.in/bootloader/config.mk create mode 100755 features.in/bootloader/install2/image-scripts.d/00-check-bootloader create mode 100755 features.in/bootloader/rootfs/image-scripts.d/50-bootargs create mode 100644 features.in/branding/README create mode 100644 features.in/branding/config.mk create mode 100755 features.in/branding/install2/image-scripts.d/50-branding.sh create mode 100644 features.in/branding/install2/lib/50branding.mk create mode 100644 features.in/branding/lib/20-branding.mk create mode 100644 features.in/branding/live/lib/50branding.mk create mode 100644 features.in/branding/main/lib/50branding.mk create mode 100644 features.in/branding/stage1/lib/50branding.mk create mode 100644 features.in/browser/README create mode 100644 features.in/browser/config.mk create mode 100644 features.in/build-distro/README create mode 100644 features.in/build-distro/config.mk create mode 100755 features.in/build-distro/install2/image-scripts.d/86-all-groups create mode 100644 features.in/build-distro/lib/90-build-distro.mk create mode 100755 features.in/build-distro/rootfs/image-scripts.d/30-all-groups create mode 100755 features.in/build-distro/scripts.d/00-cleanup create mode 100644 features.in/build-ve/README create mode 100644 features.in/build-ve/config.mk create mode 100755 features.in/build-ve/image-scripts.d/03-services create mode 100755 features.in/build-ve/image-scripts.d/04-inittab create mode 100755 features.in/build-ve/image-scripts.d/05-mtab create mode 100755 features.in/build-ve/image-scripts.d/06-syslog create mode 100755 features.in/build-ve/image-scripts.d/07-fstab create mode 100644 features.in/build-ve/lib/90-build-ve.mk create mode 100644 features.in/build-vm/README create mode 100644 features.in/build-vm/config.mk create mode 100644 features.in/build-vm/generate.mk create mode 100755 features.in/build-vm/image-scripts.d/03-services create mode 100755 features.in/build-vm/image-scripts.d/06-syslog create mode 100755 features.in/build-vm/image-scripts.d/16-fstab create mode 100755 features.in/build-vm/image-scripts.d/17-kernel create mode 100644 features.in/build-vm/lib/90-build-vm.mk create mode 100644 features.in/cleanup/README create mode 100644 features.in/cleanup/config.mk create mode 100755 features.in/cleanup/image-scripts.d/90-cleanup-pkgs create mode 100755 features.in/cleanup/install2/image-scripts.d/90-cleanup-pkgs create mode 100755 features.in/cleanup/live/image-scripts.d/80-locales create mode 100755 features.in/cleanup/live/image-scripts.d/90-cleanup-docs create mode 100755 features.in/cleanup/live/image-scripts.d/90-cleanup-pkgs create mode 100755 features.in/cleanup/live/image-scripts.d/99-cleanupdb create mode 100644 features.in/control/README create mode 100644 features.in/control/config.mk create mode 100755 features.in/control/install2/image-scripts.d/51-control create mode 100755 features.in/control/rootfs/image-scripts.d/50-control create mode 100644 features.in/deflogin/README create mode 100644 features.in/deflogin/config.mk create mode 100755 features.in/deflogin/rootfs/image-scripts.d/50-issue create mode 100755 features.in/deflogin/rootfs/image-scripts.d/50-root create mode 100755 features.in/deflogin/rootfs/image-scripts.d/50-users create mode 100644 features.in/dev/README create mode 100644 features.in/dev/config.mk create mode 100755 features.in/dev/live/image-scripts.d/51-hasher create mode 100644 features.in/dev/main/lib/50-override.mk create mode 100644 features.in/docs/README create mode 100644 features.in/docs/config.mk create mode 100644 features.in/docs/lib/30-docs.mk create mode 100755 features.in/docs/scripts.d/50-docs-indexhtml create mode 100755 features.in/docs/scripts.d/50-docs-license create mode 100644 features.in/domain-client/README create mode 100644 features.in/domain-client/config.mk create mode 100755 features.in/domain-client/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh create mode 100755 features.in/domain-client/rootfs/image-scripts.d/70-network-shares-nscd.sh create mode 100755 features.in/domain-client/rootfs/image-scripts.d/70-network-shares-samba.sh create mode 100644 features.in/dos/README create mode 100644 features.in/dos/config.mk create mode 100755 features.in/dos/stage1/scripts.d/50-make-dos-floppy create mode 100644 features.in/drm/README create mode 100644 features.in/drm/config.mk create mode 100644 features.in/e2k/README create mode 100644 features.in/e2k/config.mk create mode 100755 features.in/e2k/install2/image-scripts.d/01-e2k-acpid create mode 100755 features.in/e2k/install2/image-scripts.d/01-e2k-apt create mode 100755 features.in/e2k/lib/50-e2k-write.sh create mode 100644 features.in/e2k/lib/50-e2k.mk create mode 100755 features.in/e2k/rootfs/image-scripts.d/50-e2k-serial create mode 100755 features.in/e2k/rootfs/image-scripts.d/50-e2k-utc create mode 100755 features.in/e2k/rootfs/image-scripts.d/51-e2k-koi8-r create mode 100755 features.in/e2k/rootfs/image-scripts.d/51-e2k-utf-8 create mode 100755 features.in/e2k/scripts.d/20-e2k-boot create mode 100755 features.in/e2k/stage1/scripts.d/20-initrd-e2k-kms create mode 100755 features.in/e2k/stage2/image-scripts.d/50-e2k-no-notes create mode 100644 features.in/efi/README create mode 100644 features.in/efi/config.mk create mode 100644 features.in/firmware/README create mode 100644 features.in/firmware/config.mk create mode 100644 features.in/fonts/README create mode 100644 features.in/fonts/config.mk create mode 100755 features.in/fonts/rootfs/image-scripts.d/50-fontconfig create mode 100644 features.in/grub/README create mode 100644 features.in/grub/cfg.in/00defaults.cfg create mode 100644 features.in/grub/cfg.in/01gfxterm.cfg create mode 100644 features.in/grub/cfg.in/10localboot_bios.cfg create mode 100644 features.in/grub/cfg.in/20install2.cfg create mode 100644 features.in/grub/cfg.in/25install-vnc-connect.cfg create mode 100644 features.in/grub/cfg.in/25install-vnc-listen.cfg create mode 100644 features.in/grub/cfg.in/30live.cfg create mode 100644 features.in/grub/cfg.in/32live_rw.cfg create mode 100644 features.in/grub/cfg.in/80rescue.cfg create mode 100644 features.in/grub/cfg.in/82rescue_rw.cfg create mode 100644 features.in/grub/cfg.in/83rescue_fm.cfg create mode 100644 features.in/grub/cfg.in/84rescue_remote.cfg create mode 100644 features.in/grub/cfg.in/85mediacheck.cfg create mode 100644 features.in/grub/cfg.in/86lang.cfg create mode 100644 features.in/grub/cfg.in/88netinstall.cfg create mode 100644 features.in/grub/cfg.in/89kernel.cfg create mode 100644 features.in/grub/cfg.in/90hdt_bios.cfg create mode 100644 features.in/grub/cfg.in/90memtest_bios.cfg create mode 100644 features.in/grub/cfg.in/90memtest_efi.cfg create mode 100644 features.in/grub/cfg.in/91shell_efi.cfg create mode 100644 features.in/grub/cfg.in/95fwsetup_efi.cfg create mode 100644 features.in/grub/cfg.in/95sdab_bios.cfg create mode 100644 features.in/grub/config.mk create mode 100644 features.in/grub/generate.mk create mode 100755 features.in/grub/scripts.d/20-propagator-ramdisk-grub create mode 100755 features.in/grub/scripts.d/20-propagator-rescue-hash-grub create mode 100755 features.in/grub/stage1/scripts.d/01-grub create mode 100644 features.in/hdt/README create mode 100644 features.in/hdt/config.mk create mode 100755 features.in/hdt/stage1/scripts.d/02-hdt create mode 100755 features.in/hdt/stage1/scripts.d/10-hdt-img create mode 100644 features.in/homeros/README create mode 100644 features.in/homeros/config.mk create mode 100755 features.in/homeros/live/image-scripts.d/10-console-keyboard-ru create mode 100755 features.in/homeros/live/image-scripts.d/10-sudo create mode 100755 features.in/homeros/live/image-scripts.d/20-altlinux-user create mode 100755 features.in/homeros/live/image-scripts.d/30-autologin create mode 100644 features.in/im/README create mode 100644 features.in/im/config.mk create mode 100644 features.in/init/README create mode 100644 features.in/init/config.mk create mode 100755 features.in/init/live/image-scripts.d/50-var-run-fix create mode 100755 features.in/init/rescue/image-scripts.d/50-var-run-fix create mode 100755 features.in/init/rescue/image-scripts.d/65-os-release create mode 100755 features.in/init/rootfs/image-scripts.d/50-var-run-fix create mode 100755 features.in/init/rootfs/image-scripts.d/65-os-release create mode 100755 features.in/init/rootfs/image-scripts.d/90-systemd create mode 100755 features.in/init/stage2/image-scripts.d/91-systemd create mode 100644 features.in/initrd-bootchain/README create mode 100644 features.in/initrd-bootchain/config.mk create mode 100644 features.in/initrd-bootchain/generate.mk create mode 100644 features.in/initrd-bootchain/stage1/files/bootchain create mode 100755 features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain create mode 100644 features.in/initrd-propagator/README create mode 100644 features.in/initrd-propagator/config.mk create mode 100755 features.in/initrd-propagator/stage1/scripts.d/01-initfs create mode 100755 features.in/initrd-propagator/stage1/scripts.d/11-initrd-propagator create mode 100755 features.in/initrd-propagator/stage1/scripts.d/80-make-initrd-for-propagator create mode 100755 features.in/initrd-propagator/stage1/scripts.d/81-make-initfs create mode 100755 features.in/initrd-propagator/stage1/scripts.d/90-build-propagator create mode 100644 features.in/install2/README create mode 100644 features.in/install2/config.mk create mode 100755 features.in/install2/install2/image-scripts.d/10-bootloader create mode 100755 features.in/install2/install2/image-scripts.d/20-vm-profile create mode 100755 features.in/install2/install2/image-scripts.d/90-install2-cleanup-bin create mode 100755 features.in/install2/install2/image-scripts.d/90-install2-cleanup-bloat create mode 100755 features.in/install2/install2/image-scripts.d/90-install2-cleanup-docs create mode 100755 features.in/install2/install2/image-scripts.d/90-install2-cleanup-drivers create mode 100755 features.in/install2/install2/image-scripts.d/90-install2-cleanup-l10n create mode 100755 features.in/install2/install2/image-scripts.d/91-install2-cleanup create mode 100755 features.in/install2/install2/image-scripts.d/98-system create mode 100755 features.in/install2/install2/image-scripts.d/99-cleanupdb create mode 100644 features.in/install2/install2/stage2cfg.mk create mode 100644 features.in/isohybrid/README create mode 100644 features.in/isohybrid/config.mk create mode 100644 features.in/kernel/README create mode 100644 features.in/kernel/config.mk create mode 100644 features.in/kernel/lib/10-kernel.mk create mode 100755 features.in/kernel/stage1/scripts.d/50-disable-nvidia create mode 100644 features.in/l10n/README create mode 100644 features.in/l10n/config.mk create mode 100755 features.in/l10n/rootfs/image-scripts.d/50-l10n-kbd create mode 100755 features.in/l10n/rootfs/image-scripts.d/50-l10n-xkb create mode 100644 features.in/l10n/rootfs/lib/50-l10n.mk create mode 100644 features.in/l10n/stage1/modules.d/50-l10n create mode 100644 features.in/ldm/README create mode 100644 features.in/ldm/config.mk create mode 100755 features.in/ldm/rootfs/image-scripts.d/50-ldm create mode 100644 features.in/live/README create mode 100644 features.in/live/config.mk create mode 100644 features.in/live/generate.mk create mode 100755 features.in/live/live/image-scripts.d/10-live-hooks create mode 100755 features.in/live/live/image-scripts.d/20-locale create mode 100755 features.in/live/live/image-scripts.d/60-apt create mode 100755 features.in/live/live/image-scripts.d/90-live-cleanup-drivers create mode 100755 features.in/live/live/image-scripts.d/99-urw create mode 100755 features.in/live/live/image-scripts.d/99-xfce-theme create mode 100644 features.in/live/live/stage2cfg.mk create mode 100644 features.in/live/stage1/files/index.html create mode 100644 features.in/lowmem/README create mode 100644 features.in/lowmem/config.mk create mode 100755 features.in/lowmem/install2/image-scripts.d/85-cleanup-lowmem create mode 100644 features.in/ltsp/README create mode 100644 features.in/ltsp/config.mk create mode 100644 features.in/luks/README create mode 100644 features.in/luks/config.mk create mode 100755 features.in/luks/install2/image-scripts.d/50-check-luks create mode 100644 features.in/lxc-guest/README create mode 100644 features.in/lxc-guest/config.mk create mode 100755 features.in/lxc-guest/image-scripts.d/98-add-lxc-system-generator create mode 100755 features.in/lxc-guest/image-scripts.d/99-disable-fstab create mode 100644 features.in/lxc/README create mode 100644 features.in/lxc/config.mk create mode 100755 features.in/lxc/stage2/image-scripts.d/30-lxd create mode 100644 features.in/mediacheck/README create mode 100644 features.in/mediacheck/config.mk create mode 100644 features.in/mediacheck/lib/89-mediacheck.mk create mode 100755 features.in/mediacheck/mediacheck/image-scripts.d/98-init-mediacheck create mode 100755 features.in/mediacheck/mediacheck/image-scripts.d/99-cleanup-all create mode 100644 features.in/mediacheck/mediacheck/stage2cfg.mk create mode 100644 features.in/memclean/README create mode 100644 features.in/memclean/config.mk create mode 100644 features.in/memtest/README create mode 100644 features.in/memtest/config.mk create mode 100755 features.in/memtest/stage1/scripts.d/02-memtest create mode 100644 features.in/metadata/README create mode 100644 features.in/metadata/config.mk create mode 100644 features.in/metadata/lib/50-metadata.mk create mode 100644 features.in/mipsel-bfk3/README create mode 100644 features.in/mipsel-bfk3/config.mk create mode 100755 features.in/mipsel-bfk3/rootfs/image-scripts.d/15-fstab create mode 100755 features.in/mipsel-bfk3/rootfs/image-scripts.d/40-boot create mode 100644 features.in/mipsel-mitx/README create mode 100644 features.in/mipsel-mitx/config.mk create mode 100755 features.in/mipsel-mitx/rootfs/image-scripts.d/15-fstab create mode 100755 features.in/mipsel-mitx/rootfs/image-scripts.d/40-boot create mode 100755 features.in/mipsel-mitx/rootfs/image-scripts.d/40-cpufreq-simple create mode 100644 features.in/net-dns/README create mode 100644 features.in/net-dns/config.mk create mode 100755 features.in/net-dns/rootfs/image-scripts.d/60-net-dns create mode 100644 features.in/net-eth/README create mode 100644 features.in/net-eth/config.mk create mode 100755 features.in/net-eth/rootfs/image-scripts.d/50-net-eth create mode 100644 features.in/net-ssh/README create mode 100644 features.in/net-ssh/config.mk create mode 100644 features.in/net-ssh/generate.mk create mode 100644 features.in/net-usershares/README create mode 100644 features.in/net-usershares/config.mk create mode 100755 features.in/net-usershares/rootfs/image-scripts.d/85-samba-usershares.sh create mode 100644 features.in/net/README create mode 100644 features.in/net/config.mk create mode 100755 features.in/net/rootfs/image-scripts.d/50-net-nm create mode 100755 features.in/net/rootfs/image-scripts.d/50-net-resolv create mode 100755 features.in/net/rootfs/image-scripts.d/99-systemd-resolved-link create mode 100644 features.in/net/stage1/modules.d/50-net create mode 100644 features.in/no-sleep/README create mode 100644 features.in/no-sleep/config.mk create mode 100755 features.in/no-sleep/rootfs/image-scripts.d/50-no-sleep-systemd create mode 100644 features.in/ntp/README create mode 100644 features.in/ntp/config.mk create mode 100755 features.in/ntp/rootfs/image-scripts.d/50-ntp create mode 100644 features.in/oem/README create mode 100644 features.in/oem/config.mk create mode 100644 features.in/oem/lib/60-oem-install.mk create mode 100755 features.in/oem/rootfs/image-scripts.d/99-oem-setup create mode 100644 features.in/office/README create mode 100644 features.in/office/config.mk create mode 100644 features.in/pack/README create mode 100644 features.in/pack/config.mk create mode 100644 features.in/pid1/README create mode 100644 features.in/pid1/config.mk create mode 100755 features.in/pid1/stage1/scripts.d/11-initrd-pid1 create mode 100755 features.in/pid1/stage1/scripts.d/82-gzip-initfs create mode 100644 features.in/pkgpriorities/README create mode 100644 features.in/pkgpriorities/config.mk create mode 100644 features.in/pkgpriorities/main/lib/50-pkgpriorities.mk create mode 100644 features.in/pkgpriorities/rootfs/lib/50-pkgpriorities.mk create mode 100644 features.in/pkgpriorities/stage2/lib/50-pkgpriorities.mk create mode 100644 features.in/plymouth/README create mode 100644 features.in/plymouth/config.mk create mode 100755 features.in/plymouth/rootfs/image-scripts.d/10-plymouth create mode 100755 features.in/plymouth/stage1/scripts.d/11-initrd-plymouth create mode 100644 features.in/power/README create mode 100644 features.in/power/config.mk create mode 100755 features.in/power/rootfs/image-scripts.d/50-power create mode 100644 features.in/relname/README create mode 100644 features.in/relname/config.mk create mode 100755 features.in/relname/stage2/image-scripts.d/91-relname create mode 100644 features.in/repo/README create mode 100644 features.in/repo/config.mk create mode 100755 features.in/repo/image-scripts.d/90-enable-repo create mode 100644 features.in/repo/lib/50-genbasedir.mk create mode 100755 features.in/repo/live/image-scripts.d/80-repo-main create mode 100755 features.in/repo/rootfs/image-scripts.d/01-genbasedir-rootfs create mode 100755 features.in/repo/rootfs/image-scripts.d/80-repo-rootfs-main create mode 100755 features.in/repo/scripts.d/01-genbasedir create mode 100755 features.in/repo/scripts.d/02-pubring create mode 100644 features.in/rescue/README create mode 100644 features.in/rescue/config.mk create mode 100755 features.in/rescue/rescue/image-scripts.d/00-test-rescue create mode 100755 features.in/rescue/rescue/image-scripts.d/20-locale create mode 100755 features.in/rescue/rescue/image-scripts.d/50-openssh create mode 100755 features.in/rescue/rescue/image-scripts.d/60-apt create mode 100755 features.in/rescue/rescue/image-scripts.d/70-cleanup-locale.sh create mode 100755 features.in/rescue/rescue/image-scripts.d/98-init-rescue create mode 100644 features.in/rescue/rescue/stage2cfg.mk create mode 100644 features.in/robotics/README create mode 100644 features.in/robotics/config.mk create mode 100644 features.in/server/README create mode 100644 features.in/server/config.mk create mode 100644 features.in/services/README create mode 100644 features.in/services/config.mk create mode 100755 features.in/services/install2/image-scripts.d/10-services create mode 100755 features.in/services/rootfs/image-scripts.d/10-services create mode 100644 features.in/slinux/README create mode 100644 features.in/slinux/config.mk create mode 100755 features.in/slinux/live/image-scripts.d/30-local-time create mode 100755 features.in/slinux/live/image-scripts.d/40-slinux-installer.sh create mode 100755 features.in/slinux/live/image-scripts.d/50-services create mode 100755 features.in/slinux/rootfs/image-scripts.d/60-no-bell create mode 100755 features.in/slinux/rootfs/image-scripts.d/90-sl-cleanup-pkgs create mode 100644 features.in/sound/README create mode 100644 features.in/sound/config.mk create mode 100644 features.in/speech/README create mode 100644 features.in/speech/config.mk create mode 100755 features.in/speech/live/image-scripts.d/10-amixer create mode 100755 features.in/speech/live/image-scripts.d/10-voiceman create mode 100644 features.in/stage2/README create mode 100644 features.in/stage2/config.mk create mode 100644 features.in/stage2/stage1/modules.d/10-stage2 create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-ata create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-drm create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-fs create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-hid create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-md create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-mmc create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-net create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-net-cifs create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-net-nfs create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-pcmcia create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-rtc create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-sbc-aarch64 create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-scsi create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-usb create mode 100644 features.in/stage2/stage1/modules.d/50-stage2-virtio create mode 100755 features.in/stage2/stage1/scripts.d/03-test-kernel create mode 100755 features.in/stage2/stage1/scripts.d/11-initrd-misc create mode 100755 features.in/stage2/stage1/scripts.d/20-initrd-cifs create mode 100755 features.in/stage2/stage1/scripts.d/95-copy-kernel create mode 100644 features.in/syslinux/README create mode 100644 features.in/syslinux/cfg.in/00defaults.cfg create mode 100644 features.in/syslinux/cfg.in/00ttyS0.cfg create mode 100644 features.in/syslinux/cfg.in/01gfxboot.cfg create mode 100644 features.in/syslinux/cfg.in/01menu.cfg create mode 100644 features.in/syslinux/cfg.in/01none.cfg create mode 100644 features.in/syslinux/cfg.in/01prompt.cfg create mode 100644 features.in/syslinux/cfg.in/01vesamenu.cfg create mode 100644 features.in/syslinux/cfg.in/02noescape.cfg create mode 100644 features.in/syslinux/cfg.in/10localboot.cfg create mode 100644 features.in/syslinux/cfg.in/10removable.cfg create mode 100644 features.in/syslinux/cfg.in/20install2.cfg create mode 100644 features.in/syslinux/cfg.in/20pid1.cfg create mode 100644 features.in/syslinux/cfg.in/21install2-failsafe.cfg create mode 100644 features.in/syslinux/cfg.in/25grub-install-vnc-connect.cfg create mode 100644 features.in/syslinux/cfg.in/25grub-install-vnc-listen.cfg create mode 100644 features.in/syslinux/cfg.in/25install-vnc-connect.cfg create mode 100644 features.in/syslinux/cfg.in/25install-vnc-listen.cfg create mode 100644 features.in/syslinux/cfg.in/30live.cfg create mode 100644 features.in/syslinux/cfg.in/32live_rw.cfg create mode 100644 features.in/syslinux/cfg.in/40lateboot.cfg create mode 100644 features.in/syslinux/cfg.in/80rescue.cfg create mode 100644 features.in/syslinux/cfg.in/82rescue_rw.cfg create mode 100644 features.in/syslinux/cfg.in/83rescue_fm.cfg create mode 100644 features.in/syslinux/cfg.in/84rescue_remote.cfg create mode 100644 features.in/syslinux/cfg.in/85dos.cfg create mode 100644 features.in/syslinux/cfg.in/85mediacheck.cfg create mode 100644 features.in/syslinux/cfg.in/90hdt.cfg create mode 100644 features.in/syslinux/cfg.in/90memtest.cfg create mode 100644 features.in/syslinux/cfg.in/95sdab.cfg create mode 100644 features.in/syslinux/cfg.in/Makefile create mode 100644 features.in/syslinux/cfg.in/README create mode 100644 features.in/syslinux/config.mk create mode 100644 features.in/syslinux/generate.mk create mode 100755 features.in/syslinux/scripts.d/20-propagator-ramdisk-syslinux create mode 100755 features.in/syslinux/scripts.d/20-propagator-rescue-hash-syslinux create mode 100755 features.in/syslinux/stage1/scripts.d/01-syslinux create mode 100755 features.in/syslinux/stage1/scripts.d/02-gfxboot create mode 100644 features.in/tty/README create mode 100644 features.in/tty/config.mk create mode 100755 features.in/tty/rootfs/image-scripts.d/50-serial create mode 100644 features.in/uboot/README create mode 100644 features.in/uboot/config.mk create mode 100755 features.in/uboot/image-scripts.d/00-uboot-prepare create mode 100755 features.in/uboot/image-scripts.d/90-uboot-config-install create mode 100644 features.in/uuid-iso/README create mode 100644 features.in/uuid-iso/config.mk create mode 100755 features.in/uuid-iso/stage1/scripts.d/20-initrd-cdrom create mode 100755 features.in/uuid-iso/stage1/scripts.d/40-propagator-fuid-file create mode 100644 features.in/vagrant/README create mode 100644 features.in/vagrant/config.mk create mode 100755 features.in/vagrant/rootfs/image-scripts.d/50-vagrant create mode 100644 features.in/vmguest/README create mode 100644 features.in/vmguest/config.mk create mode 100755 features.in/vmguest/install2/image-scripts.d/50-vmguest-noservices create mode 100644 features.in/vmguest/stage1/modules.d/50-vmguest create mode 100644 features.in/volumes/README create mode 100644 features.in/volumes/config.mk create mode 100644 features.in/wireless/README create mode 100644 features.in/wireless/config.mk create mode 100644 features.in/x11-autologin/README create mode 100644 features.in/x11-autologin/config.mk create mode 100755 features.in/x11-autologin/rootfs/image-scripts.d/40-x11-autologin create mode 100644 features.in/x11-autostart/README create mode 100644 features.in/x11-autostart/config.mk create mode 100755 features.in/x11-autostart/rootfs/image-scripts.d/40-x11-autostart create mode 100644 features.in/x11-vnc/README create mode 100644 features.in/x11-vnc/config.mk create mode 100755 features.in/x11-vnc/rootfs/image-scripts.d/51-x11-vnc create mode 100644 features.in/x11/README create mode 100644 features.in/x11/config.mk create mode 100644 features.in/xdg-user-dirs/README create mode 100644 features.in/xdg-user-dirs/config.mk create mode 100755 features.in/xdg-user-dirs/rootfs/image-scripts.d/35-xdg-user-dirs create mode 100644 image.in/.gitignore create mode 100644 image.in/Makefile create mode 100644 image.in/README create mode 100644 image.in/files/.gitignore create mode 100644 image.in/functions.mk create mode 100644 image.in/image-scripts.d/.gitignore create mode 100755 image.in/image-scripts.d/01-rootdir create mode 100755 image.in/image-scripts.d/99-tcb-fix create mode 100644 image.in/lib/.gitignore create mode 100644 image.in/scripts.d/.gitignore create mode 100644 image.in/vars.mk create mode 100644 lib/README create mode 100644 lib/boot.mk create mode 100644 lib/build.mk create mode 100644 lib/check.mk create mode 100644 lib/clean.mk create mode 100644 lib/common.mk create mode 100644 lib/distro.mk create mode 100644 lib/functions.mk create mode 100644 lib/help.mk create mode 100644 lib/log.mk create mode 100644 lib/profile.mk create mode 100644 lib/report.mk create mode 100644 lib/sugar.mk create mode 100644 lib/ve.mk create mode 100644 lib/vm.mk create mode 100644 main.mk create mode 100755 makeimg.sh create mode 100644 myp10 create mode 100644 pkg.in/Makefile create mode 100644 pkg.in/README create mode 100644 pkg.in/groups/Makefile create mode 100644 pkg.in/groups/README create mode 100644 pkg.in/groups/centaurus/10-alterator.directory create mode 100644 pkg.in/groups/centaurus/20-server-apps.directory create mode 100644 pkg.in/groups/centaurus/30-cups.directory create mode 100644 pkg.in/groups/centaurus/40-pve.directory create mode 100644 pkg.in/groups/centaurus/50-freeipa.directory create mode 100644 pkg.in/groups/centaurus/60-openstack.directory create mode 100644 pkg.in/groups/centaurus/70-dev.directory create mode 100644 pkg.in/groups/centaurus/80-desktop.directory create mode 100644 pkg.in/groups/centaurus/90-docs.directory create mode 100644 pkg.in/groups/centaurus/admc.directory create mode 100644 pkg.in/groups/centaurus/alterator.directory create mode 100644 pkg.in/groups/centaurus/bacula-client-a.directory create mode 100644 pkg.in/groups/centaurus/bacula-client.directory create mode 100644 pkg.in/groups/centaurus/bacula-server.directory create mode 100644 pkg.in/groups/centaurus/bacula.directory create mode 100644 pkg.in/groups/centaurus/blogs.directory create mode 100644 pkg.in/groups/centaurus/buildsystem.directory create mode 100644 pkg.in/groups/centaurus/cups.directory create mode 100644 pkg.in/groups/centaurus/dhcp-server-a.directory create mode 100644 pkg.in/groups/centaurus/diag-tools.directory create mode 100644 pkg.in/groups/centaurus/dns-server-a.directory create mode 100644 pkg.in/groups/centaurus/dns-server.directory create mode 100644 pkg.in/groups/centaurus/docs.directory create mode 100644 pkg.in/groups/centaurus/domain-server.directory create mode 100644 pkg.in/groups/centaurus/emulators.directory create mode 100644 pkg.in/groups/centaurus/freeipa-client.directory create mode 100644 pkg.in/groups/centaurus/freeipa-server.directory create mode 100644 pkg.in/groups/centaurus/freenx-server.directory create mode 100644 pkg.in/groups/centaurus/ftp-server-a.directory create mode 100644 pkg.in/groups/centaurus/ganeti.directory create mode 100644 pkg.in/groups/centaurus/gnome-peer-to-peer.directory create mode 100644 pkg.in/groups/centaurus/graphics-editing.directory create mode 100644 pkg.in/groups/centaurus/gtk-dictionary.directory create mode 100644 pkg.in/groups/centaurus/http-server.directory create mode 100644 pkg.in/groups/centaurus/ipmi.directory create mode 100644 pkg.in/groups/centaurus/jitsi-meet.directory create mode 100644 pkg.in/groups/centaurus/kvm-server.directory create mode 100644 pkg.in/groups/centaurus/mail-server-a.directory create mode 100644 pkg.in/groups/centaurus/mate.directory create mode 100644 pkg.in/groups/centaurus/mediawiki.directory create mode 100644 pkg.in/groups/centaurus/monitoring.directory create mode 100644 pkg.in/groups/centaurus/mysql-server-a.directory create mode 100644 pkg.in/groups/centaurus/netinst.directory create mode 100644 pkg.in/groups/centaurus/nm-daemon.directory create mode 100644 pkg.in/groups/centaurus/office.directory create mode 100644 pkg.in/groups/centaurus/openstack-block.directory create mode 100644 pkg.in/groups/centaurus/openstack-compute.directory create mode 100644 pkg.in/groups/centaurus/openstack-controller.directory create mode 100644 pkg.in/groups/centaurus/openstack-network.directory create mode 100644 pkg.in/groups/centaurus/openstack-storage.directory create mode 100644 pkg.in/groups/centaurus/openuds-tunnel.directory create mode 100644 pkg.in/groups/centaurus/openuds.directory create mode 100644 pkg.in/groups/centaurus/owncloud.directory create mode 100644 pkg.in/groups/centaurus/pidgin.directory create mode 100644 pkg.in/groups/centaurus/publishing.directory create mode 100644 pkg.in/groups/centaurus/remmina.directory create mode 100644 pkg.in/groups/centaurus/samba.directory create mode 100644 pkg.in/groups/centaurus/sambaDC.directory create mode 100644 pkg.in/groups/centaurus/scanning.directory create mode 100644 pkg.in/groups/centaurus/sogo.directory create mode 100644 pkg.in/groups/centaurus/sound-editing.directory create mode 100644 pkg.in/groups/centaurus/systemd-networkd.directory create mode 100644 pkg.in/groups/centaurus/v12n-server.directory create mode 100644 pkg.in/groups/centaurus/virt-manager.directory create mode 100644 pkg.in/groups/centaurus/vlc.directory create mode 100644 pkg.in/groups/centaurus/xorg.directory create mode 100644 pkg.in/groups/dev/builder.directory create mode 100644 pkg.in/groups/education/00_base.directory create mode 100644 pkg.in/groups/education/01_preschool.directory create mode 100644 pkg.in/groups/education/02_gradeschool.directory create mode 100644 pkg.in/groups/education/03_highschool.directory create mode 100644 pkg.in/groups/education/04_secondary_vocational.directory create mode 100644 pkg.in/groups/education/05_university.directory create mode 100644 pkg.in/groups/education/06_kde5.directory create mode 100644 pkg.in/groups/education/06_kdesc.directory create mode 100644 pkg.in/groups/education/07_teacher.directory create mode 100644 pkg.in/groups/education/08_server-apps-edu.directory create mode 100644 pkg.in/groups/education/09_video-conferencing.directory create mode 100644 pkg.in/groups/engineering/05-apps.directory create mode 100644 pkg.in/groups/engineering/2d-cad.directory create mode 100644 pkg.in/groups/engineering/3d-cad.directory create mode 100644 pkg.in/groups/engineering/3d-printer.directory create mode 100644 pkg.in/groups/engineering/apcs.directory create mode 100644 pkg.in/groups/engineering/cam.directory create mode 100644 pkg.in/groups/engineering/cnc.directory create mode 100644 pkg.in/groups/engineering/eda.directory create mode 100644 pkg.in/groups/engineering/misc.directory create mode 100644 pkg.in/groups/kworkstation/additional-oem.directory create mode 100644 pkg.in/groups/kworkstation/clients-ad.directory create mode 100644 pkg.in/groups/kworkstation/clients-backup.directory create mode 100644 pkg.in/groups/kworkstation/clients-cloud.directory create mode 100644 pkg.in/groups/kworkstation/clients-ipa.directory create mode 100644 pkg.in/groups/kworkstation/clients-monitor.directory create mode 100644 pkg.in/groups/kworkstation/edu.directory create mode 100644 pkg.in/groups/kworkstation/emulators.directory create mode 100644 pkg.in/groups/kworkstation/games.directory create mode 100644 pkg.in/groups/kworkstation/graphics-editing.directory create mode 100644 pkg.in/groups/kworkstation/kde5.directory create mode 100644 pkg.in/groups/kworkstation/printing.directory create mode 100644 pkg.in/groups/kworkstation/publishing.directory create mode 100644 pkg.in/groups/kworkstation/remote-desktop.directory create mode 100644 pkg.in/groups/kworkstation/scanning.directory create mode 100644 pkg.in/groups/kworkstation/sound-editing.directory create mode 100644 pkg.in/groups/kworkstation/video-editing.directory create mode 100644 pkg.in/groups/kworkstation/z01-add-clients.directory create mode 100644 pkg.in/groups/kworkstation/z02-add-additional.directory create mode 100644 pkg.in/groups/server-v/110-opennebula.directory create mode 100644 pkg.in/groups/server-v/120-openstack.directory create mode 100644 pkg.in/groups/server-v/130-pve.directory create mode 100644 pkg.in/groups/server-v/140-basic.directory create mode 100644 pkg.in/groups/server-v/141-cockpit.directory create mode 100644 pkg.in/groups/server-v/200-container.directory create mode 100644 pkg.in/groups/server-v/300-cluster.directory create mode 100644 pkg.in/groups/server-v/400-storage.directory create mode 100644 pkg.in/groups/server-v/410-ceph.directory create mode 100644 pkg.in/groups/server-v/420-glusterfs.directory create mode 100644 pkg.in/groups/server-v/430-lizardfs.directory create mode 100644 pkg.in/groups/server-v/430-moosefs.directory create mode 100644 pkg.in/groups/server-v/450-nfs.directory create mode 100644 pkg.in/groups/server-v/460-iscsi.directory create mode 100644 pkg.in/groups/server-v/470-linstor.directory create mode 100644 pkg.in/groups/server-v/500-network.directory create mode 100644 pkg.in/groups/server-v/600-monitoring.directory create mode 100644 pkg.in/groups/server-v/700-backup.directory create mode 100644 pkg.in/groups/server-v/800-logging.directory create mode 100644 pkg.in/groups/server-v/apache2.directory create mode 100644 pkg.in/groups/server-v/bacula.directory create mode 100644 pkg.in/groups/server-v/bird.directory create mode 100644 pkg.in/groups/server-v/borg.directory create mode 100644 pkg.in/groups/server-v/burp.directory create mode 100644 pkg.in/groups/server-v/ceph/client.directory create mode 100644 pkg.in/groups/server-v/ceph/mgr.directory create mode 100644 pkg.in/groups/server-v/ceph/mon.directory create mode 100644 pkg.in/groups/server-v/ceph/osd.directory create mode 100644 pkg.in/groups/server-v/ceph/radosgw.directory create mode 100644 pkg.in/groups/server-v/cockpit/docker.directory create mode 100644 pkg.in/groups/server-v/cockpit/kvm.directory create mode 100644 pkg.in/groups/server-v/cockpit/web.directory create mode 100644 pkg.in/groups/server-v/collectd.directory create mode 100644 pkg.in/groups/server-v/corosync_pacemaker.directory create mode 100644 pkg.in/groups/server-v/dhcp.directory create mode 100644 pkg.in/groups/server-v/dns.directory create mode 100644 pkg.in/groups/server-v/docker.directory create mode 100644 pkg.in/groups/server-v/freeipa-client.directory create mode 100644 pkg.in/groups/server-v/glusterfs/client.directory create mode 100644 pkg.in/groups/server-v/glusterfs/server.directory create mode 100644 pkg.in/groups/server-v/grafana.directory create mode 100644 pkg.in/groups/server-v/haproxy.directory create mode 100644 pkg.in/groups/server-v/influxdb.directory create mode 100644 pkg.in/groups/server-v/iscsi/initiator.directory create mode 100644 pkg.in/groups/server-v/iscsi/scsitarget.directory create mode 100644 pkg.in/groups/server-v/iscsi/targetcli.directory create mode 100644 pkg.in/groups/server-v/keepalived.directory create mode 100644 pkg.in/groups/server-v/kubernetes-master.directory create mode 100644 pkg.in/groups/server-v/kubernetes-node.directory create mode 100644 pkg.in/groups/server-v/kvm.directory create mode 100644 pkg.in/groups/server-v/linstor/client.directory create mode 100644 pkg.in/groups/server-v/linstor/controller.directory create mode 100644 pkg.in/groups/server-v/linstor/opennebula-addon.directory create mode 100644 pkg.in/groups/server-v/linstor/pve-storage.directory create mode 100644 pkg.in/groups/server-v/linstor/satellite.directory create mode 100644 pkg.in/groups/server-v/lizardfs/cgiserv.directory create mode 100644 pkg.in/groups/server-v/lizardfs/chunkserver.directory create mode 100644 pkg.in/groups/server-v/lizardfs/client.directory create mode 100644 pkg.in/groups/server-v/lizardfs/master.directory create mode 100644 pkg.in/groups/server-v/lizardfs/metalogger.directory create mode 100644 pkg.in/groups/server-v/lxd.directory create mode 100644 pkg.in/groups/server-v/monit.directory create mode 100644 pkg.in/groups/server-v/moosefs/cgiserv.directory create mode 100644 pkg.in/groups/server-v/moosefs/chunkserver.directory create mode 100644 pkg.in/groups/server-v/moosefs/client.directory create mode 100644 pkg.in/groups/server-v/moosefs/master.directory create mode 100644 pkg.in/groups/server-v/moosefs/metalogger.directory create mode 100644 pkg.in/groups/server-v/nagios-nrpe.directory create mode 100644 pkg.in/groups/server-v/nfs-ganesha.directory create mode 100644 pkg.in/groups/server-v/nfs.directory create mode 100644 pkg.in/groups/server-v/nginx.directory create mode 100644 pkg.in/groups/server-v/ocfs2.directory create mode 100644 pkg.in/groups/server-v/opennebula/flow.directory create mode 100644 pkg.in/groups/server-v/opennebula/gate.directory create mode 100644 pkg.in/groups/server-v/opennebula/gui.directory create mode 100644 pkg.in/groups/server-v/opennebula/node-kvm.directory create mode 100644 pkg.in/groups/server-v/opennebula/node-lxd.directory create mode 100644 pkg.in/groups/server-v/opennebula/server.directory create mode 100644 pkg.in/groups/server-v/openstack/block.directory create mode 100644 pkg.in/groups/server-v/openstack/compute.directory create mode 100644 pkg.in/groups/server-v/openstack/controller.directory create mode 100644 pkg.in/groups/server-v/openstack/network.directory create mode 100644 pkg.in/groups/server-v/openstack/storage.directory create mode 100644 pkg.in/groups/server-v/openvswitch.directory create mode 100644 pkg.in/groups/server-v/openvz.directory create mode 100644 pkg.in/groups/server-v/podman.directory create mode 100644 pkg.in/groups/server-v/prometheus-node_exporter.directory create mode 100644 pkg.in/groups/server-v/prometheus.directory create mode 100644 pkg.in/groups/server-v/pve.directory create mode 100644 pkg.in/groups/server-v/restic.directory create mode 100644 pkg.in/groups/server-v/rkt.directory create mode 100644 pkg.in/groups/server-v/rsyslog-classic.directory create mode 100644 pkg.in/groups/server-v/systemd-journal-remote.directory create mode 100644 pkg.in/groups/server-v/telegraf.directory create mode 100644 pkg.in/groups/server-v/urbackup-client.directory create mode 100644 pkg.in/groups/server-v/zabbix-agent.directory create mode 100644 pkg.in/groups/server-v/zabbix.directory create mode 100644 pkg.in/groups/server/apache2.directory create mode 100644 pkg.in/groups/server/dhcp.directory create mode 100644 pkg.in/groups/server/dns.directory create mode 100644 pkg.in/groups/server/ftp.directory create mode 100644 pkg.in/groups/server/kvm.directory create mode 100644 pkg.in/groups/server/mail.directory create mode 100644 pkg.in/groups/server/mariadb.directory create mode 100644 pkg.in/groups/server/mysql.directory create mode 100644 pkg.in/groups/server/nginx.directory create mode 100644 pkg.in/groups/server/pgsql-1C.directory create mode 100644 pkg.in/groups/server/pgsql.directory create mode 100644 pkg.in/groups/server/php7.directory create mode 100644 pkg.in/groups/server/rsync.directory create mode 100644 pkg.in/groups/server/sambaDC.directory create mode 100644 pkg.in/groups/server/sqlite.directory create mode 100644 pkg.in/groups/slinux/dropbox.directory create mode 100644 pkg.in/groups/slinux/emulators-full.directory create mode 100644 pkg.in/groups/slinux/games-base.directory create mode 100644 pkg.in/groups/slinux/games-full-steam.directory create mode 100644 pkg.in/groups/slinux/games-full.directory create mode 100644 pkg.in/groups/slinux/games.directory create mode 100644 pkg.in/groups/slinux/graphics-base.directory create mode 100644 pkg.in/groups/slinux/graphics-full-inkscape.directory create mode 100644 pkg.in/groups/slinux/graphics-full-shotwell.directory create mode 100644 pkg.in/groups/slinux/graphics.directory create mode 100644 pkg.in/groups/slinux/multimedia-base.directory create mode 100644 pkg.in/groups/slinux/multimedia-full-audacity.directory create mode 100644 pkg.in/groups/slinux/multimedia-full-cheese.directory create mode 100644 pkg.in/groups/slinux/multimedia-full-obs-studio.directory create mode 100644 pkg.in/groups/slinux/multimedia-full-shotcut.directory create mode 100644 pkg.in/groups/slinux/multimedia-full-sound-juicer.directory create mode 100644 pkg.in/groups/slinux/multimedia.directory create mode 100644 pkg.in/groups/slinux/net-base.directory create mode 100644 pkg.in/groups/tools/diag.directory create mode 100644 pkg.in/groups/tools/hyperv.directory create mode 100644 pkg.in/groups/tools/ipmi.directory create mode 100644 pkg.in/groups/tools/monitoring.directory create mode 100644 pkg.in/groups/tools/tuning.directory create mode 100644 pkg.in/groups/tools/vzstats.directory create mode 100644 pkg.in/groups/workstation/10-office.directory create mode 100644 pkg.in/groups/workstation/20-networking.directory create mode 100644 pkg.in/groups/workstation/30-multimedia.directory create mode 100644 pkg.in/groups/workstation/3rdparty.directory create mode 100644 pkg.in/groups/workstation/40-virtualization.directory create mode 100644 pkg.in/groups/workstation/50-publishing.directory create mode 100644 pkg.in/groups/workstation/admc.directory create mode 100644 pkg.in/groups/workstation/agents.directory create mode 100644 pkg.in/groups/workstation/alterator-web.directory create mode 100644 pkg.in/groups/workstation/blender.directory create mode 100644 pkg.in/groups/workstation/celluloid.directory create mode 100644 pkg.in/groups/workstation/clamav.directory create mode 100644 pkg.in/groups/workstation/claws-mail.directory create mode 100644 pkg.in/groups/workstation/cloud-clients.directory create mode 100644 pkg.in/groups/workstation/emulators.directory create mode 100644 pkg.in/groups/workstation/freecad.directory create mode 100644 pkg.in/groups/workstation/freeipa-client.directory create mode 100644 pkg.in/groups/workstation/ganttproject.directory create mode 100644 pkg.in/groups/workstation/gnome-peer-to-peer.directory create mode 100644 pkg.in/groups/workstation/graphics-editing.directory create mode 100644 pkg.in/groups/workstation/gtk-dictionary.directory create mode 100644 pkg.in/groups/workstation/kvm.directory create mode 100644 pkg.in/groups/workstation/libreoffice.directory create mode 100644 pkg.in/groups/workstation/mate-usershare.directory create mode 100644 pkg.in/groups/workstation/pidgin.directory create mode 100644 pkg.in/groups/workstation/qgis.directory create mode 100644 pkg.in/groups/workstation/raccess.directory create mode 100644 pkg.in/groups/workstation/runa-client.directory create mode 100644 pkg.in/groups/workstation/scanning.directory create mode 100644 pkg.in/groups/workstation/scribus.directory create mode 100644 pkg.in/groups/workstation/smartcard.directory create mode 100644 pkg.in/groups/workstation/sound-editing.directory create mode 100644 pkg.in/groups/workstation/thunderbird.directory create mode 100644 pkg.in/groups/workstation/virtualbox.directory create mode 100644 pkg.in/groups/workstation/vlc.directory create mode 100644 pkg.in/groups/workstation/voip-clients.directory create mode 100644 pkg.in/groups/x-e2k/90-e801.directory create mode 100644 pkg.in/groups/x-e2k/90-e901.directory create mode 100644 pkg.in/groups/x-e2k/91-e101.directory create mode 100644 pkg.in/groups/x-e2k/e101-mga2.directory create mode 100644 pkg.in/groups/x-e2k/e101-modesetting.directory create mode 100644 pkg.in/groups/x-e2k/e801-1seat.directory create mode 100644 pkg.in/groups/x-e2k/e801-2seat.directory create mode 100644 pkg.in/groups/x-e2k/e801-3seat.directory create mode 100644 pkg.in/groups/x-e2k/e801-6seat.directory create mode 100644 pkg.in/groups/x-e2k/e901-1seat.directory create mode 100644 pkg.in/groups/x-e2k/e901-2seat.directory create mode 100644 pkg.in/groups/x-e2k/e901-3seat.directory create mode 100644 pkg.in/groups/x-e2k/x-autologin.directory create mode 100644 pkg.in/lists/.base create mode 100644 pkg.in/lists/Makefile create mode 100644 pkg.in/lists/README create mode 100644 pkg.in/lists/base create mode 100644 pkg.in/lists/centaurus/10-alterator create mode 100644 pkg.in/lists/centaurus/30-cups create mode 100644 pkg.in/lists/centaurus/40-pve create mode 100644 pkg.in/lists/centaurus/70-dev create mode 100644 pkg.in/lists/centaurus/90-docs create mode 100644 pkg.in/lists/centaurus/admc create mode 100644 pkg.in/lists/centaurus/backup-server create mode 100644 pkg.in/lists/centaurus/bacula-a create mode 100644 pkg.in/lists/centaurus/bacula-client create mode 100644 pkg.in/lists/centaurus/bacula-client-a create mode 100644 pkg.in/lists/centaurus/base create mode 100644 pkg.in/lists/centaurus/base-server create mode 100644 pkg.in/lists/centaurus/blogs create mode 100644 pkg.in/lists/centaurus/buildsystem create mode 100644 pkg.in/lists/centaurus/cluster create mode 100644 pkg.in/lists/centaurus/cppcheck create mode 100644 pkg.in/lists/centaurus/cups create mode 100644 pkg.in/lists/centaurus/dhcp-server-a create mode 100644 pkg.in/lists/centaurus/diag-tools create mode 100644 pkg.in/lists/centaurus/disk create mode 100644 pkg.in/lists/centaurus/disk-dvd create mode 100644 pkg.in/lists/centaurus/disk-server-light create mode 100644 pkg.in/lists/centaurus/dns-server-a create mode 100644 pkg.in/lists/centaurus/domain-client create mode 100644 pkg.in/lists/centaurus/domain-server create mode 100644 pkg.in/lists/centaurus/emulators create mode 100644 pkg.in/lists/centaurus/freeipa-client create mode 100644 pkg.in/lists/centaurus/freeipa-server create mode 100644 pkg.in/lists/centaurus/freenx-server create mode 100644 pkg.in/lists/centaurus/ftp-server-a create mode 100644 pkg.in/lists/centaurus/ganeti create mode 100644 pkg.in/lists/centaurus/gnome-office create mode 100644 pkg.in/lists/centaurus/gnome-peer-to-peer create mode 100644 pkg.in/lists/centaurus/graphics-editing create mode 100644 pkg.in/lists/centaurus/gtk-dictionary create mode 100644 pkg.in/lists/centaurus/ipmi create mode 100644 pkg.in/lists/centaurus/live create mode 100644 pkg.in/lists/centaurus/mail-server-a create mode 100644 pkg.in/lists/centaurus/mate create mode 100644 pkg.in/lists/centaurus/mediawiki create mode 100644 pkg.in/lists/centaurus/monitoring create mode 100644 pkg.in/lists/centaurus/netinst create mode 100644 pkg.in/lists/centaurus/nm create mode 100644 pkg.in/lists/centaurus/nm-daemon create mode 100644 pkg.in/lists/centaurus/openstack-block create mode 100644 pkg.in/lists/centaurus/openstack-compute create mode 100644 pkg.in/lists/centaurus/openstack-controller create mode 100644 pkg.in/lists/centaurus/openstack-network create mode 100644 pkg.in/lists/centaurus/openstack-storage create mode 100644 pkg.in/lists/centaurus/openuds create mode 100644 pkg.in/lists/centaurus/openuds-tunnel create mode 100644 pkg.in/lists/centaurus/owncloud create mode 100644 pkg.in/lists/centaurus/pidgin create mode 100644 pkg.in/lists/centaurus/publishing create mode 100644 pkg.in/lists/centaurus/remmina create mode 100644 pkg.in/lists/centaurus/samba create mode 100644 pkg.in/lists/centaurus/sambaDC create mode 100644 pkg.in/lists/centaurus/scanning create mode 100644 pkg.in/lists/centaurus/sogo create mode 100644 pkg.in/lists/centaurus/sound-editing create mode 100644 pkg.in/lists/centaurus/systemd-networkd create mode 100644 pkg.in/lists/centaurus/v12n-server create mode 100644 pkg.in/lists/centaurus/virt-manager create mode 100644 pkg.in/lists/centaurus/vlc create mode 100644 pkg.in/lists/centaurus/xorg create mode 100644 pkg.in/lists/centaurus/zero create mode 100644 pkg.in/lists/cluster/corosync_pacemaker create mode 100644 pkg.in/lists/container/docker create mode 100644 pkg.in/lists/container/kubernetes-master create mode 100644 pkg.in/lists/container/kubernetes-node create mode 100644 pkg.in/lists/container/lxd create mode 100644 pkg.in/lists/container/openvz create mode 100644 pkg.in/lists/container/podman create mode 100644 pkg.in/lists/container/rkt create mode 100644 pkg.in/lists/dev/builder create mode 100644 pkg.in/lists/domain-client create mode 100644 pkg.in/lists/domain-client-i create mode 100644 pkg.in/lists/education/base create mode 100644 pkg.in/lists/education/gradeschool create mode 100644 pkg.in/lists/education/highschool create mode 100644 pkg.in/lists/education/kde5 create mode 100644 pkg.in/lists/education/kdesc create mode 100644 pkg.in/lists/education/misc create mode 100644 pkg.in/lists/education/preschool create mode 100644 pkg.in/lists/education/secondary_vocational create mode 100644 pkg.in/lists/education/server-apps-edu create mode 100644 pkg.in/lists/education/teacher create mode 100644 pkg.in/lists/education/university create mode 100644 pkg.in/lists/education/video-conferencing create mode 100644 pkg.in/lists/engineering/2d-cad create mode 100644 pkg.in/lists/engineering/3d-cad create mode 100644 pkg.in/lists/engineering/3d-printer create mode 100644 pkg.in/lists/engineering/apcs create mode 100644 pkg.in/lists/engineering/cam create mode 100644 pkg.in/lists/engineering/cnc create mode 100644 pkg.in/lists/engineering/eda create mode 100644 pkg.in/lists/engineering/misc create mode 100644 pkg.in/lists/gnome-p2p create mode 100644 pkg.in/lists/grub create mode 100644 pkg.in/lists/homeros/homeros create mode 100644 pkg.in/lists/homeros/tools create mode 100644 pkg.in/lists/homeros/yasr create mode 100644 pkg.in/lists/jitsi-meet create mode 100644 pkg.in/lists/kworkstation/additional-base create mode 100644 pkg.in/lists/kworkstation/additional-oem create mode 100644 pkg.in/lists/kworkstation/clients-ad create mode 100644 pkg.in/lists/kworkstation/clients-backup create mode 100644 pkg.in/lists/kworkstation/clients-base create mode 100644 pkg.in/lists/kworkstation/clients-cloud create mode 100644 pkg.in/lists/kworkstation/clients-ipa create mode 100644 pkg.in/lists/kworkstation/clients-monitor create mode 100644 pkg.in/lists/kworkstation/disk-install create mode 100644 pkg.in/lists/kworkstation/edu create mode 100644 pkg.in/lists/kworkstation/emulators create mode 100644 pkg.in/lists/kworkstation/games create mode 100644 pkg.in/lists/kworkstation/graphics-editing create mode 100644 pkg.in/lists/kworkstation/kde5 create mode 100644 pkg.in/lists/kworkstation/kde5-base create mode 100644 pkg.in/lists/kworkstation/live-rescue create mode 100644 pkg.in/lists/kworkstation/printing create mode 100644 pkg.in/lists/kworkstation/publishing create mode 100644 pkg.in/lists/kworkstation/remote-desktop create mode 100644 pkg.in/lists/kworkstation/scanning create mode 100644 pkg.in/lists/kworkstation/sound-editing create mode 100644 pkg.in/lists/kworkstation/video-editing create mode 100644 pkg.in/lists/lilo create mode 100644 pkg.in/lists/logging/rsyslog create mode 100644 pkg.in/lists/logging/rsyslog-classic create mode 100644 pkg.in/lists/logging/rsyslog-elasticsearch create mode 100644 pkg.in/lists/logging/rsyslog-mysql create mode 100644 pkg.in/lists/logging/rsyslog-pgsql create mode 100644 pkg.in/lists/logging/systemd-journal-remote create mode 100644 pkg.in/lists/ltsp create mode 100644 pkg.in/lists/ltsp-client create mode 100644 pkg.in/lists/monitoring/collectd create mode 100644 pkg.in/lists/monitoring/grafana create mode 100644 pkg.in/lists/monitoring/influxdb create mode 100644 pkg.in/lists/monitoring/monit create mode 100644 pkg.in/lists/monitoring/nagios-nrpe create mode 100644 pkg.in/lists/monitoring/prometheus create mode 100644 pkg.in/lists/monitoring/prometheus-node_exporter create mode 100644 pkg.in/lists/monitoring/telegraf create mode 100644 pkg.in/lists/monitoring/zabbix-agent create mode 100644 pkg.in/lists/network/apache2 create mode 100644 pkg.in/lists/network/bird create mode 100644 pkg.in/lists/network/dhcp create mode 100644 pkg.in/lists/network/dns create mode 100644 pkg.in/lists/network/haproxy create mode 100644 pkg.in/lists/network/keepalived create mode 100644 pkg.in/lists/network/nginx create mode 100644 pkg.in/lists/network/openvswitch create mode 100644 pkg.in/lists/opencl create mode 100644 pkg.in/lists/openscada create mode 100644 pkg.in/lists/openssh create mode 100644 pkg.in/lists/osec create mode 100644 pkg.in/lists/realtime/tests create mode 100644 pkg.in/lists/remote-access create mode 100644 pkg.in/lists/robotics/reprap create mode 100644 pkg.in/lists/robotics/umki create mode 100644 pkg.in/lists/server-base create mode 100644 pkg.in/lists/server/apache2 create mode 100644 pkg.in/lists/server/dhcp create mode 100644 pkg.in/lists/server/dns create mode 100644 pkg.in/lists/server/ftp create mode 100644 pkg.in/lists/server/kvm create mode 100644 pkg.in/lists/server/mail create mode 100644 pkg.in/lists/server/mariadb create mode 100644 pkg.in/lists/server/mysql create mode 100644 pkg.in/lists/server/nginx create mode 100644 pkg.in/lists/server/pgsql create mode 100644 pkg.in/lists/server/pgsql-1C create mode 100644 pkg.in/lists/server/php7 create mode 100644 pkg.in/lists/server/rsync create mode 100644 pkg.in/lists/server/sambaDC create mode 100644 pkg.in/lists/server/sqlite create mode 100644 pkg.in/lists/singleboard-tools create mode 100644 pkg.in/lists/slinux/browser-chromium create mode 100644 pkg.in/lists/slinux/browser-firefox create mode 100644 pkg.in/lists/slinux/dropbox create mode 100644 pkg.in/lists/slinux/emulators-full create mode 100644 pkg.in/lists/slinux/games create mode 100644 pkg.in/lists/slinux/games-base create mode 100644 pkg.in/lists/slinux/games-full create mode 100644 pkg.in/lists/slinux/games-full-steam create mode 100644 pkg.in/lists/slinux/graphics create mode 100644 pkg.in/lists/slinux/graphics-base create mode 100644 pkg.in/lists/slinux/graphics-full-inkscape create mode 100644 pkg.in/lists/slinux/graphics-full-shotwell create mode 100644 pkg.in/lists/slinux/live create mode 100644 pkg.in/lists/slinux/live-install create mode 100644 pkg.in/lists/slinux/misc-base create mode 100644 pkg.in/lists/slinux/misc-full create mode 100644 pkg.in/lists/slinux/multimedia create mode 100644 pkg.in/lists/slinux/multimedia-base create mode 100644 pkg.in/lists/slinux/multimedia-full-audacity create mode 100644 pkg.in/lists/slinux/multimedia-full-cheese create mode 100644 pkg.in/lists/slinux/multimedia-full-obs-studio create mode 100644 pkg.in/lists/slinux/multimedia-full-shotcut create mode 100644 pkg.in/lists/slinux/multimedia-full-sound-juicer create mode 100644 pkg.in/lists/slinux/multimedia-player-celluloid create mode 100644 pkg.in/lists/slinux/multimedia-player-vlc create mode 100644 pkg.in/lists/slinux/net-base create mode 100644 pkg.in/lists/slinux/not-install-full create mode 100644 pkg.in/lists/slinux/xfce-base create mode 100644 pkg.in/lists/sound/alsa create mode 100644 pkg.in/lists/sound/base create mode 100644 pkg.in/lists/sound/pulseaudio create mode 100644 pkg.in/lists/speech/emacspeak create mode 100644 pkg.in/lists/speech/en create mode 100644 pkg.in/lists/speech/ru create mode 100644 pkg.in/lists/speech/voiceman create mode 100644 pkg.in/lists/storage/bacula create mode 100644 pkg.in/lists/storage/borg create mode 100644 pkg.in/lists/storage/burp create mode 100644 pkg.in/lists/storage/ceph-client create mode 100644 pkg.in/lists/storage/ceph-mgr create mode 100644 pkg.in/lists/storage/ceph-mon create mode 100644 pkg.in/lists/storage/ceph-osd create mode 100644 pkg.in/lists/storage/ceph-radosgw create mode 100644 pkg.in/lists/storage/glusterfs-client create mode 100644 pkg.in/lists/storage/glusterfs-server create mode 100644 pkg.in/lists/storage/linstor-client create mode 100644 pkg.in/lists/storage/linstor-controller create mode 100644 pkg.in/lists/storage/linstor-opennebula create mode 100644 pkg.in/lists/storage/linstor-pve create mode 100644 pkg.in/lists/storage/linstor-satellite create mode 100644 pkg.in/lists/storage/lizardfs-cgiserv create mode 100644 pkg.in/lists/storage/lizardfs-chunkserver create mode 100644 pkg.in/lists/storage/lizardfs-client create mode 100644 pkg.in/lists/storage/lizardfs-master create mode 100644 pkg.in/lists/storage/lizardfs-metalogger create mode 100644 pkg.in/lists/storage/moosefs-cgiserv create mode 100644 pkg.in/lists/storage/moosefs-chunkserver create mode 100644 pkg.in/lists/storage/moosefs-client create mode 100644 pkg.in/lists/storage/moosefs-master create mode 100644 pkg.in/lists/storage/moosefs-metalogger create mode 100644 pkg.in/lists/storage/nfs-ganesha-server create mode 100644 pkg.in/lists/storage/nfs-server create mode 100644 pkg.in/lists/storage/ocfs2 create mode 100644 pkg.in/lists/storage/open-iscsi create mode 100644 pkg.in/lists/storage/restic create mode 100644 pkg.in/lists/storage/scsitarget create mode 100644 pkg.in/lists/storage/targetcli create mode 100644 pkg.in/lists/storage/urbackup-client create mode 100644 pkg.in/lists/storage/urbackup-server create mode 100644 pkg.in/lists/storage/zfs create mode 100644 pkg.in/lists/systemd create mode 100644 pkg.in/lists/sysvinit create mode 100644 pkg.in/lists/tagged/README create mode 100644 pkg.in/lists/tagged/archive+base create mode 100644 pkg.in/lists/tagged/archive+extra create mode 100644 pkg.in/lists/tagged/base+bench create mode 100644 pkg.in/lists/tagged/base+builder create mode 100644 pkg.in/lists/tagged/base+clamav create mode 100644 pkg.in/lists/tagged/base+comm create mode 100644 pkg.in/lists/tagged/base+desktop+live create mode 100644 pkg.in/lists/tagged/base+efi create mode 100644 pkg.in/lists/tagged/base+extra create mode 100644 pkg.in/lists/tagged/base+firmware+wireless create mode 100644 pkg.in/lists/tagged/base+l10n create mode 100644 pkg.in/lists/tagged/base+network create mode 100644 pkg.in/lists/tagged/base+nm create mode 100644 pkg.in/lists/tagged/base+openvz create mode 100644 pkg.in/lists/tagged/base+pkg create mode 100644 pkg.in/lists/tagged/base+regular create mode 100644 pkg.in/lists/tagged/base+regular+extra create mode 100644 pkg.in/lists/tagged/base+rescue create mode 100644 pkg.in/lists/tagged/base+security create mode 100644 pkg.in/lists/tagged/base+smartcard create mode 100644 pkg.in/lists/tagged/base+tablet create mode 100644 pkg.in/lists/tagged/base+xorg create mode 100644 pkg.in/lists/tagged/base+xscreensaver create mode 100644 pkg.in/lists/tagged/basesystem create mode 100644 pkg.in/lists/tagged/basesystem+alterator create mode 100644 pkg.in/lists/tagged/bench+hpc create mode 100644 pkg.in/lists/tagged/bench+x11 create mode 100644 pkg.in/lists/tagged/builder+extra create mode 100644 pkg.in/lists/tagged/desktop+cinnamon create mode 100644 pkg.in/lists/tagged/desktop+cinnamon+extra create mode 100644 pkg.in/lists/tagged/desktop+clamav create mode 100644 pkg.in/lists/tagged/desktop+cups create mode 100644 pkg.in/lists/tagged/desktop+deepin create mode 100644 pkg.in/lists/tagged/desktop+dwm create mode 100644 pkg.in/lists/tagged/desktop+enlightenment create mode 100644 pkg.in/lists/tagged/desktop+enlightenment+extra create mode 100644 pkg.in/lists/tagged/desktop+fvwm create mode 100644 pkg.in/lists/tagged/desktop+gnustep create mode 100644 pkg.in/lists/tagged/desktop+gvfs create mode 100644 pkg.in/lists/tagged/desktop+ibus create mode 100644 pkg.in/lists/tagged/desktop+icewm create mode 100644 pkg.in/lists/tagged/desktop+live create mode 100644 pkg.in/lists/tagged/desktop+lxde create mode 100644 pkg.in/lists/tagged/desktop+lxde+extra create mode 100644 pkg.in/lists/tagged/desktop+lxqt create mode 100644 pkg.in/lists/tagged/desktop+lxqt+extra create mode 100644 pkg.in/lists/tagged/desktop+mate create mode 100644 pkg.in/lists/tagged/desktop+nm create mode 100644 pkg.in/lists/tagged/desktop+office create mode 100644 pkg.in/lists/tagged/desktop+regular create mode 100644 pkg.in/lists/tagged/desktop+sane create mode 100644 pkg.in/lists/tagged/desktop+smartcard create mode 100644 pkg.in/lists/tagged/desktop+wmaker create mode 100644 pkg.in/lists/tagged/desktop+wmaker+extra create mode 100644 pkg.in/lists/tagged/desktop+xfce+extra create mode 100644 pkg.in/lists/tagged/desktop+xorg create mode 100644 pkg.in/lists/tagged/desktop+xscreensaver create mode 100644 pkg.in/lists/tagged/dev+gnustep create mode 100644 pkg.in/lists/tagged/dev+security create mode 100644 pkg.in/lists/tagged/live+builder create mode 100644 pkg.in/lists/tagged/main+builder create mode 100644 pkg.in/lists/tagged/mobile+mate create mode 100644 pkg.in/lists/tagged/network+bench create mode 100644 pkg.in/lists/tagged/network+extra create mode 100644 pkg.in/lists/tagged/network+security create mode 100644 pkg.in/lists/tagged/pkg+extra create mode 100644 pkg.in/lists/tagged/regular+icewm create mode 100644 pkg.in/lists/tagged/regular+server create mode 100644 pkg.in/lists/tagged/regular+tde create mode 100644 pkg.in/lists/tagged/rescue+backup create mode 100644 pkg.in/lists/tagged/rescue+crypto create mode 100644 pkg.in/lists/tagged/rescue+extra create mode 100644 pkg.in/lists/tagged/rescue+fs create mode 100644 pkg.in/lists/tagged/rescue+live create mode 100644 pkg.in/lists/tagged/rescue+misc create mode 100644 pkg.in/lists/tagged/rescue+x11 create mode 100644 pkg.in/lists/tagged/rescue+x11+extra create mode 100644 pkg.in/lists/tagged/security+extra create mode 100644 pkg.in/lists/tagged/security+luks create mode 100644 pkg.in/lists/tagged/server+alterator create mode 100644 pkg.in/lists/tagged/server+extra create mode 100644 pkg.in/lists/tagged/server+network create mode 100644 pkg.in/lists/tagged/server+openvpn create mode 100644 pkg.in/lists/tagged/server+openvz create mode 100644 pkg.in/lists/tagged/server+sambaDC create mode 100644 pkg.in/lists/tagged/server+zabbix create mode 100644 pkg.in/lists/tagged/ve+tools create mode 100644 pkg.in/lists/tagged/xorg+misc create mode 100644 pkg.in/lists/tagged/xorg+vaapi create mode 100644 pkg.in/lists/tools/diag create mode 100644 pkg.in/lists/tools/hyperv create mode 100644 pkg.in/lists/tools/ipmi create mode 100644 pkg.in/lists/tools/monitoring create mode 100644 pkg.in/lists/tools/tuning create mode 100644 pkg.in/lists/tools/vzstats create mode 100644 pkg.in/lists/tools/wireless create mode 100644 pkg.in/lists/uboot create mode 100644 pkg.in/lists/virt/base.pkgs create mode 100644 pkg.in/lists/virt/cockpit/docker create mode 100644 pkg.in/lists/virt/cockpit/machines create mode 100644 pkg.in/lists/virt/cockpit/web create mode 100644 pkg.in/lists/virt/extra.pkgs create mode 100644 pkg.in/lists/virt/kvm create mode 100644 pkg.in/lists/virt/opennebula/flow create mode 100644 pkg.in/lists/virt/opennebula/gate create mode 100644 pkg.in/lists/virt/opennebula/gui create mode 100644 pkg.in/lists/virt/opennebula/node-kvm create mode 100644 pkg.in/lists/virt/opennebula/node-lxd create mode 100644 pkg.in/lists/virt/opennebula/server create mode 100644 pkg.in/lists/virt/openstack/block create mode 100644 pkg.in/lists/virt/openstack/compute create mode 100644 pkg.in/lists/virt/openstack/controller create mode 100644 pkg.in/lists/virt/openstack/network create mode 100644 pkg.in/lists/virt/openstack/storage create mode 100644 pkg.in/lists/virt/pve create mode 100644 pkg.in/lists/workstation/3rdparty create mode 100644 pkg.in/lists/workstation/admc create mode 100644 pkg.in/lists/workstation/agents create mode 100644 pkg.in/lists/workstation/alterator-web create mode 100644 pkg.in/lists/workstation/base.pkgs create mode 100644 pkg.in/lists/workstation/blender create mode 100644 pkg.in/lists/workstation/celluloid create mode 100644 pkg.in/lists/workstation/clamav create mode 100644 pkg.in/lists/workstation/claws-mail create mode 100644 pkg.in/lists/workstation/cloud-clients create mode 100644 pkg.in/lists/workstation/emulators create mode 100644 pkg.in/lists/workstation/extras create mode 100644 pkg.in/lists/workstation/freecad create mode 100644 pkg.in/lists/workstation/freeipa-client create mode 100644 pkg.in/lists/workstation/ganttproject create mode 100644 pkg.in/lists/workstation/gnome-peer-to-peer create mode 100644 pkg.in/lists/workstation/graphics-editing create mode 100644 pkg.in/lists/workstation/gtk-dictionary create mode 100644 pkg.in/lists/workstation/kvm create mode 100644 pkg.in/lists/workstation/libreoffice create mode 100644 pkg.in/lists/workstation/libreoffice-latest create mode 100644 pkg.in/lists/workstation/live.pkgs create mode 100644 pkg.in/lists/workstation/mate create mode 100644 pkg.in/lists/workstation/mate-usershare create mode 100644 pkg.in/lists/workstation/pidgin create mode 100644 pkg.in/lists/workstation/qgis create mode 100644 pkg.in/lists/workstation/raccess create mode 100644 pkg.in/lists/workstation/runa-client create mode 100644 pkg.in/lists/workstation/scanning create mode 100644 pkg.in/lists/workstation/scribus create mode 100644 pkg.in/lists/workstation/smartcard create mode 100644 pkg.in/lists/workstation/sound-editing create mode 100644 pkg.in/lists/workstation/the.pkgs create mode 100644 pkg.in/lists/workstation/thunderbird create mode 100644 pkg.in/lists/workstation/virtualbox create mode 100644 pkg.in/lists/workstation/vlc create mode 100644 pkg.in/lists/workstation/voip-clients create mode 100644 pkg.in/lists/x-e2k/e101-mga2 create mode 100644 pkg.in/lists/x-e2k/e101-modesetting create mode 100644 pkg.in/lists/x-e2k/e801-1seat create mode 100644 pkg.in/lists/x-e2k/e801-2seat create mode 100644 pkg.in/lists/x-e2k/e801-3seat create mode 100644 pkg.in/lists/x-e2k/e801-6seat create mode 100644 pkg.in/lists/x-e2k/e901-1seat create mode 100644 pkg.in/lists/x-e2k/e901-2seat create mode 100644 pkg.in/lists/x-e2k/e901-3seat create mode 100644 pkg.in/lists/x-e2k/x-autologin create mode 100644 pkg.in/lists/xfce-sysv create mode 100644 pkg.in/lists/zero create mode 100644 pkg.in/profiles/Makefile create mode 100644 pkg.in/profiles/README create mode 100644 pkg.in/profiles/centaurus-10-server.directory create mode 100644 pkg.in/profiles/centaurus-20-serverDC.directory create mode 100644 pkg.in/profiles/centaurus-30-desktop.directory create mode 100644 pkg.in/profiles/engineering/00-minimal.directory create mode 100644 pkg.in/profiles/engineering/10-design.directory create mode 100644 pkg.in/profiles/engineering/20-automations.directory create mode 100644 pkg.in/profiles/minimal.directory create mode 100644 pkg.in/profiles/server-v/111-opennebula-server.directory create mode 100644 pkg.in/profiles/server-v/112-opennebula-node.directory create mode 100644 pkg.in/profiles/server-v/113-opennebula-lxd.directory create mode 100644 pkg.in/profiles/server-v/121-openstack-node.directory create mode 100644 pkg.in/profiles/server-v/122-openstack-controller.directory create mode 100644 pkg.in/profiles/server-v/130-pve.directory create mode 100644 pkg.in/profiles/server-v/140-basic.directory create mode 100644 pkg.in/profiles/server-v/201-docker.directory create mode 100644 pkg.in/profiles/server-v/211-openvz.directory create mode 100644 pkg.in/profiles/server-v/999-minimal.directory create mode 100644 reports.mk create mode 100644 sub.in/Makefile create mode 100644 sub.in/README create mode 100644 sub.in/main/Makefile create mode 100644 sub.in/main/README create mode 100644 sub.in/main/lib/.gitignore create mode 100644 sub.in/rootfs/README create mode 100755 sub.in/rootfs/image-scripts.d/90-firsttime create mode 100644 sub.in/stage1/Makefile create mode 100644 sub.in/stage1/README create mode 100644 sub.in/stage1/files/.gitignore create mode 100644 sub.in/stage1/initfs create mode 100644 sub.in/stage1/modules create mode 100644 sub.in/stage1/modules.d/.gitignore create mode 100644 sub.in/stage1/scripts.d/.gitignore create mode 100644 sub.in/stage2/Makefile create mode 100644 sub.in/stage2/README create mode 100644 sub.in/stage2/files/.gitignore create mode 100755 sub.in/stage2/image-scripts.d/00-stage1 create mode 100755 sub.in/stage2/image-scripts.d/01-rootdir create mode 100755 sub.in/stage2/image-scripts.d/50-udev create mode 100755 sub.in/stage2/image-scripts.d/85-cleanup-cjk create mode 100755 sub.in/stage2/image-scripts.d/85-cleanup-legacy create mode 100755 sub.in/stage2/image-scripts.d/90-cleanup-drm create mode 100755 sub.in/stage2/image-scripts.d/97-cleanup-blacklisted create mode 100755 sub.in/stage2/image-scripts.d/98-depmod create mode 100755 sub.in/stage2/image-scripts.d/99-cleanup-boot create mode 100755 sub.in/stage2/image-scripts.d/99-tcb-fix create mode 100644 sub.in/stage2/lib/.gitignore create mode 100755 sub.in/stage2/scripts.d/99-elf-stats diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..f90922e --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5b279f5 --- /dev/null +++ b/Makefile @@ -0,0 +1,76 @@ +# umbrella mkimage-profiles makefile: +# iterate over multiple goals/arches, +# collect proceedings + +# preferences +-include $(HOME)/.mkimage/profiles.mk + +# for immediate assignment +ifndef ARCH +ARCH := $(shell arch \ + | sed 's/i686/i586/; s/armv7.*/armh/; s/armv.*/arm/') +endif + +ifndef ARCHES +ARCHES := $(ARCH) +endif + +export ARCHES ARCH + +export PATH := $(CURDIR)/bin:$(PATH) + +# recursive make considered useful for m-p +MAKE += -r --no-print-directory + +export DIRECT_TARGETS := help help/distro help/ve help/vm clean distclean check +.PHONY: $(DIRECT_TARGETS) + +# these build nothing so no use of reports either +$(DIRECT_TARGETS): + @$(MAKE) -f main.mk REPORT= $@ + +export NUM_TARGETS := $(words $(MAKECMDGOALS)) + +# for pipefail +SHELL = /bin/bash + +# don't even consider remaking a configuration file +.PHONY: $(HOME)/.mkimage/profiles.mk + +# real targets need real work +%: + @n=1; \ + set -o pipefail; \ + say() { echo "$$@" >&2; }; \ + if [ "$(NUM_TARGETS)" -gt 1 ]; then \ + n="`echo $(MAKECMDGOALS) \ + | tr '[[:space:]]' '\n' \ + | grep -nx "$@" \ + | cut -d: -f1`"; \ + say "** goal: $@ [$$n/$(NUM_TARGETS)]"; \ + else \ + say "** goal: $@"; \ + fi; \ + for ARCH in $(ARCHES); do \ + if [ -z "$(QUIET)" ]; then \ + if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then \ + say; \ + fi; \ + say "** ARCH: $$ARCH"; \ + fi; \ + if [ -n "$(REPORT)" ]; then \ + REPORT_PATH=$$(mktemp --tmpdir mkimage-profiles.report.XXXXXXX); \ + $(MAKE) -f main.mk ARCH=$$ARCH $@ | report-filter > $$REPORT_PATH || exit 1; \ + $(MAKE) -f reports.mk ARCH=$$ARCH REPORT=$(REPORT) REPORT_PATH=$$REPORT_PATH; \ + else \ + $(MAKE) -f main.mk ARCH=$$ARCH $@ || exit 1; \ + fi; \ + if [ -n "$(AUTOCLEAN)" ]; then $(MAKE) distclean; fi; \ + done; \ + if [ "$$n" -lt "$(NUM_TARGETS)" ]; then say; fi + +docs: + @$(MAKE) -C doc + +docs-publish: + @$(MAKE) -C doc publish diff --git a/QUICKSTART b/QUICKSTART new file mode 100644 index 0000000..931b10b --- /dev/null +++ b/QUICKSTART @@ -0,0 +1,54 @@ +English quickstart: make syslinux.iso (after setting up +http://en.altlinux.org/Hasher; large tmpfs helps a lot). + +требуется +~~~~~~~~~ +- ALT 8.0 или выше (возможна адаптация "вниз", см. ветки) +- установленный mkimage (свежий, как и hasher) +- пользователь с правом запуска hasher и подключения /proc к нему + +полезно +~~~~~~~ +- смонтированный tmpfs на несколько гигабайт (или укажите BUILDDIR) + * например, в /tmp или /home/USER/hasher + * каталог из prefix в /etc/hasher-priv/system +- установленный git-core и настроенный ~/.gitconfig + +команды +~~~~~~~ +от имени root:: +---- +# apt-get install mkimage mkimage-preinstall hasher git-core +# hasher-useradd USER +---- + +от имени указанного пользователя (после повторного входа):: +---- +$ git config --global user.email "my@email" +$ git config --global user.name "My Name" +$ mkdir -p ~/out ~/tmp +---- + +тестовая сборка (в каталоге mkimage-profiles):: +---- +$ make syslinux.iso +---- + +список доступных целей:: +---- +$ make help +---- + +переменные, влияющие на результат (подробнее в doc/params.txt):: +--- +$ make ARCH=i586 APTCONF=~/apt/apt.conf.i586 REPORT=1 ve/generic.tar +--- + +ссылки +~~~~~~ +- http://www.altlinux.org/tmpfs +- http://www.altlinux.org/hasher +- http://www.altlinux.org/mkimage +- http://www.altlinux.org/m-p +- http://www.altlinux.org/m-p-howto ("как поправить под себя") +- http://www.altlinux.org/starterkits/builder (сборочный LiveCD) diff --git a/README b/README new file mode 100644 index 0000000..5e4eebc --- /dev/null +++ b/README @@ -0,0 +1,84 @@ +== Welcome to m-p! == + +*Brief summary* + + Configurables: ~/.mkimage/profiles.mk; + see doc/params.txt and conf.d/README + + License: GPLv2+, see COPYING + + Most docs are in Russian, welcome to learn it or ask for English. + +Задача: + +* конфигурирование и создание образов на базе ALT Linux + +Концепция: + +* конфигурация, как и образ -- объект постадийной сборки +* метапрофиль служит репозиторием для построения индивидуального + профиля, по которому создаётся итоговый образ + +Особенности: + +* метапрофиль при сборке может быть доступен только на чтение +* для сборки подыскивается предпочтительно tmpfs +* в профиль копируются только нужные объекты; + он автономен относительно метапрофиля + +Стадии работы: + +* инициализация сборочного профиля +* сборка конфигурации образа +* наполнение сборочного профиля +* сборка образа + +Объекты: + +* дистрибутивы и виртуальные среды/машины: +** описываются в conf.d/*.mk +** могут основываться на предшественниках, расширяя их +** дистрибутивы также включают один или более субпрофилей по надобности +** желательно избегать множественного наследования, см. тж. фичи + +* субпрофили: +** список собирается в $(SUBPROFILES) +** базовые комплекты помещены в подкаталогах под sub.in/; + их наборы скриптов могут расширяться фичами + +* фичи: +** законченные блоки функциональности (или наборы таковых) +** описываются в индивидуальных features.in/*/config.mk +** могут требовать другие фичи, а также субпрофили +** накопительный список собирается в $(FEATURES) +** при сборке $(BUILDDIR) содержимое фич добавляется в профиль + +* списки пакетов (*_LISTS): +** _внимание_: не надо создавать фичу, если достаточно списка пакетов! +** просьба по возможности избегать дублирования (см. bin/pkgdups) + +* индивидуальные пакеты (*_PACKAGES): см. тж. conf.d/README + +Результат: + +* при успешном завершении сборки образ называется по имени цели + и укладывается в $(IMAGEDIR): +** указанный явно, +** либо ~/out/ (если возможно), +** или $(BUILDDIR)/out/ иначе +* формируются отчёты, если запрошены (REPORT) + +См. тж.: + +* https://altlinux.org/mkimage-profiles: обзорная документация, в т.ч. howto +* doc/: +** params.txt: переменные, указываемые при запуске сборки +** pkglists.txt: формирование состава образа +** features.txt: обзор подключаемых особенностей + +Примечание: пути в документации задаются от каталога верхнего уровня, +если не указаны как относительные в явном виде (./) или по смыслу. + +Удачи; что не так -- пишите. + +Michael Shigorin , Anton Midyukov diff --git a/apt.conf b/apt.conf new file mode 100644 index 0000000..b6e327d --- /dev/null +++ b/apt.conf @@ -0,0 +1,8 @@ +// these must be unset to avoid picking up +// /etc/apt/{apt.conf.d,sources.list.d,}/ +Dir::Etc::main "/dev/null"; +Dir::Etc::parts "/var/empty"; +Dir::Etc::SourceParts "/var/empty"; + +// this is what caused the whole trouble +Dir::Etc::sourcelist "/home/tema/mkimage-profiles/myp10"; diff --git a/bin/archdep-filter b/bin/archdep-filter new file mode 100755 index 0000000..69ff9c0 --- /dev/null +++ b/bin/archdep-filter @@ -0,0 +1,49 @@ +#!/bin/sh +# filter stdin or file for words related to +# the specified target architecture +# +# args: -a arch [-i file] + +if [ "$1" = "-a" -a -n "$2" ]; then + a="$2" + shift 2 +else + cat + exit +fi + +if [ "$1" = "-i" -a -w "$2" ]; then + f="$2" + t="`mktemp`" +fi + +# map meta-arches for prefiltering +# NB: biarch gets special expansion later +case "$a" in +i586) + A="(IA32|X86)";; +x86_64) + A="X86";; +e2k*) + A="E2K";; +aarch64|arm*) + A="ARM";; +*) + A=;; +esac + +# NB: pipe runs in parallel => faster than -e -e +cat ${f:+"$f"} | +sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$A\>/\1\2/pg" | +sed -rn "s/\<([^@ ]*)\>|\<[^@ ]*@\!$A\> */\1/pg" | +sed -r "s/\<([^@ ]*)@IA32\>/\1@i586 i586-\1@x86_64/g" | +sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$a\>/\1\2/pg" | +sed -rn "s/\<([^@ ]*)\>|\<[^@ ]*@\!$a\> */\1/pg" | +sed -r "s/\<([^@ ]*)@\![^@ ]+\>/\1/g" | +sed -r "s/\<([^@ ]*)@[^@ ]+\> *//g" | +sed -r "s/^ +//;s/ +$//" | +if [ -n "$f" ]; then + cat > "$t" && mv "$t" "$f" +else + cat +fi diff --git a/bin/check-pkg-list b/bin/check-pkg-list new file mode 100755 index 0000000..132a4f1 --- /dev/null +++ b/bin/check-pkg-list @@ -0,0 +1,100 @@ +#!/bin/sh +# script based on initial implementation +# by Vitaly Gusach (http://gusach.org.ua) +# +# purpose: warn on those entries in given packagelists(s) +# which are definitely absent; the build might still bail out +# but at least 80% of failures can be predicted early now +# +# usage: check-pkg-list [-n pkgnames] [--aptbox $PATH/to/aptbox] pkglist ... +# (pkgnames file should contain `apt-cache pkgnames`) +# NB: -n pkgnames MUST go first, if given + +RET_ERROR= + +error() { echo `basename $0`: $* >&2; exit 1; } + +exit_handler() { + local rc=$? + trap - EXIT + rm -f -- "$ftemp" "$fpkgnames" "$fpkgwildcards" "$favaillist" "$fpkgerrors" + exit $rc +} + +# figure out apt.conf from recent aptbox or fallback to system one +dump_pkgnames() { + ${APTBOX:+$APTBOX/}apt-cache pkgnames | sort -u > "$favaillist" +} + +check_pkglist() { + fprofilelist="$1" + [ -f "$fprofilelist" ] || error "invalid packagelist filename: $fprofilelist" + # cleaning pkg list from comments, empty lines, + # splitting several pkgnames on the same line + sed -e '/^#/d' -e '/^[ ]*$/d' -e 's/ \+$//' -e 's/[ ]\+/\n/g' \ + < "$fprofilelist" \ + | sed 's/-$//' \ + | sort -u \ + > "$ftemp" # got list of pkgnames we need + + # split pkgnames without wildcards and with wildcards + fgrep -v '*' "$ftemp" > "$fpkgnames" + fgrep '*' "$ftemp" > "$fpkgwildcards" + + # return unavailable packages + comm -23 "$fpkgnames" "$favaillist" > "$fpkgerrors" + + # return unavailable wildcards + while read i; do + # replacing * with regexp's \.+ + pattern="^`echo ${i#^} | sed -e 's/\*/.\\\\+/'`$" + grep -q "$pattern" "$favaillist" || echo "$i" >> "$fpkgerrors" + done < "$fpkgwildcards" + if [ -s "$fpkgerrors" ]; then + echo "Error: Packages are not available in $fprofilelist:" >&2 + RET_ERROR=1 + cat $fpkgerrors >&2 + fi +} + +[ "$#" -gt 0 ] || error "need at least one argument, a packagelist to check" + +# reusable temporary files with self-cleanup at exit +TEMP="${TMP:-/tmp}" +trap exit_handler HUP INT QUIT TERM EXIT +favaillist="`mktemp $TEMP/pkgchecker.avail.XXXXX`" +fpkgnames="`mktemp $TEMP/pkgchecker.names.XXXXX`" +fpkgwildcards="`mktemp $TEMP/pkgchecker.wildcards.XXXXX`" +fpkgerrors="`mktemp $TEMP/pkgchecker.error.XXXXX`" +ftemp="`mktemp $TEMP/pkgchecker.XXXXX`" + +# check args +while :; do + case "$1" in + # make sure pkgnames dump is handy + "-n"|"--pkgnames") + [ -f "$2" ] && { + sort "$2" > "$favaillist" + shift; shift + } || error "-n needs valid pkgnames filename" + ;; + # PATH to aptbox + "--aptbox") + [ -d "$2" ] && { + APTBOX="$2" + shift; shift + } || error "--aptbox needs valid directory" + ;; + *) + break + ;; + esac +done + +[ -s "$favaillist" ] || dump_pkgnames + +for list in "$@"; do + check_pkglist "$list" +done + +[ -z "$RET_ERROR" ] || error "Some lists contain unavailable packages" diff --git a/bin/check-recipe b/bin/check-recipe new file mode 100755 index 0000000..43fa7f3 --- /dev/null +++ b/bin/check-recipe @@ -0,0 +1,14 @@ +#!/bin/sh + +# missing "; @:" for recipeless rules makes SHELL payload useless +# (see also ../lib/report.mk); this results in broken target graphs +# (so REPORT=1 gets crippled) + + sed 's/^[a-z]\+\/.*:.*$/\n&/' "$@" \ +| grep -vE '^(#|export|if|else|endif|define|endef)' \ +| sed ':loop /^[^#].*[^\\]\\$/N; s/\\\n//; t loop' \ +| grep -vE ':=| = | ?= | += |^\$' \ +| sed ':loop /^[a-z]\+\/.*:.*$/N; s/\n\t\+@*/\; /; t loop' \ +| grep -vE ';|^$' && exit 1 ||: + +# see also http://unix.stackexchange.com/questions/228547 diff --git a/bin/cleanlog b/bin/cleanlog new file mode 100755 index 0000000..ade013a --- /dev/null +++ b/bin/cleanlog @@ -0,0 +1,24 @@ +#!/bin/sh +# try making build logs more diffable +# see also reports.mk + +[ -n "$BUILDDIR" ] || exit 1 + +sed -r \ + -e "s,$BUILDDIR,,g" \ + -e '/\/var\/lib\/apt\/lists/d' \ + -e 's/... .. ..:..:..//g' \ + -e 's/\[[0-9]+\]//g' \ + -e '/^(Reading Package Lists|Building Dependency Tree)/d' \ + -e '/^(Fetched|Need to get|After unpacking) /d' \ + -e '/^(Preparing packages for installation|Done\.)/d' \ + -e '/^hsh(|-(initroot|install|fakedev|(mk|rm)chroot|run)): /d' \ + -e '/^(hasher-priv|mkaptbox|(mk|rm)dir): /d' \ + -e '/^mki-((invalidate-|)cache|check-obsolete|prepare): /d' \ + -e '/^(mode of|changed (group|ownership)|removed) /d' \ + -e '/^chroot\/.in\//d' \ + -e '/ has started executing\.$/d' \ + -e '/\/var\/log\/apt\.log$/d' \ + -e '/\/usr\/share\/apt\/scripts\/log\.lua/d' \ + -e '/\.rpm$/d' \ + -e "/' -> '/d" diff --git a/bin/columnize b/bin/columnize new file mode 100755 index 0000000..eae033c --- /dev/null +++ b/bin/columnize @@ -0,0 +1,36 @@ +#!/bin/bash +# columnize.sh +# Take a list of values and output them in a nicely formatted column view. +# Author: Loïc Cattani "Arko" +# https://github.com/Arko/Columnize + +values=($*) +longest_value=0 + +# Find the longest value +for value in ${values[@]}; do + if [[ ${#value} -gt $longest_value ]]; then + longest_value=${#value} + fi +done + +# Compute column span +term_width=${COLUMNS:-$(tput cols)} +(( columns = $term_width / ($longest_value + 2) )) + +# Print values with pretty column width +curr_col=0 +for value in ${values[@]}; do + value_len=${#value} + echo -n $value + (( spaces_missing = $longest_value - $value_len + 2 )) + printf "%*s" $spaces_missing + (( curr_col++ )) + if [[ $curr_col == $columns ]]; then + echo + curr_col=0 + fi +done + +# Make sure there is a newline at the end +if [[ $curr_col != 0 ]]; then echo; fi diff --git a/bin/metadep-expander b/bin/metadep-expander new file mode 100755 index 0000000..00cd6aa --- /dev/null +++ b/bin/metadep-expander @@ -0,0 +1,30 @@ +#!/bin/sh +# Expand metapackage dependenies +# +APT_CACHE=$1 +f=$2 +[ -n "$f" ] || exit 0 + +metapkgs="$(grep -e @META "$f" | grep -v '^#')" +[ -n "metapkgs" ] || exit 0 + +for metapkg in $metapkgs; do + metapkg=${metapkg%@META} + if ! "$APT_CACHE" show "$metapkg" > /dev/null 2>&1; then + echo "Warning: Metapackage $metapkg not available!!!" >&2 + continue + fi + t="`mktemp`" + LANG=C "$APT_CACHE" depends "$metapkg"| grep 'Depends:' | + cut -f4 -d ' ' |grep -v '<' > "$t" + if [ -s "$t" ]; then + sed -i -e "/$metapkg@META/r $t" -e "s/$metapkg@META/$metapkg/" "$f" + fi + sed -i "s/$metapkg@META/$metapkg/" "$f" + rm -f "$t" +done + +# Cleanup not available metapackages +sed -i "/@META/d" "$f" + +exit 0 diff --git a/bin/mktmpdir b/bin/mktmpdir new file mode 100755 index 0000000..758c4c7 --- /dev/null +++ b/bin/mktmpdir @@ -0,0 +1,97 @@ +#!/bin/sh +# analyze free space, preferring tmpfs over really many gigaz +# and taking into account configured hasher workdir prefices + +# NB: use BUILDDIR to override autodetection (see ../QUICKSTART) + +# hope there aren't spaces in RM's $HOME are they? +DIRS="$TMP $TMPDIR $HOME/hasher /tmp /var/tmp .." +MINSIZE=262144 # face control criterion + +# mkimage needs /proc among those, be clear about that +check_allowed_mountpoints() +{ + grep -wqs "^allowed_mountpoints=[^#]*/proc" \ + /etc/hasher-priv/system \ + `/usr/libexec/hasher-priv/getconf.sh` +} + +# poor man's SourceIfExists() +try_source() { [ -f "$1" ] && . "$1"; } + +# hasher accepted ones +get_prefices() +{ + try_source /etc/hasher-priv/system || exit 1 + try_source `/usr/libexec/hasher-priv/getconf.sh` + echo "$prefix" | tr ':' '\n' | while read i; do realpath "$i"; done +} + +# drop candidates that hasher won't handle anyways +# NB: doesn't take --number into account, +# prefix lists are defined by the primary configuration +contemplate_dirs() +{ + for d in "$@"; do + D="`realpath "$d"`"; + for p in `get_prefices`; do + [ "${D#$p}" = "$D" ] || echo "$D"; + done; + done \ + | uniq # _not_ sort -u +} + +# hasher emits no meaningful errors regarding those, sigh +check_options() +{ + ! egrep -q "^$1 $2 .*no(dev|exec)" /proc/mounts +} + +# pick existing, writeable, >256M free space dirs +# rank them wrt type: tmpfs > realfs > rootfs +choose_tmpdir() { + for i in "$@"; do + [ -d "$i" -a -w "$i" ] || continue + echo -n "$i " + df -PT "$i" | tail -1 + done \ + | sort -unk5 \ + | while read dir dev fstype size used free percent mnt; do + check_options "$dev" "$mnt" || continue + [ "$free" -gt "$MINSIZE" ] || continue + [ "$fstype" = "tmpfs" ] && { echo "2 $dir $free"; continue; } + [ "$mnt" = "/" ] && { echo "0 $dir $free"; continue; } + echo "1 $dir $free" + done \ + | sort -n \ + | tail -1 \ + | cut -f2 -d' ' +} + +# bringing it all together +if ! check_allowed_mountpoints; then + echo "error: hasher's allowed_mountpoints do not include /proc;" + echo "please check hasher docs and /etc/hasher-priv/system" + exit 1 +fi >&2 + +TMPDIRS="`contemplate_dirs $DIRS`" +if [ -z "$TMPDIRS" ]; then + echo "error: no suitable directories found;" + echo "please check QUICKSTART, filesystem and hasher setup" + echo "(mount enough tmpfs into /tmp or fix hasher-priv prefix?)" + exit 1 +fi >&2 + +TEMP="`choose_tmpdir $TMPDIRS`" +if [ -z "$TEMP" ]; then + echo "error: no suitable directories found;" + echo "please check hasher docs and filesystem setup" + echo "(nodev and/or noexec on an otherwise suitable filesystem?)" + exit 1 +fi >&2 + +DIR="$TEMP/`dirname "$1"`" +NAME="`basename "${1:-tmpdir}"`" +mkdir -p "$DIR" # in case $1 contains slash(es) +mktemp -d "$NAME.XXXXXXX" --tmpdir="${DIR%/.}" diff --git a/bin/mp-commit b/bin/mp-commit new file mode 100755 index 0000000..18159b7 --- /dev/null +++ b/bin/mp-commit @@ -0,0 +1,27 @@ +#!/bin/sh +# commit the directory ($1) with a message ($2) to git + +. shell-error + +INIT= +if [ "$1" = "-i" ]; then + INIT=yes + shift +fi + +[ -d "$1" ] || fatal "$1 is not an existing directory" + +if type -t git >&/dev/null && pushd "$1" >/dev/null; then + if [ -z "$(git config --global user.name)" ]; then + exit 0 + fi + if [ -n "$INIT" -a ! -d .git ]; then + git init -q || fatal "git init failed" + fi + if [ -n "$(git status -s)" ]; then + git add . \ + && git commit -anq -m "$2" \ + || fatal "git add/commit failed" + fi + popd >/dev/null +fi diff --git a/bin/mp-showref b/bin/mp-showref new file mode 100755 index 0000000..8992088 --- /dev/null +++ b/bin/mp-showref @@ -0,0 +1,11 @@ +#!/bin/sh +# report on git repo in the current directory + +if type -t git >&/dev/null; then + if pushd "$1" >/dev/null && [ -d .git ]; then + git show-ref --head -ds -- HEAD + git status -s + echo + popd >/dev/null + fi +fi diff --git a/bin/pkgdups b/bin/pkgdups new file mode 100755 index 0000000..452a714 --- /dev/null +++ b/bin/pkgdups @@ -0,0 +1,20 @@ +#!/bin/sh +# a script to help weed out duplicate packages +# contained in package lists given as arguments +# +# Requires: libshell + +. /bin/shell-quote + +sort "$@" \ +| grep -v '^ *#' \ +| sed -s 's,[ ]\+, ,g' \ +| grep -v '^ *$' \ +| uniq -cd \ +| while read num str; do + echo -n "$str: $num "; + pattern="`quote_sed_regexp "$str"`" + grep -l "^$pattern$" "$@" | tr '\n' ' ' + echo +done \ +| sort -rn -t: -k2 diff --git a/bin/report-filter b/bin/report-filter new file mode 100755 index 0000000..fac5e1b --- /dev/null +++ b/bin/report-filter @@ -0,0 +1,4 @@ +#!/bin/sh +# filter worker make stdout for report scripts + +grep '^trace:building ' | uniq diff --git a/bin/report-targets b/bin/report-targets new file mode 100755 index 0000000..1f656e2 --- /dev/null +++ b/bin/report-targets @@ -0,0 +1,33 @@ +#!/bin/sh + +echo "digraph {" +echo " { node [fontname=Helvetica,fontsize=20];" + +while read first second third rest; do + FROM=; TO= + case "$first" in + "trace:building") + case "$third" in + "->") + FROM="$second"; TO="$rest";; + *) + continue;; + esac + ;; + *) + continue;; + esac + [ -n "$FROM" -a -n "$TO" ] || continue + for to in $TO; do + out=" \"$FROM\" -> \"$to\"" + case $to in + *distro/*|*vm/*|*ve/*) + echo "$out [weight=10];";; + *) + echo "$out;";; + esac + done +done + +echo " }" +echo "}" diff --git a/bin/report-targets2vars b/bin/report-targets2vars new file mode 100755 index 0000000..b7a2fb1 --- /dev/null +++ b/bin/report-targets2vars @@ -0,0 +1,52 @@ +#!/bin/sh + +DISTCFG=build/distcfg.mk +[ -s "$DISTCFG" ] || exit 1 + +VARIABLES= + +echo "graph { rankdir=LR;" +echo " { node [height=.1,width=.3,fontname=Helvetica,fontsize=10];" + +feat_vars() +{ +FEATURE= + while read first second rest; do + case "$first" in + \#[A-Z]*) + continue;; # overridden feature + \#) # feature mark + case "$second" in + profile/*) + FEATURE=;; + *) + FEATURE="$second";; + esac + ;; + *) + case "$second" in + =|+=|?=) + case "$first" in + DISTCFG_MK|SUBPROFILES|FEATURES|IMAGE*|MKIMAGE_*) + continue;; + *) + VAR="$first" + VARIABLES="$VARIABLES; $VAR" + ;; + esac + ;; + *) + continue;; + esac + ;; + esac + [ -n "$FEATURE" -a -n "$VAR" ] || continue + echo " \"$FEATURE\" -- \"$VAR\";" + done < "$DISTCFG" + echo " { node [shape=box]$VARIABLES; }" +} + +feat_vars | LC_COLLATE=C sort -ru + +echo " }" +echo "}" diff --git a/bin/tags2lists b/bin/tags2lists new file mode 100755 index 0000000..ad47877 --- /dev/null +++ b/bin/tags2lists @@ -0,0 +1,36 @@ +#!/bin/sh -f +# a script to transform a tag name, a list of tag names (ANDed then), +# or a complex boolean expression into a list of package list names. +# examples of expected stdin: +# +# kde +# live gnome +# (base && (kernel || apt || alterator)) +# +# NB: tags are processed using word boundaries, +# so avoid using "-" in tag names + +DIR="${1:?need base directory}" + +warn() { + echo "$0: WARNING: $*" >&2 + exit +} + +[ -d "$DIR" ] || warn "$DIR nonexistent" +cd "$DIR" || warn "cannot change to $DIR" + +# NB: care with quoting +transformed="$(sed \ + -e "s,\([^&|! ()']\+\),-regex ^.*\\\\<\1\\\\>.*$,g" \ + -e "s, *&& *, -a ,g" \ + -e "s, *|| *, -o ,g" \ + -e "s, *! *, ! ,g" \ + -e "s, *( *, ( ,g" \ + -e "s, *) *, ) ,g")" + +[ "$DEBUG" = 2 ] && echo "`basename $0`: transformed = \"$transformed\"" >&2 +[ -z "$transformed" ] || + find $transformed \ + | sed 's,^\./,,' \ + | egrep -v '(\.sw.|~)$' diff --git a/bin/tar2fs b/bin/tar2fs new file mode 100755 index 0000000..7893c13 --- /dev/null +++ b/bin/tar2fs @@ -0,0 +1,458 @@ +#!/bin/bash -ex +# usage: +# tar2fs chroot.tar image.raw [size_in_bytes [fstype]] + +. shell-error +export LANG=C + +if [ $# -lt 2 ]; then + fatal "error: tar2fs needs at least two arguments" +fi + +# this needs env_keep sudo setup to actually work +if [ -n "$GLOBAL_BUILDDIR" ]; then + WORKDIR="$GLOBAL_BUILDDIR/vmroot" +else + WORKDIR="$(mktemp --tmpdir -d vmroot-XXXXX)" +fi + +[ -n "$WORKDIR" ] || fatal "couldn't come up with suitable WORKDIR" + +[ -n "$GLOBAL_DEBUG" ] || message "WORKDIR: $WORKDIR" + +MB=1048576 # a parted's "megabyte" in bytes is *broken* + +SIZE_FACTOR=2 # multiply the sizes found by this value +BOOT_SIZE_FACTOR=2 # multiply /boot size by this value additionally +BOOTLOADERPARTSIZEM=0 # PReP partition size (ppc*) + +CUR_BOUNDARY=0 # align first partition at 1MB for performance (+1) + +BOOTFSTYPE= +BOOTPART= +EFIPARTFSTYPE= +EFIPART= + +BOOTLOADER="$5" + +if [ -n "$6" ]; then + ARCH="$6" +else + ARCH="$(arch)" +fi + +BOOTTYPE="$8" + +case "$ARCH" in +e2k*) + BOOTFSTYPE="ext2" # firmware knows it + BLOCKDEV="/dev/sda" # ...hopefully... + BOOTPART="1" + ROOTPART="2" + ;; +ppc*) + BOOTFSTYPE="ext4" + BLOCKDEV="/dev/sda" + BOOTLOADERPART="1" + BOOTLOADERPARTSIZEM="8" + ROOTPART="2" + ;; +arm*|aarch64) + ROOTPART="1" + BLOCKDEV="/dev/sda" + CUR_BOUNDARY=15 # offset 16 MiB for singleboard's + ;; +*) + ROOTPART="1" + BLOCKDEV="/dev/sda" + ;; +esac + +if [ "$BOOTLOADER" == grub-efi -o "$BOOTTYPE" == EFI ]; then + EFIPART="1" + EFIPARTSIZEM="256" + EFIPARTFSTYPE="fat" + ROOTPART="2" +fi + +PARTTABLE="$7" +if [ -z "$PARTTABLE" ]; then + if [ "$BOOTLOADER" == grub-efi ]; then + PARTTABLE=gpt + else + PARTTABLE=msdos + fi +fi + +# figure out the part taken by /boot in the given tarball +boot_size() { + if [ -n "$BOOTPART" ]; then + tar tvf "$1" \ + | awk ' \ + BEGIN { sum=0 } + /^-.* \.\/boot\// { sum=sum+$3 } + END { print sum }' + else + echo "0" + fi +} + +# parted wrapper for convenience +parting() { parted "$LOOPDEV" --align optimal --script -- "$@"; } + +# unfortunately parted is insane enough to lump alignment controls +# into unit controls so creating adjacent partitions sized in MiB +# is not as straightforward as it might be... thus "+1" padding; +# see also http://www.gnu.org/software/parted/manual/parted.html#unit +mkpart() { + # a bit different start/end semantics to handle end of device too + local start="$(($CUR_BOUNDARY + 1))" # yes, we lose a megabyte + if [ -n "$1" ]; then + CUR_BOUNDARY="$(($start + $1))" + local end="$CUR_BOUNDARY"MiB + else + local end="$OFFSET"MiB + fi + if [ -n "$2" ]; then + CUR_FS="$2" + else + CUR_FS=ext2 + fi + parting mkpart primary "$CUR_FS" "$start"MiB "$end" +} + +# a tarball containing chroot with a kernel +TAR="$1" +[ -s "$TAR" ] || fatal "source tarball doesn't really exist" + +# a path to the image to be generated +IMG="$2" +[ -d "$(dirname "$IMG")" ] || fatal "target directory doesn't exist" + +# 0 means auto; if a value is specified it holds (no /boot subtracted) +ROOTSIZE="$3" +[ -n "$ROOTSIZE" -a "$ROOTSIZE" != 0 ] || unset ROOTSIZE + +# image size in bytes +TARSIZE="$(stat -Lc %s "$TAR")" +# /boot size in that tarball +BOOTSIZE="$(boot_size "$TAR")" +DEFSIZE="$(($SIZE_FACTOR * ($TARSIZE - $BOOTSIZE)))" # (exact sizes) +ROOTSIZE="$((${ROOTSIZE:-$DEFSIZE} + $MB - 1))" # for ceil rounding to MB +# image and /boot sizes in megabytes +ROOTSIZEM="$(($ROOTSIZE / $MB))" +BOOTSIZEM="$((($SIZE_FACTOR * $BOOT_SIZE_FACTOR * $BOOTSIZE + $MB - 1) / $MB))" + +# tested to work: ext[234], jfs +# NB: xfs doesn't have a spare sector for the bootloader +ROOTFSTYPE="${4:-ext4}" + +# single root partition hardwired so far, +# add another image for home/data/swap if needed +ROOTDEV="$BLOCKDEV$ROOTPART" + +# last preparations... +MKFS="mkfs.$ROOTFSTYPE ${BOOTFSTYPE:+mkfs.$BOOTFSTYPE} \ + ${EFIPARTFSTYPE:+mkfs.$EFIPARTFSTYPE}" +for i in losetup sfdisk parted kpartx $MKFS; do + if ! type -t "$i" >&/dev/null; then + fatal "$i required but not found in host system" + fi +done + +LOOPDEV="$(losetup --find)" # would be sad about non-binary megabytes too +ROOTFS="$WORKDIR/chroot" + +BOOTFS= +EFIPARTFS= +if [ -n "$BOOTPART" ]; then + BOOTFS="$ROOTFS/boot" +fi +if [ -n "$EFIPART" ]; then + EFIPARTFS="$ROOTFS/boot/efi" +fi + +exit_handler() { + rc=$? + cd / + if [ -n "$ROOTFS" ]; then + umount ${EFIPARTFS:+"$EFIPARTFS"} ${BOOTFS:+"$BOOTFS"} \ + "$ROOTFS"{/dev,/proc,/sys,} + + if [ -n "$LOOPDEV" ]; then + kpartx -d -s "$LOOPDEV" || { + sleep 10 + kpartx -d -s -v "$LOOPDEV" + } + losetup --detach "$LOOPDEV" + fi + rm -r -- "$ROOTFS" + rmdir -- "$WORKDIR" + fi + exit $rc +} + +# handle -e in shebang as well +trap exit_handler EXIT ERR + +# prepare disk image and a filesystem inside it +rm -f -- "$IMG" +OFFSET="$(($CUR_BOUNDARY + $EFIPARTSIZEM + $BOOTLOADERPARTSIZEM + $BOOTSIZEM + $ROOTSIZEM - 1))" +dd if=/dev/zero of="$IMG" conv=notrunc bs=$MB count=1 seek="$OFFSET" +losetup "$LOOPDEV" "$IMG" + +parting mklabel "$PARTTABLE" + +if [ -n "$BOOTLOADERPART" ] && [ -n "$BOOTLOADERPARTSIZEM" ]; then + case "$ARCH" in + ppc*) + parting mkpart primary ext2 $((CUR_BOUNDARY+1))MiB $((BOOTLOADERPARTSIZEM + 1))MiB + CUR_BOUNDARY="$BOOTLOADERPARTSIZEM" + parting set 1 prep on + parting set 1 boot on + ;; + esac +fi + +if [ -n "$EFIPART" ]; then + EFIDEV="$EFIDEV$EFIPART" + if [ "$PARTTABLE" == gpt ]; then + parting mkpart fat32 $((CUR_BOUNDARY+1))MiB $(($EFIPARTSIZEM + 1))MiB + else + parting mkpart primary fat32 $((CUR_BOUNDARY+1))MiB $(($EFIPARTSIZEM + 1))MiB + fi + CUR_BOUNDARY="$EFIPARTSIZEM" + parting set 1 boot on + if [ "$PARTTABLE" == gpt ]; then + parting set 1 esp on + fi +fi + +if [ -n "$BOOTPART" ]; then + BOOTDEV="$BLOCKDEV$BOOTPART" + mkpart "$BOOTSIZEM" +fi + +# not ROOTSIZEM but "the rest"; somewhat non-trivial arithmetics lurk in parted +mkpart + +kpartx -a -s "$LOOPDEV" +LOOPROOT="/dev/mapper/$(basename "$LOOPDEV")p$ROOTPART" + +mkfs."$ROOTFSTYPE" "$LOOPROOT" + +if [ -n "$BOOTPART" ]; then + LOOPBOOT="/dev/mapper/$(basename "$LOOPDEV")p$BOOTPART" + mkfs."$BOOTFSTYPE" "$LOOPBOOT" +fi + +if [ -n "$BOOTLOADERPART" ] && [ -n "$BOOTLOADERPARTSIZEM" ]; then + LOOPBOOTLOADER="/dev/mapper/$(basename "$LOOPDEV")p$BOOTLOADERPART" +fi + +if [ -n "$EFIPART" ]; then + LOOPEFI="/dev/mapper/$(basename "$LOOPDEV")p$EFIPART" + mkfs.fat -F32 "$LOOPEFI" +fi + +ROOTUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPROOT")" +if [ -n "$ROOTUUID" ]; then + ROOTDEV="UUID=$ROOTUUID" +else + ROOTDEV="$LOOPROOT" +fi + +if [ -n "$BOOTPART" ]; then + BOOTUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPBOOT")" + if [ -n "$BOOTUUID" ]; then + BOOTDEV="UUID=$BOOTUUID" + fi +fi + +if [ -n "$EFIPART" ]; then + EFIUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPEFI")" + if [ -n "$EFIUUID" ]; then + EFIDEV="UUID=$EFIUUID" + fi +fi + +# mount and populate it +mkdir -pm755 "$ROOTFS" +mount "$LOOPROOT" "$ROOTFS" + +if [ -n "$BOOTPART" ]; then + mkdir -pm700 "$BOOTFS" + mount "$LOOPBOOT" "$BOOTFS" +fi + +if [ -n "$EFIPART" ]; then + mkdir -pm751 "$EFIPARTFS" + mount "$LOOPEFI" "$EFIPARTFS" +fi + +tar -C "$ROOTFS" --numeric-owner -xf "$TAR" +for i in /dev /proc /sys; do mount --bind "$i" "$ROOTFS$i"; done + +# loop device so lilo could work... +if grep -qe "[[:space:]]/[[:space:]]" "$ROOTFS/etc/fstab"; then \ + sed -i "s/LABEL=ROOT/$ROOTDEV/" "$ROOTFS/etc/fstab" +else + echo "$ROOTDEV / $ROOTFSTYPE relatime 1 1" >> "$ROOTFS/etc/fstab" +fi + +# target device at once +if [ -n "$BOOTPART" ]; then + echo "$BOOTDEV /boot $BOOTFSTYPE defaults 1 2" >> "$ROOTFS/etc/fstab" +fi +if [ -n "$EFIPART" ]; then + echo "$EFIDEV /boot/efi vfat umask=0,quiet,showexec,iocharset=utf8,codepage=866 1 2" >> "$ROOTFS/etc/fstab" +fi + +# Query ARCH in chroot and redefine arch-dependent variable +ARCH="$(chroot "$ROOTFS" rpm --eval '%_host_cpu')" + +# NB: don't stick BOOTFS here, it has slightly different semantics +pushd $ROOTFS/boot + +# 4.9.76-elbrus-def-alt1.11.1 -> def +get_label() { echo "${1# *}" | sed -r 's,.*elbrus-([0-9a-z]+)-.*$,\1,'; } + +KVERSIONS= +KVERSIONS="$(chroot "$ROOTFS" rpm -qa 'kernel-image*' \ + --qf '%{installtime} %{version}-%{name}-%{release}\n' \ + | sort -n \ + | cut -f 2 -d ' ' \ + | sed 's/kernel-image-//')" +[ -n "$KVERSIONS" ] || fatal "unable to deduce kernel version" +rm -f .origver + +# clean fstab +sed -i "/LABEL=ROOT/d" "$ROOTFS/etc/fstab" +# ...target device too +sed -i "s,$LOOPROOT,$ROOTDEV," "$ROOTFS/etc/fstab" + +echo "** KVERSIONS=[$KVERSIONS]" >&2 + +if [ "`echo $KVERSIONS | wc -w`" = 1 ]; then # 2+ labels + echo -e "default=`get_label $KVERSIONS`\n" >> boot.conf +fi + +# FIXME: relies on particular (current) kernel package naming scheme +for v in $KVERSIONS; do + l="`get_label "$v"`" + cat >> boot.conf < "$ROOTFS"/etc/lilo-loop.conf <<-EOF + boot=$LOOPDEV + disk=$LOOPDEV + bios=0x80 + cylinders=$1 + heads=$2 + sectors=$3 + partition=$LOOPROOT + start=63 + $LILO_COMMON + EOF + + chroot "$ROOTFS" lilo -C /etc/lilo-loop.conf + + cat > "$ROOTFS"/etc/lilo.conf <<-EOF + boot=$BLOCKDEV + $LILO_COMMON + EOF + ;; +grub-efi) + echo 'GRUB_DISABLE_OS_PROBER=true' >> "$ROOTFS"/etc/sysconfig/grub2 + chroot "$ROOTFS" grub-mkconfig -o /boot/grub/grub.cfg + case "$ARCH" in + x86_64) + chroot "$ROOTFS" grub-install --target=i386-efi --recheck \ + --removable --uefi-secure-boot + chroot "$ROOTFS" grub-install --target=x86_64-efi --recheck \ + --removable --uefi-secure-boot + sed -i 's/initrd16/initrdefi/g' "$ROOTFS/boot/grub/grub.cfg" + sed -i 's/linux16/linuxefi/g' "$ROOTFS/boot/grub/grub.cfg" + ;; + aarch64) + chroot "$ROOTFS" grub-install --target=arm64-efi --recheck \ + --removable --no-uefi-secure-boot + ;; + armh) + chroot "$ROOTFS" grub-install --target=arm-efi --recheck \ + --removable --no-uefi-secure-boot + ;; + riscv64) + chroot "$ROOTFS" grub-install --target=riscv64-efi --recheck \ + --removable --no-uefi-secure-boot + esac + sed -i '/GRUB_DISABLE_OS_PROBER=true/d' "$ROOTFS/etc/sysconfig/grub2" + ;; +grub) + echo 'GRUB_DISABLE_OS_PROBER=true' >> "$ROOTFS"/etc/sysconfig/grub2 + chroot "$ROOTFS" grub-mkconfig -o /boot/grub/grub.cfg + case "$ARCH" in + *86*) + chroot "$ROOTFS" grub-install --target=i386-pc "$LOOPDEV" + sed -i 's/initrdefi/initrd16/g' "$ROOTFS/boot/grub/grub.cfg" + sed -i 's/linuxefi/linux16/g' "$ROOTFS/boot/grub/grub.cfg" + ;; + ppc*) + [ -z "$LOOPBOOTLOADER" ] || + chroot "$ROOTFS" grub-install --target=powerpc-ieee1275 \ + --no-nvram "$LOOPBOOTLOADER" + ;; + esac + sed -i '/GRUB_DISABLE_OS_PROBER=true/d' "$ROOTFS/etc/sysconfig/grub2" + ;; +esac + +if [ -n "$SUDO_USER" ]; then + chown "$SUDO_USER:$(id -g "$SUDO_USER")" "$IMG" ||: +fi +# maybe qemu interpreter was copied to chroot; +# this is no longer necessary, remove +rm -rf "$ROOTFS"/.host ||: diff --git a/bld/Makefile b/bld/Makefile new file mode 100644 index 0000000..f03e0ad --- /dev/null +++ b/bld/Makefile @@ -0,0 +1,125 @@ +# step 4: dive into mkimage + +GLOBAL_BUILDDIR ?= $(shell pwd) +CURRENT_LINK := mkimage-profiles +OUT_LINK := out + +# there were mkimage fixes induced by mkimage-profile development +# - minimal version is bumped for critical bugfixes/features +# - optimal one relates to the less universally relevant bits +MKI_VER_MINIMAL = 0.1.7 +MKI_VER_OPTIMAL = 0.2.6 + +include distcfg.mk +include functions.mk + +# check the build environment +ifeq (,$(realpath $(MKIMAGE_PREFIX)/config.mk)) +$(error please apt-get install mkimage and have a look at QUICKSTART as well) +endif + +include $(MKIMAGE_PREFIX)/config.mk + +ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_MINIMAL) | tr -d [0-9])) +$(info error: mkimage-$(MKI_VERSION) is too old, please upgrade) +$(error mkimage is too old, $(MKI_VER_MINIMAL) is minimal supported version) +endif +ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_OPTIMAL) | tr -d [0-9])) +$(info warning: mkimage-$(MKI_VERSION) is suboptimal, consider upgrading) +$(warning consider upgrading mkimage to $(MKI_VER_OPTIMAL) or better) +endif + +# glob it just in case +IMAGEDIR := $(wildcard $(IMAGEDIR)) + +# additional means to reduce havoc in IMAGEDIR +IMAGE_SORTDIR := $(wildcard $(SORTDIR)) + +# use distro version in image name if defined +ifdef DISTRO_VERSION +IMAGE_VERSION := -$(DISTRO_VERSION) +IMAGE_VER_LINK := $(IMAGE_NAME)$(IMAGE_VERSION)-latest-$(ARCH).$(IMAGE_TYPE) +endif + +IMAGE_OUTNAME := $(IMAGE_NAME)$(IMAGE_VERSION)-$(STATUS)$(DATE)-$(ARCH) +IMAGE_OUTFILE := $(IMAGE_OUTNAME).$(IMAGE_TYPE) +IMAGE_OUTDIR := $(IMAGEDIR)$(IMAGE_SORTDIR:%=/%) +IMAGE_OUTPATH := $(IMAGE_OUTDIR)/$(IMAGE_OUTFILE) +IMAGE_RELPATH := $(IMAGE_SORTDIR:%=%/)$(IMAGE_OUTFILE) +IMAGE_RELDIR := $(IMAGE_OUTDIR:$(GLOBAL_BUILDDIR)/%=%) +IMAGE_LINK := $(IMAGE_NAME)-latest-$(ARCH).$(IMAGE_TYPE) +IMAGE_LINKPATH := $(IMAGEDIR)/$(IMAGE_LINK) + +### multi-pack can be useful (think netinst iso/tree) +MKI_PACK_RESULTS = $(IMAGE_PACKTYPE):$(IMAGE_OUTFILE) + +# these get copied over as is +COPY_TREE = ./files + +# outdir shouldn't be wiped clean before use +CLEANUP_OUTDIR ?= + +GLOBAL_TARGET := $(ARCH) +GLOBAL_HSH_LANGS := $(INSTALL_LANGS) +GLOBAL_HSH_APT_CONFIG := $(wildcard $(APTCONF)) + +# take the latter part for complex-specified subprofiles like stage2@live; +# care to exclude non-directories holding no makefiles like rootfs +SUBDIRS = $(dir $(wildcard $(addsuffix /Makefile,$(SUBPROFILE_DIRS)))) + +# the lib/build-*.mk comes from features.in/build-*/lib +include $(sort $(wildcard lib/*.mk)) +include $(MKIMAGE_PREFIX)/targets.mk + +# specified only for the final image (target-specific) +pack-image: OUTDIR = $(IMAGE_OUTDIR) +pack-image: imagedir + +copy-tree: $(SAVE_PROFILE:%=save-profile) + +save-profile: + @mkdir -p files/.disk; \ + git archive --prefix=mkimage-profile/ HEAD ":!.work" \ + | gzip -9 > files/.disk/profile.tgz + +.PHONY: imagedir postprocess debug + +prep: imagedir + +imagedir: + @mkdir -p "$(IMAGE_OUTDIR)" + +postprocess: | $(addprefix postprocess-,$(sort $(POSTPROCESS_TARGETS))) + @OUTSIZE="`ls -lh "$(IMAGE_OUTPATH)" | cut -f5 -d' '`"; \ + if [ ! -n "$$OUTSIZE" ]; then \ + echo "** error: $(IMAGE_OUTPATH) missing" >&2; \ + exit 1; \ + fi; \ + if [ -n "$(VM_SAVE_TARBALL)" ]; then \ + echo "** tarball saved: $(IMAGE_OUTPATH)/$(IMAGE_OUTNAME).$(VM_SAVE_TARBALL)" >&2; \ + fi; \ + echo "** image: $(IMAGE_OUTPATH) [$$OUTSIZE]" >&2 && \ + echo "IMAGE_OUTPATH = $(IMAGE_OUTPATH)" && \ + echo "IMAGE_OUTFILE = $(IMAGE_OUTFILE)" && \ + if [ ! -n "$(NO_SYMLINK)" ]; then \ + ln -sf "$(IMAGE_RELPATH)" "$(IMAGE_LINKPATH)" && \ + ln -sf "$(IMAGE_RELDIR)" "$(OUT_LINK)" && \ + ln -sf "$(IMAGE_LINK)" "$(IMAGEDIR)/$(CURRENT_LINK).$(IMAGE_TYPE)"; \ + if [ -n "$(IMAGE_VER_LINK)" ]; then \ + ln -sf "$(IMAGE_RELPATH)" "$(IMAGEDIR)/$(IMAGE_VER_LINK)"; \ + fi; \ + fi; \ + if [ -n "$(GLOBAL_DEBUG)" ]; then \ + mkdir -p "$(LOGDIR)"; \ + cp -a build.log "$(LOGDIR)/$(IMAGE_OUTFILE).log"; \ + cp -a distcfg.mk "$(LOGDIR)/$(IMAGE_OUTFILE).cfg"; \ + fi + +debug:: + @echo "TOPDIR=$(TOPDIR)" + @echo "IMAGEDIR=$(IMAGEDIR)" + @echo "ARCH=$(ARCH)" + @echo "GLOBAL_TARGET=$(GLOBAL_TARGET)" + @echo "GLOBAL_HSH_LANGS=$(GLOBAL_HSH_LANGS)" + @echo "GLOBAL_HSH_APT_CONFIG=$(GLOBAL_HSH_APT_CONFIG)" + @echo "GLOBAL_HSH_USE_QEMU=$(GLOBAL_HSH_USE_QEMU)" diff --git a/bld/README b/bld/README new file mode 100644 index 0000000..e79e05c --- /dev/null +++ b/bld/README @@ -0,0 +1,21 @@ +== image.in == + +Этот каталог копируется из метапрофиля в профиль "как есть" +и формирует "заготовку" финальной стадии, собирающей собственно +образ из результатов работы индивидуальных субпрофилей +(для distro) либо непосредственно "на месте" (для ve, vm). + +Содержимое image.in/files/ копируется в корень образа. + +Соответственно для сборки также потребуется одна из фич +features.in/build-*. + +Пакетная база рабочего чрута минимальна (может чуть расширяться +фичами -- см. features.in/repo/lib/50-genbasedir.mk +в качестве примера). + +Если требуется какая-либо иная обработка чрута, следует +предпочитать scripts.d -- для универсальной обработки +скрипт можно добавить здесь, для специфичной -- в фичу. + +Результат -- готовый образ в $(IMAGEDIR)/. diff --git a/bld/build.log b/bld/build.log new file mode 100644 index 0000000..3449e3d --- /dev/null +++ b/bld/build.log @@ -0,0 +1,182 @@ +mkimage: Processing 'clean-current' ... +mkimage: Processing 'distclean-current' ... +/usr/share/mkimage/tools/mki-run-make "stage1/" make distclean all +make[1]: Entering directory '/home/tema/mkimage-profiles/bld/stage1' +mkimage: Processing 'clean-current' ... +mkimage: Processing 'distclean-current' ... +mkimage: Processing 'prepare' ... +mkimage: Processing 'prepare-workdir' ... +Updating fonts cache: [ DONE ] +WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 +WARNING: so next boot may fail unless you have another bootloader; +WARNING: you might want to define it there and run grub-autoupdate +mkimage: Processing 'copy-tree' ... +mkimage: Processing 'run-scripts' ... +mkimage: Processing 'copy-subdirs' ... +mkimage: Processing 'pack-image' ... +make[1]: Leaving directory '/home/tema/mkimage-profiles/bld/stage1' +/usr/share/mkimage/tools/mki-run-make "live/" make distclean all +make[1]: Entering directory '/home/tema/mkimage-profiles/bld/live' +mkimage: Processing 'clean-current' ... +mkimage: Processing 'distclean-current' ... +mkimage: Processing 'prepare' ... +mkimage: Processing 'prepare-workdir' ... +mkimage: Processing 'prepare-image-workdir' ... +mkimage: Processing 'build-image' ... +Updating fonts cache: [ DONE ] +WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 +WARNING: run grub-install /dev/sdX if needed +Not booted in EFI mode, unable to update EFI GRUB + +Updating mime database: OK +Adding loading ~/.kometa_env into PAM configs... +WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 +WARNING: so next boot may fail unless you have another bootloader; +WARNING: you might want to define it there and run grub-autoupdate +mkimage: Processing 'run-image-scripts' ... +'/etc/group' -> '/etc/group.save' +/etc/fonts/conf.d/10-antialias.conf +/etc/fonts/conf.d/11-lcdfilter-default.conf +/etc/fonts/conf.d/10-hinting.conf +/etc/fonts/conf.d/10-sub-pixel-rgb.conf +systemd-sysvinit-249.7-alt4.noarch +systemd-sysvinit-249.7-alt4.noarch +mkimage: Processing 'copy-tree' ... +mkimage: Processing 'run-scripts' ... +mkimage: Processing 'copy-subdirs' ... +mkimage: Processing 'pack-image' ... +Parallel mksquashfs: Using 16 processors +Creating 4.0 filesystem on /.our/live, block size 262144. + [/ ] 0/38315 0% [=- ] 8600/365401 2% [===/ ] 22200/365401 6% [====\ ] 30000/365401 8% [========/ ] 56900/365401 15% [====================- ] 129700/365401 35% [=======================/ ] 149700/365401 40% [=================================\ ] 211600/365401 57% [==================================/ ] 222100/365401 60% [==================================/ ] 222700/365401 60% [====================================| ] 235000/365401 64% [====================================\ ] 235800/365401 64% [================================================- ] 308200/365401 84% [==================================================\ ] 322500/365401 88% [===================================================/ ] 329800/365401 90% [=========================================================\] 365401/365401 100% + +Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144 + compressed data, compressed metadata, compressed fragments, + compressed xattrs, compressed ids + duplicates are removed +Filesystem size 3926693.69 Kbytes (3834.66 Mbytes) + 28.57% of uncompressed filesystem size (13741828.30 Kbytes) +Inode table size 3015200 bytes (2944.53 Kbytes) + 22.61% of uncompressed inode table size (13335604 bytes) +Directory table size 3670108 bytes (3584.09 Kbytes) + 33.10% of uncompressed directory table size (11088421 bytes) +Number of duplicate files found 20585 +Number of inodes 389871 +Number of files 333467 +Number of fragments 20490 +Number of symbolic links 30021 +Number of device nodes 11 +Number of fifo nodes 0 +Number of socket nodes 0 +Number of directories 26372 +Number of ids (unique uids + gids) 70 +Number of uids 52 + root (0) + uucp (10) + unknown (488) + unknown (483) + unknown (491) + unknown (494) + unknown (480) + unknown (499) + unknown (493) + unknown (492) + unknown (497) + unknown (482) + unknown (496) + unknown (498) + adm (3) + apache (96) + bin (1) + unknown (489) + daemon (2) + exim (79) + unknown (484) + ftp (14) + games (12) + gdm (47) + unknown (485) + unknown (500) + ldap (55) + lp (4) + mail (8) + mailman (41) + unknown (495) + mysql (45) + named (25) + news (9) + unknown (479) + unknown (478) + nobody (99) + nscd (28) + unknown (477) + unknown (486) + unknown (476) + unknown (487) + popa3d (43) + postfix (42) + postgres (46) + rpc (32) + rpcuser (29) + squid (23) + unknown (481) + unknown (490) + xfs (44) + unknown (1001) +Number of gids 37 + root (0) + wheel (10) + unknown (488) + unknown (483) + lp (7) + unknown (491) + shadow (26) + unknown (463) + unknown (494) + unknown (480) + auth (27) + unknown (497) + unknown (484) + mail (12) + unknown (485) + unknown (500) + mysql (45) + nobody (99) + unknown (487) + rpc (32) + rpcuser (29) + unknown (490) + proc (19) + cdwriter (80) + unknown (470) + unknown (471) + tty (5) + chkpwd (24) + rpm (16) + utmp (72) + unknown (460) + unknown (459) + unknown (456) + unknown (468) + unknown (462) + unknown (1001) + unknown (474) +make[1]: Leaving directory '/home/tema/mkimage-profiles/bld/live' +mkimage: Processing 'prepare' ... +mkimage: Processing 'prepare-workdir' ... +Updating fonts cache: [ DONE ] +mkimage: Processing 'copy-subdirs' ... +mkimage: Processing 'copy-tree' ... +mkimage: Processing 'run-scripts' ... +removed '/.image/squashcfg.mk' +removed '/.image/initfs' +'./license.ru.html' -> '/.image/license.ru.html' +'./license.all.html' -> '/.image/license.all.html' +mkimage: Processing 'pack-image' ... +base=/syslinux +Not booted in EFI mode, unable to update EFI GRUB +WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 +WARNING: so next boot may fail unless you have another bootloader; +WARNING: you might want to define it there and run grub-autoupdate +mkfs.fat 4.2 (2021-01-31) +IMAGE_OUTPATH = /home/tema/out/kometa-school-p10-20211224-x86_64.iso +IMAGE_OUTFILE = kometa-school-p10-20211224-x86_64.iso diff --git a/bld/distcfg.mk b/bld/distcfg.mk new file mode 100644 index 0000000..0cb2593 --- /dev/null +++ b/bld/distcfg.mk @@ -0,0 +1,525 @@ +# profile/init +ifndef DISTCFG_MK +DISTCFG_MK = 1 +# use/pkgpriorities +FEATURES += pkgpriorities +PIN_PRIORITY = Important +# profile/bare +MKIMAGE_PREFIX ?= /usr/share/mkimage +IMAGEDIR ?= /home/tema/out +LOGDIR ?= /home/tema/out +BRANDING = kometa-school +PINNED_PACKAGES += branding-$(BRANDING)-alterator:Essential +PINNED_PACKAGES += branding-$(BRANDING)-bootsplash:Essential +PINNED_PACKAGES += branding-$(BRANDING)-bootloader:Essential +PINNED_PACKAGES += branding-$(BRANDING)-graphics:Essential +PINNED_PACKAGES += branding-$(BRANDING)-indexhtml:Essential +PINNED_PACKAGES += branding-$(BRANDING)-notes:Essential +PINNED_PACKAGES += branding-$(BRANDING)-release:Essential +PINNED_PACKAGES += branding-$(BRANDING)-slideshow:Essential +WORK_INIT_LIST = +branding-$(BRANDING)-release +IMAGE_INIT_LIST = +branding-$(BRANDING)-release +export GLOBAL_ARCH = $(ARCH) +# distro/.init +META_PREPARER ?= mkimage-profiles +META_APP_ID = kometa-school-p10 +META_PUBLISHER = Proskurnev Artem +# boot/iso +BOOTLOADER ?= isolinux +IMAGE_PACKTYPE ?= boot +# distro/.boot +META_VOL_ID = KOMETA kometa-school-p10/x86_64 +META_VOL_SET = ALT +GLOBAL_BOOT_LANG = ru_RU +# use/kernel +FEATURES += kernel +KFLAVOURS ?= std-def +export GLOBAL_KFLAVOURS = $(KFLAVOURS) +# distro/.base +META_SYSTEM_ID = LINUX +# use/kernel/net +THE_KMODULES += e1000e +THE_KMODULES += r8125 +MAIN_KMODULES += r8168 rtl8168 +# use/docs +FEATURES += docs +# use/branding +FEATURES += branding +# use/branding/notes +THE_BRANDING += notes +# use/docs/license +META_LICENSE_FILE = license.all.html +# sub/stage1 +SUBPROFILES += stage1 +# use/stage2 +FEATURES += stage2 +STAGE1_PACKAGES += make-initrd file iproute2 +STAGE1_MODLISTS += $(FEATURES) +export GLOBAL_STAGE1_PACKAGES = $(STAGE1_PACKAGES) +export GLOBAL_STAGE1_KCONFIG = $(STAGE1_KCONFIG) +HSH_PROC = 1 +GLOBAL_HSH_PROC = 1 +# use/uuid-iso +FEATURES += uuid-iso +#MKI_VER_OPTIMAL = 0.2.41 # overridden by use/efi +UUID_ISO_SHRT = 2021120815104900 +UUID_ISO = 2021-12-08-15-10-49-00 +export GLOBAL_UUID_ISO = $(UUID_ISO) +# use/initrd-propagator +FEATURES += initrd-propagator +STAGE1_PACKAGES += make-initrd-propagator propagator +STAGE1_INITRD = initrd-propagator +STAGE1_INITRD_TYPEARGS = changedisk automatic +STAGE1_INITRD_BOOTMETHOD = method:cdrom,fuid:2021-12-08-15-10-49-00 +STAGE1_INITRD_STAGE2_OPTION = stagename +# use/stage2/fs +STAGE1_MODLISTS += stage2-fs +# use/stage2/hid +STAGE1_MODLISTS += stage2-hid +# use/stage2/md +STAGE1_MODLISTS += stage2-md +# use/stage2/mmc +STAGE1_MODLISTS += stage2-mmc +# use/stage2/net +STAGE1_MODLISTS += stage2-net +# use/stage2/net-nfs +STAGE1_MODLISTS += stage2-net-nfs +# use/stage2/net-cifs +STAGE1_MODLISTS += stage2-net-cifs +# use/stage2/cifs +STAGE1_PACKAGES += cifs-utils +# use/stage2/rtc +STAGE1_MODLISTS += stage2-rtc +# use/stage2/scsi +STAGE1_MODLISTS += stage2-scsi +# use/stage2/usb +STAGE1_MODLISTS += stage2-usb +# distro/.regular-bare +SAVE_PROFILE ?= yes +# use/vmguest +FEATURES += vmguest +# use/syslinux +FEATURES += syslinux +STAGE1_PACKAGES += syslinux +BOOTVGA ?= normal +SYSLINUX_FILES += /usr/lib/syslinux/pxelinux.0 +META_SYSTEM_ID ?= SYSLINUX +#RELNAME = ALT (alt-p10-kde5) # overridden by use/grub +export GLOBAL_SYSLINUX_DEFAULT = $(SYSLINUX_DEFAULT) +# use/grub +FEATURES += grub +BOOTVGA ?= normal +RELNAME = KOMETA (kometa-school-p10) +export GLOBAL_GRUB_DEFAULT = $(GRUB_DEFAULT) +# use/memtest +FEATURES += memtest +SYSTEM_PACKAGES += memtest86+ +SYSLINUX_CFG += memtest +GRUB_CFG += memtest_bios +# use/efi +FEATURES += efi +MKI_VER_MINIMAL = 0.2.12 +MKI_VER_OPTIMAL = 0.2.17 +EFI_BOOTLOADER ?= grub-efi +export GLOBAL_EFI_BOOTLOADER = $(EFI_BOOTLOADER) +COMMON_LISTS += tagged/base+efi +INSTALL2_PACKAGES += dosfstools fatresize +STAGE1_KCONFIG += EFI EFI_PARTITION FB_EFI EFIVAR_FS +EFI_BOOTARGS += $(STAGE2_BOOTARGS) +RESCUE_PACKAGES += refind $(EFI_SHELL) $(EFI_BOOTLOADER) +THE_PACKAGES += $(EFI_SHELL) +# use/efi/signed +EFI_CERT = altlinux +COMMON_PACKAGES += shim-signed +COMMON_PACKAGES += mokutil pesign +RESCUE_PACKAGES += openssl +# use/luks +FEATURES += luks +BASE_PACKAGES += make-initrd-luks +THE_PACKAGES += alterator-luks +THE_LISTS += tagged/security+luks +RESCUE_LISTS += tagged/security+luks +# use/volumes +FEATURES += volumes +INSTALL2_PACKAGES += $(STAGE2_VOLUMES_PROFILE) +LIVE_PACKAGES += $(STAGE2_VOLUMES_PROFILE) +# use/volumes/regular +STAGE2_VOLUMES_PROFILE = volumes-profile-regular +# use/browser +FEATURES += browser +THE_PACKAGES += $(THE_BROWSER) +#THE_BROWSER ?= elinks # overridden by use/browser/firefox +# use/browser/firefox +#THE_BROWSER = firefox$(FX_FLAVOUR) # overridden by use/browser/falkon +# use/kernel/disable-usb-autosuspend +BASE_BOOTARGS += usbcore.autosuspend=-1 +STAGE2_BOOTARGS += usbcore.autosuspend=-1 +SYSTEM_PACKAGES += disable-usb-autosuspend +# sub/rootfs +SUBPROFILES += rootfs +# use/services +FEATURES += services +export GLOBAL_DEFAULT_SERVICES_ENABLE = $(DEFAULT_SERVICES_ENABLE) +export GLOBAL_DEFAULT_SERVICES_DISABLE = $(DEFAULT_SERVICES_DISABLE) +export GLOBAL_SERVICES_ENABLE = $(SERVICES_ENABLE) +export GLOBAL_SERVICES_DISABLE = $(SERVICES_DISABLE) +export GLOBAL_SYSTEMD_SERVICES_ENABLE = $(SYSTEMD_SERVICES_ENABLE) +export GLOBAL_SYSTEMD_SERVICES_DISABLE = $(SYSTEMD_SERVICES_DISABLE) +# use/ntp +FEATURES += ntp +#THE_NTPD ?= openntpd # overridden by use/ntp/chrony +THE_PACKAGES += $(THE_NTPD) +PINNED_PACKAGES += $(THE_NTPD) +#THE_NTPD_SERVICE ?= openntpd # overridden by use/ntp/chrony +DEFAULT_SERVICES_ENABLE += $(THE_NTPD_SERVICE) +# use/ntp/chrony +THE_NTPD = chrony +THE_NTPD_SERVICE = chronyd +# use/services/lvm2-disable +DEFAULT_SERVICES_DISABLE += lvm2-lvmetad +DEFAULT_SERVICES_DISABLE += lvm2-lvmpolld +DEFAULT_SERVICES_DISABLE += lvm2-monitor +# mixin/regular-x11 +THE_LISTS += tagged/desktop+regular tagged/base+regular +THE_PACKAGES += disable-usb-autosuspend +THE_PACKAGES += btrfs-progs +THE_PACKAGES += gpm +DEFAULT_SERVICES_DISABLE += gpm powertop +FX_FLAVOUR = -esr +# use/x11 +FEATURES += x11 +THE_LISTS += tagged/base+xorg +# use/x11/wacom +THE_PACKAGES += xorg-drv-wacom +# use/firmware +FEATURES += firmware +SYSTEM_PACKAGES += firmware-linux +# use/x11/amdgpu +THE_PACKAGES += xorg-drv-amdgpu +# use/firmware/wireless +THE_PACKAGES_REGEXP += firmware-prism.* +THE_PACKAGES_REGEXP += firmware-ipw.* +THE_PACKAGES_REGEXP += firmware-zd.* +THE_PACKAGES_REGEXP += firmware-rt.* +# use/kernel/wireless +THE_KMODULES += bcmwl staging +THE_KMODULES += rtl8188fu rtl8192eu rtl8723de rtl8812au +THE_KMODULES += rtl8821ce rtl8821cu rtl88x2bu rtl8723bu +THE_KMODULES += rtw89 +# use/wireless +FEATURES += wireless +THE_LISTS += tools/wireless +# use/wireless/full +RESCUE_LISTS += tools/wireless +# sub/rootfs@live +SUBPROFILES += rootfs@live +# sub/stage2@live +SUBPROFILES += stage2@live +# use/grub/live.cfg +GRUB_CFG += live +# use/live +FEATURES += live +CLEANUP_BASE_PACKAGES += installer* +DEFAULT_SERVICES_ENABLE += alteratord cpufreq-simple livecd-evms livecd-fstab livecd-hostname livecd-setauth livecd-setlocale livecd-timezone livecd-net-eth livecd-install-wmaker random rpcbind plymouth avahi-daemon +DEFAULT_SERVICES_DISABLE += anacron blk-availability bridge clamd dhcpd dmeventd dnsmasq mdadm netfs o2cb ocfs2 openvpn postfix rawdevices slapd smartd sshd sysstat update_wms xinetd +CONTROL += rpcbind:local +export GLOBAL_LIVE_CLEANUP_KDRIVERS = $(LIVE_CLEANUP_KDRIVERS) +# use/syslinux/ui/menu +#SYSLINUX_UI = menu # overridden by use/syslinux/ui/gfxboot +# use/live/.base +LIVE_LISTS += tagged/base+desktop+live +# use/net +FEATURES += net +THE_PACKAGES += $(THE_NET_SUBSYS) +PINNED_PACKAGES += $(THE_NET_SUBSYS) +#THE_NET_SUBSYS = network-config-subsystem # overridden by use/net/nm +# use/deflogin +FEATURES += deflogin +THE_PACKAGES += shadow-utils passwd +export GLOBAL_ROOTPW_EMPTY = $(ROOTPW_EMPTY) +export GLOBAL_ROOTPW = $(ROOTPW) +export GLOBAL_USERS = $(USERS) +export GLOBAL_GROUPS = $(GROUPS) +export GLOBAL_SPEC_USER = $(SPEC_USER) +# use/deflogin/live +ROOTPW_EMPTY = 1 +USERS += kometa::1:1 +# use/live/base +LIVE_LISTS += tagged/base+network +# use/deflogin/hardware +GROUPS += cdwriter radio scanner lp uucp +# use/deflogin/xgrp +GROUPS += xgrp audio +# use/deflogin/privileges +GROUPS += fuse netadmin proc users +# use/x11-autostart +FEATURES += x11-autostart +BASE_PACKAGES += installer-feature-runlevel5-stage3 +# use/x11-autologin +FEATURES += x11-autologin +THE_PACKAGES += shadow-groups +# use/sound +FEATURES += sound +THE_LISTS += sound/base +THE_LISTS += $(THE_SOUND) +# use/fonts +FEATURES += fonts +FONTS ?= fonts-ttf-google-croscore-arimo +THE_PACKAGES += $(FONTS) +export GLOBAL_FONT_FEATURES_ENABLE = $(FONT_FEATURES_ENABLE) +export GLOBAL_FONT_FEATURES_DISABLE = $(FONT_FEATURES_DISABLE) +# use/fonts/otf/adobe +FONTS += fonts-otf-adobe-source-code-pro +FONTS += fonts-otf-adobe-source-sans-pro +# use/fonts/otf/mozilla +FONTS += fonts-otf-mozilla-fira +# use/live/x11 +LIVE_LISTS += tagged/desktop+live tagged/base+desktop+live +LIVE_LISTS += tagged/base+l10n +LIVE_PACKAGES += pciutils +# use/live/repo +LIVE_REPO ?= http/yandex +export GLOBAL_LIVE_REPO = $(LIVE_REPO) +# use/live/suspend +LIVE_PACKAGES += installer-feature-desktop-suspend-stage2 +# use/browser/firefox/live +#THE_BROWSER += livecd-firefox # overridden by use/browser/falkon +# use/syslinux/ui/gfxboot +SYSLINUX_UI = gfxboot +STAGE1_PACKAGES += gfxboot +STAGE1_BRANDING += bootloader +# use/grub/ui/gfxboot +GRUB_UI = gfxboot +STAGE1_BRANDING += bootloader +STAGE1_PACKAGES += grub-common +# distro/.regular-x11 +THE_BRANDING += bootloader +THE_LISTS += tagged/base+regular+extra tagged/desktop+regular tagged/base+regular +LIVE_LISTS += tagged/base+rescue +LIVE_PACKAGES += gpm +DEFAULT_SERVICES_DISABLE += gpm powertop +# use/sound/alsa +#THE_SOUND = sound/alsa # overridden by use/sound/pulse +# use/power +FEATURES += power +# use/power/acpi +COMMON_PACKAGES += acpid acpi +DEFAULT_SERVICES_ENABLE += acpid +# use/power/acpi/button +COMMON_PACKAGES += acpid-events-power +# use/net/nm/native +NM_Native = yes +# use/drm +FEATURES += drm +DRM_KMODULES += drm +THE_KMODULES += $(DRM_KMODULES) +# use/x11/intel +THE_PACKAGES += xorg-drv-intel +THE_PACKAGES += xorg-dri-intel +# use/drm/nouveau +NVIDIA_KMODULES ?= drm-nouveau +DRM_KMODULES += $(NVIDIA_KMODULES) +# use/x11/nouveau +NVIDIA_PACKAGES ?= xorg-drv-nouveau +THE_PACKAGES += $(NVIDIA_PACKAGES) +# use/drm/radeon +DRM_KMODULES += drm-radeon +# use/x11/radeon +RADEON_PACKAGES ?= xorg-drv-ati xorg-drv-radeon +THE_PACKAGES += $(RADEON_PACKAGES) +# use/drm/ancient +DRM_KMODULES += drm-ancient +# use/x11/xorg +THE_LISTS += tagged/desktop+xorg +# use/control +FEATURES += control +THE_PACKAGES += control +export GLOBAL_CONTROL = $(CONTROL) +# use/xdg-user-dirs +FEATURES += xdg-user-dirs +CONTROL += xdg-user-dirs:enabled +THE_PACKAGES += xdg-user-dirs +export GLOBAL_XDG_USER_DIRS = $(XDG_USER_DIRS) +# use/l10n +FEATURES += l10n +THE_LISTS += tagged/base+l10n +LOCALES += en_US +XKB_KEYMAPS += us +LOCALE ?= en_US +# use/l10n/ru_RU +LOCALES += ru_RU +LOCALE = ru_RU +XKB_KEYMAPS += ru +KEYTABLE = ruwin_ct_sh-UTF-8 + +export GLOBAL_LOCALE = $(LOCALE) +export GLOBAL_LOCALES = $(LOCALES) +export GLOBAL_XKB_KEYMAPS = $(XKB_KEYMAPS) +export GLOBAL_XKB_VARIANTS = $(XKB_VARIANTS) +export GLOBAL_XKB_SWITCH = $(XKB_SWITCH) +export GLOBAL_XKB_LED = $(XKB_LED) +# mixin/regular-desktop +THE_PACKAGES += pam-limits-desktop beesu polkit dvd+rw-tools +THE_BRANDING += alterator graphics indexhtml +THE_BRANDING += notes +THE_PACKAGES += $(THE_IMAGEWRITER) +THE_IMAGEWRITER = altmediawriter +THE_PACKAGES += upower udev-rules-rfkill-uaccess +DEFAULT_SERVICES_DISABLE += gssd idmapd krb5kdc rpcbind +DEFAULT_SERVICES_ENABLE += cups sshd +DEFAULT_SERVICES_ENABLE += alteratord +# use/vmguest/kvm +THE_PACKAGES += qemu-guest-agent +# use/vmguest/vmware +THE_KMODULES += vmware +THE_KMODULES += scsi +THE_PACKAGES += open-vm-tools +# use/vmguest/vbox/x11 +THE_KMODULES += drm +THE_PACKAGES += virtualbox-guest-additions +# use/vmguest/vmware/x11 +THE_PACKAGES += xorg-drv-vmware xorg-drv-vmmouse +THE_PACKAGES += open-vm-tools-desktop +# use/vmguest/kvm/x11 +THE_PACKAGES += spice-vdagent xorg-drv-qxl xorg-drv-spiceqxl +#THE_PACKAGES += xorg-dri-virtio +# use/syslinux/live_rw.cfg +SYSLINUX_CFG += live_rw +# use/grub/live_rw.cfg +GRUB_CFG += live_rw +# use/metadata +FEATURES += metadata +# use/syslinux/localboot.cfg +SYSLINUX_CFG += localboot +# use/grub/localboot_bios.cfg +GRUB_CFG += localboot_bios +# use/bootloader +FEATURES += bootloader +#BASE_BOOTLOADER ?= grub # overridden by use/bootloader/grub +export GLOBAL_BASE_BOOTLOADER = $(BASE_BOOTLOADER) +BASE_LISTS += $(BASE_BOOTLOADER) +export GLOBAL_BASE_BOOTARGS = $(BASE_BOOTARGS) +BASE_PACKAGES += installer-feature-bootloader-$(BASE_BOOTLOADER) +PINNED_PACKAGES += alterator-$(BASE_BOOTLOADER) +PINNED_PACKAGES += installer-bootloader-$(BASE_BOOTLOADER)-stage2 +# use/bootloader/live +LIVE_PACKAGES += alterator-$(BASE_BOOTLOADER) +# use/bootloader/grub +BASE_BOOTLOADER = grub +# use/live/install +LIVE_PACKAGES += livecd-install +LIVE_PACKAGES += livecd-kometa-hack +LIVE_PACKAGES += livecd-installer-features +# distro/.regular-wm +LIVE_PACKAGES += livecd-install-apt-cache +# use/branding/full +THE_BRANDING += alterator graphics +THE_BRANDING += indexhtml slideshow +THE_BRANDING += bootloader +THE_BRANDING += bootsplash +# use/firmware/cpu +THE_PACKAGES += firmware-intel-ucode iucode_tool +# use/firmware/laptop +THE_KMODULES += acpi_call +THE_PACKAGES += firmware-alsa-sof +# use/init +FEATURES += init +THE_LISTS += $(INIT_TYPE) +PINNED_PACKAGES += $(INIT_TYPE) +# use/init/systemd +INIT_TYPE = systemd +# use/init/systemd/full +THE_PACKAGES += chkconfig +THE_PACKAGES += vconsole-setup-kludge +# use/init/systemd/settings/enable-log-to-tty12 +THE_PACKAGES += systemd-settings-enable-log-to-tty12 +# use/init/systemd/settings/enable-showstatus +THE_PACKAGES += systemd-settings-enable-showstatus +# distro/.regular-desktop +THE_PACKAGES += bluez +DEFAULT_SERVICES_ENABLE += bluetoothd +# use/net/nm +THE_NET_SUBSYS = NetworkManager +THE_LISTS += tagged/base+nm +THE_LISTS += tagged/base+kde5 +THE_LISTS += tagged/base+kometa +LIVE_PACKAGES += livecd-save-nfs +DEFAULT_SERVICES_ENABLE += network +DEFAULT_SERVICES_ENABLE += NetworkManager ModemManager +DEFAULT_SERVICES_ENABLE += livecd-save-nfs +export GLOBAL_NM_native = $(NM_native) +# use/x11/kde/synaptic +THE_PACKAGES += synaptic-kde synaptic-usermode- +# use/x11/kde5 +#THE_PACKAGES += kde5-big +# use/browser/falkon +THE_BROWSER = chromium +# use/x11/dm +#THE_DISPLAY_MANAGER ?= xdm # overridden by use/x11/kde5-display-manager-lightdm +THE_PACKAGES += $(THE_DISPLAY_MANAGER) +PINNED_PACKAGES += $(THE_DISPLAY_MANAGER) +DEFAULT_SERVICES_ENABLE += $(THE_DM_SERVICE) +# use/x11/sddm +THE_DISPLAY_MANAGER = sddm +# use/x11/kde5-display-manager-lightdm +#THE_DISPLAY_MANAGER = kde5-display-manager-lightdm +#THE_DM_SERVICE = lightdm +#PINNED_PACKAGES += kde5-display-manager-sddm:Extra +# use/fonts/ttf/google +FONTS += fonts-ttf-google-droid-sans +FONTS += fonts-ttf-google-droid-sans-mono +FONTS += fonts-ttf-google-droid-serif +FONTS += fonts-ttf-google-croscore-arimo +FONTS += fonts-ttf-google-croscore-cousine +FONTS += fonts-ttf-google-croscore-tinos +# use/fonts/ttf/redhat +FONTS += fonts-ttf-liberation +# use/fonts/zerg +FONT_FEATURES_ENABLE = antialias lcdfilter-default hinting style-full sub-pixel-rgb +FONT_FEATURES_DISABLE = no-antialias lcdfilter-none unhinted no-sub-pixel +# use/sound/pulse +THE_SOUND = sound/pulseaudio +# mixin/regular-kde5 +#THE_PACKAGES += kde5-telepathy falkon-kde5 +# use/net/dhcp +THE_PACKAGES += dhcpcd +# use/domain-client +FEATURES += domain-client +THE_LISTS += domain-client +# use/plymouth +FEATURES += plymouth +# use/stage2/drm +STAGE1_MODLISTS += stage2-drm +# use/drm/stage2 +STAGE1_DRM_KMODULES += drm +STAGE1_KMODULES += $(STAGE1_DRM_KMODULES) +# use/drm/stage2/ancient +STAGE1_DRM_KMODULES += drm-ancient +# use/drm/stage2/radeon +STAGE1_DRM_KMODULES += drm-radeon +# use/drm/stage2/nouveau +STAGE1_DRM_KMODULES += drm-nouveau +# use/plymouth/stage2 +STAGE1_PACKAGES_REGEXP += make-initrd-plymouth +STAGE1_BRANDING += bootsplash +STAGE2_BRANDING += bootsplash +STAGE2_BOOTARGS += quiet splash +# use/plymouth/base +INSTALL2_PACKAGES += installer-feature-setup-plymouth +BASE_PACKAGES_REGEXP += make-initrd-plymouth cpio +THE_BRANDING += bootsplash +THE_PACKAGES += make-initrd-plymouth +BASE_BOOTARGS += splash +# use/build-distro +FEATURES += build-distro +# config/name/alt-p10-kde5 +IMAGE_NAME = kometa-school-p10 +# use/pack +FEATURES += pack +# use/pack/iso +IMAGE_PACKTYPE ?= isodata +# config/pack/iso +IMAGE_TYPE = iso +# profile/finalize +SUBPROFILE_DIRS = $(notdir $(subst @,/,$(SUBPROFILES))) +endif diff --git a/bld/files/.disk/arch b/bld/files/.disk/arch new file mode 100644 index 0000000..1c09346 --- /dev/null +++ b/bld/files/.disk/arch @@ -0,0 +1 @@ +x86_64 diff --git a/bld/files/.disk/commit b/bld/files/.disk/commit new file mode 100644 index 0000000..583ceb4 --- /dev/null +++ b/bld/files/.disk/commit @@ -0,0 +1 @@ +e8f8a56263ae690a4325e4fbdef5cabb111406e0 diff --git a/bld/files/.disk/date b/bld/files/.disk/date new file mode 100644 index 0000000..1092928 --- /dev/null +++ b/bld/files/.disk/date @@ -0,0 +1 @@ +20211227 diff --git a/bld/files/.disk/info b/bld/files/.disk/info new file mode 100644 index 0000000..77ad160 --- /dev/null +++ b/bld/files/.disk/info @@ -0,0 +1 @@ +KOMETA kometa-school-p10/x86_64 build 2021-12-27 diff --git a/bld/files/.disk/profile.tgz b/bld/files/.disk/profile.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fe8143fb2a5104da0462f05ec8af70218b57cb26 GIT binary patch literal 46882 zcmV(~K+nG)iwFP!000021MFK{bKFLD)~oR=dMVi!ErD|pNlA2ZcZcMVniA)-bCIn$ zTeBFTX9gi|MgzRK_QAH2I4QfbPkB!A15#yct+gWC@?RkTQNGi-4rYduy|PoA63Zfi z?sHC`KKIjTd)n!6V!0#D8cw-paR17y|0&~Vb8}Pv#ZU1sCfBc2)+-z9>$l3A8|xUa ztZ!7yS0-0}fuB$WnvW%Y*9|U%d(nJxbAKa08&#&ew#}Vjo8KAV(Ka@#o3}K+dAF>s z->Po#_3_By;|*OKjVhJOdU=zVl`F4*{@?uAN2aY!xa#@t*tB@*%FpEgw>LJH`#+wG z{$IIOy|VGz|9^4)H?<>953fA_udgrBf2CZhZWi^wv2nY4rTkj|Kl{&BCIarU^(|(Y z$DEl?;Ih~z6y@Nsy;D0J?hG1-dwY#8`^`4Hc3n)lWiju>SXFih-EO_rA09SZ_u1Aq zD;Sed+JkJ;4Fg5F%7Q8PIXj_WF*qBWr(9rZBh+ns(oUR~Q%6w}eI z&;b9Y2=wt}%|1$p#-XDJ;9bxl_|m6bKaxz0LenxBcaBZpb>x=KG5?TVzj^Jt&o#@_ zf+@6sHJi1A`mocj?>F9GE$OZ^Hfe>`Rpr`s?)wmgXK_t%rg?!n;Q<5;Q-|sjv1^XO zrW%y4G0Sz2m=>_#4H~=md;MCs&olugS=Oq;9m5=Fd%0w3CFWGUnOKSM*^s4fdl4E* zsn=+?Rd9EM8o?;72r0^5=7aPUW{hesOV>*+|b|}J8Y_vB~tU1C&nI3Nw zm_#WivS2pdJxqK7QxMOH2Lbm}Jzr(i4lpxd|A5d4qhUIvsz{Yn4A`O=Z~_z6HQ&Hv zGJzcdS2GNg%o;+px#mdE@;Ny+nVPE;y#ynoIqbE&{Y8Z1@rZ6HA}{jY%<1u;+?k`< zQ0^E}Vr)9xfRgaU_8Pr@x1Go_UMqg1wIJtNkkt$(jal*bhOJt&zM8xw@T!a*0SMK) zyZ2VtlKK9_PCXT8G=w-vB-o2-V&DB*f6&9sUaenWO{iyt_8W(@gks`F2GU6qZXSVz znt;Ya-g*Mq6)95IIn6jtG- zZYl6Nq7J!Or?z_^d+QAj`#qL1NW+qktvPW-i4jIlfm(Mx6S2pIrBfI-g|gf3JRJ7B z^*X4nm7?4V6r@zc^qH8tp=CI42gKirNqJC5EF^Z34<*aW?qR*w8gvqS_|0~j-4X2% z>itL-k*UQK_j>n+hqcy0FP2jamU(y>4b1@6I{o2pyS3jqm~&!G(M;sT0cy)A&uSEM zn5X$cl(AhK!TVGd9@ot=?HwU6DI%C<0u8Ba!mGcvkelD7bgB6=r18@zD><&CLKIvN zT;BxF6j7d{pMz>9u4rRIRL6~l(i`kR4v}_9hBI6viivQH+JU9@FhV|1I^8zuYe=Z8 ztE-9LKzUS>d0Tx4d64#l<;K2iv!wJ`Go1vY1n68k705LC<%!liQ6gWSb5XOxQj+2! zlbh?HY9WylR|toQ!%>jD9$_RR)>joWYE@2dvDhl+{Cx&U{(-C%1qOPilDThDoUT0} zzNBE_>;e@kpbksd#JvVc>9e z$!f5=5!IYz2FCoVr3E=`o^rxb%tcB(w#&J#e2~iE_Y#@C^;U*Ao8z|GyoeV<%d9&C zEdzG~omas1R(sfc*pyjhRxFmoR58xf8mCP_t>kmh3?GY-q~*~_(qAoyj%Qb9^IX1h zE9A(?pz^AoEsF|UdWk*F{~{%U*qFa8Ot??~RA;11XJ&nvOuAMIF?d z~+&YzusiN`O` zzde6`{%3l9e*VMx(~FNU9-TkA`1InFi$AgRr{~|W^Y7>#fInP(49tJT;I}mQn9YoQ z!B&Xm`7;LaPe9;{73KUX!|ZcFeV0)N+&6&xGjV}6AD=(Fc(lSKmG6n2i!bo^`T74a zqJn|1G4b>!-Z1zTkpbWTcJZ(0Pb3HpO2Ee$_?|EoIRq%;oi>2yC+FW_agZj8(Xvc} zd_`Pbe9q+Jw9;ez`x>w@BNv}v{1Y+q2#~qm(&EZ>Adn=YbBk4m;ip89fz%Vo@;UHm z>91$`!~U_)NUSvRWQ8S^j`>Y?Y_G0CP5%WRzXrs|=YIj!@9_2{Rb(m4MzA^bezM`GkTi`jrwzmgQ5kpf8v&%nhKCinEIr2JKWMdDO$NlF_6y7)|4 z&==9_{~?KyJpqAmzlu1^wDB3J!#3E(XS6L^okT_IAu%NO@g-zNLivldD8N1;k3lEzT63#DRRHl!?&=2$4v}nQn|Lm@^q7_-gZf4q<|h|l z+{_uw4;cDqKtz&`Rv}g%#|Clnh@|wNMNgD4X(+h(JkQ%Vgq^Q3*Iw5he|7#(Yv*4q z|F7Rh;-Aa^w>MsY|NA9=&_;*U_p{Q}wRtJvwpJ>B#w%%Futr~bwiMs9a7JJBiOm+(oHaReid~02le+mg~dGU%yz>7 zV(?5?nPJ@&u4OvmsT_T9P{WYp`nF~%JKb7quhBZd$PvUFXsSS)>00SYb#Z$stM4eg z?PjyxN~M9VOt?{^qa z?KOI}9eHqM9otnEzpzmweeqn&ir;J(vUGhmfzipO1J`4kqv>!JHnNUX?N~D{ZDd+z zaK=WyX-qhoooz5``=x-BBoq&4NHMpI;Bn;DGxihBCPNsojD|_AM@P4zsH#n4L zZ1^_)Qyn)v=2|G9>03AWphrX`lkN-D_Zu$}Zaxf69wb30L79m;DmfF)?AE(|jA4I~ zGw;`H{Xti<Q@4d3-NnF7$$OhPUK zGB>$^T%Fn6rcZecTre5Wj$JFH4=W?zJ%R5r{EH0N2|RXMsUTYW_6dC%Ix*?yhKQ_& zG(aDRQPiNx1)M4+5zyDC@exhTA;BkYRc_F z0+b0<-6Dl#rW18K@rP{swxaAKz>pl}qG}L~)rsp)EUv=w1*uKdeA9O0c^C7V;f}Zp zR(%~%up*M=vU#C7qA+i}ADNb=sSuVnzpUZArXkTTo1<{$E(PGeIey6vEt=O|sz~@H z5P|8qdH&Ftk>i=JBjq_v>@ydC9T)Bqn3`p3(4B4|vBO#6NmwX!rlv!;Jpd$N_MUml ztpcSqYAvDyUe_%pCO4(Y>3LQnN4BW3^n;r?OmL3=gi zbdSRq8NI4M^?gtL98cJhm8mIVN!A5-|IH$B2tc=obT2< zZH!HWz$=}>I{0Zi-QKN932|pQ=*^Dyio>nu&_R$!LeA)Sq2A7Wa|6SAv(tZ=-@}3s zGdGp$E1l`ocj>cKH$T=#Pf!`&k1wojGguk@L%Y!JH~MrtY=37M4?d`Mhx@$(>f)A5 zwu;PzqQU^x&P;!lRXVvx-5d**IuVhpd&Z|!NkoQD|6c|&TC(`V-eIFPcz=P;G1ad( z_b!!D5oAtQB&J@j$lKbgY^Bm43>tgGMvttZTCP^qN>wf2RV$n7dRg5ltL1V6`2OC3 zq%@2#*QDe3cZT=t51X}4l*sbqz4sb@nf>yEkbI*Sl}5^|a~<-T-F?z}TwD%ErW;p@ z^lRv!Fc~{Z3vw>P88j&RM9RsoLT={|P3U@a^r^VfYV>7q3V<6)6|BxQxhj>X>9tCE zb1f3R>Q&0>k-;~V*(+n1&DI{qBPga7xmf%TGXg7y65rIS<}KB51#$?MM%|Ae zcv4U&2R-0w5?Y$S;8XxPCG^rpUs)7UWT;rwk{etcA#2`{QqE5#DIy+Q3b%AZ*5LU8 z>`M=M#7b`S%l7H%X5@hL8;;jh<2p-?n;0qs(tIZmND5iB@S0H+#dJ&8vUN?L@?siP zmId8Hv@M3&=*q&pRW@slR=$h$?^HJLFh8*9uhOjdYf#&6y@k3lzU5+}JaPmIP0L!F z2DTLeb-+@sD}(9WMgIt3umkPI2E!DCkQ!Ab=2piSYL9OHhQ29()*ZNz&h z{F0cWiA#na$bDsq0VB%p9j6 zokpuw-^+t6@$1w!w(3G~SvD*KC4Y`e_m_i>+RGQiPJGRqn!0!~q)Apq`h78|<04wV z7%UEJF9t-ugNIGslN@MN7#9o1g12RURXC_jJTwl1jDje2+K}*>YDdJ>xWHUIDGbBj zs-FhFM*4*k~_O0k33|=E+xkq2}*8xx@d?hJuQu8zaxaD%oS4kdz!Id#05?6C^mPF zQFx5I%ot_K!Bl(#RXmtV+$ct-oYmcn%BiaKUKCy1(K!+IH3c}zZgB^!Pc?@wWr`z4 zO|T7_>&j25=n|Ztx&`1RdV75W_E(*N#lk^{n>;o3g&J>g8Wnl-O5(}9Nk(RA!i}LX1xZun z;z*oVWyDJRy{OY2Yt|7Aj0VvNb`EO~hs|0G`=rUs(qe?tOqxVl2xb$qPd!+@|iH10uE52-F;)TW95q*T= zp2X4E(}XxNlCcQ_x+h+Lc6l|QT{1<`*{YSinzOHIKXqx*yrkOjG#d-rCf1JanvFOY zA<7i%i0X}F08)~TO@_zyPklUduD=?L6&_Gtv z>aqR5?7i!D+enfwI)8eC7yH&RA(y=UQB)QskEL#HtAcYnQumDh( zDtoQ&nLTIkz4olLf1ZD5ofkN3b@!g0>6xDDc?J88c0^<*khqYNZCSQeRCmcj-fxi^ z85!|~DDK1!q9GnXXEKp6a}ATmi>*cZhLam8JXKQM^l$)dn|@;R+Tu(_|a`_z~vtw?i%}&rp*zZY^&T(&uFDqg*z(AB{ zhdO`h(Sa+3mcwkHH<}|8;UR_3Cc}^(0Dgpoo;d*494|V_2hL?535Op-ZD`EJmo(_0 zgC_6iV#A=j6FmW0b}_4@?mG!r6%PsU>S4b=s|@1cRQ>$XR=nb8;&c86buCd( zX(hVO5Uz-wTCvng4ZnN;L2I;-Ym}6X39XYbRTc@tTI1zlYI-53X)(2BVv>jl`vpvp zR0U{VS`*;HIboesx>Fq@>k1p*(fTS{k_(IXIIzT?u@^5` zlBirE%mrO3s5^EN7+znjF(ae3Pf>X5t=-Yk}zUvF_fO}f{r z9YhhtP3;?rR&LN@jKxGZsZ+7Y>qebd$W`4y$-}qXkJfkA9;~-WtFL7kQlMP-gRUV{ zpu$iK^@U`>uh%yATWmqycAO8%c3sEj6ANx{@b0Pzq;GmJZ}wb@2ZWn+R?=h0O`R|P z$a7PBhmTh`X)Vf!xEs4irXCn?YA@;G^k(xc@w4!a5=$gc+&6V;($oE?(K&YcTZeex z%szXjRTOUQ2`^PIZuX9oQY^W#bBRU*pZ=Cgk5Ms(Q;R>eVW0|T)XHKRQHsQ}vh`sN zE2%ZA*;4B=R!fvC)~{|&)T@*ISJSLPD{%qCwTHRM$;_yUno;2X`{>>wIx;=xdzN!? zVW}~HyMj_<{Vr|EjP$z{rOwVfmxHr6rVz1~xlMYD);1Z~ssW^eDokY{$7}KbCTAYmV9o7#(s|O|`wtEuJ=Bsv$%>R*F&QbX)dUV~ zE@KTj+Kx7v6K7?LZ%7k}L+Tx0$`Sm5$P7#zfke(Z3A)PajpTk*` zg;q0jn>W2C|95KGh%AYd&cez*`{Ppgvx)oGxYQ7v zN{)Nf=;RoiO-`UeW3y0-TsDL%xF8=TNo7)*i>>f%^s7UqEi`$ zVS7w^j7`o7aYfXL=S<W-A*Pp>PELYS3 zS+CGNPE{?#ve*uDD!4-$WopqP9z5CEfrOpruv>1*9?S=kl2RxxS@Q5fm7T zxndlOG-}kSL}DM~YSQU_OoSCKk9ZO@pfJ@8qTbk~sk)6AJmyW&W+ZD&TG1KqnTO?< ziGqUy?NCusfYfjYJq`=EK~bX7abbb_XX(0=&P1B)IHv_= zh{)Xip`iW?>MgAA!g@v`uF`Q@6n9|}srpAmN&@tvL26p?ds@P^AU)uI27z|rnuQ31 zL$iz^Gc2WAB&AWKr*rTyZ&2^31(T{n#wxv5+f99ykTm1KYSQc3Ac%579;3Z_%%x$@ zFO`rW&@WCY;L)L7efNy~k8#fRtkEbuBQEi5m7B;>eX0v;m9og2q!D2b+XXmvsnM(2n~=|HXf88x893f@MGdGHCRUPV6G%j=a)tiN%TNShK1xsU z&m3o|I7R?gQhrr4o#*>Y4oR5TK9>c=Qr5)<%R)>`wzeZPu<0xo?VlTq_@B*<4gi## zi9djBLO5Pe;HKGiLM8b~p8@fypP1`pnH42w^p-o)2VbU!{HjaGj97Xc&rp&(sy(GI zWfYP+0uwcTJaL%<5IC zFecSE1CDBg5FACHWEV$6KVFznVnF8V5lE0l1*jmADm@`bTu4rrQtcZcDde9KCSY6M$^%nDC)c_~fN z@izidI4|?hM5#}@iEf9=?J1Syy^f48rKoxZY&!o0BJWru${Tt8dRwK*F>A2UX~&!1 zEtQSWK-5dV1ZWpya<9YiVlF396O{^1ptbyRcMWW=yqv%*J8&l=VGup!_ zf(aW{Y}z~Nw8FO-+_zHB_k}q8f_|El2{O(lMOgNFRj#P1s>&Uhut!HS1>-0EJ|vBhjvz9ABko+_ zI3nMkObKdxq~Fh?2FbXjMI=BOCqq&sEW-9KwRB`ywuv%4eH0{q1JQq_JYYZ518E+-&i*GN34N?5K+;<)1|fH`njQso?Kw zPK+s*T5jgv1mrn)e2qiXAE8uLeDPF}?yHxBzE{h*2yA-%nf4Z*l#%w3_rH`#C#~XO z9G~Qcr&%!UOcoAwojWN;1e3x>wuTfYcDDF7FmaMQDLS6if<^;#7dARBxA4dsf#5y9 z_3={9jcZ|LZ-Ve71UQCFH1BHE| znwqaIEl9p7UUAk}aAP{{Uz9&_>6caPr3ZzJ&#PRL0&g%E-P*EI!bMExEy^l*zPiY* zK(>q?bXT0=>OP(JsZv;hbW5PDK1!sx7sGJX}q(r;VB`R5uQh1TIi{DdZL&mzB%5&eD8pgc+UZK_lx+RVEAoKsAP ziiDg=sj+}F>dTZ-P#Xdjb}Q4D0(mt=9Q zqKBIDM44$Iy*d`EAYbTuJasj?pi2x`QGXm)oL%yTfPGu{*8@+trUnemlz*&yQ?3 zfIm=;B4WR)88slFM31Rjg?ldCcRJeNOnyFAKiPfy|xMTtch3x1u0G;5hFIX?ruK52h8pL z$6I&NWM~h;BML)FhX^*EZqIL!?0;`BLfobjGpyyg9d7%sZ zK1m?OlBG?XZ0Ugq3|MpocOwX4eutGvd|2XJaj220K2;MQIl#u5fpx@QF!Y--6B_RF zm&=B`1ix;v&@hAkNqrXoF=pUmv9`ai=0xp1Huw4WpZ7nvs~T;f4l4gaYkM$OjFccx zT{wZ9#oU;fWaH8K?hTIsd1Wu2xfQH!){oXKwyI?>CU{#IQ=d1V;8lP7+ z3Z-Dvwnc5_3Lm;EZp0{YVU!s@8n_q7%`(Da2h)>|5O3RM8p4yymT(0lhcRVA#!|JM5#pzG5=DKUNuB zDtuTwaJt$IS^A3UB`I+psu~u7HA8P46V{pu#W$<6POJ+4Hbs3$<^V0sm!ld^)bXzwZxv?!Zvv9K$~JjK6>B*3DurI(br=6?hf!9aI$Pd@vD{k zY_(jj9W-i#8O${$h5!brCKrcNA4^wA-fcSWE%p-m3#WslC431EcqKI6tm}B<;s+G$ zIKWJWKAUbXE-!zjZ9U%HWUWanugPdm1x0Lt#^*#4K#<)tyA+H zw~;QFlEHcmp+1L{GuE(-nnrZl4EQ?ad=ctXLLJrG3+NOuf9`-KiwYJ<*kUn=MU6?0 z9^$sXX)#ie7j#?ne={+p0~al-#!2maeRmSiCIy(F$&UZ2(f?Op>5 zJ#=g8cqeY)d&pkLyMq&11}rgS*5IZrKk2nP+}n>|PBx1VK>r9kbk%jd1^>6W0$~&W z@59VLzCX~t@`_}@7s!9-7aFvV_|DB zkvm?3{ukzT#2LP_7vPKNe`#SQcm6NVPw@XgCi)jI!9b<=w(sJ@ueu@NYSBeZ5gn%D zISDES;_iSIqGMaM%F6C1q}(l3g_2F?O|}Utc6`mTrhRTVdy|UdQa%|?m?HXLn%AX; z&vl&t&6UPN{`_B<(ErCo|I?|bR{jpHobj>R9z9p18oV@$;RSF%2dL)JTIC`oEX z;|c)-lRw?U1taJ>P=nu*UcbV+>!tMUXqBn~uuQdIf4jE7{vF4A=qqI(L5q6yXioBK zKf}rt=@VAPO(Ywfyx>OX1E)sX3i37G9`*;C@_deOu7~vcnR+jGtRtW44l5ma)6*p=hHm6A0*sPN zi5~57^(01NsO}>tPp8B!ZR%H+&6H>5nn4NyQ$LX=0Us9_OY!;-3$lHlS~;@3g1xPD ziz_2Y1&u+C!vG4WZ0N{|hCr%p;3U`L(J5C3a6GVd5xv^Dyfl;$(vumL6(iSWdcjO( zmW)hw;Hf!iK&DVf0{?v}w3>7v(wWeB{`6^!G#6UWp3ND?j2a7(&*RwXX9f$6RO$oI z=+3a)eBy9{#EKQENn@2Z%qgs*1=QG*v|q)waOx22k95t316o2eA^rvH#*G-Nm6Ct0 zh&lCc9Wp3LA<8Zz#LmeqixUf7pui;p1=P8vRE^hCi=|f;EUNx7YP0I7ogwxnzO1mF z`rSlFi0Rfzhv}-?3Rkn@Ygq)T$~5tsNNYchQE*A6PgIdqKVm%5ZKbs|(!Aa}G+Mi| z^ZzTj|ED+C_j~>?HJZ8ipZVp<{r@97{{#Q*oXor^5jrV}Jsw*=oc$J1rJ{HRl%QkC2SAg1vKSHDU-G7!<|>_~}@eILo_-Sr(cS~yk`v1>a!YT4YWl8F0mdsD=5 z%{barMMCcPs0!Pn1v`muHS~pMl5I~ZQaC;mk>6~j8jGJB+p;a+?Cq;E51 z++HefFNvdZh~w}}sqdS;eWgD5O5$h~;yC<*&ZDaB;e8Yew{rTn_aUCrlJP=IW|ijS z8f>2}n8jF)_}=*?WFvElZY$*(uGjH7kBEF;E}tYA zzGVO(LUT5ZARpK?%p zilkur1?vvOWmtY($ zKY*GCzOV`4KCvx1^P*+(0Px_X=tS%jM#D}=F;Z2$2&LUFR1?QS3DO}7@tnXxNkSBy zlOT#zPEneGHddsL77HMS{{mqPQA3j!(>q5=1c@O!gts$n<4W*P(Z4sW3m4Jtc}B>A zNqn(Wu^{0KoI8RF3t8$GZvq?TfPt6HuJcQT$*IT0kqpvSRV&hOS67UVjP(`c?N zy+ezNll9CH!B^~54%!C9vrRS|M9RG&S0XI#VH7z5%sg4spfJ?K9RhLMV4hr@=Xjgo z@78j<#1i7`rXm#`VNC~4hBAa14$W_s3qTzbkn+jIxfHW|i?&YBXD5BcO#2a2LU9!Y z1rNiN6+}pexD-TOwea1M zE>Fp=uEj7iDQ|m+14`)BT%+y}0|VMn?}bq+m-MQz{dga?(AAU)la^^Dzm>+#(#D() z;-N!qmbffjl#IsG6j;vE?yts7+pbh`sljqG<;dU>3A-2R*!JMM3TKELXzEoJS{)Av zwJaN&+?sQDSXcyH49K@FyeX%&!!LD<9(i*{o8Er^98Tu;u-j^}TNAB}kB0x>h5PTL z^((#qjg$WZzn{DRtt>Vt{QoultgfyitDi8J3_>*R)&Kwc?_d4(_208s|NiRt@aOMe z{pHnPU;Quk`gicpKfn6Z>)*cmmsfwr_`kmT!|VV4>d&wKjlKEPtg_~YyU0iUmb z_xc|o=szLpUtj+hNb#4~|HMj|?bRP4(Z7`#B*aR7i(i-=tNCY${&P)(vVZsLKOq7# zz4})u=ufZygGz-2e|h~su^oS)tpEP%&%6!4m6c0Yu$jI`unJZCudn_Ce*ep>pI`kI zYWW#@@;fMl*8^p}{zpa~{F%D(TdWrT`x(EXxzv5p&_BNVQP~;z=fffAy>R+J_7{Y&vo2oMERZI783``6a|6h>i_cXpg^HJix z{|89&GgSMJ*el_Pp62GCA?h!X6PCpPgpc21qxhtY1uACnPdHA0fD&+IsDZzG{okO8 zIB7q#9P5HT`TuY*u=v;igyRSW=sI80*w{Z}ku(W^Oy>M&T2_CgzW&VD^?!kne|z;8 z%E6tPF~8NU;p3OWg1MH4nZ%;Du$*aH-Pg3fj`s0 zC;5NQq)rbh_B~l9oUr)1B|7}j>zaPu| z&(Cv|=f?Y)|He{Q{@aAl$@~Ac$bVz|Z~nwTFuMdvjdGBXgo8DRDBWM%U)yBsySv-F zY-5WdoN|kF0s8)s!(;MAQ{sZNQ#W+9_@$CZO-`Cmm;T=k1mZ359~!6=JfZ*Vr2h&2 z!-W1v(0^lIC&BcQ?;nR(PyfxulXqyNwe$f^B%p#R27Gk^Zi z!<}G4|JQr|b5$Ukb>{Yg`A5B!ki*T2>1W*6gmA85T9zN!;#C?Ad)Sc~avdhyv0TM$ zM`|)_cfWlo_8E<<{@mT)T-CIv>@%jHF(bsrBn-nd+&GdfjW`{(nVc9|QIGL-NqG${ zkd&e0yyZBy#8W$GZp7v_Ej)E2>!?y?KgITUO|-t#rhKoeO-)(WD&fgmtK3J@ty>V& z>By)~hvIBEl#yswr)g7A+!Qq8M<_2_b*A;Y?)iG)AdUemhZZY0lB{w2W!B69l^d*V zS=!V~Hm&L;YcJ`6o$r@$RqLa2K+ipPdMSM}#4Qf18X0inOqF8=fI>eyw-~d1#s`d* zU54WVA)a%I5` z`#;m2&X8XMJ)iX*)8lyheBv2-VIg}=2Tlh6+_CWv$W18l0vJXv0wFjFe0kpty68>> z$T@%jpLS27=ydFyw|!C!GtYfty(tu>?9U{V8FFkuAUEN`#BF@(#l|dr|GveLWlSW^ zsSFz0J>R}vSj^X7v%~f6`-iB~nI-|Qgva7FPd8pXtkBQX>SNEndmbEqdDd9gHrKWu ztdb+=`Y`Hzsqq3oEk5&7^uI8#BfrgUP2U6k&o36peOJI)%M(7zl%G)G-t~r#Can(0+?vkT3T_P|aWyUif2b~?syt+7+ zrKG7u1P}EYaeZ}JUx}`8cm)z{@RNHF;GkXKC4Xd`z%^-=TAbuSn|i^bfX(3l4m|F7 zMD8CO_xDz3S~GkfIc6uc2Taku3-67`B@{x@pC{Sf1X59V4taMDfi+SjU6dDdLAp<1 zceoV&FV5>{jfM^zvfuN8sk>78Z!{b8dHK)s;za&?-Si*ZWgJD(pk)}Rr>Awt3tY?p z(e>QAA9Ud+IRB*)xr5LkpSGtC{!SK#A$WH#q(P1V3xATxh&jRTJ>1w~ai$h~A}#>j zgv&0m+g~&xEtk+BgO60b3Y-C&%$#W&9M6ZIKQP1a)TSa1>C~=NwV$*pE}rI6Y_kum zx7Onj6fwb+ybxRwPTYiLs>Hb3EM zWf~F#3Avst?3e^Ifp$HIJdaj9&d`;%6UzjqC1sv00svDE)kU4CtM#r`WfP-5YmYz*6k7%YeTU- zws2?qrt8(iBVIW2kC;jB`26}P!@mAnXK=&QrV^T& zs>?Uc*dkP$!Zc!~_fMD(b8=9&VT_=ia_-cSl2QjuBk51foy8%13gZ?(Z)$6g_qR8< zA8c$L-n}oLYm&=toKRe%1sRgqFpf*;k*_tVELAABL-su#kqiQnBrRucDo(R{?uY@H zO09}~1xVG7TZ_@!;G2dyfwBJmsAeY2?5BAu4%?QZp#8QE8b#Q5khxbaPyi zWY8!8`k!<})T}+-bIhnU`%FvL749p^hLsN2Be(DP!)SG0%a=7J7$D#(NY4h=Z>1M9 zy`jE{or%cMm<5I@JdXT<#PsqA@T)$1U>sDQJ~y5n%pFt@WTG;@x7}(CW~wm531Ud5 zN@Wnmex0;mwkn_J_L~eN2NsFTpPgmDUfbQ;*m^*wk+OHNMGZaLZwmV^jtN8;k;|A` zK)W$?aKtGQuQ|NP<<_ZMf>@(nyWdn6=!4Yae9~wbkig(3^4YcdAipkSii_j4De*L_ zBOcqqQ`>aD3LhaRLO5NFx^puqLz5U zco9*br78MJnw-yYb(|Ft@{=*6l|-t;RSJy*WpiA$yS}p2`1WL!#IUGEyxD>|8#yp) znHP*q+^oZ6yU&lwxOa`DSJ+ls2sp#ayc;a60bQ4CnQ&SUwV8r^k72LL=fY62TxLWz zUVpZ04SDuJa~G89OxOcEMsf@}dI6*iEJ?5QRD(V-h0{(Jo}C1+?I8@?`u^R7 zh9D~iKHl41RjB>gb_9w7rJ%(EJ0jlNsH{?1lvJvg*sA!1GL$96l@ODJz#Vva)Yt1q zy{=?XQs8vK$8NfP26azau#_Z$S4vHA9L*)vd>9v%Va%7m_>L8Xc8cuw?m>6dDlndY zal)hcz4g7ljqR;frBacvhzMoW8`2Lo4CzO%@e(XbT8HJ@7qk*rd8K6ZVwCCD&Ri z%M?WmQIxFmsWK?xP@S^@+VxX}%B>c%r*Vm#F;VWG@qS0XvG}M?H&+%Hzrs5e+$t%Z%QOYah;r% z((^JTE|=u8fX0#rTMWdD(IsWsVFIFL{{GIxwl^Pc>=SQ*pb@;Ye(%_g^oBwAQyZ5c~||QTkix2HbdJ~eak^`l;cOHhrpWk!Ew(N>&%Xuld4*wAAZ{@Ol9N( zOUWDQQ?IX^gF(-Uo@pDl<3-Tu)uHE}@rRifZUdpVMi=0V8a%7*5@^MmcTTrO{;1ZI1 zyq9p*Auh0hO|~1DgCiFOwBj&kRM>E!p;_tv+BbaDM4mJ<+sf`OqLn>cJP`(no^|5% z1b-zzSC>)%l0a?0H;#jfYqt)n2bKCP{%&CfVk5{gb-ZYeXys$ET!s-YgorC5L14j z!pei)$KM>@eROYgV+-9zY(0J=wU1Y;KvWn+&ggCWnO&qxD?C)-G7VF@| zkww}!g~~S_({g)oq2#p*JseS^j4LtS=OL6xRy{Q(8k#eflR4H?|7hBY6SV!%SxpY?@78y}+1^`k&FLpEOEMl`wOD$y z5b31R73~$@Zf`$qvDBh!vGT73s}NuI(*;FvKq_|tMpTl;Qp zW3xEcJTcuKql@ivO4LHyoq&J&j9ifk zy+4w=z~62x!kwC;M$zj%PZu|mCuA=e_c+nOw|LbL7$sES6sE+3RXH9TnI@^-;D4>% zyGNzrqXPY+9T0jXG+#z{DQ;)FKj;+a4EcUkZQ>V`xEZ>hD?jG1&{pE`{`%VfhuWEr|*Ozf;iL5 zo)b6(O^vAO3HKK7p0z_ZDC^U27Y6>QUIQG7?sP=@rrOZ*WAQ#DDyAeEYh-aiI=!CH zI)UqWc8!JRIXn0}o_q!^t)Wcpq#3b;gI=O}MWd#@C;IO-<~{wmZNCrtUn;o&EiEoh z=>MAOe*oN;i`u#PZ0>iYYAaj|g(YMK765CzQCLl*g(QL!Y1oM`!Mog5LfB&BHBGLl zSjtoYA`)){a>2FGE}VP|GLf2tj-hH1-(hgw<^|8Z4uunaxc>b+wXz?8}p3<`k$QtA0hq20+962y;vkFFQh}1CVQb)6hAE4 zLRnzLP-k&`D=J30<-Ho-a{k=qfq(lO-K3dz^yPz%V zexMd<6qQuGP3THdc zA0pVa$2Wyoh{RDFk=Fzwfz1H%9U18>GQJGCs26f9ED>%yJtrc#F5W8D$);rn z0qVA6)m(Ife}#l+U*jGCf#bxl)4+v7I2YGwuGHt@e+_P3idpLPm+kjWa=<1+OVXl{ zO4UenA#hpAcwPw|bankA8N?SnbJehgx`fg>?W3aqXzSo@)BkDAFHGM5uABbb zX6RaMYk!AXJr}jqQp9)xj0Y?bjuBhZvH-CPKadsyLsbN8mk5GmRL0Q&8#A18!kH1} z%shSC3J1Wdw4OaXm?QOr$<5}S>3`s#I>CFQ|K{>i{{3g7|9idk&+-4b6BswOb?cVK(UM8` zFkOfA+s-^+_Xqd|dEAgUCok>gZ77oEidSSpmPpqiFDf+_9=n49B;pcWVFH@cYn0`` zU=qzoNBkC#_vq8zlP*jDL)$rdU-ZAw$n*b=m5KcC+UcM4Ct#vAQaI}{10kOba`7fi z0{Uo?Lr+Dqb?zaWTAm|m9+^SEGwd;YNOp(9DoEVlF*lZN1bB+WqGEbNp( zodN~}b=v$6cTL5GfrxW~-t4?CYRkgj$Kgs8{V`sQ#0HHkhx?6yBt|tZg5%(AA&?WU z6g$;%74wK$U_?455EzLTu~!70F;i~L5X=s+KZkOFNl#gDAB`4zqj^jNupXoUs zu!dB9IJA8U_4gUmPX#my2E#rP+h@pLOs#Ehu2$ezmBB9#osi1F9ahL*;|?1A>~qMJJCRl6D7H*1|<`(F<&~iK}m+6N-F8Nf@@E5=Ne{@YjLJW zYHw%#?jeV$EE+8(`VB{nQ`XS6S=U9ud*4Cq1CsLbu}dH{yR3|9I9)LXc)NM~iw5?v zrECo%u|8yFEL?|tvT)RxrwUkE;3$kNipb}ItWqTB(VslP_Z6N0CuTr?`#SE~)${+$ zIsebi#mW8u`uTr42u@8@^llG5*m2>!1X6e|cUv2X8I@yV(AJB`^Pj|4-=un)!bqdEc{L4vYo&Y+@!k62?)uJl<`IvST@;(aINj&Q?8_4H*v zXAR0?_M#eE&Up^}d+a(VHFgg75$CLi*c_Us;C)OVRDwaD9Xzei9z0{^pQt%49V>mw z0Y4fwVq`cg3M2-T3fe-+)kVJvVQOeMy8Ev2fezpUkUC6H6W@PHt zFbLopYlvozXaYym=gL7SZag3}+_x!|GET)%q@raAc|W4&DOr1Q%7Q+lov*|md_VNR zLi&HGpQTgxLmf33ExR5bUCH_1$jSef<`*aQf35T{-v9Z;lID$2>=9GVRePjvkCH5N z=qFyFxq`6bO5E%zr>rtThhN5UYhzZq5rd($8S6?oK z4hKa4;wg}p0A20VntQRE_k#*u7+^t>#|u63bzEIfpU>-GJp=yxDgBE+DcC||X<->g z&FIc#3ZLB8KT7%!&3@aw>;`ZF{Vz50{Qn|if==lF`p^IAY1jz%6G!kZ_++e61>(06 z42+)RNh2Vm9gNAEsbtv%;t@(}`ty~*f+>Q6&V|FTU3ibMY=WvcDw5&8puu% z_<^SN!!Cb>A`JrMOJ>=DM~_K^zQV%9sNiwqxm%jEey^lKn39y^k#oFF1iU@ckAwD7 zNes+m>fNX@pqmo(laIk6Zvr(?dZcna*jb}Pd>ZW!i0ObR`6r4!c%GMa&pAauRtWE( z)Yf8dAGTC_;;KabDj`su;=55_VZ>sWU>b=_@Db)*!RAP`FPZIyp?%o%eU3ISOHt5} zNWhvn@0w1^QN|!5bPi^om`CU%L3RVjeAwNn%>sF#`3AK z+uWE>5F3Ot1Ipw|`c?SryY0=#kJhW~^U9;G{hj?PngM=Z+1}aT*xuT!er+TL@j{1c zsY9h$Spd%>lF1=`ryo9~VwRHmU0{{SbbD2SE$pewvUX4=Re*SjGs zD-pIxIZ;h6oWU(GE~bOgt6V3wn&KL%iYHH=wAk+YqwVk3+5PQZ_;Yi8ZEqc;R8Ld3 z(;jw(kk??LF>f>sg%r8>pVX$8+tKAtX9|Z#e3vr^1Gsq|5>mXfiRlvRZPYGij@ZUH z{com{#MB>e-{cjjH!!0kC1JG`6ZqJzFxkzNO46I3+N;#wMy@1NMkfJ>K(NKuW~TNw zTs(4blNdy5+0t2M#_2~o5uA`%D`C}2R~7=gHaX)$U%I}MO&Hq^fyRCPJ&`crZ`6~w zosV=ehn5B5Axn4W+UG?y1J@}BOlKC}yts}I#JHAe(_74m*&8~n;t#E(&#E!H`Aql% zOUHc~eWk!@d`Pfdq-0Va6DO)!#rIkRlUUZ_=ffB3T*uqM9)dAuxf>jjWE0RPx3wF2 z|NC-Dw>a9jZvE!?s^5Pa^9A_tixdCP*RTI!`^ZG&v=4gRbr`J#0k~!P1GJh(yJ#%~ z>42+77ute3KnDRMB%?`dLrROL;e_o&iEQW%LsIrb6%)%=A8^E*W%Z?k1vn)7<$l#cgn4USytRDRNe{Af{Qh(7& z)zIVbS}cM~X4o^i7vFRfeu(ZEYP2CWPoM#ZKORAmhrcnYNJI|GWJYu(0iY!HRXPlk zvtxf226>j9xU&oj!R%+p?SkA83Rlv8+wX;H5d(G{KmqK;W0psiQ!Pp3@$smj=0mLd z5bHj~iVvygE^Ox~YR*}Mf|8!%sImRoi3-gxdH?S@UDG*dRuCFoeJR?DiLlEc-x1u@Wb~gkF$9WigQ3_=T}Im!*G_8Q?SSThwt8 z{WtRZzpw#J-v6)r{eO4piB~^i4#vG{$eFLB)t|t7C(j&087Pyg(=)q5h8v-rsyM;q z3h`;tKke`d6F|G{RndR5IiGv~Z>~)2f3N%fUxFxSRr~L5uCHx9-Z^}DZ+Amrb;;+K z*p=7vEM7Hu3UPKPPs~Du4Ny)D#Ji}#23o;(%%(~)ew#8&11axxKUtZ^$F%# zVAuP{Z06DSy~msDdx!hG-=l9XHn&RpPMvUZCb@6H7{Xx75yruGBDT4<^?+4kMAqr% z%HsT&)ua+Gi{Sc~Gnjbw?NAOcNB@oYO8-kMD|z}~oY4ObqW|lqO>@`@n;h&5wwB-& z%SGi7H#)yX2ojv|+CDnAN;|j;91B4igtACt&7kNL7|P#5UAY5`s7-(gF@f@+84^EG zOAI1?Cg9UUHqYii0$|e1(f>-!`nP+gb&OV!j(uhHzqr!O@&ApbiTv*uA^%erl!P3W zNS{)pCp4bNsZx492bHJKQ{UD4tZ~pV1~V~aD6H$YgD32@WhntKi4tLjf9FO4wcajSL@2IFm6oUI&`<%njWrx7`kE!C2 zC7XuEpW=00Y$rc)2|?`y;S7d9zMR#HMkvKHiI+>IkSo%|x-9+6%N_Sm;@CPOFA1wJER5iq zEYEM0?@7R6MC=kvO}N5w3{0%6PJeQaatN^dqGHCD@QZzUxGeogR{O26|1S0Zm-qkG zSe~Eo|JVNhCp4nTjsLSxPVa=@M1Izq9TgXd~H@Q>jTMYvd( zjCxRB$T}vRoOt3o-iaIdUf=N|O;bR8V09U@21f?|Nw1+_t>c%Ix4@5x{)fToTi0Cju|M*Jge;Mt$M(TfM z^}ib{jpfPye=Ykz@O3Ed#VZ*XjiTiRJ9f_7z8To8XP%=O25gUr{`TbIH-`_`zkjs0 zv&UMitXu)6FpS{ey`8nY>(yGha(DaDqc!|PNm{LPKg^yjq{_U|kXL2K$|SIV2d)Y2 z5Le7ow`Wt8->vO#tZnV5>I{apQ`dubhBX3Hkl{nKIK1tQNFUa+t*v5%2_2=?(x!eD zzb@hMwAkkM-L=j2y%w}Y{E6@v#i^1+MQM~uF`?Rq5vk=s$mH_7`qujN$ zL$=l)tyd8zz3rbNMX%ZDL(w606@Df3iEhcUyDpxN%%JN;%G^7tdS zo>q;CdU@dwALPoWbO#=*9e6dRj=&X_sI8%P2QD@oZreQT=Pe!v`59xMV;OD_neRBF zsIk@RfroqGC1;_9t6*RT4xc?8QOj&MkXsmnO<^sm?p0^l3ywzRAp4(E>nWFOz`Wls z{|ZXr76~CM|4P0W(C!Vv3DEFC1=`nY9aInQ+;f9gYdx}BtyBwB8hZrhJ-Tb~AH50O zqJ(jcQwnreSUaeUsOg}p)K#B_t{gPDPGhYrs=jpH_^iRR&^XSFsFD{i3%`B)vc-2? zQ4O6lx~{Vw(>g|?Rmz57Qj*|F5y%c^BL0rECTS)%95>_sw=^#??%(+ea1sAsaQ@FX z8Wa7`>-Z7pvE2H1*B`7u*+Dynas`#UnOp?5c<JI(w0$_m>D0$-(ZxEf2M*d$2mtNu(Rq z!~%hmr9)odLv(YPVpt=;0rJubW7O8{A=BI88G17wMlgB}LeQ3@$G(6u?-7nK*<}1w zLv6^HKOsm{2Mk1{0CY`bIx-~@Moh%<8FlT2i*4zV<4U5I%qs1hPRGxd}E)v=r4EX zU|u-Q#c{FPu$D;GW?o0=ja5+#N2P7>4>4@GR8CDd(#Vj72LEey8EPrPp`0IVB;hur zaHZ0ipPwy5hm0~tR;!=0it@>+L3jjLq%GKIxcokce%8KV4Y;I#o$2E3uJ!A-8{O}?e ze`{LtO)}1ziI4?kgR|vO0r;r2y_HCCvt?!rtI{Sfudsb{P{Sj#CMAEA7q_USqzAj( zk9R~qamS4l;72B2G>9h=wUO4OX`#O(u6nF#j~;GNn^5=p@#a2uhVwry9OyA`OzAPe z9XlOT^gdKL{`stOpvCr_rT@Wk*SP96_7?ZQ#g)dwo_J5pzB$m+lp!2^xztot_ z{|B9a+wY@&mDO|M!t!3v|Aobz{vS;LBGQ&Mw-%GKzE^$7wWImL^VKei`&1 z!clNF4?u78{?nYF@P8k}{I|`}xr+H8yZ^7`-~ZrTQ1Q5o!~!Q%l$8&U)?sH zzVB&Dh}aO2{s+Bb*Y!f3VkeaUOQ8REKzw~O`foIwIsR{PX>$Hw$B&q0P2&3u;fxRC zuh0ojT+2}c1h#7&V0vcn{6|N#j*f*GX+l#sgZ?A4+jXww0{AxfKeYdu-2Xm;`Ns?3 zob80ikw2Kjm&W(7|Ig>~|CSae^8f4jIqf=;W(|X$7KG=X1-HLQ>)391tev>@G7$Pb zNApb2*ZLL-`#Dp{_kSJb`@_Lx&%e3*KheL_ao?x>XE}%eKff|Rk^f)EPnT#NLH`|F z>zGmCpysb;`(Y=Hd><$sh5t=@8i4;0da~aQCItV>qJKn!c#rg7@cuuc|7)WEp4+x` z={TH!kqcSra&toJ6Z)U?9JE|NeqZ#T$Ny?9Hz)Q#*YV>-7EG>YA6Wy-rhlZe&xAH6 z^dHlI|6S_1i2j>-|9|sKixd2p>-gE?JNqNkgH;e{=}-M+;91!)f8cl!o(&!hqCqyS z*UX1ucHl2O$BMLJ*hV(P2~XX~I-2Y_A1(a{PIuS?GI>Arztn8x{r{{?=>Pip|FcdA z3!xiozmb1jfRkLIIzt~`Yh2LXVBMR{%d(M#{j7Hz96OD<8)YRhzZ5CBp*f&c@66t#(~;$(AMS4nMZ z@8zDi>RzwP=Z!W_96Nu3{72W_GXMr8Wy!XpcoWKrM9%c|^vrbkbkA2qg3`7OtDQ;Z zDbwll7d!ulX7{zvfu1=3FOJ9mTbcU*=khbds?dIX+!Y&0FAyl=)Q1_l$_%^ixA9b% zVY-Ux2R5H&xzzx3y7&#)W#vV(-9Z6fx-?>QKn1m7&d zjSrKq63sANsTUvrJFM;DZSMw_3flmEUSG=D_@e`!4acX2xZpUV%9 zEFJR#wx-Wk(9`UmW%tsrU^Sz3nqis*QsQ`>Zj`3e|Oq#!&E>vyPAU%t%+y>Q%mEmk^eV4`g1DzFJ4-lu>LhOJ1yCb^&3XSS7rAta9rA;iTjS?nigKxQ`~kvw7~}o!ezw`_uQ5eawspN8WjrdrtLWq z#xchTkKmhyifds|-w(S^z*|5g)ktD5g9>ko(_!>ifu?D=mTQD9WDfL&8lmw2aBa1r zfD;EMB(4`rue(e1XvA4mQd$KQWmT3nf~|D4PC z%UeG%!ipIjb|N0`YbqVTX!*x&_@D0mm*VvOm$za355O;Q?J#`P@qhXG{|WbhE>Hdc z^Z1F!SDeN%qWwDgqd}wPxGu~FmZ3NY)2ZN>qW`(~f3{BmzfSz$74ZM2`u`^z|Lw}^ z+MUW7j{i&a|8jA{`;W`ZQ~iG)Kjm_nh26b^mfxu6gN}$h%Uk<*3zfY*1Bm54Pd^h}T_!m_{lu#9-dx9x!_$R>h zEfFIU9swDTsO0y<&j2j~Gr))yKE+%h=>Jj7Yk694gZV<89@Qb@b3kZ zhD{@=BZZ0rnLx_(;a{OmkA`3IR(}D7pF?B5Wyduneo%jb_1b#RhRz`TNFhH`!se)j z*wvpPCIyLwo;|{zeKP!AZK%PONPhxTr{}Fb|d;!M(Z;*^cJwZCC{ZEq48U6`MKZn}?11iCReoPI2 z&ik0?B(z^+wU8?adjW&?9gYAD3-#ys)JspX|8cnakfd#XtU!CSW4pl8zJkJErLBT$ z7>x(jk3$c&555(YQxiGND=-JL-eY3^uaHR|$F2JT8v|VU6uFrt-2@PP&;U0wDbo0T z+QU#UNl46AFNm&hM?~O%27gl*GAxiZ>IdqwBapNs(G;Hc^@w~5^$mRWn2!xrhuw^W z$3s2n*mFodHe>i_s1ZAo2my}zYWNqF=i%o#7>|%>YBJFO4H5k{aorIN4zW?TKX?Vi zME@nw19_h>Fsk4w4V*yF<>)ze*9k1e8-?;poR9pAy#s%6jJ^SK1QRQhh8DXIs{t)1 zRNU{N37-+)ynu$xQH?*4^k5f%vLJ&}2p!}_-k2lW4PT(nr*8QNGAp$SIBrs>e95Em zVE>)iXa9W~>V-&ijYa+N2z4rT&f|p%y%KW@s$t$_!jSDv1zA*TC?B=Sj1iB=#3C;l zXsmYl*TU49c>C=?o_I!aAYa}7Us_yQzC5-6-=6U=E@~b3u4DA%_(Z>--eQ?&4Su#*oK1rAq4h{gs}^Bi1?xtIoI-@%>y@~i~(u?U#w zu-Q_)PizXm3n2z!LD1t*ui#Qw_A5GA#E(Nrs`0RSm;PL(v zXnd+B1^M{n(sbT=Bl(YyxtzKD7cVc3zyG$fJiY&UzVbf z^{Vi@=X3MyBPC}VA;#=nQh{tG=X>)?E@zr$-@5|cQno#eqk82EJjQS&GWUuc74NQ`Ost-UN$b8&>t5a>7aa(y>J~vblO~qjH5Y%V)g9Sl(gSFOcHdr@*kbUgapV7_j>Y1CVR?JFa6o5zrWRfPET{ zjWI~}jh^Fo12$(Dng!N#47~f(C|DEdetmjhg--GGZ6XsgPmd#}v0r-=(nc|yNaCx^ zbf?t+%ZnP$xcr#rS=)b?7RT+s_onf`&sYC5&F+#EdLd{BP}-o)F?uFyZ_frcH-baK z`i!#ys!$9SO>rn^C4)`aXUmDfCQkQ~Wtkj=)$wwWPN#}rl5bdT#}fb;FZpAbXYf`Z z#XiRPo5=JEgCEeCA!tkrJu6Un_3o{$ovmtV%{RMbHtKgBlk5ytQ3@>Fw_*AaFT}^5rb+@2 z_324{g}6SIOgJ=w#5B0OcC&sD=0KSKwyRvg!PcS>xW|Ab;nwjVhFr%my|MmSzfmpE zmS(vgX|W#ZfE?LfXg9W0bVBK4Z&aHA6g8*Ln^O<%Nb+>4ES3Vee**1rO8H+|#5)Zb zWzl#2rsJKV{1=xdy#KwtG>!jx?(!enHca`U&-SCJQ_}T=gM)(Y1&-Iik<$rv*J}j$uZ;vdxeI=eaxq6^fe2mZ(`E zbk?q|-Y%d_+PH*>^24hmoThK>9XFPUtiYnCs!?@q}Eq1Y=r0^k3 zDE?qcS-rQjwXt<`eY1Z3hFGozyPQu(dIBg`YK0imvO$uU$|L7Bs4RmN>4@8&%}6_e zM3UH9$t5u5LtAt}F2fb$6`)i@yGV;z?X-Q$#`?`$J8O69IG^&y37GgVUx-fEq2&V7 zYIMRE$KohhqM0uPNjr@ap#5n>M9s?ms%=E23lEf(uTZa~3M-pVH>v$@R9;lZapi;o z1Xe|ekCXua&bcAeit>thUu1^*g@U-B#l!-;hYRc<6fV^C+T8sQ^ar(zwfR~Ml*je< zE5*+2Jd7~!K@`)GDy2>o`Z}dQrfR&*)mQ085DyF^7UREgf&G4UdvksBW(iayi(3aO zs_T)ynb>wQO#mk)Y)ll8HiiZsGfN~qhmPDBpUM~nk2bCLlEk1lGt9YLEb0KDn_x%y zW4w8DoG%lJOY)SQ*c#DnaHDJYc^tOd1Kn7KO4~-{m>XDgh1MU-QP8z(UN);dOOi+y zZU*x!bxiZPPLVO5&|f6f{j5aqX2rRW+|i#P$h$A;tu#~aE;ZC^l5#9tOAQ)flFKY{$qrPw1J1ta{68^Jy|^T`_GH(n^egBP@-(&cX$d>-@q&D39sZ(I$o9c>LCC<2<&~Cd4UZXnq3?Dh zn}vsMP=_s6(&m)g&~25S>!}PuQA)g5-7ZVg-m+|6%xnlj%mNw_y*9$7<^?8oUS(zR z6>vx_6tp>e#eiTPcsSJ;3VNX+6_6lsxZulnmOh=DCowF6BsH9Vpm;*=EzlGKKaAY!26Jf#isVj%V7md`r7Ojt7b&1Y>nRmS9m7W?1p` zixl@Aj8MM+GDi*}Anv?}1(Rvo+_%jZLvx1RUER4w%R~F%J%z04GjIz7>m6ltOX9%P zM8#@(US+pZPR&zFkF8cUA45!HM1fhhQ{$x6Lbdz&bS$F`*;<`wo+cQ%VIujSiN3P} z;1b@eGfS6OR{j-zD)209OS!vUxv_R96*Y7@lE$D=aRBazf*%(jm7ozwa>tq}(kILf ziQPzDm?-&7@@&$DvzhrJ>pqN^#pKzzL((}SA!fAe;*9amIzX+3eRZjr_7x$%yDEB% zJJK}t=#cWDBgAh;yDlF2D*y-5*H&G;9PS5@#+U385eGN&LULPK&kIbFXhuOzlGkY3+4G=vBTuh3piQJ8EK%m6tjv zQQf)`#hh2Jsbp@ev_cKvNQJ;xbt1Bq#+ysGX&GARzLxFk1$ydaNpIPQ0V+yGTDi!S zQTdJ<%rji2UmXL8H`bKQfTr2p(GnF&!zfZ7D3%jqly}WD+IE?n3nqG{;F7k*Utq|V z=6jlBK{qrE)QXg3G(hS_0!OP%Pgecx_y45ze_St*&UF9p@}%|u>H9C|eg5;6R_=)l zPO);2ehEG%L5132F<4;y7@d6w7ih&~%tG-5@%rZa&d%yJt~Ajmjf_1>dy8yIXNxVu z`29g)U&UX`mogqlZO*YuwfWjy;R60HVFf~wV#-3TR!lI}YRhD&$5qB{DHIB5FpDEV z3uyKl-XZ2}UMn&AO)zNBY{-NuhoZ$yaE8G!3}OCc2J;*flkoHoAaU&mBnG(NrErHe zHkz>>@i$ic1?aA(9euP=*fUxW-%S6WQvSh0!Sl3G@7bUKT*R~91xSqZpux*x~7y8Ft;Z4G)ACzooVlL&GB6*Y&145eb2(e)LCT>;BqmwNk&fwY9Ul zeY2`PR5NuYHB`_AV$u&(ICpdV-nIJmJ8K*3o0U5Jy0;sjJ}l3JsL#*cpRK76@Thrh zDLGV^sjs$7YlJf5V@U@+0RR2s=6{fXJpT~*?!TP9{4cMJpZ{CBJU#z&{`>zpQHyb& z`}I7|%MtirBPVgd)!EtJ+L(L>C&`?2`ex$cn}%UJE;y9DHgOI|)EMWfO!IjP0mW74 za)Q_lXbhzA^EXrPyPQtg z?^m|3ZB;9!i(2oY8t3D#7RxFN0T*AoAYE~5YwLE2Wmu}j^1oBBu!k`wrs7Q!@(aML z;3o!YJ%ulU)0?h3-&$6c)%RD|HzwyAJ;QOKJU(ef)VU#TZRx-Lt%esp_@=&ea{_5l z_)QPKN0*$(SBXN>PGG;h!w{u7_eZNP@YzY0aC12#igxcgTtXxVWFNDA)P7nK_u_NX z)&c>_dkQ(RVUogR)_ig&PY6G*q>F>xsFaeEKryS8*ntsXkfsGZ6GU4K%mj-u;>%3M zWSI%n50S-hUv=fXQ&b1naQs9FOkmw#{i<}~p_&|0q>QmM-nhv{&@&fG2#n3Z@0czj zz?lxS#>#VwV(dz84=8Vm{UK2?fsEWn6ceQFx;|?Jj_p|sEHn;T?cX@~EZ(#PoY+Vs zVzru^p1h)7Q+_o0$M9HMYtK4+`M)&5{{y3ND*xv!|M0UmmaHs`RSC&tv|lKI*sj&RqVB zi^U1@Kb`;ILivZ`kL4dveXQ@MM_zaksf^gi5vAgdB}*I@S>HWY2B893;5jr3Jl!<~ z0yxU~Q^@=7?Q8Y-SGU(!H+QP(`jM0g!g^=*ZuJCOWPKo`)F)w@tR^&m*o4WISAW00 zbNyE0PGizWWvz5^A)ifo$ZARkDy|!(=4*hO6KP5FC41Kq?*EXi_ zy-)qWm+5~Dj^wp}4FB)F#o~DUhsCM=cfR_6?3S)&H_S$pYj_xZ-Dw!69mbo`I#+5T zh0s!Hhn^S6Iy9h`N3S7e4}_6smb3AQUmG{s)00`_w{3YeG z!5RqxffJaIHiOy}sB@rDl2_+O}iSd~|}JeBnT=a!?a^ z1R5uPJM?T|!dhH$YA!zs|BCEgidpjXsqVB)8;vz(YD#$&5?75Z7d%^}3V+J_mg&{@ zPNGgc;mmrWF3lxkjnm$+^&hwwEaU9^|AhSyd>!5YUG@6kF@3ux?rp6L4yxI^7|($5 zz$lY6ZBtr5Kx9lG=sg04q6pS1ItUI?*@gpbWO(KHnIU{Kj~dK;_q(kBso7HU{%2(Wd$sFd7*>M-z~t*&aDZC$8?!vr{7DN~SX^HgG!x+U z9R!Yq8Td24*8VKsnHSd7J|X8EiO`4_y}xU&T~8pz`bUxp)3PIuAKD4XXX<)GKK^5w z-@Qfa|EvY@3im(7ULmT5-#)x>>LM*LbX%Z$!)^l>X5^iU7wKE0+25nj#vSn$>!vOSiw|zQ|7$c)NhAW8Kk1!jB z4Hy;<`i+DnMKca^$LG2b$N?M0jWz6;dGrJbqJ{|zjE)wtRpdIKNf$E&vjO6-sydkL z6s7bjmJyBmMAY_J?2vgP5)&>eQ4Xxt;hu%=P*^F-!XtxLIxU#+a)=yxZbLX<4bN$b z75l(iTw-CH@gu)3;X)Z^8}@|FV=CV7)Ex!&^^PzOB{TshgOmvEvsEj`7FJf~v+zq7 z@QYoidonO!wQ40!3)DN?bczH6vqOGT&{9+id2Sslr~-^$2|Lx6>sc_;zP;15`V7`% zmPY+zT|PRuu{wL?%39JG2yB9!A!`1L$nGa@By?DpyWIF_M;1sSQIv~Hh-KmuliaZm zF*5ubqf)@tY(2%`+GdljxO#hPbG@=yWr(^#y%l@>l0C*Ns{@;WT^kSHS{C{~(=MO; zE`re86=|g5btPiJyHmIRsfaBs$3%l9Haa4W%nit=n4`rk6(G{mk9sI8T0VDGk&>Jr zzx4pWm-hZYFg?TTw2g*+blK;Bv(w4*|B?QG_4+@(2o6m&^xWyRLE^&u5|$FE|0rLZ zCdg!Yo{e!_aujm~rbLc@Wklgq5b3$5z4N3Hv|Kvu<71Et3wC~&z5kyp&L#2xXGi$| zSFQgqv%1H}Z4+v=F^%o5)i<(8mVlRG)@aUzU_I}krfzW=skF)+ z_jegbR&>I^JN~-a-fiLzL;}bGNz6q)#zRwXG+rF=YX^207^B9hn}KQ6I-Un=Y(Z9Q zNEH}OmoEoFt0n}bv9XIVrHo@C6q&3ULf#H3c}$f)m~udy(a%R=5B*;2e~#||@rKr* z4)6`MVW`#f{@$yve^~nc>%TNJHCq3#iFdoi-Uo4Y6q92*G5 zptQHIAHbH*@v2t4X1YGck+SMlX-Aal=Nfklp|c5$26QZ5FcVXXT-sZ{pfuQUGJaRQ zNNx1~KmYn~`{!K!=eYlyNu2+eic=%|pDVxr@3dSp@QK2`)y&!+h5E1|wd2zIm*^lg z0Z6s)y}1v=JZ@)Q$G6e8ju5Ynz%kIG{L!B#jrSf;Z0nEcFJe-Q>0)Vm7J99)o9Sad z($?S5_3xXl9rJtw;EeTODkk;+($wt8{^xbP|HsEc5Nt((Aj|Moh@uXQzm8xa1jN~L zItl9_B%A6X>nD(h(8|(}=Mm$AAwQ5C6rh5P4cQl^##a$`U4Xj1Yeg1FmghO1rnUTC zK7@8XyB(ljG9k9xbeQb6Vk%6C3K~|PVd;-r&6EadF;d1OWxOqfyW2DNy`54@cFcWh z-LO8Oof5Q@`=H8IpbDyp6m}aVYf#0jk(OKKh`M9yBf6Jzo+tUXb%=2+5Z*T`t&CAQ z9iNW4vq4KI57a|EH*Uogu`nbEW;dI72zwm!&5f)tM7{0%^=i{`7;RQ@iJ>9T0ZSCT zV?5#$>w}G5V|Sj<*Ntu4c4OPNZKr9>J5Cy-zt~QbG>vVwNgCU>&HH-t{|3*Sc{yv& z%vy8yoIPjnkS>o%Kl4jU*#<`{OY+KOn8=)~KDN`)x${1!Qdgd7mIw?m>Yi>W6m0c? zfGoBYwK%osdE{{epEcPQXFm%@l?=AjkK`(bUaznG3_Hs zMkdvY85;Dt?`wWa2Ok$+;*fvS>!a4quyqj#i-j!8_6==&- z;xI3?M>WB#{!a%=FCP81KOaUGetr12^`RCmhLkL3q=q8*`}T74p%zc)PK7^Qu&9nQ zB9Z)3s0_?F1o|}cQiJbg-JLfdZRx6TL0B1g5;K+F-ER!K&fc!l!NvP@Z|oQBMkD75 zc6{Q}Sg31jY7tUV5q+cfUc;H;=JV6;+6PwB4TxVhON*`POP4OEe8`y8wyWPgE{2ww z;BsYBtJs3d$S*Yo6lb1Qi$chQ$E9$Gk{eUqbB-N%EHT3?S#&>JGlxMXk5kOtb45?JS)AidUB4W zB!kbOjK@#VYWYAzd5?u{c zx>3=9%>G4qK8*07-PUKufJE(p$6TuSJZ!W;y~glEJ87nBlr7ndadm=hB`QtsFK?s- z#!+pU&O>PM6IMSlmJ)4^Agm2*(OI!i?p5V9{!b)!=P2pDuGe%1g6Ry$zcQmG87j@X z;htvqyoY0>GP=-5jL_w=M3-I9iDdc9JdLW;0`RttR^MypsxG=qqL0f70hsm@W7!%{ zUt&GP^l-MUId)&VxUA8)Y^ciBrReA+YCQgEWy}#R)%%yjVI-m{NJ36l4*+0CZszjFjQ?KI1WiGjn>04!!d=n z990uaarw{cpNG+>G=am{ViF9Eb8X*T%IS|j?4)fy(E<=lQaH!o$CWE?b6<7|Jcj&c zC(?ssV}-&z@>LdIL6xo;QE$P*k0~4c;Ud@#nR~KPvXIb~4 z{K-xturiz(--_y6Gm#ytDUp=ZDIC(iEwcE`)X|Mnd1#YEfy zo;ly29piWU*gM*MFw4z@$}8ml%n2Uvw1>o9f7mSE?d)t#3xS6#Al9QSYX*F!xZis% zM8H%V2?qO$OfA95!mzL`+Wn67kv*<{G17YrS z)?t=U3~XK0+SqC?M3Hb*3yYvqHhv9WV*kq-OFr!Am;^ohWPOv=$ynk|ZzU^MuN=Wj z*D(++wt2+Os>Hn=s_fdoDU((cpto+HcrWQh+>~zJz-zzoX48$b8<*T|F7glH)m`U- zp7gJsa7ZSf-*fsiI6`4F6E5)y(l2<&`aBXP3GG6W*F4BXpxtWES}LSJSx!qvk$-bs zyAf{Gte&(d?Y|T%Jlf;i{tG7OXQ-F=%`Hv3QU8`8FJTecccz79 z%O)EQCqsu2DTEoIn~(*pIGVewHRflb)vHT?=|9f{PNVlvjtM5ym*0E~m#;luOnj@) zTO<N2o(%3ie`jk{uq-oq`Q}Y1_uhE3%bKIcvnON? zS9wGhWVC_f(i*?t6`ZtVg3p{xfR?Li{$4Udj>M=$-Yil8 z_9pg+l&>cxTA)vDu|CfeYi_GQ3T7gjH_{X}h`5Bm;h(GV$RQ|a7 zX5F_|vK`50S(PudRY%w@bL&t#n-Dxn2`Ht>ZdAR%Dchdev)l84>h6H5zb6qNZuR^k zv4D5ktrzoD(nI3TIYZ~)RS~Qb{m@0Iu!wai_3JG@I`X5Nw)Wgf zR%c57NpvH3vm{=S#bxCBAh|OFc@Xf2AXAi{$hNWFYVncL-l5YUq-8DCqa&^~w&stt zbHKy7q!y_mQdX5IF|URpZq_nyKBdT+j||mn%;35Ds6j^O?6M{J^MaC2w&$=331%S) z{1W+O8+(<`5wRJ102_714HdBws#;Uh+*60yupUiy+KK~PIS3hEFRiA9*rSpRt3JA$ zrau~+!7u+2Q+F6JM8R?p9(xP(131+JK=|XP`1~A5A*;4-M+fPVb%2fji zKF~Ou2Tms|nZv7`Ey68ANf57gz6648L$!9?CH`yKn@_5`w+tglP1e-Fv6iV{R2!h< z^ycRYa5f%tq>MKTD}O9xl5H1Y{z^z}cPokq?J*eF!fS6i2%s67rH0A$r>R3)?Cy6R z+~+G0CsvJNCo%|Px8`va6WVjCpzKq*ry!A0ykH=cdJZ7!jAa1C32*j0Q@G_ZFRCTj%+C0T*f zf9~Z`g3(|gBCwqxVwXm>Y5CXjPpA5|bns|$aCe!Li!XtY|Cpa%rukk$)yS(4# zKlgNCRM~;f0?=XlA4=MV5At!}9!Gh@(PwS!qbhVETlNgrg6QtYl)IYLwX@UaUbtaO z)l2DGl{2Nib&pI|Hfxp`-VP5l%BA5rSj}fDS{%yc;`x#os=?^95d8f;%EaI2aaVa2 zEvkX|M{n(iR1HYbo7vcr5dSy8qJnQH_gGNp_P$Vmrt=4c0eB$3i1G2=0-abNYR{nu zu~`i$qpV3AR*!iGxUgf`zAB#|xjel*Z=-5mr1C-ozk>X15R?384F(R+)hbY{n{K9g zkT+3Kh0m&ZguIkWKTGa{-C@g~_cGc@ul-kLXHT5F%qXQA&0upE7bhDRiz+M~enlc} zJsnSJ>0dE3KF630>4Emsb06Tb#qvyi0#b1!V=4_1^kUMvQ%DP>Mn%Vy@w zUSW6xjsby}GdSn=Bg6^9{^+>Jk_58juhoAn%QlG0_x=5im#}o&62h^9b;9xMznE)> zB6@m0?8ZBfH^gdrl<8H@m^WmG>;I6-_~N%8YViSj>Hl!C+~1IK*&Q@KWw6d9v;j6F-)d@JJrI{#B!%p$6{80r~klR5Vk z3Xx$`OfzSMPNgvuF$kj2H`rVcb1gpIJNh{hQJrv@>S;BBO~N>e5!Kw%^IPM43KKf7 zO#dDY>_W1wX_A-XR-^P%3}lla9j2h{59yMGKY{$gzF(EYg>lg)#J0>n%YBJN7%!;b z2vfvU(7qpwn0y-C1XOT9?!r`PnsG@z9sX&(mS9_HZztf(;xc1j?{O(@ME5i~T6UA8 zXbp`2YDpjowOQVH16kC<82H5i)4zfew55@hi=5M)$9=0rL00e2eQA+R&z9V`r-VHPN&?GEv3B z>MPIYE{#|l38P(4baX@T#K=$S=~o*vy+#iPY8%J2yRGxL-3PTyiA=MPw6qQP|DJ9` zXurzhwdalv;v0&E_jpAMyroW#VKIALr@@3D`T56fv1nY)O%3mA?o2NFQ+{fY z_#GDlCt&F^FkE2IuJ?!cEA2hH_cBOw_o%{5N@k~DYa1LMGAS|HYYtn)D%MATtZvWr z{(?sq7|tTi+W~_7AZ+_U`LRVUk^npNA^%=DSDyq5arad<)<$;MR|Q6ffuVKaylCXYFIT1Qs1pbAVNFZ7U+ zN8nlCxxU@0Fl?e$73LYb1L@8dO?ryAw0Q?eqbhn|ypDmiso7rIqRIaxP zBvGX`@GJTiJDE>QCA~BB!D9AW-Vvg@k+g+Th%*`#Vx;LZ>^w~`n_YE2@IVp!th+|I zG=!QoUKi7UUqkC4-a>u?uyR=Y6cdy#(*J=vWaANx*x-npgaT~*gx}-K7#6=GM9ySFmZao6_g8MB!QrF0g-}>9fPY3gRE|r+k6k`|p;2 zYY>y;(28ds$fqr>ar!uZ2VG-CKkd(FRH@j0+~|Fm`m%#jjWfvS_O_}6*nf?9m+RF2 z=kWtjbpk9*oOIrR3>A>&V1^{1a*t>_129b&Bp$G2f-A9Vbnbfv@8#MpQ||SQYER#; za7#edHij+vZNCM1&ih|3fJ&z8*OR+~vx|R@fE}dR=+UtiN-L)mr?BsVwZ+s8=^)pf z(P!u5hRW4fv7V@r)0tYi|7%z{iz9xw^jkd7;wt6WEtMYhXoEc=0DMH85Vx)w{U&O$$_mvMhqek`^n(4O? zY4$W#_Ar9;PxK=u&JM=0`=KRlRY$269CFD6)rtQcu$tPSY|BNb^Rs!bQ< ztsD^RM=7FR$N7H0cnk6}PqJdZRs9P-x&Usi(}5fIHZ$NHxF2TRiWFr6~b+PQ)cVc?|Fx)8ra^C32WgIzZ175j=v z#TLu!41OdzqXd;c7AwD@Ae;2r-RH%NKw@WakZ$vvuz?Lsc{AQB(Kq*V)WDE@vu#Z~ z1ErJ)D70%55B#9^QehDnPr>g)G11mO z)eNJfP5*n?b{D~ z=v(+n;uU?M&d4oaRp$3R2q33+_66ipG7FfZd?5F2Lf!^@qc6zOHbDN--16jsEcf5# z>9Et|h>0!3LwHfg@*-qYX6OoQ6jp@>K-)E!{p>3STQ!7r>e;odXaJFyW)o=gOso&^ zZw7Y?K39~$&e99fKdDnRRy=3iT%jUkP=g)sLST15)!`~_Aur@XBL5u$ihu{ESpIzq zY+uZKe6mb94<#YnLYOtdbsbDpgF3MQ)wy$jWq9XnliuJC1ND@&gXcNx7Qjn z+U|{tjSZORsLLgTJn!+&r;pIH!k|olf~U(%?_MafG!(43LCxZx)}^=Iqz(3ay;rhw z`A2`XE6;*U8H%nwq0%!`4GLFNCvvM$Yi)>2?T*0>l0|)k&id71G1PW1^yZ&Zo4FSY z8DFEfa4>q-`uD(N$u#|+Z!=bSC7kL+;QaBdM{-S&QE^X_EPTgGT z;8UhEOz!V^dc|!5Zo0x1Wu7|+?x z6o{r2@Uk7J6%I-le+ZRCjnC#Rf#14*G5$hJz#8$R=nLcpq}eC$%0Uj4Jpdi6Rr`R_ zFz6=WV;|)aC&K8l?|WC!r;OiF?94Nfnt=oqA+C`q?Tfhr8gXtf(|K?AGrhn*i+AYZ z4mrQL0{E(l`2~d8i;psQ$weNpOyPgw+K@<$} znc0`8N$5iQv^fz+Ei&AAJr~?=Ai4;s$B@0HSNYId{}*TZWPXum8>5qKqcr#Xb0H%j z@BNdjO#+}|5vV%{nNYs=rn~}#4?y)Dxn3ODP8TR(2U>-=?t%X;UaZP*RIpZ;70ohJ z$wr!(NP`va=Zn~=*iX=2VqaA+#N-B$bMs+#rhNp$n+=RsXi(HL4iE9eJK{icythcE z@xl4Gf<*L!wvgUnXGmPlL-55^-n)kxryKp5y%Na3dJ)S6lpcY#JlzAp4pU6;%7{&A z!TW?GoQ6}Y327A<%=KPi@ZrM-Ub6wV{sUi0-X#5iJy%j{z>f9BsEw}Nr}LWaXeV0D zzBy&pp03SYCA-!UUmmJ@pSFD2ba2zmP0qi+Oz zZyO&Q^yuWEcF(snIkSy`wg90di80n@{b7_%=J&n$udX(^!(cv?PDSAC+owFWV$kz1 zzX1HP&u&PYkEsMjzzMT=&v-2bzSk3F-*tx*-J*IS_xjf@sC}i8;H9qizmHxw-6Ju) z+cZ_H&@H7Tag~N6yqj`N(g=4BQsQA*m8AHG=I+9Bdfrhd2sPsmi17PJc<9AHO|m!y zqd%5+Lgg>uBx3ZYN_|~rRHx(agF3#nh2zOGI@=Z%{c`cdnQUJu4>*BH9ni>T+W9Dw zDneQ~iUfEX{ZyaDY5{bW+V@^##Mf$88Ge-x4sh=#;~L=XQls}MhIi9B>G>^q94ZH8 z7G?lG@SGrvoSRcFTsJ7b4|zvn%RTSe+}~1M?MO=_h>zn@mA4jU0A^s*lbhrIgrN>+ z&&d7mWvtQd(M%X{1y=YbLxOREw0zn`_b#WU}f zXR@Vn3aWf8TVEKg6Fm#ar`NnXqbFl(GhIonw0d-(CRlZJSdl8`d}^K~M=__Y^i=B7 zQS5h#TwPkQ2!$;dmqx{*S9-vL-Cb8nj3DxIcM?8=o}BAEa|$Mx<6NO0>ahA4PLfIb z2m~v65UEDt&Pk?gt@qWW-5TjB(VV@Tn>w_zQ&1NrREvGXiDQ80gR_$HsEe0T*(BFs z+mZeJINrT0GqS!z%&%!FPg0^pPVNcr^}Bm}>vpz{=)@E{(1~KGT-uVi21J7wRjdnK z{^c`Hljl-J$Li*>k(U!oC&q7E{c>EbGx+j0G%tH_vY<1;7*_N#L{7)z%BzbSBr=+Eeh>mCaK0h^>;n}aA-w;NKrM@$)Z#w64*$H zq3^Ds%VC6Gno$`|T(<2wo(*?OW*+U#1e1{+onSBh9iX0>qnfBf_Z5RZAF>RM@_-4% zU~PJEwvx5xjjz~kpR^l}nw)2XsVwYF{S(OHVX^yF=h_*;W!&%*Ra)$VbXtAqQe9g$ z5$cj~?Pq;$8GC+viv;1Y_YlN>JrADVYtD1|C2=|mItx4c!@y2x7qP!XECbFkxi7Jc zmD2AqU-5+`NKQ``>y2IMb@GToib8YEKDD2AeD#lE$?Ue|2#kHgSoz1U{_J*YU8D-Z z2sFCIMSDgksM~BDBwwPQNPEej%Nv?ig9N;(q>$UsnYxg>@+ICcA*PAW*TU+_^hMEr zQsf{+hplAhQwcS-3DY+C20<^M8Mi?BC^);3HtOc-PaeW>+u$-JbN0Fy@r_14OUM6V zrUcxYaP&S|uui}z9a!*g20kw(@~VJchh`3No!%SE)gTyso1EY^@)Cf$9e*~fy9eQg zg92tn-5!k-~ z*Awvb4v2defNTvgEqELV=@VJKP;#4{dfP2&c8xetTfQAhaBpg*=e3UWCZ~Dw>e#XwLno)v zSx*A<<6&tPU6 z$y3C=#1VAMQe2Zc{@JbbZYE)Jj=T&o{sm>Xm|g&EyL@HFW`AA&d-ov$e>4WdWXA!Y z?!VHZrk!3-Cq%7hsVhH(tb z+5BVnl0>>xNtJCE&X1My9v>32ek8C&}5aq;!J#+5;&js z3Xhw*N&cSHC1H8fxEAsWHq6q28G6r1APz9GOYM-;=O*#1w2~o*iY_68Ie4-Ei&|=_ zY_qmQIw;0RMIX;T2d--|SOL0`?%k@!C=_4ucUe&*PgKx{c=13glqh%b_R@zvGvHas1anu?$>>uS zw&UmJH1g)xsux59uKikj-rq($&DI0jm`UO-74G3p#ulA;Ms26`gI@0PMt!c%?=QuC zmpk8{ZYC^x`j(ZcG53@GuoiC-Mtu%fqRRYqi1EU^`8&bDYEtPL3(SFIm$FHQSr z9h@c+?g3_M;ERqs&K48Te0`z9F6$n#OpGzEfQs*qKphUCl#*N<-0*qLE6R$CGFx z+adRo#quYeBI?DjE3S$VO>$*efsg2ynQ?_=t9(i#cW}SHIA-!_>eISG9g5xAe2(_=Svimqk`ZC!|Tmb|C9o(fEcQjdOB2s}FYNl=T1s^y*1aH_(~rHS z8#Hu=9Uq589Xehd#S;g1$c%G7>r`&1*O2tvw6kYPo=GQx1gz=C^oEZx@O12}CEk1) z>|L6e@QUB_!5m0RIoY;4p%NUsdy1lAf!KwkcO~C#CPK zDGw5Rd|S@4(^T^0c5AEK&{;sWi1@^lDJW!l@muq{&Xb~+v(3|in6IRcWNI!|iu8>YbDcMBvY`B5ZgemV%k$szHZ(J8pGy!QoZ`bIb|DB$OC?mur&_J=HKrNYrZ zKN+I8CN!myq%fhcM;27toquTwG$+6M-I}clK5XV1Q-1^|ye~QOxSf0eS8PBKVotIx zms>204M>`sS)S6)1Mu2~K$tLO^SQl%m-X-BKsMfwTept1mS!2D4w-{gUDlYe*-c9c zkEGg^1}okvDOqzS&2rmSD&A$f5#&da-uY%~E3PWFOsFFujUKMQzjtX6v1B6SDXh#a2YZ z>M3BqL0?dqrguCwJ0HAu0>mWF)_sgmP7Qp57T5$E9!CORD&8I`?!!@Z& z#yKw2Z78HP?$u4DCb5hNM`l){W+^La_gYxMLkr_!G6)JuiJxeu54LL7OC#4=yc$k^ z+^vX5Lu^_SL%W^gs;Z8DyIv-)1}UMRF9B#}A#sj#v)GLJsPn6~1l)G=wut~cCqU{0 zg#$f(APclxQ5YVI@MpsBFQEveM99VCT)#j+>2*DH+oYb%uV_rW^Jgi!bqrVG)u5L4 zhqk31`| zW}=Mx6go=txwJ1Dz7SnEzt7GDv0sz4`AxkQ7=^$b+yCA63qD~9O19!HwdamwM6rfw z$ZdlCj=!D_EnYOwcnTZhl96~p0qsKMKjAMoL4iL%e2%~jk4@{Y7#WRCL|OHlxtMW= z5RK9PFU}u6BB8AILr#SgghR174kQ&qOv}rGuWogKU(?E27l{ejh6?8N=^^}I{;P(3 z8`K}p2mP=autAVuOiBw10H1_{Ve%O5yy5SpU(h-P2zq&JV4(^VQqN?$Vv%*|3m z(BQZga-UOktr-Q192BkeSyUm~3l9VwxFB(Uq#-mG>nFgglDyfoKoYcnmz}U)%VZ9i zJD@23Z{$7~hE-w0Nt}==>*V+)ZqmjT?_Yo6kc=!DWVr`9Ir+bt8u#+E`1d(3f>9LR zSWSlVi68qzB{o=*_}qzb6W_8TC`2Qi$3yjgBy(%Wo8k6BUg8*KLOtJgwjzH$`exWb z5sY~jQPZNg>T`v4_VRZdw2!(kC&f5ge*(MOx>oxi?!?Hs(}0J9zT@Qq-9h(gyq2gFsMXgUPIB>lY?HoCm_beX`enkCmG1D z^?rD-TVo9Z)+R1MIYv`H9ZuFT`=J^~$g*98DYuGJ|a4kpRyLcTq7VhQ6B={@v2Es8|n|!2-F;*p@#F= z4?`yL=H9pCytOLEtW6I!`*k(7^B281_P07y@WW5nUdI(h-Xh8$G4U|wL}ic$a@5x- zH)30gABT@yNI>tx{9{4Z8t68tr;$5h(fMt6w|ECd>oOj5q=MJ=T}Llmoo~!O2b34p z7FqdatH-CJU6F0zdHws0DCH^ECWc(Vo5{N15Yx?}1FPEv39zOjum{bD)_V+he0B}8 zDJz=-KH#@|_d52y)28lHu6Ql)MX2nxzBwenZqoWSS-6q779RcU?_Y$&f%NNBb5gJv zWRZqB+{!8n;>43v&_2swe%};2Ms8*8ds1U?Q>BDoFC9D^=iF+3r!l6(uJ%n3@Rw=B z)PZ%>@WomDS0Fy{O!EHJ%Ym?O2<{b>0o)vcf~!z~!WrHHx`GIk{NH5-H!hj)I`leW z9zO-skQI@c6htcaA$69XFKvsObq`we__$`jU0HVlQi>ZAprV-4R5=R1S#4BrTG;)`|IdbT6EZ+rzb}^f~PTEPP~t3)G=i?0@=g>;qji{kZpEN+bW<5|>^Xv4ZH)~g{zA~d5)70F?Q<@$7Ifjf`9D_s$-()z+<7G(8Nc3VlT}`af=Jh+PUf$AxNvL!nei-$J4sso{1mOW9 z|A6DJ){-_$z7+k4IbCqmmlQNzXnONlUH`+r0u7i|1l_g1!s>dt7%beP{f2suoV8SwGDH@#GrUK1f|%-9u0|9qGZUa1Mq_QA{GQDNNxTT(nN zt6@mhsjX8Vf%Q0og~jJHy_Ra6g+!IXwgHjp%xcL_ju)hnS?h1CPvM7gxIZnBahD*> za+$cbPWeY|ykqLqmTQdJ9VyX0?Tl#y6Y2|dth($E2ufHT-n!5bLXg`B@%BI7Ml`{; z!jgCIYr?y!dA4wUU$&e>`@zTa1aL!&LjiH2)MP{W5}PadEQRSji`-IRzZX#THo#{E zI5l5!S3CpuFQCVFv)_P2ZUL+e^%}gY&f&Y+cB+Y~w$snJmVRP(_#6!8?s$e9>j}iE z#)x@^sJtJ$buT`{0+a*l5-4YO_>}?H0cSfSi@_Ug(gxVazL*fAX9V0w^N zD;NVILq%r?C;wT4;>C%w=oZ~r{=n%{5z7rp!|QL&U89#o5OPCIgp?kS;NYIdjjvb2 zpV4%p@K*hjZOwz-Fr`ogk(*E@@R9Hc)V?iS)KM%W_Zu28TtlW}|9+Bkglb_vvgXM9 zp)#_P?i%UH*JAVc_S{2kKZOKL9&0+DNoDnuOlz8v^@?gvyd@igjD$a7KeAaz)6Sz* z!d>D=q%RJ`2;d&disAng*F+m*;#1$pN|^YotIuacJiWHds`-s=NAD-LZ0+}-rJ)MC zQA~Xiipk`Q6I7%hyXWF~%}fjnLo?QC88F)eF#q93y@`;%4q{|j_M}oaCS(me7!2C4 zDcxlZHSmiMXXB1GSLWey1=zrT3%un4pl5)3Z2H1y&>ZitcA#pZW*tE4U0Vg5=IXJ-&eg7=*8g^?|Lv|p+%=no?+rkupTXkdBf^>%JatB?0WF6Y&cu9di&vW+wGgOc>evk)K%t}DSz(D*TbUAXx literal 0 HcmV?d00001 diff --git a/bld/files/Metadata/pkg-groups.tar b/bld/files/Metadata/pkg-groups.tar new file mode 100644 index 0000000000000000000000000000000000000000..0ed0c2a05cda2ed883707b814bf0d252a06fc9dc GIT binary patch literal 10240 zcmeHN%Z?nk71f$w(LiTmN1!whjWo_qek2ZJSwf^uHWpY#RyAE@v4&*zLzsnOC#x*7 z$%ohh3Z?@5+F5sdC4Mq--j|f#Bl#!A%eQ|bNxBOpN9_~ z+@aq`56=#MkB&}`9zHt0bNt}=;mOIP2d78JcaDyaA0D0ESseXb8=9}%hba7FaVIJ( z=JcEGpBlf({|o6amy24p%8RJvqS!4eC1USYxTo9uRz)F26!(oT?w=j;v477tjA7#Q zKRti((UX_Y9)IwM$G`jNIkU<}72^5ByG-gJ3Zr-*3NHHSLLWNSN>*uaH^M7!blY#! zDjz(3^5p5K`&Gh9TOM@XD#@&C`lt=-6cLyxJ1x_{xyjX9wK4F{ZIn-oz4-W}{Yt__ zI+*j^^i5#p$~&ujn;Pxz);$){S6I`#I7ACGrv2C$x2_$(IotCvS$SQ(KKqRanoXX@ zOVekKo2UR4QYS-@NqT8s<*wy@?yXLLy*Glx`_?lz(zT<^dSgV9gyu%{0 zhR!O_rS>E~3q`dW;*u&f(RHj)D)g*#rqPkfwY=*$JURziL))y9T5PWiQp5 z``)O)ebqo3yccDuLSPrl_Pp+4FdT~0M&@84d~Jv2*4oEjn8IyGCMh+YJM1^VPPR1f zTU@9*Txr^R=rq)5E%VnVt-jb!cemz=hbWVwrrYE_X&=++=OvwY&mc??(9sHJ)!-T{ zU9&ZQgM(%V75k1irkAy1VHe;;p>Zlgs&(M1O+Lc78fS(6x2mWFL`HnxV*SZ zZsh&P&u4yQ&XzohZm|_(peBR6goIlIXJpPeMrw7+US}zsi^f6SJgaG^=rd25RWxomnL!9J79k3Q zcJA)dDaMZtntj)+x;F@g^F6$YMvAjYAHToRUO}_N0xqh}+a8)-Zvu=?YWJq~?y7C{ zVjTG|HZZd0JOkddPCtrL~if8RiVJWY6EK z$a5q&vuQ-_y3Q%)yWAMhcsR4`Vs~R2xubQ5pgZl87E`d0L&`=&`Sv6v3@U0nKMI1@ zb~j_eQPyxp^W$ufk7o?qrkM5mj@IOj@-5taZMM3t9R1cx;7*bwBgex>FMv?r^?b|J z7ABM9_)5ZvEUa>?nJFcuDa_cHLBUV?aLP<5Ov6IvYGeB15S0oYt>`#}Ws$Q4W~Ag^ zUG&iXbOKJ2Lc%avJd%cNu<4iKXgq`!7oj2LfZo7(b9!J)Cc28H7?Df@tLwstbq!yj z$%(SMg@STw^SDyD)|&*J+7`~}5>xsXj8ZL9hA|JSZO<#O6wzOc=ku|f$-u!_iuEfB zg3HAi9u`?Ri+rACwLu>aT9l1JVZpmHbd86sbWw8SN&#=dwpGYN`Fw1&bbqJy+^_AO z-P{;+7#dQnawS@X71C4O@A%87uQSru>?K>QpSKt+WP_9@)3e8bI6LPf>%vQ+H=u?j*T_TZHQWZZb%c+FldOUKb8W3Ck?lh}l9D3Bs6=lf8{@&4 z5yjQZWUD#zVWpRX=?xQBZ?W-|I1Cp`QJRreqFO-E$YXH0DLQLmxWgTiJ?sMumqJ01 zbIPz7B_y5cYgi;t{LHNF$)Q(YTV|y|Dlk{COc^ikt%rxm$%fu~__rSZt%v^~czE*a z2i0n+y+;bNoIJX%XYQMl(4n}Rv9z<8K$YEoGV-2z2Nfs6>5L-QC}rjZjeO)Fl;>WJ z>|~9+LQS%kd~3GC~Ec07XUy z3vv;Pv{C04k`H63@WUUfL|7f0lOd`Wi0wEvD5r;%RLEA^s8qb>g&JW|2MlfGK|Y`k z!)6n2Q)wV=xmkDh&{`?el_+iyc=M2UIo6^Mo(Qj$cQ|-8P@Dnu)S)mMSN5_Th9Yo6 z%JTD6Y7XnRSy;fFpbXd-pLXJ6dAvshE*~`?& zWepX=NE?eqf?(clV%HK?=lSObWz9h!1f2i@r@uOhsX6ge%~!2Yp*hUG@01u&qHp!>1n%&fjDhII)Q z8A=%QKRK4?==bJY=2=1XWNUD3gi*znV1Ne4IPvU*sU?0fa>f8MK$_h zsX&lD5S@f2O*^mx#bVmD)U}4m4f{SF4?qG1a;7AugJf_oI10;&KB@Dp zRED??!3q$jQg*_(4p~s`C;UDYmE#qrdZ0xLuOway+Mc191Tu$zz=nbg@c$SF29pAs zO{(pIO~6McNR8zxe+(vkhJuDDsnB5iT9^Y?0OWBC-1r9Y_Vsf$3I55Nb?ay-R}fle z8YVcvxp29_>DWNY+sl4`Akn2IJDK%I(Uh?JfTDdq1hg4pYb52;D!mKbV9p~64uEat zbx3QMzr{7r!E!tAJbN)90#JYi&Q6HN{y_r3g^0Tj?+mD3={=#O+7+JQ78Zg8-oS&9 zPZMUdW-lEH=)fdzbeumdJbUq&D(@T~fhR{+qXtg@a0*_)SlKq|RQi`oS572OtN@Qw z(TuuVKq*X_)jkumyY(p8JrG!|iXwPGfA$YUKsA7oY}qFOVbs&A0!TG)a|6Hu-lU=L z&UgmRAi#Mrf(>`F${`S|U39atf z`T?FH(gPJ9KBOvu%+UMT)Fk_iUKjK%LXMpRm2Ml{YlkIztNjT>oi0jX$y0-zFCHv_ z{=m|4#kg^SjEPr0a-Ol11c}u)+b3{I2%{8sD-B4)h*yGg+lz?zFeDcap}`;?Z7b(3 zfN9nMxfTq$riI%GbUCv&z<|R+zIFsLlBCGP(G%W#4<%rmr^xNzcfuob?BdF`r-QHI z-3~qt0s1C2p%S+Y;@%Xw!Z%E-3?3JdsxOzwn73sC--Y)9)&fhMzL7zw@r$X)JJp>- z;uaBL9LSk90e!a+x!MYg3@R`^%()dl#eSmep_6sZR-MruUv(v3CHb>wABKsdKR+PM z#tu2jo-A}8o}DeP{(kkZ>%T3ozQ6k6`m5_NufDnd>gv0zAFlqf`1sl4`l|(XK>p$S zi|fB$|AqLzU0i>0_4U;^iT?G~x7S}TuKs=X&#Ui1{^9!1nEO3jj!+|?9-5FXj^Tow zJOwl)L1?~2ge6&^RYHj<-UwTWF###{1Op;t%LYKmU`G9c)8V1IN)RjnMP4CeC}8Xa z$x`1+WS6PD0wC+F^8Dc=wrqTH#_uln42??mO+qm$EOYDsW|4--VDou3?+0}ZW#wmnHRHs|kMhBD|&dR{}~ zbD5t$-+h .base + +# see also alterator-pkg (backend3/pkg-install); +# we only tar up what's up to it (note that e.g. +# LIVE_LISTS are needed in the generated profile +# but not for alterator-pkg) +metadata: metadata-.base + @mkdir -p $(METADIR); \ + tar -C $(PKGDIR) -cvf - \ + $(call rlist,.base $(call groups2lists)) \ + $(call rgroup,$(THE_GROUPS) $(MAIN_GROUPS)) \ + $(call rprofile,$(THE_PROFILES)) \ + > $(METADIR)/pkg-groups.tar diff --git a/bld/lib/90-build-distro.mk b/bld/lib/90-build-distro.mk new file mode 100644 index 0000000..ffebfad --- /dev/null +++ b/bld/lib/90-build-distro.mk @@ -0,0 +1,47 @@ +# step 4: build the distribution image + +# proxy over the ISO metadata collected; see also genisoimagerc(5) +BOOT_SYSI := $(META_SYSTEM_ID) +BOOT_PUBL := $(META_PUBLISHER) +BOOT_PREP := $(META_PREPARER) +BOOT_APPI := $(META_APP_ID) +BOOT_VOLI := $(shell echo $(META_VOL_ID) | cut -c1-32) +BOOT_VOLS := $(META_VOL_SET) +BOOT_BIBL := $(META_BIBLIO) +BOOT_ABST := $(META_ABSTRACT) +BOOT_COPY := $(META_LICENSE_FILE) + +ISODATA_SYSI = $(BOOT_SYSI) +ISODATA_PUBL = $(BOOT_PUBL) +ISODATA_PREP = $(BOOT_PREP) +ISODATA_APPI = $(BOOT_APPI) +ISODATA_VOLI = $(BOOT_VOLI) +ISODATA_VOLS = $(BOOT_VOLS) +ISODATA_BIBL = $(BOOT_BIBL) +ISODATA_ABST = $(BOOT_ABST) +ISODATA_COPY = $(BOOT_COPY) + +DATE_F := $(shell date +%F) + +BOOT_TYPE := $(BOOTLOADER) + +all: | $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \ + postprocess $(GLOBAL_CLEAN_WORKDIR) + +prep: | $(GLOBAL_DEBUG) dot-disk $(WHATEVER) + +# can't use mp-showref which belongs to the metaprofile +dot-disk: + @mkdir -p files/.disk + @if [ -n "$(META_DISK_INFO)" ]; then \ + echo "$(META_DISK_INFO)" >files/.disk/info; \ + else \ + echo "$(META_VOL_ID) build $(DATE_F)" >files/.disk/info; \ + fi + @echo "$(ARCH)" >files/.disk/arch + @echo "$(DATE)" >files/.disk/date + @if type -t git >&/dev/null; then \ + ( cd $(TOPDIR) && test -d .git && \ + git show-ref --head -ds -- HEAD ||:) \ + >files/.disk/commit 2>/dev/null; \ + fi diff --git a/bld/live/Makefile b/bld/live/Makefile new file mode 100644 index 0000000..aff2841 --- /dev/null +++ b/bld/live/Makefile @@ -0,0 +1,77 @@ +# step 4: build a stage2 subprofile (custom livecd) + +# NB: stage2 is not standalone but rather a common base +# for all livecd images (installer, live, rescue) + +ifndef GLOBAL_BUILDDIR +$(error GLOBAL_BUILDDIR not defined) +endif + +default: all + +include $(GLOBAL_BUILDDIR)/distcfg.mk +include $(GLOBAL_BUILDDIR)/functions.mk +include $(MKIMAGE_PREFIX)/config.mk + +COPY_TREE = ./files + +# this might have been prepared +# by features.in/stage2/stage1/scripts.d/03-test-kernel +-include $(GLOBAL_BUILDDIR)/squashcfg.mk + +# this should be brought in by corresponding specific stage2 feature +include stage2cfg.mk + +# requisite stuff +IMAGE_PACKAGES += $(SYSTEM_PACKAGES) $(STAGE2_PACKAGES) + +# here we try and come up with the installer kernel/modules, if any; +# only for grub allowed multiple kernels, for other a single kernel +# might be needed (STAGE1_KFLAVOURS sets explicitly); +# kernel image copied from instrumental chroot into .work/boot/ +ifeq (grubpcboot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (grub-efi,$(EFI_BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (ieee1275boot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +STAGE1_KFLAVOURS ?= $(lastword $(KFLAVOURS)) + +ifeq (,$(STAGE1_KFLAVOURS)) +$(error STAGE1_KFLAVOURS is utterly empty; cannot guess either) +endif + +# need kernel modules only (which require corresponding kernel-image); +# these go into work chroot; NB: no vmlinuz there (unless live-install) +IMAGE_PACKAGES_REGEXP += $(call kpackages, \ + $(STAGE1_KFLAVOURS), \ + $(STAGE1_KMODULES) $(STAGE1_KMODULES_REGEXP) \ + $(STAGE2_KMODULES) $(STAGE2_KMODULES_REGEXP)) + +-include $(sort $(wildcard lib/*.mk)) + +# see also ./scripts.d/99-elf-stats +ifdef GLOBAL_SQUASHFS_SORT +ifeq (tight,$(SQUASHFS)) +CHROOT_PACKAGES += file +pack-image: PACK_SQUASHFS_OPTS += -sort /.our/elf.lst +pack-image: CLEANUP_OUTDIR= +endif +endif + +GLOBAL_SQUASHFS := $(SQUASHFS) + +include $(MKIMAGE_PREFIX)/targets.mk + +# NB: it's a collector variable, add()ing to a GLOBAL_ results in lost hair +GLOBAL_CLEANUP_PACKAGES := $(CLEANUP_PACKAGES) + +all: | $(GLOBAL_DEBUG) \ + build-image run-image-scripts copy-tree run-scripts pack-image \ + $(GLOBAL_CLEAN_WORKDIR) + +# dummy +debug:: ; diff --git a/bld/live/README b/bld/live/README new file mode 100644 index 0000000..8e868e5 --- /dev/null +++ b/bld/live/README @@ -0,0 +1,16 @@ +=== sub.in/stage2 === + +Этот каталог содержит общий базовый субпрофиль "живой" второй стадии, +используемый для сборки образов install2, live, rescue (возможно, +нескольких одновременно в составе одного дистрибутива). + +Зависимость на него стоит прописывать в таких фичах; +сама по себе (без нужного stage2cfg.mk) смысла не имеет. + +Обратите внимание, что набор потенциально доступных в stage1 +модулей ядра для stage2 может быть расширен (STAGE2_KMODULES). + +Результат -- соответственно названный файл со squashfs, +подлежащий копированию в итоговый образ. + +NB: смонтированный образ доступен в такой системе как /image/. diff --git a/bld/live/image-scripts.d/00-stage1 b/bld/live/image-scripts.d/00-stage1 new file mode 100755 index 0000000..2f65ba0 --- /dev/null +++ b/bld/live/image-scripts.d/00-stage1 @@ -0,0 +1,5 @@ +#!/bin/sh + +# propagator needs this, +# "FATAL ERROR IN INIT: overmounting /image" otherwise +mkdir -p /image diff --git a/bld/live/image-scripts.d/01-rootdir b/bld/live/image-scripts.d/01-rootdir new file mode 100755 index 0000000..b318b38 --- /dev/null +++ b/bld/live/image-scripts.d/01-rootdir @@ -0,0 +1,6 @@ +#!/bin/sh +# fixup chroot's toplevel directory permissions (use to become 1775) + +chmod 755 / + +rm -f /.gitignore diff --git a/bld/live/image-scripts.d/10-live-hooks b/bld/live/image-scripts.d/10-live-hooks new file mode 100755 index 0000000..072eb39 --- /dev/null +++ b/bld/live/image-scripts.d/10-live-hooks @@ -0,0 +1,5 @@ +#!/bin/sh +# if we're configured for running live hooks, +# there should be a place for them either + +chkconfig livecd-run-hooks on >&/dev/null && mkdir /live.hooks ||: diff --git a/bld/live/image-scripts.d/10-plymouth b/bld/live/image-scripts.d/10-plymouth new file mode 100755 index 0000000..4e28f55 --- /dev/null +++ b/bld/live/image-scripts.d/10-plymouth @@ -0,0 +1,10 @@ +#!/bin/sh + +CONFIG=/etc/plymouth/plymouthd.conf + +if [ -f "$CONFIG" ]; then + grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG" +fi + +cp -a /usr/share/plymouth/default-install-duration \ + /var/lib/plymouth/boot-duration ||: diff --git a/bld/live/image-scripts.d/10-services b/bld/live/image-scripts.d/10-services new file mode 100755 index 0000000..d84fabd --- /dev/null +++ b/bld/live/image-scripts.d/10-services @@ -0,0 +1,40 @@ +#!/bin/sh +# this script implements the services regulation +# according to what has been decided in the profile + +CHKCONFIG= +SYSTEMCTL= + +[ ! -x /sbin/chkconfig ] || CHKCONFIG=1 +[ ! -x /bin/systemctl ] || SYSTEMCTL=1 + +[ -n "$CHKCONFIG$SYSTEMCTL" ] || exit 0 + +switch() { + case "$2" in + on) + cc=on; sc=enable;; + off) + cc=off; sc=disable;; + esac + + { + [ -z "$SYSTEMCTL" ] || /bin/systemctl --no-reload $sc $1 + [ -z "$CHKCONFIG" ] || /sbin/chkconfig $1 $cc + } # 2>/dev/null +} + +# defaults (most likely features.in ones) +for i in $GLOBAL_DEFAULT_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_DEFAULT_SERVICES_DISABLE; do switch $i off; done + +# explicitly specified behaviour (e.g. via conf.d) +for i in $GLOBAL_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SERVICES_DISABLE; do switch $i off; done + +# systemd services +CHKCONFIG= +for i in $GLOBAL_SYSTEMD_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SYSTEMD_SERVICES_DISABLE; do switch $i off; done + +: diff --git a/bld/live/image-scripts.d/20-locale b/bld/live/image-scripts.d/20-locale new file mode 100755 index 0000000..2240c77 --- /dev/null +++ b/bld/live/image-scripts.d/20-locale @@ -0,0 +1,14 @@ +#!/bin/sh -efu +# if no means for locale setup are employed, +# it should still be at least marginally reasonable +# NB: keyboard layout not included! + +if [ -s /etc/sysconfig/i18n ]; then exit 0; fi + +mkdir -p /etc/sysconfig +cat >> /etc/sysconfig/i18n << _EOF_ +# mkimage-profiles live 20-locale hook +SYSFONT=UniCyr_8x16 +LANG=en_US.utf8 +_EOF_ +: diff --git a/bld/live/image-scripts.d/30-all-groups b/bld/live/image-scripts.d/30-all-groups new file mode 100755 index 0000000..c36c223 --- /dev/null +++ b/bld/live/image-scripts.d/30-all-groups @@ -0,0 +1,13 @@ +#!/bin/sh -eu + +# ensure that all the necesary system groups exist + +echo '/usr/share/install3/default-groups +/etc/alterator/auth/user-groups +/etc/alterator/auth/admin-groups' \ +| while read LIST; do + [ -s "$LIST" ] || continue + for GROUP in $(cat "$LIST"); do + groupadd -r "$GROUP" &>/dev/null ||: + done +done diff --git a/bld/live/image-scripts.d/35-xdg-user-dirs b/bld/live/image-scripts.d/35-xdg-user-dirs new file mode 100755 index 0000000..426dc23 --- /dev/null +++ b/bld/live/image-scripts.d/35-xdg-user-dirs @@ -0,0 +1,15 @@ +#!/bin/sh +# tweak xdg-user-dirs defaults if told so +# using tuples like "PHOTOS:Documents/Pictures" + +. shell-config + +CONFIG="/etc/xdg/user-dirs.defaults" + +[ -z "$GLOBAL_XDG_USER_DIRS" ] || + echo "$GLOBAL_XDG_USER_DIRS" \ + | tr ' ' '\n' \ + | while IFS=':' read k v; do + [ -n "$k" -a -n "$v" ] || continue + shell_config_set "$CONFIG" "$k" "$v" + done diff --git a/bld/live/image-scripts.d/40-x11-autologin b/bld/live/image-scripts.d/40-x11-autologin new file mode 100755 index 0000000..f07ba03 --- /dev/null +++ b/bld/live/image-scripts.d/40-x11-autologin @@ -0,0 +1,212 @@ +#!/bin/sh +# see also http://www.enricozini.org/2008/tips/lightweight-autologin/ + +if [ ! -x /usr/bin/X ]; then + echo "SKIP autologin: X not installed" >&2 + exit 0 +fi + +USER=kometa + +add_nopasswdlogin_group() +{ + [ -f "/etc/pam.d/$1" ] && + egrep -qs '^auth.+user[[:blank:]]+ingroup[[:blank:]]+nopasswdlogin' "/etc/pam.d/$1" && + groupadd -r nopasswdlogin && + gpasswd -a "$USER" nopasswdlogin +} + +BAK=".save" +backup() { + [ -f "$1" -a ! -f "$1$BAK" ] || return 1 + cp -av "$1" "$1$BAK" +} + +## this is only relevant for installable livecd +### FIXME: this shouldn't proceed in other cases! +restore_later() { + [ -n "$1" ] || return 0 + + local prefix="/usr/lib/alterator/hooks/livecd-preinstall.d" + [ -d "$prefix" ] || mkdir -p "$prefix" + + local hook="$prefix/51-disable-autologin-again.sh" + [ -s "$hook" ] || cat >> "$hook" <<- EOF + #!/bin/sh + . livecd-functions + EOF + + echo mv -v "\$destdir$1$BAK" "\$destdir$1" >> "$hook" + chmod +x "$hook" +} + +## autologin^2 +AUTOLOGIN_CFG=/etc/sysconfig/autologin +if [ -x /usr/sbin/autologin ]; then + backup "$AUTOLOGIN_CFG" + cat >> "$AUTOLOGIN_CFG" <<- EOF + USER=$USER + AUTOLOGIN=yes + EOF + restore_later "$AUTOLOGIN_CFG" +fi + +## lightdm autologin +LIGHTDM_CONF=/etc/lightdm/lightdm.conf +if [ -f "$LIGHTDM_CONF" ]; then + mkdir -p /etc/lightdm/lightdm.conf.d + cat > /etc/lightdm/lightdm.conf.d/autologin.conf <> /etc/lightdm/lightdm.conf.d/autologin.conf + else + echo "** WARNING: no sessions found in /usr/share/xsessions/" >&2 + fi + backup "/etc/group" + add_nopasswdlogin_group lightdm ||: + + restore_later "/etc/group" +fi + +## gdm2 autologin +GDM_CONF=/etc/X11/gdm/custom.conf +if [ -f "$GDM_CONF" ]; then + backup "$GDM_CONF" + sed -i -e '/\[daemon\]/aAutomaticLoginEnable=true\nAutomaticLogin='$USER \ + "$GDM_CONF" + backup "/etc/group" + add_nopasswdlogin_group gdm ||: + + restore_later "$GDM_CONF" + restore_later "/etc/group" +fi + + +## lxdm autologin +LXDM_CONF=/etc/lxdm/lxdm.conf +if [ -f "$LXDM_CONF" ]; then + backup "$LXDM_CONF" + sed -i -e "s/\# autologin=dgod/autologin=$USER/" \ + "$LXDM_CONF" + backup "/etc/group" + add_nopasswdlogin_group lxdm ||: + + restore_later "$LXDM_CONF" + restore_later "/etc/group" +fi + +autologin_kdm() { + backup "$1" + sed -i \ + -e '/AutoLoginEnable/ s,^.*$,AutoLoginEnable=true,' \ + -e '/AutoLoginUser/ s,^.*$,AutoLoginUser='$USER',' \ + "$1" + restore_later "$1" +} + +## kdm3 autologin +# FIXME: tde packages have kdmrc in /usr via an absolute symlink :-( +KDM_ETC=/etc/X11/kdm +KDM_USR=/usr/share/kde/config/kdm +if [ "$(readlink "$KDM_ETC")" = "$KDM_USR" ]; then + rm -f "$KDM_ETC" + ln -s ../.."$KDM_USR" "$KDM_ETC" +fi + +KDMRC=/etc/X11/kdm/kdmrc +if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi + +## kdm4 autologin +KDMRC=/etc/X11/kdm4/kdmrc +if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi + +## sddm autologin +SDDM_RC=/etc/X11/sddm/sddm.conf +SDDM_SESSION= +if [ -f "$SDDM_RC" ]; then + backup "$SDDM_RC" + backup "/etc/group" + add_nopasswdlogin_group sddm ||: + sed -i "s,^User=$,&$USER," "$SDDM_RC" + if [ -f /usr/share/xsessions/lxqt.desktop ]; then + SDDM_SESSION=lxqt + elif [ -f /usr/share/xsessions/plasma.desktop ]; then + SDDM_SESSION=plasma + fi + if [ -n "$SDDM_SESSION" ]; then + sed -i "s,^Session=$,&$SDDM_SESSION," "$SDDM_RC" + fi + restore_later "$SDDM_RC" + restore_later "/etc/group" +fi + +## nodm autologin (the last since the most intrusive) +# FIXME nodm and xinitrc should be modified (also in p6) +# WARNING: check user PATH if things go weird! +NODM_RC=/etc/sysconfig/nodm +NODM_EXE=/usr/sbin/nodm +if [ -x "$NODM_EXE" ]; then + backup "$NODM_RC" + cat >> "$NODM_RC" <<- EOF + export NODM_USER=$USER + EOF + restore_later "$NODM_RC" +else + exit 0 +fi + +# FIXME: drop since #27449 is fixed +PREFDM=/etc/X11/prefdm +if [ -f "$PREFDM" ] && ! grep -q nodm "$PREFDM"; then + backup "$PREFDM" + sed -i \ + -e '/AUTOLOGIN_EXE=/ s,^.*$,AUTOLOGIN_EXE='$NODM_EXE',' \ + -e '/AUTOLOGIN_CFG=/ s,^.*$,AUTOLOGIN_CFG='$NODM_RC',' \ + "$PREFDM" + restore_later "$PREFDM" +fi + +# FIXME: drop when #27451 is fixed +NODM_PAM=/etc/pam.d/nodm +for module in pam_console.so pam_ck_connector.so; do + if [ -f /lib*/security/$module ]; then + str="-session optional $module" + grep -q "^$str$" "$NODM_PAM" || echo -e "$str" >> "$NODM_PAM" + fi +done + +NODM_POLKIT_CONFDIR=/etc/polkit-1/localauthority/50-local.d +NODM_POLKIT_CONF=org.freedesktop.NetworkManager.pkla +if [ -d "$NODM_POLKIT_CONFDIR" ]; then + cat > "$NODM_POLKIT_CONFDIR/$NODM_POLKIT_CONF" << _EOF_ +[nm-applet] +Identity=unix-group:users +Action=org.freedesktop.NetworkManager.* +ResultAny=yes +ResultInactive=no +ResultActive=yes +_EOF_ +fi + +NODM_DBUS_NM_CONF=/etc/dbus-1/system.d/nm-applet.conf +if [ -f "$NODM_DBUS_NM_CONF" ]; then + sed -i "s/at_console=\"true\"/user=\"$USER\"/" "$NODM_DBUS_NM_CONF" +fi + +NODM_G2KR_DIR=/etc/skel/.gnome2/keyrings +mkdir -p "$NODM_G2KR_DIR" +echo -n login > "$NODM_G2KR_DIR"/default +cat > "$NODM_G2KR_DIR"/login.keyring << _EOF_ +[keyring] +display-name=login +ctime=0 +mtime=0 +lock-on-idle=false +lock-after=false +_EOF_ + +: diff --git a/bld/live/image-scripts.d/40-x11-autostart b/bld/live/image-scripts.d/40-x11-autostart new file mode 100755 index 0000000..562cc1c --- /dev/null +++ b/bld/live/image-scripts.d/40-x11-autostart @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ ! -x /usr/bin/X ]; then + echo "SKIP autostart: X not installed" >&2 + exit 0 +fi + +## setup automated graphical session startup +INITTAB=/etc/inittab +if [ -f "$INITTAB" ]; then + [ -z "$runlevel" ] && runlevel=5 + sed -i "s,^\(id:\)\(.*\)\(:initdefault.*\),\\1$runlevel\\3," "$INITTAB" +fi + +## ...and systemd, if any +## NB: alterator-setup's backup file can present a nice catch if left around +rm -f /etc/systemd/system/default.target{,.bak} + +: diff --git a/bld/live/image-scripts.d/50-bootargs b/bld/live/image-scripts.d/50-bootargs new file mode 100755 index 0000000..73195a1 --- /dev/null +++ b/bld/live/image-scripts.d/50-bootargs @@ -0,0 +1,11 @@ +#!/bin/sh -eu + +if [ -s /etc/sysconfig/grub2 ]; then + # Cleanup + sed -i "s/ splash//g" /etc/sysconfig/grub2 + if [ -n "${GLOBAL_BASE_BOOTARGS-}" ]; then + sed -Ei \ + "s/(GRUB_CMDLINE_LINUX_DEFAULT=)(.*)(['\"])/\1\2 $GLOBAL_BASE_BOOTARGS\3/" \ + /etc/sysconfig/grub2 + fi +fi diff --git a/bld/live/image-scripts.d/50-control b/bld/live/image-scripts.d/50-control new file mode 100755 index 0000000..36f6e9e --- /dev/null +++ b/bld/live/image-scripts.d/50-control @@ -0,0 +1,11 @@ +#!/bin/sh +# setup control(8) states + +[ -z "$GLOBAL_CONTROL" ] || + echo "$GLOBAL_CONTROL" \ + | tr ' ' '\n' \ + | while IFS=':' read facility state; do + [ -z "$facility" -o -z "$state" ] || + control "$facility" "$state" + done +: diff --git a/bld/live/image-scripts.d/50-fontconfig b/bld/live/image-scripts.d/50-fontconfig new file mode 100755 index 0000000..856303a --- /dev/null +++ b/bld/live/image-scripts.d/50-fontconfig @@ -0,0 +1,33 @@ +#!/bin/sh +# fontconfig-config-config + +verbose="${GLOBAL_VERBOSE:+-v}" +verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "HOOK: 50-fontconfig: $@"; } +verbose "has started" + +CONF_DIR="/etc/fonts/conf.d" +AVAIL_DIR="/etc/fonts/conf.avail" + +list() { ls "$1"/??-"$2".conf 2>/dev/null; } + +enable() { + for i in "$@"; do + if ! list "$CONF_DIR" "$i"; then + AVAIL="$(list "$AVAIL_DIR" "$i" | head -1)" + if [ -n "$AVAIL" ]; then + ln -s $verbose "$AVAIL" "$CONF_DIR/$CONF_ADD" + fi + fi + done +} + +disable() { + for i in "$@"; do + $(list "$CONF_DIR" "$i") | xargs -r rm -f $verbose -- + done +} + +disable $GLOBAL_FONT_FEATURES_DISABLE +enable $GLOBAL_FONT_FEATURES_ENABLE + +: diff --git a/bld/live/image-scripts.d/50-issue b/bld/live/image-scripts.d/50-issue new file mode 100755 index 0000000..343aad9 --- /dev/null +++ b/bld/live/image-scripts.d/50-issue @@ -0,0 +1,23 @@ +#!/bin/sh +# issue welcome message if there's a guest user +# (the first one configured with empty password) + +[ -n "$GLOBAL_USERS" ] || { + echo "** 50-issue: warning, no users created" >&1 + exit 0 +} + +guest= +for u in $GLOBAL_USERS; do + login="${u%%:*}" + [ -n "$login" ] || continue + rest="${u#*:}" + pass="${rest%%:*}" + [ -z "$pass" ] || continue + guest="$login" + break +done + +[ -n "$guest" ] || exit 0 + +echo "Hello friend, say \`$guest' to log in at \\l" >> /etc/issue diff --git a/bld/live/image-scripts.d/50-l10n-kbd b/bld/live/image-scripts.d/50-l10n-kbd new file mode 100755 index 0000000..36b6619 --- /dev/null +++ b/bld/live/image-scripts.d/50-l10n-kbd @@ -0,0 +1,17 @@ +#!/bin/sh +# partial port of livecd-setlocale (kbd bits) + +CONFIG=/etc/sysconfig/keyboard + +# Requires: console-scripts +if [ -s "$CONFIG" ]; then + echo "** l10n-kbd: expected $CONFIG to be an empty file" >&2 + exit 0 +fi + +if [ -z "$GLOBAL_KEYTABLE" ]; then + echo "** l10n-kbd: empty GLOBAL_KEYTABLE" >&2 + exit 0 +fi + +echo "KEYTABLE=$GLOBAL_KEYTABLE" > "$CONFIG" diff --git a/bld/live/image-scripts.d/50-l10n-xkb b/bld/live/image-scripts.d/50-l10n-xkb new file mode 100755 index 0000000..18b8733 --- /dev/null +++ b/bld/live/image-scripts.d/50-l10n-xkb @@ -0,0 +1,19 @@ +#!/bin/sh +# partial port of livecd-setlocale (xkb bits) + +PREFIX=/etc/X11/xinit + +# Requires: xinitrc +if [ ! -d "$PREFIX" ]; then + echo "** l10n-xkb: expected $PREFIX to exist (xinitrc)" >&2 + exit 0 +fi + +if [ -z "$GLOBAL_XKB_VARIANTS" -o -z "$GLOBAL_XKB_KEYMAPS" ]; then + echo "** l10n-xkb: empty GLOBAL_XKB_VARIANTS/GLOBAL_XKB_KEYMAPS" >&2 + exit 0 +fi + +echo "-option $GLOBAL_XKB_SWITCH${GLOBAL_XKB_LED:+,$GLOBAL_XKB_LED} \ +${GLOBAL_XKB_VARIANTS:+-variant $GLOBAL_XKB_VARIANTS} \ +-layout $GLOBAL_XKB_KEYMAPS" > "$PREFIX"/Xkbmap diff --git a/bld/live/image-scripts.d/50-net-nm b/bld/live/image-scripts.d/50-net-nm new file mode 100755 index 0000000..c5c36d0 --- /dev/null +++ b/bld/live/image-scripts.d/50-net-nm @@ -0,0 +1,17 @@ +#!/bin/sh + +. shell-config + +defcfg=/etc/net/ifaces/default/options-eth + +[ -f defcfg ] || exit 0 + +if [ -x /usr/sbin/NetworkManager -o -x /usr/sbin/connmand ]; then + shell_config_set "$defcfg" NM_CONTROLLED yes + shell_config_set "$defcfg" DISABLED yes + if [ NM_Native = 'yes' ]; then + shell_config_set "$defcfg" BOOTPROTO static + else + shell_config_set "$defcfg" BOOTPROTO dhcp + fi +fi diff --git a/bld/live/image-scripts.d/50-net-resolv b/bld/live/image-scripts.d/50-net-resolv new file mode 100755 index 0000000..b52353d --- /dev/null +++ b/bld/live/image-scripts.d/50-net-resolv @@ -0,0 +1,10 @@ +#!/bin/sh +# see also net-dns feature for actual nameserver control + +# purge hasher-provided files potentially disclosing +# build host's network configuration bits +find /var -name resolv.conf -or -name nsswitch.conf -delete + +# hasher might have carried host /etc/hosts over, need to overwrite +echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts +sed -ri "/^(search|nameserver|domain)/d" /etc/resolv.conf diff --git a/bld/live/image-scripts.d/50-ntp b/bld/live/image-scripts.d/50-ntp new file mode 100755 index 0000000..acf4ec1 --- /dev/null +++ b/bld/live/image-scripts.d/50-ntp @@ -0,0 +1,10 @@ +#!/bin/sh +# basic NTP client configuration + +. shell-config + +CONFIG="/etc/ntpd.conf" +[ -f "$CONFIG" ] || exit 0 +[ -n "$GLOBAL_NTP_SERVERS" ] || exit 0 + +shell_config_set "$CONFIG" 'servers' "$GLOBAL_NTP_SERVERS" '[[:space:]]\+' ' ' diff --git a/bld/live/image-scripts.d/50-power b/bld/live/image-scripts.d/50-power new file mode 100755 index 0000000..15d82fe --- /dev/null +++ b/bld/live/image-scripts.d/50-power @@ -0,0 +1,6 @@ +#!/bin/sh -efu + +# provide kernel interface for ACPI power button +if [ `arch` != e2k -a -x /etc/init.d/acpid ]; then + grep -qsx button /etc/modules || echo button >> /etc/modules +fi diff --git a/bld/live/image-scripts.d/50-root b/bld/live/image-scripts.d/50-root new file mode 100755 index 0000000..a2bc660 --- /dev/null +++ b/bld/live/image-scripts.d/50-root @@ -0,0 +1,16 @@ +#!/bin/sh + +# explicitly requested empty root password +case "$GLOBAL_ROOTPW_EMPTY" in +1|y|Y|yes) + usermod -p "" root + exit 0 + ;; +esac + +# set root password if any; no-op if it is empty +if [ -z "$GLOBAL_ROOTPW" ]; then + echo "** warning: no root password provided, skipping" >&2 +else + echo "$GLOBAL_ROOTPW" | passwd --stdin root +fi diff --git a/bld/live/image-scripts.d/50-udev b/bld/live/image-scripts.d/50-udev new file mode 100755 index 0000000..064edca --- /dev/null +++ b/bld/live/image-scripts.d/50-udev @@ -0,0 +1,9 @@ +#!/bin/sh + +# for udev +ln -sf /proc/mounts /etc/mtab + +# pam_console_apply is harmful during install +find /etc/udev/rules.d/ -type f -print0 | + xargs -r0 fgrep -Zl pam_console_apply -- | + xargs -r0 rm -fv -- diff --git a/bld/live/image-scripts.d/50-users b/bld/live/image-scripts.d/50-users new file mode 100755 index 0000000..0fdf2ec --- /dev/null +++ b/bld/live/image-scripts.d/50-users @@ -0,0 +1,46 @@ +#!/bin/sh +# add regular user(s) assigning passwords and attributes of power + +# NB: care that the utilities exist; shadow-utils is warranted + +add_user() { + useradd -m "$1" && + usermod -p "" "$1" && + if [ -n "$GLOBAL_GROUPS" ]; then # some of them might be missing + for group in $GLOBAL_GROUPS; do + usermod -a --groups "$group" "$1" ||: + done + fi || + echo "*** failed to add user '$1'" +} + +set_password() { echo "$1:$2" | chpasswd; } + +set_admin() { usermod -a --groups "wheel" "$1"; } + +# NB: one must care to purge this from LiveCD if it's installed permanently +set_sudo() { + [ ! -w "/etc/sudoers" ] || + echo "$1 ALL=(ALL) ALL" >> "/etc/sudoers" +} + +# chpasswd is intended for batch use but that would be less comprehensible +[ -z "$GLOBAL_USERS" ] || + echo "$GLOBAL_USERS" \ + | tr ' ' '\n' \ + | while IFS=':' read login passwd admin sudo; do + add_user "$login" + [ -z "$passwd" ] || set_password "$login" "$passwd" + [ -z "$admin" ] || set_admin "$login" + [ -z "$sudo" ] || set_sudo "$login" + done + +# create special user +[ -z "$GLOBAL_SPEC_USER" ] || + echo "$GLOBAL_SPEC_USER" \ + | tr ' ' '\n' \ + | while IFS=':' read login group uid gid homedir shell; do + groupadd -g $gid $group >/dev/null 2>&1 || : + useradd -g $gid -u $uid -d $homedir -s $shell $login >/dev/null 2>&1 || : + usermod -G $group $login || : + done diff --git a/bld/live/image-scripts.d/50-var-run-fix b/bld/live/image-scripts.d/50-var-run-fix new file mode 100755 index 0000000..57a07b3 --- /dev/null +++ b/bld/live/image-scripts.d/50-var-run-fix @@ -0,0 +1,9 @@ +#!/bin/sh + +# this was a bunch of dirty complaints +sed -i 's,/var/run,/run,' /{etc,lib}/tmpfiles.d/*.conf ||: + +[ ! -L /var/run ] && rm -r /var/run && ln -s ../run /var/run +[ ! -L /var/lock ] && rm -r /var/lock && ln -s ../run/lock /var/lock + +: diff --git a/bld/live/image-scripts.d/60-apt b/bld/live/image-scripts.d/60-apt new file mode 100755 index 0000000..fb24398 --- /dev/null +++ b/bld/live/image-scripts.d/60-apt @@ -0,0 +1,10 @@ +#!/bin/sh +# unconditionally enable online repository + +[ -n "$GLOBAL_LIVE_REPO" ] || exit 0 + +PROTO="${GLOBAL_LIVE_REPO%/*}" # http, ftp, rsync +MIRROR="${GLOBAL_LIVE_REPO#*/}" # alt, heanet, kiev, yandex, ... + +sed -i "s,^#\(rpm \[.*\] ${PROTO:-http}.*\),\1," \ + "/etc/apt/sources.list.d/${MIRROR:-yandex}.list" ||: diff --git a/bld/live/image-scripts.d/65-os-release b/bld/live/image-scripts.d/65-os-release new file mode 100755 index 0000000..57a9a2b --- /dev/null +++ b/bld/live/image-scripts.d/65-os-release @@ -0,0 +1,15 @@ +#!/bin/sh +# Install /etc/*-release files if needed +rel_file= +for rel_file in altlinux-release os-release; do + if ! [ -e /etc/"$rel_file" ]; then + # in case it is dangling symlink + rm -f /etc/"$rel_file" + if [ -r /usr/share/branding-data-current/release/"$rel_file" ]; then + cp -at /etc -- \ + /usr/share/branding-data-current/release/"$rel_file" + elif [ -r /usr/lib/"$rel_file" ]; then + cp -a /usr/lib/"$rel_file" /etc/"$rel_file" + fi + fi +done diff --git a/bld/live/image-scripts.d/70-network-shares-dhcpcd.sh b/bld/live/image-scripts.d/70-network-shares-dhcpcd.sh new file mode 100755 index 0000000..c7341fa --- /dev/null +++ b/bld/live/image-scripts.d/70-network-shares-dhcpcd.sh @@ -0,0 +1,10 @@ +#!/bin/sh -efu + +dhcpcd_conf="/etc/dhcpcd.conf" + +[ -f "$dhcpcd_conf" ] || exit 0 + +grep -q '^option[[:blank:]]\+vendor_encapsulated_options' "$dhcpcd_conf" || { + echo "# added by 70-network-shares-dhcpcd.sh" + echo "option vendor_encapsulated_options" +} >> "$dhcpcd_conf" diff --git a/bld/live/image-scripts.d/70-network-shares-nscd.sh b/bld/live/image-scripts.d/70-network-shares-nscd.sh new file mode 100755 index 0000000..1f5a8c7 --- /dev/null +++ b/bld/live/image-scripts.d/70-network-shares-nscd.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# bump name services caching time up + +[ -s /etc/nscd.conf ] || exit 0 + +sed -i 's/\(positive-time-to-live[^0-9]*\)[0-9]*$/\1 31536000/g' /etc/nscd.conf diff --git a/bld/live/image-scripts.d/70-network-shares-samba.sh b/bld/live/image-scripts.d/70-network-shares-samba.sh new file mode 100755 index 0000000..4fc7619 --- /dev/null +++ b/bld/live/image-scripts.d/70-network-shares-samba.sh @@ -0,0 +1,117 @@ +#!/bin/sh -efu + +## +# This script: +# 1) updates pam_mount configuration +# 2) updates pam configuration +# +# NB: network shares automounted only for a particular uid range + +. shell-error + +msg() { + printf "$* \n" +} + +pmconf="/etc/security/pam_mount.conf.xml" +pamconf="/etc/pam.d/system-auth-krb5" + +## +# Update pam_mount configuration file +# +update_pmconf() { + + local insert_at tmp_conf + + tmp_conf="${pmconf}.new" + + # no pam_mount: impossible(tm) + [ -w "$pmconf" ] || return 1 + + # already configured + grep -qs dnssd_lookup "$pmconf" 2>/dev/null && return 0 + + # configure pam_mount to use avahi + insert_at="$(sed -n '//=' "$pmconf" \ + | head -n 1)" + + if [ -z "$insert_at" ]; then + msg "Can't find position for injection in $pmconf" + return 1 + fi + + # part 1 (head) + head -n $((insert_at-1)) "$pmconf" > "$tmp_conf" + + # part 2 (inserted text) + cat >> "$tmp_conf" <<'__EOF__' + + + + +/sbin/mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS) +/sbin/umount.cifs %(MNTPT) + + + +__EOF__ + + # part 3 (tail) + sed -n "$insert_at,\$p" "$pmconf" >> "$tmp_conf" + + # update config + chown root:root "$tmp_conf" + chmod 644 "$tmp_conf" + mv -f "$tmp_conf" "$pmconf" + + # XXX: REMOVE FOR RELEASE + # sed -i -e '/debug enable/ s/0/1/' "$pmconf" +} + +## +# Update pam configuration +# +update_pam() { + local append_after + + # no pam-config: impossible(tm) + [ -w "$pamconf" ] || return 1 + + if [ -L "$pamconf" ]; then + pamconf="$(realpath "$pamconf")" + fi + + # already configured + grep -qs pam_mount "$pamconf" && return 0 + + append_after="$(sed -n '/^auth[[:space:]]\+required/=' "$pamconf" \ + | tail -n 1)" + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a auth optional pam_mount.so" \ + "$pamconf" + + append_after="$(sed -n '/^session[[:space:]]\+required/=' "$pamconf" \ + | tail -n 1)" + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a session optional pam_mount.so" \ + "$pamconf" + append_after="$(sed -n '/^auth[[:space:]]\+required/=' \ + "$pamconf"_ccreds | tail -n 1)" + + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a auth optional pam_mount.so" \ + "$pamconf"_ccreds + + ### set ccache to predicadable value (ouch!) + sed -i 's|pam_krb5.so use_first_pass$|pam_krb5.so use_first_pass ccache=/tmp/krb5cc_%u|' "$pamconf" +} + +## +# Start +# +update_pmconf && +update_pam + diff --git a/bld/live/image-scripts.d/85-cleanup-cjk b/bld/live/image-scripts.d/85-cleanup-cjk new file mode 100755 index 0000000..9d65ce0 --- /dev/null +++ b/bld/live/image-scripts.d/85-cleanup-cjk @@ -0,0 +1,25 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# remove unused fonts +cd /usr/share/fonts/bitmap/misc/ && + rm -f *ja.* *ko.* han* gb* jis* k14* rk* *rk.* *kana* cl* *JIS* + +# drop unneeded translations +cd /usr/share/qt?/translations/ && rm -f *_zh* *_ja* + +# l10n +cd /usr/share/X11/locale && rm -rf ja* ko* th* vi* zh* + +# xkb +cd /usr/share/X11/xkb/symbols && rm -rf jp kr th vn cn + +# locales +cd /usr/lib/locale && rm -rf ja_* ko_* th_* zh_* + +# gconv +cd /usr/lib*/gconv && rm -f JIS* T* + +: diff --git a/bld/live/image-scripts.d/85-cleanup-legacy b/bld/live/image-scripts.d/85-cleanup-legacy new file mode 100755 index 0000000..c50ae88 --- /dev/null +++ b/bld/live/image-scripts.d/85-cleanup-legacy @@ -0,0 +1,20 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# remove unused legacy/tiny fonts +#cd /usr/share/fonts/bitmap/misc/ && rm -f *ISO* *KOI* [1456]* +cd /usr/share/fonts/bitmap/misc/ && rm -f [1456]* + +# l10n +cd /usr/share/X11/locale/ && rm -rf *[^C8]/ iso* + +# xkb +cd /usr/share/X11/xkb/symbols && rm -rf *_vndr + +# gconv +#cd /usr/lib*/gconv && rm -f CP* ISO* *JIS* KOI* HP* MAC* +cd /usr/lib*/gconv && rm -f CP* *JIS* HP* MAC* + +: diff --git a/bld/live/image-scripts.d/90-cleanup-drm b/bld/live/image-scripts.d/90-cleanup-drm new file mode 100755 index 0000000..c7a7651 --- /dev/null +++ b/bld/live/image-scripts.d/90-cleanup-drm @@ -0,0 +1,10 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# no sense in xorg-dri-* without kernel-modules-drm* +stat /lib/modules/*/kernel/drivers/gpu/drm >&/dev/null \ +|| rm -rf /usr/lib*/X11/modules/dri/ + +: diff --git a/bld/live/image-scripts.d/90-firsttime b/bld/live/image-scripts.d/90-firsttime new file mode 100755 index 0000000..b96cf33 --- /dev/null +++ b/bld/live/image-scripts.d/90-firsttime @@ -0,0 +1,3 @@ +#!/bin/sh +# Run scripts from /etc/firsttime.d at first start +[ -f "/etc/firsttime.flag" ] || touch "/etc/firsttime.flag" diff --git a/bld/live/image-scripts.d/90-live-cleanup-drivers b/bld/live/image-scripts.d/90-live-cleanup-drivers new file mode 100755 index 0000000..916f1b6 --- /dev/null +++ b/bld/live/image-scripts.d/90-live-cleanup-drivers @@ -0,0 +1,7 @@ +#!/bin/sh -e + +if [ -n "$GLOBAL_LIVE_CLEANUP_KDRIVERS" ]; then + for i in $GLOBAL_LIVE_CLEANUP_KDRIVERS; do + rm -rf /lib/modules/*/"$i" + done +fi diff --git a/bld/live/image-scripts.d/90-systemd b/bld/live/image-scripts.d/90-systemd new file mode 100755 index 0000000..31c5159 --- /dev/null +++ b/bld/live/image-scripts.d/90-systemd @@ -0,0 +1,21 @@ +#!/bin/sh + +# the part below relates to systemd as init specifically +rpm -q systemd-sysvinit || exit 0 + +# file str [str...] +# NB: str is also treated as a regex, +# be careful if you copy the function +sub() { + local file="$1" + shift + for i in "$@"; do + grep -q "^$i" "$file" || echo "$i" >> "$file" + done +} + +# tune make-initrd +sub /etc/initrd.mk 'MODULES_TRY_ADD += autofs4' + +# don't allow systemd to set LANG (see also #27408) +sub /etc/locale.conf 'LANG=' diff --git a/bld/live/image-scripts.d/91-systemd b/bld/live/image-scripts.d/91-systemd new file mode 100755 index 0000000..7c7afc6 --- /dev/null +++ b/bld/live/image-scripts.d/91-systemd @@ -0,0 +1,16 @@ +#!/bin/sh + +# the part below relates to systemd as init specifically +rpm -q systemd-sysvinit || exit 0 + +sub() { + local file="$1" + shift + for i in "$@"; do + grep -q "^$i" "$file" || echo "$i" >> "$file" + done +} + +# aufs2 root is rw in reality; but don't bother if there's a record already +grep -q '[[:space:]]/[[:space:]]' /etc/fstab || + sub /etc/fstab '/dev/root / auto defaults 0 0' diff --git a/bld/live/image-scripts.d/97-cleanup-blacklisted b/bld/live/image-scripts.d/97-cleanup-blacklisted new file mode 100755 index 0000000..85311c5 --- /dev/null +++ b/bld/live/image-scripts.d/97-cleanup-blacklisted @@ -0,0 +1,12 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# blacklisted kernel modules +sed -n 's/^blacklist[[:space:]]\+\([^[:space:]]\+\).*/\1/p' /etc/modprobe.d/* | + while read i; do + find /lib/modules/ -type f -name "$i.ko" -delete + done + +: diff --git a/bld/live/image-scripts.d/98-depmod b/bld/live/image-scripts.d/98-depmod new file mode 100755 index 0000000..fa7ab75 --- /dev/null +++ b/bld/live/image-scripts.d/98-depmod @@ -0,0 +1,12 @@ +#!/bin/sh +# regenerate module dependencies after pruning kernel modules +# (this script must run after anything touching /lib/modules) + +cd /lib/modules +for i in *.*; do + if [ "$i" = "*.*" ]; then + echo "** error: no valid KFLAVOURS installed, bailing out" >&2 + exit 1 + fi + depmod -a -F /boot/System.map-$i $i +done diff --git a/bld/live/image-scripts.d/99-cleanup-boot b/bld/live/image-scripts.d/99-cleanup-boot new file mode 100755 index 0000000..2c7c59c --- /dev/null +++ b/bld/live/image-scripts.d/99-cleanup-boot @@ -0,0 +1,15 @@ +#!/bin/sh + +# don't cripple the image to be copied over +# NB: livecd-install has 50-restore-kernel.sh +[ -x /usr/sbin/live-install -o \ + -x /usr/sbin/homeros-install -o \ + -x /usr/sbin/luwrain-install ] && exit 0 + +# no need for the kernel in live root otherwise: it's been booted already +# NB: installkernel run by that livecd-install hook needs System.map +rm -f -- /boot/{initrd,vmlinuz}* + +[ -x /usr/sbin/livecd-install ] || rm -f -- /boot/* + +: diff --git a/bld/live/image-scripts.d/99-systemd-resolved-link b/bld/live/image-scripts.d/99-systemd-resolved-link new file mode 100755 index 0000000..986f0c9 --- /dev/null +++ b/bld/live/image-scripts.d/99-systemd-resolved-link @@ -0,0 +1,10 @@ +#!/bin/sh + +[ -h /sbin/init ] || exit 0 +[ -n "$GLOBAL_SYSTEMD_RESOLVED" ] || exit 0 + +if [ "$GLOBAL_SYSTEMD_RESOLVED" = stub ]; then + ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf +else + ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf +fi diff --git a/bld/live/image-scripts.d/99-tcb-fix b/bld/live/image-scripts.d/99-tcb-fix new file mode 100755 index 0000000..83bd59e --- /dev/null +++ b/bld/live/image-scripts.d/99-tcb-fix @@ -0,0 +1,5 @@ +#!/bin/sh -e +# drop intermediate files not needed in the image +# which receive broken permissions in fakeroot environment + +rm -f /etc/tcb/*/shadow{-,.lock} diff --git a/bld/live/image-scripts.d/99-urw b/bld/live/image-scripts.d/99-urw new file mode 100755 index 0000000..bcea45c --- /dev/null +++ b/bld/live/image-scripts.d/99-urw @@ -0,0 +1,4 @@ +#!/bin/sh +# URW fonts are responsible for sub-par website text rendering usually... + +rm -f /etc/X11/fontpath.d/type1-urw:pri=40 diff --git a/bld/live/image-scripts.d/99-xfce-theme b/bld/live/image-scripts.d/99-xfce-theme new file mode 100755 index 0000000..3b8fb7e --- /dev/null +++ b/bld/live/image-scripts.d/99-xfce-theme @@ -0,0 +1,7 @@ +#!/bin/sh + +[ -f /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ] || exit 0 + +# fixup the default which broke after p8 +sed -i 's,name="IconThemeName" type="empty",name="IconThemeName" type="string" value="gnome",' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ||: + diff --git a/bld/live/lib/50-l10n.mk b/bld/live/lib/50-l10n.mk new file mode 100644 index 0000000..77d67d6 --- /dev/null +++ b/bld/live/lib/50-l10n.mk @@ -0,0 +1,15 @@ +# supplement live with keyboard layout setup + +XKB_KEYMAPS := $(subst $(SPACE),$(COMMA),$(XKB_KEYMAPS)) + +# handle the layouts with a specific variant in the wild +XKB_VARIANTS := $(subst ru,winkeys, \ + $(subst ua,winkeys, \ + $(subst be,winkeys, \ + $(subst us,,$(XKB_KEYMAPS))))) + +debug:: + @echo "** live: LOCALES: $(LOCALES)" + @echo "** live: LOCALE: $(LOCALE)" + @echo "** live: XKB_KEYMAPS: $(XKB_KEYMAPS)" + @echo "** live: XKB_VARIANTS: $(XKB_VARIANTS)" diff --git a/bld/live/lib/50-pkgpriorities.mk b/bld/live/lib/50-pkgpriorities.mk new file mode 100644 index 0000000..63848de --- /dev/null +++ b/bld/live/lib/50-pkgpriorities.mk @@ -0,0 +1,26 @@ +_IMAGE_APTBOX_ = $(WORKDIR)/chroot/$(WORKDIRNAME)/aptbox + +# Add prerequisite to the build-image target of +# $(MKIMAGE_PREFIX)/targets.mk. +build-image: $(_IMAGE_APTBOX_)/etc/apt/pkgpriorities + +_PINNED_PACKAGES_ = $(foreach pp,$(PINNED_PACKAGES),$(if $(findstring :,$(pp)),$(pp),$(pp):$(PIN_PRIORITY))) +_PIN_PRIORITIES_ = $(sort $(foreach pp,$(_PINNED_PACKAGES_),$(lastword $(subst :, ,$(pp))))) +_PKGPRIORITIES_ = $(subst \n ,\n,$(foreach pri,$(_PIN_PRIORITIES_),$(pri):$(patsubst %:$(pri),\n %,$(filter %:$(pri),$(_PINNED_PACKAGES_)))\n)) + +$(_IMAGE_APTBOX_)/etc/apt/pkgpriorities: prepare-image-workdir + @echo -e '$(_PKGPRIORITIES_)' | sed -e 's,[[:space:]]\+$$,,' >$@ + @if [ -s $@ ]; then \ + if grep -q '^\(APT::\)\?Dir::Etc::pkgpriorities[[:space:]]' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + then \ + sed -i -e 's,\(Dir::Etc::pkgpriorities\)[[:space:]].*$$,\1 "$@";,g' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + else \ + echo 'Dir::Etc::pkgpriorities "$@";' \ + >>$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + fi; \ + echo "--- Package priorities ---" >&2; \ + cat $@ >&2; \ + echo "---" >&2; \ + fi diff --git a/bld/live/lib/50branding.mk b/bld/live/lib/50branding.mk new file mode 100644 index 0000000..4e3d7b3 --- /dev/null +++ b/bld/live/lib/50branding.mk @@ -0,0 +1,2 @@ +IMAGE_PACKAGES_REGEXP += $(call branding, \ + $(THE_BRANDING) $(STAGE2_BRANDING)) diff --git a/bld/live/scripts.d/99-elf-stats b/bld/live/scripts.d/99-elf-stats new file mode 100755 index 0000000..e798dda --- /dev/null +++ b/bld/live/scripts.d/99-elf-stats @@ -0,0 +1,48 @@ +#!/bin/sh -e +# tally up sizes of chroot's ELF binaries for squashfs tuning + +# NB: it's unclear so far whether mksquashfs -sort is beneficial +if [ -z "$GLOBAL_SQUASHFS_SORT" -o "$GLOBAL_SQUASHFS" != "tight" ]; then + echo "SKIP elf-stats: looks like it's not needed" >&2 + exit 0 +fi + +exit_handler() +{ + local rc=$1 + rm -f -- "$TMPFILE" + exit $rc +} + +# it's controlled environment +TMPFILE="$(mktemp)" + +trap 'exit_handler $?' EXIT HUP PIPE INT QUIT TERM + +# a list of ELF binaries (both executables and shared libraries) +ELFLIST=/.our/elf.lst + +cd "$WORKDIR" + +# let's parallelize a bit, chroot should be on tmpfs or just-cached +du -bsx | cut -f1 > "$TMPFILE" & + +elf="$(find {,usr/}{lib*,{,s}bin} \ + -path lib/modules -prune -o \ + -path usr/lib/locale -prune -o \ + -type f \ + | file -nN -e ascii -e compress -e tar -e elf -f - \ + | sed -n "/: ELF /s/: .*$//p" \ + | tee "$ELFLIST.in" \ + | tr '\n' '\0' \ + | du -cb --files0-from=- \ + | tail -1 \ + | cut -f1)" + +wait +read root < "$TMPFILE" + +echo "** live chroot ELF ratio: $((100*$elf/$root))% ($elf/$root)" >&2 + +# add priorities +sed 's,^.*$,& 1,' < "$ELFLIST.in" > "$ELFLIST" diff --git a/bld/live/stage2cfg.mk b/bld/live/stage2cfg.mk new file mode 100644 index 0000000..cad9325 --- /dev/null +++ b/bld/live/stage2cfg.mk @@ -0,0 +1,18 @@ +# stage2 mod: livecd + +STAGE2_KMODULES = $(LIVE_KMODULES) $(THE_KMODULES) + +IMAGE_PACKAGES_REGEXP = $(LIVE_PACKAGES_REGEXP) $(THE_PACKAGES_REGEXP) + +IMAGE_PACKAGES = $(COMMON_PACKAGES) $(LIVE_PACKAGES) $(THE_PACKAGES) \ + $(call map,list, \ + $(LIVE_LISTS) $(LIVE_GROUPS) \ + $(THE_LISTS) $(THE_GROUPS) \ + $(COMMON_LISTS)) \ + interactivesystem + +MKI_PACK_RESULTS = squash:live + +debug:: + @echo "** live: IMAGE_PACKAGES: $(IMAGE_PACKAGES)" + @echo "** live: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)" diff --git a/bld/makedall.sh b/bld/makedall.sh new file mode 100755 index 0000000..8e72b95 --- /dev/null +++ b/bld/makedall.sh @@ -0,0 +1,3 @@ +#!/bin/sh +#make distclean all +make HSH_PROC=1 APTCONF=/home/tema/mkimage-profiles/apt.conf DEBUG=1 distclean all diff --git a/bld/pkg/lists/.base b/bld/pkg/lists/.base new file mode 100644 index 0000000..c1aa524 --- /dev/null +++ b/bld/pkg/lists/.base @@ -0,0 +1,556 @@ +## generated by features.in/metadata/lib/50-metadata.mk + +## SYSTEM_PACKAGES +memtest86+ +disable-usb-autosuspend +firmware-linux + +## COMMON_PACKAGES +shim-signed +mokutil +pesign +acpid +acpi +acpid-events-power + +## THE_PACKAGES +alterator-luks +chromium +chrony +disable-usb-autosuspend +btrfs-progs +gpm +xorg-drv-wacom +xorg-drv-amdgpu +NetworkManager +shadow-utils +passwd +shadow-groups +fonts-ttf-google-croscore-arimo +fonts-otf-adobe-source-code-pro +fonts-otf-adobe-source-sans-pro +fonts-otf-mozilla-fira +fonts-ttf-google-droid-sans +fonts-ttf-google-droid-sans-mono +fonts-ttf-google-droid-serif +fonts-ttf-google-croscore-arimo +fonts-ttf-google-croscore-cousine +fonts-ttf-google-croscore-tinos +fonts-ttf-liberation +xorg-drv-intel +xorg-dri-intel +xorg-drv-nouveau +xorg-drv-ati +xorg-drv-radeon +control +xdg-user-dirs +pam-limits-desktop +beesu +polkit +dvd+rw-tools +altmediawriter +upower +udev-rules-rfkill-uaccess +qemu-guest-agent +open-vm-tools +virtualbox-guest-additions +xorg-drv-vmware +xorg-drv-vmmouse +open-vm-tools-desktop +spice-vdagent +xorg-drv-qxl +xorg-drv-spiceqxl +firmware-intel-ucode +iucode_tool +firmware-alsa-sof +chkconfig +vconsole-setup-kludge +systemd-settings-enable-log-to-tty12 +systemd-settings-enable-showstatus +bluez +synaptic-kde +synaptic-usermode- +kde5-display-manager-lightdm +dhcpcd +make-initrd-plymouth + +## BASE_PACKAGES +make-initrd-luks +installer-feature-runlevel5-stage3 +installer-feature-bootloader-grub + +## COMMON_LISTS + +# tagged/base+efi +gdisk +parted +fatresize +dosfstools +grub2-efi +efibootmgr + +## THE_LISTS + +# tagged/security+luks tagged/desktop+regular tagged/base+regular tagged/base+xorg tools/wireless sound/base sound/pulseaudio tagged/base+regular+extra tagged/desktop+regular tagged/base+regular tagged/desktop+xorg tagged/base+l10n systemd tagged/base+nm tagged/base+kde5 tagged/base+kometa domain-client +make-initrd-luks +cryptsetup +synaptic +synaptic-usermode +userpasswd +xdg-user-dirs +alterator-browser-qt +alterator-standalone +alterator-root +alterator-users +alterator-groups +alterator-net-general +alterator-net-pppoe +rp-pppoe-client +alterator-net-pptp +alterator-net-openvpn +alterator-net-eth +alterator-net-wifi +alterator-datetime +alterator-proxy +alterator-services +alterator-x11 +alterator-xkb +alterator-update-kernel +glxinfo +glxgears +xorg-conf-synaptics +cpu-x +exfatprogs +hdparm +inxi +lcdtest +lm_sensors3 +lsblk +sdparm +ntpdate +fonts-bitmap-terminus +ldd-requires +alt-rootfs-installer +gparted +gpart +x11-ssh-askpass +sysfsutils +mc +apf +udev-extras +librsvg +# icons +gnome-icon-theme +gnome-icon-theme-symbolic +# unicode fonts +fonts-ttf-gnu-freefont-mono +fonts-ttf-gnu-freefont-sans +fonts-ttf-gnu-freefont-serif +htop +# firmware update utils +#fwupd +blacklist-pcspkr +glibc-locales +xfsprogs +jfsprogs +ntfs-3g +dosfstools +fatresize +make-initrd-ucode +shadow-change +openssh +openssh-blacklist +net-tools +nfs-utils +smartmontools +system-report +ps_mem +strace +powertop +pciutils +usbutils +acpi +dmidecode + +apt-repo +apt-rsync +apt-scripts +aptitude +update-kernel +eepm +bash-completion +cpufreq-simple +eject +bc +ncdu +tree +zsh +xorg-server +xorg-drv-evdev +xorg-drv-synaptics +xorg-drv-libinput +xorg-drv-vesa +xorg-drv-fbdev +xauth +xorg-utils +x-cursor-theme-jimmac +menu-icons-default +wireless-tools +ath_info +rfkill +crda +iw +amixer +alsa-utils +aplay +test-audio +alsa-set-initial-options +pulseaudio-daemon +pulseaudio-utils +alsa-plugins-pulse +lvm2 +make-initrd-lvm +mdadm +make-initrd-mdadm +synaptic +synaptic-usermode +userpasswd +xdg-user-dirs +alterator-browser-qt +alterator-standalone +alterator-root +alterator-users +alterator-groups +alterator-net-general +alterator-net-pppoe +rp-pppoe-client +alterator-net-pptp +alterator-net-openvpn +alterator-net-eth +alterator-net-wifi +alterator-datetime +alterator-proxy +alterator-services +alterator-x11 +alterator-xkb +alterator-update-kernel +glxinfo +glxgears +xorg-conf-synaptics +cpu-x +exfatprogs +hdparm +inxi +lcdtest +lm_sensors3 +lsblk +sdparm +ntpdate +fonts-bitmap-terminus +ldd-requires +alt-rootfs-installer +gparted +gpart +x11-ssh-askpass +sysfsutils +mc +apf +udev-extras +librsvg +# icons +gnome-icon-theme +gnome-icon-theme-symbolic +# unicode fonts +fonts-ttf-gnu-freefont-mono +fonts-ttf-gnu-freefont-sans +fonts-ttf-gnu-freefont-serif +htop +# firmware update utils +#fwupd +blacklist-pcspkr +glibc-locales +xfsprogs +jfsprogs +ntfs-3g +dosfstools +fatresize +make-initrd-ucode +shadow-change +openssh +openssh-blacklist +net-tools +nfs-utils +smartmontools +system-report +ps_mem +strace +powertop +pciutils +usbutils +acpi +dmidecode + +apt-repo +apt-rsync +apt-scripts +aptitude +update-kernel +eepm +bash-completion +cpufreq-simple +eject +bc +ncdu +tree +zsh +xorg-drv-ati +xorg-drv-cirrus +#xorg-drv-mga +xorg-drv-modesetting +#xorg-drv-nv +xorg-drv-qxl +#xorg-drv-s3 +#xorg-drv-s3virge +#xorg-drv-savage +#xorg-drv-sis +glibc-locales +glibc-gconv-modules +systemd +systemd-units +systemd-services +systemd-sysvinit +systemd-analyze +chkconfig +NetworkManager +NetworkManager-vpnc +NetworkManager-openvpn +NetworkManager-pptp +NetworkManager-l2tp +NetworkManager-openconnect +usb-modeswitch +systemd-sysvinit +###systemd-presets-kdesktop + +kde5-mini +kde5-small + +#####kde5 +gtk2-theme-breeze +gtk3-theme-breeze +kde5-filelight +kde5-kamera +kde5-kcharselect +kde5-kfind +kde5-kgpg +kde5-khelpcenter +kde5-kio-audiocd +kde5-kio-zeroconf +kde5-kolourpaint +kde5-krdc +kde5-kteatime +kde5-ktimer +kde5-network-filesharing +kde5-network-manager +kde5-plasma-applet-places-widget +kde5-spectacle +kde5-sweeper +kf5-baloo +kf5-kdbusaddons +kf5-qqc2-desktop-style +kf5-solid +plasma5-addons +plasma5-bluedevil +plasma5-kde-gtk-config +plasma5-kgamma +plasma5-khotkeys +plasma5-kinfocenter +plasma5-kmenuedit +plasma5-kscreen +plasma5-ksshaskpass +plasma5-browser-integration +plasma5-disks + +##big +kde5-connect +kde5-graphics-thumbnailers +kde5-pim +kde5-ffmpegthumbs +kde5-kate +kde5-kcron +kde5-kdf +kde5-kipi-plugins-core +###kde5-konversation +###kde5-messenger-client +kde5-krfb +kde5-kruler +kde5-ksystemlog +###kde5-pim-addons +kid3-ui-kde5 +plasma5-kwrited +plasma5-user-manager +plasma5-workspace-wallpapers +plasma5-xdg-desktop-portal-kde + +###kde5-maxi +kde5-digikam +kde5-k3b +kde5-keditbookmarks +kde5-kipi-plugins +kde5-kmag +kde5-kmousetool +kde5-kmouth +kde5-kwave +kde5-kfloppy +kde5-edu +kde5-printing +kde5-scanning +kde5-dolphin-plugins +#plasma5-discover-maxi + + +xorg-conf-synaptics +###xdg-user-dirs +###installer-feature-xdg-user-dirs +altlinux-freedesktop-menu-nested-menu +sane +sane-frontends +system-config-printer +rpminstall +kernel-modules-virtualbox-std-def +icon-theme-oxygen +vconsole-setup-kludge +pam-limits-desktop +installer-feature-kometa-kde5 +installer-feature-kometa-school-kde5 +kometa-os-release +kometa-std-desktop +kometa-xdg-core +kometa-xdg-plasma5-classic +kometa-xdg-pam-env +kometa-icons-core-classic +kometa-icons-theme-classic + +####Fonts +fonts-ttf-ms +fonts-ttf-PT +fonts-console-terminus +fonts-ttf-paratype-pt-sans-caption +fonts-ttf-paratype-pt-serif-caption +fonts-ttf-unifont +fonts-ttf-google-crosextra-carlito +fonts-ttf-PTAstra + +####soft +gimp +gimp-help-ru +xsane +xsane-doc-ru +xsane-gimp2 +simple-scan +vlc-maxi +simplescreenrecorder +git +xsensors +chromium +firefox +LibreOffice +LibreOffice-langpack-ru +LibreOffice-kde5 +kde5-menu-new-odf-files +cheese +kamoso +guvcview +kdenlive +shotcut +openshot +avidemux-qt +lmms +synfigstudio +#pdfmod +tesseract-langpack-ru +gimagereader-qt5 +eepm +darktable +ksnip +v4l-utils + +codeblocks +codeblocks-contrib +converseen +inkscape +kumir2 +audacity +audacity-manual +blender +scratch-full +scratch-help-en +wxMaxima +bluefish +lazarus +qt-creator +klatexformula +krita +gcompris-qt +gcompris-qt-data +gcompris-qt-voices-ru +###xorg-96dpi +OpenBoard +python3-module-pylint +python3-module-pytest-pylint +python3-module-pocketlint +python3-module-pyflakes +###libxcb-devel +nmap +python3-tools +python3-tools-pep8 +sympy +python3-module-sympy +python3-module-sympy-examples +ipython3 +alterator-update-kernel +###touchegg +hplip-hpcups-PPDs +hplip-hpijs-PPDs +hplip-PPDs +hplip-ps-PPDs +hplip-recommends + +#Для ноутбуков HP у которых не работает микрофон +#firmware-alsa-sof +appinstall +pam-config +pam_mount +pam_ccreds +samba-client +cifs-utils +keyutils +nfs-clients +autofs +libnss-fallback +libnss-mdns +settime-rfc867 +#krb5-ticket-watcher +alterator-browser-qt +alterator-standalone +alterator-auth +alterator-net-shares + +## BASE_LISTS + +# grub +grub-pc +grub-efi + + +# should be R: in grub-ieee1275 + + +## DOT_BASE +^kernel-(image|modules-(acpi_call|bcmwl|drm|drm-ancient|drm-nouveau|drm-radeon|e1000e|r8125|rtl8188fu|rtl8192eu|rtl8723bu|rtl8723de|rtl8812au|rtl8821ce|rtl8821cu|rtl88x2bu|rtw89|scsi|staging|vmware))-(std-def)$ +^branding-kometa-school-(notes|bootloader|alterator|graphics|indexhtml|notes|alterator|graphics|indexhtml|slideshow|bootloader|bootsplash|bootsplash)$ +make-initrd-plymouth +cpio +firmware-prism.* +firmware-ipw.* +firmware-zd.* +firmware-rt.* diff --git a/bld/pkg/lists/domain-client b/bld/pkg/lists/domain-client new file mode 100644 index 0000000..2d7bafc --- /dev/null +++ b/bld/pkg/lists/domain-client @@ -0,0 +1,16 @@ +pam-config +pam_mount +pam_ccreds +samba-client +cifs-utils +keyutils +nfs-clients +autofs +libnss-fallback +libnss-mdns +settime-rfc867 +#krb5-ticket-watcher +alterator-browser-qt +alterator-standalone +alterator-auth +alterator-net-shares diff --git a/bld/pkg/lists/grub b/bld/pkg/lists/grub new file mode 100644 index 0000000..5606ed1 --- /dev/null +++ b/bld/pkg/lists/grub @@ -0,0 +1,6 @@ +grub-pc +grub-efi + + +# should be R: in grub-ieee1275 + diff --git a/bld/pkg/lists/sound/base b/bld/pkg/lists/sound/base new file mode 100644 index 0000000..9ef3517 --- /dev/null +++ b/bld/pkg/lists/sound/base @@ -0,0 +1,5 @@ +amixer +alsa-utils +aplay +test-audio +alsa-set-initial-options diff --git a/bld/pkg/lists/sound/pulseaudio b/bld/pkg/lists/sound/pulseaudio new file mode 100644 index 0000000..c18e09b --- /dev/null +++ b/bld/pkg/lists/sound/pulseaudio @@ -0,0 +1,3 @@ +pulseaudio-daemon +pulseaudio-utils +alsa-plugins-pulse diff --git a/bld/pkg/lists/systemd b/bld/pkg/lists/systemd new file mode 100644 index 0000000..4331c99 --- /dev/null +++ b/bld/pkg/lists/systemd @@ -0,0 +1,6 @@ +systemd +systemd-units +systemd-services +systemd-sysvinit +systemd-analyze +chkconfig diff --git a/bld/pkg/lists/tagged/base+desktop+live b/bld/pkg/lists/tagged/base+desktop+live new file mode 100644 index 0000000..098924c --- /dev/null +++ b/bld/pkg/lists/tagged/base+desktop+live @@ -0,0 +1,10 @@ +wget +curl +rsync +apt +fdisk +vim-console +nano +mc +nfs-utils +system-backup diff --git a/bld/pkg/lists/tagged/base+efi b/bld/pkg/lists/tagged/base+efi new file mode 100644 index 0000000..35e0639 --- /dev/null +++ b/bld/pkg/lists/tagged/base+efi @@ -0,0 +1,6 @@ +gdisk +parted +fatresize +dosfstools +grub2-efi +efibootmgr diff --git a/bld/pkg/lists/tagged/base+kde5 b/bld/pkg/lists/tagged/base+kde5 new file mode 100644 index 0000000..652f700 --- /dev/null +++ b/bld/pkg/lists/tagged/base+kde5 @@ -0,0 +1,92 @@ +systemd-sysvinit +###systemd-presets-kdesktop + +kde5-mini +kde5-small + +#####kde5 +gtk2-theme-breeze +gtk3-theme-breeze +kde5-filelight +kde5-kamera +kde5-kcharselect +kde5-kfind +kde5-kgpg +kde5-khelpcenter +kde5-kio-audiocd +kde5-kio-zeroconf +kde5-kolourpaint +kde5-krdc +kde5-kteatime +kde5-ktimer +kde5-network-filesharing +kde5-network-manager +kde5-plasma-applet-places-widget +kde5-spectacle +kde5-sweeper +kf5-baloo +kf5-kdbusaddons +kf5-qqc2-desktop-style +kf5-solid +plasma5-addons +plasma5-bluedevil +plasma5-kde-gtk-config +plasma5-kgamma +plasma5-khotkeys +plasma5-kinfocenter +plasma5-kmenuedit +plasma5-kscreen +plasma5-ksshaskpass +plasma5-browser-integration +plasma5-disks + +##big +kde5-connect +kde5-graphics-thumbnailers +kde5-pim +kde5-ffmpegthumbs +kde5-kate +kde5-kcron +kde5-kdf +kde5-kipi-plugins-core +###kde5-konversation +###kde5-messenger-client +kde5-krfb +kde5-kruler +kde5-ksystemlog +###kde5-pim-addons +kid3-ui-kde5 +plasma5-kwrited +plasma5-user-manager +plasma5-workspace-wallpapers +plasma5-xdg-desktop-portal-kde + +###kde5-maxi +kde5-digikam +kde5-k3b +kde5-keditbookmarks +kde5-kipi-plugins +kde5-kmag +kde5-kmousetool +kde5-kmouth +kde5-kwave +kde5-kfloppy +kde5-edu +kde5-printing +kde5-scanning +kde5-dolphin-plugins +#plasma5-discover-maxi + + +xorg-conf-synaptics +###xdg-user-dirs +###installer-feature-xdg-user-dirs +altlinux-freedesktop-menu-nested-menu +sane +sane-frontends +system-config-printer +rpminstall +kernel-modules-virtualbox-std-def +icon-theme-oxygen +vconsole-setup-kludge +pam-limits-desktop diff --git a/bld/pkg/lists/tagged/base+kometa b/bld/pkg/lists/tagged/base+kometa new file mode 100644 index 0000000..e0c25b5 --- /dev/null +++ b/bld/pkg/lists/tagged/base+kometa @@ -0,0 +1,118 @@ +installer-feature-kometa-kde5 +installer-feature-kometa-school-kde5 +installer-feature-desktop-other-fs-stage2 +kometa-os-release +kometa-std-desktop +kometa-xdg-core +kometa-xdg-plasma5-classic +kometa-xdg-pam-env +kometa-icons-core-classic +kometa-icons-theme-classic +polkit-rule-gparted-as-root +eepm-add-r7-office + +####R7 +fonts-ttf-dejavu +fonts-ttf-google-crosextra-carlito +fonts-ttf-liberation +glibc gst-libav +gst-plugins-ugly1.0 +libX11 +libXScrnSaver +libcairo +libgcc1 +libgtk+2 +libgtkglext +r7-office + +####Myoffice +myoffice-standard-documents + +####Fonts +fonts-ttf-ms +fonts-ttf-PT +fonts-console-terminus +fonts-ttf-paratype-pt-sans-caption +fonts-ttf-paratype-pt-serif-caption +fonts-ttf-unifont +fonts-ttf-google-crosextra-carlito +fonts-ttf-PTAstra + +####soft +gimp +gimp-help-ru +xsane +xsane-doc-ru +xsane-gimp2 +simple-scan +vlc-maxi +simplescreenrecorder +git +xsensors +chromium +firefox +LibreOffice +LibreOffice-langpack-ru +LibreOffice-kde5 +kde5-menu-new-odf-files +cheese +kamoso +guvcview +kdenlive +shotcut +openshot +avidemux-qt +lmms +synfigstudio +#pdfmod +tesseract-langpack-ru +gimagereader-qt5 +eepm +darktable +ksnip +v4l-utils + +codeblocks +codeblocks-contrib +converseen +inkscape +kumir2 +audacity +audacity-manual +blender +scratch-full +scratch-help-en +wxMaxima +bluefish +lazarus +qt-creator +klatexformula +krita +gcompris-qt +gcompris-qt-data +gcompris-qt-voices-ru +###xorg-96dpi +OpenBoard +python3-module-pylint +python3-module-pytest-pylint +python3-module-pocketlint +python3-module-pyflakes +###libxcb-devel +nmap +python3-tools +python3-tools-pep8 +sympy +python3-module-sympy +python3-module-sympy-examples +ipython3 +alterator-update-kernel +###touchegg +hplip-hpcups-PPDs +hplip-hpijs-PPDs +hplip-PPDs +hplip-ps-PPDs +hplip-recommends + +#Для ноутбуков HP у которых не работает микрофон +firmware-alsa-sof +appinstall diff --git a/bld/pkg/lists/tagged/base+l10n b/bld/pkg/lists/tagged/base+l10n new file mode 100644 index 0000000..52f0d35 --- /dev/null +++ b/bld/pkg/lists/tagged/base+l10n @@ -0,0 +1,2 @@ +glibc-locales +glibc-gconv-modules diff --git a/bld/pkg/lists/tagged/base+network b/bld/pkg/lists/tagged/base+network new file mode 100644 index 0000000..25d02ff --- /dev/null +++ b/bld/pkg/lists/tagged/base+network @@ -0,0 +1,3 @@ +etcnet +dhcpcd +dhcp-client diff --git a/bld/pkg/lists/tagged/base+nm b/bld/pkg/lists/tagged/base+nm new file mode 100644 index 0000000..35621a3 --- /dev/null +++ b/bld/pkg/lists/tagged/base+nm @@ -0,0 +1,7 @@ +NetworkManager +NetworkManager-vpnc +NetworkManager-openvpn +NetworkManager-pptp +NetworkManager-l2tp +NetworkManager-openconnect +usb-modeswitch diff --git a/bld/pkg/lists/tagged/base+regular b/bld/pkg/lists/tagged/base+regular new file mode 100644 index 0000000..808f341 --- /dev/null +++ b/bld/pkg/lists/tagged/base+regular @@ -0,0 +1,35 @@ +glibc-locales +xfsprogs +jfsprogs +ntfs-3g +dosfstools +fatresize +make-initrd-ucode +shadow-change +openssh +openssh-blacklist +net-tools +nfs-utils +smartmontools +system-report +ps_mem +strace +powertop +pciutils +usbutils +acpi +dmidecode + +apt-repo +apt-rsync +apt-scripts +aptitude +update-kernel +eepm +bash-completion +cpufreq-simple +eject +bc +ncdu +tree +zsh diff --git a/bld/pkg/lists/tagged/base+regular+extra b/bld/pkg/lists/tagged/base+regular+extra new file mode 100644 index 0000000..67bd553 --- /dev/null +++ b/bld/pkg/lists/tagged/base+regular+extra @@ -0,0 +1,4 @@ +lvm2 +make-initrd-lvm +mdadm +make-initrd-mdadm diff --git a/bld/pkg/lists/tagged/base+rescue b/bld/pkg/lists/tagged/base+rescue new file mode 100644 index 0000000..d3b0714 --- /dev/null +++ b/bld/pkg/lists/tagged/base+rescue @@ -0,0 +1,30 @@ +# Startup +rootfiles +servicectl +# Common +acl +coreutils +glibc-nss +glibc-utils +man +man-pages +util-linux +eject +# Package management +apt-repo +aptitude +# Partition management +fdisk +# Serial console +agetty +# Console mouse +gpm +# File management +mc +# Provisioning +partclone +# l10n +glibc-locales +# Misc +rescue-launcher +system-backup diff --git a/bld/pkg/lists/tagged/base+xorg b/bld/pkg/lists/tagged/base+xorg new file mode 100644 index 0000000..c620417 --- /dev/null +++ b/bld/pkg/lists/tagged/base+xorg @@ -0,0 +1,10 @@ +xorg-server +xorg-drv-evdev +xorg-drv-synaptics +xorg-drv-libinput +xorg-drv-vesa +xorg-drv-fbdev +xauth +xorg-utils +x-cursor-theme-jimmac +menu-icons-default diff --git a/bld/pkg/lists/tagged/desktop+live b/bld/pkg/lists/tagged/desktop+live new file mode 100644 index 0000000..5e29c98 --- /dev/null +++ b/bld/pkg/lists/tagged/desktop+live @@ -0,0 +1,9 @@ +xdm +xinit +xinitrc +livecd-setlocale +livecd-timezone +installer-feature-runlevel5-stage3 +os-prober +sudo +su diff --git a/bld/pkg/lists/tagged/desktop+regular b/bld/pkg/lists/tagged/desktop+regular new file mode 100644 index 0000000..058b59d --- /dev/null +++ b/bld/pkg/lists/tagged/desktop+regular @@ -0,0 +1,55 @@ +synaptic +synaptic-usermode +userpasswd +xdg-user-dirs +alterator-browser-qt +alterator-standalone +alterator-root +alterator-users +alterator-groups +alterator-net-general +alterator-net-pppoe rp-pppoe-client +alterator-net-pptp +alterator-net-openvpn +alterator-net-eth +alterator-net-wifi +alterator-datetime +alterator-proxy +alterator-services +alterator-x11 +alterator-xkb +alterator-update-kernel +glxinfo +glxgears +xorg-conf-synaptics +cpu-x +exfatprogs +hdparm +inxi +lcdtest +lm_sensors3 +lsblk +sdparm +ntpdate +fonts-bitmap-terminus +ldd-requires +alt-rootfs-installer +gparted +gpart +x11-ssh-askpass +sysfsutils +mc +apf +udev-extras +librsvg +# icons +gnome-icon-theme +gnome-icon-theme-symbolic +# unicode fonts +fonts-ttf-gnu-freefont-mono +fonts-ttf-gnu-freefont-sans +fonts-ttf-gnu-freefont-serif +htop +# firmware update utils +#fwupd +blacklist-pcspkr diff --git a/bld/pkg/lists/tagged/desktop+xorg b/bld/pkg/lists/tagged/desktop+xorg new file mode 100644 index 0000000..6bd245c --- /dev/null +++ b/bld/pkg/lists/tagged/desktop+xorg @@ -0,0 +1,10 @@ +xorg-drv-ati +xorg-drv-cirrus +#xorg-drv-mga +xorg-drv-modesetting +#xorg-drv-nv +xorg-drv-qxl +#xorg-drv-s3 +#xorg-drv-s3virge +#xorg-drv-savage +#xorg-drv-sis diff --git a/bld/pkg/lists/tagged/security+luks b/bld/pkg/lists/tagged/security+luks new file mode 100644 index 0000000..46eb8e5 --- /dev/null +++ b/bld/pkg/lists/tagged/security+luks @@ -0,0 +1,2 @@ +make-initrd-luks +cryptsetup diff --git a/bld/pkg/lists/tools/wireless b/bld/pkg/lists/tools/wireless new file mode 100644 index 0000000..986d35d --- /dev/null +++ b/bld/pkg/lists/tools/wireless @@ -0,0 +1,5 @@ +wireless-tools +ath_info +rfkill +crda +iw diff --git a/bld/rootfs/README b/bld/rootfs/README new file mode 100644 index 0000000..bcd8e8f --- /dev/null +++ b/bld/rootfs/README @@ -0,0 +1,19 @@ +=== sub.in/rootfs === + +Этот каталог содержит общие компоненты, добавляемые в "пользовательскую" +корневую файловую систему вне зависимости от того, с чем именно в итоге +столкнётся обычный пользователь: livecd, vm/ve, но не rescue (который +может входить в комплексный дистрибутив, но не должен дублировать его). + +Соответственно функциональность вроде настройки автоматического входа +в систему, которая должна быть задействована вне зависимости от того, +какая часть профиля отвечает за формирование итоговой "пользоФС", +может быть помещена в подкаталог rootfs/ (аналогично stage2/ для фич, +дополняющих все производные субпрофиля stage2). + +В фичах, опирающихся на функциональность rootfs, следует указывать +зависимость на sub/rootfs@нужное (например, sub/rootfs@live в фиче +live, порождающей субпрофиль live из субпрофиля stage2). + +Зависимость на sub/rootfs не имеет смысла, указывать подобное не следует +ни в фичах, дополняющих rootfs, ни в фичах, опирающихся на неё. diff --git a/bld/rootfs/image-scripts.d/10-plymouth b/bld/rootfs/image-scripts.d/10-plymouth new file mode 100755 index 0000000..4e28f55 --- /dev/null +++ b/bld/rootfs/image-scripts.d/10-plymouth @@ -0,0 +1,10 @@ +#!/bin/sh + +CONFIG=/etc/plymouth/plymouthd.conf + +if [ -f "$CONFIG" ]; then + grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG" +fi + +cp -a /usr/share/plymouth/default-install-duration \ + /var/lib/plymouth/boot-duration ||: diff --git a/bld/rootfs/image-scripts.d/10-services b/bld/rootfs/image-scripts.d/10-services new file mode 100755 index 0000000..d84fabd --- /dev/null +++ b/bld/rootfs/image-scripts.d/10-services @@ -0,0 +1,40 @@ +#!/bin/sh +# this script implements the services regulation +# according to what has been decided in the profile + +CHKCONFIG= +SYSTEMCTL= + +[ ! -x /sbin/chkconfig ] || CHKCONFIG=1 +[ ! -x /bin/systemctl ] || SYSTEMCTL=1 + +[ -n "$CHKCONFIG$SYSTEMCTL" ] || exit 0 + +switch() { + case "$2" in + on) + cc=on; sc=enable;; + off) + cc=off; sc=disable;; + esac + + { + [ -z "$SYSTEMCTL" ] || /bin/systemctl --no-reload $sc $1 + [ -z "$CHKCONFIG" ] || /sbin/chkconfig $1 $cc + } # 2>/dev/null +} + +# defaults (most likely features.in ones) +for i in $GLOBAL_DEFAULT_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_DEFAULT_SERVICES_DISABLE; do switch $i off; done + +# explicitly specified behaviour (e.g. via conf.d) +for i in $GLOBAL_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SERVICES_DISABLE; do switch $i off; done + +# systemd services +CHKCONFIG= +for i in $GLOBAL_SYSTEMD_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SYSTEMD_SERVICES_DISABLE; do switch $i off; done + +: diff --git a/bld/rootfs/image-scripts.d/30-all-groups b/bld/rootfs/image-scripts.d/30-all-groups new file mode 100755 index 0000000..c36c223 --- /dev/null +++ b/bld/rootfs/image-scripts.d/30-all-groups @@ -0,0 +1,13 @@ +#!/bin/sh -eu + +# ensure that all the necesary system groups exist + +echo '/usr/share/install3/default-groups +/etc/alterator/auth/user-groups +/etc/alterator/auth/admin-groups' \ +| while read LIST; do + [ -s "$LIST" ] || continue + for GROUP in $(cat "$LIST"); do + groupadd -r "$GROUP" &>/dev/null ||: + done +done diff --git a/bld/rootfs/image-scripts.d/35-xdg-user-dirs b/bld/rootfs/image-scripts.d/35-xdg-user-dirs new file mode 100755 index 0000000..426dc23 --- /dev/null +++ b/bld/rootfs/image-scripts.d/35-xdg-user-dirs @@ -0,0 +1,15 @@ +#!/bin/sh +# tweak xdg-user-dirs defaults if told so +# using tuples like "PHOTOS:Documents/Pictures" + +. shell-config + +CONFIG="/etc/xdg/user-dirs.defaults" + +[ -z "$GLOBAL_XDG_USER_DIRS" ] || + echo "$GLOBAL_XDG_USER_DIRS" \ + | tr ' ' '\n' \ + | while IFS=':' read k v; do + [ -n "$k" -a -n "$v" ] || continue + shell_config_set "$CONFIG" "$k" "$v" + done diff --git a/bld/rootfs/image-scripts.d/40-x11-autologin b/bld/rootfs/image-scripts.d/40-x11-autologin new file mode 100755 index 0000000..f07ba03 --- /dev/null +++ b/bld/rootfs/image-scripts.d/40-x11-autologin @@ -0,0 +1,212 @@ +#!/bin/sh +# see also http://www.enricozini.org/2008/tips/lightweight-autologin/ + +if [ ! -x /usr/bin/X ]; then + echo "SKIP autologin: X not installed" >&2 + exit 0 +fi + +USER=kometa + +add_nopasswdlogin_group() +{ + [ -f "/etc/pam.d/$1" ] && + egrep -qs '^auth.+user[[:blank:]]+ingroup[[:blank:]]+nopasswdlogin' "/etc/pam.d/$1" && + groupadd -r nopasswdlogin && + gpasswd -a "$USER" nopasswdlogin +} + +BAK=".save" +backup() { + [ -f "$1" -a ! -f "$1$BAK" ] || return 1 + cp -av "$1" "$1$BAK" +} + +## this is only relevant for installable livecd +### FIXME: this shouldn't proceed in other cases! +restore_later() { + [ -n "$1" ] || return 0 + + local prefix="/usr/lib/alterator/hooks/livecd-preinstall.d" + [ -d "$prefix" ] || mkdir -p "$prefix" + + local hook="$prefix/51-disable-autologin-again.sh" + [ -s "$hook" ] || cat >> "$hook" <<- EOF + #!/bin/sh + . livecd-functions + EOF + + echo mv -v "\$destdir$1$BAK" "\$destdir$1" >> "$hook" + chmod +x "$hook" +} + +## autologin^2 +AUTOLOGIN_CFG=/etc/sysconfig/autologin +if [ -x /usr/sbin/autologin ]; then + backup "$AUTOLOGIN_CFG" + cat >> "$AUTOLOGIN_CFG" <<- EOF + USER=$USER + AUTOLOGIN=yes + EOF + restore_later "$AUTOLOGIN_CFG" +fi + +## lightdm autologin +LIGHTDM_CONF=/etc/lightdm/lightdm.conf +if [ -f "$LIGHTDM_CONF" ]; then + mkdir -p /etc/lightdm/lightdm.conf.d + cat > /etc/lightdm/lightdm.conf.d/autologin.conf <> /etc/lightdm/lightdm.conf.d/autologin.conf + else + echo "** WARNING: no sessions found in /usr/share/xsessions/" >&2 + fi + backup "/etc/group" + add_nopasswdlogin_group lightdm ||: + + restore_later "/etc/group" +fi + +## gdm2 autologin +GDM_CONF=/etc/X11/gdm/custom.conf +if [ -f "$GDM_CONF" ]; then + backup "$GDM_CONF" + sed -i -e '/\[daemon\]/aAutomaticLoginEnable=true\nAutomaticLogin='$USER \ + "$GDM_CONF" + backup "/etc/group" + add_nopasswdlogin_group gdm ||: + + restore_later "$GDM_CONF" + restore_later "/etc/group" +fi + + +## lxdm autologin +LXDM_CONF=/etc/lxdm/lxdm.conf +if [ -f "$LXDM_CONF" ]; then + backup "$LXDM_CONF" + sed -i -e "s/\# autologin=dgod/autologin=$USER/" \ + "$LXDM_CONF" + backup "/etc/group" + add_nopasswdlogin_group lxdm ||: + + restore_later "$LXDM_CONF" + restore_later "/etc/group" +fi + +autologin_kdm() { + backup "$1" + sed -i \ + -e '/AutoLoginEnable/ s,^.*$,AutoLoginEnable=true,' \ + -e '/AutoLoginUser/ s,^.*$,AutoLoginUser='$USER',' \ + "$1" + restore_later "$1" +} + +## kdm3 autologin +# FIXME: tde packages have kdmrc in /usr via an absolute symlink :-( +KDM_ETC=/etc/X11/kdm +KDM_USR=/usr/share/kde/config/kdm +if [ "$(readlink "$KDM_ETC")" = "$KDM_USR" ]; then + rm -f "$KDM_ETC" + ln -s ../.."$KDM_USR" "$KDM_ETC" +fi + +KDMRC=/etc/X11/kdm/kdmrc +if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi + +## kdm4 autologin +KDMRC=/etc/X11/kdm4/kdmrc +if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi + +## sddm autologin +SDDM_RC=/etc/X11/sddm/sddm.conf +SDDM_SESSION= +if [ -f "$SDDM_RC" ]; then + backup "$SDDM_RC" + backup "/etc/group" + add_nopasswdlogin_group sddm ||: + sed -i "s,^User=$,&$USER," "$SDDM_RC" + if [ -f /usr/share/xsessions/lxqt.desktop ]; then + SDDM_SESSION=lxqt + elif [ -f /usr/share/xsessions/plasma.desktop ]; then + SDDM_SESSION=plasma + fi + if [ -n "$SDDM_SESSION" ]; then + sed -i "s,^Session=$,&$SDDM_SESSION," "$SDDM_RC" + fi + restore_later "$SDDM_RC" + restore_later "/etc/group" +fi + +## nodm autologin (the last since the most intrusive) +# FIXME nodm and xinitrc should be modified (also in p6) +# WARNING: check user PATH if things go weird! +NODM_RC=/etc/sysconfig/nodm +NODM_EXE=/usr/sbin/nodm +if [ -x "$NODM_EXE" ]; then + backup "$NODM_RC" + cat >> "$NODM_RC" <<- EOF + export NODM_USER=$USER + EOF + restore_later "$NODM_RC" +else + exit 0 +fi + +# FIXME: drop since #27449 is fixed +PREFDM=/etc/X11/prefdm +if [ -f "$PREFDM" ] && ! grep -q nodm "$PREFDM"; then + backup "$PREFDM" + sed -i \ + -e '/AUTOLOGIN_EXE=/ s,^.*$,AUTOLOGIN_EXE='$NODM_EXE',' \ + -e '/AUTOLOGIN_CFG=/ s,^.*$,AUTOLOGIN_CFG='$NODM_RC',' \ + "$PREFDM" + restore_later "$PREFDM" +fi + +# FIXME: drop when #27451 is fixed +NODM_PAM=/etc/pam.d/nodm +for module in pam_console.so pam_ck_connector.so; do + if [ -f /lib*/security/$module ]; then + str="-session optional $module" + grep -q "^$str$" "$NODM_PAM" || echo -e "$str" >> "$NODM_PAM" + fi +done + +NODM_POLKIT_CONFDIR=/etc/polkit-1/localauthority/50-local.d +NODM_POLKIT_CONF=org.freedesktop.NetworkManager.pkla +if [ -d "$NODM_POLKIT_CONFDIR" ]; then + cat > "$NODM_POLKIT_CONFDIR/$NODM_POLKIT_CONF" << _EOF_ +[nm-applet] +Identity=unix-group:users +Action=org.freedesktop.NetworkManager.* +ResultAny=yes +ResultInactive=no +ResultActive=yes +_EOF_ +fi + +NODM_DBUS_NM_CONF=/etc/dbus-1/system.d/nm-applet.conf +if [ -f "$NODM_DBUS_NM_CONF" ]; then + sed -i "s/at_console=\"true\"/user=\"$USER\"/" "$NODM_DBUS_NM_CONF" +fi + +NODM_G2KR_DIR=/etc/skel/.gnome2/keyrings +mkdir -p "$NODM_G2KR_DIR" +echo -n login > "$NODM_G2KR_DIR"/default +cat > "$NODM_G2KR_DIR"/login.keyring << _EOF_ +[keyring] +display-name=login +ctime=0 +mtime=0 +lock-on-idle=false +lock-after=false +_EOF_ + +: diff --git a/bld/rootfs/image-scripts.d/40-x11-autostart b/bld/rootfs/image-scripts.d/40-x11-autostart new file mode 100755 index 0000000..562cc1c --- /dev/null +++ b/bld/rootfs/image-scripts.d/40-x11-autostart @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ ! -x /usr/bin/X ]; then + echo "SKIP autostart: X not installed" >&2 + exit 0 +fi + +## setup automated graphical session startup +INITTAB=/etc/inittab +if [ -f "$INITTAB" ]; then + [ -z "$runlevel" ] && runlevel=5 + sed -i "s,^\(id:\)\(.*\)\(:initdefault.*\),\\1$runlevel\\3," "$INITTAB" +fi + +## ...and systemd, if any +## NB: alterator-setup's backup file can present a nice catch if left around +rm -f /etc/systemd/system/default.target{,.bak} + +: diff --git a/bld/rootfs/image-scripts.d/50-bootargs b/bld/rootfs/image-scripts.d/50-bootargs new file mode 100755 index 0000000..73195a1 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-bootargs @@ -0,0 +1,11 @@ +#!/bin/sh -eu + +if [ -s /etc/sysconfig/grub2 ]; then + # Cleanup + sed -i "s/ splash//g" /etc/sysconfig/grub2 + if [ -n "${GLOBAL_BASE_BOOTARGS-}" ]; then + sed -Ei \ + "s/(GRUB_CMDLINE_LINUX_DEFAULT=)(.*)(['\"])/\1\2 $GLOBAL_BASE_BOOTARGS\3/" \ + /etc/sysconfig/grub2 + fi +fi diff --git a/bld/rootfs/image-scripts.d/50-control b/bld/rootfs/image-scripts.d/50-control new file mode 100755 index 0000000..36f6e9e --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-control @@ -0,0 +1,11 @@ +#!/bin/sh +# setup control(8) states + +[ -z "$GLOBAL_CONTROL" ] || + echo "$GLOBAL_CONTROL" \ + | tr ' ' '\n' \ + | while IFS=':' read facility state; do + [ -z "$facility" -o -z "$state" ] || + control "$facility" "$state" + done +: diff --git a/bld/rootfs/image-scripts.d/50-fontconfig b/bld/rootfs/image-scripts.d/50-fontconfig new file mode 100755 index 0000000..856303a --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-fontconfig @@ -0,0 +1,33 @@ +#!/bin/sh +# fontconfig-config-config + +verbose="${GLOBAL_VERBOSE:+-v}" +verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "HOOK: 50-fontconfig: $@"; } +verbose "has started" + +CONF_DIR="/etc/fonts/conf.d" +AVAIL_DIR="/etc/fonts/conf.avail" + +list() { ls "$1"/??-"$2".conf 2>/dev/null; } + +enable() { + for i in "$@"; do + if ! list "$CONF_DIR" "$i"; then + AVAIL="$(list "$AVAIL_DIR" "$i" | head -1)" + if [ -n "$AVAIL" ]; then + ln -s $verbose "$AVAIL" "$CONF_DIR/$CONF_ADD" + fi + fi + done +} + +disable() { + for i in "$@"; do + $(list "$CONF_DIR" "$i") | xargs -r rm -f $verbose -- + done +} + +disable $GLOBAL_FONT_FEATURES_DISABLE +enable $GLOBAL_FONT_FEATURES_ENABLE + +: diff --git a/bld/rootfs/image-scripts.d/50-issue b/bld/rootfs/image-scripts.d/50-issue new file mode 100755 index 0000000..343aad9 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-issue @@ -0,0 +1,23 @@ +#!/bin/sh +# issue welcome message if there's a guest user +# (the first one configured with empty password) + +[ -n "$GLOBAL_USERS" ] || { + echo "** 50-issue: warning, no users created" >&1 + exit 0 +} + +guest= +for u in $GLOBAL_USERS; do + login="${u%%:*}" + [ -n "$login" ] || continue + rest="${u#*:}" + pass="${rest%%:*}" + [ -z "$pass" ] || continue + guest="$login" + break +done + +[ -n "$guest" ] || exit 0 + +echo "Hello friend, say \`$guest' to log in at \\l" >> /etc/issue diff --git a/bld/rootfs/image-scripts.d/50-l10n-kbd b/bld/rootfs/image-scripts.d/50-l10n-kbd new file mode 100755 index 0000000..36b6619 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-l10n-kbd @@ -0,0 +1,17 @@ +#!/bin/sh +# partial port of livecd-setlocale (kbd bits) + +CONFIG=/etc/sysconfig/keyboard + +# Requires: console-scripts +if [ -s "$CONFIG" ]; then + echo "** l10n-kbd: expected $CONFIG to be an empty file" >&2 + exit 0 +fi + +if [ -z "$GLOBAL_KEYTABLE" ]; then + echo "** l10n-kbd: empty GLOBAL_KEYTABLE" >&2 + exit 0 +fi + +echo "KEYTABLE=$GLOBAL_KEYTABLE" > "$CONFIG" diff --git a/bld/rootfs/image-scripts.d/50-l10n-xkb b/bld/rootfs/image-scripts.d/50-l10n-xkb new file mode 100755 index 0000000..18b8733 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-l10n-xkb @@ -0,0 +1,19 @@ +#!/bin/sh +# partial port of livecd-setlocale (xkb bits) + +PREFIX=/etc/X11/xinit + +# Requires: xinitrc +if [ ! -d "$PREFIX" ]; then + echo "** l10n-xkb: expected $PREFIX to exist (xinitrc)" >&2 + exit 0 +fi + +if [ -z "$GLOBAL_XKB_VARIANTS" -o -z "$GLOBAL_XKB_KEYMAPS" ]; then + echo "** l10n-xkb: empty GLOBAL_XKB_VARIANTS/GLOBAL_XKB_KEYMAPS" >&2 + exit 0 +fi + +echo "-option $GLOBAL_XKB_SWITCH${GLOBAL_XKB_LED:+,$GLOBAL_XKB_LED} \ +${GLOBAL_XKB_VARIANTS:+-variant $GLOBAL_XKB_VARIANTS} \ +-layout $GLOBAL_XKB_KEYMAPS" > "$PREFIX"/Xkbmap diff --git a/bld/rootfs/image-scripts.d/50-net-nm b/bld/rootfs/image-scripts.d/50-net-nm new file mode 100755 index 0000000..c5c36d0 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-net-nm @@ -0,0 +1,17 @@ +#!/bin/sh + +. shell-config + +defcfg=/etc/net/ifaces/default/options-eth + +[ -f defcfg ] || exit 0 + +if [ -x /usr/sbin/NetworkManager -o -x /usr/sbin/connmand ]; then + shell_config_set "$defcfg" NM_CONTROLLED yes + shell_config_set "$defcfg" DISABLED yes + if [ NM_Native = 'yes' ]; then + shell_config_set "$defcfg" BOOTPROTO static + else + shell_config_set "$defcfg" BOOTPROTO dhcp + fi +fi diff --git a/bld/rootfs/image-scripts.d/50-net-resolv b/bld/rootfs/image-scripts.d/50-net-resolv new file mode 100755 index 0000000..b52353d --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-net-resolv @@ -0,0 +1,10 @@ +#!/bin/sh +# see also net-dns feature for actual nameserver control + +# purge hasher-provided files potentially disclosing +# build host's network configuration bits +find /var -name resolv.conf -or -name nsswitch.conf -delete + +# hasher might have carried host /etc/hosts over, need to overwrite +echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts +sed -ri "/^(search|nameserver|domain)/d" /etc/resolv.conf diff --git a/bld/rootfs/image-scripts.d/50-ntp b/bld/rootfs/image-scripts.d/50-ntp new file mode 100755 index 0000000..acf4ec1 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-ntp @@ -0,0 +1,10 @@ +#!/bin/sh +# basic NTP client configuration + +. shell-config + +CONFIG="/etc/ntpd.conf" +[ -f "$CONFIG" ] || exit 0 +[ -n "$GLOBAL_NTP_SERVERS" ] || exit 0 + +shell_config_set "$CONFIG" 'servers' "$GLOBAL_NTP_SERVERS" '[[:space:]]\+' ' ' diff --git a/bld/rootfs/image-scripts.d/50-power b/bld/rootfs/image-scripts.d/50-power new file mode 100755 index 0000000..15d82fe --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-power @@ -0,0 +1,6 @@ +#!/bin/sh -efu + +# provide kernel interface for ACPI power button +if [ `arch` != e2k -a -x /etc/init.d/acpid ]; then + grep -qsx button /etc/modules || echo button >> /etc/modules +fi diff --git a/bld/rootfs/image-scripts.d/50-root b/bld/rootfs/image-scripts.d/50-root new file mode 100755 index 0000000..a2bc660 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-root @@ -0,0 +1,16 @@ +#!/bin/sh + +# explicitly requested empty root password +case "$GLOBAL_ROOTPW_EMPTY" in +1|y|Y|yes) + usermod -p "" root + exit 0 + ;; +esac + +# set root password if any; no-op if it is empty +if [ -z "$GLOBAL_ROOTPW" ]; then + echo "** warning: no root password provided, skipping" >&2 +else + echo "$GLOBAL_ROOTPW" | passwd --stdin root +fi diff --git a/bld/rootfs/image-scripts.d/50-users b/bld/rootfs/image-scripts.d/50-users new file mode 100755 index 0000000..0fdf2ec --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-users @@ -0,0 +1,46 @@ +#!/bin/sh +# add regular user(s) assigning passwords and attributes of power + +# NB: care that the utilities exist; shadow-utils is warranted + +add_user() { + useradd -m "$1" && + usermod -p "" "$1" && + if [ -n "$GLOBAL_GROUPS" ]; then # some of them might be missing + for group in $GLOBAL_GROUPS; do + usermod -a --groups "$group" "$1" ||: + done + fi || + echo "*** failed to add user '$1'" +} + +set_password() { echo "$1:$2" | chpasswd; } + +set_admin() { usermod -a --groups "wheel" "$1"; } + +# NB: one must care to purge this from LiveCD if it's installed permanently +set_sudo() { + [ ! -w "/etc/sudoers" ] || + echo "$1 ALL=(ALL) ALL" >> "/etc/sudoers" +} + +# chpasswd is intended for batch use but that would be less comprehensible +[ -z "$GLOBAL_USERS" ] || + echo "$GLOBAL_USERS" \ + | tr ' ' '\n' \ + | while IFS=':' read login passwd admin sudo; do + add_user "$login" + [ -z "$passwd" ] || set_password "$login" "$passwd" + [ -z "$admin" ] || set_admin "$login" + [ -z "$sudo" ] || set_sudo "$login" + done + +# create special user +[ -z "$GLOBAL_SPEC_USER" ] || + echo "$GLOBAL_SPEC_USER" \ + | tr ' ' '\n' \ + | while IFS=':' read login group uid gid homedir shell; do + groupadd -g $gid $group >/dev/null 2>&1 || : + useradd -g $gid -u $uid -d $homedir -s $shell $login >/dev/null 2>&1 || : + usermod -G $group $login || : + done diff --git a/bld/rootfs/image-scripts.d/50-var-run-fix b/bld/rootfs/image-scripts.d/50-var-run-fix new file mode 100755 index 0000000..57a07b3 --- /dev/null +++ b/bld/rootfs/image-scripts.d/50-var-run-fix @@ -0,0 +1,9 @@ +#!/bin/sh + +# this was a bunch of dirty complaints +sed -i 's,/var/run,/run,' /{etc,lib}/tmpfiles.d/*.conf ||: + +[ ! -L /var/run ] && rm -r /var/run && ln -s ../run /var/run +[ ! -L /var/lock ] && rm -r /var/lock && ln -s ../run/lock /var/lock + +: diff --git a/bld/rootfs/image-scripts.d/65-os-release b/bld/rootfs/image-scripts.d/65-os-release new file mode 100755 index 0000000..57a9a2b --- /dev/null +++ b/bld/rootfs/image-scripts.d/65-os-release @@ -0,0 +1,15 @@ +#!/bin/sh +# Install /etc/*-release files if needed +rel_file= +for rel_file in altlinux-release os-release; do + if ! [ -e /etc/"$rel_file" ]; then + # in case it is dangling symlink + rm -f /etc/"$rel_file" + if [ -r /usr/share/branding-data-current/release/"$rel_file" ]; then + cp -at /etc -- \ + /usr/share/branding-data-current/release/"$rel_file" + elif [ -r /usr/lib/"$rel_file" ]; then + cp -a /usr/lib/"$rel_file" /etc/"$rel_file" + fi + fi +done diff --git a/bld/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh b/bld/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh new file mode 100755 index 0000000..c7341fa --- /dev/null +++ b/bld/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh @@ -0,0 +1,10 @@ +#!/bin/sh -efu + +dhcpcd_conf="/etc/dhcpcd.conf" + +[ -f "$dhcpcd_conf" ] || exit 0 + +grep -q '^option[[:blank:]]\+vendor_encapsulated_options' "$dhcpcd_conf" || { + echo "# added by 70-network-shares-dhcpcd.sh" + echo "option vendor_encapsulated_options" +} >> "$dhcpcd_conf" diff --git a/bld/rootfs/image-scripts.d/70-network-shares-nscd.sh b/bld/rootfs/image-scripts.d/70-network-shares-nscd.sh new file mode 100755 index 0000000..1f5a8c7 --- /dev/null +++ b/bld/rootfs/image-scripts.d/70-network-shares-nscd.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# bump name services caching time up + +[ -s /etc/nscd.conf ] || exit 0 + +sed -i 's/\(positive-time-to-live[^0-9]*\)[0-9]*$/\1 31536000/g' /etc/nscd.conf diff --git a/bld/rootfs/image-scripts.d/70-network-shares-samba.sh b/bld/rootfs/image-scripts.d/70-network-shares-samba.sh new file mode 100755 index 0000000..4fc7619 --- /dev/null +++ b/bld/rootfs/image-scripts.d/70-network-shares-samba.sh @@ -0,0 +1,117 @@ +#!/bin/sh -efu + +## +# This script: +# 1) updates pam_mount configuration +# 2) updates pam configuration +# +# NB: network shares automounted only for a particular uid range + +. shell-error + +msg() { + printf "$* \n" +} + +pmconf="/etc/security/pam_mount.conf.xml" +pamconf="/etc/pam.d/system-auth-krb5" + +## +# Update pam_mount configuration file +# +update_pmconf() { + + local insert_at tmp_conf + + tmp_conf="${pmconf}.new" + + # no pam_mount: impossible(tm) + [ -w "$pmconf" ] || return 1 + + # already configured + grep -qs dnssd_lookup "$pmconf" 2>/dev/null && return 0 + + # configure pam_mount to use avahi + insert_at="$(sed -n '//=' "$pmconf" \ + | head -n 1)" + + if [ -z "$insert_at" ]; then + msg "Can't find position for injection in $pmconf" + return 1 + fi + + # part 1 (head) + head -n $((insert_at-1)) "$pmconf" > "$tmp_conf" + + # part 2 (inserted text) + cat >> "$tmp_conf" <<'__EOF__' + + + + +/sbin/mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS) +/sbin/umount.cifs %(MNTPT) + + + +__EOF__ + + # part 3 (tail) + sed -n "$insert_at,\$p" "$pmconf" >> "$tmp_conf" + + # update config + chown root:root "$tmp_conf" + chmod 644 "$tmp_conf" + mv -f "$tmp_conf" "$pmconf" + + # XXX: REMOVE FOR RELEASE + # sed -i -e '/debug enable/ s/0/1/' "$pmconf" +} + +## +# Update pam configuration +# +update_pam() { + local append_after + + # no pam-config: impossible(tm) + [ -w "$pamconf" ] || return 1 + + if [ -L "$pamconf" ]; then + pamconf="$(realpath "$pamconf")" + fi + + # already configured + grep -qs pam_mount "$pamconf" && return 0 + + append_after="$(sed -n '/^auth[[:space:]]\+required/=' "$pamconf" \ + | tail -n 1)" + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a auth optional pam_mount.so" \ + "$pamconf" + + append_after="$(sed -n '/^session[[:space:]]\+required/=' "$pamconf" \ + | tail -n 1)" + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a session optional pam_mount.so" \ + "$pamconf" + append_after="$(sed -n '/^auth[[:space:]]\+required/=' \ + "$pamconf"_ccreds | tail -n 1)" + + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a auth optional pam_mount.so" \ + "$pamconf"_ccreds + + ### set ccache to predicadable value (ouch!) + sed -i 's|pam_krb5.so use_first_pass$|pam_krb5.so use_first_pass ccache=/tmp/krb5cc_%u|' "$pamconf" +} + +## +# Start +# +update_pmconf && +update_pam + diff --git a/bld/rootfs/image-scripts.d/90-firsttime b/bld/rootfs/image-scripts.d/90-firsttime new file mode 100755 index 0000000..b96cf33 --- /dev/null +++ b/bld/rootfs/image-scripts.d/90-firsttime @@ -0,0 +1,3 @@ +#!/bin/sh +# Run scripts from /etc/firsttime.d at first start +[ -f "/etc/firsttime.flag" ] || touch "/etc/firsttime.flag" diff --git a/bld/rootfs/image-scripts.d/90-systemd b/bld/rootfs/image-scripts.d/90-systemd new file mode 100755 index 0000000..31c5159 --- /dev/null +++ b/bld/rootfs/image-scripts.d/90-systemd @@ -0,0 +1,21 @@ +#!/bin/sh + +# the part below relates to systemd as init specifically +rpm -q systemd-sysvinit || exit 0 + +# file str [str...] +# NB: str is also treated as a regex, +# be careful if you copy the function +sub() { + local file="$1" + shift + for i in "$@"; do + grep -q "^$i" "$file" || echo "$i" >> "$file" + done +} + +# tune make-initrd +sub /etc/initrd.mk 'MODULES_TRY_ADD += autofs4' + +# don't allow systemd to set LANG (see also #27408) +sub /etc/locale.conf 'LANG=' diff --git a/bld/rootfs/image-scripts.d/99-systemd-resolved-link b/bld/rootfs/image-scripts.d/99-systemd-resolved-link new file mode 100755 index 0000000..986f0c9 --- /dev/null +++ b/bld/rootfs/image-scripts.d/99-systemd-resolved-link @@ -0,0 +1,10 @@ +#!/bin/sh + +[ -h /sbin/init ] || exit 0 +[ -n "$GLOBAL_SYSTEMD_RESOLVED" ] || exit 0 + +if [ "$GLOBAL_SYSTEMD_RESOLVED" = stub ]; then + ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf +else + ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf +fi diff --git a/bld/rootfs/lib/50-l10n.mk b/bld/rootfs/lib/50-l10n.mk new file mode 100644 index 0000000..77d67d6 --- /dev/null +++ b/bld/rootfs/lib/50-l10n.mk @@ -0,0 +1,15 @@ +# supplement live with keyboard layout setup + +XKB_KEYMAPS := $(subst $(SPACE),$(COMMA),$(XKB_KEYMAPS)) + +# handle the layouts with a specific variant in the wild +XKB_VARIANTS := $(subst ru,winkeys, \ + $(subst ua,winkeys, \ + $(subst be,winkeys, \ + $(subst us,,$(XKB_KEYMAPS))))) + +debug:: + @echo "** live: LOCALES: $(LOCALES)" + @echo "** live: LOCALE: $(LOCALE)" + @echo "** live: XKB_KEYMAPS: $(XKB_KEYMAPS)" + @echo "** live: XKB_VARIANTS: $(XKB_VARIANTS)" diff --git a/bld/rootfs/lib/50-pkgpriorities.mk b/bld/rootfs/lib/50-pkgpriorities.mk new file mode 100644 index 0000000..63848de --- /dev/null +++ b/bld/rootfs/lib/50-pkgpriorities.mk @@ -0,0 +1,26 @@ +_IMAGE_APTBOX_ = $(WORKDIR)/chroot/$(WORKDIRNAME)/aptbox + +# Add prerequisite to the build-image target of +# $(MKIMAGE_PREFIX)/targets.mk. +build-image: $(_IMAGE_APTBOX_)/etc/apt/pkgpriorities + +_PINNED_PACKAGES_ = $(foreach pp,$(PINNED_PACKAGES),$(if $(findstring :,$(pp)),$(pp),$(pp):$(PIN_PRIORITY))) +_PIN_PRIORITIES_ = $(sort $(foreach pp,$(_PINNED_PACKAGES_),$(lastword $(subst :, ,$(pp))))) +_PKGPRIORITIES_ = $(subst \n ,\n,$(foreach pri,$(_PIN_PRIORITIES_),$(pri):$(patsubst %:$(pri),\n %,$(filter %:$(pri),$(_PINNED_PACKAGES_)))\n)) + +$(_IMAGE_APTBOX_)/etc/apt/pkgpriorities: prepare-image-workdir + @echo -e '$(_PKGPRIORITIES_)' | sed -e 's,[[:space:]]\+$$,,' >$@ + @if [ -s $@ ]; then \ + if grep -q '^\(APT::\)\?Dir::Etc::pkgpriorities[[:space:]]' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + then \ + sed -i -e 's,\(Dir::Etc::pkgpriorities\)[[:space:]].*$$,\1 "$@";,g' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + else \ + echo 'Dir::Etc::pkgpriorities "$@";' \ + >>$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + fi; \ + echo "--- Package priorities ---" >&2; \ + cat $@ >&2; \ + echo "---" >&2; \ + fi diff --git a/bld/scripts.d/00-cleanup b/bld/scripts.d/00-cleanup new file mode 100755 index 0000000..a71b290 --- /dev/null +++ b/bld/scripts.d/00-cleanup @@ -0,0 +1,4 @@ +#!/bin/sh +# TODO: invent some way to remove this inter-subprofile thing + +rm -vf $WORKDIR/{squashcfg.mk,initfs,.gitignore} diff --git a/bld/scripts.d/20-propagator-ramdisk-grub b/bld/scripts.d/20-propagator-ramdisk-grub new file mode 100755 index 0000000..569c504 --- /dev/null +++ b/bld/scripts.d/20-propagator-ramdisk-grub @@ -0,0 +1,17 @@ +#!/bin/sh +# postprocess grub configuration +# when the image sizes are finally known +# NB: install2_size, live_size, rescue_size get defined here + +cd "$WORKDIR" +cfg='boot/grub/grub.cfg' + +[ -f "$cfg" ] || exit 0 + +# apply size census while looking for potential squashfs images +find -maxdepth 1 -type f -size +1M \ +| sed 's,^\./,,' \ +| while read image; do + size="$[ $(stat -c%s "$image") / 1024 + 1 ]" + sed -i "s,@${image}_size@,$size," $cfg +done diff --git a/bld/scripts.d/20-propagator-ramdisk-syslinux b/bld/scripts.d/20-propagator-ramdisk-syslinux new file mode 100755 index 0000000..81a8e76 --- /dev/null +++ b/bld/scripts.d/20-propagator-ramdisk-syslinux @@ -0,0 +1,20 @@ +#!/bin/sh +# postprocess isolinux configuration +# when the image sizes are finally known +# NB: install2_size, live_size, rescue_size get defined here + +# validate just in case (see also stage1 Makefile) +if [ -z "$(find $WORKDIR/syslinux/*.cfg)" ]; then + echo "Warning: syslinux/*.cfg not found" + exit 0 +fi + +cd "$WORKDIR" + +# apply size census while looking for potential squashfs images +find -maxdepth 1 -type f -size +1M \ +| sed 's,^\./,,' \ +| while read image; do + size="$[ $(stat -c%s "$image") / 1024 + 1 ]" + sed -i "s,@${image}_size@,$size," syslinux/*.cfg +done diff --git a/bld/scripts.d/20-propagator-rescue-hash-grub b/bld/scripts.d/20-propagator-rescue-hash-grub new file mode 100755 index 0000000..7cb034c --- /dev/null +++ b/bld/scripts.d/20-propagator-rescue-hash-grub @@ -0,0 +1,15 @@ +#!/bin/sh +# postprocess grub configuration +# to add rescue image hash, if any +# (for propagator in forensic mode) + +cd "$WORKDIR" +cfg='boot/grub/grub.cfg' + +[ -f "$cfg" ] || exit 0 + +find -maxdepth 1 -type f -name rescue \ +| while read image; do + rescue_hash="$(sha256sum -b "$image" | cut -f1 -d' ')" + sed -i "s,@rescue_hash@,$rescue_hash," $cfg +done diff --git a/bld/scripts.d/20-propagator-rescue-hash-syslinux b/bld/scripts.d/20-propagator-rescue-hash-syslinux new file mode 100755 index 0000000..74ee375 --- /dev/null +++ b/bld/scripts.d/20-propagator-rescue-hash-syslinux @@ -0,0 +1,20 @@ +#!/bin/sh +# postprocess isolinux configuration +# to add rescue image hash, if any +# (for propagator in forensic mode) + +# validate just in case (see also stage1 Makefile) +if [ -z "$(find $WORKDIR/syslinux/*.cfg)" ]; then + echo "Warning: syslinux/*.cfg not found" + exit 0 +fi + +cd "$WORKDIR" + +grep -qs "@rescue_hash@" syslinux/*.cfg || exit 0 + +find -maxdepth 1 -type f -name rescue \ +| while read image; do + rescue_hash="$(sha256sum -b "$image" | cut -f1 -d' ')" + sed -i "s,@rescue_hash@,$rescue_hash," syslinux/*.cfg +done diff --git a/bld/scripts.d/50-docs-indexhtml b/bld/scripts.d/50-docs-indexhtml new file mode 100755 index 0000000..4fec7a4 --- /dev/null +++ b/bld/scripts.d/50-docs-indexhtml @@ -0,0 +1,46 @@ +#!/bin/sh -e + +# trailing slash is important here +dest="docs/" + +mkdir -p "$WORKDIR/$dest" +cd $WORKDIR + +nonfatal() { echo "** $*" >&2; exit 0; } + +indexdir="/usr/share/doc/indexhtml" +indexfile="$indexdir/index.html" + +[ -s "$indexfile" ] || nonfatal "$indexfile not found" + +[ -n "$GLOBAL_LOCALE" ] || + echo "** warning: GLOBAL_LOCALE empty, fallback to en_US (use/l10n?)">&2 + +LANG="${GLOBAL_LOCALE:-en_US}" indexhtml-update + +# http://unix.stackexchange.com/questions/94185/convert-soft-to-hardlinks +cp -aH "$indexdir" "$dest" + +mkredir() { + cat >"${1}index.html" <<-EOF + + + + Redirecting... + + +

Redirecting...

+ + + EOF +} + +mkredir "" "$dest" # /index.html -> docs/indexhtml/index.html +mkredir "$dest" "" # docs//index.html -> indexhtml/index.html + +docdir="/usr/share/doc/documentation" +[ -d "$docdir" ] || nonfatal "$docdir not found" + +cp -aH "$docdir" "$dest" + +### no need to replace symlinks with hardlinks by now? (-aH) diff --git a/bld/scripts.d/50-docs-license b/bld/scripts.d/50-docs-license new file mode 100755 index 0000000..c22fd78 --- /dev/null +++ b/bld/scripts.d/50-docs-license @@ -0,0 +1,9 @@ +#!/bin/sh +# copy distro's licenses into image's rootdir + +cd /usr/share/alt-notes || exit 0 + +find -maxdepth 1 -type f -name "license*.html" -print | +while read FILE; do + cp -av "$FILE" $WORKDIR/ +done diff --git a/bld/sources.list b/bld/sources.list new file mode 100644 index 0000000..b6e5e9d --- /dev/null +++ b/bld/sources.list @@ -0,0 +1,4 @@ +rpm file:/d/repo/local x86_64 hasher #_home_tema_distronavigator_repo #branding_repo +rpm file:/d/repo/p10/branch x86_64 classic #main_repo_i +rpm file:/d/repo/p10/branch x86_64-i586 classic #main_repo_i +rpm file:/d/repo/p10/branch noarch classic #main_repo_n diff --git a/bld/squashcfg.mk b/bld/squashcfg.mk new file mode 100644 index 0000000..d5ced76 --- /dev/null +++ b/bld/squashcfg.mk @@ -0,0 +1 @@ +PACK_SQUASHFS_OPTS=-no-recovery -comp xz -b 262144 diff --git a/bld/stage1/Makefile b/bld/stage1/Makefile new file mode 100644 index 0000000..6cf1642 --- /dev/null +++ b/bld/stage1/Makefile @@ -0,0 +1,76 @@ +# step 4: build stage1 subprofile (installer bootstrap) + +ifndef GLOBAL_BUILDDIR +$(error GLOBAL_BUILDDIR not defined) +endif + +include $(GLOBAL_BUILDDIR)/distcfg.mk +include $(GLOBAL_BUILDDIR)/functions.mk +include $(MKIMAGE_PREFIX)/config.mk + +ifndef BOOTLOADER +$(error BOOTLOADER not defined) +endif +GLOBAL_BOOTLOADER := $(BOOTLOADER) + +MKI_PACK_RESULTS = data +COPY_TREE = ./files + +include $(MKIMAGE_PREFIX)/targets.mk + +# here we try and come up with the installer kernel/modules, if any; +# only for grub allowed multiple kernels, for other a single kernel +# might be needed (STAGE1_KFLAVOURS sets explicitly); +# kernel image copied from instrumental chroot into .work/boot/ +ifeq (grubpcboot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (grub-efi,$(EFI_BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (ieee1275boot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +STAGE1_KFLAVOURS ?= $(lastword $(KFLAVOURS)) + +# propagator needed iff stage1 kernel installed (not for e.g. syslinux.iso) +ifneq "$(STAGE1_KFLAVOURS)" "" +GLOBAL_STAGE1_KFLAVOURS := $(STAGE1_KFLAVOURS) +CHROOT_PACKAGES_REGEXP := $(call kpackages, \ + $(STAGE1_KFLAVOURS),$(STAGE1_KMODULES),$(STAGE1_KMODULES_REGEXP)) +ifneq "$(STAGE1_MODLISTS))" "" +LIST_MODULES = .work/chroot/.in/modules +PREPARE_MODULES = prepare-modules +endif +endif + +CHROOT_PACKAGES_REGEXP += $(STAGE1_PACKAGES_REGEXP) +CHROOT_PACKAGES = $(STAGE1_PACKAGES) $(SYSTEM_PACKAGES) + +# pass for use/stage2 +GLOBAL_SQUASHFS := $(SQUASHFS) + +-include $(sort $(wildcard lib/*.mk)) + +prepare-modules: + @echo $(foreach V,$(STAGE1_MODLISTS),$(wildcard modules.d/??-$(V))) \ + | xargs -r -- cat >> $(LIST_MODULES) + +# scripts prepare bootloader configuration, too +# NB: we pass tested squashfs options for sub.in/stage2/Makefile to include +all: | debug prepare-workdir copy-tree $(PREPARE_MODULES) run-scripts \ + $(COPY_SQUASHCFG) pack-image $(GLOBAL_CLEAN_WORKDIR) + @if [ -s $(OUTDIR)/squashcfg.mk ]; then \ + cp $(OUTDIR)/squashcfg.mk $(GLOBAL_BUILDDIR)/; \ + fi + +debug: + @if [ -n "$(GLOBAL_VERBOSE)" ]; then \ + echo "** BRANDING: $(BRANDING)"; \ + echo "** IMAGE_INIT_LIST: $(IMAGE_INIT_LIST)"; \ + echo "** STAGE1_PACKAGES: $(STAGE1_PACKAGES)"; \ + echo "** STAGE1_PACKAGES_REGEXP: $(STAGE1_PACKAGES_REGEXP)"; \ + echo "** CHROOT_PACKAGES: $(CHROOT_PACKAGES)"; \ + echo "** CHROOT_PACKAGES_REGEXP: $(CHROOT_PACKAGES_REGEXP)"; \ + echo "** BOOTLOADER: $(BOOTLOADER)"; \ + fi diff --git a/bld/stage1/README b/bld/stage1/README new file mode 100644 index 0000000..8923731 --- /dev/null +++ b/bld/stage1/README @@ -0,0 +1,27 @@ +=== sub.in/stage1 === + +Этот каталог содержит субпрофиль первой стадии загрузки; +здесь место syslinux (загрузчик) и propagator (ориентировка +на местности, вытягивание второй стадии с CD/FTP/...). + +Скрипты запускаются извне формируемого образа (scripts.d/); +следует крайне бережно относиться к объёму этой стадии. + +Обратите внимание: если не указать явно требуемый вариант +ядер посредством STAGE1_KFLAVOURS, то будет взят из KFLAVOURS; +если используется загрузчик отличный от grub, то будет взят +последний указанный в STAGE1_KFLAVOURS или KFLAVOURS; +если не указать явно регэкс, описывающий требуемые в инсталяторе +kernel-modules-*, посредством STAGE1_KMODULES_REGEXP -- будут +доступны модули из kernel-image (упаковываются в boot/full*.cz). + +Сам список модулей, попадающих в full.cz, определяется +в файле modules (наиболее базовые!) и дополняется указанным +в переменной STAGE1_MODLISTS набором списков модулей, см. +features.in/stage2/stage1/modules.d/ в качестве примера. + +Требуется для инсталяционных, live- и rescue-образов, +соответствующими фичами подключается автоматически +(в силу зависимости stage2 от stage1). + +Результат -- каталог syslinux/ для копирования в образ. diff --git a/bld/stage1/files/boot/grub/.in/00defaults.cfg b/bld/stage1/files/boot/grub/.in/00defaults.cfg new file mode 100644 index 0000000..a3e5366 --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/00defaults.cfg @@ -0,0 +1,25 @@ +insmod echo +insmod gzio +insmod minicmd +insmod normal +insmod test +set timeout=60 +if [ "$grub_platform" = "efi" ]; then set EFI_BOOTARGS=' lang=ru_RU'; fi +if [ "$grub_platform" = "efi" -a "$grub_cpu" = "x86_64" ]; then + set linux_suffix='efi' +fi +if [ "$grub_platform" = "pc" ]; then set linux_suffix='16'; fi +lang=ru_RU +if [ ! "$lang" ]; then lang=ru_RU; fi +if [ -s $pfxfat/grubenv ]; then + load_env --file $pfxfat/grubenv + set default="${saved_entry}" +else + set default=@default_id@ +fi +function savedefault { + if [ -z "${boot_once}" -a -s $pfxfat/grubenv ]; then + saved_entry="${chosen}" + save_env --file $pfxfat/grubenv saved_entry + fi +} diff --git a/bld/stage1/files/boot/grub/.in/01gfxterm.cfg b/bld/stage1/files/boot/grub/.in/01gfxterm.cfg new file mode 100644 index 0000000..17400d0 --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/01gfxterm.cfg @@ -0,0 +1,37 @@ +function load_video { + if [ x$feature_all_video_module = xy ]; then + insmod all_video + else + insmod efi_gop + insmod efi_uga + insmod ieee1275_fb + insmod vbe + insmod vga + insmod video_bochs + insmod video_cirrus + fi +} + +font=${prefix}/fonts/unicode.pf2 +if loadfont "$font" ; then + set gfxmode=auto + load_video + insmod gfxterm + terminal_output gfxterm + if [ -d ${prefix}/locale ]; then + set locale_dir=${prefix}/locale + insmod gettext + fi + insmod gfxmenu + insmod jpeg + insmod png + if [ -f ${prefix}/themes/school/theme.txt ]; then + set theme=${prefix}/themes/school/theme.txt; + export theme + fi + set timeout_style=menu + set menu_color_normal=white/black + set menu_color_highlight=black/white + set color_normal=white/black + set color_highlight=black/white +fi diff --git a/bld/stage1/files/boot/grub/.in/10localboot_bios.cfg b/bld/stage1/files/boot/grub/.in/10localboot_bios.cfg new file mode 100644 index 0000000..08c826b --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/10localboot_bios.cfg @@ -0,0 +1,13 @@ +if [ "$grub_platform" = "pc" ]; then + menuentry $"Boot from hard drive" --id 'harddisk' { + insmod part_msdos + insmod chain + set oldroot="$root" + if [ "$root" = hd0 ] + then set root=(hd1) + else set root=(hd0) + fi + chainloader +1 + set root="$oldroot" + } +fi diff --git a/bld/stage1/files/boot/grub/.in/30live.cfg b/bld/stage1/files/boot/grub/.in/30live.cfg new file mode 100644 index 0000000..2196d55 --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/30live.cfg @@ -0,0 +1,9 @@ +menuentry $"LiveCD (no hard disk needed)" --id 'live' { + savedefault + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot live changedisk automatic=method:cdrom,fuid:2021-12-09-16-40-50-00 stagename=live ramdisk_size=@live_size@ showopts lowmem vga=normal usbcore.autosuspend=-1 quiet splash $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/full$KFLAVOUR.cz +} + + diff --git a/bld/stage1/files/boot/grub/.in/32live_rw.cfg b/bld/stage1/files/boot/grub/.in/32live_rw.cfg new file mode 100644 index 0000000..fb3af00 --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/32live_rw.cfg @@ -0,0 +1,7 @@ +menuentry $"LiveCD with sessions support" --id 'session' { + savedefault + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot live changedisk automatic=method:cdrom,fuid:2021-12-09-16-40-50-00 stagename=live ramdisk_size=@live_size@ showopts live_rw vga=normal usbcore.autosuspend=-1 quiet splash $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/full$KFLAVOUR.cz +} diff --git a/bld/stage1/files/boot/grub/.in/86lang.cfg b/bld/stage1/files/boot/grub/.in/86lang.cfg new file mode 100644 index 0000000..652d66a --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/86lang.cfg @@ -0,0 +1,14 @@ +submenu $"Change language (press F2)" --hotkey 'f2' --id 'lang' { + insmod regexp + for langstr in "ru_RU=Russian" "en_US=English" "pt_BR=Portuguese" "kk_KZ=Kazakh" "uk_UA=Ukrainian"; do + regexp -s 2:langname -s 1:langcode '(.*)=(.*)' "$langstr" + menuentry "${langname}" "$langcode" { + lang="$2" + export lang + configfile ${prefix}/grub.cfg + } + done + menuentry $"Return to the Main menu" { + configfile ${prefix}/grub.cfg + } +} diff --git a/bld/stage1/files/boot/grub/.in/90memtest_bios.cfg b/bld/stage1/files/boot/grub/.in/90memtest_bios.cfg new file mode 100644 index 0000000..02e24e4 --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/90memtest_bios.cfg @@ -0,0 +1,5 @@ +if [ "$grub_platform" = "pc" ]; then + menuentry $"Memory Test" --id 'memtest' { + linux16 /boot/memtest.bin + } +fi diff --git a/bld/stage1/files/boot/grub/.in/95fwsetup_efi.cfg b/bld/stage1/files/boot/grub/.in/95fwsetup_efi.cfg new file mode 100644 index 0000000..e0bb16f --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/95fwsetup_efi.cfg @@ -0,0 +1,5 @@ +if [ "$grub_platform" = "efi" ]; then + menuentry $"UEFI Firmware Settings" --id 'uefi-firmware' { + fwsetup + } +fi diff --git a/bld/stage1/files/boot/grub/.in/grub.list b/bld/stage1/files/boot/grub/.in/grub.list new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bld/stage1/files/boot/grub/.in/grub.list @@ -0,0 +1 @@ + diff --git a/bld/stage1/files/index.html b/bld/stage1/files/index.html new file mode 100644 index 0000000..d480098 --- /dev/null +++ b/bld/stage1/files/index.html @@ -0,0 +1,10 @@ + + + +Welcome to ALT! + + +

Welcome to ALT!

+

You will be redirected to the home page shortly.

+ + diff --git a/bld/stage1/files/syslinux/.in/00defaults.cfg b/bld/stage1/files/syslinux/.in/00defaults.cfg new file mode 100644 index 0000000..97e1fc2 --- /dev/null +++ b/bld/stage1/files/syslinux/.in/00defaults.cfg @@ -0,0 +1,2 @@ +timeout 600 +totaltimeout 3000 diff --git a/bld/stage1/files/syslinux/.in/01gfxboot.cfg b/bld/stage1/files/syslinux/.in/01gfxboot.cfg new file mode 100644 index 0000000..59a4bff --- /dev/null +++ b/bld/stage1/files/syslinux/.in/01gfxboot.cfg @@ -0,0 +1,4 @@ +ui gfxboot bootlogo message +menu title ALT (alt-p10-kde5) +prompt 0 + diff --git a/bld/stage1/files/syslinux/.in/10localboot.cfg b/bld/stage1/files/syslinux/.in/10localboot.cfg new file mode 100644 index 0000000..59ee2db --- /dev/null +++ b/bld/stage1/files/syslinux/.in/10localboot.cfg @@ -0,0 +1,3 @@ +label harddisk + localboot -2 + diff --git a/bld/stage1/files/syslinux/.in/30live.cfg b/bld/stage1/files/syslinux/.in/30live.cfg new file mode 100644 index 0000000..8be25dc --- /dev/null +++ b/bld/stage1/files/syslinux/.in/30live.cfg @@ -0,0 +1,4 @@ +label live + kernel /boot/vmlinuz + append initrd=/boot/full.cz fastboot live changedisk automatic=method:cdrom,fuid:2021-12-09-16-40-50-00 stagename=live ramdisk_size=@live_size@ showopts lowmem vga=normal usbcore.autosuspend=-1 quiet splash + diff --git a/bld/stage1/files/syslinux/.in/32live_rw.cfg b/bld/stage1/files/syslinux/.in/32live_rw.cfg new file mode 100644 index 0000000..f2ef9bc --- /dev/null +++ b/bld/stage1/files/syslinux/.in/32live_rw.cfg @@ -0,0 +1,4 @@ +label session + kernel /boot/vmlinuz + append initrd=/boot/full.cz fastboot live changedisk automatic=method:cdrom,fuid:2021-12-09-16-40-50-00 stagename=live ramdisk_size=@live_size@ showopts live_rw vga=normal usbcore.autosuspend=-1 quiet splash + diff --git a/bld/stage1/files/syslinux/.in/90memtest.cfg b/bld/stage1/files/syslinux/.in/90memtest.cfg new file mode 100644 index 0000000..1ea580b --- /dev/null +++ b/bld/stage1/files/syslinux/.in/90memtest.cfg @@ -0,0 +1,3 @@ +label memtest + linux /boot/memtest.bin + diff --git a/bld/stage1/files/syslinux/.in/modules.list b/bld/stage1/files/syslinux/.in/modules.list new file mode 100644 index 0000000..20e1f03 --- /dev/null +++ b/bld/stage1/files/syslinux/.in/modules.list @@ -0,0 +1 @@ +gfxboot diff --git a/bld/stage1/files/syslinux/.in/syslinux.list b/bld/stage1/files/syslinux/.in/syslinux.list new file mode 100644 index 0000000..1dfb552 --- /dev/null +++ b/bld/stage1/files/syslinux/.in/syslinux.list @@ -0,0 +1 @@ +/usr/lib/syslinux/pxelinux.0 diff --git a/bld/stage1/initfs b/bld/stage1/initfs new file mode 100644 index 0000000..59905b8 --- /dev/null +++ b/bld/stage1/initfs @@ -0,0 +1 @@ +file /.VERSION @TMPDIR@/.VERSION 0644 0 0 diff --git a/bld/stage1/lib/50branding.mk b/bld/stage1/lib/50branding.mk new file mode 100644 index 0000000..dd4cb59 --- /dev/null +++ b/bld/stage1/lib/50branding.mk @@ -0,0 +1 @@ +CHROOT_PACKAGES_REGEXP += $(call branding,$(STAGE1_BRANDING)) diff --git a/bld/stage1/modules b/bld/stage1/modules new file mode 100644 index 0000000..54814ad --- /dev/null +++ b/bld/stage1/modules @@ -0,0 +1,19 @@ +kernel/lib +kernel/drivers/crypto +kernel/drivers/rtc +arc4.ko +aufs.ko +overlay.ko +cdrom.ko +evdev.ko +ext4.ko +isofs.ko +loop.ko +md4.ko +serio_raw.ko +scsi_mod.ko +sd_mod.ko +sha256-ssse3.ko +squashfs.ko +sr_mod.ko +usbhid.ko diff --git a/bld/stage1/modules.d/10-stage2 b/bld/stage1/modules.d/10-stage2 new file mode 100644 index 0000000..917e06b --- /dev/null +++ b/bld/stage1/modules.d/10-stage2 @@ -0,0 +1,208 @@ +# a copy of the old static modules file for compatibility +kernel/drivers/ata +kernel/drivers/block +kernel/drivers/crypto +kernel/drivers/gpu/drm +kernel/drivers/hid +kernel/drivers/md +kernel/drivers/net/\([^w]\|w[^i]\).\+\.ko +kernel/drivers/rtc +kernel/drivers/scsi +kernel/drivers/usb/host +kernel/drivers/usb/storage +kernel/drivers/virtio +kernel/lib +3c574_cs.ko +3c589_cs.ko +3c59x.ko +3w-9xxx.ko +3w-xxxx.ko +8139too.ko +8390.ko +a100u2w.ko +aacraid.ko +acenic.ko +advansys.ko +af_packet.ko +aic7xxx.ko +amd8111e.ko +arc4.ko +ata_piix.ko +atl1.ko +atl1e.ko +atl2.ko +atp870u.ko +atp.ko +aufs.ko +overlay.ko +axnet_cs.ko +b44.ko +bnx2.ko +bsd_comp.ko +BusLogic.ko +cassini.ko +catc.ko +cciss.ko +cdrom.ko +ch.ko +cifs.ko +cmac.ko. +DAC960.ko +dc395x.ko +de4x5.ko +defxx.ko +dl2k.ko +dmfe.ko +dmx3191d.ko +dpt_i2o.ko +e1000.ko +e1000e.ko +e100.ko +eata.ko +ehci-hcd.ko +ehci_marvell.ko +epic100.ko +eql.ko +ext2.ko +ext3.ko +ext4.ko +fat.ko +fdomain.ko +fealnx.ko +fmvj18x_cs.ko +forcedeth.ko +gdth.ko +hamachi.ko +hp100.ko +hptiop.ko +i82092.ko +ifb.ko +imm.ko +initio.ko +ipr.ko +ips.ko +iscsi_tcp.ko +isofs.ko +kaweth.ko +libata.ko +libiscsi.ko +lockd.ko +loop.ko +md4.ko +megaraid.ko +megaraid_mbox.ko +mii.ko +natsemi.ko +ne2k-pci.ko +netconsole.ko +nfs.ko +nfsv2.ko +nfsv3.ko +nfsv4.ko +nls_base.ko +nls_cp866.ko +nls_koi8-r.ko +nmclan_cs.ko +ns83820.ko +ohci-hcd.ko +osst.ko +pata_it8213.ko +pata_marvell.ko +pcmcia_core.ko +pcmcia.ko +pcnet32.ko +pcnet_cs.ko +pd6729.ko +pdc_adma.ko +pegasus.ko +plip.ko +ppa.ko +ppp_async.ko +ppp_deflate.ko +ppp_generic.ko +ppp_mppe.ko +pppoe.ko +pppox.ko +ppp_synctty.ko +qla1280.ko +r8169.ko +raid_class.ko +reiserfs.ko +rrunner.ko +s2io.ko +sata_mv.ko +sata_nv.ko +sata_promise.ko +sata_qstor.ko +sata_sil24.ko +sata_sil.ko +sata_sis.ko +sata_svw.ko +sata_sx4.ko +sata_uli.ko +sata_via.ko +sata_vsc.ko +sb1000.ko +scsi_mod.ko +scsi_transport_fc.ko +scsi_transport_iscsi.ko +scsi_transport_sas.ko +scsi_transport_spi.ko +sd_mod.ko +serial_cs.ko +sg.ko +sha256-ssse3.ko +sis190.ko +sis900.ko +skge.ko +sky2.ko +slhc.ko +slip.ko +smc91c92_cs.ko +squashfs.ko +sr_mod.ko +starfire.ko +stex.ko +st.ko +sundance.ko +sungem.ko +sungem_phy.ko +sunhme.ko +sunrpc.ko +sym53c8xx.ko +tg3.ko +tlan.ko +tulip.ko +tun.ko +typhoon.ko +uhci-hcd.ko +usbcore.ko +usbhid.ko +usbnet.ko +usb-libusual.ko +usb-storage.ko +vfat.ko +via-rhine.ko +via-velocity.ko +winbond-840.ko +xirc2ps_cs.ko +xircom_cb.ko +yellowfin.ko +yenta_socket.ko +ahci.ko +dm-mod.ko +evdev.ko +ext2.ko +mbcache.ko +nls_cp866.ko +nls_koi8-r.ko +nls_utf8.ko +scsi_mod.ko +sd_mod.ko +serio_raw.ko +sr_mod.ko +sdhci.ko +sdhci-pci.ko +xhci-hcd.ko +xhci-pci.ko +uas.ko diff --git a/bld/stage1/modules.d/50-l10n b/bld/stage1/modules.d/50-l10n new file mode 100644 index 0000000..7889b8c --- /dev/null +++ b/bld/stage1/modules.d/50-l10n @@ -0,0 +1,6 @@ +# l10n +nls_base.ko +nls_cp866.ko +nls_koi8-r.ko +nls_utf8.ko +# diff --git a/bld/stage1/modules.d/50-net b/bld/stage1/modules.d/50-net new file mode 100644 index 0000000..7365d5e --- /dev/null +++ b/bld/stage1/modules.d/50-net @@ -0,0 +1,6 @@ +# net +kernel/drivers/net/mii.ko +kernel/drivers/net/phy +kernel/drivers/net/ethernet +kernel/drivers/net/usb +# diff --git a/bld/stage1/modules.d/50-stage2-ata b/bld/stage1/modules.d/50-stage2-ata new file mode 100644 index 0000000..fb9d567 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-ata @@ -0,0 +1,21 @@ +kernel/drivers/ata +kernel/drivers/block +ahci.ko +ahci_platform.ko +ata_piix.ko +libata.ko +pata_it8213.ko +pata_marvell.ko +pdc_adma.ko +sata_mv.ko +sata_nv.ko +sata_promise.ko +sata_qstor.ko +sata_sil.ko +sata_sil24.ko +sata_sis.ko +sata_svw.ko +sata_sx4.ko +sata_uli.ko +sata_via.ko +sata_vsc.ko diff --git a/bld/stage1/modules.d/50-stage2-drm b/bld/stage1/modules.d/50-stage2-drm new file mode 100644 index 0000000..9efbd2d --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-drm @@ -0,0 +1 @@ +kernel/drivers/gpu/drm diff --git a/bld/stage1/modules.d/50-stage2-fs b/bld/stage1/modules.d/50-stage2-fs new file mode 100644 index 0000000..52dbc6c --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-fs @@ -0,0 +1,10 @@ +exfat.ko +ext2.ko +ext3.ko +ext4.ko +fat.ko +mbcache.ko +ntfs.ko +fuse.ko +reiserfs.ko +vfat.ko diff --git a/bld/stage1/modules.d/50-stage2-hid b/bld/stage1/modules.d/50-stage2-hid new file mode 100644 index 0000000..24f516f --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-hid @@ -0,0 +1 @@ +kernel/drivers/hid diff --git a/bld/stage1/modules.d/50-stage2-md b/bld/stage1/modules.d/50-stage2-md new file mode 100644 index 0000000..68ae216 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-md @@ -0,0 +1,2 @@ +kernel/drivers/md +dm-mod.ko diff --git a/bld/stage1/modules.d/50-stage2-mmc b/bld/stage1/modules.d/50-stage2-mmc new file mode 100644 index 0000000..39b7c34 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-mmc @@ -0,0 +1,7 @@ +iosf_mbi.ko +mmc_block.ko +mmc_core.ko +sdhci-acpi.ko +sdhci-pci.ko +sdhci-pltfm.ko +sdhci.ko diff --git a/bld/stage1/modules.d/50-stage2-net b/bld/stage1/modules.d/50-stage2-net new file mode 100644 index 0000000..4f90db1 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-net @@ -0,0 +1,81 @@ +kernel/drivers/net/\([^w]\|w[^i]\).\+\.ko +kernel/drivers/net/ethernet +3c574_cs.ko +3c589_cs.ko +3c59x.ko +8139too.ko +8390.ko +acenic.ko +af_packet.ko +amd8111e.ko +atl1.ko +atl1e.ko +atl2.ko +atp.ko +axnet_cs.ko +b44.ko +bnx2.ko +bsd_comp.ko +cassini.ko +catc.ko +de4x5.ko +defxx.ko +dl2k.ko +dmfe.ko +e100.ko +e1000.ko +e1000e.ko +epic100.ko +eql.ko +fealnx.ko +fmvj18x_cs.ko +forcedeth.ko +hamachi.ko +hp100.ko +ifb.ko +kaweth.ko +mii.ko +natsemi.ko +ne2k-pci.ko +netconsole.ko +nmclan_cs.ko +ns83820.ko +pcnet32.ko +pcnet_cs.ko +pegasus.ko +plip.ko +ppp_async.ko +ppp_deflate.ko +ppp_generic.ko +ppp_mppe.ko +ppp_synctty.ko +pppoe.ko +pppox.ko +r8169.ko +rrunner.ko +s2io.ko +sb1000.ko +sis190.ko +sis900.ko +skge.ko +sky2.ko +slhc.ko +slip.ko +smc91c92_cs.ko +starfire.ko +sundance.ko +sungem.ko +sungem_phy.ko +sunhme.ko +tg3.ko +tlan.ko +tulip.ko +tun.ko +typhoon.ko +usbnet.ko +via-rhine.ko +via-velocity.ko +winbond-840.ko +xirc2ps_cs.ko +xircom_cb.ko +yellowfin.ko diff --git a/bld/stage1/modules.d/50-stage2-net-cifs b/bld/stage1/modules.d/50-stage2-net-cifs new file mode 100644 index 0000000..6d67413 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-net-cifs @@ -0,0 +1,2 @@ +cifs.ko +cmac.ko diff --git a/bld/stage1/modules.d/50-stage2-net-nfs b/bld/stage1/modules.d/50-stage2-net-nfs new file mode 100644 index 0000000..605c219 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-net-nfs @@ -0,0 +1,6 @@ +lockd.ko +nfs.ko +nfsv2.ko +nfsv3.ko +nfsv4.ko +sunrpc.ko diff --git a/bld/stage1/modules.d/50-stage2-pcmcia b/bld/stage1/modules.d/50-stage2-pcmcia new file mode 100644 index 0000000..ab5c663 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-pcmcia @@ -0,0 +1,6 @@ +i82092.ko +pcmcia.ko +pcmcia_core.ko +pd6729.ko +serial_cs.ko +yenta_socket.ko diff --git a/bld/stage1/modules.d/50-stage2-rtc b/bld/stage1/modules.d/50-stage2-rtc new file mode 100644 index 0000000..8b43c21 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-rtc @@ -0,0 +1 @@ +kernel/drivers/rtc diff --git a/bld/stage1/modules.d/50-stage2-sbc-aarch64 b/bld/stage1/modules.d/50-stage2-sbc-aarch64 new file mode 100644 index 0000000..a124024 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-sbc-aarch64 @@ -0,0 +1,9 @@ +kernel/drivers/dma +kernel/drivers/mmc/host +kernel/drivers/regulator +kernel/drivers/soc +kernel/drivers/usb/dwc2 +kernel/drivers/usb/dwc3 +kernel/drivers/usb/phy +kernel/drivers/usb/host +kernel/drivers/usb/musb diff --git a/bld/stage1/modules.d/50-stage2-scsi b/bld/stage1/modules.d/50-stage2-scsi new file mode 100644 index 0000000..416fe1e --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-scsi @@ -0,0 +1,40 @@ +kernel/drivers/scsi +3w-9xxx.ko +3w-xxxx.ko +BusLogic.ko +DAC960.ko +a100u2w.ko +aacraid.ko +advansys.ko +aic7xxx.ko +atp870u.ko +cciss.ko +ch.ko +dc395x.ko +dmx3191d.ko +dpt_i2o.ko +eata.ko +fdomain.ko +gdth.ko +hptiop.ko +imm.ko +initio.ko +ipr.ko +ips.ko +iscsi_tcp.ko +libiscsi.ko +megaraid.ko +megaraid_mbox.ko +osst.ko +ppa.ko +qla1280.ko +raid_class.ko +scsi_mod.ko +scsi_transport_fc.ko +scsi_transport_iscsi.ko +scsi_transport_sas.ko +scsi_transport_spi.ko +sg.ko +st.ko +stex.ko +sym53c8xx.ko diff --git a/bld/stage1/modules.d/50-stage2-usb b/bld/stage1/modules.d/50-stage2-usb new file mode 100644 index 0000000..77d44a6 --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-usb @@ -0,0 +1,16 @@ +kernel/drivers/usb/host +kernel/drivers/usb/storage +ehci-fsl.ko +ehci-hcd.ko +ehci-pci.ko +ehci-platform.ko +ohci-hcd.ko +ohci-platform.ko +uas.ko +uhci-hcd.ko +usb-storage.ko +usbcore.ko +xhci-hcd.ko +xhci-pci.ko +xhci-pci-renesas.ko +xhci-plat-hcd.ko diff --git a/bld/stage1/modules.d/50-stage2-virtio b/bld/stage1/modules.d/50-stage2-virtio new file mode 100644 index 0000000..e14d2db --- /dev/null +++ b/bld/stage1/modules.d/50-stage2-virtio @@ -0,0 +1,2 @@ +kernel/drivers/virtio +kernel/drivers/char/virtio_console diff --git a/bld/stage1/modules.d/50-vmguest b/bld/stage1/modules.d/50-vmguest new file mode 100644 index 0000000..c76fef5 --- /dev/null +++ b/bld/stage1/modules.d/50-vmguest @@ -0,0 +1,6 @@ +# vmguest +kernel/drivers/virtio +vmxnet3.ko +hv_netvsc.ko +virtio_net.ko +# diff --git a/bld/stage1/scripts.d/01-grub b/bld/stage1/scripts.d/01-grub new file mode 100755 index 0000000..555ff6f --- /dev/null +++ b/bld/stage1/scripts.d/01-grub @@ -0,0 +1,88 @@ +#!/bin/sh +# gather grub configuration from snippets; +# copy modules; see also this feature's generate.mk + +CFG="$WORKDIR/boot/grub/grub.cfg" + +if [ "$GLOBAL_EFI_BOOTLOADER" != 'grub-efi' ]; then + case "$GLOBAL_BOOTLOADER" in + ieee1275boot|grubpcboot) ;; + *) rm -fr "$WORKDIR/boot" + exit 0;; + esac +fi + +cd "$WORKDIR/boot/grub" + +# copy extra files, if any +GRUB_FILES="$(cat .in/grub.list)" +if [ -n "${GRUB_FILES% }" ]; then + cp -a $GRUB_FILES . +fi + +# number ordering sponsored by shell's pathname expansion +grep -hv '^#' $(find .in/*.cfg) > "$CFG" + +# there should be DEFAULT directive there (at least for alterator-netinst) +default_change() { +local CFG=$1 +if [ -n "$GLOBAL_GRUB_DEFAULT" ]; then + if [ -n "$(grep -i "$GLOBAL_GRUB_DEFAULT" "$CFG")" ]; then + DEFAULT="$GLOBAL_GRUB_DEFAULT" + else + echo "error: $GLOBAL_GRUB_DEFAULT missing in $CFG" >&2 + exit 1 + fi +else + grep -i '\-\-id ' "$CFG" | grep 'linux' && DEFAULT=linux +fi +sed -i "s/@default_id@/$DEFAULT/" "$CFG" +} + +default_change "$CFG" + +# snippets are not going into the actual image +if [ "$DEBUG" != 2 ]; then + rm -r .in/ +fi + +# change kernels version for multiple kernels only +if [ $(echo "$GLOBAL_KFLAVOURS" | wc -w) -gt 1 ]; then + kver= + echo $GLOBAL_KFLAVOURS + for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" + done + + sed -i "s,@KFLAVOUR@,$kver,g" $CFG +fi + +# copy grub theme +mkdir -p themes +GRUBTHEME="$(grep -m1 '/theme.txt;' "$CFG" |rev | cut -f2 -d '/' |rev)" +if [ -n "$GRUBTHEME" ]; then + if [ -d "/boot/grub/themes/$GRUBTHEME" ]; then + cp -r /boot/grub/themes/$GRUBTHEME themes/ + else + echo "Error: Directory /boot/grub/themes/$GRUBTHEME not exist" + exit 1 + fi +fi + +# copy grub locale +mkdir -p locale +if [ ! -e "$boot/locale" -a -f "$CFG" ]; then + langs=$(grep -oP "([a-z]{2})(?=_[A-Z]{2})" "$CFG" | sort | uniq) + for i in $langs; do + fp="/usr/share/locale/$i/LC_MESSAGES/grub.mo" + [ -f $fp ] && cp -arf "$fp" "locale/$i.mo" + done +fi + +exit 0 + +# NB: there will be final macro expansion based on actual image sizes +# done by features.in/grub/scripts.d/20-propagator-ramdisk-grub diff --git a/bld/stage1/scripts.d/01-initfs b/bld/stage1/scripts.d/01-initfs new file mode 100755 index 0000000..1a4a04f --- /dev/null +++ b/bld/stage1/scripts.d/01-initfs @@ -0,0 +1,2 @@ +#!/bin/sh +echo "file /.VERSION @TMPDIR@/.VERSION 0644 0 0" >"$WORKDIR"/initfs diff --git a/bld/stage1/scripts.d/01-syslinux b/bld/stage1/scripts.d/01-syslinux new file mode 100755 index 0000000..cd349cb --- /dev/null +++ b/bld/stage1/scripts.d/01-syslinux @@ -0,0 +1,63 @@ +#!/bin/sh +# gather syslinux configuration from snippets; +# copy modules; see also this feature's generate.mk + +MODDIR="/usr/lib/syslinux" + +case "$GLOBAL_BOOTLOADER" in + isolinux|syslinux) CFG="$GLOBAL_BOOTLOADER.cfg";; + *) CFG="isolinux.cfg";; +esac + +cd "$WORKDIR/syslinux" + +# number ordering sponsored by shell's pathname expansion +grep -hv '^#' .in/[0-9][0-9]*.cfg > "$CFG" + +# there should be DEFAULT directive there (at least for alterator-netinst) +if [ -n "$GLOBAL_SYSLINUX_DEFAULT" ]; then + if [ -n "$(grep -i "^label $GLOBAL_SYSLINUX_DEFAULT" "$CFG")" ]; then + DEFAULT="$GLOBAL_SYSLINUX_DEFAULT" + sed -i '/^default/d' + echo "default $DEFAULT" >> "$CFG" + else + echo "error: $GLOBAL_SYSLINUX_DEFAULT missing in $CFG" >&2 + exit 1 + fi +fi +if ! grep -i '^default' "$CFG"; then + DEFAULT="$(grep -i '^label ' "$CFG" | head -1 | cut -f2 -d' ')" + if [ -n "$DEFAULT" ]; then + echo "default $DEFAULT" >> "$CFG" + else + echo "error: no DEFAULT or UI directive and cannot guess" >&2 + exit 1 + fi +fi + +# validate just in case (see also stage1 Makefile) +case "$GLOBAL_BOOTLOADER" in + isolinux|syslinux) ;; + *) exit 0;; +esac + +# copy extra files, if any +SYSLINUX_FILES="$(cat .in/syslinux.list)" +if [ -n "${SYSLINUX_FILES% }" ]; then + cp -a $SYSLINUX_FILES . +fi + +# prune module-specific config snippets; skip built-in one +SYSLINUX_MODULES="$(cat .in/modules.list)" +if [ -n "$SYSLINUX_MODULES" ]; then + for module in $SYSLINUX_MODULES; do + if [ "$modules" == "prompt" ]; then continue; fi + cp -a $MODDIR/$module.c?? . || rm .in/[0-9][0-9]$module.cfg + done +fi + +# snippets are not going into the actual image +if [ "$DEBUG" != 2 ]; then rm -r .in/; fi + +# NB: there will be final macro expansion based on actual image sizes +# done by features.in/syslinux/scripts.d/20-propagator-ramdisk diff --git a/bld/stage1/scripts.d/02-gfxboot b/bld/stage1/scripts.d/02-gfxboot new file mode 100755 index 0000000..f4bde1d --- /dev/null +++ b/bld/stage1/scripts.d/02-gfxboot @@ -0,0 +1,31 @@ +#!/bin/sh + +# validate just in case (see also stage1 Makefile) +if [ ! -f "$WORKDIR/syslinux/$GLOBAL_BOOTLOADER.cfg" ]; then + echo "Warning: syslinux/*.cfg not found" + exit 0 +fi + +gfxboot_datadir=/usr/share/gfxboot + +if [ ! -d "$gfxboot_datadir" ]; then + echo "** $gfxboot_datadir not found" >&2 + exit 0 +fi + +bootlogo="`ls $gfxboot_datadir/*/bootlogo | head -1`" ### + +if [ ! -f "$bootlogo" ]; then + echo "** bootlogo not found" >&2 + ls -alR $gfxboot_datadir + exit 0 +fi + +cd "$WORKDIR/syslinux" + +# unpack +cpio -iduV <"$bootlogo" + +# pack +printf 'init\nlanguages\n' | + cpio -oV >bootlogo diff --git a/bld/stage1/scripts.d/02-memtest b/bld/stage1/scripts.d/02-memtest new file mode 100755 index 0000000..98a4d58 --- /dev/null +++ b/bld/stage1/scripts.d/02-memtest @@ -0,0 +1,7 @@ +#!/bin/sh + +mkdir -p "$WORKDIR"/boot +MEMTEST="$(find /boot/ -name 'memtest*' -print -quit)" +# hdt wiki recommends adding .bin +[ -z "$MEMTEST" ] || + cp -f "$MEMTEST" "$WORKDIR"/boot/memtest.bin diff --git a/bld/stage1/scripts.d/03-test-kernel b/bld/stage1/scripts.d/03-test-kernel new file mode 100755 index 0000000..f8af561 --- /dev/null +++ b/bld/stage1/scripts.d/03-test-kernel @@ -0,0 +1,58 @@ +#!/bin/sh +# NB: -f prohibited in this shebang +# check relevant kernel features availability + +CONFIGS=/boot/config-* +GZ_OPTS="-comp gzip" +XZ_OPTS="-comp xz" +LZO_OPTS="-comp lzo" + +verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "** $@" >&2; } +fatal() { echo "** error: $@" >&2; exit 1; } + +configured() +{ + local option="CONFIG_$1" + if grep -q "^$option" $CONFIGS; then + verbose "${option%=*} available" + return 0 + else + return 1 + fi +} + +ls $CONFIGS >&/dev/null || fatal "no stage1 kernel config found in /boot" + +# test for installer-required filesystems support +configured "OVERLAY_FS=[my]" || configured "AUFS_FS=[my]" || + echo fatal "stage1 kernel must support overlayfs or aufs" + +for opt in SQUASHFS $GLOBAL_STAGE1_KCONFIG; do + configured "$opt=[my]" || fatal "stage1 kernel must have $opt support" +done + +verbose "GLOBAL_SQUASHFS: $GLOBAL_SQUASHFS" + +options() +{ + # squashfs options: not really neccessary but better than none + # NB: this config file should be carried over into install2 + if [ "$GLOBAL_SQUASHFS" != "fast" ] && configured "SQUASHFS_XZ=y"; then + # NB: the decompression filter overhead might hurt + # NB: there are arm, powerpc and some other filters too + if [ "$GLOBAL_SQUASHFS" = "tight" ] && configured "X86"; then + XZ_OPTS="$XZ_OPTS -b 524288 -Xbcj x86" + else + XZ_OPTS="$XZ_OPTS -b 262144" + fi + echo "$XZ_OPTS" + else # go fast, or even faster if possible + if configured "SQUASHFS_LZO=y"; then + echo "$LZO_OPTS" + else # safe default + echo "$GZ_OPTS" + fi + fi +} + +echo "PACK_SQUASHFS_OPTS=-no-recovery `options`" > /.image/squashcfg.mk diff --git a/bld/stage1/scripts.d/11-initrd-misc b/bld/stage1/scripts.d/11-initrd-misc new file mode 100755 index 0000000..305574d --- /dev/null +++ b/bld/stage1/scripts.d/11-initrd-misc @@ -0,0 +1,4 @@ +#!/bin/sh + +# FIXME: move somewhere else +#echo 'FEATURES += nfs' >> /etc/initrd.mk diff --git a/bld/stage1/scripts.d/11-initrd-plymouth b/bld/stage1/scripts.d/11-initrd-plymouth new file mode 100755 index 0000000..dee8921 --- /dev/null +++ b/bld/stage1/scripts.d/11-initrd-plymouth @@ -0,0 +1,7 @@ +#!/bin/sh +CONFIG=/etc/plymouth/plymouthd.conf + +if [ -f "$CONFIG" ]; then + grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG" + echo 'FEATURES += plymouth' >> /etc/initrd.mk +fi diff --git a/bld/stage1/scripts.d/11-initrd-propagator b/bld/stage1/scripts.d/11-initrd-propagator new file mode 100755 index 0000000..5022d30 --- /dev/null +++ b/bld/stage1/scripts.d/11-initrd-propagator @@ -0,0 +1,7 @@ +#!/bin/sh +# see also http://www.altlinux.org/Make-initrd-propagator + +echo 'FEATURES += propagator' >> /etc/initrd.mk + +# FIXME: #29705 workaround +echo 'MODULES_PRELOAD += ahci' >> /etc/initrd.mk diff --git a/bld/stage1/scripts.d/20-initrd-cdrom b/bld/stage1/scripts.d/20-initrd-cdrom new file mode 100755 index 0000000..0523f78 --- /dev/null +++ b/bld/stage1/scripts.d/20-initrd-cdrom @@ -0,0 +1,9 @@ +#!/bin/sh +# add 60-cdrom_id.rules to identify CD/DVD by UUID +# if it's available + +if [ -f /lib/udev/rules.d/60-cdrom_id.rules ]; then + echo "PUT_FILES += /lib/udev/rules.d/60-cdrom_id.rules" >> /etc/initrd.mk +else + echo "uuid-iso, 20-initrd-cdrom: skipping 60-cdrom_id.rules (missing)" +fi diff --git a/bld/stage1/scripts.d/20-initrd-cifs b/bld/stage1/scripts.d/20-initrd-cifs new file mode 100755 index 0000000..1f36197 --- /dev/null +++ b/bld/stage1/scripts.d/20-initrd-cifs @@ -0,0 +1,9 @@ +#!/bin/sh +# add mount.cifs to for get image from samba server +# if it's available + +if [ -f /sbin/mount.cifs ]; then + echo "PUT_FILES += /sbin/mount.cifs" >> /etc/initrd.mk +else + echo "20-initrd-cifs: skipping mount.cifs (missing)" +fi diff --git a/bld/stage1/scripts.d/40-propagator-fuid-file b/bld/stage1/scripts.d/40-propagator-fuid-file new file mode 100755 index 0000000..4a57489 --- /dev/null +++ b/bld/stage1/scripts.d/40-propagator-fuid-file @@ -0,0 +1,5 @@ +#!/bin/sh +# add file named as UUID for use with fuid option in propagator + +cd "$WORKDIR" +touch $GLOBAL_UUID_ISO diff --git a/bld/stage1/scripts.d/50-disable-nvidia b/bld/stage1/scripts.d/50-disable-nvidia new file mode 100755 index 0000000..f485525 --- /dev/null +++ b/bld/stage1/scripts.d/50-disable-nvidia @@ -0,0 +1,3 @@ +#!/bin/sh +# exclude nvidia to prevent load before kernel module switch +echo 'BLACKLIST_MODULES += nvidia nvidia-drm nvidia-modeset' >> /etc/initrd.mk diff --git a/bld/stage1/scripts.d/80-make-initrd-for-propagator b/bld/stage1/scripts.d/80-make-initrd-for-propagator new file mode 100755 index 0000000..b2d5928 --- /dev/null +++ b/bld/stage1/scripts.d/80-make-initrd-for-propagator @@ -0,0 +1,47 @@ +#!/bin/sh -efux +# NB: /etc/initrd.mk carefully prepared by earlier scripts + +fatal() { echo "** error: $@" >&1; exit 1; } + +kver= +for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" +done + +[ -n "$kver" ] || + fatal "no kernel version identified" + +# FIXME: large storage systems can get that tmpfs filled up +# with debug data as of make-initrd 2.2.12 +rm -vf /usr/share/make-initrd/data/etc/udev/rules.d/00-debug.rules \ + /usr/share/make-initrd/data/lib/uevent/filters/debug + +MAKE_INITRD_OPTS="--no-checks --no-depmod AUTODETECT= " +MAKE_INITRD_VER="`make-initrd -V \ + | sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`" + +[ -z "$GLOBAL_VERBOSE" ] || + MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS -v" + +cd /boot + +for KVER in $kver; do + make-initrd $MAKE_INITRD_OPTS -k "$KVER" || + fatal "make-initrd failed" +done + +case `arch` in +e2k) + kname=image;; +*) + kname=vmlinuz;; +esac + +rm -f $kname initrd.img +ln -s $kname-$KVER $kname +ln -s initrd-$KVER.img initrd.img + +: diff --git a/bld/stage1/scripts.d/81-make-initfs b/bld/stage1/scripts.d/81-make-initfs new file mode 100755 index 0000000..ba21ad7 --- /dev/null +++ b/bld/stage1/scripts.d/81-make-initfs @@ -0,0 +1,29 @@ +#!/bin/sh -efu +# NB: initrd.mk carefully built by an earlier script + +verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "** 81-make-initfs: $@" >&2; } + +initrd="$(find /boot -type f -name 'initrd*.img' -print)" +if [ -n "$initrd" ]; then + pdir="$(getconf LIBDIR)/propagator" + mkdir -p "$pdir" + for INITRD in $initrd; do + KVER=${INITRD#*-} + KVER=${KVER%.*} + gzip < "$INITRD" > "$pdir"/initfs-"$KVER" + done +else + verbose '/boot/initrd*.img missing' + exit 1 +fi + +if [ -h /boot/initrd.img ]; then + KVER=$(readlink -ev /boot/initrd.img) + KVER=${INITRD#*-} + KVER=${KVER%.*} + cp "$pdir"/initfs-$KVER "$pdir"/initfs +else + verbose "/boot/initrd.img missing" + cp "$pdir"/initfs-"$KVER" "$pdir"/initfs + exit 1 +fi diff --git a/bld/stage1/scripts.d/90-build-propagator b/bld/stage1/scripts.d/90-build-propagator new file mode 100755 index 0000000..5e3d8b1 --- /dev/null +++ b/bld/stage1/scripts.d/90-build-propagator @@ -0,0 +1,32 @@ +#!/bin/sh -efu + +libdir="$(getconf LIBDIR)" + +case "`arch`" in + e2k) + kname=image + ;; + *) + kname=vmlinuz + ;; +esac + +kimage="$(find /boot -type f -name "$kname-*")" + +# cleanup old propagator +old_propagator="$(find /boot -type f -name "full*.cz")" +[ -z "$old_propagator" ] || rm $old_propagator + +for kver in $kimage; do + kver="${kver#/boot/$kname-}" + mkmodpack -p /.in/modules -o /tmp/modules-"$kver" -k "$kver" + cat "$libdir/propagator/initfs" /tmp/modules-"$kver" > /boot/full-"$kver".cz + + sed \ + -e "s,@LIBDIR@,$libdir," \ + -e "s,@TMPDIR@,/tmp,g" \ + < "$WORKDIR/initfs" | + gencpio - | + gzip -c >> /boot/full-"$kver".cz + +done diff --git a/bld/stage1/scripts.d/95-copy-kernel b/bld/stage1/scripts.d/95-copy-kernel new file mode 100755 index 0000000..a543def --- /dev/null +++ b/bld/stage1/scripts.d/95-copy-kernel @@ -0,0 +1,43 @@ +#!/bin/sh -ef + +cd /.image +mkdir -p boot + +case "`arch`" in + e2k) + kname=image + ;; + *) + kname=vmlinuz + ;; +esac + +if [ -L "/boot/$kname" ]; then + kimage="$(readlink -ev /boot/$kname)" + kverdef="${kimage#/boot/$kname-}" +fi + +kimage="$(find /boot -type f -name "$kname-*")" +propagator="$(find /boot -type f -name 'full-*.cz')" +[ -n "$propagator" ] || + initrd="$(find /boot -type f -name 'initrd-*.img')" + +cp $verbose -af $kimage boot/ +mv boot/$kname-$kverdef boot/$kname +if [ -n "$propagator" ]; then + cp $verbose -af $propagator boot/ + mv boot/full-$kverdef.cz boot/full.cz +else + cp $verbose -af $initrd boot/ + mv boot/initrd-$kverdef.img boot/initrd.img +fi + +# config is generated in mkimage +case "$GLOBAL_EFI_BOOTLOADER" in + refind|elilo) + mkdir -p EFI/BOOT + cp -lpLft EFI/BOOT -- boot/vmlinuz + [ ! -f boot/full.cz ] || + cp -lpLft EFI/BOOT -- boot/full.cz + ;; +esac diff --git a/bld/vars.mk b/bld/vars.mk new file mode 100644 index 0000000..c878267 --- /dev/null +++ b/bld/vars.mk @@ -0,0 +1,22 @@ +# dump interesting variables' effective values; +# based on http://stackoverflow.com/questions/7117978 + +# staged "uninteresting" lists +SPAM := SPAM INIT PREFS DISTCFG DISTCFG_MK +INIT := $(.VARIABLES) +-include $(HOME)/.mkimage/profiles.mk +PREFS := $(.VARIABLES) +-include distcfg.mk +DISTCFG := $(.VARIABLES) + +# a separator variable +-- = -- + +.PHONY: dump-vars + +dump-vars: + $(foreach v, \ + $(filter-out $(SPAM) $(INIT),$(sort $(PREFS))) -- \ + $(filter-out $(SPAM) $(PREFS),$(sort $(DISTCFG))), \ + $(info $(v) = $($(v)))) + @: diff --git a/conf.d/Makefile b/conf.d/Makefile new file mode 100644 index 0000000..b2d4e11 --- /dev/null +++ b/conf.d/Makefile @@ -0,0 +1,2 @@ +check: + @../bin/check-recipe *.mk diff --git a/conf.d/README b/conf.d/README new file mode 100644 index 0000000..10acf19 --- /dev/null +++ b/conf.d/README @@ -0,0 +1,69 @@ +== conf.d == + +Этот каталог содержит включаемые фрагменты конфигурации образов с тем, +чтобы было удобнее параллельно разрабатывать специфические образы +без излишних merge conflict'ов. + +Следует понимать, что основная цель появления mkimage-profiles на свет +-- это уменьшение "форков" внутри семейства дистрибутивных профилей. +Поэтому при возможности следует всё-таки работать над общей базовой +частью, включая скриптовые хуки и списки пакетов, а также оптимизировать +граф зависимостей между конфигурациями образов. + +Попросту говоря, copy-paste -- тревожный признак. + +Вместо него нередко может помочь выделение кусочков конфигурации +в пределах включаемого файла в цели mixin/*, которые не являются +самостоятельными или даже промежуточными, но включают полезные +группы настроек, нужных в различных образах, не наследующих +друг другу -- посмотрите существующие примеры использования. + +По переменным (см. тж. doc/pkglists.txt): + +* для пользовательского окружения (live, main) предназначены + THE_PACKAGES, THE_LISTS, THE_GROUPS, THE_PACKAGES_REGEXP + +* для "обычного общего" (live, main, rescue) есть COMMON_PACKAGES и + COMMON_LISTS + (NB: тоже попадают в базовую установку, ve/ и vm/ сборки) + +* SYSTEM_PACKAGES стоит применять крайне осторожно -- эти пакеты попадут + во все стадии, в том числе в образ чувствительной к объёму install2 + (в stage1 -- только в инструментальный чрут); применяйте для того, + что обязано быть и в инсталяторе, и в готовой системе (но не в rescue) + +* для направленного действия служат: +** STAGE1_PACKAGES, STAGE1_PACKAGES_REGEXP (первая стадия загрузки) +** STAGE2_PACKAGES (инсталятор и спасательная/"живая" система) +** INSTALL2_PACKAGES (инсталятор) +** BASE_PACKAGES, BASE_LISTS, BASE_PACKAGES_REGEXP (базовая система) +** MAIN_PACKAGES, MAIN_LISTS, MAIN_PACKAGES_REGEXP (дополнительные пакеты) +** LIVE_PACKAGES, LIVE_LISTS, LIVE_PACKAGES_REGEXP ("живая" система) + +* аналогично по kernel-modules-*: +** THE_KMODULES попадут в "пользовательскую" среду (live, main) +** STAGE1_KMODULES доступны в производных от stage2 (install2, live, rescue) +** BASE_KMODULES попадут в установку по умолчанию +** MAIN_KMODULES будут доступны для установки с носителя +** LIVE_KMODULES предназначены для LiveCD/LiveFlash + +Не стоит бояться такого разнообразия, для большинства задач достаточно THE_*. + +По подстановкам: + +* $(VAR) подставляются перед их записью в $(CONFIG), который distcfg.mk +* $$(VAR) раскрываются позже, при включении $(CONFIG) и востребовании + значений; в этом случае их значения могут изменяться до окончания + конфигурации, а также зависеть от значений других переменных + +По спискам пакетов: + +* на этапе экспериментирования можно забивать прямо в описание образа +* при фиксации состояния стоит воспользоваться существующими списками, + а дополнительные оформить как можно более чётко обособленными по тем + задачам, для решения которых они и подобраны +* повторяющиеся логически связанные группы списков может иметь смысл + выделить в фичу (см., например, power или x11) +* если явной фичи не наблюдается, но у группы дистрибутивов намечается + заметная общая часть -- её можно выделить в промежуточную цель вида + distro/.name, не являющуюся самостоятельно собираемой diff --git a/conf.d/alt-server.mk b/conf.d/alt-server.mk new file mode 100644 index 0000000..65e5606 --- /dev/null +++ b/conf.d/alt-server.mk @@ -0,0 +1,74 @@ +ifeq (distro,$(IMAGE_CLASS)) + +ifeq (,$(filter-out i586 x86_64 ppc64le aarch64,$(ARCH))) +distro/alt-server: server_groups_primary = $(addprefix centaurus/,\ + ipmi netinst sogo) + +ifeq (,$(filter-out x86_64 ppc64le aarch64,$(ARCH))) +distro/alt-server: server_groups_virtipa = $(addprefix centaurus/,\ + v12n-server freeipa-server) +endif +endif + +ifeq (,$(filter-out i586 x86_64 ppc64le aarch64 e2k%,$(ARCH))) +distro/alt-server: server_groups_desktop = $(addprefix centaurus/,\ + 80-desktop emulators freenx-server mate office pidgin vlc xorg) +endif + +distro/alt-server: monitoring = $(addprefix server-v/,\ + 90-monitoring zabbix-agent telegraf prometheus-node_exporter \ + monit collectd nagios-nrpe) + +# FIXME: generalize vm-profile +distro/alt-server:: distro/.base mixin/alt-server use/vmguest/base \ + use/bootloader/grub use/rescue/base use/stage2/kms\ + use/stage2/fs use/stage2/hid use/stage2/md \ + use/stage2/mmc use/stage2/net use/stage2/net-nfs use/stage2/cifs \ + use/stage2/rtc use/stage2/sbc use/stage2/scsi use/stage2/usb \ + use/docs/license use/docs/manual use/docs/indexhtml + @$(call set,DOCS,alt-server) + @$(call add,MAIN_GROUPS,$(server_groups_primary)) + @$(call add,MAIN_GROUPS,$(server_groups_virtipa)) + @$(call add,MAIN_GROUPS,$(server_groups_desktop)) + @$(call add,MAIN_LISTS,centaurus/disk-dvd) + @$(call add,MAIN_LISTS,centaurus/disk-server-light) +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,INSTALL2_PACKAGES,installer-feature-desktop-suspend-stage2) +endif +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,INSTALL2_PACKAGES,installer-feature-setup-plymouth) +endif + @$(call add,INSTALL2_PACKAGES,strace) + @$(call add,INSTALL2_PACKAGES,fdisk) + @$(call add,INSTALL2_BRANDING,notes) + @$(call add,BASE_KMODULES,kvm virtualbox) + @$(call add,CLEANUP_BASE_PACKAGES,acpid-events-power) + @$(call add,RESCUE_BOOTARGS,nomodeset vga=0) + @$(call add,EFI_BOOTARGS,lang=ru_RU) +ifeq (,$(filter-out e2k,$(ARCH))) + @$(call set,META_APP_ID,ALT Server for Elbrus-4.4) +endif +ifeq (,$(filter-out e2kv4,$(ARCH))) + @$(call set,META_APP_ID,ALT Server for Elbrus-80x) +endif +ifeq (,$(filter-out e2kv5,$(ARCH))) + @$(call set,META_APP_ID,ALT Server for Elbrus-90x) +endif + +ifeq (,$(filter-out x86_64 i586,$(ARCH))) +distro/alt-server:: use/memtest; @: +endif + +ifeq (,$(filter-out x86_64 aarch64,$(ARCH))) +distro/alt-server:: use/efi/refind +efi; @: +endif + +ifeq (,$(filter-out ppc64le aarch64 e2k%,$(ARCH))) +distro/alt-server:: use/install2/vnc/listen; @: +endif + +ifeq (,$(filter-out e2k%,$(ARCH))) +distro/alt-server:: +power +net-eth; @: +endif + +endif diff --git a/conf.d/basealt.mk b/conf.d/basealt.mk new file mode 100644 index 0000000..086a840 --- /dev/null +++ b/conf.d/basealt.mk @@ -0,0 +1,109 @@ +ifeq (distro,$(IMAGE_CLASS)) + +distro/alt-workstation: workstation_groups_x86 = $(addprefix workstation/,\ + 3rdparty kvm clamav cloud-clients freecad \ + gtk-dictionary smartcard voip-clients vlc) + +distro/alt-workstation: distro/.base +vmguest +wireless +efi \ + mixin/desktop-installer mixin/alt-workstation \ + mixin/alt-workstation-install \ + use/memtest use/rescue use/bootloader/grub use/luks \ + use/efi/memtest86 use/efi/shell \ + use/install2/repo use/install2/suspend use/live/suspend \ + use/live/install use/live/x11 use/live/repo use/live/rw \ + use/vmguest/kvm/x11 use/stage2/kms \ + use/branding/complete use/docs/license \ + use/domain-client/full use/x11/amdgpu use/x11/lightdm/gtk \ + use/e2k/multiseat/full use/e2k/x11/101 use/e2k/sound/401 +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,MAIN_GROUPS,$(workstation_groups_x86)) + @$(call add,LIVE_LISTS,workstation/vlc) +endif +ifeq (,$(filter-out x86_64,$(ARCH))) + @$(call add,MAIN_GROUPS,workstation/blender) + @$(call add,MAIN_GROUPS,workstation/virtualbox) + @$(call add,BASE_KMODULES,kvm virtualbox) +endif +ifeq (,$(filter-out aarch64 armh riscv64,$(ARCH))) + @$(call add,MAIN_GROUPS,workstation/celluloid) + @$(call add,LIVE_LISTS,workstation/celluloid) +endif +ifeq (,$(filter-out e2k%,$(ARCH))) + @$(call add,THE_PACKAGES,python-module-serial) + @$(call add,THE_PACKAGES,setup-mate-nocomposite) + @$(call add,THE_PACKAGES,xorg-drv-smi) # use/x11/smi + @$(call add,THE_PACKAGES,flashrom) + @$(call add,MAIN_PACKAGES,alterator-secsetup) + @$(call add,MAIN_GROUPS,workstation/alterator-web) + @$(call add,SERVICES_ENABLE,ahttpd) # in case it gets installed +ifeq (,$(filter-out e2k,$(ARCH))) + @$(call set,META_VOL_ID,ALT Workstation for Elbrus 401-PC) +endif # e2k +ifeq (,$(filter-out e2kv4,$(ARCH))) + @$(call set,META_VOL_ID,ALT Workstation for Elbrus 801/101-PC) +endif # e2kv4 +ifeq (,$(filter-out e2kv5,$(ARCH))) + @$(call set,META_VOL_ID,ALT Workstation for Elbrus 901-PC) +endif # e2kv5 +endif # e2k% + @$(call add,RESCUE_BOOTARGS,nomodeset vga=0) + +endif # distro + +ifeq (vm,$(IMAGE_CLASS)) + +vm/.alt-workstation: vm/systemd use/x11/lightdm/gtk \ + use/oem/distro use/repo mixin/alt-workstation + @$(call add,THE_PACKAGES,installer-feature-lightdm-stage3) + @$(call add,THE_PACKAGES,installer-feature-quota-stage2) + @$(call add,THE_PACKAGES,alterator-gpupdate) +ifeq (,$(filter-out armh,$(ARCH))) + @$(call add,THE_LISTS,workstation/libreoffice-latest) +else + @$(call add,THE_LISTS,workstation/libreoffice) +endif + +vm/alt-workstation:: vm/.alt-workstation +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,THE_LISTS,workstation/vlc) +endif + +ifeq (,$(filter-out aarch64 armh riscv64,$(ARCH))) +vm/alt-workstation:: use/uboot + @$(call add,BASE_LISTS,uboot) + @$(call add,THE_LISTS,workstation/celluloid) +endif + +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +vm/alt-workstation:: use/no-sleep use/arm-rpi4; @: +endif + +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +vm/alt-workstation-rpi: vm/.alt-workstation use/arm-rpi4/full + @$(call add,THE_LISTS,workstation/celluloid) +endif + +ifeq (,$(filter-out aarch64,$(ARCH))) +vm/alt-workstation-tegra: vm/.alt-workstation use/aarch64-tegra + @$(call add,THE_LISTS,workstation/vlc) +endif + +ifeq (,$(filter-out armh,$(ARCH))) +vm/alt-workstation-mcom02: vm/.alt-workstation use/armh-mcom02/x11 + @$(call add,THE_LISTS,workstation/celluloid) +endif + +ifeq (,$(filter-out mipsel,$(ARCH))) +vm/alt-workstation:: + @$(call add,THE_PACKAGES,mate-reduced-resource) + @$(call add,THE_LISTS,workstation/celluloid) + +vm/alt-workstation-bfk3: vm/alt-workstation use/mipsel-bfk3/x11; @: +vm/alt-workstation-tavolga: vm/alt-workstation use/mipsel-mitx/x11; @: +endif + +vm/alt-workstation-cloud: vm/cloud-systemd use/x11/lightdm/gtk \ + mixin/alt-workstation + @$(call add,THE_PACKAGES,cloud-init-config-netplan) + @$(call add,SYSTEMD_SERVICES_DISABLE,network.service) +endif diff --git a/conf.d/desktop.mk b/conf.d/desktop.mk new file mode 100644 index 0000000..04929e9 --- /dev/null +++ b/conf.d/desktop.mk @@ -0,0 +1,14 @@ +# desktop distributions +ifeq (distro,$(IMAGE_CLASS)) + +distro/.desktop-base: distro/.installer use/syslinux/ui/vesamenu use/x11/xorg + @$(call set,INSTALLER,desktop) + +distro/.desktop-mini: distro/.desktop-base use/x11/xdm; @: + +distro/.desktop-network: distro/.desktop-mini mixin/desktop-installer; @: + +distro/icewm: distro/.desktop-network use/lowmem use/install2/fs +icewm; @: +distro/ltsp-icewm: distro/icewm +ltsp; @: + +endif diff --git a/conf.d/e2k.mk b/conf.d/e2k.mk new file mode 100644 index 0000000..fd6cdd3 --- /dev/null +++ b/conf.d/e2k.mk @@ -0,0 +1,77 @@ +ifeq (,$(filter-out e2k%,$(ARCH))) +ifeq (vm,$(IMAGE_CLASS)) + +vm/.e2k-bare: vm/.bare use/e2k + @$(call add,BASE_PACKAGES,apt) + +vm/e2k-live: vm/.e2k-bare use/deflogin/live use/net-ssh use/control/sudo-su + @$(call add,THE_LISTS,$(call tags,ve tools)) + +vm/.e2k-rescue: vm/e2k-live \ + mixin/e2k-base use/net/etcnet use/services/lvm2-disable + @$(call add,THE_PACKAGES,agetty gpm fdisk parted smartmontools pv sshfs) + @$(call add,THE_PACKAGES,make-initrd dhcpcd hdparm nfs-clients) + @$(call add,THE_LISTS,$(call tags,server && (network || extra))) + @$(call add,DEFAULT_SERVICES_DISABLE,gpm mdadm smartd) + +vm/alt-rescue: vm/.e2k-rescue +sysvinit + @$(call add,KFLAVOURS,elbrus-def) + @$(call add,THE_PACKAGES,firmware-linux) + +vm/e2k-xfce: vm/.e2k-rescue mixin/e2k-desktop use/x11/xfce + @$(call add,THE_PACKAGES,pnmixer) + +vm/e2k-mate: vm/.e2k-rescue use/deflogin/live use/x11/mate use/x11/lightdm/gtk \ + mixin/e2k-base mixin/e2k-desktop mixin/e2k-livecd-install + @$(call add,THE_PACKAGES,LibreOffice-integrated LibreOffice-gnome) + @$(call add,THE_PACKAGES,LibreOffice-langpack-ru) + +vm/e2k-lxqt: vm/.e2k-rescue mixin/e2k-desktop + @$(call add,THE_LISTS,$(call tags,desktop && lxqt && !extra)) + +vm/e2k-builder: vm/.e2k-rescue use/dev/builder/base + @$(call add,KFLAVOURS,elbrus-8c elbrus-4c) + +vm/e2k-samba-DC: vm/.e2k-rescue + @$(call add,BASE_PACKAGES,task-samba-dc glibc-locales net-tools) + +endif + +ifeq (ve,$(IMAGE_CLASS)) +ve/.e2k-bare: ve/.base use/e2k +sysvinit + @$(call add,BASE_PACKAGES,apt) + +ve/e2k-installer: ve/.e2k-bare use/repo/main + @$(call add,MAIN_PACKAGES,hello) + +ve/e2k-git: ve/.e2k-bare use/e2k use/net-ssh use/net-dns/yandex + @$(call add,BASE_PACKAGES,git-server nginx) + @$(call add,DEFAULT_SERVICES_ENABLE,xinetd git nginx) +endif + +ifeq (distro,$(IMAGE_CLASS)) +distro/.e2k-rescue: distro/.base mixin/e2k-base use/rescue/.base +net-eth + @$(call set,META_VOL_ID,ALT Rescue for Elbrus) + +distro/.e2k-installer-base: distro/.base mixin/e2k-base \ + use/install2 use/install2/packages use/e2k \ + use/volumes/regular use/net-ssh +net-eth + @$(call set,INSTALLER,altlinux-generic) + @$(call set,META_PUBLISHER,BaseALT Ltd) + @$(call set,META_VOL_SET,ALT) + @$(call set,META_VOL_ID,ALT for Elbrus) + @$(call set,META_APP_ID,ALT/$(ARCH)) + @$(call add,INSTALL2_BRANDING,alterator) + @$(call add,THE_PACKAGES,agetty gpm fdisk parted smartmontools pv sshfs) + @$(call add,THE_PACKAGES,make-initrd dhcpcd hdparm nfs-clients vim-console) + @$(call add,THE_PACKAGES,python-module-serial) + @$(call add,THE_LISTS,$(call tags,server && (network || extra))) + @$(call add,DEFAULT_SERVICES_DISABLE,gpm mdadm smartd) + @$(call add,THE_BRANDING,alterator) + @$(call set,BRANDING,alt-workstation) ### conflicts w/alt-sisyphus + +distro/.e2k-installer-sysv: distro/.e2k-installer-base +sysvinit; @: +distro/.e2k-installer: distro/.e2k-installer-base +systemd; @: + +endif +endif diff --git a/conf.d/education.mk b/conf.d/education.mk new file mode 100644 index 0000000..10c80b8 --- /dev/null +++ b/conf.d/education.mk @@ -0,0 +1,167 @@ +# ALT Education + +mixin/education: \ + use/kernel/desktop use/kernel/net use/kernel/laptop \ + use/firmware use/firmware/wireless use/firmware/laptop \ + +systemd +systemd-optimal \ + use/services \ + use/ntp/chrony \ + use/volumes/education \ + +x11 use/x11/3d \ + use/x11/lightdm/gtk +pulse \ + +nm use/x11/gtk/nm \ + use/xdg-user-dirs/deep \ + use/office/LibreOffice/full + @$(call set,BRANDING,alt-education) + @$(call add,THE_BRANDING,indexhtml) + @$(call add,THE_BRANDING,menu xfce-settings system-settings) + @$(call add,THE_LISTS,slinux/xfce-base) + @$(call add,THE_LISTS,education/misc) + @$(call add,THE_PACKAGES,java-11-openjdk) + @$(call add,THE_PACKAGES,thunderbird) + @$(call add,THE_LISTS,$(call tags,base l10n)) + @$(call add,BASE_LISTS,workstation/3rdparty) + @$(call add,THE_PACKAGES,settings-alsa-sof-force) + @$(call add,THE_LISTS,$(call tags,base regular)) + @$(call add,THE_LISTS,$(call tags,base extra)) + +ifeq (distro,$(IMAGE_CLASS)) + +mixin/education-live: \ + use/live/install use/live/suspend \ + use/live/repo use/live/x11 use/live/rw \ + use/office/LibreOffice/full \ + use/cleanup/live-no-cleanupdb + @$(call add,LIVE_PACKAGES,livecd-timezone) +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call add,LIVE_PACKAGES,chromium) +endif + @$(call add,LIVE_PACKAGES,mc-full) + @$(call add,LIVE_PACKAGES,remmina remmina-plugins) + @$(call add,LIVE_PACKAGES,java-11-openjdk) + @$(call add,LIVE_PACKAGES,xorg-conf-libinput-touchpad) + @$(call add,LIVE_LISTS,$(call tags,base rescue)) + @$(call add,LIVE_LISTS,$(call tags,base extra)) + +mixin/education-installer: \ + +installer \ + use/memtest \ + use/branding/complete \ + use/install2/vnc use/install2/full \ + use/l10n/default/ru_RU +vmguest \ + +efi use/efi/shell \ + use/isohybrid use/luks \ + use/install2/fonts \ + use/wireless \ + +plymouth \ + use/stage2/fs use/stage2/hid use/stage2/md \ + use/stage2/mmc use/stage2/net use/stage2/net-nfs use/stage2/cifs \ + use/stage2/rtc use/stage2/sbc use/stage2/scsi use/stage2/usb \ + use/install2/fat + @$(call set,INSTALLER,education) + @$(call set,META_VOL_ID,ALT Education 10.0beta $(ARCH)) + @$(call set,META_PUBLISHER,BaseALT Ltd) + @$(call set,META_APP_ID,$(DISTRO_VERSION) $(ARCH)) + @$(call set,META_VOL_SET,ALT) + @$(call add,INSTALL2_PACKAGES,disable-usb-autosuspend) + @$(call add,MAIN_GROUPS,education/00_base) + @$(call add,MAIN_GROUPS,education/01_preschool) + @$(call add,MAIN_GROUPS,education/02_gradeschool) + @$(call add,MAIN_GROUPS,education/03_highschool) + @$(call add,MAIN_GROUPS,education/04_secondary_vocational) + @$(call add,MAIN_GROUPS,education/05_university) + @$(call add,MAIN_GROUPS,education/07_teacher) + @$(call add,MAIN_GROUPS,education/08_server-apps-edu) + @$(call add,THE_PACKAGES,bluez pulseaudio-bluez) + @$(call add,THE_PACKAGES,alterator-fbi) + @$(call add,THE_PACKAGES,alt-rootfs-installer) + @$(call add,BASE_PACKAGES,os-prober) + @$(call add,BASE_PACKAGES,guest-account) + @$(call add,MAIN_PACKAGES,iperf3) + @$(call add,MAIN_PACKAGES,stellarium) + @$(call add,MAIN_PACKAGES,libreoffice-block-macros) + @$(call add,MAIN_PACKAGES,lmms) + @$(call add,MAIN_PACKAGES,xorg-conf-libinput-touchpad) + @$(call add,STAGE2_PACKAGES,xorg-conf-libinput-touchpad) + @$(call add,STAGE2_PACKAGES,chrony) + @$(call add,STAGE1_MODLISTS,stage2-mmc) + +#FIXME# mixin/education-live \ + # +distro/education: distro/alt-education; @: +distro/alt-education: distro/.installer \ + mixin/education \ + mixin/education-live \ + mixin/education-installer \ + use/e2k/multiseat/full use/power/acpi \ + use/control + @$(call set,INSTALLER,education) +ifeq (,$(filter-out e2k%,$(ARCH))) + @$(call add,MAIN_GROUPS,education/06_kdesc) + @$(call add,MAIN_PACKAGES,xorg-conf-noblank) + @$(call add,THE_PACKAGES,firefox-esr-ru flashrom) + @$(call add,THE_PACKAGES,xscreensaver-hacks-rss_glx) + @$(call add,CLEANUP_PACKAGES,plymouth plymouth-scripts) + @$(call add,CONTROL,pam_mktemp:disabled) ### private /tmp dirs + @$(call add,INSTALL2_PACKAGES,ImageMagick-tools) ### DROPME: for import on /pkg ### +else + @$(call add,MAIN_GROUPS,education/06_kde5) + @$(call add,MAIN_GROUPS,education/09_video-conferencing) +endif # e2k% +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call set,KFLAVOURS,un-def) + @$(call add,MAIN_PACKAGES,kernel-headers-un-def) + @$(call add,MAIN_PACKAGES,kernel-headers-modules-un-def) + @$(call add,MAIN_PACKAGES,kernel-headers-un-def) + @$(call add,MAIN_PACKAGES,kernel-headers-modules-un-def) + @$(call add,THE_KMODULES,virtualbox) + @$(call add,THE_KMODULES,lsadrv bbswitch) + @$(call add,THE_KMODULES,staging) + @$(call add,MAIN_KMODULES,bbswitch) + @$(call add,THE_PACKAGES,chromium) + @$(call add,THE_PACKAGES,mc-full) + @$(call add,THE_PACKAGES,remmina remmina-plugins) +endif +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,THE_PACKAGES,syslinux) + @$(call add,MAIN_PACKAGES,owamp-server) +endif + @$(call add,CONTROL,sudo:public) + +endif # distro + +ifeq (vm,$(IMAGE_CLASS)) + +vm/.alt-education: vm/systemd use/repo use/oem/distro mixin/education + @$(call add,DEFAULT_SERVICES_DISABLE,multipathd) + +vm/alt-education:: vm/.alt-education + +ifeq (,$(filter-out aarch64 armh riscv64,$(ARCH))) +vm/alt-education:: use/uboot + @$(call add,BASE_LISTS,uboot) +endif + +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +vm/alt-education:: use/no-sleep use/arm-rpi4; @: +endif + +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +vm/alt-education-rpi: vm/.alt-education use/arm-rpi4/full + @$(call add,THE_PACKAGES,task-edu-lite) +endif + +ifeq (,$(filter-out aarch64,$(ARCH))) +vm/alt-education-tegra: vm/.alt-education use/aarch64-tegra; @: +endif + +ifeq (,$(filter-out armh,$(ARCH))) +vm/alt-education-mcom02: vm/.alt-education use/armh-mcom02/x11; @: +endif + +ifeq (,$(filter-out mipsel,$(ARCH))) +vm/alt-education-tavolga: vm/.alt-education use/mipsel-mitx/x11; @: +vm/alt-education-bfk3: vm/.alt-education use/mipsel-bfk3/x11; @: +endif + +endif diff --git a/conf.d/engineering.mk b/conf.d/engineering.mk new file mode 100644 index 0000000..2a6b811 --- /dev/null +++ b/conf.d/engineering.mk @@ -0,0 +1,42 @@ +mixin/alt-engineering-install: engineering_groups = $(addprefix engineering/,\ + 05-apps 2d-cad 3d-cad 3d-printer apcs cam eda misc) + +mixin/alt-engineering-live: engineering_lists = $(addprefix engineering/,\ + 2d-cad 3d-cad 3d-printer apcs cam eda misc) + +mixin/alt-engineering: mixin/regular-desktop mixin/regular-mate \ + use/x11/lightdm/gtk \ + use/l10n +systemd +systemd-optimal +nm-gtk +plymouth + @$(call add,THE_PACKAGES,theme-mate-windows) + +mixin/alt-engineering-install: mixin/alt-engineering + @$(call add,MAIN_GROUPS,$(engineering_groups)) +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call add,MAIN_GROUPS,engineering/cnc) +endif +ifeq (,$(filter-out x86_64,$(ARCH))) + @$(call add,MAIN_KFLAVOURS,rt) +endif + @$(call add,THE_PROFILES,engineering/00-minimal) + @$(call add,THE_PROFILES,engineering/10-design) + @$(call add,THE_PROFILES,engineering/20-automations) + +mixin/alt-engineering-live: mixin/alt-engineering \ + use/live/ru use/live/rw use/live/desktop + @$(call add,LIVE_LISTS,$(engineering_lists)) +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call add,LIVE_LISTS,engineering/cnc) +endif + +ifeq (distro,$(IMAGE_CLASS)) +distro/regular-engineering-live: distro/.regular-x11 \ + mixin/alt-engineering-live; @: + +distro/regular-engineering-install: distro/.regular-install-x11 \ + mixin/alt-engineering-install; @: +endif + +ifeq (vm,$(IMAGE_CLASS)) +vm/regular-engineering: vm/.regular-desktop mixin/alt-engineering-install \ + use/oem/install; @: +endif diff --git a/conf.d/homeros.mk b/conf.d/homeros.mk new file mode 100644 index 0000000..f25b30f --- /dev/null +++ b/conf.d/homeros.mk @@ -0,0 +1,6 @@ +ifeq (distro,$(IMAGE_CLASS)) + +distro/homeros-mini: distro/.live-base use/live/textinstall \ + use/homeros use/speech/en use/isohybrid; @: + +endif diff --git a/conf.d/kworkstation.mk b/conf.d/kworkstation.mk new file mode 100644 index 0000000..17f21a6 --- /dev/null +++ b/conf.d/kworkstation.mk @@ -0,0 +1,227 @@ +# desktop distributions +ifeq (distro,$(IMAGE_CLASS)) + +mixin/kworkstation-common-deps: \ + use/kernel/desktop use/kernel/net use/kernel/laptop \ + use/live/x11 use/live use/live/sound use/live/repo/online \ + use/syslinux/ui/gfxboot use/plymouth/full \ + use/efi/grub use/efi/shell \ + use/x11/xorg \ + use/branding/complete \ + use/firmware/wireless use/firmware/laptop use/firmware/cpu use/wireless/full \ + use/vmguest/complete use/vmguest/vbox/x11 use/vmguest/vmware/x11 \ + use/power/acpi \ + use/luks \ + use/net-eth/dhcp use/net-ssh use/net/nm/nodelay \ + use/ntp/chrony \ + use/docs/full \ + use/xdg-user-dirs \ + use/l10n/default/ru_RU \ + use/control use/services \ + use/x11/intel use/x11/radeon use/x11/amdgpu use/x11/nvidia \ + use/x11/sddm \ + use/memtest \ + use/init/systemd \ + use/cleanup/live-no-cleanupdb \ + use/stage2/mmc \ + +net-eth +wireless +pulse +plymouth +systemd-optimal +wireless +vmguest +efi +nm + +mixin/kworkstation-common-opts: + @$(call add,EFI_BOOTARGS,lang=ru_RU) + @$(call set,BRANDING,xalt-kworkstation) + @$(call set,GRUBTHEME,branding-xalt-kworkstation) + @$(call set,DOCS,alt-kworkstation) + @$(call try,THE_BROWSER,chromium-gost) + @$(call add,BASE_KMODULES,kvm virtualbox) + @$(call add,THE_KMODULES,staging) + @$(call add,BASE_PACKAGES,os-prober) + @$(call add,BASE_PACKAGES,plymouth-plugin-label) + @$(call add,THE_PACKAGES,pam-limits-desktop) + @$(call add,THE_PACKAGES,systemd-presets-kdesktop) + @$(call add,THE_PACKAGES,etcnet-defaults-desktop) + @$(call add,THE_PACKAGES,btrfs-progs) + @$(call set,INSTALL2_FONTS,fonts-ttf-google-croscore-arimo) + @$(call set,LIVECD_FONTS,fonts-ttf-dejavu) + @$(call add,THE_PACKAGES,fonts-ttf-dejavu) + @$(call add,THE_PACKAGES,fonts-ttf-google-droid-sans) + @$(call add,THE_PACKAGES,fonts-ttf-google-droid-serif) + @$(call add,THE_PACKAGES,fonts-ttf-google-droid-sans-mono) + @$(call add,THE_PACKAGES,fonts-ttf-google-crosextra-caladea) + @$(call add,THE_PACKAGES,fonts-ttf-google-crosextra-carlito) + @$(call add,THE_PACKAGES,fonts-ttf-google-noto-sans-symbols) + @$(call add,THE_PACKAGES,fonts-ttf-google-noto-sans-symbols2) + @$(call add,THE_PACKAGES,fonts-ttf-material-icons) + @$(call add,THE_LISTS,$(call tags,basesystem alterator)) + @$(call add,MAIN_LISTS,kworkstation/disk-install) + @$(call add,THE_LISTS,tagged/desktop+xorg) + @$(call add,THE_LISTS,tagged/xorg+misc) + @$(call add,CONTROL,xdg-user-dirs:enabled) + @$(call add,CONTROL,fusermount:wheelonly) + @$(call add,SERVICES_ENABLE,smb) + @$(call add,SERVICES_ENABLE,nmb) + @$(call add,SERVICES_ENABLE,postfix) + @$(call add,SERVICES_ENABLE,crond) + @$(call add,SERVICES_ENABLE,x11presetdrv) + @$(call add,SERVICES_ENABLE,bluetooth) + @$(call add,SERVICES_ENABLE,ModemManager) + @$(call add,SERVICES_ENABLE,NetworkManager) + @$(call add,SERVICES_DISABLE,NetworkManager-wait-online) + @$(call add,SERVICES_ENABLE,autofs) + @$(call add,SERVICES_ENABLE,fstrim.timer) + @$(call add,SERVICES_ENABLE,org.cups.cupsd.socket) + @$(call add,SERVICES_ENABLE,cups.socket) + @$(call add,SERVICES_ENABLE,org.cups.cupsd.path) + @$(call add,SERVICES_ENABLE,cups.path) + @$(call add,SERVICES_ENABLE,cups-browsed.service) + @$(call add,SERVICES_DISABLE,org.cups.cupsd.service) + @$(call add,SERVICES_DISABLE,cups.service) + @$(call add,SERVICES_ENABLE,rngd) + @$(call add,SERVICES_ENABLE,alteratord ahttpd) + @$(call add,SERVICES_DISABLE,sysreport) + @$(call add,SERVICES_DISABLE,rescue-remote) + @$(call add,SERVICES_DISABLE,nscd) + @$(call add,SERVICES_DISABLE,lircd) + @$(call add,SERVICES_DISABLE,openl2tp) + @$(call add,SERVICES_DISABLE,slapd) + @$(call add,CLEANUP_BASE_PACKAGES,'libwbclient-sssd') + @$(call add,CLEANUP_PACKAGES,'^kernel-modules-drm-nouveau.*') + @$(call set,META_VOL_SET,ALT) + @$(call set,META_PUBLISHER,BaseALT Ltd) + @$(call set,META_VOL_ID,ALT $(DISTRO_VERSION)$(STATUS) Workstation K $(ARCH)) + @$(call set,META_APP_ID,ALT $(DISTRO_VERSION)$(STATUS) Workstation K $(ARCH) $(shell date +%F)) + +mixin/kworkstation-install-deps: \ + distro/.installer mixin/desktop-installer \ + use/install2/suspend use/install2/net use/install2 use/install2/stage3 \ + use/install2/vmguest \ + use/stage2/net-install \ + use/grub/localboot_bios.cfg \ + +installer + +mixin/kworkstation-install-opts: + @$(call set,GRUB_DEFAULT,harddisk) + @$(call set,INSTALLER,centaurus) + @$(call add,STAGE1_MODLISTS,stage2-ntfs) + @$(call add,STAGE2_KMODULES,drm-nouveau) + @$(call add,STAGE2_BOOTARGS,logo.nologo loglevel=3 udev.log-priority=3) # vga=current + @$(call add,STAGE2_BOOTARGS,systemd.show_status=0) + @$(call add,THE_PACKAGES,installer-feature-nfs-client-stage3) + @$(call add,INSTALL2_PACKAGES,ntfs-3g) + @$(call add,INSTALL2_PACKAGES,btrfs-progs) + @$(call add,INSTALL2_PACKAGES,installer-feature-samba-usershares-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-samba-automount-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-weak-passwd) + @$(call add,INSTALL2_PACKAGES,installer-feature-desktop-disable-remote-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-desktop-etcissue) + @$(call add,INSTALL2_PACKAGES,installer-feature-kdesktop-tmpfs) + @$(call add,INSTALL2_PACKAGES,installer-feature-kdesktop-services) + @$(call add,INSTALL2_PACKAGES,installer-feature-vmservices) + @$(call add,INSTALL2_PACKAGES,installer-feature-online-repo) + @$(call add,INSTALL2_PACKAGES,installer-feature-set-tz) + @$(call add,INSTALL2_PACKAGES,installer-feature-rootgtktheme-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-alterator-setup-stage2) + @$(call add,INSTALL2_PACKAGES,apt-scripts-nvidia) + @$(call add,INSTALL2_PACKAGES,volumes-profile-kdesktop) + @$(call add,INSTALL2_PACKAGES,udev-rules-ioschedulers) + @$(call add,INSTALL2_PACKAGES,passwdqc-utils) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-dri-nouveau xorg-drv-nouveau) + @$(call add,INSTALL2_CLEANUP_PACKAGES,icon-theme-adwaita fonts-ttf-dejavu fonts-bitmap-misc) + @$(call add,INSTALL2_CLEANUP_PACKAGES,libdconf dconf colord) + @$(call add,INSTALL2_CLEANUP_PACKAGES,shared-mime-info glib-networking libgtk+3-schemas gtk-update-icon-cache libgtk+3) + @$(call add,INSTALL2_CLEANUP_PACKAGES,libat-spi2-core at-spi2-core at-spi2-atk) + @$(call add,MAIN_GROUPS,$(kworkstation_groups)) + @$(call add,BASE_PACKAGES,alterator-postinstall) + @$(call add,BASE_PACKAGES,make-initrd-mdadm mdadm) + @$(call add,BASE_PACKAGES,apt-scripts-nvidia) + @$(call add,LIVE_LISTS,$(call tags,base rescue)) + @$(call add,LIVE_LISTS,$(call tags,rescue fs)) + @$(call add,LIVE_LISTS,$(call tags,rescue live)) + @$(call add,LIVE_LISTS,$(call tags,rescue x11 !extra)) + @$(call add,LIVE_LISTS,$(call tags,rescue crypto)) + @$(call add,LIVE_LISTS,sound/pulseaudio) + @$(call add,LIVE_LISTS,kworkstation/live-rescue) + @$(call add,THE_LISTS,kworkstation/kde5-base) + @$(call add,SERVICES_ENABLE,sshd) + +mixin/kworkstation-live-deps: \ + distro/.base use/rescue/base \ + use/x11/xorg use/x11-autostart \ + use/cleanup/live-no-cleanupdb \ + use/live/no-cleanup \ + use/grub/live_rw.cfg \ + +net-eth +vmguest + +mixin/kworkstation-live-opts: + @$(call add,BASE_LISTS, \ + $(call tags,(base || desktop) && (l10n || network))) + @$(call add,GRUB_TIMEOUT,3) + @$(call set,GRUB_DEFAULT,session) + @$(call add,SYSLINUX_CFG,live_rw) + @$(call set,SYSLINUX_DEFAULT,session) + @$(call add,LIVE_LISTS,kworkstation/kde5-base) + @$(call add,LIVE_LISTS,kworkstation/kde5) + @$(call add,LIVE_LISTS,kworkstation/emulators) + @$(call add,LIVE_LISTS,kworkstation/graphics-editing) + @$(call add,LIVE_LISTS,kworkstation/printing) + @$(call add,LIVE_LISTS,kworkstation/publishing) + @$(call add,LIVE_LISTS,kworkstation/scanning) + @$(call add,LIVE_LISTS,kworkstation/remote-desktop) + @$(call add,LIVE_LISTS,kworkstation/sound-editing) + @$(call add,LIVE_LISTS,kworkstation/video-editing) + @$(call add,SERVICES_DISABLE,sshd) + @$(call set,META_VOL_ID,ALT $(DISTRO_VERSION)$(STATUS) Workstation K Live $(ARCH)) + @$(call set,META_APP_ID,ALT $(DISTRO_VERSION)$(STATUS) Workstation K Live $(ARCH) $(shell date +%F)) + +distro/kworkstation-install: \ + kworkstation_groups = $(addprefix kworkstation/,\ + kde5 \ + games \ + emulators remote-desktop \ + printing scanning \ + video-editing sound-editing graphics-editing \ + z01-add-clients clients-ad clients-ipa clients-backup clients-cloud clients-monitor \ + z02-add-additional additional-oem) + +distro/kworkstation-install: \ + mixin/kworkstation-install-deps \ + mixin/kworkstation-common-deps \ + mixin/kworkstation-common-opts \ + mixin/kworkstation-install-opts + +distro/kworkstation-live: \ + mixin/kworkstation-live-deps \ + mixin/kworkstation-common-deps \ + mixin/kworkstation-common-opts \ + mixin/kworkstation-live-opts + +distro/kworkstation-install-undef: \ + distro/kworkstation-install + @$(call set,KFLAVOURS,un-def) + +distro/kworkstation-live-undef: \ + distro/kworkstation-live + @$(call set,KFLAVOURS,un-def) + +mixin/kworkstation-fsin-opts: + @$(call add,THE_PACKAGES,libwbclient task-auth-ad-sssd) + @$(call add,THE_PACKAGES,task-auth-freeipa task-auth-ldap-sssd) + @$(call add,THE_PACKAGES,task-samba-dc bind-utils tdb-utils installer-feature-sambaDC-stage3) + @$(call add,THE_PACKAGES,task-auth-ldap-sssd) + @$(call add,THE_PACKAGES,kde5-autofs-shares krb5-ticket-watcher kde5-file-actions-gost) + @$(call add,THE_PACKAGES,openssl-gost-engine) + @$(call add,THE_PACKAGES,openvpn-gostcrypto openvpn-plugins-gostcrypto alterator-openvpn-server) + @$(call add,THE_PACKAGES,alt-customize-branding) + @$(call add,THE_PACKAGES,alterator-kiosk) + @$(call add,SERVICES_ENABLE,kiosk) + +distro/kworkstation-install-fsin: \ + distro/kworkstation-install \ + mixin/kworkstation-fsin-opts + @$(call set,KFLAVOURS,std-def) + +endif + + +# @$(call add,RESCUE_BOOTARGS,nomodeset vga=0) +# use/mediacheck \ +# use/domain-client/full \ diff --git a/conf.d/live.mk b/conf.d/live.mk new file mode 100644 index 0000000..27b9333 --- /dev/null +++ b/conf.d/live.mk @@ -0,0 +1,163 @@ +# live images +ifeq (distro,$(IMAGE_CLASS)) + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +distro/dos: distro/.boot use/dos use/syslinux/ui/menu + @$(call set,RELNAME,ALT FreeDOS) + +distro/syslinux: distro/.boot \ + use/syslinux/localboot.cfg use/syslinux/ui/vesamenu use/hdt + @$(call set,BOOTLOADER,isolinux) +endif + +ifeq (,$(filter-out i586 x86_64 aarch64 ppc64le riscv64,$(ARCH))) +distro/grub: distro/.boot use/grub use/hdt +efi \ + use/grub/localboot_bios.cfg use/grub/sdab_bios.cfg; @: +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call set,BOOTLOADER,grubpcboot) +endif + +distro/grub-ui: distro/grub use/branding use/grub/ui/gfxboot; @: +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call add,STAGE1_BRANDING,bootloader) +endif + +distro/grub-net-install: distro/.base use/stage2/net-install +efi \ + use/firmware use/grub/sdab_bios.cfg +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call set,BOOTLOADER,grubpcboot) +endif + @$(call set,KFLAVOURS,un-def std-def) +endif + +distro/rescue: distro/.base use/rescue use/syslinux/ui/menu use/stage2/cifs \ + use/rescue/.base use/syslinux/sdab.cfg use/grub/sdab_bios.cfg \ + use/efi/shell +efi; @: + +distro/rescue-remote: distro/.base use/rescue/base use/stage2/net-eth + @$(call set,SYSLINUX_CFG,rescue_remote) + @$(call set,SYSLINUX_DIRECT,1) + @$(call add,RESCUE_PACKAGES,livecd-net-eth) + +distro/.live-base: distro/.base use/live/base; @: +distro/.live-x11: distro/.live-base use/live/x11; @: + +distro/.live-desktop: distro/.base +live use/live/install use/stage2/net-eth \ + use/plymouth/live; @: +distro/.live-desktop-ru: distro/.live-desktop use/live/ru; @: + +distro/.live-kiosk: distro/.base use/live/base use/live/autologin \ + use/syslinux/timeout/1 use/cleanup use/stage2/net-eth \ + use/fonts/otf/adobe + @$(call add,CLEANUP_PACKAGES,'alterator*' 'guile*' 'vim-common') + @$(call set,SYSLINUX_UI,none) + @$(call set,SYSLINUX_CFG,live) + @$(call add,STAGE2_BOOTARGS,quiet) + @$(call add,DEFAULT_SERVICES_DISABLE,rpcbind klogd syslogd) + @$(call add,DEFAULT_SERVICES_DISABLE,consolesaver fbsetfont keytable) + +distro/live-builder-mini: distro/.live-base use/dev/builder/base \ + use/syslinux/timeout/30 use/isohybrid \ + use/stage2/net-eth use/net-eth/dhcp; @: + +distro/live-builder: distro/live-builder-mini \ + use/dev/builder/full use/live/rw +efi; @: + +distro/live-install: distro/.live-base use/live/textinstall; @: +distro/.livecd-install: distro/.live-base use/live/install; @: + +distro/live-icewm: distro/.live-desktop use/x11/lightdm/gtk +icewm; @: +distro/live-fvwm: distro/.live-desktop-ru use/x11/lightdm/gtk use/x11/fvwm; @: + +distro/live-rescue: distro/live-icewm +efi + @$(call add,LIVE_LISTS,$(call tags,rescue && (fs || live || x11))) + @$(call add,LIVE_LISTS,openssh \ + $(call tags,(base || extra) && (archive || rescue || network))) + +# NB: this one doesn't include the browser, needs to be chosen downstream +distro/.live-webkiosk: distro/.live-kiosk \ + use/isohybrid use/live/hooks use/live/ru use/sound \ + use/stage2/kms use/x11/xorg + @$(call add,LIVE_LISTS,$(call tags,live desktop)) + +distro/.live-webkiosk-gtk: distro/.live-webkiosk + @$(call add,CLEANUP_PACKAGES,'libqt4*' 'qt4*') + +# kiosk users rather prefer stability to latest bling +distro/live-webkiosk-mini: distro/.live-webkiosk-gtk \ + use/browser/firefox use/browser/firefox/esr use/fonts/otf/mozilla + @$(call add,LIVE_PACKAGES,livecd-webkiosk-firefox) + +# NB: flash/java plugins are predictable security holes +distro/live-webkiosk-flash: distro/live-webkiosk-mini use/plymouth/live +vmguest; @: + +distro/live-webkiosk: distro/live-webkiosk-mini use/live/desktop; @: + +distro/live-webkiosk-chromium: distro/.live-webkiosk use/fonts/ttf/google +efi + @$(call add,LIVE_PACKAGES,livecd-webkiosk-chromium) + +#distro/live-webkiosk-seamonkey: distro/.live-webkiosk use/fonts/ttf/google +# @$(call add,LIVE_PACKAGES,livecd-webkiosk-seamonkey) + +distro/.live-3d: distro/.live-x11 use/x11/3d \ + use/x11/lightdm/gtk +icewm +sysvinit + @$(call add,LIVE_PACKAGES,glxgears glxinfo) + +distro/live-glxgears: distro/.live-3d; @: + +distro/.live-games: distro/.live-kiosk use/x11/3d use/sound \ + use/stage2/net-eth use/net-eth/dhcp use/services +efi +sysvinit + @$(call set,KFLAVOURS,un-def) + @$(call add,LIVE_LISTS,$(call tags,xorg misc)) + @$(call add,LIVE_PACKAGES,pciutils input-utils glxgears glxinfo) + @$(call add,LIVE_PACKAGES,glibc-locales apulse) + @$(call add,DEFAULT_SERVICES_DISABLE,rpcbind alteratord messagebus) + @$(call add,SERVICES_DISABLE,livecd-net-eth) + +distro/live-flightgear: distro/.live-games + @$(call add,LIVE_PACKAGES,FlightGear) + @$(call add,LIVE_PACKAGES,fgo livecd-fgfs) + @$(call try,HOMEPAGE,http://www.4p8.com/eric.brasseur/flight_simulator_tutorial.html) + +distro/live-flightgear-tu154: distro/.live-games + @$(call add,LIVE_PACKAGES,FlightGear-tu154b) + +distro/live-0ad: distro/.live-games + @$(call add,STAGE2_BOOTARGS,quiet) + @$(call add,LIVE_PACKAGES,0ad livecd-0ad) + @$(call try,HOMEPAGE,http://play0ad.com/) + +distro/live-gimp: distro/live-icewm use/live/ru + @$(call add,LIVE_LISTS,$(call tags,desktop sane)) + @$(call add,LIVE_PACKAGES,gimp tintii immix fim) + @$(call add,LIVE_PACKAGES,darktable geeqie rawstudio ufraw) + @$(call add,LIVE_PACKAGES,macrofusion python-module-pygtk-libglade) + @$(call add,LIVE_PACKAGES,qtfm openssh-clients rsync usbutils) + @$(call add,LIVE_PACKAGES,design-graphics-sisyphus2) + +# NB: use/browser won't do as it provides a *single* browser ATM +distro/live-privacy: distro/.base +efi +systemd +vmguest \ + use/live/base use/live/privacy use/live/ru \ + use/x11/xorg use/x11/lightdm/gtk use/x11/mate use/x11-autologin \ + use/browser/firefox/esr use/browser/firefox use/sound \ + use/fonts/otf/adobe use/fonts/otf/mozilla \ + use/fonts/ttf/google use/fonts/ttf/redhat + @$(call set,KFLAVOURS,un-def) + @$(call add,LIVE_LISTS,$(call tags,base l10n)) + @$(call add,LIVE_LISTS,$(call tags,archive extra)) + @$(call add,LIVE_PACKAGES,chromium gedit mc-full pinta xchm livecd-ru) + @$(call add,LIVE_PACKAGES,LibreOffice-langpack-ru java-1.8.0-openjdk) + @$(call add,LIVE_PACKAGES,mate-document-viewer-caja) + @$(call add,LIVE_PACKAGES,mate-document-viewer-djvu) + @$(call add,LIVE_PACKAGES,cups system-config-printer livecd-admin-cups) + @$(call add,LIVE_KMODULES,staging) + @$(call add,DEFAULT_SERVICES_ENABLE,cups) + @$(call add,EFI_BOOTARGS,live_rw) + +distro/live-privacy-dev: distro/live-privacy use/live/rw use/live/repo \ + use/dev/repo use/dev/mkimage use/dev use/control/sudo-su + @$(call add,LIVE_LISTS,$(call tags,(base || live) && builder)) + @$(call add,MAIN_LISTS,$(call tags,live builder)) + @$(call add,MAIN_PACKAGES,syslinux mkisofs) + +endif diff --git a/conf.d/mixin-alt-server.mk b/conf.d/mixin-alt-server.mk new file mode 100644 index 0000000..2b317fd --- /dev/null +++ b/conf.d/mixin-alt-server.mk @@ -0,0 +1,56 @@ +mixin/alt-server: server_groups = $(addprefix centaurus/,\ + 10-alterator 20-server-apps 50-freeipa 70-dev sambaDC buildsystem dhcp-server-a diag-tools dns-server-a ftp-server-a mail-server-a mediawiki owncloud domain-server freeipa-client nm-daemon systemd-networkd openuds openuds-tunnel admc) + +mixin/alt-server: +installer +systemd \ + use/branding/notes use/syslinux/ui/gfxboot \ + use/plymouth/stage2 use/control use/services \ + use/l10n/default/ru_RU use/install2/stage3 \ + use/install2/vnc use/install2/xfs use/install2/fat \ + use/volumes/cliff-server \ + use/apt-conf/branch \ + use/fonts/install2 \ + use/install2/stage3 \ + use/firmware/server \ + use/net/etcnet + @$(call set,INSTALLER,centaurus) + @$(call set,BRANDING,alt-server) + @$(call add,THE_BRANDING,alterator) +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call add,THE_BRANDING,bootloader bootsplash) + @$(call set,KFLAVOURS,un-def) +endif + @$(call add,BASE_LISTS,centaurus/base) + @$(call add,BASE_LISTS,centaurus/base-server) + @$(call add,LIVE_LISTS,centaurus/live) + @$(call add,LIVE_LISTS,centaurus/remmina) + @$(call add,LIVE_LISTS,centaurus/cups) + @$(call add,LIVE_LISTS,centaurus/nm) + @$(call add,LIVE_LISTS,centaurus/domain-client) + @$(call add,MAIN_GROUPS,$(server_groups)) + @$(call add,MAIN_LISTS,centaurus/cppcheck) + @$(call add,MAIN_LISTS,centaurus/disk) + @$(call add,THE_PROFILES,centaurus-10-server) + @$(call add,THE_PROFILES,centaurus-20-serverDC) +ifeq (,$(filter-out i586 x86_64 aarch64 e2k%,$(ARCH))) + @$(call add,THE_PROFILES,centaurus-30-desktop) +endif + @$(call add,THE_PROFILES,minimal) + @$(call add,STAGE1_MODLISTS,stage2-mmc) + @$(call add,INSTALL2_PACKAGES,installer-feature-multipath) + @$(call add,INSTALL2_PACKAGES,installer-feature-desktop-other-fs-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-alphabet-profiles) + @$(call add,INSTALL2_PACKAGES,installer-feature-load-tun) + @$(call add,INSTALL2_PACKAGES,installer-feature-network-shares-stage3) + @$(call add,INSTALL2_PACKAGES,installer-feature-auto-domain) +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,INSTALL2_PACKAGES,installer-feature-quota-stage2) + @$(call add,MAIN_GROUPS,centaurus/jitsi-meet) +endif + @$(call add,INSTALL2_PACKAGES,fdisk) + @$(call add,INSTALL2_PACKAGES,xorg-conf-synaptics) + @$(call add,COMMON_PACKAGES,vim-console) + @$(call add,DEFAULT_SERVICES_ENABLE,rpcbind sshd bind) + @$(call set,META_VOL_ID,ALT Server 9.1 $(ARCH)) + @$(call set,META_PUBLISHER,BaseALT Ltd) + @$(call set,META_VOL_SET,ALT) + @$(call set,META_APP_ID,ALT Server 9.1.0 $(ARCH) $(shell date +%F)) diff --git a/conf.d/mixin-basealt.mk b/conf.d/mixin-basealt.mk new file mode 100644 index 0000000..a9f71b2 --- /dev/null +++ b/conf.d/mixin-basealt.mk @@ -0,0 +1,80 @@ +# shared across all supported arches, can be complemented per arch + +mixin/alt-workstation-install: workstation_groups = $(addprefix workstation/,\ + 10-office 20-networking 30-multimedia 40-virtualization 50-publishing \ + raccess agents emulators ganttproject gnome-peer-to-peer graphics-editing \ + libreoffice mate-usershare pidgin scanning scribus \ + sound-editing thunderbird freeipa-client admc) + +mixin/alt-workstation: +systemd +systemd-optimal +pulse +nm +power \ + use/kernel/desktop \ + use/kernel/net use/l10n/default/ru_RU \ + use/x11/xorg use/x11-autostart use/x11/gtk/nm \ + use/ntp/chrony \ + use/apt-conf/branch use/volumes/alt-workstation \ + use/fonts/install2 \ + use/fonts/otf/adobe use/fonts/otf/mozilla \ + use/fonts/ttf/google use/fonts/ttf/google/extra \ + use/fonts/ttf/redhat use/fonts/ttf/ubuntu \ + use/branding use/control use/services \ + use/sound use/xdg-user-dirs \ + use/docs/manual use/docs/indexhtml \ + use/browser/firefox use/browser/firefox/esr \ + use/cleanup/live-no-cleanupdb + @$(call set,BRANDING,alt-workstation) + @$(call add,THE_BRANDING,mate-settings) + @$(call add,COMMON_PACKAGES,vim-console) + @$(call add,THE_LISTS,$(call tags,archive extra)) + @$(call add,THE_LISTS,$(call tags,mobile mate)) + @$(call add,BASE_LISTS,workstation/base.pkgs) + @$(call add,BASE_LISTS,$(call tags,desktop cups)) + @$(call add,LIVE_LISTS,workstation/live.pkgs) + @$(call add,LIVE_LISTS,$(call tags,desktop sane)) +ifneq (,$(filter-out armh,$(ARCH))) + @$(call add,LIVE_LISTS,$(call tags,desktop office)) +endif + @$(call add,THE_LISTS,workstation/mate) + @$(call add,THE_LISTS,workstation/the.pkgs) + @$(call add,THE_LISTS,$(call tags,regular desktop)) + @$(call add,THE_LISTS,$(call tags,base regular)) + @$(call add,THE_LISTS,$(call tags,base l10n)) + @$(call add,THE_LISTS,$(call tags,base desktop)) + @$(call add,THE_LISTS,$(call tags,xorg vaapi)) + @$(call add,THE_KMODULES,staging) + @$(call add,CONTROL,xdg-user-dirs:enabled) + @$(call add,SERVICES_DISABLE,sshd) + @$(call add,SERVICES_DISABLE,auditd) + @$(call add,SERVICES_ENABLE,cups smb nmb httpd2 bluetoothd libvirtd) + @$(call add,SERVICES_ENABLE,crond) + @$(call add,SERVICES_ENABLE,fstrim.timer) + @$(call add,SERVICES_DISABLE,powertop bridge gpm) + @$(call set,META_PUBLISHER,BaseALT Ltd) + @$(call set,META_VOL_SET,ALT) + @$(call set,META_VOL_ID,ALT Workstation $(DISTRO_VERSION) $(ARCH)) + @$(call set,META_APP_ID,ALT Workstation $(DISTRO_VERSION) $(ARCH) $(shell date +%F)) + @$(call set,DOCS,alt-workstation) + @$(call add,PINNED_PACKAGES,postfix) + +mixin/alt-workstation-install: +installer \ + use/install2/fat use/install2/vnc \ + use/stage2/fs use/stage2/hid use/stage2/md \ + use/stage2/mmc use/stage2/net use/stage2/net-nfs use/stage2/cifs \ + use/stage2/rtc use/stage2/sbc use/stage2/scsi use/stage2/usb + @$(call set,INSTALLER,alt-workstation) + @$(call add,INSTALL2_PACKAGES,installer-feature-slideshow) + @$(call add,INSTALL2_PACKAGES,alterator-notes) + @$(call add,INSTALL2_PACKAGES,fdisk) + @$(call add,INSTALL2_PACKAGES,btrfs-progs) + @$(call add,INSTALL2_PACKAGES,open-iscsi) + @$(call add,INSTALL2_PACKAGES,xorg-conf-libinput-touchpad) +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,INSTALL2_PACKAGES,installer-feature-quota-stage2) + @$(call add,LIVE_PACKAGES,installer-feature-quota-stage2) + @$(call add,MAIN_LISTS,workstation/extras) +endif + @$(call add,LIVE_PACKAGES,livecd-installer-features) + @$(call add,LIVE_PACKAGES,installer-feature-lightdm-stage3) + @$(call add,LIVE_PACKAGES,alterator-gpupdate) + @$(call add,MAIN_PACKAGES,solaar) + @$(call add,STAGE2_PACKAGES,chrony) + @$(call add,MAIN_GROUPS,$(workstation_groups)) diff --git a/conf.d/mixin.mk b/conf.d/mixin.mk new file mode 100644 index 0000000..e7ff512 --- /dev/null +++ b/conf.d/mixin.mk @@ -0,0 +1,160 @@ +### various mixins with their origin + +### desktop.mk +mixin/desktop-installer: +vmguest \ + use/bootloader/os-prober use/x11-autostart use/fonts/install2 use/sound + @$(call add,BASE_LISTS, \ + $(call tags,(base || desktop) && (l10n || network))) + @$(call add,INSTALL2_PACKAGES,ntfs-3g) + +### e2k.mk +mixin/e2k-base: use/tty/S0 use/net-eth/dhcp; @: + +mixin/e2k-desktop: use/e2k/x11 use/l10n/default/ru_RU \ + use/browser/firefox/esr use/browser/firefox \ + use/fonts/otf/adobe use/fonts/otf/mozilla + @$(call add,THE_PACKAGES,xinit xterm mc) + @$(call add,THE_PACKAGES,fonts-bitmap-terminus) + +mixin/e2k-livecd-install: use/e2k/x11 + @$(call add,THE_PACKAGES,livecd-install) + @$(call add,THE_PACKAGES,fdisk hdparm rsync openssh vim-console) + @$(call add,THE_PACKAGES,apt-repo) + +mixin/e2k-mate: use/e2k/x11 use/x11/xorg use/fonts/install2 \ + use/deflogin/live use/deflogin/xgrp \ + use/x11/mate use/x11/lightdm/slick \ + use/fonts/otf/adobe use/fonts/otf/mozilla \ + use/fonts/ttf/google use/fonts/ttf/redhat + @$(call set,INSTALLER,altlinux-desktop) + @$(call add,THE_BRANDING,mate-settings) + @$(call add,THE_BRANDING,alterator) + @$(call add,THE_BRANDING,graphics) + @$(call add,THE_PACKAGES,setup-mate-terminal) + @$(call add,THE_PACKAGES,setup-mate-nocomposite) + @$(call add,THE_PACKAGES,alterator-standalone) + @$(call add,THE_PACKAGES,terminfo-extra) + @$(call add,THE_PACKAGES,ethtool net-tools ifplugd) + @$(call add,THE_PACKAGES,zsh bash-completion) + +### regular.mk +mixin/regular-x11: use/luks use/volumes/regular \ + use/browser/firefox use/kernel/disable-usb-autosuspend \ + use/branding use/ntp/chrony use/services/lvm2-disable + @$(call add,THE_LISTS,$(call tags,(base || desktop) && regular && !extra)) + @$(call add,THE_PACKAGES,disable-usb-autosuspend) + @$(call add,THE_PACKAGES,btrfs-progs) + @$(call add,THE_PACKAGES,gpm) + @$(call add,DEFAULT_SERVICES_DISABLE,gpm powertop) +ifneq (,$(BRANCH)) + @$(call set,FX_FLAVOUR,-esr) +endif + +# common WM live/installer bits +mixin/regular-desktop: +alsa +power +nm-native \ + use/x11/xorg use/xdg-user-dirs use/l10n \ + use/fonts/otf/adobe use/fonts/otf/mozilla use/branding/notes + @$(call add,THE_PACKAGES,pam-limits-desktop beesu polkit dvd+rw-tools) + @$(call add,THE_BRANDING,alterator graphics indexhtml) +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,THE_BRANDING,notes) +endif + @$(call add,THE_PACKAGES,$$(THE_IMAGEWRITER)) + @$(call set,THE_IMAGEWRITER,altmediawriter) + @$(call add,THE_PACKAGES,upower udev-rules-rfkill-uaccess) + @$(call add,DEFAULT_SERVICES_DISABLE,gssd idmapd krb5kdc rpcbind) + @$(call add,DEFAULT_SERVICES_ENABLE,cups) + @$(call add,DEFAULT_SERVICES_ENABLE,alteratord) + +mixin/desktop-extra: + @$(call add,BASE_LISTS,$(call tags,(archive || base) && extra)) + +mixin/regular-wmaker: use/fonts/ttf/redhat use/x11/wmaker +nm-gtk + @$(call add,LIVE_PACKAGES,livecd-install-wmaker) + @$(call add,LIVE_PACKAGES,installer-feature-no-xconsole-stage3) + @$(call add,MAIN_PACKAGES,wmgtemp wmhdaps wmxkbru xxkb) + +mixin/regular-icewm: use/fonts/ttf/redhat +icewm +nm-gtk + @$(call add,THE_LISTS,$(call tags,regular icewm)) + @$(call add,THE_PACKAGES,icewm-startup-networkmanager) + @$(call add,THE_PACKAGES,mnt) + +# gdm2.20 can reboot/halt with both sysvinit and systemd, and is slim +mixin/regular-gnustep: use/x11/gnustep use/x11/gdm2.20 use/mediacheck \ + use/browser/seamonkey + @$(call add,THE_BRANDING,graphics) + +mixin/regular-cinnamon: use/x11/cinnamon use/x11/lightdm/slick +nm-gtk \ + use/fonts/ttf/google use/net/nm/mmgui use/im; @: + +mixin/regular-deepin: use/x11/deepin use/browser/chromium +nm; @: + +mixin/regular-gnome3: use/x11/gnome3 use/fonts/ttf/redhat +nm-gtk + @$(call add,THE_PACKAGES,gnome3-regular xcalib templates) + @$(call add,THE_PACKAGES,chrome-gnome-shell) + @$(call add,THE_PACKAGES,gnome-software-disable-updates) + +mixin/regular-kde5: use/x11/kde5 use/browser/falkon \ + use/x11/kde5-display-manager-lightdm \ + use/fonts/ttf/google use/fonts/ttf/redhat use/fonts/zerg \ + +pulse + @$(call add,THE_PACKAGES,kde5-telepathy falkon-kde5) + +mixin/xfce-base: use/x11/xfce +nm-gtk \ + use/fonts/ttf/redhat use/fonts/ttf/google/extra + @$(call add,THE_BRANDING,xfce-settings) + @$(call add,THE_PACKAGES,xfce4-regular) + @$(call add,THE_PACKAGES,xreader) + @$(call add,THE_PACKAGES,xdg-user-dirs-gtk) + +mixin/regular-xfce: mixin/xfce-base use/domain-client +pulse + @$(call add,THE_PACKAGES,light-locker pavucontrol) + @$(call add,THE_PACKAGES,xfce4-pulseaudio-plugin xfce-polkit) + +mixin/regular-xfce-sysv: mixin/xfce-base \ + use/fonts/otf/adobe use/fonts/otf/mozilla + @$(call add,THE_LISTS,xfce-sysv) + +mixin/regular-lxde: use/x11/lxde use/im +nm-gtk + @$(call add,THE_PACKAGES,qasmixer qpdfview) + +mixin/regular-lxqt: use/x11/lxqt +nm-gtk; @: + +mixin/mate-base: use/x11/mate use/fonts/ttf/google +nm-gtk + @$(call add,THE_LISTS,$(call tags,mobile mate)) + +mixin/regular-mate: mixin/mate-base use/domain-client + @$(call add,THE_LISTS,$(call tags,base smartcard)) + +mixin/office: use/fonts/ttf/google use/fonts/ttf/xo + @$(call add,THE_LISTS,$(call tags,desktop && (cups || office))) + @$(call add,THE_PACKAGES,apt-indicator) + +# NB: never ever use/syslinux/ui/gfxboot here as gfxboot mangles +# kernel cmdline resulting in method:disk instead of method:cdrom +# which will change propagator's behaviour to probe additional +# filesystems (ro but no loop) thus potentially writing to +# an unrecovered filesystem's journal +mixin/regular-rescue: use/rescue use/isohybrid use/luks use/branding \ + use/syslinux/ui/menu use/syslinux/timeout/600 \ + use/rescue/.base use/syslinux/sdab.cfg use/grub/sdab_bios.cfg \ + use/firmware/qlogic test/rescue/no-x11 +sysvinit; @: + +mixin/regular-builder: use/dev/builder/base use/net/dhcp use/ntp/chrony + @$(call add,THE_PACKAGES,bash-completion elinks gpm lftp openssh) + @$(call add,THE_PACKAGES,rpm-utils screen tmux wget zsh) + @$(call add,THE_PACKAGES,apt-repo aptitude eepm) + @$(call add,DEFAULT_SERVICES_ENABLE,gpm) + +### vm.mk +mixin/cloud-init: + @$(call add,BASE_PACKAGES,cloud-init) + @$(call add,DEFAULT_SERVICES_ENABLE,cloud-config cloud-final) + @$(call add,DEFAULT_SERVICES_ENABLE,cloud-init cloud-init-local) + @$(call set,GLOBAL_NET_ETH,) + +mixin/opennebula-context: + @$(call add,BASE_PACKAGES,opennebula-context) + @$(call add,DEFAULT_SERVICES_ENABLE,one-context-local one-context) + +mixin/icewm: use/x11/lightdm/gtk +icewm; @: diff --git a/conf.d/realtime.mk b/conf.d/realtime.mk new file mode 100644 index 0000000..90cd602 --- /dev/null +++ b/conf.d/realtime.mk @@ -0,0 +1,16 @@ +mixin/cnc-rt: use/l10n +nm-gtk +systemd +systemd-optimal \ + mixin/regular-desktop mixin/regular-lxqt use/x11/lightdm/gtk + @$(call set,KFLAVOURS,rt) + @$(call add,THE_LISTS,realtime/tests) + @$(call add,THE_LISTS,engineering/cnc) + @$(call add,THE_LISTS,engineering/misc) + +ifeq (distro,$(IMAGE_CLASS)) +distro/regular-cnc-rt: distro/.regular-x11 mixin/cnc-rt \ + use/live/install; @: +endif + +ifeq (vm,$(IMAGE_CLASS)) +vm/regular-cnc-rt: vm/systemd mixin/regular-vm-x11 mixin/vm-archdep mixin/cnc-rt; @: +vm/regular-cnc-rt-efi: vm/regular-cnc-rt +efi; @: +endif diff --git a/conf.d/regular-vm.mk b/conf.d/regular-vm.mk new file mode 100644 index 0000000..6945bd4 --- /dev/null +++ b/conf.d/regular-vm.mk @@ -0,0 +1,222 @@ +ifeq (vm,$(IMAGE_CLASS)) + +mixin/vm-archdep:: ; @: + +ifeq (,$(filter-out i586 x86_64 armh aarch64,$(ARCH))) +mixin/vm-archdep:: + @$(call set,KFLAVOURS,std-def un-def) +endif + +ifeq (,$(filter-out armh aarch64,$(ARCH))) +mixin/vm-archdep:: use/bootloader/uboot use/no-sleep use/arm-rpi4; @: +endif + +ifeq (,$(filter-out mipsel,$(ARCH))) +mixin/vm-archdep:: use/tty/S0 + @$(call set,KFLAVOURS,un-malta) +endif + +ifeq (,$(filter-out riscv64,$(ARCH))) +mixin/vm-archdep:: use/bootloader/uboot + @$(call set,KFLAVOURS,un-def) +endif + +mixin/regular-vm-base: use/firmware use/ntp/chrony use/repo \ + use/services/lvm2-disable +ifneq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,DEFAULT_SERVICES_DISABLE,multipathd) +endif + @$(call add,THE_PACKAGES,bash-completion mc update-kernel) + @$(call add,THE_PACKAGES,vim-console) + @$(call add,KMODULES,staging) + +mixin/regular-vm-jeos: mixin/regular-vm-base use/deflogin/root \ + use/net/etcnet use/net/dhcp + @$(call add,THE_PACKAGES,livecd-net-eth) + @$(call add,DEFAULT_SERVICES_ENABLE,getty@tty1 livecd-net-eth) + +mixin/regular-vm-x11:: mixin/regular-vm-base mixin/regular-x11 \ + mixin/regular-desktop use/oem +wireless; @: + +ifeq (,$(filter-out riscv64,$(ARCH))) +mixin/regular-vm-x11:: use/oem/vnc; @: +endif + +vm/.regular-desktop:: vm/systemd mixin/regular-vm-x11 \ + +systemd +systemd-optimal +plymouth + @$(call add,THE_PACKAGES,bluez) + @$(call add,DEFAULT_SERVICES_ENABLE,bluetoothd) + +ifeq (,$(filter-out armh aarch64,$(ARCH))) +vm/.regular-desktop:: + @$(call add,THE_PACKAGES,xorg-96dpi) + @$(call add,THE_LISTS,remote-access) + @$(call try,VM_SIZE,6442450944) +endif + +vm/.regular-desktop-sysv: vm/bare mixin/regular-vm-x11 use/x11/gdm2.20 \ + use/init/sysv/polkit +power; @: + +vm/.regular-gtk: vm/.regular-desktop use/x11/lightdm/gtk + @$(call add,THE_PACKAGES,blueberry) + +vm/.regular-qt: vm/.regular-desktop use/x11/sddm; @: + +vm/regular-jeos-systemd: vm/systemd \ + mixin/regular-vm-jeos mixin/vm-archdep + @$(call add,THE_PACKAGES,glibc-locales) + @$(call try,VM_SIZE,3221225472) + +vm/regular-jeos-sysv: vm/bare mixin/regular-vm-jeos mixin/vm-archdep +power; @: + +vm/regular-builder: vm/regular-jeos-systemd mixin/regular-builder; @: + +vm/regular-icewm-sysv: vm/.regular-desktop-sysv mixin/regular-icewm \ + mixin/vm-archdep; @: + +vm/regular-cinnamon: vm/.regular-gtk mixin/regular-cinnamon mixin/vm-archdep; @: + +vm/regular-deepin: vm/.regular-gtk mixin/regular-deepin mixin/vm-archdep; @: + +vm/regular-gnome3: vm/.regular-gtk mixin/regular-gnome3 mixin/vm-archdep + @$(call set,VM_SIZE,8589934592) + +vm/regular-lxde: vm/.regular-gtk mixin/regular-lxde mixin/vm-archdep; @: + +vm/regular-mate: vm/.regular-gtk mixin/mate-base mixin/vm-archdep + @$(call add,THE_PACKAGES,mate-reduced-resource) + +vm/regular-xfce: vm/.regular-gtk mixin/regular-xfce mixin/vm-archdep + @$(call add,THE_PACKAGES,xfce-reduced-resource) + +vm/regular-kde5: vm/.regular-gtk mixin/regular-kde5 mixin/vm-archdep + @$(call set,VM_SIZE,7516192768) + +vm/regular-lxqt: vm/.regular-gtk mixin/regular-lxqt mixin/vm-archdep; @: + +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +# Raspberry Pi 4 +vm/regular-jeos-systemd-rpi: vm/systemd mixin/regular-vm-jeos use/tty/AMA0 \ + use/arm-rpi4/kernel; @: + +vm/regular-jeos-sysv-rpi: vm/bare mixin/regular-vm-jeos use/tty/AMA0 \ + use/arm-rpi4/kernel +power; @: + +vm/regular-builder-rpi: vm/regular-jeos-systemd-rpi mixin/regular-builder; @: + +vm/regular-deepin-rpi: vm/.regular-gtk mixin/regular-deepin use/arm-rpi4/full; @: + +vm/regular-lxde-rpi: vm/.regular-gtk mixin/regular-lxde use/arm-rpi4/full; @: + +vm/regular-lxqt-rpi: vm/.regular-gtk mixin/regular-lxqt use/arm-rpi4/full; @: + +vm/regular-mate-rpi: vm/.regular-gtk mixin/regular-mate use/arm-rpi4/full; @: + +vm/regular-xfce-rpi: vm/.regular-gtk mixin/regular-xfce use/arm-rpi4/full; @: + +ifeq (,$(filter-out aarch64,$(ARCH))) +# Nvidia Tegra (Jetson Nano only) +vm/regular-cinnamon-tegra: vm/.regular-gtk mixin/regular-cinnamon \ + use/x11/lightdm/slick use/aarch64-tegra; @: + +vm/regular-kde5-tegra: vm/.regular-gtk mixin/regular-kde5 use/aarch64-tegra + @$(call add,THE_PACKAGES,kde5-ksplash-disabled) + +vm/regular-lxqt-tegra: vm/.regular-gtk mixin/regular-lxqt use/aarch64-tegra; @: + +vm/regular-mate-tegra: vm/.regular-gtk mixin/regular-mate use/aarch64-tegra; @: + +vm/regular-xfce-tegra: vm/.regular-gtk mixin/regular-xfce use/aarch64-tegra; @: + +endif + +ifeq (,$(filter-out armh,$(ARCH))) +# ELVIS mcom02 (free videodriver) +vm/regular-lxde-mcom02: vm/.regular-gtk mixin/regular-lxde \ + use/armh-mcom02/x11; @: + +vm/regular-lxqt-mcom02: vm/.regular-gtk mixin/regular-lxqt \ + use/armh-mcom02/x11; @: + +vm/regular-mate-mcom02: vm/.regular-gtk mixin/regular-mate \ + use/armh-mcom02/x11 + @$(call add,THE_PACKAGES,mate-reduced-resource) + +vm/regular-xfce-mcom02: vm/.regular-gtk mixin/regular-xfce \ + use/armh-mcom02/x11 + @$(call add,THE_PACKAGES,xfce-reduced-resource) + +# ELVIS mcom02 (propietary videodriver) +vm/regular-lxde-mcom02-mali: vm/.regular-gtk mixin/regular-lxde \ + use/armh-mcom02/mali; @: + +vm/regular-lxqt-mcom02-mali: vm/.regular-gtk mixin/regular-lxqt \ + use/armh-mcom02/mali; @: + +vm/regular-mate-mcom02-mali: vm/.regular-gtk mixin/mate-base \ + use/armh-mcom02/mali + @$(call add,THE_PACKAGES,mate-reduced-resource) + +vm/regular-xfce-mcom02-mali: vm/.regular-gtk mixin/regular-xfce \ + use/armh-mcom02/mali + @$(call add,THE_PACKAGES,xfce-reduced-resource) +endif +endif + +ifeq (,$(filter-out mipsel,$(ARCH))) +# Tavolga +vm/regular-jeos-systemd-tavolga: vm/systemd mixin/regular-vm-jeos \ + use/mipsel-mitx; @: + +vm/regular-jeos-sysv-tavolga: vm/bare mixin/regular-vm-jeos \ + use/mipsel-mitx +power; @: + +vm/regular-builder-tavolga: vm/regular-jeos-sysv-tavolga \ + mixin/regular-builder; @: + +vm/regular-icewm-sysv-tavolga: vm/.regular-desktop-sysv mixin/regular-icewm \ + use/mipsel-mitx/x11; @: + +vm/regular-lxde-tavolga: vm/.regular-gtk mixin/regular-lxde \ + use/mipsel-mitx/x11; @: + +vm/regular-lxqt-tavolga: vm/.regular-gtk mixin/regular-lxqt \ + use/mipsel-mitx/x11; @: + +vm/regular-mate-tavolga: vm/.regular-gtk mixin/regular-mate \ + use/mipsel-mitx/x11 + @$(call add,THE_PACKAGES,mate-reduced-resource) + +vm/regular-xfce-tavolga: vm/.regular-gtk mixin/regular-xfce \ + use/mipsel-mitx/x11 + @$(call add,THE_PACKAGES,xfce-reduced-resource) + +# bfk3 +vm/regular-jeos-systemd-bfk3: vm/systemd mixin/regular-vm-jeos \ + use/mipsel-bfk3; @: + +vm/regular-jeos-sysv-bfk3: vm/bare mixin/regular-vm-jeos \ + use/mipsel-bfk3 +power; @: + +vm/regular-builder-bfk3: vm/regular-jeos-sysv-bfk3 \ + mixin/regular-builder; @: + +vm/regular-icewm-sysv-bfk3: vm/.regular-desktop-sysv mixin/regular-icewm \ + use/mipsel-bfk3/x11; @: + +vm/regular-lxde-bfk3: vm/.regular-gtk mixin/regular-lxde \ + use/mipsel-bfk3/x11; @: + +vm/regular-lxqt-bfk3: vm/.regular-gtk mixin/regular-lxqt \ + use/mipsel-bfk3/x11; @: + +vm/regular-mate-bfk3: vm/.regular-gtk mixin/regular-mate \ + use/mipsel-bfk3/x11 + @$(call add,THE_PACKAGES,mate-reduced-resource) + +vm/regular-xfce-bfk3: vm/.regular-gtk mixin/regular-xfce \ + use/mipsel-bfk3/x11 + @$(call add,THE_PACKAGES,xfce-reduced-resource) +endif + +endif diff --git a/conf.d/regular.mk b/conf.d/regular.mk new file mode 100644 index 0000000..4a2cd55 --- /dev/null +++ b/conf.d/regular.mk @@ -0,0 +1,285 @@ +# regular build/usage images +ifeq (distro,$(IMAGE_CLASS)) + +# common ground (really lowlevel) +distro/.regular-bare: distro/.base use/kernel/net use/docs/license \ + use/stage2/fs use/stage2/hid use/stage2/md \ + use/stage2/mmc use/stage2/net use/stage2/net-nfs use/stage2/cifs \ + use/stage2/rtc use/stage2/sbc use/stage2/scsi use/stage2/usb + @$(call try,SAVE_PROFILE,yes) +ifeq (,$(BRANCH)) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call set,BOOTLOADER,grubpcboot) +endif +endif + +# base target (for most images) +distro/.regular-base: distro/.regular-bare use/vmguest use/memtest +efi; @: + +# graphical target (not enforcing xorg drivers or blobs) +distro/.regular-x11: distro/.regular-base mixin/regular-x11 \ + use/x11/wacom use/x11/amdgpu +wireless \ + use/live/x11 use/live/repo \ + use/live/suspend use/browser/firefox/live \ + use/syslinux/ui/gfxboot use/grub/ui/gfxboot + @$(call add,THE_BRANDING,bootloader) + @$(call add,THE_LISTS,$(call tags,(base || desktop) && regular)) + @$(call add,LIVE_LISTS,$(call tags,base rescue)) + @$(call add,LIVE_PACKAGES,gpm) + @$(call add,DEFAULT_SERVICES_DISABLE,gpm powertop) + +# Network install +ifeq (,$(BRANCH)) +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) +distro/regular-net-install: distro/grub-net-install + @$(call set,BOOTCHAIN_OEM_SRV_NETINST,nightly.altlinux.org) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call set,BOOTCHAIN_OEM_URL_NETINST,/sisyphus/snapshots/$(DATE)/regular-NAME-$(DATE)-$(ARCH).iso) +else + @$(call set,BOOTCHAIN_OEM_URL_NETINST,/sisyphus-aarch64/snapshots/$(DATE)/regular-NAME-$(DATE)-$(ARCH).iso) +endif +endif +endif + +# WM base target +distro/.regular-wm: distro/.regular-x11 \ + mixin/regular-desktop +vmguest \ + use/live/rw use/live/install + @$(call add,LIVE_PACKAGES,livecd-install-apt-cache) + +# DE base target +# TODO: use/plymouth/live when luks+plymouth is done, see also #28255 +distro/.regular-desktop: distro/.regular-wm use/branding/full \ + use/firmware/laptop +systemd +systemd-optimal + @$(call add,THE_PACKAGES,bluez) + @$(call add,DEFAULT_SERVICES_ENABLE,bluetoothd) + +distro/.regular-gtk: distro/.regular-desktop use/x11/lightdm/gtk +plymouth; @: + +distro/.regular-desktop-sysv: distro/.regular-wm use/init/sysv/polkit; @: + +distro/.regular-gtk-sysv: distro/.regular-desktop-sysv \ + use/syslinux/ui/gfxboot use/x11/gdm2.20; @: + +distro/.regular-install: distro/.regular-base +installer \ + use/branding use/bootloader/grub use/luks use/stage2/kms \ + use/install2/fs use/install2/vnc use/install2/repo + @$(call add,INSTALL2_PACKAGES,fdisk) + @$(call add,INSTALL2_PACKAGES,xorg-conf-synaptics) + @$(call add,THE_LISTS,$(call tags,base regular)) + @$(call add,INSTALL2_BRANDING,alterator notes) + @$(call add,THE_BRANDING,alterator) + +# common base for the very bare distros +distro/.regular-jeos-base: distro/.regular-bare \ + use/isohybrid use/branding \ + use/install2/repo use/install2/packages \ + use/net/etcnet use/power/acpi/button + @$(call set,BOOTVGA,) + @$(call set,INSTALLER,altlinux-generic) + @$(call add,INSTALL2_BRANDING,alterator notes) + @$(call add,THE_BRANDING,alterator) # just to be cleaned up later on + @$(call add,THE_PACKAGES,apt basesystem dhcpcd vim-console su agetty) + @$(call add,THE_LISTS,openssh) + +# ...and for somewhat bare distros +distro/.regular-jeos: distro/.regular-jeos-base use/stage2/kms \ + use/install2/cleanup/everything use/install2/cleanup/kernel/everything \ + use/syslinux/lateboot.cfg use/cleanup/jeos + @$(call add,BASE_PACKAGES,make-initrd-mdadm cpio) + +distro/.regular-jeos-full: distro/.regular-jeos \ + use/volumes/jeos use/ntp/chrony use/bootloader/grub \ + use/grub/localboot_bios.cfg +efi + @$(call add,BASE_PACKAGES,nfs-utils gdisk) + @$(call add,INSTALL2_PACKAGES,fdisk) +ifeq (,$(filter-out e2k%,$(ARCH))) + @$(call add,CLEANUP_PACKAGES,acpid-events-power) +else + @$(call add,MAIN_PACKAGES,firmware-linux) + @$(call add,CLEANUP_PACKAGES,libffi 'libltdl*') + @$(call add,CLEANUP_PACKAGES,bridge-utils) +endif + @$(call add,DEFAULT_SERVICES_DISABLE,fbsetfont) + @$(call add,BASE_KMODULES,drm) + +# NB: +# - stock cleanup is not enough (or installer-common-stage3 deps soaring) +distro/regular-jeos-sysv: distro/.regular-jeos-full use/cleanup/jeos/full \ + +sysvinit + @$(call add,BASE_PACKAGES,apt-conf-ignore-systemd) + +distro/regular-jeos-systemd: distro/.regular-jeos-full \ + +systemd +systemd-optimal + @$(call add,BASE_PACKAGES,glibc-locales) + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +# NB: no +efi as it brings in grub2 (no ELILO support for system boot) +distro/regular-jeos-ovz: distro/.regular-jeos use/cleanup/jeos/full +sysvinit \ + use/server/ovz-base use/control/server/ldv use/firmware use/bootloader/lilo + @$(call add,THE_PACKAGES,ipmitool lm_sensors3 mailx) +endif + +distro/.regular-install-x11: distro/.regular-install +vmguest +wireless \ + use/install2/suspend mixin/regular-desktop mixin/regular-x11 \ + use/branding/complete use/branding/slideshow/once + @$(call set,INSTALLER,altlinux-desktop) + +# assumes somewhat more experienced user +distro/.regular-install-x11-full: distro/.regular-install-x11 \ + use/fonts/otf/adobe use/fonts/otf/mozilla use/fonts/chinese \ + mixin/desktop-installer use/install2/fs use/efi/shell use/rescue/base + @$(call add,RESCUE_LISTS,$(call tags,rescue misc)) + @$(call add,MAIN_PACKAGES,anacron man-whatis usb-modeswitch) + +distro/regular-icewm-sysv: distro/.regular-gtk-sysv mixin/regular-icewm \ + use/kernel/latest; @: + +# wdm can't do autologin so add standalone one for livecd +distro/regular-wmaker-sysv: distro/.regular-desktop-sysv \ + mixin/regular-wmaker use/live/autologin + @$(call add,LIVE_PACKAGES,wdm wmxkbru) + +distro/regular-gnustep-sysv: distro/.regular-desktop-sysv \ + mixin/regular-wmaker mixin/regular-gnustep; @: +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call set,BOOTLOADER,isolinux) +endif + +distro/regular-gnustep-systemd: distro/.regular-wm +systemd \ + mixin/regular-wmaker mixin/regular-gnustep; @: + +distro/regular-xfce: distro/.regular-gtk mixin/regular-xfce; @: +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) +ifeq (,$(BRANCH)) + @$(call set,KFLAVOURS,std-def un-def) +else + @$(call set,KFLAVOURS,un-def) +endif +endif + +distro/regular-xfce-sysv: distro/.regular-gtk-sysv mixin/regular-xfce-sysv; @: + +distro/regular-xfce-sysv-install: distro/.regular-install-x11-full \ + mixin/regular-xfce-sysv use/init/sysv/polkit use/x11/gdm2.20; @: + +distro/regular-lxde: distro/.regular-gtk mixin/regular-lxde; @: + +distro/regular-mate: distro/.regular-gtk mixin/regular-mate; @: + +distro/regular-enlightenment: distro/.regular-gtk use/x11/enlightenment +power; @: + +distro/regular-cinnamon: distro/.regular-gtk mixin/regular-cinnamon; @: + +# not .regular-gtk due to gdm vs lightdm +distro/regular-gnome3: distro/.regular-desktop mixin/regular-gnome3 \ + use/kernel/latest +plymouth + @$(call add,LIVE_PACKAGES,livecd-gnome3-setup-done) + @$(call add,LIVE_PACKAGES,gnome-flashback screenpen) + +distro/regular-lxqt: distro/.regular-gtk mixin/regular-lxqt +plymouth + @$(call add,THE_LISTS,$(call tags,lxqt desktop)) + +distro/regular-deepin: distro/.regular-gtk mixin/regular-deepin; @: + +distro/regular-kde5: distro/.regular-desktop +nm \ + mixin/regular-kde5 use/domain-client +plymouth; @: + +distro/regular-robo: distro/regular-mate +robotics use/live/ru; @: + +distro/regular-rescue: distro/.regular-base mixin/regular-rescue \ + use/rescue/rw use/efi/shell use/efi/memtest86 \ + use/hdt use/syslinux/rescue_fm.cfg use/syslinux/rescue_remote.cfg \ + use/grub/rescue_fm.cfg use/grub/rescue_remote.cfg \ + use/mediacheck use/stage2/kms use/kernel/latest +wireless + @$(call add,RESCUE_PACKAGES,gpm livecd-net-eth) + @$(call add,RESCUE_LISTS,$(call tags,base bench)) + @$(call add,RESCUE_LISTS,$(call tags,network security)) + +distro/regular-rescue-netbootxyz: distro/.regular-bare mixin/regular-rescue + @$(call set,RELNAME,en.altlinux.org/rescue (netboot.xyz edition)) + @$(call set,META_VOL_ID,ALT Rescue) + @$(call set,META_APP_ID,$(ARCH)) + +distro/.regular-server-base: distro/.regular-install use/server/base + @$(call add,THE_LISTS,$(call tags,server && (regular || network))) + @$(call set,INSTALLER,altlinux-server) + @$(call add,SYSTEM_PACKAGES,multipath-tools) + @$(call add,INSTALL2_PACKAGES,installer-feature-multipath) + +distro/.regular-server: distro/.regular-server-base use/net/etcnet \ + use/server/mini use/firmware/qlogic use/rescue/base \ + use/ntp/chrony use/cleanup/libs use/bootloader/grub +efi + @$(call add,RESCUE_LISTS,$(call tags,rescue misc)) + @$(call add,BASE_PACKAGES,aptitude) + @$(call add,CLEANUP_PACKAGES,qt4-common qt5-base-common) + @$(call add,DEFAULT_SERVICES_DISABLE,bridge) + @$(call add,DEFAULT_SERVICES_ENABLE,getty@tty1) + +distro/.regular-server-managed: distro/.regular-server + @$(call add,THE_PACKAGES,alterator-fbi) + @$(call add,THE_LISTS,$(call tags,server alterator)) + @$(call add,INSTALL2_PACKAGES,ntfs-3g) + @$(call add,DEFAULT_SERVICES_DISABLE,ahttpd alteratord) + +distro/.regular-server-full: distro/.regular-server-managed \ + use/server/groups/base use/dev/groups/builder use/install2/vnc/full + @$(call add,MAIN_GROUPS,server/sambaDC) + @$(call add,MAIN_GROUPS,tools/hyperv) + @$(call add,BASE_KMODULES,staging) + +distro/regular-server-systemd: distro/.regular-server-full \ + +systemd +systemd-optimal; @: + +distro/regular-server-sysv: distro/.regular-server-full +sysvinit; @: + +distro/.regular-server-ovz: distro/.regular-server \ + use/server/ovz use/server/groups/tools use/cleanup/x11-alterator + @$(call add,MAIN_GROUPS,tools/vzstats) + +distro/regular-server-ovz: distro/.regular-server-ovz +systemd; @: +distro/regular-server-ovz-sysv: distro/.regular-server-ovz +sysvinit; @: + +distro/regular-server-hyperv: distro/.regular-server-managed \ + use/kernel/latest +systemd + @$(call add,THE_PACKAGES,hyperv-daemons) + @$(call add,DEFAULT_SERVICES_DISABLE,bridge smartd) + @$(call add,DEFAULT_SERVICES_DISABLE,cpufreq-simple powertop) + +distro/regular-server-pve: distro/.regular-server-base +systemd \ + use/kernel/server use/firmware/qlogic + @$(call set,INSTALLER,altlinux-server) + @$(call add,INSTALL2_PACKAGES,installer-feature-pve) + @$(call add,THE_PACKAGES,pve-manager nfs-clients su) + @$(call add,THE_PACKAGES,dhcpcd faketime tzdata postfix) + @$(call add,DEFAULT_SERVICES_DISABLE,pve-manager pve-cluster \ + pve-firewall pve-ha-crm pve-manager pveproxy pvedaemon \ + pvefw-logger pve-ha-lrm pvenetcommit pvestatd spiceproxy) + +distro/regular-builder: distro/.regular-bare mixin/regular-builder \ + use/dev/builder/full use/stage2/kms +sysvinit +efi +power \ + use/live/base use/live/rw use/live/repo/online use/live/textinstall \ + use/isohybrid use/syslinux/timeout/300 use/grub/timeout/30 + @$(call add,THE_PACKAGES,ccache cifs-utils wodim) + @$(call add,THE_PACKAGES,livecd-net-eth) + +distro/regular-server-samba4: distro/.regular-server-managed +systemd + @$(call add,THE_LISTS,$(call tags,server && (sambaDC || alterator))) + @$(call add,THE_PACKAGES,alterator-dhcp) + @$(call add,DEFAULT_SERVICES_DISABLE,smbd nmbd winbind) + +distro/regular-server-lxd: distro/.regular-bare \ + use/isohybrid +power \ + use/live/base use/live/rw use/live/repo/online use/live/textinstall \ + use/lxc/lxd use/tty/S0 use/init/systemd/multiuser use/kernel/latest + @$(call add,DEFAULT_SERVICES_ENABLE,sshd) + @$(call add,DEFAULT_SERVICES_ENABLE,lxd-startup lxd-bridge lxcfs cgmanager) + @$(call add,DEFAULT_SERVICES_ENABLE,getty@tty1 getty@ttyS0) + @$(call add,DEFAULT_SERVICES_ENABLE,livecd-net-eth) + +endif + +ifeq (ve,$(IMAGE_CLASS)) +ve/docker-sisyphus: ve/docker; @: +ve/regular-chroot: ve/generic; @: +endif diff --git a/conf.d/server-v.mk b/conf.d/server-v.mk new file mode 100644 index 0000000..a7fdf64 --- /dev/null +++ b/conf.d/server-v.mk @@ -0,0 +1,151 @@ +# server distributions +ifeq (distro,$(IMAGE_CLASS)) + +distro/server-v: cockpit = $(addprefix server-v/cockpit/,\ + docker kvm web) + +distro/server-v: ceph = $(addprefix server-v/ceph/,\ + client mgr mon osd radosgw) + +distro/server-v: glusterfs = $(addprefix server-v/glusterfs/,\ + client server) + +distro/server-v: iscsi = $(addprefix server-v/iscsi/,\ + initiator scsitarget targetcli) + +distro/server-v: moosefs = $(addprefix server-v/moosefs/,\ + cgiserv chunkserver client master metalogger) + +distro/server-v: lizardfs = $(addprefix server-v/lizardfs/,\ + cgiserv chunkserver client master metalogger) + +distro/server-v: linstor = $(addprefix server-v/linstor/,\ + client controller satellite opennebula-addon) + +distro/server-v: nfs = $(addprefix server-v/,\ + nfs nfs-ganesha) + +distro/server-v: opennebula = $(addprefix server-v/opennebula/,\ + flow gate gui node-kvm node-lxd server) + +distro/server-v: openstack = $(addprefix server-v/openstack/,\ + block compute controller network) +# storage + +distro/server-v: container = $(addprefix server-v/,\ + docker kubernetes-master kubernetes-node podman lxd) + +distro/server-v: network = $(addprefix server-v/,\ + apache2 nginx bird dhcp dns haproxy keepalived openvswitch freeipa-client) + +distro/server-v: monitoring = $(addprefix server-v/,\ + zabbix-agent telegraf prometheus-node_exporter monit collectd nagios-nrpe) +# zabbix prometheus influxdb grafana + +distro/server-v: backup = $(addprefix server-v/,\ + bacula urbackup-client) + +distro/server-v: logging = $(addprefix server-v/,\ + rsyslog-classic systemd-journal-remote) + +distro/server-v: profiles = $(addprefix server-v/,\ + 111-opennebula-server 112-opennebula-node 113-opennebula-lxd 140-basic 201-docker) +#121-openstack-node 122-openstack-controller + +ifeq (,$(filter-out x86_64 aarch64,$(ARCH))) +distro/server-v: profiles_arch = $(addprefix server-v/,\ + 130-pve) +# 211-openvz +endif + +distro/.server-v-base: distro/.base distro/.installer \ + use/efi/shell use/efi/grub +efi \ + use/memtest use/rescue/base \ + +systemd-optimal \ + use/services use/control \ + use/l10n/default/ru_RU \ + use/isohybrid \ + use/install2/vnc/full \ + use/install2/xfs use/install2/fat use/install2/stage3 \ + use/kernel/server use/kernel/drm \ + use/firmware use/firmware/cpu \ + use/net/etcnet use/net-ssh \ + use/stage2/fs use/stage2/hid use/stage2/md \ + use/stage2/mmc use/stage2/net use/stage2/net-nfs use/stage2/cifs \ + use/stage2/rtc use/stage2/scsi use/stage2/usb \ + use/stage2/kms \ + use/server/virt use/docs/license + @$(call add,BASE_LISTS,server-base openssh) + @$(call add,EFI_BOOTARGS,lang=ru_RU) + @$(call set,BRANDING,alt-server-v) + @$(call set,INSTALLER,alt-server-v) + @$(call add,INSTALL2_PACKAGES,alterator-notes) + @$(call add,INSTALL2_PACKAGES,installer-feature-multipath) + @$(call add,INSTALL2_PACKAGES,installer-feature-server-raid-fixup-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-quota-stage2) + @$(call add,INSTALL2_PACKAGES,fonts-ttf-google-croscore-arimo) + @$(call add,INSTALL2_PACKAGES,ntfs-3g) + @$(call add,INSTALL2_BRANDING,bootloader bootsplash notes slideshow) + @$(call add,THE_BRANDING,alterator graphics) + @$(call add,THE_BRANDING,indexhtml slideshow) + @$(call add,THE_PACKAGES,alterator-fbi alterator-notes) + @$(call add,THE_LISTS,$(call tags,basesystem alterator)) + @$(call add,THE_LISTS,$(call tags,server alterator)) + @$(call add,THE_LISTS,$(call tags,server network)) + @$(call add,COMMON_PACKAGES,vim-console) + @$(call add,SYSTEM_PACKAGES,mdadm-tool lvm2 multipath-tools fdisk xfsprogs btrfs-progs file) + +distro/server-v: distro/.server-v-base +installer \ + use/ntp/chrony \ + use/install2/net use/install2/autoinstall \ + use/apt-conf/branch use/install2/repo + @$(call add,RESCUE_BOOTARGS,nomodeset vga=0) + @$(call set,IMAGE_FLAVOUR,$(subst alt-10-,,$(IMAGE_NAME))) + @$(call set,META_VOL_ID,ALT Server-V 10.0.0 $(ARCH)) + @$(call set,META_PUBLISHER,BaseALT Ltd) + @$(call set,META_VOL_SET,ALT) + @$(call set,META_APP_ID,ALT Server-V 10.0.0 $(ARCH) $(shell date +%F)) + @$(call set,DOCS,alt-server-v) + @$(call add,BASE_LISTS,virt/base.pkgs) + @$(call add,MAIN_LISTS,virt/extra.pkgs) + @$(call add,MAIN_GROUPS,server-v/110-opennebula $(opennebula)) +ifeq (,$(filter-out x86_64 aarch64,$(ARCH))) + @$(call add,MAIN_GROUPS,server-v/130-pve server-v/pve server-v/linstor/pve-storage) +endif + @$(call add,MAIN_GROUPS,server-v/140-basic server-v/kvm) + @$(call add,MAIN_GROUPS,server-v/200-container $(container)) + @$(call add,MAIN_GROUPS,server-v/300-cluster server-v/corosync_pacemaker) + @$(call add,MAIN_GROUPS,server-v/400-storage) + @$(call add,MAIN_GROUPS,server-v/410-ceph $(ceph)) + @$(call add,MAIN_GROUPS,server-v/420-glusterfs $(glusterfs)) + @$(call add,MAIN_GROUPS,server-v/450-nfs $(nfs)) + @$(call add,MAIN_GROUPS,server-v/460-iscsi $(iscsi)) + @$(call add,MAIN_GROUPS,server-v/470-linstor $(linstor)) + @$(call add,MAIN_GROUPS,server-v/500-network $(network)) + @$(call add,MAIN_GROUPS,server-v/600-monitoring $(monitoring)) + @$(call add,MAIN_GROUPS,server-v/700-backup $(backup)) + @$(call add,MAIN_GROUPS,server-v/800-logging $(logging)) + @$(call add,THE_PROFILES,$(profiles) $(profiles_arch) minimal) + @$(call add,DEFAULT_SERVICES_ENABLE,getty@tty1 getty@ttyS0) + @$(call add,DEFAULT_SERVICES_ENABLE,fstrim.timer) + @$(call add,DEFAULT_SERVICES_ENABLE,libvirtd) + @$(call add,DEFAULT_SERVICES_ENABLE,docker lxd kubelet kube-proxy) + @$(call add,DEFAULT_SERVICES_ENABLE,bind mysqld openvswitch) + @$(call add,DEFAULT_SERVICES_ENABLE,rsyslogd systemd-journal-gatewayd) + @$(call add,DEFAULT_SERVICES_DISABLE,powertop bridge gpm) + @$(call add,DEFAULT_SERVICES_DISABLE,consolesaver) + @$(call add,DEFAULT_SERVICES_DISABLE,ahttpd alteratord) + @$(call add,DEFAULT_SERVICES_DISABLE,systemd-networkd systemd-resolved) + @$(call add,DEFAULT_SERVICES_ENABLE,pve-manager pve-cluster pveproxy pvedaemon pvestatd \ + pve-firewall pvefw-logger pve-guests pve-ha-crm pve-ha-lrm spiceproxy \ + lxc lxcfs lxc-net lxc-monitord qmeventd) + +# @$(call add,MAIN_GROUPS,server-v/141-cockpit $(cockpit)) +# @$(call add,MAIN_GROUPS,server-v/430-moosefs $(moosefs)) +# @$(call add,MAIN_GROUPS,server-v/ocfs2) +# @$(call add,MAIN_GROUPS,server-v/120-openstack $(openstack)) +#ifeq (,$(filter-out x86_64,$(ARCH))) +# @$(call add,MAIN_GROUPS,server-v/openvz) +#endif + +endif diff --git a/conf.d/server.mk b/conf.d/server.mk new file mode 100644 index 0000000..78ec347 --- /dev/null +++ b/conf.d/server.mk @@ -0,0 +1,29 @@ +# server distributions +ifeq (distro,$(IMAGE_CLASS)) + +distro/.server-base: distro/.installer use/syslinux/ui/menu use/memtest \ + use/cleanup/x11-alterator + @$(call add,BASE_LISTS,server-base openssh) + +distro/server-nano: distro/.server-base use/bootloader/lilo +power \ + use/install2/cleanup/crypto use/install2/cleanup/vnc + @$(call add,BASE_LISTS,$(call tags,server network)) + @$(call add,BASE_PACKAGES,dhcpcd cpio) + +distro/server-mini: distro/.server-base \ + use/server/mini use/kernel/net use/efi use/power/acpi/button + @$(call set,INSTALLER,altlinux-server) + @$(call add,BASE_PACKAGES,make-initrd-mdadm make-initrd-lvm) + +distro/server-mini-systemd-networkd: distro/.server-base \ + use/net/networkd +systemd \ + use/server/mini use/efi use/firmware + @$(call set,INSTALLER,altlinux-server) + +distro/server-ovz: distro/server-mini use/server/ovz use/server/groups/base \ + use/install2/net use/hdt use/rescue \ + use/firmware/server use/firmware/cpu +wireless; @: + +distro/server-zabbix: distro/server-mini use/server/zabbix; @: + +endif diff --git a/conf.d/slinux.mk b/conf.d/slinux.mk new file mode 100644 index 0000000..caef0e7 --- /dev/null +++ b/conf.d/slinux.mk @@ -0,0 +1,68 @@ +# Simply Linux images + +ifeq (distro,$(IMAGE_CLASS)) + +distro/slinux-live: distro/.livecd-install use/slinux/base + @$(call add,THE_LISTS,slinux/live-install) + @$(call set,META_VOL_ID,Simply Linux live $(DISTRO_VERSION) $(ARCH)) + @$(call set,META_APP_ID,Simply Linux live $(DISTRO_VERSION) $(ARCH) $(shell date +%F)) + +distro/slinux: distro/.installer use/slinux/full use/rescue/base + @$(call set,INSTALLER,simply-linux) + @$(call add,MAIN_GROUPS,slinux/emulators-full slinux/games-base slinux/games slinux/games-full slinux/graphics-base slinux/graphics slinux/graphics-full-inkscape slinux/multimedia-full-audacity slinux/multimedia-base slinux/multimedia-full-cheese slinux/multimedia slinux/multimedia-full-shotcut slinux/multimedia-full-sound-juicer slinux/multimedia-full-obs-studio slinux/net-base) +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,MAIN_GROUPS,slinux/dropbox slinux/graphics-full-shotwell) +endif + @$(call set,META_VOL_ID,Simply Linux $(DISTRO_VERSION) $(ARCH)) + @$(call set,META_APP_ID,Simply Linux $(DISTRO_VERSION) $(ARCH) $(shell date +%F)) +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call set,KFLAVOURS,std-def) +endif +endif + +ifeq (vm,$(IMAGE_CLASS)) +vm/slinux:: use/slinux/vm-base use/auto-resize +ifeq (,$(filter-out armh aarch64 mipsel e2k%,$(ARCH))) + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) +else + @$(call add,THE_LISTS,slinux/multimedia-player-vlc) +endif + +ifeq (,$(filter-out aarch64 armh riscv64,$(ARCH))) +vm/slinux:: use/uboot + @$(call add,BASE_LISTS,uboot) + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) +endif + +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +vm/slinux:: use/no-sleep use/arm-rpi4; @: +endif + +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +vm/slinux-rpi: use/slinux/vm-base use/arm-rpi4/full + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) +endif + +ifeq (,$(filter-out aarch64,$(ARCH))) +vm/slinux-tegra: use/slinux/vm-base use/aarch64-tegra + @$(call add,THE_LISTS,slinux/multimedia-player-vlc) +endif + +ifeq (,$(filter-out armh,$(ARCH))) +vm/slinux-mcom02: use/slinux/vm-base use/armh-mcom02/x11 + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) +endif + +ifeq (,$(filter-out mipsel,$(ARCH))) +vm/slinux:: + @$(call add,THE_PACKAGES,installer-feature-bell-off-stage3) + @$(call add,THE_PACKAGES,xfce-reduced-resource) + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) + +vm/slinux-tavolga: vm/slinux use/mipsel-mitx/x11 + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) +vm/slinux-bfk3: vm/slinux use/mipsel-bfk3/x11 + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) +endif + +endif diff --git a/conf.d/test.mk b/conf.d/test.mk new file mode 100644 index 0000000..03c5da0 --- /dev/null +++ b/conf.d/test.mk @@ -0,0 +1,79 @@ +# debug/test/experimental images +ifneq (,$(DEBUG)) + +ifeq (distro,$(IMAGE_CLASS)) +# For check all package lists +distro/pkg-all-lists: distro/.init + @$(call add,THE_LISTS,*) + +distro/syslinux-auto: distro/.boot use/hdt use/syslinux/timeout/1; @: +distro/syslinux-noescape: distro/syslinux-auto use/syslinux/noescape.cfg; @: + +distro/live-systemd: distro/.base use/live/base +systemd; @: +distro/live-plymouth: distro/.live-base use/plymouth/live; @: +distro/live-mediacheck: distro/.base use/mediacheck +plymouth; @: + +distro/live-testserver: distro/live-install use/server/mini + @$(call set,KFLAVOURS,std-def el-smp) + +# NB: requires runtime Server/ServerActive setup in zabbix_agentd.conf +distro/live-zabbix: distro/live-icewm use/net-eth + @$(call add,THE_PACKAGES,zabbix-agent) + @$(call add,DEFAULT_SERVICES_ENABLE,zabbix_agentd) + +distro/icewm-efi: distro/icewm use/efi/debug use/firmware + @$(call add,INSTALL2_PACKAGES,strace) + +distro/mate-kz: distro/regular-mate + @$(call set,GLOBAL_BOOT_LANG,kk_KZ) + @$(call add,LIVE_PACKAGES,hunspell-kk) + +# a minimalistic systemd-based server installer +distro/server-systemd: distro/server-nano \ + use/install2/repo use/cleanup/x11-alterator use/net/networkd +systemd + @$(call add,CLEANUP_PACKAGES,glib2 iw libpython libwireless) + +distro/server-test: distro/server-mini use/relname + @$(call set,RELNAME,Test-Server) + +# something marginally useful (as a network-only installer) +# NB: doesn't carry stage3 thus cannot use/bootloader +distro/netinst: distro/.base use/install2/net; @: + +distro/propagator-test: distro/.base use/mediacheck + @$(call add,STAGE2_BOOTARGS,propagator-debug) + +distro/desktop-luks: distro/icewm use/luks; @: +distro/desktop-systemd: distro/icewm +systemd; @: +distro/desktop-plymouth: distro/icewm +plymouth; @: +distro/server-efi: distro/server-mini use/efi/debug; @: + +distro/server-zabbix: distro/server-mini use/server/zabbix use/net-eth + +# a crop of images running stuff as PID 1 +distro/bash: distro/.base use/pid1 + @$(call add,STAGE1_PACKAGES,bash) + @$(call set,PID1_BIN,/bin/bash) + +distro/vi: distro/.base use/pid1 + @$(call add,STAGE1_PACKAGES,vim-minimal) + @$(call set,PID1_BIN,/bin/vi) + +distro/emacs: distro/.base use/pid1 + @$(call add,STAGE1_PACKAGES,mg) + @$(call set,PID1_BIN,/usr/bin/mg) + +distro/elinks: distro/.base use/pid1/net + @$(call add,STAGE1_PACKAGES,elinks) + @$(call set,PID1_BIN,/usr/bin/elinks) + +endif # IMAGE_CLASS: distro + +ifeq (vm,$(IMAGE_CLASS)) + +vm/net-static: vm/bare use/net-eth use/net-ssh + @$(call add,NET_ETH,eth0:static:10.0.2.16/24:10.0.2.2) + +endif # IMAGE_CLASS: vm + +endif diff --git a/conf.d/ve.mk b/conf.d/ve.mk new file mode 100644 index 0000000..0fe550f --- /dev/null +++ b/conf.d/ve.mk @@ -0,0 +1,70 @@ +ifeq (ve,$(IMAGE_CLASS)) + +# no "vzctl enter" +ve/bare: ve/.base +sysvinit; @: + +# /dev/pty and friends start here +ve/base: ve/bare use/net-dns/level3 + @$(call add,BASE_PACKAGES,interactivesystem) + +# a particular package list +ve/ldv: ve/bare use/control/server/ldv + @$(call add,BASE_PACKAGES,xz bzip2 glibc hostinfo less) + @$(call add,BASE_PACKAGES,vim-console netlist rsync time) + @$(call add,BASE_PACKAGES,openssh-blacklist openssh-server) + @$(call add,BASE_PACKAGES,shadow-edit shadow-groups) + +ve/docker: ve/.apt use/repo + @$(call add,BASE_PACKAGES,iproute2) + +# build environment +ve/builder: ve/base use/dev/builder/base use/repo + @$(call add,BASE_LISTS,openssh) + +# this should be more or less convenient +ve/generic: ve/base use/repo + @$(call add,BASE_PACKAGES,vim-console etckeeper apt-rsync) + @$(call add,BASE_LISTS,openssh \ + $(call tags,base && (server || network || security || pkg))) + +# example of service-specific template +ve/openvpn: ve/bare + @$(call add,BASE_LISTS,$(call tags,server openvpn)) + +ve/pgsql: ve/generic + @$(call add,BASE_PACKAGES,postgresql-server) + +ve/samba-DC: ve/generic + @$(call add,BASE_PACKAGES,task-samba-dc glibc-locales net-tools) + +ve/sysvinit-etcnet: ve/base use/net/etcnet \ + use/control/sudo-su use/repo use/net-ssh + @$(call add,BASE_PACKAGES,glibc-gconv-modules glibc-locales tzdata bash-completion iptables curl) + +ve/systemd-bare: ve/.apt use/init/systemd \ + use/control/sudo-su use/repo use/net-ssh + @$(call add,BASE_PACKAGES,interactivesystem su) + +ve/systemd-base: ve/systemd-bare + @$(call add,BASE_PACKAGES,apt-scripts) + @$(call add,BASE_PACKAGES,systemd-settings-disable-kill-user-processes) + @$(call add,BASE_PACKAGES,glibc-gconv-modules glibc-locales tzdata bash-completion iptables curl) + +ve/systemd-networkd: ve/systemd-base use/net/networkd/resolved; @: +ve/systemd-etcnet: ve/systemd-base use/net/etcnet; @: + +ve/.lxc-bare: use/lxc-guest + @$(call add,NET_ETH,eth0:dhcp) + +ve/.lxc-base: ve/.lxc-bare + @$(call add,BASE_PACKAGES,vim-console) + +ve/lxc-sysvinit-etcnet: ve/.lxc-base ve/sysvinit-etcnet use/net-eth; @: +ve/lxc-systemd-etcnet: ve/.lxc-base ve/systemd-etcnet use/net-eth; @: +ve/lxc-systemd-networkd: ve/.lxc-base \ + ve/systemd-networkd use/net-eth/networkd; @: + +ve/lxc-builder: ve/lxc-sysvinit-etcnet use/dev/builder/base use/repo + @$(call add,BASE_LISTS,openssh) + +endif diff --git a/conf.d/vm.mk b/conf.d/vm.mk new file mode 100644 index 0000000..82c991e --- /dev/null +++ b/conf.d/vm.mk @@ -0,0 +1,62 @@ +# virtual machines +ifeq (vm,$(IMAGE_CLASS)) + +# NB: interactivesystem pulls in network-config-subsystem anyways +vm/bare: vm/.base-lilo +sysvinit + @$(call add,BASE_PACKAGES,apt) + +vm/systemd: vm/.base-grub use/init/systemd + @$(call add,BASE_PACKAGES,glibc-gconv-modules glibc-locales tzdata) + @$(call add,BASE_PACKAGES,apt) + +vm/acos: vm/.base-grub use/init/systemd use/net-eth/networkd-dhcp use/net-ssh + @$(call add,BASE_PACKAGES,ostree dracut ignition docker-engine sudo su) + +# handle ROOTPW (through deflogin) +vm/net: vm/bare use/net-eth/dhcp use/net-ssh \ + use/repo use/control/sudo-su use/deflogin + @$(call add,BASE_PACKAGES,su) + +vm/systemd-net: vm/systemd use/net-eth/networkd-dhcp use/net-ssh \ + use/repo use/control/sudo-su use/deflogin + @$(call add,BASE_PACKAGES,su) + +# vm/net or vm/systemd-net +vm/cloud-systemd: vm/systemd-net mixin/cloud-init use/vmguest/kvm use/tty/S0 \ + use/net/networkd/resolved + @$(call add,THE_KMODULES,drm) + @$(call add,VM_INITRDMODULES,sr_mod) + @$(call add,BASE_PACKAGES,update-kernel) + @$(call add,BASE_PACKAGES,apt-scripts) + @$(call add,BASE_PACKAGES,systemd-settings-disable-kill-user-processes) + @$(call add,DEFAULT_SERVICES_ENABLE,getty@tty1 getty@ttyS0) + @$(call add,DEFAULT_SERVICES_DISABLE,consolesaver) + +vm/cloud-sysv: vm/net mixin/cloud-init use/vmguest/kvm use/power/acpi/button; @: + +# vm with OpenNebula contextualization package (with empty network config) +vm/opennebula-systemd: vm/systemd use/net/networkd use/net-ssh \ + use/vmguest/kvm mixin/opennebula-context \ + use/repo use/control/sudo-su use/deflogin + @$(call add,BASE_PACKAGES,su) + +# NB: use/x11 employs some installer-feature packages +vm/.desktop-bare: vm/net use/x11/xorg use/cleanup/installer use/repo; @: + +vm/.desktop-base: vm/.desktop-bare \ + use/deflogin/altlinuxroot use/x11-autologin; @: + +vm/icewm: vm/.desktop-base mixin/icewm; @: + +vm/icewm-setup: vm/.desktop-bare mixin/icewm use/oem use/x11-autostart + @$(call set,BRANDING,simply-linux) + @$(call add,THE_BRANDING,graphics) + @$(call add,THE_LISTS,$(call tags,base l10n)) + +# some arbitrary gigabyte +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +vm/vagrant-base: vm/net use/vagrant + @$(call set,VM_SIZE,10737418240) +endif + +endif diff --git a/doc/.fop.xconf b/doc/.fop.xconf new file mode 100644 index 0000000..c0c40e4 --- /dev/null +++ b/doc/.fop.xconf @@ -0,0 +1,54 @@ + + + + + + + . + 72 + 72 + + + + + flate + + + + + + + + + + 240 + resources.afp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/.gitignore b/doc/.gitignore new file mode 100644 index 0000000..1c294db --- /dev/null +++ b/doc/.gitignore @@ -0,0 +1,5 @@ +mkimage-profiles.chunked +docbook-xsl.css +mkimage-profiles.pdf +mkimage-profiles.html +mkimage-profiles.7 diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..c1e4721 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,71 @@ +# build asciidoc books + +ifdef BUILDDIR +DEST = -D "$(BUILDDIR)" +endif + +ifdef DEBUG +VERBOSE = --verbose +endif + +# avoid common DEBUG for the time being +-include $(HOME)/.mkimage/profiles.mk + +PROJECT = mkimage-profiles +TOPLEVEL_DOC = $(PROJECT).asciidoc +RESOURCE_FILES = /etc/asciidoc + +A2X = a2x +FXC = .fop.xconf + +L = ru +DEPTH = 3 + +# common args (and the source file to process) come last +XSLT_ARGS = --stringparam toc.max.depth $(DEPTH) +COMMON_ARGS = -d book -a lang="$L" $(DEST) $(VERBOSE) $(TOPLEVEL_DOC) +HTML_ARGS = -a data-uri --icons -r $(RESOURCE_FILES) -r . \ + --xsltproc-opts='$(XSLT_ARGS)' $(COMMON_ARGS) + +# most convenient deliverables +DOCS_OUT = mkimage-profiles.7 $(PROJECT).pdf $(PROJECT).html docbook-xsl.css + +# intermediate files +DOCS_TMP = $(PROJECT).fo $(PROJECT).xml + +.PHONY: all prep chunked xhtml pdf clean + +all: man chunked xhtml pdf + +# NB: destination defined externally +publish: all + @if [ -n "$(DOCS_PUBLISH)" ]; then \ + rsync -qa $(DOCS_OUT) "$(DOCS_PUBLISH)"; \ + fi + +prep: + @if [ -n "$(BUILDDIR)" ]; then mkdir -p "$(BUILDDIR)"; fi + +man: + @VERSION="$$(sed -rn 's/^Version: ([0-9.]+).*$$/\1/p' \ + ../.gear/mkimage-profiles.spec)"; \ + sed -e "s,@VERSION@,$$VERSION,g" \ + < mkimage-profiles.7.in \ + > mkimage-profiles.7 + +chunked xhtml: prep + @echo "** building $@ book" + @$(A2X) -f $@ $(HTML_ARGS) + +pdf: prep + @echo "** building $@ book" + @$(A2X) --xsltproc-opts='$(XSLT_ARGS) \ + --stringparam title.font.family "DejaVu Sans" \ + --stringparam body.font.family "DejaVu Serif" \ + --stringparam monospace.font.family "DejaVu Sans Mono"' \ + --fop --fop-opts='-c $(FXC)' -f pdf $(COMMON_ARGS) + +clean: + @echo "** cleaning up" + @if [ -d "$(BUILDDIR)" ]; then cd "$(BUILDDIR)"; fi; \ + rm -rf $(DOCS_OUT) $(DOCS_TMP) $(PROJECT).chunked/ diff --git a/doc/apt.conf.sample b/doc/apt.conf.sample new file mode 100644 index 0000000..3cd4c64 --- /dev/null +++ b/doc/apt.conf.sample @@ -0,0 +1,8 @@ +// these must be unset to avoid picking up +// /etc/apt/{apt.conf.d,sources.list.d,}/ +Dir::Etc::main "/dev/null"; +Dir::Etc::parts "/var/empty"; +Dir::Etc::SourceParts "/var/empty"; + +// this is what caused the whole trouble +Dir::Etc::sourcelist "/home/mike/apt/sources.list"; diff --git a/doc/archdep.txt b/doc/archdep.txt new file mode 100644 index 0000000..4a33233 --- /dev/null +++ b/doc/archdep.txt @@ -0,0 +1,67 @@ +== Архитектурно-зависимые фрагменты == + +=== Makefile === + +Достаточно воспользоваться ifeq/ifneq, сравнивая $(ARCH) с нужным: + + ifeq (x86_64,$(ARCH)) + EFI_LISTS := $(call tags,base efi) + endif + +При необходимости сравнить со списком ("любой x86") можно сделать так: + + ifeq (,$(filter-out i586 x86_64,$(ARCH))) + use/x11/xorg: use/x11 use/x11/intel use/firmware + else + use/x11/xorg: use/x11 + endif + +В рецептах (shell-часть Makefile) используйте $(ARCH) или $$ARCH. + +=== скрипты === + +В скриптовых хуках ({image-,}scripts.d/*) проверяйте $GLOBAL_ARCH. + +=== списки пакетов, профили групп === + +Бывает так, что в списке пакетов есть смысл упоминать какой-либо из них +только для определённой архитектуры (например, wine или steam); в таких +случаях можно воспользоваться механизмом подстановки, который пословно +обрабатывает списки и в случае наличия суффикса @ARCH оставляет только +слова, в которых этот суффикс соответствует заданной архитектуре сборки. + +Например, для Simply Linux в mkimage-profiles-desktop есть строчки: + + @I586_ONLY@haspd + @X86_64_ONLY@i586-haspd + +В случае mkimage-profiles они должны выглядеть так: + + haspd@i586 + i586-haspd@x86_64 + +или упрощённо (с версии 1.2.12): + + haspd@IA32 + +С версии 1.3.15 поддерживается макрос E2K ("любое поколение e2k*") и +ARM (armh или aarch64), а также выборка "для любой архитектуры, кроме" +(например, @!E2K, или "@!ARM). + +Для преобразования можно воспользоваться следующей командой: + + sed -r -e 's/@I586_ONLY@([^\t ]+)/\1@i586/g' \ + -e 's/@X86_64_ONLY@([^\t ]+)/\1@x86_64/g' + +При необходимости добавить пакет только на x86-архитектурах (неважно, +i586 или x86_64) можно воспользоваться макросом X86 (с версии 1.2.12): + + xorg-drv-intel@X86 + +Аналогичная функциональность реализована для профилей установки. + +=== загрузчики === + +Как правило, сперва понадобится доработка mkimage -- см. скрипты +tools/mki-pack-*boot -- и лишь затем профиля; см. тж. lib/boot.mk +и фичу pack. diff --git a/doc/assumptions.txt b/doc/assumptions.txt new file mode 100644 index 0000000..22d833c --- /dev/null +++ b/doc/assumptions.txt @@ -0,0 +1,55 @@ +== Предположения == + +Некоторые фрагменты кода закладываются на определённое поведение +других частей mkimage-profiles либо содержание переменных. + +NB: пути приводятся от верхнего уровня; проект в целом предполагает +наличие ALT 8.0+ и GNU make 3.82+ (на которых и разрабатывается), +но может быть портирован вместе с mkimage. Если что-либо не работает +или не собирается, стоит проверить на Sisyphus (mkimage, make, hasher, +собственно пакетная база), поскольку именно на нём происходит основная +разработка mkimage-profiles. Сломанная сборка на текущем стабильном +бранче считается ошибкой и подлежит исправлению, если оно технически +возможно на базе этого бранча. + +* lib/report.mk +** ожидает, что каждая подлежащая трассированию цель каждого + makefile при сборке конфигурации образа содержит непустой + recipe -- хотя бы "; @:" -- т.к. зависит от запуска $(SHELL) +** трассировка выполняется при REPORT=1 для формирования графа + зависимостей между промежуточными целями сборки конечного образа +** характерный признак пропуска -- разрыв графа (report-targets.png) + +* pkg.in/lists/Makefile +** ожидает, что названия списков пакетов указываются в переменных + вида *_LISTS, и копирует в генерируемый профиль только их +** если задать имя файла списка пакетов непосредственно в Makefile + субпрофиля, он не будет скопирован +** характерное сообщение об ошибке: + + E: Couldn't find package + +* features.in/kernel/stage1/scripts.d/80-make-initrd +* features.in/stage2/stage1/scripts.d/03-test-kernel +* sub.in/stage1/Makefile +** если используется загрузчик отличный от grub, то в stage1 попадёт + последнее ядро, указанное в STAGE1_KFLAVOURS или KFLAVOURS +** если добавить какой-либо kernel-image в STAGE1_PACKAGES*, + результат может быть неожиданным +** обратите внимание: bin/tar2fs умеет несколько ядер +** вероятная ошибка: незагрузка полученного squashfs + +* features.in/install2/install2/stage2cfg.mk +* features.in/live/live/stage2cfg.mk +* features.in/rescue/rescue/stage2cfg.mk +* features.in/syslinux/cfg.in/15live.cfg +* features.in/syslinux/cfg.in/20install2.cfg +* features.in/syslinux/cfg.in/80rescue.cfg +* features.in/syslinux/scripts.d/20-propagator-ramdisk +** ожидают, что названия squashfs-образов второй стадии инсталятора, + livecd и спасательной системы соответственно altinst, live и rescue + +* image.in/Makefile +** ожидает, что конфигурация будет в distcfg.mk (см. тж. lib/profile.mk), + а лог сборки -- в build.log (см. тж. lib/log.mk); альтернативой было + бы пробрасывание переменных с полным путём ради единственного места diff --git a/doc/branch.txt b/doc/branch.txt new file mode 100644 index 0000000..2573d12 --- /dev/null +++ b/doc/branch.txt @@ -0,0 +1,26 @@ +=== Переменная BRANCH === + +Переменная make, указывающая для какого бранча производится сборка. +Если не указана, сборка осуществляется для Сизифа. +Для того, чтобы при указании этой переменной сборка осуществлялась для +целевого бранча, требуется: + +* прописать в ~/.mkimage/profiles.mk: + +-------------------------------------- +ifneq (,$(BRANCH)) +APTCONF = ~/apt/apt.conf.$(BRANCH).$(ARCH) +else +APTCONF = ~/apt/apt.conf.sisyphus.$(ARCH) +endif +-------------------------------------- + +* создать целевые конфиги apt по указанным выше путям. + +Помимо этого переменная BRANCH, если определена, заменяет в имени +собираемой цели слово "regular" на "alt-$BRANCH". Таким образом +достигается сборка стартеркитов из профиля регулярок под заданный +бранч. + +Также эту переменную можно использовать в профилях других целей +для обеспечения поддержки целевого бранча. diff --git a/doc/debug.txt b/doc/debug.txt new file mode 100644 index 0000000..5a7a22e --- /dev/null +++ b/doc/debug.txt @@ -0,0 +1,26 @@ +== Ловля блох == + +При отладке сборки конфигурации или самого дистрибутива +могут оказаться полезными следующие средства: + +* build/distcfg.mk +** формируется автоматически в процессе построения конфигурации; +** содержит трассировочную информацию (откуда что взялось); +** этот файл применяется как авторитетный конфигурационный + +* build/build.log +** подробность зависит от значения переменной DEBUG, + которую можно передать при запуске make (см. params.txt); +** содержит коммит, из которого происходит сборка, и признак + "грязности" рабочего каталога при наличии модификаций после + этого коммита; +** содержит список конфигурационных переменных и их конечных значений, + созданный на основании distcfg.mk (см. тж. build/vars.mk) + +* REPORT=1 включает генерацию дополнительного вывода: +** build/reports/targets.png -- граф зависимостей между целями +** build/reports/scripts.log -- порядок запуска скриптовых хуков +** build/reports/cleanlog.log -- более пригодный для diff(1) журнал сборки + +Общая информация по отладке сборки профилей mkimage доступна на вики: +https://www.altlinux.org/Mkimage/debug diff --git a/doc/features.txt b/doc/features.txt new file mode 100644 index 0000000..ebe9fa0 --- /dev/null +++ b/doc/features.txt @@ -0,0 +1,40 @@ +== Фичи == + +Особенности дистрибутива, не учитываемые в пакетной базе +или зависящие от переменных времени сборки/установки образа; +по необходимости влияют на конфигурацию, приносят с собой +или запрашивают скрипты, которые могут быть оформлены как: + +* scripts.d/ или image-scripts.d/ различных стадий; +* пакеты installer-feature-* + (тж. https://www.altlinux.org/Installer/beans). + +В большинстве случаев можно рекомендовать создание feature +средствами метапрофиля, поскольку при этом дерево кода более +удобно для анализа и обновления (и в отличие от _m-p-d_ -- нет +вынужденной необходимости либо контролировать включение нужных +фич "вручную" в скриптах по косвенным признакам, либо выносить +их в пакеты installer-feature-*); также возможно добиться большей +степени интеграции по данным (например, язык gfxboot и LiveCD). + +Создание и упаковку installer-feature-* можно рекомендовать, если: + +* необходимы пакетные зависимости (в т.ч. версии/конфликты); +* требуется компилируемый платформозависимый код (для чего бы...); +* код фичи достаточно специфичен, нетривиален и объёмен, + чтобы загромождать метапрофиль было не очень осмысленно; +* фича представляет из себя отдельный мини-продукт, над которым + ведётся активная работа (возможно, несколькими людьми). + +Стоит избегать изменения пакетных умолчаний в случае, когда их +представляется осмысленным и возможным скорректировать в пакете: +таким образом они станут более дистрибутивными. + +Обратите внимание, что фичи включаются в комплект инкрементально: +что добавили, то уже не убрать; поэтому при необходимости следует +выделять промежуточные цели сборки, собирающие необходимые фичи +и оставляющие те, по которым есть расхождения, на включение ближе +к конечной дистрибутивной цели. + +Соглашение по именованию таково, что цели use/ФИЧА и use/ФИЧА/... +определяются в файле features.in/ФИЧА/config.mk и только в нём. diff --git a/doc/gen-asciidoc.txt b/doc/gen-asciidoc.txt new file mode 100644 index 0000000..c4bbb65 --- /dev/null +++ b/doc/gen-asciidoc.txt @@ -0,0 +1,16 @@ +== Генерация документации == + +При желании сгенерировать PDF устанавливаем необходимые пакеты: + # apt-get install asciidoc-a2x xmlgraphics-fop fonts-ttf-dejavu + +// Внимание! FOP со всем нужным весьма увесист (несколько сот мегабайт). + +Для генерации текущей документации посредством ASCIIDOC выполнить по вкусу: + $ make pdf + $ make xhtml + +Сгенерируются соответственно mkimage-profiles.pdf или mkimage-profiles.html +(в текущем каталоге либо BUILDDIR, если задан). + +Для очистки: + $ make clean diff --git a/doc/metadep.txt b/doc/metadep.txt new file mode 100644 index 0000000..0780c90 --- /dev/null +++ b/doc/metadep.txt @@ -0,0 +1,19 @@ +== Метапакеты == + +=== списки пакетов, профили групп === + +Для раскрытия метапакета в список используется суффикс @META: + + engineering-2D-CAD@META + +apt запрашивает зависимости такого пакета и добавляет их в список пакетов +после этого метапакета. + +Обратите внимание, что игнорируются нечёткие зависимости, +т.е. предоставляемые несколькими пакетами. + +Возможности совмещать с суффиксом @ARCH нет. Так что имейте в виду, +что метапакет должен быть доступен для всех целевых архитектур. + +Для лучшего понимания работы механизма раскрытия списка нужно смотреть +bin/metadep-expander. metadep-expander выполняется до archdep-filter. diff --git a/doc/mkimage-profiles.7.in b/doc/mkimage-profiles.7.in new file mode 100644 index 0000000..31066ad --- /dev/null +++ b/doc/mkimage-profiles.7.in @@ -0,0 +1,142 @@ +.\" Copyright (C) 2010-2020 Michael Shigorin +.\" Copyright (C) 2020-2021 Anton Midyukov +.\" +.\" Documentation for mkimage-profiles project. +.\" +.\" This file is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this program; if not, write to the Free Software +.\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. +.\" +.TH "MKIMAGE-PROFILES" "9" "October 2021" "mkimage-profiles @VERSION@" "ALT" +.SH "NAME" +mkimage-profiles \- ALT distribution family metaprofile +.SH "SYNOPSIS" +.B make +.IR "" [ options ] +.I "" [ ... ] +.SH "DESCRIPTION" +.BR mkimage-profiles +builds operating environment images based on ALT package repositories. + +Run +.BR make\ help +to obtain list of available goals. +.SH "PREREQUISITES" +mkimage-profiles only needs +.BR make(1) +and +.BR rsync(1) +to generate the build profile; +.BR mkimage +is used to actually run the build (which involves +.BR hasher(7) +quite a few times). + +.BR git(1) +will be used if available so that the generated profile is an annotated +git repository; +.BR graphviz(1) +can be used to obtain build dependency graphs. +.SH "RATIONALE" +Long time ago when Linux distribution images were worked upon by hand +there was little need for generalization and sharing the common base. + +Building several "generic" ALT{, Linux} distros in a team and maintaining +their educational flavours at the same time proved the need to be able +to describe what's common and what's different in a way that doesn't +resemble more or less complete forks. + +Enter mkimage-profiles: choose what's closest to your dream image +and add what's missing, or roll on your own using the rich library +of existing parts and bits. +.SH "REQUIREMENTS" +The next-generation image build system for ALT must: +.TP +1. +provide reasonable means to describe common/differing aspects within +image families; +.TP +2. +ensure reproducible build results; +.TP +3. +support distribution family maintenance workflows +observed in the wild (e.g., with +.BR mkimage-profiles-desktop +or earlier); +.TP +4. +help out with diagnosing build problems. +.SH "ARCHITECTURE" +.BR mkimage-profiles +implements four steps to achieve the above goals: +.TP +1. +initialize the off-tree mkimage profile (BUILDDIR); +.TP +2. +build up distribution's configuration there; +.TP +3. +copy over the needed subprofiles/features/lists/groups; +.TP +4. +build the ISO/VE/VM image. +.PP +This results in a compact "as-needed" style per-image profile that can +be actually studied in a short amount of time and might get included +into the generated image as a tarball for better reproducibility. +.SH "EXAMPLES" +.BR make\ syslinux.iso +should result in a minimal bootable ISO image. + +Another example is Regular Builds project yielding weekly images: +.BR https://en.altlinux.org/regular +.SH "AUTHOR" +Written by Michael Shigorin , Anton Midyukov +.SH "REPORTING BUGS" +Report bugs to https://bugzilla.altlinux.org +.br +(Sisyphus project, mkimage-profiles component). +.SH "COPYRIGHT" +Copyright \(co) 2010-2020 Michael Shigorin , 2020-2021 Anton Midyukov +.br +This is free software; see the source for copying conditions. +There is NO WARRANTY; not even for MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. +.SH "FURTHER READING" +First and foremost: +.BR /usr/share/mkimage-profiles/QUICKSTART + +Please refer to +.BR README +files in the tree starting with the toplevel one for more +information; these can be assembled into a handbook using +.BR asciidoc(1) +(available at +.BR https://nightly.altlinux.org/docs/ +as weekly HTML/PDF updates). + +Specific topics are covered within +.BR doc/ +subdirectory; e.g. +.BR make +options are described in +.BR doc/params.txt +file. +.SH "SEE ALSO" +.br +.BR hsh(1), +.BR mkimage, +.br +.BR https://www.vimeo.com/23522095 diff --git a/doc/mkimage-profiles.asciidoc b/doc/mkimage-profiles.asciidoc new file mode 100644 index 0000000..3829ca0 --- /dev/null +++ b/doc/mkimage-profiles.asciidoc @@ -0,0 +1,87 @@ += mkimage-profiles = +Michael Shigorin , Anton Midyukov +:DocVersion: v1.1 +:DocDate: Aug 2021 + += Введение = + +mkimage-profiles, или _m-p_ — результат осмысления и обобщения опыта создания +семейств дистрибутивов свободного программного обеспечения на базе ALT Linux. + +*Цели* + +* поощрение совместной работы +* относительно низкая трудоёмкость использования +* пригодность к применению как очень крутыми хакерами, так и новичками + +*Средства* + +Двухуровневость: + +* метапрофиль более объёмен и сложен, но выгоден для долгосрочной разработки +* сгенерированный дистрибутивный профиль более легко обозрим и модифицируем как одноразовый форк +* наследственность на уровне индивидуальных особенностей и образов в целом +* прозрачность и диагностируемость формирования конфигурации +* документированность + +*Примеры использования* + +Выполняем начальные инструкции по документации: + + git clone git://git.altlinux.org/gears/m/mkimage-profiles.git + cd mkimage-profiles + make rescue.iso + += Основы = + +include::../README[] + +include::params.txt[] + +include::branch.txt[] + +include::features.txt[] + +include::pkglists.txt[] + += Каталоги = + +include::../conf.d/README[] + +include::../image.in/README[] + +include::../features.in/README[] + +include::../sub.in/README[] + +include::../sub.in/main/README[] + +include::../sub.in/stage1/README[] + +include::../sub.in/stage2/README[] + +include::../pkg.in/README[] + +include::../pkg.in/lists/README[] + +include::../pkg.in/lists/tagged/README[] + +include::../pkg.in/groups/README[] + +include::../lib/README[] + += Приложения = + +include::assumptions.txt[] + +include::debug.txt[] + +include::style.txt[] + +include::vm.txt[] + +include::qemu.txt[] + +include::archdep.txt[] + +include::metadep.txt[] diff --git a/doc/params.txt b/doc/params.txt new file mode 100644 index 0000000..d3c9b5a --- /dev/null +++ b/doc/params.txt @@ -0,0 +1,170 @@ +== Переменные make == + +Переменные могут быть заданы, как в команде сборки +в качестве аргументов, так и в файле настроек +$HOME/.mkimage/profiles.mk. +При запуске на сборку принимается ряд переменных +(см. тж. profiles.mk.sample): + +* APTCONF +** задаёт путь к требуемому apt.conf +** значение: пусто (по умолчанию системный) либо строка +** см. image.in/Makefile, doc/apt.conf.sample + +* ARCH +** задаёт целевую архитектуру образов +** значение: пусто (по умолчанию авто) либо строка +** см. lib/build.mk + +* ARCHES +** задаёт набор целевых архитектур при параметрическом задании APTCONF +** значение: пусто (по умолчанию авто) либо список через пробел +** см. Makefile, doc/profiles.mk.sample + +* AUTOCLEAN +** включает уборку (distclean) после успешной сборки образа +** значение: пусто (по умолчанию нет) либо любая строка +** см. lib/build.mk + +* BELL +** подаёт сигнал после завершения сборки +** значение: пусто (по умолчанию нет) либо любая строка +** см. lib/build.mk + +* BRANCH +** указывает для какого бранча производится сборка +** собирает вместо регулярок стартеркиты +** значение: пусто (сборка для Сизифа) либо имя бранча +** задаёт переменную "STARTERKIT := mixin/starterkit" +** см. doc/branch.txt main.mk, conf.d/mixin.mk + +* BUILDDIR +** задаёт каталог генерируемого профиля и сборки +** значение: пусто (по умолчанию авто) либо строка +** см. lib/profile.mk + +* BUILDDIR_PREFIX +** задаёт префикс каталога генерируемого профиля и сборки +** значение: строка; по умолчанию выбирается алгоритмически +** см. main.mk + +* BUILDLOG +** задаёт путь к файлу журнала сборки/очистки +** значение: $(BUILDDIR)/build.log (по умолчанию) либо строка +** см. lib/log.mk + +* CHECK +** включает режим проверки сборки конфигурации (без сборки образа) +** значение: +** пусто (по умолчанию) - проверка не осуществляется; +** 0 - прверяется только конфигурация, списки пакетов не проверяются; +** другое значение - полная проверка. +** см. lib/build.mk, lib/clean.mk + +* CLEAN +** экономия RAM+swap при сборке в tmpfs, иначе места на диске +** очистка рабочего каталога после успешной сборки очередной стадии +** может помешать использовать некоторые варианты отладки +** значение: пусто, 0, 1, 2; по умолчанию пусто при DEBUG, иначе 1 +** см. lib/clean.mk + +* DEBUG +** включает средства отладки, может отключить зачистку после сборки +** значение: пусто (по умолчанию), 1 или 2 +** см. lib/log.mk, lib/clean.mk + +* DISTRO_VERSION +** задаёт версию дистрибутива, если применимо +** значение: пусто (по умолчанию) либо любая строка +** см. image.in/Makefile + +* HOMEPAGE, HOMENAME, HOMEWAIT +** указывают адрес, название и таймаут перехода для домашней страницы +** значение: корректный URL, строка, целое неотрицательное число +** см. features.in/live/generate.mk (тж. по умолчаниям) + +* IMAGEDIR +** указывает путь для сохранения собранного образа +** значение: равно $HOME/out, если существует, иначе $(BUILDDIR)/out +** (по умолчанию), либо другой путь +** см. lib/profile.mk + +* ISOHYBRID +** включает создание гибриднго ISO-образа +** значение: пусто (по умолчанию) либо любая строка +** см. features.in/pack/config.mk, features.in/isohybrid/config.mk + +* LOGDIR +** указывает путь для сохранения логов сборки +** значение: равно $(IMAGEDIR) (по умолчанию), либо другой путь +** NB: в силу специфики обработки передаётся только явно +** см. lib/build.mk, lib/profile.mk + +* MKIMAGE_PREFIX +** указывает путь до mkimage. Если параметр не указан, то используется системный mkimage + +* NICE +** понижает нагрузку системы сборочной задачей +** значение: пусто (по умолчанию) либо любая строка +** см. lib/build.mk + +* NO_SYMLINK +** не создавать символические ссылки на собранный образ +** значение: пусто (по умолчанию) либо любая строка +** см. image.in/Makefile + +* QUIET +** отключает поясняющие сообщения при сборке (например, под cron) +** значение: пусто (по умолчанию) либо любая строка +** см. Makefile, lib/build.mk, lib/clean.mk, lib/profile.mk + +* REPORT +** запрашивает создание отчётов о собранном образе +** значение: пусто (по умолчанию) либо любая строка +** см. Makefile, report.mk, lib/report.mk + +* ROOTPW +** устанавливает пароль root по умолчанию для образов виртуальных машин +** значение: пусто (по умолчанию root) либо строка +** см. features.in/deflogin/rootfs/image-scripts.d/50-root + +* SAVE_PROFILE +** сохраняет архив сгенерированного профиля в .disk/ +** значение: пусто (по умолчанию) либо любая строка +** см. image.in/Makefile + +* SORTDIR +** дополнительно структурирует каталог собранных образов +** значение: пусто (по умолчанию) либо строка +*** например, '$(IMAGE_NAME)/$(DATE)' +** см. image.in/Makefile + +* SQUASHFS +** определяет характер сжатия squashfs для stage2 +** значение: +*** пусто (по умолчанию) либо normal: xz +*** tight: xz с -Xbcj по платформе (лучше, но дольше -- подбор в два прохода) +*** fast: gzip/lzo (быстрее запаковывается и распаковывается, меньше степень) +** см. features.in/stage2/stage1/scripts.d/03-test-kernel + +* STATUS +** добавляет в имя образа указанный префикс +** значение: +*** пусто (по умолчанию) либо строка (например, "alpha", "beta") +** см. image.in/Makefile + +* VM_SAVE_TARBALL +** указывает, что нужно сохранить промежуточный тарбол, из которого +** создаётся образ виртуальной машины, в заданном формате +** значения: tar tar.gz tar.xz +** см. features.in/build-vm/lib/90-build-vm.mk + +* VM_SIZE +** задаёт размер несжатого образа виртуальной машины в байтах +** значение: пусто (по умолчанию двойной размер чрута) или целое +** см. features.in/build-vm/lib/90-build-vm.mk, bin/tar2vm + +[float] +=== пример === + + make DEBUG=1 CLEAN=1 syslinux.iso diff --git a/doc/pkglists.txt b/doc/pkglists.txt new file mode 100644 index 0000000..ac32da4 --- /dev/null +++ b/doc/pkglists.txt @@ -0,0 +1,52 @@ +== Списки пакетов == + +Состав пакетной базы субпрофилей определяется значениями +следующих переменных профиля (см. тж. conf.d/README): + +* main: пакетная база для установки +** sub.in/main/Makefile, features.in/*/main/lib/ +** THE_LISTS, BASE_LISTS, MAIN_LISTS, COMMON_LISTS +** THE_GROUPS, MAIN_GROUPS +** THE_PACKAGES, BASE_PACKAGES, MAIN_PACKAGES, + SYSTEM_PACKAGES, COMMON_PACKAGES +** THE_PACKAGES_REGEXP, BASE_PACKAGES_REGEXP, MAIN_PACKAGES_REGEXP +** THE_KMODULES, BASE_KMODULES, MAIN_KMODULES, BASE_KMODULES_REGEXP +*** KFLAVOURS + +* stage2: общая часть install2, live, rescue +** sub.in/stage2/Makefile, features.in/*/stage2/lib/ +** SYSTEM_PACKAGES, STAGE2_PACKAGES +** STAGE1_KMODULES, STAGE1_KMODULES_REGEXP, + STAGE2_KMODULES, STAGE2_KMODULES_REGEXP +*** STAGE1_KFLAVOURS или KFLAVOURS для grub, для других загрузчиков + последний из STAGE1_KFLAVOURS или KFLAVOURS + +* install2: компактная "живая" система, содержащая только инсталятор +** см. stage2 +*** features.in/install2/install2/stage2cfg.mk, + features.in/*/install2/lib/ +*** INSTALL2_PACKAGES + +* live: пользовательский LiveCD (может содержать также инсталятор) +** см. stage2 +** features.in/live/live/stage2cfg.mk, + features.in/*/live/lib/ +** THE_LISTS, LIVE_LISTS, COMMON_LISTS +** THE_GROUPS, LIVE_GROUPS +** THE_PACKAGES, LIVE_PACKAGES, COMMON_PACKAGES +** THE_PACKAGES_REGEXP, LIVE_PACKAGES_REGEXP +** THE_KMODULES, LIVE_KMODULES + +* rescue: спасательный LiveCD +** см. stage2 +** features.in/rescue/rescue/stage2cfg.mk +** RESCUE_PACKAGES, COMMON_PACKAGES +** RESCUE_LISTS, COMMON_LISTS + +* stage1: ядро и загрузчик второй стадии +** sub.in/stage1/Makefile, features.in/*/stage1/lib/ +** STAGE1_PACKAGES, SYSTEM_PACKAGES +** STAGE1_PACKAGES_REGEXP +** STAGE1_KMODULES_REGEXP +*** STAGE1_KFLAVOURS или KFLAVOURS для grub, для других загрузчиков + последний из STAGE1_KFLAVOURS или KFLAVOURS diff --git a/doc/profiles.mk.sample b/doc/profiles.mk.sample new file mode 100644 index 0000000..d09efab --- /dev/null +++ b/doc/profiles.mk.sample @@ -0,0 +1,24 @@ +# sample ~/.mkimage/profiles.mk +# NB: REPORT doesn't work here, it's somewhat special + +# where to look for apt.conf; system one used by default +ifneq (,$(BRANCH)) +APTCONF = ~/apt/apt.conf.$(BRANCH).$(ARCH) +else +APTCONF = ~/apt/apt.conf.sisyphus.$(ARCH) +endif + +# path to save out image +IMAGEDIR = ~/out/$(BRANCH)/$(shell date +%Y%m%d) + +# turns on GLOBAL_VERBOSE and prettier output +#DEBUG = 1 + +# spares tmpfs, quite recommended unless you need raw workdir chroots +#CLEAN = 1 + +# run with lower CPU and I/O priorities +#NICE = 1 + +# try and draw attention when done (depends on readline/terminal settings) +#BELL = 1 diff --git a/doc/qemu.txt b/doc/qemu.txt new file mode 100644 index 0000000..9ef525d --- /dev/null +++ b/doc/qemu.txt @@ -0,0 +1,13 @@ +== QEMU == + +Для сборки на "неродной" архитектуре с применением трансляции +посредством QEMU установите пакет livecd-qemu-arch и выполните +команду register-qemu-armh от имени root (также предоставляется +register-qemu-ppc, но как минимум при сборке под ppc32 на x86_64 +известны проблемы эмуляции). + +Пример запуска: + + make ARCH=armh APTCONF=/etc/apt/apt.conf.sisyphus.arm ve/bare.tar + +Обратите также внимание на https://bugzilla.altlinux.org/34638 diff --git a/doc/style.txt b/doc/style.txt new file mode 100644 index 0000000..da47bcc --- /dev/null +++ b/doc/style.txt @@ -0,0 +1,47 @@ +== Оформление кода == + +* постарайтесь не вносить без обсуждения разнобой стилей, + если есть предметные пожелания по коррекции текущего -- + пишите в devel-distro@ или мне (mike@), обсудим; + +* перед тем, как делать существенные переработки уже имеющегося + кода -- опять же опишите проблему, идею и предполагаемый результат, + порой могут выясниться непредвиденные последствия; + +* документируйте на русском (README) или английском (README.en) языке + то, что написали или изменили, если бы сами хотели прочесть описание + сделанного на месте другого человека; в любом случае старайтесь + внятно описывать коммиты, при необходимости также спрашивайте + совета: документация кода порой не менее важна, чем сам код, + и призвана не повторять его, но пояснять намерения и неочевидности. + +[float] +=== рекомендации === + +* трезво относитесь ко входным данным и не пренебрегайте кавычками: + название дистрибутива с пробелом или получение текста ошибки вместо + ожидаемого вывода команды могут привести к сложнодиагностируемым + ошибкам; вместе с тем в ряде случаев, где требуется пословная + обработка значений переменных или раскрытие шаблонов shell (*?[]) + -- кавычки могут оказаться лишними; + +* пользуйтесь if [ ... ]; then ...; fi вместо [ ... ] && ...: + это кажется более громоздким, но текст оказывается более читаемым + и в т.ч. расширяемым, поскольку между then/else/fi можно спокойно + добавлять строки; с && проще забыть { ... } или оставить ненулевой + код возврата при неудаче теста, когда он считается несущественным; + +* предпочтительно применение $() вместо `` (особенно при вложенности); + +* постарайтесь не вылезать за 80 колонок; + +* избегайте merge-коммитов в коде, который предлагаете для включения + в основную ветку: поддерживается линейная история для удобства + работы с промежуточными состояниями. + +[float] + +=== ссылки === + +* https://lists.altlinux.org/mailman/listinfo/devel-distro + (подписка по приглашению) diff --git a/doc/vm.txt b/doc/vm.txt new file mode 100644 index 0000000..f9d4e97 --- /dev/null +++ b/doc/vm.txt @@ -0,0 +1,36 @@ +== Сборка образов VM == + +*ВНИМАНИЕ:* заключительная операция создания образа жёсткого диска +из архива с содержимым корневой файловой системы требует доступа +к sudo и разрешения на выполнение скрипта bin/tar2fs в корневом +каталоге метапрофиля при установке mkimage-profiles из пакета +(это в планах исправить, но подход к libguestfs пока успехом +не увенчался). + +Соответствующий фрагмент конфигурации sudo(8) может выглядеть как: + + mike ALL=NOPASSWD: /usr/share/mkimage-profiles/bin/tar2fs + +При работе с локальной копией mkimage-profiles.git следует иметь +в виду, что предоставлять недоверенному пользователю право выполнять +от имени root доступный ему по записи скрипт равнозначно предоставлению +полных привилегий root (поэтому фича build-vm сперва проверяет наличие +системно установленного пакета и по возможности старается запустить +под sudo скрипт из него, доступный по записи только root). + +Для работы с более специфичными форматами, чем raw ("буквальный" +образ диска), потребуется утилита qemu-img из одноименного пакета; +см. тж. вывод команды make help/vm + +Также потребуется пакет multipath-tools (/sbin/kpartx). + +Пример сборки и запуска VM: + + $ make ROOTPW=reallysecret1 vm/bare.img && kvm -hda ~/out/bare.img + +Если при сборке образа файловой системы произойдёт сбой, может оказаться +нужным вручную освободить используемые loop-устройства, например, так: + + # losetup -a + # kpartx -d /dev/loop0 + # losetup -d /dev/loop0 diff --git a/features.in/00example/README b/features.in/00example/README new file mode 100644 index 0000000..7d0c94b --- /dev/null +++ b/features.in/00example/README @@ -0,0 +1,48 @@ +Этот каталог содержит "заготовку" фичи в качестве примера +и должен дать представление о том, какой код _может_ быть +включён в настоящую фичу: статические файлы, два makefile +для создания конфигурации и генерирования части профиля, +а также шелл-скрипт для такого генерирования. + +Вовсе не требуется втягивать всё в свою фичу: лучше постараться +сделать её минимальной, самодостаточной и полезной в качестве +"кирпичика". + +Единственной обязательной частью фичи является файл config.mk, +который включается в distro.mk верхнего уровня и предоставляет +цель вида use/*, специфичную для данной фичи, а также добавляет +её в переменную FEATURES. Если название фичи не упоминается +в списке, содержащемся в этой переменной, то она не задействуется +при построении профиля, а только при сборке конфигурации. + +Для наиболее ходовых целей use/*, особенно если их много, можно +создавать цели-алиасы +* (например, +power). Просьба относиться +вдумчиво, т.к. в дальнейшем предполагается визуализировать такие +цели в UI конфигурирования образа. + +Остальное содержимое является дополнительным и используется +в таком порядке (см. features.in/Makefile): + +* сперва в $(BUILDDIR)/image/ копируются все подкаталоги, + соответствующие итоговым именам субпрофилей, запрошенных + для профиля образа; при этом они сливаются с деревом, + которое уже сформировано субпрофилями (sub.in/*) и уже + скопированными фичами; если какие-либо файлы перекрылись + по именам, rsync должен оставить резервные копии (*~), + которые должны просигнализировать о беспорядке; +* запускается generate.sh, если существует и исполнимый; +* применяется generate.mk, если существует и непустой. + +Например, если используются субпрофили stage1, stage2/install2 +и main, можно решить собрать специфические для фичи скрипты +инсталятора в install2/image-scripts.d/ (или необходимые для +операций с пакетной базой -- в main/scripts.d/, смотря чего +надо добиться; загляните также в документацию mkimage). + +А если требуются нетривиальные действия по конфигурированию +(как при сборке syslinux.cfg из кусочков, в зависимости от того, +что из запрошенных модулей оказалось в наличии) -- то их можно +произвести из generate.sh и generate.mk. + +Пожалуйста, присылайте отзывы о (бес)полезности кода в этом каталоге +mike@altlinux.org. diff --git a/features.in/00example/config.mk b/features.in/00example/config.mk new file mode 100644 index 0000000..19244f0 --- /dev/null +++ b/features.in/00example/config.mk @@ -0,0 +1,13 @@ +# this Makefile snippet gets included from toplevel distro.mk; +# it can add additional targets which could then be used there, +# and which can depend on other targets defined in any makefile +# included from toplevel Makefile +# +# see also toplevel functions.mk for the "add" function definition, +# and distro.mk for usage examples +# +# for somewhat more involved example, see syslinux feature + +use/00example: use/repo/main use/anotherfeature + @$(call add_feature) + @$(call add,MAIN_PACKAGES,hello) diff --git a/features.in/00example/generate.mk b/features.in/00example/generate.mk new file mode 100644 index 0000000..2fae718 --- /dev/null +++ b/features.in/00example/generate.mk @@ -0,0 +1,20 @@ +# this makefile is used as the last step during an individual +# feature configuration (that is, while building the actual profile +# from subprofiles and requested features) +# +# please note, it runs *after* copying subdirectories corresponding +# to requested subprofiles and *after* running generate.sh, see also +# features.in/Makefile +# +# for a real-world example, see syslinux feature + +include $(BUILDDIR)/distcfg.mk + +ifndef 00EXAMPLE +$(warning this is an example, who might want to include it? :]) +endif + +EXAMPLE := hello, world + +all: + @echo $(EXAMPLE) diff --git a/features.in/00example/generate.sh b/features.in/00example/generate.sh new file mode 100644 index 0000000..fe8d556 --- /dev/null +++ b/features.in/00example/generate.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# this script is run during an individual feature configuration +# (that is, while building the actual profile from subprofiles +# and requested features); it can be more comfortable for extensive +# shell scripting than embedding into a makefile recipe with all +# the quoting and so on +# +# please note, it runs *after* copying subdirectories corresponding +# to requested subprofiles and *before* running generate.sh, see also +# features.in/Makefile +# +# for a real-world example, see syslinux feature + +# route stdout to stderr +exec >&2 + +# dump environment +echo "--- $0 ---" +env +echo "--- $0 ---" diff --git a/features.in/00example/main/scripts.d/89-example b/features.in/00example/main/scripts.d/89-example new file mode 100755 index 0000000..6d621a2 --- /dev/null +++ b/features.in/00example/main/scripts.d/89-example @@ -0,0 +1,13 @@ +#!/bin/sh +# example script executed by mkimage in _instrumental_ chroot +# (image-scripts.d/* get executed in _work_ chroot) +# +# NB: to be executed, it must be marked executable first :) + +# let's do something very useful +echo "$0: WORKDIR=$WORKDIR; directory listing:" +ls -l "$WORKDIR" + +# and let's _not_ terminate with non-zero for no real reason; +# ":" is a shell builtin command like true(1) +: diff --git a/features.in/Makefile b/features.in/Makefile new file mode 100644 index 0000000..215153a --- /dev/null +++ b/features.in/Makefile @@ -0,0 +1,134 @@ +# step 3: copy the needed features to $(BUILDDIR) +# (only regarding the needed subprofiles) + +ifndef BUILDDIR + +help/plus all: banner + @$(call grepper,'^+') + +help/features: banner + @$(call grepper,'^use/') + +banner: + @echo "** BUILDDIR not defined; available features:" + +grepper = $(and $(1),$(grepper_body)) +define grepper_body + @for dir in */; do \ + out="`grep -h $(1) $$dir/config.mk \ + | cut -f1 -d: \ + | tr ' ' '\n\n' \ + | grep $(1) \ + | tr '\n' ' ' \ + | sort -u`"; \ + [ -z "$$out" ] || echo "$$dir: $$out"; \ + done +endef + +check: + @../bin/check-recipe */config.mk + +%: + $(error BUILDDIR not defined) + +else + +export BUILDDIR + +include $(BUILDDIR)/distcfg.mk + +# first rsync what's static, and make backups (*~) -- +# these might signal of file clashes (or plain dirt); +# second, care for toplevel dirs; +# then handle feature generator scripts +# +# NB: some subprofiles will be specified as "src/dst" +# -- then both src/ and dst/ can hold the addons; +# still both pieces go into a single destination + +### sorry for somewhat complicated and overly long lines + +TARGETS := prep $(FEATURES) finalize + +.PHONY: $(TARGETS) +all: | $(TARGETS) + +prep: + @echo "** starting feature configuration" + @if [ -n "$(GLOBAL_DEBUG)" ]; then \ + echo "** target subprofiles: $(SUBPROFILES)"; \ + echo "** requested features: $(FEATURES)"; \ + fi + +# feat +# NB: this is somewhat complicated since it has to handle "$sub" like: +# - "/": copy feature's toplevel parts to the BUILDDIR toplevel +# - "stage1": copy feature's stage1 parts into stage1 subprofile +# - "stage2@live": copy feature's stage2 parts into live subprofile +# - "rootfs@/": copy feature's rootfs parts into BUILDDIR toplevel +$(FEATURES): + @feat=$@; \ + args="-qab --exclude .gitignore --exclude README --exclude config.mk"; \ + args="$$args --exclude generate.mk --exclude generate.sh"; \ + if [ -n "$(GLOBAL_DEBUG)" ]; then \ + echo "** adding $$feat feature"; \ + fi; \ + pushd "$$feat" >/dev/null && \ + for sub in / $(SUBPROFILES); do \ + if [ "$$sub" = / ]; then \ + srcdirs="."; \ + dst="."; \ + else \ + src="$${sub%@*}"; \ + dst="$${sub#*@}"; \ + if [ "$$src" = / ]; then \ + echo "** src=/: you don't want this" >&2; \ + exit 1; \ + fi; \ + if [ "$$dst" = / -o "$$dst" = "" ]; then \ + dst="."; \ + fi; \ + srcdirs=; \ + if [ -d "$$src" ]; then \ + srcdirs="$$src"; \ + fi; \ + if [ -d "$$dst" -a "$$dst" != "$$src" ]; then \ + srcdirs="$${srcdirs:+$$srcdirs }$$dst"; \ + fi; \ + : "why this overduplication was done? (still needed)"; \ + for srcdir in $$srcdirs; do \ + rsync $$args "$$srcdir/" "$(BUILDDIR)/$$dst/"; \ + done; \ + fi; \ + if [ -n "$(GLOBAL_DEBUG)" ]; then \ + echo "** src=[$$src] dst=[$$dst] srcdirs=[$$srcdirs]"; \ + fi; \ + for srcdir in $$srcdirs; do \ + [ -d "$$srcdir" ] || continue; \ + pushd "$$srcdir" >&/dev/null; \ + for part in lib {image-,}scripts.d; do \ + destdir="$(BUILDDIR)/$$dst/$$part"; \ + [ -d "$$destdir" ] || continue; \ + if [ "$$sub" = / -a -d "$$part" ]; then \ + rsync $$args "$$part/" "$$destdir/"; \ + fi; \ + done; \ + popd >&/dev/null; \ + done; \ + if [ -n "$$dst" -a "$$dst" != "." ]; then \ + the="$$sub subprofile"; \ + else \ + the="toplevel"; \ + fi; \ + mp-commit "$(BUILDDIR)/$$dst/" "$$feat feature: $$the part added"; \ + done; \ + if [ -x "generate.sh" ]; then sh generate.sh; fi; \ + if [ -s "generate.mk" ]; then $(MAKE) -f generate.mk; fi; \ + mp-commit "$(BUILDDIR)" "$$feat feature generation complete"; \ + popd >/dev/null + +finalize: + @find "$(BUILDDIR)/" -name '*~' \ + | sed "s,$(BUILDDIR)/,** warning: file clash: ," >&2 + +endif diff --git a/features.in/README b/features.in/README new file mode 100644 index 0000000..6deb73d --- /dev/null +++ b/features.in/README @@ -0,0 +1,42 @@ +== features.in == + +Этот каталог содержит т.н. фичи (features, особенности). + +Фича -- отдельно подключаемая сущность, которая содержит +повторно используемые конфигурацию/код и определяет одну +из особенностей создаваемого образа. Может зависеть от +других фич либо субпрофилей. + +Каждая фича должна содержать файл config.mk, включаемый +в main.mk при построении конфигурации будущего профиля; +он может описывать одну или более целей вида use/*, +дополняющих конфигурацию, и обязан добавить имя фичи +в $(FEATURES), для чего создана функция add_feature. + +На этапе генерации сборочного профиля фичи рассматриваются +после инициализации профиля (см. image.in/) и копирования +субпрофилей (см. sub.in/). Для каждой фичи, указанной +в $(FEATURES), копируются подкаталоги сообразно включенным +субпрофилям, а также lib/ и {image-,}scripts.d/; затем +выполняются generate.sh и generate.mk при их наличии. + +Если фича дополняет хуками семейство целевых субпрофилей, +построенных на одном базовом, можно воспользоваться подкаталогом +с именем исходного базового субпрофиля (см. $src, $dst в Makefile). + +Рекомендуется давать несколько различающиеся имена скриптам, +которые одна и та же фича может добавлять в различные стадии, +чтобы они не выглядели одинаково в логе сборки. + +Наиболее востребованные цели можно снабжать "ярлычками" вроде +"+icewm" с тем, чтобы сделать более краткими и выразительными +использующие их правила. Просьба не злоупотреблять количеством, +такие имена предполагается показывать в интерфейсе к профилю. + +Каталог lib/ является специфическим для фич, определяющих +построение конкретного вида образа -- см. build-*/. + +Несложный пример содержится в 00example/, более близкий к жизни +и нынешним пределам возможностей метапрофиля -- в syslinux/. + +См. тж. файлы README в каталогах фич (отсутствие -- баг!). diff --git a/features.in/aarch64-tegra/README b/features.in/aarch64-tegra/README new file mode 100644 index 0000000..819b161 --- /dev/null +++ b/features.in/aarch64-tegra/README @@ -0,0 +1,2 @@ +Настраивает систему для загрузки на компьютерах с SoC tegra (aarch64). +Пока поддерживается только Jetson Nano. diff --git a/features.in/aarch64-tegra/config.mk b/features.in/aarch64-tegra/config.mk new file mode 100644 index 0000000..97e5966 --- /dev/null +++ b/features.in/aarch64-tegra/config.mk @@ -0,0 +1,6 @@ + +ifeq (,$(filter-out aarch64,$(ARCH))) +use/aarch64-tegra: use/bootloader/uboot + @$(call add_feature) + @$(call set,KFLAVOURS,tegra) +endif diff --git a/features.in/aarch64-tegra/image-scripts.d/98-tegra-extlinux-conf b/features.in/aarch64-tegra/image-scripts.d/98-tegra-extlinux-conf new file mode 100755 index 0000000..9d9db56 --- /dev/null +++ b/features.in/aarch64-tegra/image-scripts.d/98-tegra-extlinux-conf @@ -0,0 +1,17 @@ +#!/bin/sh + +# Rewrite extlinux.conf +mkdir -p /boot/extlinux +cat > /boot/extlinux/extlinux.conf << EOF +menu title ALT Boot Options + +default linux +timeout 20 + +append ${cbootargs} rootfstype=ext4 root=LABEL=ROOT rw rootwait console=tty1 + +label linux + menu label linux + linux /boot/vmlinuz + initrd /boot/initrd.img +EOF diff --git a/features.in/aarch64-tegra/image-scripts.d/99-tegra-initrd-conf b/features.in/aarch64-tegra/image-scripts.d/99-tegra-initrd-conf new file mode 100755 index 0000000..e640e51 --- /dev/null +++ b/features.in/aarch64-tegra/image-scripts.d/99-tegra-initrd-conf @@ -0,0 +1,4 @@ +#!/bin/sh + +echo 'PUT_FILES += /lib/firmware/tegra21x_xusb_firmware' \ + >> /etc/initrd.mk diff --git a/features.in/apt-conf/README b/features.in/apt-conf/README new file mode 100644 index 0000000..dd7f3c7 --- /dev/null +++ b/features.in/apt-conf/README @@ -0,0 +1 @@ +Данная фича определяет то, какая конфигурация apt попадёт в образ. diff --git a/features.in/apt-conf/config.mk b/features.in/apt-conf/config.mk new file mode 100644 index 0000000..8e4a37e --- /dev/null +++ b/features.in/apt-conf/config.mk @@ -0,0 +1,8 @@ +use/apt-conf: + @$(call add_feature) + @$(call add,THE_PACKAGES,apt-conf-$$(THE_APT_CONF)) + @$(call add,IMAGE_INIT_LIST,apt-conf-$$(THE_APT_CONF)) + @$(call try,THE_APT_CONF,sisyphus) + +use/apt-conf/branch: use/apt-conf + @$(call set,THE_APT_CONF,branch) diff --git a/features.in/arm-rpi4/README b/features.in/arm-rpi4/README new file mode 100644 index 0000000..7cd26cb --- /dev/null +++ b/features.in/arm-rpi4/README @@ -0,0 +1,2 @@ +Настраивает систему для Raspberry Pi 4 + diff --git a/features.in/arm-rpi4/config.mk b/features.in/arm-rpi4/config.mk new file mode 100644 index 0000000..711c951 --- /dev/null +++ b/features.in/arm-rpi4/config.mk @@ -0,0 +1,34 @@ +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +ifeq (aarch64,$(ARCH)) +use/arm-rpi4: use/efi/grub use/uboot use/auto-resize +else +use/arm-rpi4: use/bootloader/uboot use/auto-resize +endif + @$(call add_feature) + @$(call set,VM_PARTTABLE,msdos) + @$(call set,VM_BOOTTYPE,EFI) + @$(call add,BASE_KMODULES,staging) + @$(call add,THE_LISTS,uboot) + @$(call add,THE_PACKAGES,u-boot-tools) + @$(call add,THE_PACKAGES,firmware-bcm4345) + +use/arm-rpi4/x11: use/arm-rpi4 + @$(call add,THE_PACKAGES,pi-bluetooth) + @$(call add,DEFAULT_SERVICES_ENABLE,bluetoothd hciuart) + @$(call add,DEFAULT_SERVICES_DISABLE,systemd-networkd-wait-online) + +use/arm-rpi4/kernel: use/arm-rpi4 + @$(call set,RPI_NOUBOOT,yes) + @$(call add,THE_PACKAGES,rpi4-boot-switch) + @$(call add,THE_PACKAGES,rpi4-boot-nouboot-filetrigger) + @$(call add,THE_PACKAGES,rpi4-boot-uboot-filetrigger) + @$(call xport,RPI_NOUBOOT) +ifeq (aarch64,$(ARCH)) + @$(call set,KFLAVOURS,rpi-def rpi-un) +else + @$(call set,KFLAVOURS,rpi-def) +endif + +use/arm-rpi4/full: use/arm-rpi4/kernel use/arm-rpi4/x11; @: + +endif diff --git a/features.in/arm-rpi4/image-scripts.d/82-timer-based-to-interrupt-driven b/features.in/arm-rpi4/image-scripts.d/82-timer-based-to-interrupt-driven new file mode 100755 index 0000000..547acbd --- /dev/null +++ b/features.in/arm-rpi4/image-scripts.d/82-timer-based-to-interrupt-driven @@ -0,0 +1,11 @@ +#!/bin/sh -efu + +# Changed audio scheduling from timer-based to +# interrupt-driven to prevent unwanted crackle. + +pafile="/etc/pulse/default.pa" + +if [ -f "$pafile" ] +then + sed -i 's/^load-module module-udev-detect$/load-module module-udev-detect tsched=0/' "$pafile" +fi diff --git a/features.in/arm-rpi4/image-scripts.d/93-default-gouvernor-conservative b/features.in/arm-rpi4/image-scripts.d/93-default-gouvernor-conservative new file mode 100755 index 0000000..c27e909 --- /dev/null +++ b/features.in/arm-rpi4/image-scripts.d/93-default-gouvernor-conservative @@ -0,0 +1,12 @@ +#!/bin/sh -efu +# By default, in cpufreq-simple feature the ondemand governor is configured. +# But only the conservative governor is available at Raspberry Pi 4 kernels. +# This is change the default governor to conservative. + +cfgfile="/etc/sysconfig/cpufreq-simple" + +if [ -f "$cfgfile" ] +then + echo "GOVERNOR_AC_ON=conservative" >> "$cfgfile" + echo "GOVERNOR_AC_OFF=conservative" >> "$cfgfile" +fi diff --git a/features.in/arm-rpi4/image-scripts.d/96-gen-brcmfmac43455 b/features.in/arm-rpi4/image-scripts.d/96-gen-brcmfmac43455 new file mode 100755 index 0000000..b7c4ab7 --- /dev/null +++ b/features.in/arm-rpi4/image-scripts.d/96-gen-brcmfmac43455 @@ -0,0 +1,3 @@ +#!/bin/sh -efu + +sed 's/Raspberry Pi 3 Model B+/Raspberry Pi 4/ ; s/boardflags3=0x48200100/boardflags3=0x44200100/' /lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt > /lib/firmware/brcm/brcmfmac43455-sdio.txt diff --git a/features.in/arm-rpi4/image-scripts.d/98-bootstrap-boot-by-firmware b/features.in/arm-rpi4/image-scripts.d/98-bootstrap-boot-by-firmware new file mode 100755 index 0000000..dd7b4ac --- /dev/null +++ b/features.in/arm-rpi4/image-scripts.d/98-bootstrap-boot-by-firmware @@ -0,0 +1,49 @@ +#!/bin/sh -eu + +kflavour= +kflavour="${GLOBAL_KFLAVOURS%% *}" + +mkdir -p /boot/efi + +uboots="rpi_3 rpi_3_32b rpi_4 rpi_4_32b" +for uboot in $uboots; do + [ -d /usr/share/u-boot/$uboot ] && + cp -f /usr/share/u-boot/$uboot/* /boot/efi/ + [ -f /boot/efi/kernel8.img ] && + mv /boot/efi/{kernel8.img,uboot-$uboot.bin} + [ -f /boot/efi/kernel7.img ] && + mv /boot/efi/{kernel7.img,uboot-$uboot.bin} +done + +rm -f /boot/efi/config.txt + +[ "$GLOBAL_ARCH" = aarch64 ] && \ + echo "arm_64bit=1" > /boot/efi/config.txt + +cat >> /boot/efi/config.txt <> /etc/initrd.mk diff --git a/features.in/armh-mcom02/image-scripts.d/50-alsa-set-initial-options-ports b/features.in/armh-mcom02/image-scripts.d/50-alsa-set-initial-options-ports new file mode 100755 index 0000000..d63ff23 --- /dev/null +++ b/features.in/armh-mcom02/image-scripts.d/50-alsa-set-initial-options-ports @@ -0,0 +1,6 @@ +#!/bin/sh -efu + +[ -f /etc/firsttime.d/alsa-set-initial-options ] && + sed -i '/snd-seq-midi/d' /etc/firsttime.d/alsa-set-initial-options + +exit 0 diff --git a/features.in/armh-mcom02/image-scripts.d/90-fbturbo b/features.in/armh-mcom02/image-scripts.d/90-fbturbo new file mode 100755 index 0000000..1d5153d --- /dev/null +++ b/features.in/armh-mcom02/image-scripts.d/90-fbturbo @@ -0,0 +1,13 @@ +#!/bin/sh -x + +[ -d /etc/X11/xorg.conf.d ] || exit 0 +cat > /etc/X11/xorg.conf.d/10-monitor.conf << EOF +Section "Monitor" + Identifier "Monitor0" +EndSection + +Section "Device" + Identifier "Card0" + Driver "fbturbo" +EndSection +EOF diff --git a/features.in/armh-mcom02/image-scripts.d/99-extlinux-conf-fix b/features.in/armh-mcom02/image-scripts.d/99-extlinux-conf-fix new file mode 100755 index 0000000..d1c553d --- /dev/null +++ b/features.in/armh-mcom02/image-scripts.d/99-extlinux-conf-fix @@ -0,0 +1,4 @@ +#!/bin/sh + +# Drop fdtdir PATH +sed -i '/fdtdir/d' /boot/extlinux/extlinux.conf diff --git a/features.in/armh-skit/README b/features.in/armh-skit/README new file mode 100644 index 0000000..55bc8fb --- /dev/null +++ b/features.in/armh-skit/README @@ -0,0 +1,2 @@ +Фича предназначена для обеспечения поддержки планшетов "Скит". +Основана на фиче armh-mcom02. diff --git a/features.in/armh-skit/config.mk b/features.in/armh-skit/config.mk new file mode 100644 index 0000000..2dc1336 --- /dev/null +++ b/features.in/armh-skit/config.mk @@ -0,0 +1,8 @@ +ifeq (,$(filter-out armh,$(ARCH))) +use/armh-skit: use/uboot use/tty/S0 use/no-sleep use/auto-resize + @$(call add_feature) + @$(call set,KFLAVOURS,skit) + @$(call add,THE_PACKAGES,extlinux-fdtdir-cleanup-filetrigger) + @$(call add,THE_PACKAGES,xorg-drv-fbturbo) + +endif diff --git a/features.in/armh-skit/image-scripts.d/01-uboot-prepare b/features.in/armh-skit/image-scripts.d/01-uboot-prepare new file mode 100755 index 0000000..397a31f --- /dev/null +++ b/features.in/armh-skit/image-scripts.d/01-uboot-prepare @@ -0,0 +1,15 @@ +#!/bin/sh + +# Rewrite extlinux.conf +mkdir -p /boot/extlinux +cat > /boot/extlinux/extlinux.conf << EOF +menu title ALT Boot Options + +default linux +timeout 50 + +label linux + kernel /boot/vmlinuz + initrd /boot/initrd.img + append root=LABEL=ROOT ro +EOF diff --git a/features.in/armh-skit/image-scripts.d/50-alsa-set-initial-options-ports b/features.in/armh-skit/image-scripts.d/50-alsa-set-initial-options-ports new file mode 100755 index 0000000..d63ff23 --- /dev/null +++ b/features.in/armh-skit/image-scripts.d/50-alsa-set-initial-options-ports @@ -0,0 +1,6 @@ +#!/bin/sh -efu + +[ -f /etc/firsttime.d/alsa-set-initial-options ] && + sed -i '/snd-seq-midi/d' /etc/firsttime.d/alsa-set-initial-options + +exit 0 diff --git a/features.in/armh-skit/image-scripts.d/90-fbturbo b/features.in/armh-skit/image-scripts.d/90-fbturbo new file mode 100755 index 0000000..1d5153d --- /dev/null +++ b/features.in/armh-skit/image-scripts.d/90-fbturbo @@ -0,0 +1,13 @@ +#!/bin/sh -x + +[ -d /etc/X11/xorg.conf.d ] || exit 0 +cat > /etc/X11/xorg.conf.d/10-monitor.conf << EOF +Section "Monitor" + Identifier "Monitor0" +EndSection + +Section "Device" + Identifier "Card0" + Driver "fbturbo" +EndSection +EOF diff --git a/features.in/armh-skit/image-scripts.d/99-extlinux-conf-fix b/features.in/armh-skit/image-scripts.d/99-extlinux-conf-fix new file mode 100755 index 0000000..d1c553d --- /dev/null +++ b/features.in/armh-skit/image-scripts.d/99-extlinux-conf-fix @@ -0,0 +1,4 @@ +#!/bin/sh + +# Drop fdtdir PATH +sed -i '/fdtdir/d' /boot/extlinux/extlinux.conf diff --git a/features.in/auto-resize/README b/features.in/auto-resize/README new file mode 100644 index 0000000..81f1f68 --- /dev/null +++ b/features.in/auto-resize/README @@ -0,0 +1,2 @@ +Эта фича включает авторасширение корневого раздела +при помощи systemd.growfs diff --git a/features.in/auto-resize/config.mk b/features.in/auto-resize/config.mk new file mode 100644 index 0000000..ad3b5c7 --- /dev/null +++ b/features.in/auto-resize/config.mk @@ -0,0 +1,3 @@ +use/auto-resize: + @$(call add_feature) + @$(call add,THE_PACKAGES,rpi4-resize-rootpart) diff --git a/features.in/auto-resize/image-scripts.d/91-edit-fstab-growfs b/features.in/auto-resize/image-scripts.d/91-edit-fstab-growfs new file mode 100755 index 0000000..d08a351 --- /dev/null +++ b/features.in/auto-resize/image-scripts.d/91-edit-fstab-growfs @@ -0,0 +1,5 @@ +#!/bin/sh -efu + +# For resize rootfs with systemd-growfs@-.service +# set x-systemd.growfs option in /etc/fstab for rootfs +sed -i '/^LABEL=ROOT/s/defaults/defaults,x-systemd.growfs/' /etc/fstab diff --git a/features.in/bootloader/README b/features.in/bootloader/README new file mode 100644 index 0000000..06345d3 --- /dev/null +++ b/features.in/bootloader/README @@ -0,0 +1,21 @@ +Добавление установки загрузчика основной системы, затребованного +посредством указания "grub", "lilo" или "uboot" в BASE_BOOTLOADER. + +Соответствующий модуль alterator добавляется в устанавливаемую +систему (он НЕ должен требоваться пакету installer-distro-*) +и требует пакет выбранного загрузчика. Так как для uboot такого +модуля нет и в тоже время uboot не используется в установочных +дистрибутивах, то установка модуля alterator была ограничена +целями distro/*, формирующими ISO-образы. + +Обратите внимание: в процессе конфигурирования дистрибутива +"переключение" загрузчика может происходить только в одну сторону +-- если выставлен grub, произведено переключение на lilo и затем +произведена ещё одна попытка переключения на grub, то в конфигурации +останется lilo как последняя "новая" цель с точки зрения make. + +При необходимости всё-таки "пересилить" последнее изменение можно + + @$(call set,BASE_BOOTLOADER,grub_или_lilo) + +Реализация экспериментальная (нужно модуляризовать installer-steps). diff --git a/features.in/bootloader/config.mk b/features.in/bootloader/config.mk new file mode 100644 index 0000000..ea6b2bf --- /dev/null +++ b/features.in/bootloader/config.mk @@ -0,0 +1,50 @@ +# TODO: invent something prettier (think "lilo+grub" -- or error out?) +# - add,BASE_PACKAGES,alterator-$* is overly additive +# NB: due to make target becoming having been made, +# the last different one wins +# - remember .base if adding yet another *_PACKAGES + +# NB: "mysterious" conflicts if BASE_BOOTLOADER is empty + +GRUB_ARCHES := i586 x86_64 aarch64 ppc64le riscv64 + +use/bootloader: use/pkgpriorities +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add_feature) + @$(call try,BASE_BOOTLOADER,grub) + @$(call xport,BASE_BOOTLOADER) + @$(call add,BASE_LISTS,$$(BASE_BOOTLOADER)) + @$(call xport,BASE_BOOTARGS) +ifeq (distro,$(IMAGE_CLASS)) + @$(call add,BASE_PACKAGES,installer-feature-bootloader-$$(BASE_BOOTLOADER)) + @$(call add,PINNED_PACKAGES,alterator-$$(BASE_BOOTLOADER)) + @$(call add,PINNED_PACKAGES,installer-bootloader-$$(BASE_BOOTLOADER)-stage2) +endif +endif + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/bootloader/lilo: \ + use/bootloader/%: use/bootloader + @$(call set,BASE_BOOTLOADER,$*) +else +use/bootloader/lilo: ; @: +endif + +ifeq (,$(filter-out $(GRUB_ARCHES),$(ARCH))) +use/bootloader/grub: \ + use/bootloader/%: use/bootloader + @$(call set,BASE_BOOTLOADER,$*) +else +use/bootloader/grub: ; @: +endif + +use/bootloader/uboot: use/bootloader use/uboot + @$(call set,BASE_BOOTLOADER,uboot) + +use/bootloader/live: use/bootloader; @: +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,LIVE_PACKAGES,alterator-$$(BASE_BOOTLOADER)) +endif + +use/bootloader/os-prober: use/bootloader + @$(call add,BASE_PACKAGES,os-prober) diff --git a/features.in/bootloader/install2/image-scripts.d/00-check-bootloader b/features.in/bootloader/install2/image-scripts.d/00-check-bootloader new file mode 100755 index 0000000..22ebf75 --- /dev/null +++ b/features.in/bootloader/install2/image-scripts.d/00-check-bootloader @@ -0,0 +1,6 @@ +#!/bin/sh + +if [ -z "$GLOBAL_BASE_BOOTLOADER" ]; then + echo "** error: BASE_BOOTLOADER empty while bootloader feature requested" >&2 + exit 1 +fi diff --git a/features.in/bootloader/rootfs/image-scripts.d/50-bootargs b/features.in/bootloader/rootfs/image-scripts.d/50-bootargs new file mode 100755 index 0000000..73195a1 --- /dev/null +++ b/features.in/bootloader/rootfs/image-scripts.d/50-bootargs @@ -0,0 +1,11 @@ +#!/bin/sh -eu + +if [ -s /etc/sysconfig/grub2 ]; then + # Cleanup + sed -i "s/ splash//g" /etc/sysconfig/grub2 + if [ -n "${GLOBAL_BASE_BOOTARGS-}" ]; then + sed -Ei \ + "s/(GRUB_CMDLINE_LINUX_DEFAULT=)(.*)(['\"])/\1\2 $GLOBAL_BASE_BOOTARGS\3/" \ + /etc/sysconfig/grub2 + fi +fi diff --git a/features.in/branding/README b/features.in/branding/README new file mode 100644 index 0000000..2fce91d --- /dev/null +++ b/features.in/branding/README @@ -0,0 +1,26 @@ +Эта фича врезается в makefile субпрофилей и обеспечивает +добавление задающих внешний вид и сообщения дистрибутива +пакетов; см. тж. http://www.altlinux.org/Branding + +Реализация "двумерная" -- отдельно задаётся BRANDING +(см. пакеты branding-*-%version-%release.src.rpm), +затем отдельно указывается, какие и куда помещать +компоненты заданного брендинга. + +Назначение и возможные значения (если требуются): + +* STAGE1_BRANDING +** относится к загрузке со сгенерированного образа (например, ISO) +** bootloader bootsplash (при старте) + +* STAGE2_BRANDING +** общая часть для всех вариантов stage2 +** bootsplash (при выключении) + +* INSTALL2_BRANDING +** специфические пакеты брендирования инсталятора +** notes slideshow + +* THE_BRANDING +** общий список для использования в установленной системе и LiveCD +** alterator bootsplash graphics indexhtml notes slideshow diff --git a/features.in/branding/config.mk b/features.in/branding/config.mk new file mode 100644 index 0000000..54a251a --- /dev/null +++ b/features.in/branding/config.mk @@ -0,0 +1,32 @@ +# NB: release part of branding goes to install2 feature +use/branding: + @$(call add_feature) + +# license notes, if any +use/branding/notes: use/branding +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,THE_BRANDING,notes) +endif + +# NB: not every distro might have all the branding of its own +use/branding/full: use/branding/notes use/syslinux/ui/gfxboot \ + use/grub/ui/gfxboot + @$(call add,THE_BRANDING,alterator graphics) + @$(call add,THE_BRANDING,indexhtml slideshow) +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call add,THE_BRANDING,bootloader) +endif +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,THE_BRANDING,bootsplash) +endif + +use/branding/complete: use/branding/full use/plymouth/full + @$(call add,INSTALL2_BRANDING,slideshow) +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call add,INSTALL2_BRANDING,notes) +endif + +# http://altlinux.org/branding/slideshow +use/branding/slideshow/once: use/branding + @$(call add,INSTALL2_BRANDING_SLIDESHOW,once:true) + @$(call xport,INSTALL2_BRANDING_SLIDESHOW) diff --git a/features.in/branding/install2/image-scripts.d/50-branding.sh b/features.in/branding/install2/image-scripts.d/50-branding.sh new file mode 100755 index 0000000..f1983cd --- /dev/null +++ b/features.in/branding/install2/image-scripts.d/50-branding.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +[ -n "$GLOBAL_INSTALL2_BRANDING_SLIDESHOW" ] || exit 0 + +for arg in $GLOBAL_INSTALL2_BRANDING_SLIDESHOW; do + echo "${arg/:/=}" >> /etc/alterator/slideshow.conf +done diff --git a/features.in/branding/install2/lib/50branding.mk b/features.in/branding/install2/lib/50branding.mk new file mode 100644 index 0000000..61871d2 --- /dev/null +++ b/features.in/branding/install2/lib/50branding.mk @@ -0,0 +1,2 @@ +IMAGE_PACKAGES_REGEXP += $(call branding, \ + $(STAGE2_BRANDING) $(INSTALL2_BRANDING)) diff --git a/features.in/branding/lib/20-branding.mk b/features.in/branding/lib/20-branding.mk new file mode 100644 index 0000000..81f7448 --- /dev/null +++ b/features.in/branding/lib/20-branding.mk @@ -0,0 +1,9 @@ +# step 4: build the distribution image + +DOT_BASE += $(call branding,$(THE_BRANDING)) + +# needed for refind only +ifeq (,$(filter-out x86_64,$(ARCH))) +CHROOT_PACKAGES_REGEXP += $(call branding,bootloader) +CHROOT_PACKAGES += ImageMagick-tools +endif diff --git a/features.in/branding/live/lib/50branding.mk b/features.in/branding/live/lib/50branding.mk new file mode 100644 index 0000000..4e3d7b3 --- /dev/null +++ b/features.in/branding/live/lib/50branding.mk @@ -0,0 +1,2 @@ +IMAGE_PACKAGES_REGEXP += $(call branding, \ + $(THE_BRANDING) $(STAGE2_BRANDING)) diff --git a/features.in/branding/main/lib/50branding.mk b/features.in/branding/main/lib/50branding.mk new file mode 100644 index 0000000..7767b6f --- /dev/null +++ b/features.in/branding/main/lib/50branding.mk @@ -0,0 +1 @@ +IMAGE_PACKAGES_REGEXP += $(call branding,$(THE_BRANDING)) diff --git a/features.in/branding/stage1/lib/50branding.mk b/features.in/branding/stage1/lib/50branding.mk new file mode 100644 index 0000000..dd4cb59 --- /dev/null +++ b/features.in/branding/stage1/lib/50branding.mk @@ -0,0 +1 @@ +CHROOT_PACKAGES_REGEXP += $(call branding,$(STAGE1_BRANDING)) diff --git a/features.in/browser/README b/features.in/browser/README new file mode 100644 index 0000000..9968c89 --- /dev/null +++ b/features.in/browser/README @@ -0,0 +1,6 @@ +Эта фича обеспечивает наличие и конкретизацию выбора браузера. +Разумеется, дополнительные варианты могут быть установлены +явным или косвенным затребованием. + +Следует понимать, что каждая из целей может быть использована +лишь один раз, повторное упоминание будет проигнорировано make. diff --git a/features.in/browser/config.mk b/features.in/browser/config.mk new file mode 100644 index 0000000..e5ed832 --- /dev/null +++ b/features.in/browser/config.mk @@ -0,0 +1,44 @@ +use/browser: + @$(call add_feature) + @$(call add,THE_PACKAGES,$$(THE_BROWSER)) + @$(call try,THE_BROWSER,elinks) # X11-less fallback + +# amend as neccessary; firefox is treated separately due to its flavours +BROWSERS_i586 = chromium seamonkey netsurf epiphany falkon otter-browser \ + elinks links2 +BROWSERS_x86_64 := $(BROWSERS_i586) +BROWSERS_ppc64el = netsurf epiphany falkon otter-browser elinks links2 +BROWSERS_aarch64 = chromium netsurf epiphany falkon otter-browser elinks links2 +BROWSERS_armh = netsurf epiphany falkon otter-browser elinks links2 +BROWSERS_mipsel = chromium seamonkey netsurf epiphany falkon otter-browser \ + elinks links2 +BROWSERS_riscv64 = midori netsurf elinks +BROWSERS_e2k = netsurf elinks links2 +BROWSERS_e2kv4 := $(BROWSERS_e2k) +BROWSERS := $(BROWSERS_$(ARCH)) + +$(addprefix use/browser/,$(BROWSERS)): use/browser/%: use/browser + @$(call set,THE_BROWSER,$*) + +ifneq (,$(filter-out x86_64 i586 aarch64 mipsel,$(ARCH))) +use/browser/chromium: use/browser/firefox use/browser/firefox/esr; @: +endif + +ifeq (,$(filter-out e2k%,$(ARCH))) +use/browser/falkon: use/browser/firefox use/browser/firefox/esr; @: +endif + +ifeq (,$(filter-out riscv64,$(ARCH))) +use/browser/firefox: use/browser/midori +else +# support both firefox and firefox-esr +use/browser/firefox: use/browser + @$(call set,THE_BROWSER,firefox$$(FX_FLAVOUR)) +endif + +# the complete lack of dependencies is intentional +use/browser/firefox/esr: + @$(call set,FX_FLAVOUR,-esr) + +use/browser/firefox/live: use/browser/firefox + @$(call add,THE_BROWSER,livecd-firefox) diff --git a/features.in/build-distro/README b/features.in/build-distro/README new file mode 100644 index 0000000..4702f84 --- /dev/null +++ b/features.in/build-distro/README @@ -0,0 +1,14 @@ +Эта фича конфигурирует создание образа дистрибутива, включая работу +с субпрофилями -- которая сейчас нужна только дистрибутивным целям. + +Дополняет финальную стадию сборки (lib/, scripts.d/) +и тесно с ней связана. + +При желании более полно воспользоваться доступными средствами +фиксации метаданных обратите внимание на следующие переменные: +META_SYSTEM_ID, META_PUBLISHER, META_PREPARER, META_APP_ID, +META_VOL_ID, META_VOL_SET, META_BIBLIO, META_ABSTRACT; +см. тж. genisoimagerc(5) из пакета genisoimage. + +При необходимости задать своё содержимое файла .disk/info, +который также используется propagator, см. META_DISK_INFO. diff --git a/features.in/build-distro/config.mk b/features.in/build-distro/config.mk new file mode 100644 index 0000000..1603de9 --- /dev/null +++ b/features.in/build-distro/config.mk @@ -0,0 +1,3 @@ +# hooked from lib/sugar.mk +use/build-distro: + @$(call add_feature) diff --git a/features.in/build-distro/install2/image-scripts.d/86-all-groups b/features.in/build-distro/install2/image-scripts.d/86-all-groups new file mode 100755 index 0000000..43f0054 --- /dev/null +++ b/features.in/build-distro/install2/image-scripts.d/86-all-groups @@ -0,0 +1,24 @@ +#!/bin/sh -efu +### Ensure that all the necesary system groups exist + +SCRIPT="/usr/share/install2/postinstall.d/86-all-groups" + +cat > "$SCRIPT" << EOF +#!/bin/sh -efu + +. install2-init-functions + +# don't override the script start message on the same line +echo "Ensuring that all the necesary system groups exist" + +echo '/usr/share/install3/default-groups +/etc/alterator/auth/user-groups +/etc/alterator/auth/admin-groups' \ +| while read LIST; do + [ -s "\$destdir\$LIST" ] || continue + for GROUP in \$(cat "\$destdir\$LIST"); do + exec_chroot groupadd -r "\$GROUP" &>/dev/null ||: + done +done +EOF +chmod +x "$SCRIPT" diff --git a/features.in/build-distro/lib/90-build-distro.mk b/features.in/build-distro/lib/90-build-distro.mk new file mode 100644 index 0000000..ffebfad --- /dev/null +++ b/features.in/build-distro/lib/90-build-distro.mk @@ -0,0 +1,47 @@ +# step 4: build the distribution image + +# proxy over the ISO metadata collected; see also genisoimagerc(5) +BOOT_SYSI := $(META_SYSTEM_ID) +BOOT_PUBL := $(META_PUBLISHER) +BOOT_PREP := $(META_PREPARER) +BOOT_APPI := $(META_APP_ID) +BOOT_VOLI := $(shell echo $(META_VOL_ID) | cut -c1-32) +BOOT_VOLS := $(META_VOL_SET) +BOOT_BIBL := $(META_BIBLIO) +BOOT_ABST := $(META_ABSTRACT) +BOOT_COPY := $(META_LICENSE_FILE) + +ISODATA_SYSI = $(BOOT_SYSI) +ISODATA_PUBL = $(BOOT_PUBL) +ISODATA_PREP = $(BOOT_PREP) +ISODATA_APPI = $(BOOT_APPI) +ISODATA_VOLI = $(BOOT_VOLI) +ISODATA_VOLS = $(BOOT_VOLS) +ISODATA_BIBL = $(BOOT_BIBL) +ISODATA_ABST = $(BOOT_ABST) +ISODATA_COPY = $(BOOT_COPY) + +DATE_F := $(shell date +%F) + +BOOT_TYPE := $(BOOTLOADER) + +all: | $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \ + postprocess $(GLOBAL_CLEAN_WORKDIR) + +prep: | $(GLOBAL_DEBUG) dot-disk $(WHATEVER) + +# can't use mp-showref which belongs to the metaprofile +dot-disk: + @mkdir -p files/.disk + @if [ -n "$(META_DISK_INFO)" ]; then \ + echo "$(META_DISK_INFO)" >files/.disk/info; \ + else \ + echo "$(META_VOL_ID) build $(DATE_F)" >files/.disk/info; \ + fi + @echo "$(ARCH)" >files/.disk/arch + @echo "$(DATE)" >files/.disk/date + @if type -t git >&/dev/null; then \ + ( cd $(TOPDIR) && test -d .git && \ + git show-ref --head -ds -- HEAD ||:) \ + >files/.disk/commit 2>/dev/null; \ + fi diff --git a/features.in/build-distro/rootfs/image-scripts.d/30-all-groups b/features.in/build-distro/rootfs/image-scripts.d/30-all-groups new file mode 100755 index 0000000..c36c223 --- /dev/null +++ b/features.in/build-distro/rootfs/image-scripts.d/30-all-groups @@ -0,0 +1,13 @@ +#!/bin/sh -eu + +# ensure that all the necesary system groups exist + +echo '/usr/share/install3/default-groups +/etc/alterator/auth/user-groups +/etc/alterator/auth/admin-groups' \ +| while read LIST; do + [ -s "$LIST" ] || continue + for GROUP in $(cat "$LIST"); do + groupadd -r "$GROUP" &>/dev/null ||: + done +done diff --git a/features.in/build-distro/scripts.d/00-cleanup b/features.in/build-distro/scripts.d/00-cleanup new file mode 100755 index 0000000..a71b290 --- /dev/null +++ b/features.in/build-distro/scripts.d/00-cleanup @@ -0,0 +1,4 @@ +#!/bin/sh +# TODO: invent some way to remove this inter-subprofile thing + +rm -vf $WORKDIR/{squashcfg.mk,initfs,.gitignore} diff --git a/features.in/build-ve/README b/features.in/build-ve/README new file mode 100644 index 0000000..f24a45e --- /dev/null +++ b/features.in/build-ve/README @@ -0,0 +1,5 @@ +Эта фича конфигурирует создание образа виртуального окружения (VE), +что используется для сборки шаблонов OpenVZ и ARM-чрутов для TWRP. + +Дополняет финальную стадию сборки (lib/, image-scripts.d/) +и тесно с ней связана. diff --git a/features.in/build-ve/config.mk b/features.in/build-ve/config.mk new file mode 100644 index 0000000..d517a6f --- /dev/null +++ b/features.in/build-ve/config.mk @@ -0,0 +1,3 @@ +# hooked from lib/sugar.mk +use/build-ve: sub/rootfs@/ + @$(call add_feature) diff --git a/features.in/build-ve/image-scripts.d/03-services b/features.in/build-ve/image-scripts.d/03-services new file mode 100755 index 0000000..462e551 --- /dev/null +++ b/features.in/build-ve/image-scripts.d/03-services @@ -0,0 +1,14 @@ +#!/bin/sh +# VEs typically have no means to communicate with the outer +# world except for networking; still this might need some +# more tweaking for networkless LXC case + +# candidates: +# off: keytable + +[ -x /sbin/chkconfig ] || exit 0 + +chkconfig syslogd on 2>&1 +for i in network random; do chkconfig $i on; done +for i in fbsetfont netfs rawdevices; do chkconfig $i off; done +: diff --git a/features.in/build-ve/image-scripts.d/04-inittab b/features.in/build-ve/image-scripts.d/04-inittab new file mode 100755 index 0000000..f3b362d --- /dev/null +++ b/features.in/build-ve/image-scripts.d/04-inittab @@ -0,0 +1,4 @@ +#!/bin/sh -e +# we don't need no gettys in OpenVZ VEs (might need one in LXC though) +[ -s /etc/inittab ] || exit 0 +sed -i 's,^[0-9]\+:[0-9]\+:respawn:/sbin/mingetty.*,#&,' /etc/inittab diff --git a/features.in/build-ve/image-scripts.d/05-mtab b/features.in/build-ve/image-scripts.d/05-mtab new file mode 100755 index 0000000..b8e2634 --- /dev/null +++ b/features.in/build-ve/image-scripts.d/05-mtab @@ -0,0 +1,3 @@ +#!/bin/sh -e +# should be pretty much obsolete but just in case +[ -L /etc/mtab ] || ln -sf /proc/mounts /etc/mtab diff --git a/features.in/build-ve/image-scripts.d/06-syslog b/features.in/build-ve/image-scripts.d/06-syslog new file mode 100755 index 0000000..fe32fad --- /dev/null +++ b/features.in/build-ve/image-scripts.d/06-syslog @@ -0,0 +1,16 @@ +#!/bin/sh -e +# tweak syslog configuration to: +# - avoid logging to a nonexistent tty; +# - avoid hard sync logging (one is better off doing +# remote syslog if you do care for reliable data anyways) +# credits: vvk@, thresh@ (2010) + +CONFIG=/etc/syslog.conf + +[ ! -f "$CONFIG" ] || \ + sed -i \ + -e 's,/dev/tty12,/var/log/syslog/console,' \ + -e 's,^.*/var/log/syslog/console$,#&,' \ + -e 's,-/var/log/,/var/log/,g' \ + -e 's,/var/log/,-/var/log/,g' \ + "$CONFIG" diff --git a/features.in/build-ve/image-scripts.d/07-fstab b/features.in/build-ve/image-scripts.d/07-fstab new file mode 100755 index 0000000..9853b86 --- /dev/null +++ b/features.in/build-ve/image-scripts.d/07-fstab @@ -0,0 +1,6 @@ +#!/bin/sh + +[ -s /etc/fstab ] || cat >> /etc/fstab <<-EOF +proc /proc proc nosuid,noexec,gid=proc 0 0 +devpts /dev/pts devpts gid=5,mode=620 0 0 +EOF diff --git a/features.in/build-ve/lib/90-build-ve.mk b/features.in/build-ve/lib/90-build-ve.mk new file mode 100644 index 0000000..7370751 --- /dev/null +++ b/features.in/build-ve/lib/90-build-ve.mk @@ -0,0 +1,29 @@ +# step 4: build the virtual environment image + +ifeq (tar,$(IMAGE_PACKTYPE)) +MKI_TAR_COMPRESS = $(IMAGE_COMPRESS) +endif + +ifeq (cpio,$(IMAGE_PACKTYPE)) +MKI_CPIO_COMPRESS = $(IMAGE_COMPRESS) +endif + +ifeq (squash,$(IMAGE_PACKTYPE)) +pack-image: CLEANUP_OUTDIR= +endif + +# some VEs _can_ contain kernels (think ARM multiboot +# but this can also help VE/VM hybrid images) +IMAGE_PACKAGES = $(DOT_BASE) \ + $(SYSTEM_PACKAGES) \ + $(COMMON_PACKAGES) \ + $(BASE_PACKAGES) \ + $(THE_PACKAGES) \ + $(call list,$(BASE_LISTS) $(THE_LISTS) $(COMMON_LISTS)) + +IMAGE_PACKAGES_REGEXP = $(THE_PACKAGES_REGEXP) \ + $(BASE_PACKAGES_REGEXP) + +all: $(GLOBAL_DEBUG) \ + build-image copy-subdirs copy-tree run-image-scripts pack-image \ + postprocess $(GLOBAL_CLEAN_WORKDIR) diff --git a/features.in/build-vm/README b/features.in/build-vm/README new file mode 100644 index 0000000..5ad1780 --- /dev/null +++ b/features.in/build-vm/README @@ -0,0 +1,6 @@ +Эта фича конфигурирует создание образа виртуальной машины (VM) +или тарбола rootfs для использования его на реальном компьютере. +Дополняет финальную стадию сборки (lib/, image-scripts.d/). +Для создания образа виртуальной машины требуется sudo(8) +Для создания тарбола sudo не требуется. +-- см. тж. doc/vm.txt diff --git a/features.in/build-vm/config.mk b/features.in/build-vm/config.mk new file mode 100644 index 0000000..f535a57 --- /dev/null +++ b/features.in/build-vm/config.mk @@ -0,0 +1,4 @@ +# hooked from lib/sugar.mk +use/build-vm: sub/rootfs@/ use/kernel/initrd-setup + @$(call add_feature) + @$(call set,GLOBAL_HSH_PROC,1) diff --git a/features.in/build-vm/generate.mk b/features.in/build-vm/generate.mk new file mode 100644 index 0000000..b2ef598 --- /dev/null +++ b/features.in/build-vm/generate.mk @@ -0,0 +1,4 @@ +# copy tar2fs helper into generated profile to enable standalone builds + +all: + @install -pD $(MKIMAGE_PROFILES)/bin/tar2fs $(BUILDDIR)/bin/tar2fs diff --git a/features.in/build-vm/image-scripts.d/03-services b/features.in/build-vm/image-scripts.d/03-services new file mode 100755 index 0000000..c313ca6 --- /dev/null +++ b/features.in/build-vm/image-scripts.d/03-services @@ -0,0 +1,10 @@ +#!/bin/sh +# VMs might have no means to communicate with the outer +# world except for networking + +[ -x /sbin/chkconfig ] || exit 0 + +chkconfig syslogd on 2>&1 +for i in network random; do chkconfig $i on; done +for i in fbsetfont netfs rawdevices; do chkconfig $i off; done +: diff --git a/features.in/build-vm/image-scripts.d/06-syslog b/features.in/build-vm/image-scripts.d/06-syslog new file mode 100755 index 0000000..e9c4830 --- /dev/null +++ b/features.in/build-vm/image-scripts.d/06-syslog @@ -0,0 +1,12 @@ +#!/bin/sh -e +# tweak syslog configuration to avoid hard sync logging (one is better off +# doing remote syslog if you do care for reliable data anyways) +# credits: vvk@, thresh@ (2010) + +CONFIG=/etc/syslog.conf + +[ ! -f "$CONFIG" ] || \ + sed -i \ + -e 's,-/var/log/,/var/log/,g' \ + -e 's,/var/log/,-/var/log/,g' \ + "$CONFIG" diff --git a/features.in/build-vm/image-scripts.d/16-fstab b/features.in/build-vm/image-scripts.d/16-fstab new file mode 100755 index 0000000..85374d1 --- /dev/null +++ b/features.in/build-vm/image-scripts.d/16-fstab @@ -0,0 +1,4 @@ +#!/bin/sh + +grep -qe "[[:space:]]/[[:space:]]" /etc/fstab || + printf "LABEL=ROOT\t/\t$GLOBAL_VM_FSTYPE\tdefaults\t1 1\n" >> /etc/fstab diff --git a/features.in/build-vm/image-scripts.d/17-kernel b/features.in/build-vm/image-scripts.d/17-kernel new file mode 100755 index 0000000..6c7ff03 --- /dev/null +++ b/features.in/build-vm/image-scripts.d/17-kernel @@ -0,0 +1,55 @@ +#!/bin/sh -efu +# predictable file locations make bootloader configuration simple; +# this script relates to features.in/stage2/stage1/scripts.d/81-make-initfs + +[ -n "$GLOBAL_KFLAVOURS" ] || + { echo "** KFLAVOURS is empty" >&2; exit 0; } + +kver= +echo $GLOBAL_KFLAVOURS +for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" +done + +[ ! -z "${kver#"${kver%%[! ]*}"}" ] || + { echo "** unable to deduce kernel version" >&2; exit 1; } + +cd /boot + +# creating a special initrd.mk +cp /etc/initrd.mk /etc/initrd.mk.oem +echo 'FEATURES += add-modules compress cleanup kbd rdshell rootfs' \ + >> /etc/initrd.mk.oem + +if [ -n "$GLOBAL_VM_INITRDFEATURES" ]; then + for INITRDFEATURE in $GLOBAL_VM_INITRDFEATURES; do + echo "FEATURES += $INITRDFEATURE" >> /etc/initrd.mk.oem + done +fi + +if [ -n "$GLOBAL_VM_INITRDMODULES" ]; then + for INITRDMODULE in $GLOBAL_VM_INITRDMODULES; do + echo "MODULES_TRY_ADD += $INITRDMODULE" >> /etc/initrd.mk.oem + done +fi + +for KVER in $kver; do + make-initrd -N -v -k "$KVER" AUTODETECT= -c /etc/initrd.mk.oem \ + || { echo "** Error: make-initrd failed" >&2; exit 1; } +done + +case "$GLOBAL_ARCH" in +e2k) + kname=image;; +*) + kname=vmlinuz;; +esac + +rm -f $kname initrd.img +ln -s $kname-$KVER $kname ||: +ln -s initrd-$KVER.img initrd.img + +: diff --git a/features.in/build-vm/lib/90-build-vm.mk b/features.in/build-vm/lib/90-build-vm.mk new file mode 100644 index 0000000..fbb4473 --- /dev/null +++ b/features.in/build-vm/lib/90-build-vm.mk @@ -0,0 +1,122 @@ +# step 4: build the virtual machine image + +IMAGE_PACKAGES = $(DOT_BASE) \ + $(SYSTEM_PACKAGES) \ + $(COMMON_PACKAGES) \ + $(BASE_PACKAGES) \ + $(THE_PACKAGES) \ + $(call list,$(BASE_LISTS) $(THE_LISTS) $(COMMON_LISTS)) + +IMAGE_PACKAGES_REGEXP = $(THE_PACKAGES_REGEXP) \ + $(BASE_PACKAGES_REGEXP) + +ifdef EFI_BOOTLOADER +VM_BOOTLOADER=$(EFI_BOOTLOADER) +else +VM_BOOTLOADER=$(BASE_BOOTLOADER) +endif + +# intermediate chroot archive +VM_TARBALL := $(IMAGE_OUTDIR)/$(IMAGE_NAME).tar +VM_OUT_TARBALL := $(IMAGE_OUTDIR)/$(IMAGE_OUTNAME).tar +VM_RAWDISK := $(IMAGE_OUTDIR)/$(IMAGE_NAME).raw +VM_FSTYPE ?= ext4 +VM_SIZE ?= 0 + +VM_GZIP_COMMAND ?= gzip -f +VM_XZ_COMMAND ?= xz -T0 -f + +# tavolga +RECOVERY_LINE ?= Press ENTER to start + +# tarball save +ifdef VM_SAVE_TARBALL +ifeq (,$(filter-out img img.xz qcow2 qcow2c vdi vmdk vhd,$(IMAGE_TYPE))) +ifeq (,$(filter-out tar tar.gz tar.xz,$(VM_SAVE_TARBALL))) +SAVE_TARBALL := convert-image/$(VM_SAVE_TARBALL) +endif +endif +endif + +check-sudo: + @if ! type -t sudo >&/dev/null; then \ + echo "** error: sudo not available, see doc/vm.txt" >&2; \ + fi + +check-qemu: + @if ! type -t qemu-img >&/dev/null; then \ + echo "** error: qemu-img not available" >&2; \ + exit 1; \ + fi + +tar2fs: $(SAVE_TARBALL) check-sudo prepare-tarball-qemu + @if [ -x /usr/share/mkimage-profiles/bin/tar2fs ]; then \ + TOPDIR=/usr/share/mkimage-profiles; \ + fi; \ + if ! sudo $$TOPDIR/bin/tar2fs \ + "$(VM_TARBALL)" "$(VM_RAWDISK)" "$(VM_SIZE)" "$(VM_FSTYPE)" \ + "$(VM_BOOTLOADER)" "$(ARCH)" "$(VM_PARTTABLE)" \ + "$(VM_BOOTTYPE)"; then \ + echo "** error: sudo tar2fs failed, see build log" >&2; \ + exit 1; \ + fi + +# copy $(BUILDDIR)/.work/chroot/.host/qemu* into chroot if qemu is used +prepare-tarball-qemu: + @(cd "$(BUILDDIR)/.work/chroot/"; \ + tar -rf "$(VM_TARBALL)" ./.host/qemu*) ||: + +convert-image/tar: +ifdef SAVE_TARBALL + cp "$(VM_TARBALL)" "$(VM_OUT_TARBALL)" +else + mv "$(VM_TARBALL)" "$(VM_OUT_TARBALL)" +endif + +convert-image/tar.gz: convert-image/tar + $(VM_GZIP_COMMAND) "$(VM_OUT_TARBALL)" + +convert-image/tar.xz: convert-image/tar + $(VM_XZ_COMMAND) "$(VM_OUT_TARBALL)" + +convert-image/img: tar2fs + mv "$(VM_RAWDISK)" "$(IMAGE_OUTPATH)" + +convert-image/img.xz: tar2fs + $(VM_XZ_COMMAND) < "$(VM_RAWDISK)" > "$(IMAGE_OUTPATH)" + +convert-image/qcow2 convert-image/qcow2c convert-image/vmdk \ + convert-image/vdi convert-image/vhd: check-qemu tar2fs + @VM_COMPRESS=; \ + case "$(IMAGE_TYPE)" in \ + "vhd") VM_FORMAT="vpc";; \ + "qcow2c") VM_FORMAT="qcow2"; VM_COMPRESS="-c";; \ + *) VM_FORMAT="$(IMAGE_TYPE)"; \ + esac; \ + qemu-img convert $$VM_COMPRESS -O "$$VM_FORMAT" \ + "$(VM_RAWDISK)" "$(IMAGE_OUTPATH)" + +# for tavolga +convert-image/recovery.tar: + build-recovery-tar \ + --image-name $(IMAGE_NAME) \ + --date $(DATE) \ + --compress-command '$(VM_GZIP_COMMAND)' \ + --rootfs "$(VM_TARBALL)" \ + --output "$(IMAGE_OUTPATH)" \ + --line '$(RECOVERY_LINE)' + +post-convert: + @rm -f "$(VM_RAWDISK)"; \ + if [ "0$(DEBUG)" -le 1 ]; then rm -f "$(VM_TARBALL)"; fi + +convert-image: convert-image/$(IMAGE_TYPE) post-convert; @: + +run-image-scripts: GLOBAL_CLEANUP_PACKAGES := $(CLEANUP_PACKAGES) + +# override +pack-image: MKI_PACK_RESULTS := tar:$(VM_TARBALL) + +all: $(GLOBAL_DEBUG) \ + build-image copy-subdirs copy-tree run-image-scripts pack-image \ + convert-image postprocess $(GLOBAL_CLEAN_WORKDIR) diff --git a/features.in/cleanup/README b/features.in/cleanup/README new file mode 100644 index 0000000..95bcb10 --- /dev/null +++ b/features.in/cleanup/README @@ -0,0 +1,13 @@ +Эта фича вместо созидания занимается выкидыванием лишнего +(например, части модулей инсталятора из установленной системы). + +По возможности стоит работать над дизайном инфраструктуры +и пакетной базой так, чтобы ставить-удалять приходилось как +можно меньше. В идеале такой антифичи не должно быть вовсе :) + +Для пакетов, которые следует удалять из установленной классическим +инсталятором системы, но не из livecd, применяйте переменную +CLEANUP_BASE_PACKAGES. + +ВНИМАНИЕ: также удаляет rpm, apt и базу по пакетам из livecd, +если в него не был добавлен инсталятор! diff --git a/features.in/cleanup/config.mk b/features.in/cleanup/config.mk new file mode 100644 index 0000000..d944a94 --- /dev/null +++ b/features.in/cleanup/config.mk @@ -0,0 +1,57 @@ +use/cleanup: + @$(call add_feature) + @$(call xport,LIVE_NO_CLEANUPDB) + @$(call xport,LIVE_NO_CLEANUP_DOCS) + @$(call xport,CLEANUP_PACKAGES) + @$(call xport,CLEANUP_BASE_PACKAGES) + +use/cleanup/live-no-cleanupdb: + @$(call set,LIVE_NO_CLEANUPDB,yes) + +use/cleanup/live-no-cleanup-docs: + @$(call set,LIVE_NO_CLEANUP_DOCS,yes) + +use/cleanup/libs: + @$(call add,BASE_PACKAGES,apt-scripts) + @$(call add,INSTALL2_PACKAGES,installer-feature-cleanup-libs-stage3) + +use/cleanup/installer: use/cleanup + @$(call add,CLEANUP_BASE_PACKAGES,'installer-*') + +use/cleanup/x11: use/cleanup use/cleanup/libs + @$(call add,CLEANUP_PACKAGES,libICE libSM libxcb 'libX*') + +# as some alterator modules are installed into stage3 (the destination +# root filesystem) to perform actions like bootloader setup, we might +# have to remove them (contrary to the usual build-up)... +use/cleanup/alterator: use/cleanup + @$(call add,CLEANUP_PACKAGES,'alterator*' rpm-macros-alterator) + @$(call add,CLEANUP_PACKAGES,'guile*' libvhttpd autologin-sh-functions) + +# for lightweight server distros +use/cleanup/x11-alterator: use/cleanup/x11 use/cleanup/alterator + @$(call add,CLEANUP_PACKAGES,libmng qt4-common qt5-base-common) + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +# "basically everything else"; this *will* change with branches and distros +use/cleanup/jeos: use/cleanup/x11-alterator + @$(call add,CLEANUP_PACKAGES,liblcms libjpeg 'libtiff*') + @$(call add,CLEANUP_PACKAGES,avahi-autoipd iw wpa_supplicant) + @$(call add,CLEANUP_PACKAGES,openssl libpcsclite) + @# a *lot* of stray things get pulled in by alterator modules + @$(call add,CLEANUP_PACKAGES,fontconfig) + @$(call add,CLEANUP_PACKAGES,liblcms libjpeg 'libtiff*') + @$(call add,CLEANUP_PACKAGES,openssl libpcsclite) + +# mostly non-interactive system +use/cleanup/jeos/full: use/cleanup/jeos + @$(call add,CLEANUP_PACKAGES,interactivesystem 'groff*' man stmpclean) + @$(call add,CLEANUP_PACKAGES,console-scripts console-vt-tools 'kbd*') + @$(call add,CLEANUP_PACKAGES,libsystemd-journal libsystemd-login) + @$(call add,CLEANUP_PACKAGES,dbus libdbus) + +else +# non-x86 systems are much more prone to critical package removals, +# just avoid those for now => stub it +use/cleanup/jeos use/cleanup/jeos/full:; @: +endif diff --git a/features.in/cleanup/image-scripts.d/90-cleanup-pkgs b/features.in/cleanup/image-scripts.d/90-cleanup-pkgs new file mode 100755 index 0000000..219ce65 --- /dev/null +++ b/features.in/cleanup/image-scripts.d/90-cleanup-pkgs @@ -0,0 +1,7 @@ +#!/bin/sh -efu +# remove temporary packages from the installed system + +[ -n "$GLOBAL_CLEANUP_PACKAGES" ] || exit 0 + +list="$(rpmquery -a --qf='%{NAME}\n' $GLOBAL_CLEANUP_PACKAGES)" +[ -z "$list" ] || apt-get remove -f -y -- $list diff --git a/features.in/cleanup/install2/image-scripts.d/90-cleanup-pkgs b/features.in/cleanup/install2/image-scripts.d/90-cleanup-pkgs new file mode 100755 index 0000000..b456bec --- /dev/null +++ b/features.in/cleanup/install2/image-scripts.d/90-cleanup-pkgs @@ -0,0 +1,26 @@ +#!/bin/sh -efu +### create a postinstall script to drop temporarily needed packages + +if [ -n "$GLOBAL_VERBOSE" ]; then + echo "** GLOBAL_CLEANUP_PACKAGES: $GLOBAL_CLEANUP_PACKAGES" + echo "** GLOBAL_CLEANUP_BASE_PACKAGES: $GLOBAL_CLEANUP_BASE_PACKAGES" +fi >&2 + +export GLOBAL_CLEANUP_PACKAGES="$GLOBAL_CLEANUP_PACKAGES \ + $GLOBAL_CLEANUP_BASE_PACKAGES" + +SCRIPT="/usr/share/install2/postinstall.d/01-remove-pkgs" + +cat > "$SCRIPT" << EOF +#!/bin/sh -efu + +. install2-init-functions + +# don't override the script start message on the same line +echo "removing $GLOBAL_CLEANUP_PACKAGES" + +# remove temporary packages from the installed system +list="\$(exec_chroot rpmquery -a --qf='%{NAME}\\n' $GLOBAL_CLEANUP_PACKAGES)" +[ -z "\$list" ] || exec_chroot apt-get remove -f -y -- \$list +EOF +chmod +x "$SCRIPT" diff --git a/features.in/cleanup/live/image-scripts.d/80-locales b/features.in/cleanup/live/image-scripts.d/80-locales new file mode 100755 index 0000000..f6c81d2 --- /dev/null +++ b/features.in/cleanup/live/image-scripts.d/80-locales @@ -0,0 +1,12 @@ +#!/bin/sh +# FIXME: there should be less brutal i18n tuning + +cd /usr/share/locale +rm -r *@* +for i in */; do + case "$i" in + be*|en*|ru*|uk*) continue;; + esac + rm -r "$i" +done +: diff --git a/features.in/cleanup/live/image-scripts.d/90-cleanup-docs b/features.in/cleanup/live/image-scripts.d/90-cleanup-docs new file mode 100755 index 0000000..4b71208 --- /dev/null +++ b/features.in/cleanup/live/image-scripts.d/90-cleanup-docs @@ -0,0 +1,10 @@ +#!/bin/sh +# remove all docs + +# don't cripple the image to be copied over +[ -n "$GLOBAL_LIVE_NO_CLEANUP_DOCS" ] || \ + [ -x /usr/sbin/live-install ] || \ + [ -x /usr/sbin/livecd-install ] && exit 0 + +rpmquery -ad |grep ^/ |xargs -r rm -f -- +rm -rf /usr/share/{doc,man,info,license,gfxboot} diff --git a/features.in/cleanup/live/image-scripts.d/90-cleanup-pkgs b/features.in/cleanup/live/image-scripts.d/90-cleanup-pkgs new file mode 100755 index 0000000..5dc18bd --- /dev/null +++ b/features.in/cleanup/live/image-scripts.d/90-cleanup-pkgs @@ -0,0 +1,7 @@ +#!/bin/sh -efu +# remove extra packages from a bare livecd + +[ -n "$GLOBAL_CLEANUP_PACKAGES" ] || exit 0 +list="$(rpmquery -a --qf='%{NAME}\n' $GLOBAL_CLEANUP_PACKAGES)" +[ -z "$list" ] || apt-get remove -f -y -- $list +: diff --git a/features.in/cleanup/live/image-scripts.d/99-cleanupdb b/features.in/cleanup/live/image-scripts.d/99-cleanupdb new file mode 100755 index 0000000..be57b66 --- /dev/null +++ b/features.in/cleanup/live/image-scripts.d/99-cleanupdb @@ -0,0 +1,22 @@ +#!/bin/sh + +# don't cripple the image to be copied over or explicitly requested +# not to do this +[ -n "$GLOBAL_LIVE_NO_CLEANUPDB" ] || \ + [ -x /usr/sbin/live-install ] || \ + [ -x /usr/sbin/livecd-install ] && exit 0 + +# dump what's here by this point +echo "** live packages before rpmdb purge:" +rpmquery -a --qf='%{NAME} %{VERSION}-%{RELEASE}\n' + +# remove apt database and cache +find /var/lib/apt /var/cache/apt -type f -delete + +# not going to need them without rpmdb, it's not even rescue anymore +rpm -e --nodeps apt libapt rpm librpmbuild librpm 2>/dev/null ||: + +# finally, drop rpmdb +find /var/lib/rpm -type f -delete + +: diff --git a/features.in/control/README b/features.in/control/README new file mode 100644 index 0000000..1e72cd2 --- /dev/null +++ b/features.in/control/README @@ -0,0 +1,2 @@ +Эта фича предоставляет интерфейс для конфигурирования дистрибутивных +значений по умолчанию control(8); см. тж. http://altlinux.org/control diff --git a/features.in/control/config.mk b/features.in/control/config.mk new file mode 100644 index 0000000..76cfc43 --- /dev/null +++ b/features.in/control/config.mk @@ -0,0 +1,23 @@ +use/control: + @$(call add_feature) + @$(call add,THE_PACKAGES,control) + @$(call xport,CONTROL) + +# some presets +use/control/sudo-su: use/control + @$(call add,CONTROL,su:public sudo:public) + +# recommended by ldv@ ;-) +# note that: +# - sshd-allow-groups results in "AllowGroups wheel users" +# - unprivileged su is used to drop privileges, not gain those +use/control/server/ldv: use/control + @$(call add,CONTROL,mount:unprivileged) + @$(call add,CONTROL,passwdqc-enforce:everyone) + @$(call add,CONTROL,ping:netadmin) + @$(call add,CONTROL,ping6:restricted) + @$(call add,CONTROL,postqueue:mailadm) + @$(call add,CONTROL,sftp:disabled) + @$(call add,CONTROL,sshd-allow-groups:enabled) + @$(call add,CONTROL,sshd-password-auth:disabled) + @$(call add,CONTROL,su:restricted) diff --git a/features.in/control/install2/image-scripts.d/51-control b/features.in/control/install2/image-scripts.d/51-control new file mode 100755 index 0000000..3aa503d --- /dev/null +++ b/features.in/control/install2/image-scripts.d/51-control @@ -0,0 +1,7 @@ +#!/bin/sh +# setup control(8) states for the installed system +# FIXME: drop this when rootfs scripts/data get installer support + +[ -z "$GLOBAL_CONTROL" ] || + echo "$GLOBAL_CONTROL" | + tr ' :' '\n ' > /usr/share/install2/control diff --git a/features.in/control/rootfs/image-scripts.d/50-control b/features.in/control/rootfs/image-scripts.d/50-control new file mode 100755 index 0000000..36f6e9e --- /dev/null +++ b/features.in/control/rootfs/image-scripts.d/50-control @@ -0,0 +1,11 @@ +#!/bin/sh +# setup control(8) states + +[ -z "$GLOBAL_CONTROL" ] || + echo "$GLOBAL_CONTROL" \ + | tr ' ' '\n' \ + | while IFS=':' read facility state; do + [ -z "$facility" -o -z "$state" ] || + control "$facility" "$state" + done +: diff --git a/features.in/deflogin/README b/features.in/deflogin/README new file mode 100644 index 0000000..e0a672b --- /dev/null +++ b/features.in/deflogin/README @@ -0,0 +1,23 @@ +Эта фича конфигурирует root login и пользователей по умолчанию. + +Если ROOTPW не задан, то подходящий пароль не существует. +При необходимости задать пустой пароль root (например, на LiveCD) +выставьте переменную ROOTPW_EMPTY в значение "1". + +ВНИМАНИЕ: применяйте разумно, т.к. крайне легко создать и оставить + дыру в безопасности! + +В версии mkimage-profiles 1.4.4 появилась возможность создать пользователя +с произвольными uid, gid, домашним каталого, интерпретатором shell и т.д. +Используйте для этого следующую конструкцию: + +@$(call set,SPEC_USER,имя_пользователя:группа:uid:gid:home_dir:shell) + +Например: + +@$(call set,SPEC_USER,user:user:500:500:/home/user:/bin/bash) + +При этом нужно иметь в виду, что будет создана соответствующая группа с +соответствующим gid (нужно быть уверенным, что одноимённая группа не сущетсвует), +а пользователь будет добавлен в неё. Пользователь будет создан без пароля. +Для установки пароля при первом запуске, смотрите фичу oem. diff --git a/features.in/deflogin/config.mk b/features.in/deflogin/config.mk new file mode 100644 index 0000000..e6e3834 --- /dev/null +++ b/features.in/deflogin/config.mk @@ -0,0 +1,45 @@ +# WARNING: the variable values are stored in build config/log! +use/deflogin: + @$(call add_feature) + @$(call add,THE_PACKAGES,shadow-utils passwd) + @$(call xport,ROOTPW_EMPTY) + @$(call xport,ROOTPW) + @$(call xport,USERS) + @$(call xport,GROUPS) + @$(call xport,SPEC_USER) + +# some presets +# USERS variable chunk format is "login:passwd:admin:sudo" +# GROUPS are just stashed there to include USERS logins created + +# basic livecd: root and altlinux users with no password at all +use/deflogin/live: use/deflogin + @$(call set,ROOTPW_EMPTY,1) + @$(call add,USERS,kometa::1:1) + +# real thing: some control added +use/deflogin/desktop: use/deflogin/live \ + use/deflogin/hardware use/deflogin/xgrp use/deflogin/privileges; @: + +# could also be passed on the commandline +use/deflogin/root: use/deflogin + @$(call try,ROOTPW,kometa) + +# appliances: "root:altlinux"; "altlinux:root" in "xgrp" group +use/deflogin/kometaroot: use/deflogin/root use/deflogin/xgrp + @$(call add,USERS,kometa:root:1:1) + +use/deflogin/altroot: use/deflogin/root use/deflogin/xgrp + @$(call add,USERS,alt:root:1:1) + +# peripherals +use/deflogin/hardware: use/deflogin + @$(call add,GROUPS,cdwriter radio scanner uucp) + +# videocard and desktop related hardware +use/deflogin/xgrp: use/deflogin + @$(call add,GROUPS,xgrp audio) + +# potentially elevated privileges (NB: _not_ wheel) +use/deflogin/privileges: use/deflogin + @$(call add,GROUPS,fuse netadmin proc users) diff --git a/features.in/deflogin/rootfs/image-scripts.d/50-issue b/features.in/deflogin/rootfs/image-scripts.d/50-issue new file mode 100755 index 0000000..343aad9 --- /dev/null +++ b/features.in/deflogin/rootfs/image-scripts.d/50-issue @@ -0,0 +1,23 @@ +#!/bin/sh +# issue welcome message if there's a guest user +# (the first one configured with empty password) + +[ -n "$GLOBAL_USERS" ] || { + echo "** 50-issue: warning, no users created" >&1 + exit 0 +} + +guest= +for u in $GLOBAL_USERS; do + login="${u%%:*}" + [ -n "$login" ] || continue + rest="${u#*:}" + pass="${rest%%:*}" + [ -z "$pass" ] || continue + guest="$login" + break +done + +[ -n "$guest" ] || exit 0 + +echo "Hello friend, say \`$guest' to log in at \\l" >> /etc/issue diff --git a/features.in/deflogin/rootfs/image-scripts.d/50-root b/features.in/deflogin/rootfs/image-scripts.d/50-root new file mode 100755 index 0000000..a2bc660 --- /dev/null +++ b/features.in/deflogin/rootfs/image-scripts.d/50-root @@ -0,0 +1,16 @@ +#!/bin/sh + +# explicitly requested empty root password +case "$GLOBAL_ROOTPW_EMPTY" in +1|y|Y|yes) + usermod -p "" root + exit 0 + ;; +esac + +# set root password if any; no-op if it is empty +if [ -z "$GLOBAL_ROOTPW" ]; then + echo "** warning: no root password provided, skipping" >&2 +else + echo "$GLOBAL_ROOTPW" | passwd --stdin root +fi diff --git a/features.in/deflogin/rootfs/image-scripts.d/50-users b/features.in/deflogin/rootfs/image-scripts.d/50-users new file mode 100755 index 0000000..0fdf2ec --- /dev/null +++ b/features.in/deflogin/rootfs/image-scripts.d/50-users @@ -0,0 +1,46 @@ +#!/bin/sh +# add regular user(s) assigning passwords and attributes of power + +# NB: care that the utilities exist; shadow-utils is warranted + +add_user() { + useradd -m "$1" && + usermod -p "" "$1" && + if [ -n "$GLOBAL_GROUPS" ]; then # some of them might be missing + for group in $GLOBAL_GROUPS; do + usermod -a --groups "$group" "$1" ||: + done + fi || + echo "*** failed to add user '$1'" +} + +set_password() { echo "$1:$2" | chpasswd; } + +set_admin() { usermod -a --groups "wheel" "$1"; } + +# NB: one must care to purge this from LiveCD if it's installed permanently +set_sudo() { + [ ! -w "/etc/sudoers" ] || + echo "$1 ALL=(ALL) ALL" >> "/etc/sudoers" +} + +# chpasswd is intended for batch use but that would be less comprehensible +[ -z "$GLOBAL_USERS" ] || + echo "$GLOBAL_USERS" \ + | tr ' ' '\n' \ + | while IFS=':' read login passwd admin sudo; do + add_user "$login" + [ -z "$passwd" ] || set_password "$login" "$passwd" + [ -z "$admin" ] || set_admin "$login" + [ -z "$sudo" ] || set_sudo "$login" + done + +# create special user +[ -z "$GLOBAL_SPEC_USER" ] || + echo "$GLOBAL_SPEC_USER" \ + | tr ' ' '\n' \ + | while IFS=':' read login group uid gid homedir shell; do + groupadd -g $gid $group >/dev/null 2>&1 || : + useradd -g $gid -u $uid -d $homedir -s $shell $login >/dev/null 2>&1 || : + usermod -G $group $login || : + done diff --git a/features.in/dev/README b/features.in/dev/README new file mode 100644 index 0000000..569c07c --- /dev/null +++ b/features.in/dev/README @@ -0,0 +1,10 @@ +Эта фича служит для создания образов, предназначающихся для разработки. +В первую очередь обеспечивается развёртывание hasher и mkimage. + +Реализованы поддержка LiveCD, VM, VE и добавление группы в инсталятор. + +Обратите внимание: эта фича достаточно серьёзно изменяет поведение +субпрофиля main, оставляя из всего обычного множества обрабатываемых +переменных только MAIN_PACKAGES, MAIN_PACKAGES_REGEXP и MAIN_LISTS +во избежание дублирования не требующихся для сборки минимальных +образов пакетов. diff --git a/features.in/dev/config.mk b/features.in/dev/config.mk new file mode 100644 index 0000000..8200056 --- /dev/null +++ b/features.in/dev/config.mk @@ -0,0 +1,34 @@ +use/dev: use/control + @$(call add_feature) + @$(call add,THE_PACKAGES,git-core hasher gear) + @$(call add,CONTROL,pam_mktemp:enabled) + +# use/dev intentionally missing +use/dev/repo: use/repo/main + @$(call add,THE_PACKAGES,apt-repo) + @$(call add,MAIN_LISTS,$(call tags,main builder)) + +use/dev/mkimage: use/dev + @$(call add,THE_PACKAGES,mkimage shadow-change su) + +use/dev/builder/base: use/dev/mkimage + @$(call add,THE_LISTS,$(call tags,builder && (base || extra))) + +use/dev/builder/live: use/dev/builder/base + @$(call add,LIVE_LISTS,$(call tags,live builder)) + @$(call add,LIVE_PACKAGES,livecd-qemu-arch qemu-user-binfmt_misc) + +use/dev/builder/full: use/dev use/dev/builder/live use/dev/repo +ifdef BIGRAM + @$(call set,KFLAVOURS,$(BIGRAM)) +endif + @$(call add,THE_LISTS,$(call tags,server extra)) + @$(call add,MAIN_LISTS,$(call tags,live builder)) +ifeq (,$(filter-out i586 x86_64 ,$(ARCH))) + @$(call add,MAIN_PACKAGES,syslinux memtest86+) +endif + @$(call add,MAIN_PACKAGES,pciids xorriso) + @$(call add,LIVE_PACKAGES,sudo perl-Gear-Remotes) + +use/dev/groups/builder: use/dev/repo + @$(call add,MAIN_GROUPS,dev/builder) diff --git a/features.in/dev/live/image-scripts.d/51-hasher b/features.in/dev/live/image-scripts.d/51-hasher new file mode 100755 index 0000000..36fdd1f --- /dev/null +++ b/features.in/dev/live/image-scripts.d/51-hasher @@ -0,0 +1,120 @@ +#!/bin/sh -efu +# configure hasher (implies that 30-users has been run already) + +ARCH="$(rpm --eval '%_host_cpu')" +[ -n "$ARCH" ] || exit 2 + +gray="$(echo -ne "\\033[0;37m")" +white="$(echo -ne "\\033[1;37m")" +cyan="$(echo -ne "\\033[1;36m")" + +# root +cat >> /root/.bash_profile << EOF + +ram="\$(awk '/^MemTotal/ { print int(\$2/1024+0.5) }' /proc/meminfo)" +swap="\$(awk '/^SwapTotal/ { print int(\$2/1024+0.5) }' /proc/meminfo)" +tmpfs="\$(df -kT /tmp 2>/dev/null \\ + | awk '/^[a-zA-Z_0-9/-]+[[:space:]]+tmpfs/ { print int(\$3/1024); }')" + +cat << EOH +Welcome to live builder host system! + +Memory: $cyan\${ram}M$gray, swap: $cyan\${swap}M$gray +Autoconfigured tmpfs on /tmp: $cyan\${tmpfs}M$gray + +Run ${white}swapon${gray}(8) on any local swaps you might like to employ +followed by ${white}service livecd-tmpfs restart${gray} to reconfigure tmpfs + +EOH +EOF + +# predefined passwordless livecd user +USER="kometa" +if ! id "$USER" >&/dev/null; then + echo "No such user '$USER'" >&2 + exit +fi + +# ~ +HOME="/home/$USER" +install -dm750 -o "$USER" -g "$USER" "$HOME" + +# http://altlinux.org/tmpfs +TMP="/tmp/.private/$USER" + +# we honestly don't know much more +if type -t git && type -t su; then + su - -c "git config --global user.email $USER@localhost" "$USER" + su - -c "git config --global user.name 'live builder'" "$USER" +fi >&/dev/null + +# developer should feel comfortable, eh? ;-) +ZSHELL="/bin/zsh" +if [ -x "$ZSHELL" ]; then + chsh -s "$ZSHELL" "$USER" + install -m644 -o "$USER" -g "$USER" /dev/null "$HOME/.zshrc" + cat >> "$HOME/.zsh_history" <<-EOF + git clone git://git.altlinux.org/gears/m/mkimage-profiles.git && cd mkimage-profiles && make help/distro + make -C /usr/share/mkimage-profiles syslinux.iso + git clone git://git.altlinux.org/gears/h/hello.git && cd hello && gear-hsh + EOF +fi + +if type -t screen; then + cat >> "$HOME/.screenrc" <<-EOF + caption always "%{+b rk}%H%{gk} |%c %{yk}%d.%m.%Y | %72=Load: %l %{wk}" + defscrollback 1000 + EOF +fi >&/dev/null + +cat >> "$HOME/.profile" << EOF +alias l='ls -l' +alias m='cd /usr/share/mkimage-profiles' +clear +cat << EOH +Welcome to live builder environment! +Here are some ALT package/image build tools prepared for you: +* ${white}gear${gray}(1) -- see ${cyan}http://en.altlinux.org/gear${gray}; +* ${white}hsh${gray}(1) -- see ${cyan}http://en.altlinux.org/hasher${gray}; +* ${white}mkimage${gray} -- see ${cyan}http://en.altlinux.org/mkimage${gray}; +* ${white}mkimage-profiles${gray} described in Russian at ${cyan}http://altlinux.org/m-p${gray} + +Examples (use right/middle mouse button to paste; see ~/hasher/repo/): +* ${white}git clone git://git.altlinux.org/gears/h/hello.git && cd hello && gear-hsh${gray} +* ${white}make -C /usr/share/mkimage-profiles syslinux.iso${gray} + +EOH +EOF + +# rpm +sed -i '/^%_tmppath.*tmp$/d' "$HOME/.rpmmacros" +cat << EOF >> "$HOME/.rpmmacros" +%packager Unknown +%_target_cpu $ARCH +%_tmppath $TMP +%_sourcedir %{_topsrcdir}/SOURCES/%name +EOF + +# hasher +WORKDIR="$TMP/hasher" +ln -s "$WORKDIR" "$HOME/hasher" +echo "rpm-dir file://$HOME/hasher/repo $ARCH hasher" \ + >> /etc/apt/sources.list.d/hasher.list + +mkdir "$HOME/.hasher" +cat >> "$HOME/.hasher/config" << EOF +packager="\$(rpm --eval %packager)" +def_target=$ARCH +export GCC_USE_CCACHE=1 +mkdir -p "$WORKDIR" +EOF + +# online repo needs network not isolation +echo "export share_network=1" >> /etc/profile.d/hasher.sh +chmod +x /etc/profile.d/hasher.sh + +# squashfs-tools 4.3+ +echo "allowed_mountpoints=/proc" >> /etc/hasher-priv/system + +# requisite +hasher-useradd "$USER" diff --git a/features.in/dev/main/lib/50-override.mk b/features.in/dev/main/lib/50-override.mk new file mode 100644 index 0000000..0ff27da --- /dev/null +++ b/features.in/dev/main/lib/50-override.mk @@ -0,0 +1,4 @@ +# only MAIN_* should go in this time + +IMAGE_PACKAGES_REGEXP = $(MAIN_PACKAGES_REGEXP) +IMAGE_PACKAGES = $(MAIN_PACKAGES) $(call map,list,$(MAIN_LISTS)) diff --git a/features.in/docs/README b/features.in/docs/README new file mode 100644 index 0000000..4516df8 --- /dev/null +++ b/features.in/docs/README @@ -0,0 +1,12 @@ +Эта фича добавляет в образ распакованную документацию дистрибутива, +а именно вводную страничку (входит в пакет branding-*-indexhtml), +и/или специфичное для данного продукта руководство из пакета docs-* +(вариант задаётся отдельно выставлением переменной DOCS), +и/или тексты лицензионных соглашений. + +Обратите внимание, что для indexhtml создаётся переброска с учётом +языка (при наличии index-LL.html), поэтому ожидается задействование +фичи l10n с соответствующим указанием языка по умолчанию. + +NB: предполагается применение при формировании ISO-образов, +другие случаи наверняка потребуют доработки. diff --git a/features.in/docs/config.mk b/features.in/docs/config.mk new file mode 100644 index 0000000..fc27e0b --- /dev/null +++ b/features.in/docs/config.mk @@ -0,0 +1,25 @@ +# copy the packaged docs to image root +# packaged documentation sources: +# 1) branding-*-indexhtml +# 2) docs-* (should be installed elsewhere) + ++docs: use/docs; @: + +use/docs: + @$(call add_feature) + +use/docs/indexhtml: use/docs use/branding + @$(call add,THE_BRANDING,indexhtml) + +use/docs/manual: use/docs + @$(call xport,DOCS) + @$(call add,THE_PACKAGES,docs-$$(DOCS)) + +ifneq (,$(filter-out e2k%,$(ARCH))) +use/docs/license: use/docs use/branding/notes + @$(call set,META_LICENSE_FILE,license.all.html) +else +use/docs/license:; @: +endif + +use/docs/full: use/docs/indexhtml use/docs/manual use/docs/license; @: diff --git a/features.in/docs/lib/30-docs.mk b/features.in/docs/lib/30-docs.mk new file mode 100644 index 0000000..d056721 --- /dev/null +++ b/features.in/docs/lib/30-docs.mk @@ -0,0 +1,14 @@ +# step 4: build the distribution image + +ifneq (,$(DOCS)) +DOT_BASE += docs-$(DOCS) +CHROOT_PACKAGES += docs-$(DOCS) +endif + +ifneq (,$(findstring notes,$(THE_BRANDING) $(INSTALL2_BRANDING))) +CHROOT_PACKAGES_REGEXP += $(call branding,notes) +endif + +ifneq (,$(findstring indexhtml,$(THE_BRANDING))) +CHROOT_PACKAGES_REGEXP += $(call branding,indexhtml) +endif diff --git a/features.in/docs/scripts.d/50-docs-indexhtml b/features.in/docs/scripts.d/50-docs-indexhtml new file mode 100755 index 0000000..4fec7a4 --- /dev/null +++ b/features.in/docs/scripts.d/50-docs-indexhtml @@ -0,0 +1,46 @@ +#!/bin/sh -e + +# trailing slash is important here +dest="docs/" + +mkdir -p "$WORKDIR/$dest" +cd $WORKDIR + +nonfatal() { echo "** $*" >&2; exit 0; } + +indexdir="/usr/share/doc/indexhtml" +indexfile="$indexdir/index.html" + +[ -s "$indexfile" ] || nonfatal "$indexfile not found" + +[ -n "$GLOBAL_LOCALE" ] || + echo "** warning: GLOBAL_LOCALE empty, fallback to en_US (use/l10n?)">&2 + +LANG="${GLOBAL_LOCALE:-en_US}" indexhtml-update + +# http://unix.stackexchange.com/questions/94185/convert-soft-to-hardlinks +cp -aH "$indexdir" "$dest" + +mkredir() { + cat >"${1}index.html" <<-EOF + + + + Redirecting... + + +

Redirecting...

+ + + EOF +} + +mkredir "" "$dest" # /index.html -> docs/indexhtml/index.html +mkredir "$dest" "" # docs//index.html -> indexhtml/index.html + +docdir="/usr/share/doc/documentation" +[ -d "$docdir" ] || nonfatal "$docdir not found" + +cp -aH "$docdir" "$dest" + +### no need to replace symlinks with hardlinks by now? (-aH) diff --git a/features.in/docs/scripts.d/50-docs-license b/features.in/docs/scripts.d/50-docs-license new file mode 100755 index 0000000..c22fd78 --- /dev/null +++ b/features.in/docs/scripts.d/50-docs-license @@ -0,0 +1,9 @@ +#!/bin/sh +# copy distro's licenses into image's rootdir + +cd /usr/share/alt-notes || exit 0 + +find -maxdepth 1 -type f -name "license*.html" -print | +while read FILE; do + cp -av "$FILE" $WORKDIR/ +done diff --git a/features.in/domain-client/README b/features.in/domain-client/README new file mode 100644 index 0000000..c42edbc --- /dev/null +++ b/features.in/domain-client/README @@ -0,0 +1,7 @@ +Эта фича конфигурирует поддержку клиента домена ALT Linux. + +krb5-ticket-watcher применяется для отладки либо обновления +билетов при нехватке сконфигурированного по умолчанию (сутки) +либо указанного администратором времени жизни таковых. + +NB: не проверено на инсталяторах! diff --git a/features.in/domain-client/config.mk b/features.in/domain-client/config.mk new file mode 100644 index 0000000..af29b51 --- /dev/null +++ b/features.in/domain-client/config.mk @@ -0,0 +1,7 @@ +use/domain-client: use/net/dhcp + @$(call add_feature) + @$(call add,THE_LISTS,domain-client) + +use/domain-client/full: use/domain-client + @$(call add,DEFAULT_SERVICES_ENABLE,avahi-daemon) + @$(call add,BASE_LISTS,domain-client-i) # i-f-* shouldn't hit live diff --git a/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh b/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh new file mode 100755 index 0000000..c7341fa --- /dev/null +++ b/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-dhcpcd.sh @@ -0,0 +1,10 @@ +#!/bin/sh -efu + +dhcpcd_conf="/etc/dhcpcd.conf" + +[ -f "$dhcpcd_conf" ] || exit 0 + +grep -q '^option[[:blank:]]\+vendor_encapsulated_options' "$dhcpcd_conf" || { + echo "# added by 70-network-shares-dhcpcd.sh" + echo "option vendor_encapsulated_options" +} >> "$dhcpcd_conf" diff --git a/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-nscd.sh b/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-nscd.sh new file mode 100755 index 0000000..1f5a8c7 --- /dev/null +++ b/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-nscd.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# bump name services caching time up + +[ -s /etc/nscd.conf ] || exit 0 + +sed -i 's/\(positive-time-to-live[^0-9]*\)[0-9]*$/\1 31536000/g' /etc/nscd.conf diff --git a/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-samba.sh b/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-samba.sh new file mode 100755 index 0000000..4fc7619 --- /dev/null +++ b/features.in/domain-client/rootfs/image-scripts.d/70-network-shares-samba.sh @@ -0,0 +1,117 @@ +#!/bin/sh -efu + +## +# This script: +# 1) updates pam_mount configuration +# 2) updates pam configuration +# +# NB: network shares automounted only for a particular uid range + +. shell-error + +msg() { + printf "$* \n" +} + +pmconf="/etc/security/pam_mount.conf.xml" +pamconf="/etc/pam.d/system-auth-krb5" + +## +# Update pam_mount configuration file +# +update_pmconf() { + + local insert_at tmp_conf + + tmp_conf="${pmconf}.new" + + # no pam_mount: impossible(tm) + [ -w "$pmconf" ] || return 1 + + # already configured + grep -qs dnssd_lookup "$pmconf" 2>/dev/null && return 0 + + # configure pam_mount to use avahi + insert_at="$(sed -n '//=' "$pmconf" \ + | head -n 1)" + + if [ -z "$insert_at" ]; then + msg "Can't find position for injection in $pmconf" + return 1 + fi + + # part 1 (head) + head -n $((insert_at-1)) "$pmconf" > "$tmp_conf" + + # part 2 (inserted text) + cat >> "$tmp_conf" <<'__EOF__' + + + + +/sbin/mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS) +/sbin/umount.cifs %(MNTPT) + + + +__EOF__ + + # part 3 (tail) + sed -n "$insert_at,\$p" "$pmconf" >> "$tmp_conf" + + # update config + chown root:root "$tmp_conf" + chmod 644 "$tmp_conf" + mv -f "$tmp_conf" "$pmconf" + + # XXX: REMOVE FOR RELEASE + # sed -i -e '/debug enable/ s/0/1/' "$pmconf" +} + +## +# Update pam configuration +# +update_pam() { + local append_after + + # no pam-config: impossible(tm) + [ -w "$pamconf" ] || return 1 + + if [ -L "$pamconf" ]; then + pamconf="$(realpath "$pamconf")" + fi + + # already configured + grep -qs pam_mount "$pamconf" && return 0 + + append_after="$(sed -n '/^auth[[:space:]]\+required/=' "$pamconf" \ + | tail -n 1)" + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a auth optional pam_mount.so" \ + "$pamconf" + + append_after="$(sed -n '/^session[[:space:]]\+required/=' "$pamconf" \ + | tail -n 1)" + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a session optional pam_mount.so" \ + "$pamconf" + append_after="$(sed -n '/^auth[[:space:]]\+required/=' \ + "$pamconf"_ccreds | tail -n 1)" + + [ -n "$append_after" ] && + sed -i \ + -e "$append_after a auth optional pam_mount.so" \ + "$pamconf"_ccreds + + ### set ccache to predicadable value (ouch!) + sed -i 's|pam_krb5.so use_first_pass$|pam_krb5.so use_first_pass ccache=/tmp/krb5cc_%u|' "$pamconf" +} + +## +# Start +# +update_pmconf && +update_pam + diff --git a/features.in/dos/README b/features.in/dos/README new file mode 100644 index 0000000..160113d --- /dev/null +++ b/features.in/dos/README @@ -0,0 +1,9 @@ +Фича добавляет создание FreeDOS "live floppy" в stage1. + +Текущее состояние -- загружается минимальная система. +Для практического применения (в первую очередь это +перешивка firmware) требуется сделать подключение +CD и/или USB Flash с тем, чтобы класть туда прошивки. + +Спасибо за идею и местами реализацию: Александру Бандуре, +Сергею Горенко, Николаю Гречуху и Алексею Фролову. diff --git a/features.in/dos/config.mk b/features.in/dos/config.mk new file mode 100644 index 0000000..cc6b43f --- /dev/null +++ b/features.in/dos/config.mk @@ -0,0 +1,9 @@ +# tries to fill in ISO metadata in case it's the only inhabitant +use/dos: use/syslinux + @$(call add_feature) + @$(call add,SYSLINUX_CFG,dos) + @$(call add,SYSLINUX_FILES,/usr/lib/syslinux/memdisk) + @$(call add,STAGE1_PACKAGES,make-freedos-floppy glibc-gconv-modules) + @$(call try,META_SYSTEM_ID,DOS) + @$(call try,META_VOL_ID,FreeDOS 2.88M) + @$(call try,META_VOL_SET,FreeDOS) diff --git a/features.in/dos/stage1/scripts.d/50-make-dos-floppy b/features.in/dos/stage1/scripts.d/50-make-dos-floppy new file mode 100755 index 0000000..055dca9 --- /dev/null +++ b/features.in/dos/stage1/scripts.d/50-make-dos-floppy @@ -0,0 +1,6 @@ +#!/bin/sh +# create a barebone bootable freedos floppy +# TODO: some sub-framework to populate it as well + +mkdir -p "$WORKDIR/syslinux" +make-freedos-floppy "$WORKDIR/syslinux/freedos.img" diff --git a/features.in/drm/README b/features.in/drm/README new file mode 100644 index 0000000..e365536 --- /dev/null +++ b/features.in/drm/README @@ -0,0 +1,7 @@ +Фича drm решает задачу создания общей точки входа для +добавления drm-модулей ядра для разных списков пакетов. +Потребность выделения в отдельную фичу возникла с одной +стороны в связи с необходимостью сделать переключатель +между свободным и проприетарным драйвером NVIDIA, +с другой из-за необходимости добавлять только drm-модули +ядра в таких целях, как use/stage2/kms и use/plymouth. diff --git a/features.in/drm/config.mk b/features.in/drm/config.mk new file mode 100644 index 0000000..bb1f698 --- /dev/null +++ b/features.in/drm/config.mk @@ -0,0 +1,44 @@ +use/drm: + @$(call add_feature) + @$(call add,DRM_KMODULES,drm) + @$(call add,THE_KMODULES,$$(DRM_KMODULES)) + +use/drm/ancient: use/drm + @$(call add,DRM_KMODULES,drm-ancient) + +use/drm/radeon: use/drm + @$(call add,DRM_KMODULES,drm-radeon) + +use/drm/nouveau: use/drm + @$(call try,NVIDIA_KMODULES,drm-nouveau) + @$(call add,DRM_KMODULES,$$(NVIDIA_KMODULES)) + +use/drm/nvidia:: use/drm/nouveau; @: +use/drm/nvidia/optimus:: use/drm/nvidia; @: + +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) +use/drm/nvidia:: + @$(call set,NVIDIA_KMODULES,nvidia) + +use/drm/nvidia/optimus:: + @$(call add,NVIDIA_KMODULES,bbswitch) +endif + +use/drm/full: use/drm/ancient use/drm/radeon \ + use/drm/nouveau; @: + +use/drm/stage2: + @$(call add,STAGE1_DRM_KMODULES,drm) + @$(call add,STAGE1_KMODULES,$$(STAGE1_DRM_KMODULES)) + +use/drm/stage2/ancient: use/drm/stage2 + @$(call add,STAGE1_DRM_KMODULES,drm-ancient) + +use/drm/stage2/radeon: use/drm/stage2 + @$(call add,STAGE1_DRM_KMODULES,drm-radeon) + +use/drm/stage2/nouveau: use/drm/stage2 + @$(call add,STAGE1_DRM_KMODULES,drm-nouveau) + +use/drm/stage2/full: use/drm/stage2/ancient use/drm/stage2/radeon \ + use/drm/stage2/nouveau; @: diff --git a/features.in/e2k/README b/features.in/e2k/README new file mode 100644 index 0000000..9275877 --- /dev/null +++ b/features.in/e2k/README @@ -0,0 +1 @@ +Эта фича содержит необходимое для поддержки систем архитектуры "Эльбрус". diff --git a/features.in/e2k/config.mk b/features.in/e2k/config.mk new file mode 100644 index 0000000..61aa066 --- /dev/null +++ b/features.in/e2k/config.mk @@ -0,0 +1,80 @@ +ifeq (,$(filter-out e2k%,$(ARCH))) +use/e2k: use/tty/S0 use/l10n/default/ru_RU + @$(call add_feature) + @$(call add,BASE_PACKAGES,installer-feature-e2k-fix-clock-stage3) + @$(call add,LIVE_PACKAGES,installer-feature-e2k-fix-boot-stage2) + @$(call add,LIVE_PACKAGES,installer-feature-e2k-ignore-cf-stage2) + @$(call add,LIVE_PACKAGES,livecd-installer-features) + @$(call add,LIVE_PACKAGES,blacklist-ide) # avoid overwriting hda + @$(call add,STAGE2_PACKAGES,agetty) + @$(call add,INSTALL2_PACKAGES,installer-feature-e2k-xorg-conf-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-e2k-fix-boot-stage2) + @$(call add,INSTALL2_PACKAGES,installer-feature-fstrim-stage2) + @$(call add,INSTALL2_PACKAGES,blacklist-ide) # avoid overwriting hda + @$(call add,INSTALL2_PACKAGES,ifplugd) # for net-eth link status + @$(call add,INSTALL2_CLEANUP_PACKAGES,llvm) +ifeq (,$(filter-out e2kv4 e2kv5,$(ARCH))) + @# 8C/8CB specific + @$(call add,INSTALL2_PACKAGES,installer-feature-e2k-sensors-stage2) +endif + @$(call add,BASE_PACKAGES,mirror-e2k-alt) + @$(call add,THE_PACKAGES,pwmd) + @$(call add,DEFAULT_SERVICES_DISABLE,pwmd) + @$(call set,KFLAVOURS,elbrus-def) # no other flavours for now + @$(call xport,STAGE2_BOOTARGS) + +use/e2k/x11: use/e2k use/x11 + @$(call add,THE_PACKAGES,xorg-server xinit) + @$(call add,INSTALL2_PACKAGES,xorg-drv-amdgpu lccrt-blobs) + +ifeq (,$(filter-out e2kv5,$(ARCH))) +use/e2k/multiseat/full: use/e2k/multiseat/901/full; @: + +# 6seat not tested so far but 1E8CB has three suitable PCIe slots +use/e2k/multiseat/901: + @$(call add,INSTALL2_PACKAGES,installer-feature-e2k-801-multiseat) #sic! + @$(call add,MAIN_GROUPS,x-e2k/90-e901) + @$(call add,MAIN_GROUPS,$(addprefix x-e2k/,e901-1seat e901-2seat)) + @$(call add,MAIN_GROUPS,$(addprefix x-e2k/,e901-3seat)) + +use/e2k/multiseat/901/full: use/e2k/multiseat/901 use/control + @$(call add,MAIN_GROUPS,x-e2k/x-autologin) + @$(call add,THE_PACKAGES,test-audio alterator-multiseat) +endif # e2kv5 + +ifeq (,$(filter-out e2kv4,$(ARCH))) +use/e2k/multiseat/full: use/e2k/multiseat/801/full; @: + +use/e2k/x11/101: use/e2k/x11 + @$(call add,MAIN_GROUPS,x-e2k/91-e101) + @$(call add,MAIN_GROUPS,$(addprefix x-e2k/,e101-modesetting)) + +use/e2k/multiseat/801/base: + @$(call add,INSTALL2_PACKAGES,installer-feature-e2k-801-multiseat) + @$(call add,MAIN_GROUPS,x-e2k/90-e801) + @$(call add,MAIN_GROUPS,$(addprefix x-e2k/,e801-1seat e801-2seat)) + +use/e2k/multiseat/801: use/e2k/multiseat/801/base + @$(call add,MAIN_GROUPS,$(addprefix x-e2k/,e801-3seat e801-6seat)) + +use/e2k/multiseat/801/full: use/e2k/multiseat/801 use/control + @$(call add,MAIN_GROUPS,x-e2k/x-autologin) + @$(call add,THE_PACKAGES,test-audio alterator-multiseat) +endif # e2kv4 + +ifeq (,$(filter-out e2k,$(ARCH))) +use/e2k/x11/101:; @: +use/e2k/multiseat/full:; @: +endif # e2k(v3) + +ifeq (,$(filter-out e2k,$(ARCH))) +use/e2k/sound/401: + @$(call add,THE_PACKAGES,setup-alsa-elbrus-401) + +else +use/e2k/sound/401:; @: +endif # e2k +else +use/e2k:; @: +use/e2k/%:; @: +endif # e2k% diff --git a/features.in/e2k/install2/image-scripts.d/01-e2k-acpid b/features.in/e2k/install2/image-scripts.d/01-e2k-acpid new file mode 100755 index 0000000..3fda28d --- /dev/null +++ b/features.in/e2k/install2/image-scripts.d/01-e2k-acpid @@ -0,0 +1,5 @@ +#!/bin/sh +# e2k power button handling relies on acpid-events-e2k and +# acpid itself; installer-distro-simply-linux breaks that + +sed -i '/acpid/d' /usr/share/install2/systemd-disabled ||: diff --git a/features.in/e2k/install2/image-scripts.d/01-e2k-apt b/features.in/e2k/install2/image-scripts.d/01-e2k-apt new file mode 100755 index 0000000..ebed6b2 --- /dev/null +++ b/features.in/e2k/install2/image-scripts.d/01-e2k-apt @@ -0,0 +1,4 @@ +#!/bin/sh +# do not toss online repos into installer + +rm -f -- /etc/apt/sources.list.d/*.list ||: diff --git a/features.in/e2k/lib/50-e2k-write.sh b/features.in/e2k/lib/50-e2k-write.sh new file mode 100755 index 0000000..a930c8a --- /dev/null +++ b/features.in/e2k/lib/50-e2k-write.sh @@ -0,0 +1,64 @@ +#!/bin/sh -efu +# ALT: write Elbrus boot media +# public domain 2020 Michael Shigorin +# http://altlinux.org/elbrus + +error() { echo "$@" >&2; exit 1; } +usage() { error "Usage: $0 [-f] /path/to/alt-e2k.iso /dev/sdX1_or_/dev/sr0"; } + +# "yes, this flash drive's filesystem can be overwritten" +force= +[ "$1" = "-f" ] && force=1 && shift + +[ $# = 2 ] || usage +[ -s "$1" ] || usage +[ -b "$2" ] || usage + +checkuid() { [ "$(id -u)" = 0 ] || error "$0: need to run as root"; } +format() { mkfs.ext2 -E packed_meta_blocks=1,num_backup_sb=1 -L altinst "$1"; } + +# use a partition block device, not the whole disk one +checkpart() { + dev="${1#/dev/}" + [ -n "$dev" ] || usage + [ -f "/sys/class/block/$dev/partition" ] || usage +} + +case "$2" in +/dev/sr[0-9]*|dvd*|cd*) + grep -qw "^$2" /proc/mounts && checkuid && umount -v "$2" + echo "Writing DVD image..." + growisofs -dvd-compat -Z "$2"="$1" + ;; +/dev/sd*) + grep -qw "^$2" /proc/mounts && [ -z "$force" ] && error "$2 mounted" + checkpart "$2" + checkuid + + [ "$(blkid -o value -s LABEL "$2")" = "altinst" ] || format "$2" + src="$(mktemp -d)" + dst="$(mktemp -d)" + echo -n "mounting image... " + mount -o loop,ro "$1" "$src"; echo "done" + echo -n "mounting drive... " + mount -o noatime "$2" "$dst"; echo "done" + echo "copying contents..." + rsync -Pavc --inplace --delete --numeric-ids "$src/" "$dst/" || + cp -avt "$dst" -- "$src"/{.disk,*} + grep -q "^default=.*_flash$" "$dst/boot.conf" || { + cur="$(sed -rn 's/^default=(.*)$/\1/p' "$dst/boot.conf")" + grep -q "^label=${cur}_flash$" "$dst/boot.conf" && { + echo -n "updating default boot target... " + sed -i 's,^default=.*$,&_flash,' "$dst/boot.conf" + echo "done" + } ||: + } + + echo -n "unmounting media... " + umount "$src" "$dst" && rmdir "$src" "$dst" + echo "done." + ;; +*) + usage + ;; +esac diff --git a/features.in/e2k/lib/50-e2k.mk b/features.in/e2k/lib/50-e2k.mk new file mode 100644 index 0000000..dd9847e --- /dev/null +++ b/features.in/e2k/lib/50-e2k.mk @@ -0,0 +1,4 @@ +WHATEVER += files/write.sh + +files/write.sh: + @install -pDm755 lib/50-e2k-write.sh files/write.sh diff --git a/features.in/e2k/rootfs/image-scripts.d/50-e2k-serial b/features.in/e2k/rootfs/image-scripts.d/50-e2k-serial new file mode 100755 index 0000000..b7a93f1 --- /dev/null +++ b/features.in/e2k/rootfs/image-scripts.d/50-e2k-serial @@ -0,0 +1,14 @@ +#!/bin/sh + +CFG="/boot/boot.conf" +[ -s "$CFG" ] || { + echo "50-e2k-serial: $CFG missing, exiting" >&2 + exit 0 +} + +[ -n "$GLOBAL_TTY_DEV" -a -n "$GLOBAL_TTY_RATE" ] || exit 0 + +# tty0 first +sed -i "s/console=tty0 /console=$GLOBAL_TTY_DEV,$GLOBAL_TTY_RATE &/" "$CFG" + +### NB: there's no boot.conf yet! could only be the sample one diff --git a/features.in/e2k/rootfs/image-scripts.d/50-e2k-utc b/features.in/e2k/rootfs/image-scripts.d/50-e2k-utc new file mode 100755 index 0000000..b4ec68e --- /dev/null +++ b/features.in/e2k/rootfs/image-scripts.d/50-e2k-utc @@ -0,0 +1,6 @@ +#!/bin/sh +# borrowed from installer-feature-local-clock + +. shell-config + +shell_config_set /etc/sysconfig/clock UTC true diff --git a/features.in/e2k/rootfs/image-scripts.d/51-e2k-koi8-r b/features.in/e2k/rootfs/image-scripts.d/51-e2k-koi8-r new file mode 100755 index 0000000..d31d373 --- /dev/null +++ b/features.in/e2k/rootfs/image-scripts.d/51-e2k-koi8-r @@ -0,0 +1,6 @@ +#!/bin/sh + +echo "#LANG=ru_RU.KOI8-R" >> /etc/sysconfig/i18n +echo "#SYSFONTACM=koi8-r" >> /etc/sysconfig/consolefont +echo "#KBCHARSET=koi8-r" >> /etc/sysconfig/keyboard +echo "#KEYTABLE=ru_cplk-KOI8-R" >> /etc/sysconfig/keyboard diff --git a/features.in/e2k/rootfs/image-scripts.d/51-e2k-utf-8 b/features.in/e2k/rootfs/image-scripts.d/51-e2k-utf-8 new file mode 100755 index 0000000..c8ecd6a --- /dev/null +++ b/features.in/e2k/rootfs/image-scripts.d/51-e2k-utf-8 @@ -0,0 +1,8 @@ +#!/bin/sh + +echo "LANG=ru_RU.UTF-8" >> /etc/sysconfig/i18n +echo "SYSFONT=UniCyr_8x16" >> /etc/sysconfig/consolefont +echo "KEYTABLE=ruwin_cplk-UTF-8" >> /etc/sysconfig/keyboard + +[ ! -f /etc/locale.conf ] || + echo "LANG=ru_RU.UTF-8" >> /etc/locale.conf diff --git a/features.in/e2k/scripts.d/20-e2k-boot b/features.in/e2k/scripts.d/20-e2k-boot new file mode 100755 index 0000000..90ba1d3 --- /dev/null +++ b/features.in/e2k/scripts.d/20-e2k-boot @@ -0,0 +1,50 @@ +#!/bin/sh + +echo "** 20-e2k-boot START" + +cd "$WORKDIR" + +# slightly different logic as there's no boot *menu*: +# ensure the user can install this if possible +[ -f live ] && default=live +[ -f rescue ] && default=rescue +[ -f altinst ] && default=install + +cat > boot.conf << EOF +# USB Flash note: write the contents including .disk/ onto +# an ext2 formatted drive with "altinst" filesystem label + +default=$default +timeout=3 +EOF + +for i in live altinst rescue; do + [ -f "$i" ] || continue + + if [ "$i" = "altinst" ]; then + label=install + stage2= + else + label="$i" + stage2="stagename=$i" + fi + + cat >> boot.conf << EOF + +label=$label + partition=0 + image=/boot/image + cmdline=console=ttyS0,115200 console=tty0 hardreset fastboot live automatic=method:cdrom ${stage2:+$stage2 }${GLOBAL_STAGE2_BOOTARGS:+$GLOBAL_STAGE2_BOOTARGS }${GLOBAL_BOOT_LANG:+lang=$GLOBAL_BOOT_LANG} + initrd=/boot/full.cz + +label=${label}_flash + partition=0 + image=/boot/image + cmdline=console=ttyS0,115200 console=tty0 hardreset fastboot live lowmem automatic=method:disk,label:altinst,directory:/ ${stage2:+$stage2 }${GLOBAL_STAGE2_BOOTARGS:+$GLOBAL_STAGE2_BOOTARGS }${GLOBAL_BOOT_LANG:+lang=$GLOBAL_BOOT_LANG} + initrd=/boot/full.cz +EOF +done + +ls -lh + +echo "** 20-e2k-boot END" diff --git a/features.in/e2k/stage1/scripts.d/20-initrd-e2k-kms b/features.in/e2k/stage1/scripts.d/20-initrd-e2k-kms new file mode 100755 index 0000000..f643ef1 --- /dev/null +++ b/features.in/e2k/stage1/scripts.d/20-initrd-e2k-kms @@ -0,0 +1,4 @@ +#!/bin/sh +# ensure early kms so stage1 issues can at least be displayed on tty0 + +echo 'MODULES_PRELOAD += radeon galcore vivante' >> /etc/initrd.mk diff --git a/features.in/e2k/stage2/image-scripts.d/50-e2k-no-notes b/features.in/e2k/stage2/image-scripts.d/50-e2k-no-notes new file mode 100755 index 0000000..551fa66 --- /dev/null +++ b/features.in/e2k/stage2/image-scripts.d/50-e2k-no-notes @@ -0,0 +1,6 @@ +#!/bin/sh +# e2k images are distributed through MCST now with a separate agreement + +sed -i '/license/d' \ + /usr/share/install2/installer-steps \ + /etc/livecd-install/steps ||: diff --git a/features.in/efi/README b/features.in/efi/README new file mode 100644 index 0000000..9d878b9 --- /dev/null +++ b/features.in/efi/README @@ -0,0 +1,10 @@ +Фича добавляет в образы необходимое для поддержки EFI/UEFI. + +Конфигурируется заданием загрузчика (EFI_BOOTLOADER) +и файла сертификата (EFI_CERT) при помощи целей; +пример использования доступен в conf.d/regular.mk + +См. тж.: +* http://www.altlinux.org/UEFI +* http://www.rodsbooks.com/efi-bootloaders/ +* https://bugzilla.altlinux.org/showdependencytree.cgi?id=27804 diff --git a/features.in/efi/config.mk b/features.in/efi/config.mk new file mode 100644 index 0000000..0cf1574 --- /dev/null +++ b/features.in/efi/config.mk @@ -0,0 +1,68 @@ +EFI_ARCHES := x86_64 aarch64 riscv64 + ++efi: use/efi/signed; @: + +ifeq (,$(filter-out $(EFI_ARCHES),$(ARCH))) + +EFI_LISTS := $(call tags,base efi) + +use/efi: + @$(call add_feature) + @$(call set,MKI_VER_MINIMAL,0.2.12) # it's official now + @$(call set,MKI_VER_OPTIMAL,0.2.17) # for EFI_BOOTARGS + @$(call try,EFI_BOOTLOADER,grub-efi) # default one + @$(call xport,EFI_BOOTLOADER) + @$(call add,COMMON_LISTS,$(EFI_LISTS)) +ifeq (distro,$(IMAGE_CLASS)) + @$(call add,INSTALL2_PACKAGES,dosfstools fatresize) + @$(call add,STAGE1_KCONFIG,EFI EFI_PARTITION FB_EFI EFIVAR_FS) + @$(call add,EFI_BOOTARGS,$$(STAGE2_BOOTARGS)) +ifeq (x86_64,$(ARCH)) + @$(call add,RESCUE_PACKAGES,refind $$(EFI_SHELL) $$(EFI_BOOTLOADER)) + @$(call add,THE_PACKAGES,$$(EFI_SHELL)) +endif +endif + +use/efi/grub: use/efi use/bootloader/grub + @$(call set,EFI_BOOTLOADER,grub-efi) + +ifeq (x86_64,$(ARCH)) +use/efi/shell: use/efi + @$(call try,EFI_SHELL,efi-shell) + +use/efi/signed: use/efi + @$(call set,EFI_CERT,altlinux) + @$(call add,COMMON_PACKAGES,shim-signed) + @$(call add,COMMON_PACKAGES,mokutil pesign) + @$(call add,RESCUE_PACKAGES,openssl) + +use/efi/lilo: use/efi use/bootloader/lilo + @$(call set,EFI_BOOTLOADER,elilo) + +use/efi/refind: use/efi + @$(call set,EFI_BOOTLOADER,refind) + +use/efi/memtest86: use/efi + @$(call set,EFI_MEMTEST86,efi-memtest86) + +else + +use/efi/signed use/efi/shell \ + use/efi/refind use/efi/memtest86 use/efi/lilo: use/efi; @: + +endif + +ifeq (distro,$(IMAGE_CLASS)) +use/efi/debug: use/efi + @$(call add,STAGE2_PACKAGES,efibootmgr gdisk) +else +use/efi/debug: use/efi; @: +endif + +else + +# ignore on an unsupported target arch but make it hybrid at least +use/efi use/efi/signed use/efi/debug use/efi/grub use/efi/lilo \ + use/efi/refind use/efi/shell use/efi/memtest86: use/isohybrid; @: + +endif diff --git a/features.in/firmware/README b/features.in/firmware/README new file mode 100644 index 0000000..8074f2b --- /dev/null +++ b/features.in/firmware/README @@ -0,0 +1,7 @@ +Эта фича добавляет комплекты различного firmware в инсталятор, +устанавливаемую систему и т.п. + +Следует учитывать, что объём добавленного может быть довольно +существенным -- в десктопе вряд ли нужен микрокод для FC HBA +или SCSI RAID, который может быть критичен для полезного +серверного или спасательного дистрибутива (см. #18047). diff --git a/features.in/firmware/config.mk b/features.in/firmware/config.mk new file mode 100644 index 0000000..ec7b485 --- /dev/null +++ b/features.in/firmware/config.mk @@ -0,0 +1,40 @@ +# NB: if the firmware is needed in installer, +# it should be installed to stage1's *instrumental* chroot +# for mkmodpack to use + +use/firmware: + @$(call add_feature) + @$(call add,SYSTEM_PACKAGES,firmware-linux) +ifeq (,$(filter-out aarch64 armh,$(ARCH))) + @$(call add,THE_PACKAGES,firmware-bcm4345) +endif + +use/firmware/full: use/firmware/server use/firmware/laptop; @: + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/firmware/cpu: use/firmware + @$(call add,THE_PACKAGES,firmware-intel-ucode iucode_tool) +else +use/firmware/cpu: use/firmware; @: +endif + +use/firmware/server: use/firmware + @$(call add,SYSTEM_PACKAGES,firmware-aic94xx-seq) + @$(call add,THE_PACKAGES_REGEXP,firmware-ql.*) + +use/firmware/qlogic: use/firmware + @$(call add,SYSTEM_PACKAGES,firmware-ql6312) + +# NB: individual firmwarez would sometimes conflict +# with ones newly merged into firmware-linux +use/firmware/wireless: use/firmware + @$(call add,THE_PACKAGES_REGEXP,firmware-prism.*) + @$(call add,THE_PACKAGES_REGEXP,firmware-ipw.*) + @$(call add,THE_PACKAGES_REGEXP,firmware-zd.*) + @$(call add,THE_PACKAGES_REGEXP,firmware-rt.*) + +use/firmware/laptop: use/firmware/cpu + @$(call add,THE_KMODULES,acpi_call) +ifeq (,$(filter-out x86_64,$(ARCH))) + @$(call add,THE_PACKAGES,firmware-alsa-sof) +endif diff --git a/features.in/fonts/README b/features.in/fonts/README new file mode 100644 index 0000000..36ee286 --- /dev/null +++ b/features.in/fonts/README @@ -0,0 +1,5 @@ +Эта фича позволяет системно конфигурировать файлы +конфигурации подсистемы конфигурирования шрифтов +fontconfig (sic!), заодно предоставляя прошедшие +обкатку в дистрибутивах варианты предварительно +заданной конфигурации для удобства. diff --git a/features.in/fonts/config.mk b/features.in/fonts/config.mk new file mode 100644 index 0000000..1b2a369 --- /dev/null +++ b/features.in/fonts/config.mk @@ -0,0 +1,62 @@ +# fontconfig setup +use/fonts: + @$(call add_feature) + @$(call try,FONTS,fonts-ttf-google-croscore-arimo) + @$(call add,THE_PACKAGES,$$(FONTS)) + @$(call xport,FONT_FEATURES_ENABLE) + @$(call xport,FONT_FEATURES_DISABLE) + +# standalone target to specify non-bitmap installer fonts +use/fonts/install2 use/fonts/system: + @$(call try,SYSTEM_FONTS,fonts-ttf-google-croscore-arimo) + @$(call add,SYSTEM_PACKAGES,$$(SYSTEM_FONTS)) + +# just stating that kernels and font habits are pretty individual +use/fonts/zerg: use/fonts + @$(call set,FONT_FEATURES_ENABLE,antialias lcdfilter-default \ + hinting style-full sub-pixel-rgb) + @$(call set,FONT_FEATURES_DISABLE,no-antialias lcdfilter-none \ + unhinted no-sub-pixel) + +# nothing configured to add_feature but let's not skip that for consistency +use/fonts/infinality: use/fonts + @$(call add,THE_PACKAGES,libfreetype-infinality fontconfig-infinality) + +# #34142 +use/fonts/chinese: use/fonts + @$(call add,FONTS,fonts-bitmap-wqy) + +# a few typical font collections +# NB: dejavu is ugly thus missing +# NB: not depending on use/fonts intentionally, +# the scripts are unneeded to add packages +use/fonts/otf/adobe: use/fonts + @$(call add,FONTS,fonts-otf-adobe-source-code-pro) + @$(call add,FONTS,fonts-otf-adobe-source-sans-pro) + +use/fonts/otf/mozilla: use/fonts + @$(call add,FONTS,fonts-otf-mozilla-fira) + +use/fonts/ttf/google: use/fonts + @$(call add,FONTS,fonts-ttf-google-droid-sans) + @$(call add,FONTS,fonts-ttf-google-droid-sans-mono) + @$(call add,FONTS,fonts-ttf-google-droid-serif) + @$(call add,FONTS,fonts-ttf-google-croscore-arimo) + @$(call add,FONTS,fonts-ttf-google-croscore-cousine) + @$(call add,FONTS,fonts-ttf-google-croscore-tinos) + +use/fonts/ttf/google/extra: use/fonts/ttf/google + @$(call add,FONTS,fonts-ttf-google-crosextra-caladea) + @$(call add,FONTS,fonts-ttf-google-crosextra-carlito) + +use/fonts/ttf/redhat: use/fonts + @$(call add,FONTS,fonts-ttf-liberation) + +use/fonts/ttf/ubuntu: use/fonts + @$(call add,FONTS,fonts-ttf-ubuntu-font-family) + +use/fonts/ttf/xo: use/fonts + @$(call add,FONTS,fonts-ttf-XO) + @$(call add,FONTS,fonts-ttf-PT) + @$(call add,FONTS,fonts-ttf-Cormorant) + @$(call add,FONTS,fonts-ttf-open-sans) diff --git a/features.in/fonts/rootfs/image-scripts.d/50-fontconfig b/features.in/fonts/rootfs/image-scripts.d/50-fontconfig new file mode 100755 index 0000000..856303a --- /dev/null +++ b/features.in/fonts/rootfs/image-scripts.d/50-fontconfig @@ -0,0 +1,33 @@ +#!/bin/sh +# fontconfig-config-config + +verbose="${GLOBAL_VERBOSE:+-v}" +verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "HOOK: 50-fontconfig: $@"; } +verbose "has started" + +CONF_DIR="/etc/fonts/conf.d" +AVAIL_DIR="/etc/fonts/conf.avail" + +list() { ls "$1"/??-"$2".conf 2>/dev/null; } + +enable() { + for i in "$@"; do + if ! list "$CONF_DIR" "$i"; then + AVAIL="$(list "$AVAIL_DIR" "$i" | head -1)" + if [ -n "$AVAIL" ]; then + ln -s $verbose "$AVAIL" "$CONF_DIR/$CONF_ADD" + fi + fi + done +} + +disable() { + for i in "$@"; do + $(list "$CONF_DIR" "$i") | xargs -r rm -f $verbose -- + done +} + +disable $GLOBAL_FONT_FEATURES_DISABLE +enable $GLOBAL_FONT_FEATURES_ENABLE + +: diff --git a/features.in/grub/README b/features.in/grub/README new file mode 100644 index 0000000..baddee4 --- /dev/null +++ b/features.in/grub/README @@ -0,0 +1,35 @@ +Добавление поддержки grub; требуется для инсталяторов, live/rescue; +реализуется в рамках stage1. + +Самостоятельное творческое использование на данный момент подразумевает +изучение кусочков конфигурации, которые уже существуют. + +Цели config.mk: +* use/grub/ui/% -- конфигурирование интерфейса (см. cfg.in/01gfxterm.cfg); + при использовании автоматически добавляют grub в FEATURES; +* use/grub/timeout/% -- задание таймаута автозагрузки (в секундах); +* use/grub/%.cfg -- подключение кусочков конфигурации. + +Переменные generate.mk: +* BOOTARGS -- дополнительные аргументы загрузчику; +* EFI_BOOTARGS -- дополнительные аргументы загрузчику; +* BOOTLOADER -- isolinux (реализовано с оглядкой на grub/grub4); +* BOOTVGA -- видеорежим, запрашиваемый у ядра (параметр vga=); +* GRUB_UI -- тип интерфейса (если указан gfxboot, то графический, + иначе текстовый); +* GRUB_CFG -- дополнительные кусочки конфигурации (например, live_rw). + +Здесь производится первичная обработка конфигурационных данных, +окончательно проверяемых и используемых уже в инструментальном чруте. + +Обратите внимание: фрагменты, соответствующие именам субпрофилей, +добавляются автоматически; это поведение при необходимости отключается +выставлением переменной grub_DIRECT и тогда вместо use/grub/*.cfg +следует применять прямое указание вида @$(call set,grub_CFG,...). + +Установить дефолтный пункт: +Для того, чтобы установить конкретный дефолтный пункт +(пример для LiveCD без поддержки сессии): +@$(call set,GRUB_DEFAULT,live) + +Именем дефолтного пункта является --id. diff --git a/features.in/grub/cfg.in/00defaults.cfg b/features.in/grub/cfg.in/00defaults.cfg new file mode 100644 index 0000000..b0e3940 --- /dev/null +++ b/features.in/grub/cfg.in/00defaults.cfg @@ -0,0 +1,24 @@ +insmod echo +insmod gzio +insmod minicmd +insmod normal +insmod test +set timeout=@timeout@ +if [ "$grub_platform" = "efi" ]; then set EFI_BOOTARGS='@efi_bootargs@'; fi +if [ "$grub_platform" = "efi" -a "$grub_cpu" = "x86_64" ]; then + set linux_suffix='efi' +fi +if [ "$grub_platform" = "pc" ]; then set linux_suffix='16'; fi +if [ ! "$lang" ]; then lang=@LOCALE@; fi +if [ -s $pfxfat/grubenv ]; then + load_env --file $pfxfat/grubenv + set default="${saved_entry}" +else + set default=@default_id@ +fi +function savedefault { + if [ -z "${boot_once}" -a -s $pfxfat/grubenv ]; then + saved_entry="${chosen}" + save_env --file $pfxfat/grubenv saved_entry + fi +} diff --git a/features.in/grub/cfg.in/01gfxterm.cfg b/features.in/grub/cfg.in/01gfxterm.cfg new file mode 100644 index 0000000..55e626e --- /dev/null +++ b/features.in/grub/cfg.in/01gfxterm.cfg @@ -0,0 +1,37 @@ +function load_video { + if [ x$feature_all_video_module = xy ]; then + insmod all_video + else + insmod efi_gop + insmod efi_uga + insmod ieee1275_fb + insmod vbe + insmod vga + insmod video_bochs + insmod video_cirrus + fi +} + +font=${prefix}/fonts/unicode.pf2 +if loadfont "$font" ; then + set gfxmode=auto + load_video + insmod gfxterm + terminal_output gfxterm + if [ -d ${prefix}/locale ]; then + set locale_dir=${prefix}/locale + insmod gettext + fi + insmod gfxmenu + insmod jpeg + insmod png + if [ -f ${prefix}/themes/@grubtheme@/theme.txt ]; then + set theme=${prefix}/themes/@grubtheme@/theme.txt; + export theme + fi + set timeout_style=menu + set menu_color_normal=white/black + set menu_color_highlight=black/white + set color_normal=white/black + set color_highlight=black/white +fi diff --git a/features.in/grub/cfg.in/10localboot_bios.cfg b/features.in/grub/cfg.in/10localboot_bios.cfg new file mode 100644 index 0000000..08c826b --- /dev/null +++ b/features.in/grub/cfg.in/10localboot_bios.cfg @@ -0,0 +1,13 @@ +if [ "$grub_platform" = "pc" ]; then + menuentry $"Boot from hard drive" --id 'harddisk' { + insmod part_msdos + insmod chain + set oldroot="$root" + if [ "$root" = hd0 ] + then set root=(hd1) + else set root=(hd0) + fi + chainloader +1 + set root="$oldroot" + } +fi diff --git a/features.in/grub/cfg.in/20install2.cfg b/features.in/grub/cfg.in/20install2.cfg new file mode 100644 index 0000000..62dc27a --- /dev/null +++ b/features.in/grub/cfg.in/20install2.cfg @@ -0,0 +1,7 @@ + +menuentry $"Install "'@distro@' --hotkey 'i' --id 'linux' { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ vga=@bootvga@ @bootargs@ $EFI_BOOTARGS lang=$lang lowmem + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/25install-vnc-connect.cfg b/features.in/grub/cfg.in/25install-vnc-connect.cfg new file mode 100644 index 0000000..74d0a10 --- /dev/null +++ b/features.in/grub/cfg.in/25install-vnc-connect.cfg @@ -0,0 +1,6 @@ + +menuentry $"VNC install "'@distro@'$" (edit to set server IP address)" --id 'vncconnect' { + savedefault + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ showopts @bootargs@ $EFI_BOOTARGS headless no_alt_virt_keyboard vncconnect=IP lang=$lang + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/25install-vnc-listen.cfg b/features.in/grub/cfg.in/25install-vnc-listen.cfg new file mode 100644 index 0000000..2301b7e --- /dev/null +++ b/features.in/grub/cfg.in/25install-vnc-listen.cfg @@ -0,0 +1,7 @@ + +menuentry $"VNC install "'@distro@'$" (edit to set password and connect here)" --id 'vncpasswd' { + savedefault + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ showopts @bootargs@ $EFI_BOOTARGS headless no_alt_virt_keyboard vncpassword=VNCPWD lang=$lang + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} + diff --git a/features.in/grub/cfg.in/30live.cfg b/features.in/grub/cfg.in/30live.cfg new file mode 100644 index 0000000..44c4524 --- /dev/null +++ b/features.in/grub/cfg.in/30live.cfg @@ -0,0 +1,9 @@ +menuentry $"LiveCD (no hard disk needed)" --id 'live' { + savedefault + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot live @initrd_bootargs@ @stagename@=live ramdisk_size=@live_size@ showopts lowmem vga=@bootvga@ @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} + + diff --git a/features.in/grub/cfg.in/32live_rw.cfg b/features.in/grub/cfg.in/32live_rw.cfg new file mode 100644 index 0000000..e8a1908 --- /dev/null +++ b/features.in/grub/cfg.in/32live_rw.cfg @@ -0,0 +1,7 @@ +menuentry $"LiveCD with sessions support" --id 'session' { + savedefault + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot live @initrd_bootargs@ @stagename@=live ramdisk_size=@live_size@ showopts live_rw vga=@bootvga@ @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/80rescue.cfg b/features.in/grub/cfg.in/80rescue.cfg new file mode 100644 index 0000000..8fd7205 --- /dev/null +++ b/features.in/grub/cfg.in/80rescue.cfg @@ -0,0 +1,7 @@ +menuentry $"Rescue LiveCD" --id 'rescue' { + savedefault + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR changedisk fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ $EFI_BOOTARGS lowmem + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/82rescue_rw.cfg b/features.in/grub/cfg.in/82rescue_rw.cfg new file mode 100644 index 0000000..0357424 --- /dev/null +++ b/features.in/grub/cfg.in/82rescue_rw.cfg @@ -0,0 +1,7 @@ +menuentry $"Rescue with sessions support" --id 'rescue_session' { + savedefault + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR changedisk fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ $EFI_BOOTARGS live_rw + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/83rescue_fm.cfg b/features.in/grub/cfg.in/83rescue_fm.cfg new file mode 100644 index 0000000..793faac --- /dev/null +++ b/features.in/grub/cfg.in/83rescue_fm.cfg @@ -0,0 +1,7 @@ +menuentry $"Forensic mode (leave disks alone)" --id 'rescue_forensic' { + savedefault + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ $EFI_BOOTARGS max_loop=16 forensic hash=@rescue_hash@ lowmem + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/84rescue_remote.cfg b/features.in/grub/cfg.in/84rescue_remote.cfg new file mode 100644 index 0000000..42a24c8 --- /dev/null +++ b/features.in/grub/cfg.in/84rescue_remote.cfg @@ -0,0 +1,6 @@ +menuentry $"Rescue with remote SSH access (DHCP)" --id 'rescue_remote' { + savedefault + linux$linux_suffix /boot/vmlinuz$KFLAVOUR fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ $EFI_BOOTARGS max_loop=16 ip=dhcp port=22 rootpw=AUTO hash=@rescue_hash@ lowmem + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/85mediacheck.cfg b/features.in/grub/cfg.in/85mediacheck.cfg new file mode 100644 index 0000000..8b97bb3 --- /dev/null +++ b/features.in/grub/cfg.in/85mediacheck.cfg @@ -0,0 +1,6 @@ +menuentry $"Check this media for defects" --id 'mediachk' { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR live @initrd_bootargs@ @stagename@=mediacheck lowmem mediacheck=1 nosplash showopts @bootargs@ $EFI_BOOTARGS + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ +} diff --git a/features.in/grub/cfg.in/86lang.cfg b/features.in/grub/cfg.in/86lang.cfg new file mode 100644 index 0000000..652d66a --- /dev/null +++ b/features.in/grub/cfg.in/86lang.cfg @@ -0,0 +1,14 @@ +submenu $"Change language (press F2)" --hotkey 'f2' --id 'lang' { + insmod regexp + for langstr in "ru_RU=Russian" "en_US=English" "pt_BR=Portuguese" "kk_KZ=Kazakh" "uk_UA=Ukrainian"; do + regexp -s 2:langname -s 1:langcode '(.*)=(.*)' "$langstr" + menuentry "${langname}" "$langcode" { + lang="$2" + export lang + configfile ${prefix}/grub.cfg + } + done + menuentry $"Return to the Main menu" { + configfile ${prefix}/grub.cfg + } +} diff --git a/features.in/grub/cfg.in/88netinstall.cfg b/features.in/grub/cfg.in/88netinstall.cfg new file mode 100644 index 0000000..c60bfe7 --- /dev/null +++ b/features.in/grub/cfg.in/88netinstall.cfg @@ -0,0 +1,80 @@ +submenu $"Bootloading over network (press F4)" --hotkey 'f4' --id 'lang' { + submenu $"Install over network" { + menuentry $"Server NFS" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:nfs stagename=altinst @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server FTP" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:ftp stagename=altinst @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server HTTP" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:http stagename=altinst @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server SAMBA" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:cifs stagename=altinst @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + } + submenu $"Live over network" { + menuentry $"Server NFS" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:nfs stagename=live @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server FTP" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:ftp stagename=live @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server HTTP" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:http stagename=live @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server SAMBA" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:cifs stagename=live @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + } + submenu $"Rescue over network" { + menuentry $"Server NFS" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:nfs stagename=rescue @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server FTP" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:ftp stagename=rescue @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server HTTP" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:http stagename=rescue @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + menuentry $"Server SAMBA" { + echo $"Loading Linux vmlinuz$KFLAVOUR ..." + linux$linux_suffix /boot/vmlinuz$KFLAVOUR @initrd_typeargs@=method:cifs stagename=rescue @bootargs@ $EFI_BOOTARGS lang=$lang + echo $"Loading initial ramdisk ..." + initrd$linux_suffix /boot/@initrd@$KFLAVOUR.@initrd_ext@ + } + } +} diff --git a/features.in/grub/cfg.in/89kernel.cfg b/features.in/grub/cfg.in/89kernel.cfg new file mode 100644 index 0000000..709ad1d --- /dev/null +++ b/features.in/grub/cfg.in/89kernel.cfg @@ -0,0 +1,19 @@ +submenu $"Change Kernel Flavour (press F5)" --hotkey 'f5' --id 'kflavour' { + insmod regexp + regexp -s 1:kflavours -s 2:kflavourstr '(.*) (.*)' "@KFLAVOUR@" + menuentry "${kflavourstr}" { + KFLAVOUR= + export KFLAVOUR + configfile ${prefix}/grub.cfg + } + for kflavourstr in ${kflavours}; do + menuentry "${kflavourstr}" { + KFLAVOUR="-$1" + export KFLAVOUR + configfile ${prefix}/grub.cfg + } + done + menuentry $"Return to the Main menu" { + configfile ${prefix}/grub.cfg + } +} diff --git a/features.in/grub/cfg.in/90hdt_bios.cfg b/features.in/grub/cfg.in/90hdt_bios.cfg new file mode 100644 index 0000000..50c61e4 --- /dev/null +++ b/features.in/grub/cfg.in/90hdt_bios.cfg @@ -0,0 +1,6 @@ +if [ "$grub_platform" = "pc" ]; then + menuentry $"Hardware Info" --id 'hdt' { + linux16 /boot/memdisk + initrd16 /boot/hdt.img + } +fi diff --git a/features.in/grub/cfg.in/90memtest_bios.cfg b/features.in/grub/cfg.in/90memtest_bios.cfg new file mode 100644 index 0000000..02e24e4 --- /dev/null +++ b/features.in/grub/cfg.in/90memtest_bios.cfg @@ -0,0 +1,5 @@ +if [ "$grub_platform" = "pc" ]; then + menuentry $"Memory Test" --id 'memtest' { + linux16 /boot/memtest.bin + } +fi diff --git a/features.in/grub/cfg.in/90memtest_efi.cfg b/features.in/grub/cfg.in/90memtest_efi.cfg new file mode 100644 index 0000000..74e5d74 --- /dev/null +++ b/features.in/grub/cfg.in/90memtest_efi.cfg @@ -0,0 +1,6 @@ +if [ "$grub_platform" = "efi" ]; then + menuentry $"Memory Test" --id 'memtest' { + chainloader /EFI/tools/memtest86.efi + boot + } +fi diff --git a/features.in/grub/cfg.in/91shell_efi.cfg b/features.in/grub/cfg.in/91shell_efi.cfg new file mode 100644 index 0000000..45cb01e --- /dev/null +++ b/features.in/grub/cfg.in/91shell_efi.cfg @@ -0,0 +1,6 @@ +if [ "$grub_platform" = "efi" ]; then + menuentry $"EFI shell" --id 'efishell' { + chainloader /EFI/shellx64.efi + boot + } +fi diff --git a/features.in/grub/cfg.in/95fwsetup_efi.cfg b/features.in/grub/cfg.in/95fwsetup_efi.cfg new file mode 100644 index 0000000..e0bb16f --- /dev/null +++ b/features.in/grub/cfg.in/95fwsetup_efi.cfg @@ -0,0 +1,5 @@ +if [ "$grub_platform" = "efi" ]; then + menuentry $"UEFI Firmware Settings" --id 'uefi-firmware' { + fwsetup + } +fi diff --git a/features.in/grub/cfg.in/95sdab_bios.cfg b/features.in/grub/cfg.in/95sdab_bios.cfg new file mode 100644 index 0000000..de4ac53 --- /dev/null +++ b/features.in/grub/cfg.in/95sdab_bios.cfg @@ -0,0 +1,19 @@ +if [ "$grub_platform" = "pc" ]; then + menuentry $"Boot from 1st hard/flash drive" --id 'sda' { + insmod part_msdos + insmod chain + set oldroot="$root" + set root=(hd0) + chainloader +1 + set root="$oldroot" + } + + menuentry $"Boot from 2nd hard/flash drive" --id 'sdb' { + insmod part_msdos + insmod chain + set oldroot="$root" + set root=(hd1) + chainloader +1 + set root="$oldroot" + } +fi diff --git a/features.in/grub/config.mk b/features.in/grub/config.mk new file mode 100644 index 0000000..10791cd --- /dev/null +++ b/features.in/grub/config.mk @@ -0,0 +1,36 @@ +# default is plain text prompt +# NB: might be usbflash-ready hybrid iso + +ifeq (,$(filter-out i586 x86_64 ppc64le aarch64 riscv64,$(ARCH))) + +use/grub: sub/stage1 $(ISOHYBRID:%=use/isohybrid) + @$(call add_feature) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call try,BOOTVGA,normal) +endif + @$(call set,RELNAME,ALT ($(IMAGE_NAME))) + @$(call xport,GRUB_DEFAULT) + +# UI is overwritten +use/grub/ui/%: use/grub +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) + @$(call set,GRUB_UI,$*) + @if [ "$*" == gfxboot ]; then \ + $(call add,STAGE1_BRANDING,bootloader); \ + $(call add,STAGE1_PACKAGES,grub-common); \ + fi +else + @: +endif + +use/grub/%.cfg: use/grub + @$(call add,GRUB_CFG,$*) + +use/grub/timeout/%: use/grub + @$(call set,GRUB_TIMEOUT,$*) +else + +use/grub: ; @: +use/grub/ui/% use/grub/%.cfg use/grub/timeout/%: ; @: + +endif diff --git a/features.in/grub/generate.mk b/features.in/grub/generate.mk new file mode 100644 index 0000000..f4fbd29 --- /dev/null +++ b/features.in/grub/generate.mk @@ -0,0 +1,140 @@ +ifdef BUILDDIR + +# in seconds +DEFAULT_TIMEOUT = 60 + +# prepare data for grub installation; +# see also stage1/scripts.d/01-grub + +include $(BUILDDIR)/distcfg.mk + +ifndef BOOTLOADER +$(error grub feature enabled but BOOTLOADER undefined) +endif + +STAGE1_INITRD_BOOTARGS := $(STAGE1_INITRD_TYPEARGS)=$(STAGE1_INITRD_BOOTMETHOD) + +ifndef GRUB_DIRECT +# SUBPROFILES are considered GRUB_CFG too +# (note these can appear like stage2@live); +# 01defaults.cfg is included indefinitely +GRUB_CFG := $(GRUB_CFG) $(SUBPROFILE_DIRS) defaults fwsetup_efi +endif + +ifdef GRUB_UI +GRUB_CFG := $(GRUB_CFG) gfxterm +endif + +ifdef LOCALE +GRUB_CFG := $(GRUB_CFG) lang +endif + +ifdef KFLAVOURS +ifneq ($(words $(KFLAVOURS)),1) +GRUB_CFG := $(GRUB_CFG) kernel +endif +endif + +DSTDIR := $(BUILDDIR)/stage1/files/boot/grub/.in +DSTCFGS := $(DSTDIR)/*.cfg + +# we can do GRUB_{CFG,MODULES,FILES} +# CFG have only cfg snippet +cfg = $(wildcard cfg.in/??$(1).cfg) + +# NB: list position determined by file numbering (*.cfg sorting) +# +# config snippets are copied into generated profile where they can +# be also tested against grub modules (some can be unavailable); +# we can't do tests right now since that implies host grub being +# identical to build system one which might be not the case... +# +# have to piggyback parameters as we're running in host system yet, +# and files involved will appear inside instrumental chroot +# +# arguments get evaluated before recipe body execution thus prep + +all: debug timeout + @### proper text branding should be implemented + @echo $(GRUB_FILES) > $(DSTDIR)/grub.list + @sed -i \ + -e 's,@mkimage-profiles@,$(IMAGE_NAME),' \ + $(DSTCFGS) + +# integerity check +timeout: distro + @if [ "$(GRUB_TIMEOUT)" -ge 0 ] 2>/dev/null; then \ + TIMEOUT="$(GRUB_TIMEOUT)"; \ + else \ + TIMEOUT="$(DEFAULT_TIMEOUT)"; \ + fi; \ + sed -i "s,@timeout@,$$TIMEOUT," $(DSTCFGS) + +distro: bootargs + @if [ -n "$(META_VOL_ID)" ]; then \ + DISTRO="$(META_VOL_ID)"; \ + else \ + DISTRO="$(RELNAME)"; \ + fi; \ + sed -i "s,@distro@,$$DISTRO," $(DSTCFGS) + +# pass over additional parameters, if any +bootargs: clean + @if [ -n "$(EFI_BOOTARGS)" ]; then \ + sed -i "s,@efi_bootargs@,$(EFI_BOOTARGS)," $(DSTCFGS); \ + fi; \ + sed -i "s,@efi_bootargs@,," $(DSTCFGS) + @if [ -n "$(STAGE2_BOOTARGS)" ]; then \ + sed -i "s,$(STAGE2_BOOTARGS),," $(DSTCFGS); \ + sed -i "s,@bootargs@,$(STAGE2_BOOTARGS)," $(DSTCFGS); \ + fi; \ + sed -i "s,@bootargs@,," $(DSTCFGS) + @if [ -n "$(RESCUE_BOOTARGS)" ]; then \ + sed -i "s,@rescue_bootargs@,$(RESCUE_BOOTARGS)," $(DSTCFGS); \ + fi; \ + sed -i "s,@rescue_bootargs@,," $(DSTCFGS) + @if [ -n "$(BOOTVGA)" ]; then \ + sed -i "s,@bootvga@,$(BOOTVGA)," $(DSTCFGS); \ + fi; \ + sed -i "s,@bootvga@,,;s,vga= ,," $(DSTCFGS) + @if [ -n "$(LOCALE)" ]; then \ + sed -i "s,@LOCALE@,$(LOCALE),g" $(DSTCFGS); \ + else \ + sed -i "s, lang=.lang,,g" $(DSTCFGS); \ + fi; \ + sed -i "/lang=@LOCALE@/d" $(DSTCFGS) + GRUBTHEME=$(GRUBTHEME); \ + [ -n "$$GRUBTHEME" ] || GRUBTHEME=$$(cut -d "-" -f2 <<< $(BRANDING)); \ + sed -i "s,@grubtheme@,$$GRUBTHEME,g" $(DSTCFGS) + @if [ "$(STAGE1_INITRD)" = initrd-propagator ]; then \ + sed -i "s,@initrd@,full," $(DSTCFGS); \ + sed -i "s,@initrd_ext@,cz," $(DSTCFGS); \ + else \ + sed -i "s,@initrd@,initrd," $(DSTCFGS); \ + sed -i "s,@initrd_ext@,img," $(DSTCFGS); \ + fi + @sed -i "s|@initrd_bootargs@|$(STAGE1_INITRD_BOOTARGS)|g" $(DSTCFGS) + @sed -i "s|@initrd_bootmethod@|$(STAGE1_INITRD_BOOTMETHOD)|g" $(DSTCFGS) + @sed -i "s|@initrd_typeargs@|$(STAGE1_INITRD_TYPEARGS)|g" $(DSTCFGS) + @sed -i "s,@stagename@,$(STAGE1_INITRD_STAGE2_OPTION),g" $(DSTCFGS) + +clean: copy + @if [ "$(GRUB_UI)" = gfxboot ]; then \ + sed -i "s/\^//;/menu label /d" $(DSTCFGS); \ + fi + +copy: prep + @cp -pLt $(DSTDIR) -- $(sort \ + $(foreach C,$(GRUB_CFG),$(call cfg,$(C)))) + +prep: + @mkdir -p $(DSTDIR) + +debug: + @if [ -n "$(DEBUG)" ]; then \ + echo "** BOOTLOADER: $(BOOTLOADER)"; \ + echo "** GRUB_CFG: $(GRUB_CFG)"; \ + echo "** GRUB_FILES: $(GRUB_FILES)"; \ + fi + +endif diff --git a/features.in/grub/scripts.d/20-propagator-ramdisk-grub b/features.in/grub/scripts.d/20-propagator-ramdisk-grub new file mode 100755 index 0000000..569c504 --- /dev/null +++ b/features.in/grub/scripts.d/20-propagator-ramdisk-grub @@ -0,0 +1,17 @@ +#!/bin/sh +# postprocess grub configuration +# when the image sizes are finally known +# NB: install2_size, live_size, rescue_size get defined here + +cd "$WORKDIR" +cfg='boot/grub/grub.cfg' + +[ -f "$cfg" ] || exit 0 + +# apply size census while looking for potential squashfs images +find -maxdepth 1 -type f -size +1M \ +| sed 's,^\./,,' \ +| while read image; do + size="$[ $(stat -c%s "$image") / 1024 + 1 ]" + sed -i "s,@${image}_size@,$size," $cfg +done diff --git a/features.in/grub/scripts.d/20-propagator-rescue-hash-grub b/features.in/grub/scripts.d/20-propagator-rescue-hash-grub new file mode 100755 index 0000000..7cb034c --- /dev/null +++ b/features.in/grub/scripts.d/20-propagator-rescue-hash-grub @@ -0,0 +1,15 @@ +#!/bin/sh +# postprocess grub configuration +# to add rescue image hash, if any +# (for propagator in forensic mode) + +cd "$WORKDIR" +cfg='boot/grub/grub.cfg' + +[ -f "$cfg" ] || exit 0 + +find -maxdepth 1 -type f -name rescue \ +| while read image; do + rescue_hash="$(sha256sum -b "$image" | cut -f1 -d' ')" + sed -i "s,@rescue_hash@,$rescue_hash," $cfg +done diff --git a/features.in/grub/stage1/scripts.d/01-grub b/features.in/grub/stage1/scripts.d/01-grub new file mode 100755 index 0000000..555ff6f --- /dev/null +++ b/features.in/grub/stage1/scripts.d/01-grub @@ -0,0 +1,88 @@ +#!/bin/sh +# gather grub configuration from snippets; +# copy modules; see also this feature's generate.mk + +CFG="$WORKDIR/boot/grub/grub.cfg" + +if [ "$GLOBAL_EFI_BOOTLOADER" != 'grub-efi' ]; then + case "$GLOBAL_BOOTLOADER" in + ieee1275boot|grubpcboot) ;; + *) rm -fr "$WORKDIR/boot" + exit 0;; + esac +fi + +cd "$WORKDIR/boot/grub" + +# copy extra files, if any +GRUB_FILES="$(cat .in/grub.list)" +if [ -n "${GRUB_FILES% }" ]; then + cp -a $GRUB_FILES . +fi + +# number ordering sponsored by shell's pathname expansion +grep -hv '^#' $(find .in/*.cfg) > "$CFG" + +# there should be DEFAULT directive there (at least for alterator-netinst) +default_change() { +local CFG=$1 +if [ -n "$GLOBAL_GRUB_DEFAULT" ]; then + if [ -n "$(grep -i "$GLOBAL_GRUB_DEFAULT" "$CFG")" ]; then + DEFAULT="$GLOBAL_GRUB_DEFAULT" + else + echo "error: $GLOBAL_GRUB_DEFAULT missing in $CFG" >&2 + exit 1 + fi +else + grep -i '\-\-id ' "$CFG" | grep 'linux' && DEFAULT=linux +fi +sed -i "s/@default_id@/$DEFAULT/" "$CFG" +} + +default_change "$CFG" + +# snippets are not going into the actual image +if [ "$DEBUG" != 2 ]; then + rm -r .in/ +fi + +# change kernels version for multiple kernels only +if [ $(echo "$GLOBAL_KFLAVOURS" | wc -w) -gt 1 ]; then + kver= + echo $GLOBAL_KFLAVOURS + for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" + done + + sed -i "s,@KFLAVOUR@,$kver,g" $CFG +fi + +# copy grub theme +mkdir -p themes +GRUBTHEME="$(grep -m1 '/theme.txt;' "$CFG" |rev | cut -f2 -d '/' |rev)" +if [ -n "$GRUBTHEME" ]; then + if [ -d "/boot/grub/themes/$GRUBTHEME" ]; then + cp -r /boot/grub/themes/$GRUBTHEME themes/ + else + echo "Error: Directory /boot/grub/themes/$GRUBTHEME not exist" + exit 1 + fi +fi + +# copy grub locale +mkdir -p locale +if [ ! -e "$boot/locale" -a -f "$CFG" ]; then + langs=$(grep -oP "([a-z]{2})(?=_[A-Z]{2})" "$CFG" | sort | uniq) + for i in $langs; do + fp="/usr/share/locale/$i/LC_MESSAGES/grub.mo" + [ -f $fp ] && cp -arf "$fp" "locale/$i.mo" + done +fi + +exit 0 + +# NB: there will be final macro expansion based on actual image sizes +# done by features.in/grub/scripts.d/20-propagator-ramdisk-grub diff --git a/features.in/hdt/README b/features.in/hdt/README new file mode 100644 index 0000000..9a2511a --- /dev/null +++ b/features.in/hdt/README @@ -0,0 +1,7 @@ +Добавление модуля hdt (Hardware Detection Tool) к syslinux; +может быть востребовано для инсталяторов, live/rescue. + +Фича не только требует фичу syslinux (и соответствующий пакет, +а также pciids), но и тесно с ней интегрирована; в частности, +фрагмент конфигурационного файла располагается не "здесь", +а "там", поскольку сам hdt.c32 также входит в пакет syslinux. diff --git a/features.in/hdt/config.mk b/features.in/hdt/config.mk new file mode 100644 index 0000000..be05678 --- /dev/null +++ b/features.in/hdt/config.mk @@ -0,0 +1,12 @@ +# optimized out use/syslinux due to use/memtest +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/hdt: use/syslinux use/memtest + @$(call add_feature) + @$(call add,STAGE1_PACKAGES,pciids) + @$(call add,STAGE1_PACKAGES,dosfstools) + @$(call add,SYSLINUX_MODULES,hdt) + @$(call add,GRUB_CFG,hdt_bios) + @$(call set,GLOBAL_HSH_PROC,1) +else +use/hdt: ; @: +endif diff --git a/features.in/hdt/stage1/scripts.d/02-hdt b/features.in/hdt/stage1/scripts.d/02-hdt new file mode 100755 index 0000000..2ef8260 --- /dev/null +++ b/features.in/hdt/stage1/scripts.d/02-hdt @@ -0,0 +1,9 @@ +#!/bin/sh +# http://syslinux.zytor.com/wiki/index.php/Hdt_%28Hardware_Detection_Tool%29#pci_stuff +# NB: this script intentionally supports pci.ids provided by +# pciids package as that one is updated automatically + +[ -z "$GLOBAL_VERBOSE" ] || echo "** compressing pci.ids" + +mkdir -p "$WORKDIR/syslinux" +gzip -9 < /usr/share/misc/pci.ids > "$WORKDIR"/syslinux/pci.ids diff --git a/features.in/hdt/stage1/scripts.d/10-hdt-img b/features.in/hdt/stage1/scripts.d/10-hdt-img new file mode 100755 index 0000000..c434364 --- /dev/null +++ b/features.in/hdt/stage1/scripts.d/10-hdt-img @@ -0,0 +1,27 @@ +#!/bin/sh -efu + +[ "$GLOBAL_BOOTLOADER" = grubpcboot ] || exit 0 + +cd "$WORKDIR" + +mkdir -p boot syslinux +cp /usr/lib/syslinux/hdt.c32 "$WORKDIR"/syslinux/ + +cat > syslinux/syslinux.cfg << EOF +default hdt +label hdt + menu label ^Hardware info + com32 hdt.c32 + append quiet +EOF + +# floppy disk 720 KiB +dd if=/dev/zero of=boot/hdt.img bs=512 count="1440" +mkfs.fat -n HDT -F 12 boot/hdt.img +mcopy -i boot/hdt.img -s syslinux :: + +#dd if=/usr/lib/syslinux/ldlinux.bss of=boot/hdt.img conv=notrunc +syslinux -d /syslinux --install boot/hdt.img + +rm -r syslinux +cp /usr/lib/syslinux/memdisk boot diff --git a/features.in/homeros/README b/features.in/homeros/README new file mode 100644 index 0000000..e360c8c --- /dev/null +++ b/features.in/homeros/README @@ -0,0 +1,5 @@ +Каталог содержит основную feature для создания адаптированного +дистрибутива Homeros. Это промежуточный вариант, при помощи которого +можно получить минимальный разговаривающий образ, но, возможно, помимо +его дальнейшего естественного развития требуется ещё осмысление с +точки зрения идей mkimage-profiles. diff --git a/features.in/homeros/config.mk b/features.in/homeros/config.mk new file mode 100644 index 0000000..30b02e0 --- /dev/null +++ b/features.in/homeros/config.mk @@ -0,0 +1,7 @@ +use/homeros: use/control/sudo-su use/services + @$(call add_feature) +# @$(call set,BRANDING,simply-linux) + @$(call add,THE_LISTS,homeros/homeros) + @$(call add,THE_LISTS,homeros/yasr) + @$(call add,THE_LISTS,homeros/tools) + @$(call add,DEFAULT_SERVICES_ENABLE,sshd) diff --git a/features.in/homeros/live/image-scripts.d/10-console-keyboard-ru b/features.in/homeros/live/image-scripts.d/10-console-keyboard-ru new file mode 100755 index 0000000..6333e6b --- /dev/null +++ b/features.in/homeros/live/image-scripts.d/10-console-keyboard-ru @@ -0,0 +1,8 @@ +#!/bin/sh -e + +echo 'KEYTABLE=ruwin_ct_sh-UTF-8' > /etc/sysconfig/keyboard +cat < /etc/sysconfig/i18n +SYSFONT=UniCyr_8x16 +LANG=ru_RU.UTF-8 +SUPPORTED=ru_RU.UTF-8 +EOF diff --git a/features.in/homeros/live/image-scripts.d/10-sudo b/features.in/homeros/live/image-scripts.d/10-sudo new file mode 100755 index 0000000..95bcf05 --- /dev/null +++ b/features.in/homeros/live/image-scripts.d/10-sudo @@ -0,0 +1,4 @@ +#!/bin/sh -e + +mkdir -p /etc/sudo.d +chmod 700 /etc/sudo.d diff --git a/features.in/homeros/live/image-scripts.d/20-altlinux-user b/features.in/homeros/live/image-scripts.d/20-altlinux-user new file mode 100755 index 0000000..98b06a6 --- /dev/null +++ b/features.in/homeros/live/image-scripts.d/20-altlinux-user @@ -0,0 +1,5 @@ +#!/bin/sh -e + +useradd kometa +echo 'kometa ALL=NOPASSWD:ALL' > /etc/sudo.d/kometa +chmod 400 /etc/sudo.d/kometa diff --git a/features.in/homeros/live/image-scripts.d/30-autologin b/features.in/homeros/live/image-scripts.d/30-autologin new file mode 100755 index 0000000..cbc7eb6 --- /dev/null +++ b/features.in/homeros/live/image-scripts.d/30-autologin @@ -0,0 +1,13 @@ +#!/bin/sh + +subst s/'^\(1:2345:respawn.*\)$'/'#\1'/ /etc/inittab +cat <> /etc/inittab +# yasr is always available on 1-st console; +yasr:2345:respawn:/bin/openvt -w -f -c 1 -- su -l kometa -c /usr/local/bin/yasr-with-linux-term +EOF + cat < /usr/local/bin/yasr-with-linux-term +#!/bin/sh +TERM=linux /usr/bin/yasr +exit \$? +EOF + chmod 755 /usr/local/bin/yasr-with-linux-term diff --git a/features.in/im/README b/features.in/im/README new file mode 100644 index 0000000..2adf36a --- /dev/null +++ b/features.in/im/README @@ -0,0 +1,4 @@ +Эта фича добавляет средства настройки методов ввода (Input Methods). + +На данный момент является экспериментальной, приветствуется помощь +в тестировании/доработке/отладке. diff --git a/features.in/im/config.mk b/features.in/im/config.mk new file mode 100644 index 0000000..0dd5a07 --- /dev/null +++ b/features.in/im/config.mk @@ -0,0 +1,6 @@ +# Input Method configuration through IBus + +use/im: + @$(call add_feature) + @$(call add,THE_PACKAGES,$$(IM_PACKAGES)) + @$(call add,THE_LISTS,$(call tags,desktop ibus)) diff --git a/features.in/init/README b/features.in/init/README new file mode 100644 index 0000000..24cfc09 --- /dev/null +++ b/features.in/init/README @@ -0,0 +1,11 @@ +Эта фича определяет систему инициализации, которая будет использована +в пользовательской среде (livecd, установленный дистрибутив, vm). +Она не влияет на состав инсталятора и rescue-образа. + +Обратите внимание: как и с use/bootloader/%, в силу особенностей make +переключение в каждую позицию возможно лишь один раз, далее эта цель +считается достигнутой и при последующих вызовах не отрабатывает. + +См. тж.: +http://altlinux.org/sysvinit +http://altlinux.org/systemd diff --git a/features.in/init/config.mk b/features.in/init/config.mk new file mode 100644 index 0000000..d8e77b7 --- /dev/null +++ b/features.in/init/config.mk @@ -0,0 +1,56 @@ ++sysvinit: use/init/sysv; @: ++systemd: use/init/systemd/full; @: ++systemd-optimal: use/init/systemd/settings/optimal; @: + +# NB: the list name MUST be identical to init package name +use/init: use/pkgpriorities + @$(call add_feature) + @$(call add,THE_LISTS,$$(INIT_TYPE)) + @$(call add,PINNED_PACKAGES,$$(INIT_TYPE)) + +# THE_LISTS is too late when BASE_PACKAGES have pulled in +# the wrong syslogd-daemon provider already +use/init/sysv: use/init + @$(call set,INIT_TYPE,sysvinit) + @$(call add,THE_PACKAGES,rsyslog-classic startup) + @$(call add,THE_PACKAGES,udev-rule-generator) + @$(call add,DEFAULT_SERVICES_ENABLE,udevd-final) + @$(call add,PINNED_PACKAGES,rsyslog-classic) +ifeq (,$(filter-out x86_64 aarch64,$(ARCH))) + @$(call add,THE_PACKAGES,mount-efivars) +endif + +use/init/sysv/polkit: use/init/sysv + @$(call add,THE_PACKAGES,polkit-sysvinit) + +### i-f should be dropped as soon as rootfs scripts are effective there +use/init/systemd: use/init + @$(call set,INIT_TYPE,systemd) + +use/init/systemd/full: use/init/systemd + @$(call add,THE_PACKAGES,chkconfig) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,THE_PACKAGES,vconsole-setup-kludge) +endif + +# http://www.freedesktop.org/wiki/Software/systemd/Debugging +use/init/systemd/debug: use/init/systemd use/services + @$(call add,THE_PACKAGES,systemd-shutdown-debug-script) + @$(call add,SERVICES_ENABLE,debug-shell) + @$(call add,STAGE2_BOOTARGS,systemd.log_level=debug) + @$(call add,STAGE2_BOOTARGS,systemd.log_target=kmsg) + @$(call add,STAGE2_BOOTARGS,log_buf_len=1M enforcing=0) + +# set multi-user target by default +use/init/systemd/multiuser: use/init/systemd + @$(call add,STAGE2_BOOTARGS,systemd.unit=multi-user.target) + +use/init/systemd/settings/disable-user-systemd-for-selinux \ + use/init/systemd/settings/enable-log-to-tty12 \ + use/init/systemd/settings/enable-showstatus: \ + use/init/systemd/settings/%: use/init/systemd + @$(call add,THE_PACKAGES,systemd-settings-$*) + +use/init/systemd/settings/optimal: use/init/systemd \ + use/init/systemd/settings/enable-log-to-tty12 \ + use/init/systemd/settings/enable-showstatus; @: diff --git a/features.in/init/live/image-scripts.d/50-var-run-fix b/features.in/init/live/image-scripts.d/50-var-run-fix new file mode 100755 index 0000000..57a07b3 --- /dev/null +++ b/features.in/init/live/image-scripts.d/50-var-run-fix @@ -0,0 +1,9 @@ +#!/bin/sh + +# this was a bunch of dirty complaints +sed -i 's,/var/run,/run,' /{etc,lib}/tmpfiles.d/*.conf ||: + +[ ! -L /var/run ] && rm -r /var/run && ln -s ../run /var/run +[ ! -L /var/lock ] && rm -r /var/lock && ln -s ../run/lock /var/lock + +: diff --git a/features.in/init/rescue/image-scripts.d/50-var-run-fix b/features.in/init/rescue/image-scripts.d/50-var-run-fix new file mode 100755 index 0000000..57a07b3 --- /dev/null +++ b/features.in/init/rescue/image-scripts.d/50-var-run-fix @@ -0,0 +1,9 @@ +#!/bin/sh + +# this was a bunch of dirty complaints +sed -i 's,/var/run,/run,' /{etc,lib}/tmpfiles.d/*.conf ||: + +[ ! -L /var/run ] && rm -r /var/run && ln -s ../run /var/run +[ ! -L /var/lock ] && rm -r /var/lock && ln -s ../run/lock /var/lock + +: diff --git a/features.in/init/rescue/image-scripts.d/65-os-release b/features.in/init/rescue/image-scripts.d/65-os-release new file mode 100755 index 0000000..57a9a2b --- /dev/null +++ b/features.in/init/rescue/image-scripts.d/65-os-release @@ -0,0 +1,15 @@ +#!/bin/sh +# Install /etc/*-release files if needed +rel_file= +for rel_file in altlinux-release os-release; do + if ! [ -e /etc/"$rel_file" ]; then + # in case it is dangling symlink + rm -f /etc/"$rel_file" + if [ -r /usr/share/branding-data-current/release/"$rel_file" ]; then + cp -at /etc -- \ + /usr/share/branding-data-current/release/"$rel_file" + elif [ -r /usr/lib/"$rel_file" ]; then + cp -a /usr/lib/"$rel_file" /etc/"$rel_file" + fi + fi +done diff --git a/features.in/init/rootfs/image-scripts.d/50-var-run-fix b/features.in/init/rootfs/image-scripts.d/50-var-run-fix new file mode 100755 index 0000000..57a07b3 --- /dev/null +++ b/features.in/init/rootfs/image-scripts.d/50-var-run-fix @@ -0,0 +1,9 @@ +#!/bin/sh + +# this was a bunch of dirty complaints +sed -i 's,/var/run,/run,' /{etc,lib}/tmpfiles.d/*.conf ||: + +[ ! -L /var/run ] && rm -r /var/run && ln -s ../run /var/run +[ ! -L /var/lock ] && rm -r /var/lock && ln -s ../run/lock /var/lock + +: diff --git a/features.in/init/rootfs/image-scripts.d/65-os-release b/features.in/init/rootfs/image-scripts.d/65-os-release new file mode 100755 index 0000000..57a9a2b --- /dev/null +++ b/features.in/init/rootfs/image-scripts.d/65-os-release @@ -0,0 +1,15 @@ +#!/bin/sh +# Install /etc/*-release files if needed +rel_file= +for rel_file in altlinux-release os-release; do + if ! [ -e /etc/"$rel_file" ]; then + # in case it is dangling symlink + rm -f /etc/"$rel_file" + if [ -r /usr/share/branding-data-current/release/"$rel_file" ]; then + cp -at /etc -- \ + /usr/share/branding-data-current/release/"$rel_file" + elif [ -r /usr/lib/"$rel_file" ]; then + cp -a /usr/lib/"$rel_file" /etc/"$rel_file" + fi + fi +done diff --git a/features.in/init/rootfs/image-scripts.d/90-systemd b/features.in/init/rootfs/image-scripts.d/90-systemd new file mode 100755 index 0000000..31c5159 --- /dev/null +++ b/features.in/init/rootfs/image-scripts.d/90-systemd @@ -0,0 +1,21 @@ +#!/bin/sh + +# the part below relates to systemd as init specifically +rpm -q systemd-sysvinit || exit 0 + +# file str [str...] +# NB: str is also treated as a regex, +# be careful if you copy the function +sub() { + local file="$1" + shift + for i in "$@"; do + grep -q "^$i" "$file" || echo "$i" >> "$file" + done +} + +# tune make-initrd +sub /etc/initrd.mk 'MODULES_TRY_ADD += autofs4' + +# don't allow systemd to set LANG (see also #27408) +sub /etc/locale.conf 'LANG=' diff --git a/features.in/init/stage2/image-scripts.d/91-systemd b/features.in/init/stage2/image-scripts.d/91-systemd new file mode 100755 index 0000000..7c7afc6 --- /dev/null +++ b/features.in/init/stage2/image-scripts.d/91-systemd @@ -0,0 +1,16 @@ +#!/bin/sh + +# the part below relates to systemd as init specifically +rpm -q systemd-sysvinit || exit 0 + +sub() { + local file="$1" + shift + for i in "$@"; do + grep -q "^$i" "$file" || echo "$i" >> "$file" + done +} + +# aufs2 root is rw in reality; but don't bother if there's a record already +grep -q '[[:space:]]/[[:space:]]' /etc/fstab || + sub /etc/fstab '/dev/root / auto defaults 0 0' diff --git a/features.in/initrd-bootchain/README b/features.in/initrd-bootchain/README new file mode 100644 index 0000000..fae65b0 --- /dev/null +++ b/features.in/initrd-bootchain/README @@ -0,0 +1,14 @@ +Осуществляется сборка initrd.img при помощи make-initrd с включенными фичами +bootchain. Это альтернатива фичи initrd-propagator. Используется тот же список +модулей ядра, что и при сборке с propagator, но в отличие от последнего модули +добавляются в initrd.img самим make-initrd. +Документацию по использованию bootchain следует смотреть в пакетах +make-initrd-bootchain-*: +/usr/share/make-initrd/features/bootchain-*/README.md + +Конфиг находится в stage1/files/bootchain. Почти все переменные можно +переопределить. Переменные в m-p по сравнению с конфигом bootchain +имеют приставку 'BOOTCHAIN_'. Дефолты заданы в config.mk +Переопределить можно так: + + $(call set,BOOTCHAIN_OEM_WELCOME_TEXT,Welcome to my OS!) diff --git a/features.in/initrd-bootchain/config.mk b/features.in/initrd-bootchain/config.mk new file mode 100644 index 0000000..d5bdeda --- /dev/null +++ b/features.in/initrd-bootchain/config.mk @@ -0,0 +1,23 @@ +use/initrd-bootchain: use/uuid-iso + @$(call add_feature) + @$(call set,STAGE1_INITRD,initrd-bootchain) + @$(call set,STAGE1_PACKAGES,make-initrd-bootchain) + @$(call set,STAGE1_INITRD_TYPEARGS,$(shell echo "root=bootchain bootchain=fg,altboot automatic")) + @$(call set,STAGE1_INITRD_BOOTMETHOD,$(shell echo "method:cdrom,uuid:$(UUID_ISO)")) + @$(call set,STAGE1_INITRD_STAGE2_OPTION,stagename) + @$(call try,BOOTCHAIN_BC_FGVT_ACTIVATE,7) + @$(call try,BOOTCHAIN_WAITDEV_TIMEOUT,) + @$(call try,BOOTCHAIN_OEM_WELCOME_TEXT,Welcome to ALT!) + @$(call try,BOOTCHAIN_OEM_CDROOT,/image) + @$(call try,BOOTCHAIN_OEM_DEFAULT_STAGE2,altinst) + @$(call try,BOOTCHAIN_OEM_LIVE_STORAGE,alt-live-storage) + @$(call try,BOOTCHAIN_OEM_BAD_STORAGE,alt-slow-storage) + @$(call try,BOOTCHAIN_OEM_SETUP_STORAGE,alt-drivers-update) + @$(call try,BOOTCHAIN_OEM_IMAGES_BASE,/tmp/images) + @$(call try,BOOTCHAIN_OEM_OVERLAYS_DIR,/tmp/overlays) + @$(call try,BOOTCHAIN_OEM_URL_NETINST,/pub/netinst/current) + @$(call try,BOOTCHAIN_OEM_SRV_NETINST,) + @$(call try,BOOTCHAIN_OEM_NFS_NETINST,/srv/public/netinst) + @$(call try,BOOTCHAIN_OEM_CIFS_NETINST,/netinst) + @$(call try,BOOTCHAIN_LOGFILE,/var/log/bootchained.log) + @$(call try,BOOTCHAIN_LOG_VT,3) diff --git a/features.in/initrd-bootchain/generate.mk b/features.in/initrd-bootchain/generate.mk new file mode 100644 index 0000000..496cccc --- /dev/null +++ b/features.in/initrd-bootchain/generate.mk @@ -0,0 +1,40 @@ +# set up initrd-bootchain config + +ifdef BUILDDIR + +include $(BUILDDIR)/distcfg.mk + +BOOTCHAIN_CFG := $(BUILDDIR)/stage1/files/bootchain + +all: debug + @[ -s "$(BOOTCHAIN_CFG)" ] || exit 1; \ + if [ -n "$(META_VOL_ID)" ]; then \ + DISTRO="$(META_VOL_ID)"; \ + else \ + DISTRO="$(RELNAME)"; \ + fi; \ + sed -i -e "s,@distro@,$$DISTRO," \ + -e "s,@bc_fgvt_activate@,$(BOOTCHAIN_BC_FGVT_ACTIVATE)," \ + -e "s,@waitdev_timeout@,$(BOOTCHAIN_WAITDEV_TIMEOUT)," \ + -e "s,@oem_welcome_text@,$(BOOTCHAIN_OEM_WELCOME_TEXT)," \ + -e "s,@oem_cdroot@,$(BOOTCHAIN_OEM_CDROOT)," \ + -e "s,@oem_default_stage2@,$(BOOTCHAIN_OEM_DEFAULT_STAGE2)," \ + -e "s,@oem_live_storage@,$(BOOTCHAIN_OEM_LIVE_STORAGE)," \ + -e "s,@oem_bad_storage@,$(BOOTCHAIN_OEM_BAD_STORAGE)," \ + -e "s,@oem_setup_storage@,$(BOOTCHAIN_OEM_SETUP_STORAGE)," \ + -e "s,@oem_images_base@,$(BOOTCHAIN_OEM_IMAGES_BASE)," \ + -e "s,@oem_overlays_dir@,$(BOOTCHAIN_OEM_OVERLAYS_DIR)," \ + -e "s,@oem_url_netinst@,$(BOOTCHAIN_OEM_URL_NETINST)," \ + -e "s,@oem_srv_netinst@,$(BOOTCHAIN_OEM_SRV_NETINST)," \ + -e "s,@oem_nfs_netinst@,$(BOOTCHAIN_OEM_NFS_NETINST)," \ + -e "s,@oem_cifs_netinst@,$(BOOTCHAIN_OEM_CIFS_NETINST)," \ + -e "s,@bc_logfile@,$(BOOTCHAIN_LOGFILE)," \ + -e "s,@bc_log_vt@,$(BOOTCHAIN_LOG_VT)," \ + $(BOOTCHAIN_CFG) + +debug: + @if [ -n "$(DEBUG)" ]; then \ + echo "** DISTRO: $(DISTRO)"; \ + fi + +endif diff --git a/features.in/initrd-bootchain/stage1/files/bootchain b/features.in/initrd-bootchain/stage1/files/bootchain new file mode 100644 index 0000000..894c705 --- /dev/null +++ b/features.in/initrd-bootchain/stage1/files/bootchain @@ -0,0 +1,78 @@ +# /etc/sysconfig/bootchain + +############################# +# Bootchain defaults # +############################# + +# Where to create the chain, for example: mntdir=/run/bootchain +# mntdir=/dev/bootchain + +# Change VT number to show log on specified TTY, empty value turns off this VT +BC_LOG_VT=@bc_log_vt@ + +# Delay in seconds before auto-activate interactive VT, empty value for switch immediately +BC_FGVT_ACTIVATE=@bc_fgvt_activate@ + +# Full path to the bootchain log or character special device name +BC_LOGFILE=@bc_logfile@ + +# Common timeout in seconds for all waitdev steps: +# this make possible using fallback after last waitdev step +WAITDEV_TIMEOUT=@waitdev_timeout@ + + +############################# +# Pipeline defaults # +############################# + +# Where to create the chain, for example: mntdir=/run/pipeline +# mntdir=/dev/pipeline + +# Full path to the bootchain log or character special device name +# BC_LOGFILE=/var/log/pipelined.log + + +############################# +# ALT Linux specific values # +############################# + +# altboot back title +OEM_WELCOME_TEXT="@oem_welcome_text@" + +# Distribution name, for example +OEM_DISTRIBUTION="@distro@" + +# ISO-image mount point (required for ALT) +OEM_CDROOT=@oem_cdroot@ + +# Default stage2 filename for boot from ISO-9660 +OEM_DEFAULT_STAGE2=@oem_default_stage2@ + +# Persistent storage device LABEL for Live-RW sessions +OEM_LIVE_STORAGE=@oem_live_storage@ + +# Live storage device LABEL for mark non-usable devices +OEM_BAD_STORAGE=@oem_bad_storage@ + +# Local storage device LABEL with the OEM drivers update +OEM_SETUP_STORAGE=@oem_setup_storage@ + +# Mount point inside stage2 for read additional images +OEM_IMAGES_BASE=@oem_images_base@ + +# Directory inside stage2 for mount images as LiveCD slices +OEM_OVERLAYS_DIR=@oem_overlays_dir@ + +# HTTP and FTP default base directory for netinstall +# (if empty "/pub/netinst/current" path will be used) +OEM_URL_NETINST=@oem_url_netinst@ + +# HTTP and FTP default server name or IP-address for netinstall +# (if empty near gateway will be used) +OEM_SRV_NETINST=@oem_srv_netinst@ + +# NFS path with overlays-live sub-directory, containing slice images +OEM_NFS_NETINST=@oem_nfs_netinst@ + +# SAMBA share with overlays-live sub-directory, containing slice images +OEM_CIFS_NETINST=@oem_cifs_netinst@ diff --git a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain new file mode 100755 index 0000000..cef4f98 --- /dev/null +++ b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain @@ -0,0 +1,85 @@ +#!/bin/sh -efux +# NB: /etc/initrd.mk carefully prepared by earlier scripts + +fatal() { echo "** error: $@" >&1; exit 1; } + +kver= +for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" +done + +[ -n "$kver" ] || + fatal "no kernel version identified" + +[ -s /.in/modules ] || + fatal "kernel modules set not found" + +cat >> /etc/initrd.mk <> /etc/initrd.mk + +echo "MODULES_TRY_ADD += $(grep ^# -v /.in/modules | + grep -v .ko | + sort -u | + sed 's,$,/,g' | tr -s '\n' ' ')" >> /etc/initrd.mk + +dialog --create-rc /etc/dialogrc.tmp +cat /etc/dialogrc.tmp |sed -E \ + -e 's/^(use_colors).*/\1 = ON/' \ + -e 's/^(use_shadow).*/\1 = ON/' \ + -e 's/^(screen_color).*/\1 = \(WHITE,RED,ON\)/' \ + > /etc/dialogrc.error +rm -f /etc/dialogrc.tmp + +# replace generated config bootchain to stage1 chroot +mv /.image/bootchain /etc/sysconfig/ + +echo "PUT_FILES += /etc/sysconfig/bootchain" >> /etc/initrd.mk +echo "PUT_FILES += /etc/dialogrc.error" >> /etc/initrd.mk + +# FIXME: large storage systems can get that tmpfs filled up +# with debug data as of make-initrd 2.2.12 +rm -vf /usr/share/make-initrd/data/etc/udev/rules.d/00-debug.rules \ + /usr/share/make-initrd/data/lib/uevent/filters/debug + +MAKE_INITRD_OPTS="--no-checks AUTODETECT=" +MAKE_INITRD_VER="`make-initrd -V \ + | sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`" + +[ -z "$GLOBAL_VERBOSE" ] || + MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS -v" + +cd /boot +for KVER in $kver; do + make-initrd $MAKE_INITRD_OPTS -k "$KVER" || + fatal "make-initrd failed" +done + +case `arch` in +e2k) + kname=image;; +*) + kname=vmlinuz;; +esac + +rm -f $kname initrd.img +ln -s $kname-$KVER $kname +ln -s initrd-$KVER.img initrd.img + +: diff --git a/features.in/initrd-propagator/README b/features.in/initrd-propagator/README new file mode 100644 index 0000000..6f2ad4c --- /dev/null +++ b/features.in/initrd-propagator/README @@ -0,0 +1,3 @@ +Добавляется поддержка propagator. propagator обеспечивает первую стадию загрузчика. +Ранее был неотъемлемой частью субпрофиля stage1. Был вынесен в фичу для обеспечения +возожности собирать образы с использованием специально собранного initrd вместо него. diff --git a/features.in/initrd-propagator/config.mk b/features.in/initrd-propagator/config.mk new file mode 100644 index 0000000..edf35c2 --- /dev/null +++ b/features.in/initrd-propagator/config.mk @@ -0,0 +1,7 @@ +use/initrd-propagator: use/uuid-iso + @$(call add_feature) + @$(call add,STAGE1_PACKAGES,make-initrd-propagator propagator) + @$(call set,STAGE1_INITRD,initrd-propagator) + @$(call set,STAGE1_INITRD_TYPEARGS,$(shell echo "changedisk automatic")) + @$(call set,STAGE1_INITRD_BOOTMETHOD,$(shell echo "method:cdrom,fuid:$(UUID_ISO)")) + @$(call set,STAGE1_INITRD_STAGE2_OPTION,stagename) diff --git a/features.in/initrd-propagator/stage1/scripts.d/01-initfs b/features.in/initrd-propagator/stage1/scripts.d/01-initfs new file mode 100755 index 0000000..1a4a04f --- /dev/null +++ b/features.in/initrd-propagator/stage1/scripts.d/01-initfs @@ -0,0 +1,2 @@ +#!/bin/sh +echo "file /.VERSION @TMPDIR@/.VERSION 0644 0 0" >"$WORKDIR"/initfs diff --git a/features.in/initrd-propagator/stage1/scripts.d/11-initrd-propagator b/features.in/initrd-propagator/stage1/scripts.d/11-initrd-propagator new file mode 100755 index 0000000..5022d30 --- /dev/null +++ b/features.in/initrd-propagator/stage1/scripts.d/11-initrd-propagator @@ -0,0 +1,7 @@ +#!/bin/sh +# see also http://www.altlinux.org/Make-initrd-propagator + +echo 'FEATURES += propagator' >> /etc/initrd.mk + +# FIXME: #29705 workaround +echo 'MODULES_PRELOAD += ahci' >> /etc/initrd.mk diff --git a/features.in/initrd-propagator/stage1/scripts.d/80-make-initrd-for-propagator b/features.in/initrd-propagator/stage1/scripts.d/80-make-initrd-for-propagator new file mode 100755 index 0000000..b2d5928 --- /dev/null +++ b/features.in/initrd-propagator/stage1/scripts.d/80-make-initrd-for-propagator @@ -0,0 +1,47 @@ +#!/bin/sh -efux +# NB: /etc/initrd.mk carefully prepared by earlier scripts + +fatal() { echo "** error: $@" >&1; exit 1; } + +kver= +for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" +done + +[ -n "$kver" ] || + fatal "no kernel version identified" + +# FIXME: large storage systems can get that tmpfs filled up +# with debug data as of make-initrd 2.2.12 +rm -vf /usr/share/make-initrd/data/etc/udev/rules.d/00-debug.rules \ + /usr/share/make-initrd/data/lib/uevent/filters/debug + +MAKE_INITRD_OPTS="--no-checks --no-depmod AUTODETECT= " +MAKE_INITRD_VER="`make-initrd -V \ + | sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`" + +[ -z "$GLOBAL_VERBOSE" ] || + MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS -v" + +cd /boot + +for KVER in $kver; do + make-initrd $MAKE_INITRD_OPTS -k "$KVER" || + fatal "make-initrd failed" +done + +case `arch` in +e2k) + kname=image;; +*) + kname=vmlinuz;; +esac + +rm -f $kname initrd.img +ln -s $kname-$KVER $kname +ln -s initrd-$KVER.img initrd.img + +: diff --git a/features.in/initrd-propagator/stage1/scripts.d/81-make-initfs b/features.in/initrd-propagator/stage1/scripts.d/81-make-initfs new file mode 100755 index 0000000..ba21ad7 --- /dev/null +++ b/features.in/initrd-propagator/stage1/scripts.d/81-make-initfs @@ -0,0 +1,29 @@ +#!/bin/sh -efu +# NB: initrd.mk carefully built by an earlier script + +verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "** 81-make-initfs: $@" >&2; } + +initrd="$(find /boot -type f -name 'initrd*.img' -print)" +if [ -n "$initrd" ]; then + pdir="$(getconf LIBDIR)/propagator" + mkdir -p "$pdir" + for INITRD in $initrd; do + KVER=${INITRD#*-} + KVER=${KVER%.*} + gzip < "$INITRD" > "$pdir"/initfs-"$KVER" + done +else + verbose '/boot/initrd*.img missing' + exit 1 +fi + +if [ -h /boot/initrd.img ]; then + KVER=$(readlink -ev /boot/initrd.img) + KVER=${INITRD#*-} + KVER=${KVER%.*} + cp "$pdir"/initfs-$KVER "$pdir"/initfs +else + verbose "/boot/initrd.img missing" + cp "$pdir"/initfs-"$KVER" "$pdir"/initfs + exit 1 +fi diff --git a/features.in/initrd-propagator/stage1/scripts.d/90-build-propagator b/features.in/initrd-propagator/stage1/scripts.d/90-build-propagator new file mode 100755 index 0000000..5e3d8b1 --- /dev/null +++ b/features.in/initrd-propagator/stage1/scripts.d/90-build-propagator @@ -0,0 +1,32 @@ +#!/bin/sh -efu + +libdir="$(getconf LIBDIR)" + +case "`arch`" in + e2k) + kname=image + ;; + *) + kname=vmlinuz + ;; +esac + +kimage="$(find /boot -type f -name "$kname-*")" + +# cleanup old propagator +old_propagator="$(find /boot -type f -name "full*.cz")" +[ -z "$old_propagator" ] || rm $old_propagator + +for kver in $kimage; do + kver="${kver#/boot/$kname-}" + mkmodpack -p /.in/modules -o /tmp/modules-"$kver" -k "$kver" + cat "$libdir/propagator/initfs" /tmp/modules-"$kver" > /boot/full-"$kver".cz + + sed \ + -e "s,@LIBDIR@,$libdir," \ + -e "s,@TMPDIR@,/tmp,g" \ + < "$WORKDIR/initfs" | + gencpio - | + gzip -c >> /boot/full-"$kver".cz + +done diff --git a/features.in/install2/README b/features.in/install2/README new file mode 100644 index 0000000..e44bb3c --- /dev/null +++ b/features.in/install2/README @@ -0,0 +1,20 @@ +Эта фича дополняет базовый "живой" образ второй стадии +специфическими для инсталяционного образа настройками +и скриптовыми хуками. + +Рекомендуется подключать при помощи +installer, чтобы обеспечить +включение типового набора связанных с инсталятором функций. + +При добавлении скриптов в image-scripts.d/ следует позаботиться, +чтобы в компактном livecd, которым является инсталятор, оказались +нужные им утилиты (INSTALL2_PACKAGES). Перегружать его не следует, +поскольку это прямо влияет на требования по минимальному размеру +оперативной памяти для установки (если не задействован параметр +загрузки ядра lowmem, обрабатываемый propagator). + +При необходимости принудительно удалить что-либо из попавшего +в образ инсталятора (вместе с "оптовым" пакетом либо по зависимостям, +когда точно известно, что для данного применения они избыточны) можно +воспользоваться переменной INSTALL2_CLEANUP_PACKAGES для указания +списка пакетов на удаление без учёта зависимостей перед формированием +squashfs и INSTALL2_CLEANUP_KDRIVERS для удаления излишних модулей ядра. diff --git a/features.in/install2/config.mk b/features.in/install2/config.mk new file mode 100644 index 0000000..7091090 --- /dev/null +++ b/features.in/install2/config.mk @@ -0,0 +1,190 @@ +# alterator-based installer, second (livecd) stage + ++installer: use/install2/full; @: + +use/install2: use/stage2 sub/stage2@install2 use/metadata \ + use/cleanup/installer use/install2/autoinstall use/grub/install2.cfg + @$(call add_feature) + @$(call try,INSTALLER,altlinux-generic) # might be replaced later + @$(call add,INSTALL2_PACKAGES,installer-distro-$$(INSTALLER)-stage2) + @$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-alterator) + @$(call add,BASE_PACKAGES,branding-$$(BRANDING)-release) + @$(call add,BASE_PACKAGES,installer-distro-$$(INSTALLER)-stage3) + @$(call add,BASE_PACKAGES,installer-common-stage3) + @$(call add,BASE_PACKAGES,glibc-gconv-modules) # for guile22 + @$(call add,BASE_LISTS,$(call tags,basesystem && !alterator)) + @$(call xport,BASE_BOOTLOADER) + @$(call xport,INSTALL2_CLEANUP_PACKAGES) + @$(call xport,INSTALL2_CLEANUP_KDRIVERS) + +# doesn't use/install2/fs on purpose (at least so far) +use/install2/full: \ + use/install2/packages use/install2/vmguest use/install2/tools \ + use/syslinux/localboot.cfg use/grub/localboot_bios.cfg \ + use/syslinux/ui/menu use/bootloader + @$(call add,INSTALL2_PACKAGES,xorg-drv-synaptics) + @$(call add,INSTALL2_PACKAGES,xorg-drv-libinput) + +# for distributions with their own -stage3 installer part +use/install2/stage3: use/install2 + @$(call add,BASE_PACKAGES,installer-$$(INSTALLER)-stage3) + +# just an alias, better use its endpoint directly +use/install2/fonts: use/fonts/install2; @: + +# see also use/vmguest +ifeq (,$(filter-out i586 x86_64 aarch64 armh ppc64le,$(ARCH))) + +# see also use/vmguest/kvm; qxl included in xorg pkglist +use/install2/kvm: + @$(call add,INSTALL2_PACKAGES,spice-vdagent xorg-drv-qxl) + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + +# virtualbox guest support for installer +use/install2/vbox: + @$(call add,STAGE1_KMODULES,virtualbox-addition vboxguest) + @$(call add,INSTALL2_PACKAGES,xorg-drv-vboxvideo) + +# see also use/vmguest/vmware +use/install2/vmware: + @$(call add,STAGE1_KMODULES,vmware) + @$(call add,STAGE1_KMODULES,scsi) # mptspi in led-ws + @$(call add,INSTALL2_PACKAGES,xorg-drv-vmware xorg-drv-vmmouse) + +use/install2/vmguest: use/install2/kvm use/install2/vbox use/install2/vmware; @: + +else + +use/install2/vmguest: use/install2/kvm; @: + +endif +else + +use/install2/vmguest: ; @: + +endif + +# stash local packages within installation media +use/install2/packages: use/install2 use/repo/main; @: + +# set up remote repositories within installed system out-of-box +use/install2/repo: use/install2 + @$(call add,INSTALL2_PACKAGES,installer-feature-online-repo) + +# for alterator-pkg to use +use/install2/net: use/install2 + @$(call add,INSTALL2_PACKAGES,curl) + +# for autoinstall +use/install2/autoinstall: + @$(call add,INSTALL2_PACKAGES,alterator-postinstall) + @$(call add,BASE_PACKAGES,alterator-postinstall) + +# NB: sort of conflicts with use/install2/cleanup/vnc +use/install2/vnc: + @$(call add,INSTALL2_PACKAGES,x11vnc xterm net-tools) + +# this one expects external vncviewer to come +use/install2/vnc/listen: use/install2/vnc \ + use/syslinux/install-vnc-listen.cfg use/grub/install-vnc-listen.cfg; @: + +# this one connects to a specified vncviewer --listen +use/install2/vnc/connect: use/install2/vnc \ + use/syslinux/install-vnc-connect.cfg use/grub/install-vnc-connect.cfg; @: + +# add both bootloader items to be *that* explicit ;-) +use/install2/vnc/full: use/install2/vnc/listen use/install2/vnc/connect; @: + +# filesystems handling +use/install2/fs: use/install2/xfs use/install2/jfs use/install2/reiserfs; @: + +use/install2/xfs: + @$(call add,SYSTEM_PACKAGES,xfsprogs) + +use/install2/jfs: + @$(call add,SYSTEM_PACKAGES,jfsutils) + +use/install2/reiserfs: + @$(call add,SYSTEM_PACKAGES,reiserfsprogs) + +use/install2/fat: + @$(call add,SYSTEM_PACKAGES,dosfstools fatresize) + +# prepare bootloader for software suspend (see also live) +use/install2/suspend: + @$(call add,INSTALL2_PACKAGES,installer-feature-desktop-suspend-stage2) + +# extras +use/install2/tools: + @$(call add,INSTALL2_PACKAGES,pxz) + @$(call add,INSTALL2_PACKAGES,fdisk gdisk parted partclone) + @$(call add,INSTALL2_PACKAGES,vim-console) + @$(call add,INSTALL2_PACKAGES,net-tools openssh-clients lftp) + +# when VNC installation is less welcome than a few extra megs +use/install2/cleanup/vnc: + @$(call add,INSTALL2_CLEANUP_PACKAGES,x11vnc xorg-xvfb) + +# when VNC installation is less welcome than a few extra megs +use/install2/cleanup/dri: + @$(call set,INSTALL2_CLEANUP_DRI,yes) + @$(call xport,INSTALL2_CLEANUP_DRI) + +# conflicts with luks feature +use/install2/cleanup/crypto: + @$(call add,INSTALL2_CLEANUP_PACKAGES,gnupg) + @$(call add,INSTALL2_CLEANUP_PACKAGES,libgnutls*) + +# leave only cirrus, fbdev, qxl, vesa in vm-targeted images +use/install2/cleanup/x11-hwdrivers: + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-drv-ati xorg-drv-intel) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-glamor) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-drv-mach64 xorg-drv-mga) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-drv-nouveau) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-drv-openchrome) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-drv-r128 xorg-drv-radeon) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-drv-s3virge xorg-drv-savage) + @$(call add,INSTALL2_CLEANUP_PACKAGES,xorg-drv-sis) + +# massive purge of anything not critical to installer boot (l10n included!) +use/install2/cleanup/everything: use/install2/cleanup/x11-hwdrivers \ + use/install2/cleanup/vnc use/install2/cleanup/crypto + @$(call add,INSTALL2_CLEANUP_PACKAGES,glibc-locales) + @$(call add,INSTALL2_CLEANUP_PACKAGES,libX11-locales alterator-l10n) + @$(call add,INSTALL2_CLEANUP_PACKAGES,kbd-data kbd console-scripts) + @$(call add,INSTALL2_CLEANUP_PACKAGES,shadow-convert) + @$(call add,INSTALL2_CLEANUP_PACKAGES,libXaw xmessage xconsole) + @$(call add,INSTALL2_CLEANUP_PACKAGES,libncurses libncursesw) # top + @$(call add,INSTALL2_CLEANUP_PACKAGES,openssl) # net-functions + @$(call add,INSTALL2_CLEANUP_PACKAGES,vitmp vim-minimal) + @$(call add,INSTALL2_CLEANUP_PACKAGES,udev-hwdb pciids) + +# this conflicts with efi (which needs efivars.ko) +use/install2/cleanup/kernel/firmware: + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/firmware/) + +# drop drivers expected to be useless in virtual environment +use/install2/cleanup/kernel/non-vm: + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/firewire/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/net/bonding/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/net/ppp/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/net/slip/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/net/team/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/net/usb/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/platform/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/tty/serial/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/net/bridge/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/net/openvswitch/) + +# this would need extra handling anyways +use/install2/cleanup/kernel/storage: + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/block/aoe/) + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/block/drbd/) + +# burn it down +use/install2/cleanup/kernel/everything: \ + use/install2/cleanup/kernel/storage \ + use/install2/cleanup/kernel/non-vm \ + use/install2/cleanup/kernel/firmware + @$(call add,INSTALL2_CLEANUP_KDRIVERS,kernel/drivers/ata/pata_*) diff --git a/features.in/install2/install2/image-scripts.d/10-bootloader b/features.in/install2/install2/image-scripts.d/10-bootloader new file mode 100755 index 0000000..c69a0d5 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/10-bootloader @@ -0,0 +1,5 @@ +#!/bin/sh +# NB: grub is currently the default in ALT + +sed -ri "s/^(grub|lilo)$/$GLOBAL_BASE_BOOTLOADER/" \ + /usr/share/install2/installer-steps diff --git a/features.in/install2/install2/image-scripts.d/20-vm-profile b/features.in/install2/install2/image-scripts.d/20-vm-profile new file mode 100755 index 0000000..1f1a816 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/20-vm-profile @@ -0,0 +1,4 @@ +#!/bin/sh + +echo -n "*** vm-profile.scm provided by: " +rpm -qf /var/cache/alterator/vm-profile.scm ||: diff --git a/features.in/install2/install2/image-scripts.d/90-install2-cleanup-bin b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-bin new file mode 100755 index 0000000..f3947c6 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-bin @@ -0,0 +1,8 @@ +#!/bin/sh + +# purge outstanding binaries (up to 1.5M each) +rm -f /sbin/{sash,sln,tc} +rm -f /usr/bin/{openssl,ipv6log*} +rm -f /bin/ipv6calc + +: diff --git a/features.in/install2/install2/image-scripts.d/90-install2-cleanup-bloat b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-bloat new file mode 100755 index 0000000..8ba77d7 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-bloat @@ -0,0 +1,42 @@ +#!/bin/sh +# purge anything unused during installation + +rm -rf /usr/include +rm -rf /usr/share/icons/{hicolor,large,mini} + +# PAM plugins +rm -rf /lib*/security + +rm -rf /usr/share/ca-certificates +rm -rf /usr/lib/qt4/plugins/codecs +rm -rf /usr/lib/qt4/plugins/bearer +rm -rf /usr/lib/qt4/plugins/inputmethods +rm -rf /usr/share/qt4/{doc,mkspecs,phrasebooks} +rm -rf /usr/lib*/qt5/plugins/{bearer,platformthemes} + +rm -rf /usr/share/guile/*/{*.txt,scripts} +rm -rf /usr/share/awk/ + +# and no systemd either +[ -L /sbin/init ] || rm -rf /lib/systemd/system + +# save VNC install if present +MORE= +[ -x /usr/bin/x11vnc ] || MORE="libGL libEGL libgbm libwayland\\* xterm" + +### could it be handled with any grace? +rpmquery -a common-licenses \ + cpp\* gcc\* perl-base file ipv6calc \ + bind-utils libbind \ + libmpfr\* libmpc\* \ + libsoup\* \ + $MORE glxinfo xdriinfo \ + xdg-utils \ + mkfontscale mkfontdir \ + make make-initrd \ +| xargs -r rpmi -e --nodeps -- + +rpmquery -a libisl\* libcloog-isl\* \ +| xargs -r rpmi -e -- + +: diff --git a/features.in/install2/install2/image-scripts.d/90-install2-cleanup-docs b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-docs new file mode 100755 index 0000000..7476d47 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-docs @@ -0,0 +1,5 @@ +#!/bin/sh +# remove all docs + +rpmquery -ad |grep ^/ |xargs -r rm -f -- +rm -rf /usr/share/{doc,man,info,license,gfxboot} diff --git a/features.in/install2/install2/image-scripts.d/90-install2-cleanup-drivers b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-drivers new file mode 100755 index 0000000..a492850 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-drivers @@ -0,0 +1,120 @@ +#!/bin/sh +# drop extra drivers et al, purge kernel image(s) + +# xorg-dri-* +if [ "$GLOBAL_INSTALL2_CLEANUP_DRI" = 'yes' ]; then + rm -r /usr/lib*/X11/modules/dri +fi + +# no movies during installation so far +rm -rf /usr/lib*/vdpau/ /usr/lib*/libXv* + +# evms modules; see http://evms.sourceforge.net/user_guide/ +rm -f /lib*/evms/*/{bbr,csm,drivelink,ogfs,replace,snapshot}* + +# unneeded kernel modules +### some of these removals belong to a purge grade script +### TODO: mostly scsi-less and net-less cleanup for antique + +## dynamic part +if [ -n "$GLOBAL_INSTALL2_CLEANUP_KDRIVERS" ]; then + for i in $GLOBAL_INSTALL2_CLEANUP_KDRIVERS; do + rm -rf /lib/modules/*/"$i" + done +fi + +## static part +rm -rf /lib/modules/*/kernel/arch +rm -rf /lib/modules/*/kernel/drivers/atm +rm -rf /lib/modules/*/kernel/drivers/bluetooth +rm -rf /lib/modules/*/kernel/drivers/char/{ipmi,hw_random,mwave,tpm} +rm -rf /lib/modules/*/kernel/drivers/char/watchdog +rm -rf /lib/modules/*/kernel/drivers/cpufreq +rm -rf /lib/modules/*/kernel/drivers/edac +rm -rf /lib/modules/*/kernel/drivers/gpio +# NB: leave hwmon.ko +rm -rf /lib/modules/*/kernel/drivers/hwmon/[^h]* +rm -rf /lib/modules/*/kernel/drivers/infiniband ### +rm -rf /lib/modules/*/kernel/drivers/input/{gameport,joy*} +rm -rf /lib/modules/*/kernel/drivers/isdn +rm -rf /lib/modules/*/kernel/drivers/leds +# amdgpu require cec and rc +#rm -rf /lib/modules/*/kernel/drivers/media/[^cec]* +rm -rf /lib/modules/*/kernel/drivers/mtd* +rm -rf /lib/modules/*/kernel/drivers/net/can +rm -rf /lib/modules/*/kernel/drivers/net/hamradio +rm -rf /lib/modules/*/kernel/drivers/net/irda +rm -rf /lib/modules/*/kernel/drivers/net/tokenring +rm -rf /lib/modules/*/kernel/drivers/net/wimax +rm -rf /lib/modules/*/kernel/drivers/net/wireless +rm -rf /lib/modules/*/kernel/drivers/net/wan +rm -rf /lib/modules/*/kernel/drivers/regulator +rm -rf /lib/modules/*/kernel/drivers/staging +rm -rf /lib/modules/*/kernel/drivers/spi +rm -rf /lib/modules/*/kernel/drivers/target +rm -rf /lib/modules/*/kernel/drivers/telephony +rm -rf /lib/modules/*/kernel/drivers/tty/[^s][^e]* +rm -rf /lib/modules/*/kernel/drivers/usb/{atm,c67*,image,misc,mon,otg,serial,wusbcore} +rm -rf /lib/modules/*/kernel/drivers/usb/storage/ums* +rm -rf /lib/modules/*/kernel/drivers/uwb +rm -rf /lib/modules/*/kernel/drivers/w1 +rm -rf /lib/modules/*/kernel/drivers/watchdog +rm -rf /lib/modules/*/kernel/fs/9p +rm -rf /lib/modules/*/kernel/fs/adfs +rm -rf /lib/modules/*/kernel/fs/affs +rm -rf /lib/modules/*/kernel/fs/afs +rm -rf /lib/modules/*/kernel/fs/autofs +rm -rf /lib/modules/*/kernel/fs/autofs4 +rm -rf /lib/modules/*/kernel/fs/befs +rm -rf /lib/modules/*/kernel/fs/bfs +rm -rf /lib/modules/*/kernel/fs/ceph +rm -rf /lib/modules/*/kernel/fs/cifs +rm -rf /lib/modules/*/kernel/fs/coda +rm -rf /lib/modules/*/kernel/fs/configfs +rm -rf /lib/modules/*/kernel/fs/cramfs +rm -rf /lib/modules/*/kernel/fs/dlm +rm -rf /lib/modules/*/kernel/fs/efs +rm -rf /lib/modules/*/kernel/fs/exofs +rm -rf /lib/modules/*/kernel/fs/freevxfs +rm -rf /lib/modules/*/kernel/fs/fscache +rm -rf /lib/modules/*/kernel/fs/hfs +rm -rf /lib/modules/*/kernel/fs/hfsplus +rm -rf /lib/modules/*/kernel/fs/hpfs +rm -rf /lib/modules/*/kernel/fs/jffs +rm -rf /lib/modules/*/kernel/fs/jffs2 +rm -rf /lib/modules/*/kernel/fs/lockd +rm -rf /lib/modules/*/kernel/fs/logfs +rm -rf /lib/modules/*/kernel/fs/minix +rm -rf /lib/modules/*/kernel/fs/ncpfs +rm -rf /lib/modules/*/kernel/fs/nilfs2 +rm -rf /lib/modules/*/kernel/fs/ocfs2 +rm -rf /lib/modules/*/kernel/fs/omfs +rm -rf /lib/modules/*/kernel/fs/qnx4 +rm -rf /lib/modules/*/kernel/fs/romfs +rm -rf /lib/modules/*/kernel/fs/smbfs +rm -rf /lib/modules/*/kernel/fs/sysv +rm -rf /lib/modules/*/kernel/fs/ubifs +rm -rf /lib/modules/*/kernel/fs/udf +rm -rf /lib/modules/*/kernel/fs/ufs +rm -rf /lib/modules/*/kernel/net/*/netfilter +rm -rf /lib/modules/*/kernel/net/9p +rm -rf /lib/modules/*/kernel/net/appletalk +rm -rf /lib/modules/*/kernel/net/atm +rm -rf /lib/modules/*/kernel/net/ax25 +rm -rf /lib/modules/*/kernel/net/can +rm -rf /lib/modules/*/kernel/net/ceph +rm -rf /lib/modules/*/kernel/net/bluetooth +rm -rf /lib/modules/*/kernel/net/dccp +rm -rf /lib/modules/*/kernel/net/decnet +rm -rf /lib/modules/*/kernel/net/econet +rm -rf /lib/modules/*/kernel/net/ipx +rm -rf /lib/modules/*/kernel/net/irda +rm -rf /lib/modules/*/kernel/net/netfilter +rm -rf /lib/modules/*/kernel/net/netrom +rm -rf /lib/modules/*/kernel/net/rds +rm -rf /lib/modules/*/kernel/net/rose +rm -rf /lib/modules/*/kernel/net/sctp +rm -rf /lib/modules/*/kernel/net/tipc +rm -rf /lib/modules/*/kernel/net/{wimax} +rm -rf /lib/modules/*/kernel/net/x25 +rm -rf /lib/modules/*/kernel/sound diff --git a/features.in/install2/install2/image-scripts.d/90-install2-cleanup-l10n b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-l10n new file mode 100755 index 0000000..5ca4704 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/90-install2-cleanup-l10n @@ -0,0 +1,35 @@ +#!/bin/sh +# drop unused l10n/i18n data + +# preparations +rpm -e --nodeps glib2-locales + +# the fell swoop +find /usr/share/locale/ -type f \! -name 'alterator*' -delete +rm -rf /usr/share/zoneinfo/{posix,right}/ + +# charset conversion tables +### NB: BIG5* and friends should be handled consistently +rm -f /usr/lib*/gconv/IBM* +rm -f /usr/lib*/gconv/BIG5* +rm -f /usr/lib*/gconv/EBCDIC* + +# en_* variations +rm -rf /usr/{lib,share{,/X11}}/locale/en_[^U]* + +# mods +rm -rf /usr/{lib,share{,/X11}}/locale/*@* + +# non-utf8 locales +find /usr/lib/locale -mindepth 1 -maxdepth 1 -type d \! -name '*.utf8' -print0 | + xargs -r0 rm -rf -- + +# dangling symlinks +find /usr/lib/locale \! -readable -delete + +find /usr/share/qt5/translations/ -type f | \ + grep -v -e '/qtbase_[[:alpha:]][[:alpha:]]*\.qm$' \ + -e '/alterator_browser_qt_[[:alpha:]][[:alpha:]]*\.qm$' | \ +while read f; do + rm -f "$f" +done diff --git a/features.in/install2/install2/image-scripts.d/91-install2-cleanup b/features.in/install2/install2/image-scripts.d/91-install2-cleanup new file mode 100755 index 0000000..6337c84 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/91-install2-cleanup @@ -0,0 +1,8 @@ +#!/bin/sh +# this relates to install2 feature's cleanup script and executes later + +[ -n "$GLOBAL_INSTALL2_CLEANUP_PACKAGES" ] || exit 0 + +rpmquery -a $GLOBAL_INSTALL2_CLEANUP_PACKAGES | + xargs -r rpmi -e --nodeps -- +: diff --git a/features.in/install2/install2/image-scripts.d/98-system b/features.in/install2/install2/image-scripts.d/98-system new file mode 100755 index 0000000..57b10dc --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/98-system @@ -0,0 +1,4 @@ +#!/bin/sh + +# setup stage2 as init +mv -f /usr/sbin/install2-init /sbin/init diff --git a/features.in/install2/install2/image-scripts.d/99-cleanupdb b/features.in/install2/install2/image-scripts.d/99-cleanupdb new file mode 100755 index 0000000..c2ca411 --- /dev/null +++ b/features.in/install2/install2/image-scripts.d/99-cleanupdb @@ -0,0 +1,9 @@ +#!/bin/sh +# dump what's here by this point +echo "** install2 packages before rpmdb purge:" +rpmquery -a --qf='%{NAME} %{VERSION}-%{RELEASE}\n' + +# remove rpm, apt databases and cache +find /var/lib/rpm /var/lib/apt /var/cache/apt -type f -delete + +: diff --git a/features.in/install2/install2/stage2cfg.mk b/features.in/install2/install2/stage2cfg.mk new file mode 100644 index 0000000..1ec3bdd --- /dev/null +++ b/features.in/install2/install2/stage2cfg.mk @@ -0,0 +1,18 @@ +# stage2 mod: build install2 subprofile (installer "live" part) + +ifndef INSTALLER +$(error install2 feature enabled but INSTALLER undefined) +endif + +IMAGE_PACKAGES = $(INSTALL2_PACKAGES) \ + udev e2fsprogs glibc-nss + +MKI_PACK_RESULTS = squash:altinst + +# also removed in a cleanup hook but to spare a few cycles... +HSH_EXCLUDE_DOCS = 1 + +debug:: + @echo "** install2: IMAGE_PACKAGES: $(IMAGE_PACKAGES)" + @echo "** install2: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)" + @echo "** install2: CLEANUP_PACKAGES: $(CLEANUP_PACKAGES)" diff --git a/features.in/isohybrid/README b/features.in/isohybrid/README new file mode 100644 index 0000000..0d9cf91 --- /dev/null +++ b/features.in/isohybrid/README @@ -0,0 +1,12 @@ +Эта фича обеспечивает формирование ISO-образа с добавлением липовой +таблицы разделов с целью обеспечения возможности его загрузки +как с CD/DVD, так и с USB-флэшки. + +Можно указать в цепочке зависимостей дистрибутива явно с тем, +чтобы гарантировать гибридный вид образа, либо запросить включение +этой фичи при сборке конфигурации произвольного дистрибутива +(ISOHYBRID=1, см. features.in/pack/config.mk). + +Обратите внимание: в propagator до 20101130-alt15 поддержка +автоматической загрузки с флэш-носителя, содержащего ISO-образ, +отсутствует, что компенсируется специальной обработкой в gfxboot. diff --git a/features.in/isohybrid/config.mk b/features.in/isohybrid/config.mk new file mode 100644 index 0000000..b33da54 --- /dev/null +++ b/features.in/isohybrid/config.mk @@ -0,0 +1,4 @@ +use/isohybrid: + @$(call add_feature) + @$(call try,ISOHYBRID,1) + @$(call set,MKI_VER_MINIMAL,0.2.5) diff --git a/features.in/kernel/README b/features.in/kernel/README new file mode 100644 index 0000000..1f96dcc --- /dev/null +++ b/features.in/kernel/README @@ -0,0 +1,7 @@ +Эта фича привносит код, имеющий смысл при добавлении в образ ядра, +и задаёт начальный вариант такового. + +Также занимается складированием наборов имён пакетов kernel-modules-* +с тем, чтобы избавить релиз-менеджеров от необходимости учитывать +полные списки и точные имена дополнительных модулей для поддержки, +скажем, Ethernet. diff --git a/features.in/kernel/config.mk b/features.in/kernel/config.mk new file mode 100644 index 0000000..e486f35 --- /dev/null +++ b/features.in/kernel/config.mk @@ -0,0 +1,90 @@ +# choose std kernel flavour for max RAM size support +ifeq (i586,$(ARCH)) +BIGRAM := std-pae +endif + +use/kernel: + @$(call add_feature) +ifeq (,$(filter-out e2k%,$(ARCH))) + @$(call try,KFLAVOURS,elbrus-def) +else +ifeq (,$(filter-out riscv64,$(ARCH))) + @$(call try,KFLAVOURS,un-def) +else + @$(call try,KFLAVOURS,std-def) +endif +endif + @$(call xport,KFLAVOURS) + +use/kernel/latest: use/kernel; @: +ifeq (,$(filter-out aarch64 armh i586 ppc64le x86_64,$(ARCH))) + @$(call set,KFLAVOURS,un-def) +endif + +# r8168 is a kludge, never install it by default +use/kernel/net: + @$(call add,THE_KMODULES,e1000e) + @$(call add,THE_KMODULES,r8125) + @$(call add,MAIN_KMODULES,r8168 rtl8168) + +use/kernel/wireless: use/firmware/wireless + @$(call add,THE_KMODULES,bcmwl staging) + @$(call add,THE_KMODULES,rtl8188fu rtl8192eu rtl8723de rtl8812au) + @$(call add,THE_KMODULES,rtl8821ce rtl8821cu rtl88x2bu rtl8723bu) + @$(call add,THE_KMODULES,rtw89) + +use/kernel/laptop: use/firmware/laptop; @: + +use/kernel/desktop: + @$(call add,THE_KMODULES,v4l) + +use/kernel/drm: use/drm; @: + +use/kernel/server: + @$(call add,THE_KMODULES,ipset kvm) + +use/kernel/disable-usb-autosuspend: + @$(call add,BASE_BOOTARGS,usbcore.autosuspend=-1) + @$(call add,STAGE2_BOOTARGS,usbcore.autosuspend=-1) + @$(call add,SYSTEM_PACKAGES,disable-usb-autosuspend) + +# for vm targets +use/kernel/initrd-setup: use/kernel + @$(call try,VM_FSTYPE,ext4) + @$(call add,VM_INITRDMODULES,$$(VM_FSTYPE)) + @$(call add,VM_INITRDMODULES,ahci.ko ahci_platform.ko sd_mod.ko) + @$(call add,VM_INITRDMODULES,usbhid.ko usbkbd.ko) + @$(call add,VM_INITRDMODULES,evdev.ko) + @$(call add,VM_INITRDMODULES,drivers/pci) + @$(call add,VM_INITRDMODULES,drivers/mmc drivers/usb/host) + @$(call add,VM_INITRDMODULES,drivers/usb/storage drivers/nvmem drivers/nvme) + @$(call add,VM_INITRDMODULES,drivers/virtio) + @$(call add,VM_INITRDMODULES,drm/virtio) + @$(call add,VM_INITRDMODULES,virtio_scsi.ko virtio_blk.ko virtio-rng virtio_net.ko virtio-gpu.ko) + @$(call add,VM_INITRDMODULES,virtio-mmio.ko virtio_pci.ko virtio_console.ko virtio_input.ko) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,VM_INITRDMODULES,ata_piix.ko) +endif +ifeq (,$(filter-out i586 x86_64 aarch64 armh e2k% ppc64le mipsel,$(ARCH))) + @$(call add,VM_INITRDFEATURES,usb) +endif +ifneq (,$(filter-out e2k% riscv64 mipsel,$(ARCH))) + @$(call add,VM_INITRDFEATURES,qemu) +endif +ifeq (,$(filter-out ppc64le,$(ARCH))) + @$(call add,VM_INITRDMODULES,ipr.ko ibmvscsi.ko) +endif +ifeq (,$(filter-out aarch64 armh,$(ARCH))) + @$(call add,VM_INITRDMODULES,drivers/dma drivers/reset) + @$(call add,VM_INITRDMODULES,drivers/usb/dwc2 drivers/usb/dwc3) + @$(call add,VM_INITRDMODULES,drivers/phy drivers/usb/phy) + @$(call add,VM_INITRDMODULES,drivers/bus) + @$(call add,VM_INITRDMODULES,drivers/soc) + @$(call add,VM_INITRDMODULES,drivers/pwm drivers/regulator) + @$(call add,VM_INITRDMODULES,drivers/i2c) + @$(call add,VM_INITRDMODULES,drivers/mfd) + @$(call add,VM_INITRDMODULES,drivers/clk) +endif + @$(call xport,VM_INITRDMODULES) + @$(call xport,VM_INITRDFEATURES) + @$(call xport,VM_FSTYPE) diff --git a/features.in/kernel/lib/10-kernel.mk b/features.in/kernel/lib/10-kernel.mk new file mode 100644 index 0000000..d601796 --- /dev/null +++ b/features.in/kernel/lib/10-kernel.mk @@ -0,0 +1,6 @@ +# step 4: build the distribution image +# take care for kernel bits + +DOT_BASE += $(call kpackages, \ + $(KFLAVOURS), \ + $(sort $(THE_KMODULES) $(BASE_KMODULES) $(BASE_KMODULES_REGEXP))) diff --git a/features.in/kernel/stage1/scripts.d/50-disable-nvidia b/features.in/kernel/stage1/scripts.d/50-disable-nvidia new file mode 100755 index 0000000..f485525 --- /dev/null +++ b/features.in/kernel/stage1/scripts.d/50-disable-nvidia @@ -0,0 +1,3 @@ +#!/bin/sh +# exclude nvidia to prevent load before kernel module switch +echo 'BLACKLIST_MODULES += nvidia nvidia-drm nvidia-modeset' >> /etc/initrd.mk diff --git a/features.in/l10n/README b/features.in/l10n/README new file mode 100644 index 0000000..7f5a220 --- /dev/null +++ b/features.in/l10n/README @@ -0,0 +1 @@ +Эта фича занимается поддержкой локализации (l10n). diff --git a/features.in/l10n/config.mk b/features.in/l10n/config.mk new file mode 100644 index 0000000..a198f46 --- /dev/null +++ b/features.in/l10n/config.mk @@ -0,0 +1,37 @@ +# install locales +# setup locale +# setup console keyboard (kbd) +# setup X11 keyboard (xkb) +# install/setup additional packages + +# TODO: KEYMAP for default keymap? +use/l10n: + @$(call add_feature) + @$(call add,THE_LISTS,$(call tags,base l10n)) + @$(call add,LOCALES,en_US) + @$(call add,XKB_KEYMAPS,us) + @$(call try,LOCALE,en_US) + @$(call xport,LOCALE) + @$(call xport,LOCALES) + @$(call xport,XKB_KEYMAPS) + @$(call xport,XKB_VARIANTS) + @$(call xport,XKB_SWITCH) + @$(call xport,XKB_LED) + +# see also alterator-sysconfig backend +use/l10n/xkb/switch/ctrl_shift: use/l10n + @$(call set,XKB_SWITCH,grp:ctrl_shift_toggle) + +use/l10n/xkb/led/scroll: use/l10n + @$(call set,XKB_LED,grp_led:scroll) + +# FIXME: derive from locale by default if possible +use/l10n/ru_RU: use/l10n/xkb/switch/ctrl_shift use/l10n/xkb/led/scroll + @$(call add,LOCALES,ru_RU) + @$(call set,LOCALE,ru_RU) + @$(call add,XKB_KEYMAPS,ru) + @$(call set,KEYTABLE,ruwin_ct_sh-UTF-8) + +# NB: BOOT_LANG is used within mkimage internally +use/l10n/default/ru_RU: use/l10n/ru_RU + @$(call set,GLOBAL_BOOT_LANG,ru_RU) diff --git a/features.in/l10n/rootfs/image-scripts.d/50-l10n-kbd b/features.in/l10n/rootfs/image-scripts.d/50-l10n-kbd new file mode 100755 index 0000000..36b6619 --- /dev/null +++ b/features.in/l10n/rootfs/image-scripts.d/50-l10n-kbd @@ -0,0 +1,17 @@ +#!/bin/sh +# partial port of livecd-setlocale (kbd bits) + +CONFIG=/etc/sysconfig/keyboard + +# Requires: console-scripts +if [ -s "$CONFIG" ]; then + echo "** l10n-kbd: expected $CONFIG to be an empty file" >&2 + exit 0 +fi + +if [ -z "$GLOBAL_KEYTABLE" ]; then + echo "** l10n-kbd: empty GLOBAL_KEYTABLE" >&2 + exit 0 +fi + +echo "KEYTABLE=$GLOBAL_KEYTABLE" > "$CONFIG" diff --git a/features.in/l10n/rootfs/image-scripts.d/50-l10n-xkb b/features.in/l10n/rootfs/image-scripts.d/50-l10n-xkb new file mode 100755 index 0000000..18b8733 --- /dev/null +++ b/features.in/l10n/rootfs/image-scripts.d/50-l10n-xkb @@ -0,0 +1,19 @@ +#!/bin/sh +# partial port of livecd-setlocale (xkb bits) + +PREFIX=/etc/X11/xinit + +# Requires: xinitrc +if [ ! -d "$PREFIX" ]; then + echo "** l10n-xkb: expected $PREFIX to exist (xinitrc)" >&2 + exit 0 +fi + +if [ -z "$GLOBAL_XKB_VARIANTS" -o -z "$GLOBAL_XKB_KEYMAPS" ]; then + echo "** l10n-xkb: empty GLOBAL_XKB_VARIANTS/GLOBAL_XKB_KEYMAPS" >&2 + exit 0 +fi + +echo "-option $GLOBAL_XKB_SWITCH${GLOBAL_XKB_LED:+,$GLOBAL_XKB_LED} \ +${GLOBAL_XKB_VARIANTS:+-variant $GLOBAL_XKB_VARIANTS} \ +-layout $GLOBAL_XKB_KEYMAPS" > "$PREFIX"/Xkbmap diff --git a/features.in/l10n/rootfs/lib/50-l10n.mk b/features.in/l10n/rootfs/lib/50-l10n.mk new file mode 100644 index 0000000..77d67d6 --- /dev/null +++ b/features.in/l10n/rootfs/lib/50-l10n.mk @@ -0,0 +1,15 @@ +# supplement live with keyboard layout setup + +XKB_KEYMAPS := $(subst $(SPACE),$(COMMA),$(XKB_KEYMAPS)) + +# handle the layouts with a specific variant in the wild +XKB_VARIANTS := $(subst ru,winkeys, \ + $(subst ua,winkeys, \ + $(subst be,winkeys, \ + $(subst us,,$(XKB_KEYMAPS))))) + +debug:: + @echo "** live: LOCALES: $(LOCALES)" + @echo "** live: LOCALE: $(LOCALE)" + @echo "** live: XKB_KEYMAPS: $(XKB_KEYMAPS)" + @echo "** live: XKB_VARIANTS: $(XKB_VARIANTS)" diff --git a/features.in/l10n/stage1/modules.d/50-l10n b/features.in/l10n/stage1/modules.d/50-l10n new file mode 100644 index 0000000..7889b8c --- /dev/null +++ b/features.in/l10n/stage1/modules.d/50-l10n @@ -0,0 +1,6 @@ +# l10n +nls_base.ko +nls_cp866.ko +nls_koi8-r.ko +nls_utf8.ko +# diff --git a/features.in/ldm/README b/features.in/ldm/README new file mode 100644 index 0000000..c24bb60 --- /dev/null +++ b/features.in/ldm/README @@ -0,0 +1,9 @@ +Simple hook to run Linux Driver Management tools to configure hybrid graphics +(aka Optimus/PRIME) for different DM's. + +Currently supported: ++ LightDM ++ GDM ++ SDDM + +See https://github.com/solus-project/linux-driver-management diff --git a/features.in/ldm/config.mk b/features.in/ldm/config.mk new file mode 100644 index 0000000..a2ee47c --- /dev/null +++ b/features.in/ldm/config.mk @@ -0,0 +1,23 @@ ++ldm: use/ldm/session; @: + +# common +use/ldm: sub/rootfs use/services + @$(call add_feature) + @$(call add,COMMON_PACKAGES,ldm-tools) + +# configure X11 session +use/ldm/session: use/ldm + @$(call add,COMMON_PACKAGES,ldm-session-init) + @$(call add,DEFAULT_SERVICES_ENABLE,ldm) + +# configure lightdm session +use/ldm/session/lightdm: use/ldm/session + @$(call add,COMMON_PACKAGES,ldm-session-init-lightdm) + +# configure sddm session +use/ldm/session/sddm: use/ldm/session + @$(call add,COMMON_PACKAGES,ldm-session-init-sddm) + +# configure gdm session +use/ldm/session/gdm: use/ldm/session + @$(call add,COMMON_PACKAGES,ldm-session-init-gdm) diff --git a/features.in/ldm/rootfs/image-scripts.d/50-ldm b/features.in/ldm/rootfs/image-scripts.d/50-ldm new file mode 100755 index 0000000..891bba6 --- /dev/null +++ b/features.in/ldm/rootfs/image-scripts.d/50-ldm @@ -0,0 +1,17 @@ +#!/bin/sh -efu +# initiate LDM hook on boot + +cat << EOF > /etc/systemd/system/ldm.service +[Unit] +Description=Runs LDM configuration hooks + +[Service] +ExecStart=/usr/bin/linux-driver-management configure gpu +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=default.target +EOF + +systemctl enable ldm.service diff --git a/features.in/live/README b/features.in/live/README new file mode 100644 index 0000000..72975f5 --- /dev/null +++ b/features.in/live/README @@ -0,0 +1,21 @@ +Эта фича дополняет базовый "живой" образ второй стадии +специфическими для полноценного LiveCD настройками +и скриптовыми хуками, а также создаёт файл index.html +с домашней страницей (редиректором) в корне образа. + +Графический вариант безусловно требует x11-autologin, +при появлении необходимости обойтись без него можно +временно продублировать содержимое цели и сообщить +о таком случае. + +Дополнительно обрабатываемые переменные: + +* LIVE_REPO +** позволяет выбрать и включить зеркало репозитория +** значение: http/alt (по умолчанию) либо протокол/зеркало +** см. тж. /etc/apt/sources.list.d/, проверьте наличие нужного! + +* LIVE_CLEANUP_KDRIVERS +** перечисляет префиксы каталогов драйвров ядра для удаления +** значение: пусто (по умолчанию) или список через пробел +** см. config.mk diff --git a/features.in/live/config.mk b/features.in/live/config.mk new file mode 100644 index 0000000..abe9fdc --- /dev/null +++ b/features.in/live/config.mk @@ -0,0 +1,116 @@ ++live: use/live/desktop; @: + +# service defaults +_ON = alteratord cpufreq-simple \ + livecd-evms livecd-fstab livecd-hostname \ + livecd-setauth livecd-setlocale livecd-timezone livecd-net-eth livecd-install-wmaker \ + random rpcbind plymouth avahi-daemon \ + +_OFF = anacron blk-availability bridge clamd dhcpd dmeventd dnsmasq \ + mdadm netfs o2cb ocfs2 openvpn postfix rawdevices slapd smartd sshd \ + sysstat update_wms xinetd + +# copy stage2 as live +# NB: starts to preconfigure but doesn't use/cleanup yet +use/live: use/stage2 sub/rootfs@live sub/stage2@live \ + use/services/lvm2-disable use/grub/live.cfg + @$(call add_feature) + @$(call add,CLEANUP_BASE_PACKAGES,'installer*') + @$(call add,DEFAULT_SERVICES_ENABLE,$(_ON)) + @$(call add,DEFAULT_SERVICES_DISABLE,$(_OFF)) + @$(call add,CONTROL,rpcbind:local) + @$(call xport,LIVE_CLEANUP_KDRIVERS) + +use/live/.base: use/live use/syslinux/ui/menu + @$(call add,LIVE_LISTS,$(call tags,base live)) + +use/live/no-cleanup: \ + use/cleanup/live-no-cleanupdb \ + use/cleanup/live-no-cleanup-docs; @: + +use/live/base: use/live/.base use/net use/deflogin/live + @$(call add,LIVE_LISTS,$(call tags,base network)) + +use/live/rw: use/live use/syslinux/live_rw.cfg use/grub/live_rw.cfg; @: + +# graphical target (not enforcing xorg drivers or blobs) +use/live/x11: use/live/base use/deflogin/desktop use/x11-autologin use/sound \ + use/fonts/otf/adobe use/fonts/otf/mozilla +efi + @$(call add,LIVE_LISTS,$(call tags,desktop && (live || network))) + @$(call add,LIVE_LISTS,$(call tags,base l10n)) + @$(call add,LIVE_PACKAGES,pciutils) + +# this target specifically pulls free xorg drivers in (and a few more bits); +# a browser is requested too, the recommended one can be overridden downstream +use/live/desktop: use/live/x11 use/x11/xorg use/x11/wacom \ + use/l10n use/browser/firefox/live use/xdg-user-dirs/deep \ + use/syslinux/localboot.cfg use/grub/localboot_bios.cfg +vmguest; @: + +# preconfigure apt for both live and installed-from-live systems +use/live/repo: use/live + @$(call try,LIVE_REPO,http/yandex) + @$(call xport,LIVE_REPO) + +# preconfigure apt in runtime (less reliable) +use/live/repo/online: + @$(call add,LIVE_PACKAGES,livecd-online-repo) + +# alterator-based permanent installation +use/live/install: use/metadata use/xdg-user-dirs \ + use/syslinux/localboot.cfg use/grub/localboot_bios.cfg \ + use/bootloader/live use/bootloader/grub + @$(call add,LIVE_PACKAGES,livecd-install) + @$(call add,LIVE_PACKAGES,livecd-installer-features) + +# text-based installation script +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/live/textinstall: use/syslinux/lateboot.cfg + @$(call add,LIVE_PACKAGES,live-install) +else +use/live/textinstall: ; @: +endif + +# a very simplistic one +use/live/.x11: use/live use/x11 use/x11-autologin + @$(call add,LIVE_PACKAGES,xinit) + +# NB: some implementation has to be added if it's not a display manager +use/live/autologin: use/live/.x11 + @$(call add,LIVE_PACKAGES,autologin) + +use/live/nodm: use/live/.x11 + @$(call add,LIVE_PACKAGES,nodm) + +# see also http://www.altlinux.org/Netbook-live/hooks +use/live/hooks: use/live + @$(call add,LIVE_PACKAGES,livecd-run-hooks) + +# a crude hack to make sure Russian is the default in a particular image +use/live/ru: use/live use/l10n/default/ru_RU; @: + +use/live/sound: use/live + @$(call add,LIVE_LISTS,sound/base) + +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) +# prepare bootloader for software suspend (see also install2) +use/live/suspend: use/live + @$(call add,LIVE_PACKAGES,installer-feature-desktop-suspend-stage2) +else +use/live/suspend: use/live; @: +endif + +# deny network/local drive access for security reasons +use/live/privacy: use/services use/memclean use/deflogin \ + use/stage2/ata use/stage2/drm use/stage2/hid \ + use/stage2/mmc use/stage2/net-nfs use/stage2/usb + @$(call add,DEFAULT_SERVICES_ENABLE,livecd-nodisks) + @$(call add,LIVE_PACKAGES,livecd-nodisks) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/net/) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/drivers/net/) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/drivers/ata/) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/drivers/scsi/) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/drivers/block/) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/drivers/cdrom/) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/drivers/firewire/) + @$(call add,LIVE_CLEANUP_KDRIVERS,kernel/drivers/bluetooth/) + @$(call add,USERS,kometa:::) diff --git a/features.in/live/generate.mk b/features.in/live/generate.mk new file mode 100644 index 0000000..5849bd3 --- /dev/null +++ b/features.in/live/generate.mk @@ -0,0 +1,37 @@ +# set up livecd browser redirection page + +ifdef BUILDDIR + +include $(BUILDDIR)/distcfg.mk + +ifndef HOMEPAGE +HOMEPAGE = http://oskometa.ru/ +endif + +ifndef HOMENAME +HOMENAME = ALT +endif + +ifndef HOMEWAIT +HOMEWAIT = 3 +endif + +INDEXHTML := $(BUILDDIR)/stage1/files/index.html + +all: debug + @if [ -s "$(INDEXHTML)" ]; then \ + sed -i \ + -e 's,@homepage@,$(HOMEPAGE),' \ + -e 's,@homename@,$(HOMENAME),' \ + -e 's,@homewait@,$(HOMEWAIT),' \ + $(INDEXHTML); \ + fi + +debug: + @if [ -n "$(DEBUG)" ]; then \ + echo "** HOMEPAGE: $(HOMEPAGE)"; \ + echo "** HOMENAME: $(HOMENAME)"; \ + echo "** HOMEWAIT: $(HOMEWAIT)"; \ + fi + +endif diff --git a/features.in/live/live/image-scripts.d/10-live-hooks b/features.in/live/live/image-scripts.d/10-live-hooks new file mode 100755 index 0000000..072eb39 --- /dev/null +++ b/features.in/live/live/image-scripts.d/10-live-hooks @@ -0,0 +1,5 @@ +#!/bin/sh +# if we're configured for running live hooks, +# there should be a place for them either + +chkconfig livecd-run-hooks on >&/dev/null && mkdir /live.hooks ||: diff --git a/features.in/live/live/image-scripts.d/20-locale b/features.in/live/live/image-scripts.d/20-locale new file mode 100755 index 0000000..2240c77 --- /dev/null +++ b/features.in/live/live/image-scripts.d/20-locale @@ -0,0 +1,14 @@ +#!/bin/sh -efu +# if no means for locale setup are employed, +# it should still be at least marginally reasonable +# NB: keyboard layout not included! + +if [ -s /etc/sysconfig/i18n ]; then exit 0; fi + +mkdir -p /etc/sysconfig +cat >> /etc/sysconfig/i18n << _EOF_ +# mkimage-profiles live 20-locale hook +SYSFONT=UniCyr_8x16 +LANG=en_US.utf8 +_EOF_ +: diff --git a/features.in/live/live/image-scripts.d/60-apt b/features.in/live/live/image-scripts.d/60-apt new file mode 100755 index 0000000..fb24398 --- /dev/null +++ b/features.in/live/live/image-scripts.d/60-apt @@ -0,0 +1,10 @@ +#!/bin/sh +# unconditionally enable online repository + +[ -n "$GLOBAL_LIVE_REPO" ] || exit 0 + +PROTO="${GLOBAL_LIVE_REPO%/*}" # http, ftp, rsync +MIRROR="${GLOBAL_LIVE_REPO#*/}" # alt, heanet, kiev, yandex, ... + +sed -i "s,^#\(rpm \[.*\] ${PROTO:-http}.*\),\1," \ + "/etc/apt/sources.list.d/${MIRROR:-yandex}.list" ||: diff --git a/features.in/live/live/image-scripts.d/90-live-cleanup-drivers b/features.in/live/live/image-scripts.d/90-live-cleanup-drivers new file mode 100755 index 0000000..916f1b6 --- /dev/null +++ b/features.in/live/live/image-scripts.d/90-live-cleanup-drivers @@ -0,0 +1,7 @@ +#!/bin/sh -e + +if [ -n "$GLOBAL_LIVE_CLEANUP_KDRIVERS" ]; then + for i in $GLOBAL_LIVE_CLEANUP_KDRIVERS; do + rm -rf /lib/modules/*/"$i" + done +fi diff --git a/features.in/live/live/image-scripts.d/99-urw b/features.in/live/live/image-scripts.d/99-urw new file mode 100755 index 0000000..bcea45c --- /dev/null +++ b/features.in/live/live/image-scripts.d/99-urw @@ -0,0 +1,4 @@ +#!/bin/sh +# URW fonts are responsible for sub-par website text rendering usually... + +rm -f /etc/X11/fontpath.d/type1-urw:pri=40 diff --git a/features.in/live/live/image-scripts.d/99-xfce-theme b/features.in/live/live/image-scripts.d/99-xfce-theme new file mode 100755 index 0000000..3b8fb7e --- /dev/null +++ b/features.in/live/live/image-scripts.d/99-xfce-theme @@ -0,0 +1,7 @@ +#!/bin/sh + +[ -f /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ] || exit 0 + +# fixup the default which broke after p8 +sed -i 's,name="IconThemeName" type="empty",name="IconThemeName" type="string" value="gnome",' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ||: + diff --git a/features.in/live/live/stage2cfg.mk b/features.in/live/live/stage2cfg.mk new file mode 100644 index 0000000..cad9325 --- /dev/null +++ b/features.in/live/live/stage2cfg.mk @@ -0,0 +1,18 @@ +# stage2 mod: livecd + +STAGE2_KMODULES = $(LIVE_KMODULES) $(THE_KMODULES) + +IMAGE_PACKAGES_REGEXP = $(LIVE_PACKAGES_REGEXP) $(THE_PACKAGES_REGEXP) + +IMAGE_PACKAGES = $(COMMON_PACKAGES) $(LIVE_PACKAGES) $(THE_PACKAGES) \ + $(call map,list, \ + $(LIVE_LISTS) $(LIVE_GROUPS) \ + $(THE_LISTS) $(THE_GROUPS) \ + $(COMMON_LISTS)) \ + interactivesystem + +MKI_PACK_RESULTS = squash:live + +debug:: + @echo "** live: IMAGE_PACKAGES: $(IMAGE_PACKAGES)" + @echo "** live: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)" diff --git a/features.in/live/stage1/files/index.html b/features.in/live/stage1/files/index.html new file mode 100644 index 0000000..b529c13 --- /dev/null +++ b/features.in/live/stage1/files/index.html @@ -0,0 +1,10 @@ + + + +Welcome to @homename@! + + +

Welcome to @homename@!

+

You will be redirected to the home page shortly.

+ + diff --git a/features.in/lowmem/README b/features.in/lowmem/README new file mode 100644 index 0000000..5a33582 --- /dev/null +++ b/features.in/lowmem/README @@ -0,0 +1,2 @@ +Эта фича дополняет зачистку "живой" стадии инсталятора +с тем, чтобы уменьшить её размер и требования к памяти. diff --git a/features.in/lowmem/config.mk b/features.in/lowmem/config.mk new file mode 100644 index 0000000..b59199c --- /dev/null +++ b/features.in/lowmem/config.mk @@ -0,0 +1,4 @@ +use/lowmem: use/install2 + @$(call add_feature) +# TODO: http://www.altlinux.org/Branding/slideshow => disable? +# also installer-feature-rm-slideshow diff --git a/features.in/lowmem/install2/image-scripts.d/85-cleanup-lowmem b/features.in/lowmem/install2/image-scripts.d/85-cleanup-lowmem new file mode 100755 index 0000000..0b47248 --- /dev/null +++ b/features.in/lowmem/install2/image-scripts.d/85-cleanup-lowmem @@ -0,0 +1,38 @@ +#!/bin/sh + +# remove unused (or too small) fonts +cd /usr/share/fonts/bitmap/misc/ && + rm -f [admno]* cu[^r]* + +# drop unneeded translation +# FIXME: whitelist is reasonable +cd /usr/share/qt?/translations/ && + rm -f *_ar* *_cs* *_da* *_de* *_es* *_fa* *_fr* \ + *_gl* *_he* *_hu* *_ko* *_pl* \ + *_sk* *_sl* *_sv* + +# ...l10n... +# FIXME: whitelist is reasonable +cd /usr/share/X11/locale && + rm -rf am_ET.UTF-8 armscii-8 el_GR.UTF-8 fi_FI.UTF-8 + +# xkb; don't drop "pc" yet +cd /usr/share/X11/xkb/symbols && + ls \ + | egrep -v 'by|en|kz|pt|ru|ua|us|pc|....*' \ + | xargs rm -rf -- + +# gconv +cd /usr/lib*/gconv && + rm -f EUC* G* I* + +# locales +for dir in /usr/{lib*,share}/locale; do + cd "$dir" && \ + ls \ + | egrep -v '^be|en|kk|pt|ru|uk' \ + | xargs rm -rf --; +done + +### consider cleaning up kbd data (partially?) +: diff --git a/features.in/ltsp/README b/features.in/ltsp/README new file mode 100644 index 0000000..1a163fb --- /dev/null +++ b/features.in/ltsp/README @@ -0,0 +1,5 @@ +Эта фича обеспечивает добавление функций терминального сервера: +- загрузку бездисковых тонких клиентов по сети; +- предоставление им доступа к серверу приложений. + +На данный момент является экспериментальной. diff --git a/features.in/ltsp/config.mk b/features.in/ltsp/config.mk new file mode 100644 index 0000000..c2a07d4 --- /dev/null +++ b/features.in/ltsp/config.mk @@ -0,0 +1,11 @@ ++ltsp: use/ltsp/base; @: + +use/ltsp: use/sound + @$(call add_feature) + @$(call add,INSTALL2_PACKAGES,installer-feature-ltsp-stage2) + @$(call add,MAIN_LISTS,ltsp-client) + @$(call add,BASE_LISTS,ltsp) + +use/ltsp/base: use/ltsp use/firmware + @$(call add,BASE_LISTS,$(call tags,base network)) + @$(call add,BASE_PACKAGES,apt-repo firefox) diff --git a/features.in/luks/README b/features.in/luks/README new file mode 100644 index 0000000..52c2a5f --- /dev/null +++ b/features.in/luks/README @@ -0,0 +1,2 @@ +Эта секретная фича добавляет в инсталяторы поддержку +шифрования файловых систем с помощью LUKS при их создании. diff --git a/features.in/luks/config.mk b/features.in/luks/config.mk new file mode 100644 index 0000000..2f80276 --- /dev/null +++ b/features.in/luks/config.mk @@ -0,0 +1,8 @@ +LUKS_LISTS := $(call tags,security luks) + +use/luks: + @$(call add_feature) + @$(call add,BASE_PACKAGES,make-initrd-luks) + @$(call add,THE_PACKAGES,alterator-luks) + @$(call add,THE_LISTS,$(LUKS_LISTS)) + @$(call add,RESCUE_LISTS,$(LUKS_LISTS)) diff --git a/features.in/luks/install2/image-scripts.d/50-check-luks b/features.in/luks/install2/image-scripts.d/50-check-luks new file mode 100755 index 0000000..a804251 --- /dev/null +++ b/features.in/luks/install2/image-scripts.d/50-check-luks @@ -0,0 +1,9 @@ +#!/bin/sh +# let's check if support is there until installer-steps are dynamic + +CONFIG="/usr/share/install2/installer-steps" + +if ! grep -q '^luks$' "$CONFIG"; then + PKG="$(rpm -qf "$CONFIG")" + echo "** warning: luks step missing in ${PKG:-$CONFIG}" >&2 +fi diff --git a/features.in/lxc-guest/README b/features.in/lxc-guest/README new file mode 100644 index 0000000..05bf733 --- /dev/null +++ b/features.in/lxc-guest/README @@ -0,0 +1 @@ +Adds systemd generators needed to run lxd container. diff --git a/features.in/lxc-guest/config.mk b/features.in/lxc-guest/config.mk new file mode 100644 index 0000000..c719f1d --- /dev/null +++ b/features.in/lxc-guest/config.mk @@ -0,0 +1,2 @@ +use/lxc-guest: + @$(call add_feature) diff --git a/features.in/lxc-guest/image-scripts.d/98-add-lxc-system-generator b/features.in/lxc-guest/image-scripts.d/98-add-lxc-system-generator new file mode 100755 index 0000000..cacbbf4 --- /dev/null +++ b/features.in/lxc-guest/image-scripts.d/98-add-lxc-system-generator @@ -0,0 +1,225 @@ +#!/bin/sh + +# This scripts is borrowed from distrobuilder. +# awk '/content := `/ {match($0, /.*`([^`]*)/, l); print l[1]; a=1; next} /^`$/ {a=0} a {print $0}' < main.go +# Probably, it will need to be updated from time to time. + +[ -h /sbin/init ] || exit 0 + +generators_dir=/etc/systemd/system-generators +mkdir -p "$generators_dir" + +cat > "$generators_dir"/lxc <<'@@@' +#!/bin/sh +# NOTE: systemctl is not available for systemd-generators +set -eu + +## Helper functions +# is_lxc_container succeeds if we're running inside a LXC container +is_lxc_container() { + grep -qa container=lxc /proc/1/environ +} + +# is_lxd_vm succeeds if we're running inside a LXD VM +is_lxd_vm() { + [ -e /dev/virtio-ports/org.linuxcontainers.lxd ] +} + +# is_in_path succeeds if the given file exists in on of the paths +is_in_path() { + # Don't use $PATH as that may not include all relevant paths + for path in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin; do + [ -e "${path}/$1" ] && return 0 + done + + return 1 +} + +## Fix functions +# fix_ro_paths avoids udevd issues with /sys and /proc being writable +fix_ro_paths() { + mkdir -p /run/systemd/system/$1.d + cat <<-EOF > /run/systemd/system/$1.d/zzz-lxc-ropath.conf +[Service] +BindReadOnlyPaths=/sys /proc +EOF +} + +# fix_nm_force_up sets up a unit override to force NetworkManager to start the system connection +fix_nm_force_up() { + # Check if the device exists + [ -e "/sys/class/net/$1" ] || return 0 + + # Check if NetworkManager exists + [ "${nm_exists}" -eq 1 ] || return 0 + + cat <<-EOF > /run/systemd/system/network-connection-activate.service +[Unit] +Description=Activate connection +After=NetworkManager.service NetworkManager-wait-online.service + +[Service] +ExecStart=-/usr/bin/nmcli c up "System $1" +Type=oneshot +RemainAfterExit=true + +[Install] +WantedBy=default.target +EOF + + mkdir -p /run/systemd/system/default.target.wants + ln -sf /run/systemd/system/network-connection-activate.service /run/systemd/system/default.target.wants/network-connection-activate.service +} + +# fix_nm_link_state forces the network interface to a DOWN state ahead of NetworkManager starting up +fix_nm_link_state() { + [ -e "/sys/class/net/$1" ] || return 0 + + ip_path= + if [ -f /sbin/ip ]; then + ip_path=/sbin/ip + elif [ -f /bin/ip ]; then + ip_path=/bin/ip + else + return 0 + fi + + cat <<-EOF > /run/systemd/system/network-device-down.service +[Unit] +Description=Turn off network device +Before=NetworkManager.service + +[Service] +ExecStart=-${ip_path} link set $1 down +Type=oneshot +RemainAfterExit=true + +[Install] +WantedBy=default.target +EOF + + mkdir -p /run/systemd/system/default.target.wants + ln -sf /run/systemd/system/network-device-down.service /run/systemd/system/default.target.wants/network-device-down.service +} + +# fix_systemd_override_unit generates a unit specific override +fix_systemd_override_unit() { + dropin_dir="/run/systemd/${1}.d" + mkdir -p "${dropin_dir}" + echo "[Service]" > "${dropin_dir}/zzz-lxc-service.conf" + [ "${systemd_version}" -ge 247 ] && echo "ProtectProc=default" >> "${dropin_dir}/zzz-lxc-service.conf" + [ "${systemd_version}" -ge 232 ] && echo "ProtectControlGroups=no" >> "${dropin_dir}/zzz-lxc-service.conf" + [ "${systemd_version}" -ge 232 ] && echo "ProtectKernelTunables=no" >> "${dropin_dir}/zzz-lxc-service.conf" + + # Additional settings for privileged containers + if grep -q 4294967295 /proc/self/uid_map; then + echo "ProtectHome=no" >> "${dropin_dir}/zzz-lxc-service.conf" + echo "ProtectSystem=no" >> "${dropin_dir}/zzz-lxc-service.conf" + echo "PrivateDevices=no" >> "${dropin_dir}/zzz-lxc-service.conf" + echo "PrivateTmp=no" >> "${dropin_dir}/zzz-lxc-service.conf" + [ "${systemd_version}" -ge 244 ] && echo "ProtectKernelLogs=no" >> "${dropin_dir}/zzz-lxc-service.conf" + [ "${systemd_version}" -ge 232 ] && echo "ProtectKernelModules=no" >> "${dropin_dir}/zzz-lxc-service.conf" + echo "ReadWritePaths=" >> "${dropin_dir}/zzz-lxc-service.conf" + fi +} + +# fix_systemd_mask masks the systemd unit +fix_systemd_mask() { + ln -sf /dev/null /run/systemd/system/$1 +} + +# fix_systemd_udev_trigger overrides the systemd-udev-trigger.service to match the latest version +# of the file which uses "ExecStart=-" instead of "ExecStart=". +fix_systemd_udev_trigger() { + mkdir -p /run/systemd/system/systemd-udev-trigger.service.d + cat <<-EOF > /run/systemd/system/systemd-udev-trigger.service.d/zzz-lxc-override.conf +[Service] +ExecStart= +ExecStart=-udevadm trigger --type=subsystems --action=add +ExecStart=-udevadm trigger --type=devices --action=add +EOF +} + +# fix_systemd_sysctl overrides the systemd-sysctl.service to use "ExecStart=-" instead of "ExecStart=". +fix_systemd_sysctl() { + mkdir -p /run/systemd/system/systemd-sysctl.service.d + cat <<-EOF > /run/systemd/system/systemd-sysctl.service.d/zzz-lxc-override.conf +[Service] +ExecStart= +ExecStart=-/usr/lib/systemd/systemd-sysctl +EOF +} + +## Main logic +# Exit immediately if not a LXC/LXD container or VM +if ! is_lxd_vm && ! is_lxc_container; then + exit +fi + +# Check for NetworkManager and cloud-init +nm_exists=0 +cloudinit_exists=0 + +is_in_path NetworkManager && nm_exists=1 +is_in_path cloud-init && cloudinit_exists=1 + +# Determine systemd version +for path in /usr/lib/systemd/systemd /lib/systemd/systemd; do + [ -x "${path}" ] || continue + + systemd_version="$("${path}" --version | head -n1 | cut -d' ' -f2)" + break +done + +# Determine distro name and release +ID="" +VERSION_ID="" +if [ -e /etc/os-release ]; then + . /etc/os-release +fi + +# Apply systemd overrides +if [ "${systemd_version}" -ge 244 ]; then + fix_systemd_override_unit system/service +else + # Setup per-unit overrides + find /lib/systemd /etc/systemd /run/systemd /usr/lib/systemd -name "*.service" -type f | sed 's#/\(lib\|etc\|run\|usr/lib\)/systemd/##g'| while read -r service_file; do + fix_systemd_override_unit "${service_file}" + done +fi + +# Workarounds for all containers +if is_lxc_container; then + fix_systemd_udev_trigger + fix_systemd_sysctl + fix_systemd_mask dev-hugepages.mount + fix_systemd_mask systemd-journald-audit.socket + fix_systemd_mask run-ribchester-general.mount + fix_systemd_mask systemd-modules-load.service + fix_systemd_mask systemd-pstore.service + fix_systemd_mask ua-messaging.service + if [ ! -e /dev/tty1 ]; then + fix_systemd_mask vconsole-setup-kludge@tty1.service + fi + if ! grep -q 4294967295 /proc/self/uid_map && { [ "${ID}" = "altlinux" ] || [ "${ID}" = "arch" ] || [ "${ID}" = "fedora" ]; }; then + fix_ro_paths systemd-networkd.service + fix_ro_paths systemd_resolved.servce + fi +fi + +# Workarounds for cloud containers +if is_lxc_container && { [ "${ID}" = "fedora" ] || [ "${ID}" = "rhel" ]; } && [ "${cloudinit_exists}" -eq 1 ]; then + fix_nm_force_up eth0 +fi + +# Workarounds for NetworkManager in containers +if [ "${nm_exists}" -eq 1 ]; then + if [ "${ID}" = "ol" ] || [ "${ID}" = "centos" ]; then + fix_nm_force_up eth0 + fi + + fix_nm_link_state eth0 +fi +@@@ + +chmod 755 "$generators_dir"/lxc diff --git a/features.in/lxc-guest/image-scripts.d/99-disable-fstab b/features.in/lxc-guest/image-scripts.d/99-disable-fstab new file mode 100755 index 0000000..1e30cd8 --- /dev/null +++ b/features.in/lxc-guest/image-scripts.d/99-disable-fstab @@ -0,0 +1,3 @@ +#!/bin/sh -efu + +true > /etc/fstab diff --git a/features.in/lxc/README b/features.in/lxc/README new file mode 100644 index 0000000..059651f --- /dev/null +++ b/features.in/lxc/README @@ -0,0 +1 @@ +Эта фича предназначена для создания контейнеров LXC и LXD. diff --git a/features.in/lxc/config.mk b/features.in/lxc/config.mk new file mode 100644 index 0000000..aa79824 --- /dev/null +++ b/features.in/lxc/config.mk @@ -0,0 +1,12 @@ +use/lxc: + @$(call add_feature) + @$(call add,CONTROL,fusermount:public) + @$(call add,GROUPS,tun) + +use/lxc/lxd: use/lxc + @$(call add,GROUPS,netadmin lxd) + @$(call add,LIVE_LISTS,container/lxd) + @$(call add,LIVE_LISTS,openssh) + @$(call add,LIVE_PACKAGES,su) + @$(call add,LIVE_PACKAGES,livecd-net-eth) + @$(call add,LIVE_PACKAGES,udev-rule-generator-net) diff --git a/features.in/lxc/stage2/image-scripts.d/30-lxd b/features.in/lxc/stage2/image-scripts.d/30-lxd new file mode 100755 index 0000000..7044a57 --- /dev/null +++ b/features.in/lxc/stage2/image-scripts.d/30-lxd @@ -0,0 +1,30 @@ +#!/bin/sh + +echo LXD configuration + +# Setup subordinate ID's for root +usermod -v 1000000-1065535 -w 1000000-1065535 root + +# Configuration of LXD +cat </etc/sysconfig/lxd-bridge +# The values below are defaults +USE_LXD_BRIDGE="true" +LXD_BRIDGE="lxdbr0" +LXD_CONFILE="/etc/lxd/dnsmasq.conf" +LXD_DOMAIN="lxd" + +# IPv4 +LXD_IPV4_ADDR="192.168.202.1" +LXD_IPV4_NETMASK="255.255.255.0" +LXD_IPV4_NETWORK="192.168.202.0/24" +LXD_IPV4_DHCP_RANGE="192.168.202.100,192.168.202.199" +LXD_IPV4_DHCP_MAX="100" +LXD_IPV4_NAT="true" + +# IPv6 +#LXD_IPV6_ADDR="" +#LXD_IPV6_MASK="" +#LXD_IPV6_NETWORK="" +#LXD_IPV6_NAT="false" +LXD_IPV6_PROXY="true" +E_O_F diff --git a/features.in/mediacheck/README b/features.in/mediacheck/README new file mode 100644 index 0000000..f4d6713 --- /dev/null +++ b/features.in/mediacheck/README @@ -0,0 +1,6 @@ +Эта фича конфигурирует внедрение контрольной суммы в образ +инсталятора после его сборки с целью проверки целостности +на ранней стадии установки. + +NB: прототип, для реального использования надо сделать +микрообраз на основе stage2. diff --git a/features.in/mediacheck/config.mk b/features.in/mediacheck/config.mk new file mode 100644 index 0000000..df90f78 --- /dev/null +++ b/features.in/mediacheck/config.mk @@ -0,0 +1,8 @@ +ifeq (distro,$(IMAGE_CLASS)) +use/mediacheck: use/stage2 sub/stage2@mediacheck \ + use/grub/mediacheck.cfg use/syslinux/mediacheck.cfg + @$(call add_feature) + @$(call add,POSTPROCESS_TARGETS,90mediacheck) +else +use/mediacheck: ; @: +endif diff --git a/features.in/mediacheck/lib/89-mediacheck.mk b/features.in/mediacheck/lib/89-mediacheck.mk new file mode 100644 index 0000000..9bd1254 --- /dev/null +++ b/features.in/mediacheck/lib/89-mediacheck.mk @@ -0,0 +1,4 @@ +CHROOT_PACKAGES += isomd5sum + +postprocess-90mediacheck: + @implantisomd5 "$(IMAGEDIR)/$(IMAGE_OUTFILE)" diff --git a/features.in/mediacheck/mediacheck/image-scripts.d/98-init-mediacheck b/features.in/mediacheck/mediacheck/image-scripts.d/98-init-mediacheck new file mode 100755 index 0000000..06d576e --- /dev/null +++ b/features.in/mediacheck/mediacheck/image-scripts.d/98-init-mediacheck @@ -0,0 +1,3 @@ +#!/bin/sh +mv -f -- /etc/inittab.mediacheck /etc/inittab +:>/etc/rc.d/rc diff --git a/features.in/mediacheck/mediacheck/image-scripts.d/99-cleanup-all b/features.in/mediacheck/mediacheck/image-scripts.d/99-cleanup-all new file mode 100755 index 0000000..2c40053 --- /dev/null +++ b/features.in/mediacheck/mediacheck/image-scripts.d/99-cleanup-all @@ -0,0 +1,11 @@ +#!/bin/sh +# everything needed should have been done within initrd when this boots + +list="$(rpm -qa apt diffutils libapt librpm* make rpm shadow-utils udev* vim*)" +[ -z "$list" ] || rpm -e --nodeps $list 2>/dev/null ||: + +rm -rf /var/lib/apt /var/cache/apt /var/lib/rpm +rm -rf /lib/modules +rm -rf /usr/share +rm -rf /usr/lib*/{locale,perl*,python*,systemd,udev} +rm -rf /{etc,lib}/{firmware,udev} diff --git a/features.in/mediacheck/mediacheck/stage2cfg.mk b/features.in/mediacheck/mediacheck/stage2cfg.mk new file mode 100644 index 0000000..3a7d58d --- /dev/null +++ b/features.in/mediacheck/mediacheck/stage2cfg.mk @@ -0,0 +1,8 @@ +# stage2 mod: mediacheck single-purpose "live" image + +IMAGE_PACKAGES = startup-mediacheck startup + +MKI_PACK_RESULTS = squash:mediacheck + +debug:: + @echo "** mediacheck: IMAGE_PACKAGES: $(IMAGE_PACKAGES)" diff --git a/features.in/memclean/README b/features.in/memclean/README new file mode 100644 index 0000000..cf8db42 --- /dev/null +++ b/features.in/memclean/README @@ -0,0 +1,2 @@ +Эта фича добавляет и включает очистку освобождаемой памяти +средствами zmalloc (через LD_PRELOAD). diff --git a/features.in/memclean/config.mk b/features.in/memclean/config.mk new file mode 100644 index 0000000..f1e3d7e --- /dev/null +++ b/features.in/memclean/config.mk @@ -0,0 +1,4 @@ +use/memclean: use/control + @$(call add_feature) + @$(call add,THE_PACKAGES,libzmalloc) + @$(call add,CONTROL,libzmalloc:enabled) diff --git a/features.in/memtest/README b/features.in/memtest/README new file mode 100644 index 0000000..ed8e08a --- /dev/null +++ b/features.in/memtest/README @@ -0,0 +1,2 @@ +Добавление memtest86+ в загрузку с образа и в устанавливаемую пакетную базу; +востребовано для инсталяторов, live/rescue. Интегрируется с syslinux. diff --git a/features.in/memtest/config.mk b/features.in/memtest/config.mk new file mode 100644 index 0000000..2fc60b3 --- /dev/null +++ b/features.in/memtest/config.mk @@ -0,0 +1,10 @@ +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/memtest: use/syslinux use/grub + @$(call add_feature) + @$(call add,SYSTEM_PACKAGES,memtest86+) + @$(call add,SYSLINUX_CFG,memtest) + @$(call add,GRUB_CFG,memtest_bios) +else +use/memtest: ; @: +endif +# see also use/efi/memtest86 diff --git a/features.in/memtest/stage1/scripts.d/02-memtest b/features.in/memtest/stage1/scripts.d/02-memtest new file mode 100755 index 0000000..98a4d58 --- /dev/null +++ b/features.in/memtest/stage1/scripts.d/02-memtest @@ -0,0 +1,7 @@ +#!/bin/sh + +mkdir -p "$WORKDIR"/boot +MEMTEST="$(find /boot/ -name 'memtest*' -print -quit)" +# hdt wiki recommends adding .bin +[ -z "$MEMTEST" ] || + cp -f "$MEMTEST" "$WORKDIR"/boot/memtest.bin diff --git a/features.in/metadata/README b/features.in/metadata/README new file mode 100644 index 0000000..ad9b423 --- /dev/null +++ b/features.in/metadata/README @@ -0,0 +1,10 @@ +Эта фича занимается метаданными в составе образов -- +в первую очередь инсталяционных и пригодных к установке +"живых". + +Обязательные к установке по умолчанию пакеты задаются переменными +SYSTEM_PACKAGES, COMMON_PACKAGES, BASE_PACKAGES, BASE_LISTS, +THE_PACKAGES, THE_LISTS и передаются инсталятору посредством +Metadata/pkg-groups.tar (файл .base). + +См. тж. фичу main. diff --git a/features.in/metadata/config.mk b/features.in/metadata/config.mk new file mode 100644 index 0000000..4725786 --- /dev/null +++ b/features.in/metadata/config.mk @@ -0,0 +1,2 @@ +use/metadata: + @$(call add_feature) diff --git a/features.in/metadata/lib/50-metadata.mk b/features.in/metadata/lib/50-metadata.mk new file mode 100644 index 0000000..46192dd --- /dev/null +++ b/features.in/metadata/lib/50-metadata.mk @@ -0,0 +1,46 @@ +# step 4: build the distribution image + +# package lists are needed for installer and live-install images +METADIR := files/Metadata + +# preparation targets of features.in/build-distro/lib/build-distro.mk +WHATEVER += metadata + +# handle these too +DOT_BASE += $(BASE_PACKAGES_REGEXP) $(THE_PACKAGES_REGEXP) + +# args: type, name +define dump +if [ -n "$($(2)_$(1))" ]; then \ + echo -e "\n## $(2)_$(1)"; \ + case "$(1)" in \ + PACKAGES) echo "$($(2)_$(1))";; \ + LISTS) echo -e "\n# $($(2)_$(1))"; cat $($(2)_$(1));; \ + esac; \ +fi; +endef + +# BASE_PACKAGES, BASE_LISTS and whatever else goes into base install; +# thus construct requisite .base packagelist for alterator-pkg +metadata-.base: + @cd $(call list,/); \ + { \ + echo "## generated by features.in/metadata/lib/50-metadata.mk";\ + $(foreach p,SYSTEM COMMON THE BASE,$(call dump,PACKAGES,$(p))) \ + $(foreach l,COMMON THE BASE,$(call dump,LISTS,$(l))) \ + if [ -n "$(DOT_BASE)" ]; then \ + echo -e "\n## DOT_BASE\n$(DOT_BASE)"; \ + fi; \ + } | sed -re 's/^[[:space:]]+//' | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' > .base + +# see also alterator-pkg (backend3/pkg-install); +# we only tar up what's up to it (note that e.g. +# LIVE_LISTS are needed in the generated profile +# but not for alterator-pkg) +metadata: metadata-.base + @mkdir -p $(METADIR); \ + tar -C $(PKGDIR) -cvf - \ + $(call rlist,.base $(call groups2lists)) \ + $(call rgroup,$(THE_GROUPS) $(MAIN_GROUPS)) \ + $(call rprofile,$(THE_PROFILES)) \ + > $(METADIR)/pkg-groups.tar diff --git a/features.in/mipsel-bfk3/README b/features.in/mipsel-bfk3/README new file mode 100644 index 0000000..a0daa9d --- /dev/null +++ b/features.in/mipsel-bfk3/README @@ -0,0 +1,2 @@ +Фича предназначена для создания образа прошивки для отладочной платы BFK3.1. +https://www.altlinux.org/BFK3.1 diff --git a/features.in/mipsel-bfk3/config.mk b/features.in/mipsel-bfk3/config.mk new file mode 100644 index 0000000..2363038 --- /dev/null +++ b/features.in/mipsel-bfk3/config.mk @@ -0,0 +1,13 @@ +use/mipsel-bfk3: use/kernel use/tty/S0 use/net-eth/dhcp/timeout/20 + @$(call add_feature) + @$(call set,KFLAVOURS,bfk3-def) + @$(call set,DTB_NAME,baikal/baikal_bfk3.dtb) + @$(call xport,DTB_NAME) + @$(call set,VM_FSTYPE,ext2) + @$(call add,NET_ETH,eth0:dhcp) + @$(call add,NET_ETH,eth1:dhcp) + @$(call add,NET_ETH,eth2:dhcp) + @$(call add,THE_PACKAGES,fbset-modes-sm750-bfk3) + @$(call add,THE_PACKAGES,alt-config-be-t) + +use/mipsel-bfk3/x11: use/mipsel-bfk3 use/x11/radeon; @: diff --git a/features.in/mipsel-bfk3/rootfs/image-scripts.d/15-fstab b/features.in/mipsel-bfk3/rootfs/image-scripts.d/15-fstab new file mode 100755 index 0000000..cbdc055 --- /dev/null +++ b/features.in/mipsel-bfk3/rootfs/image-scripts.d/15-fstab @@ -0,0 +1,5 @@ +#!/bin/sh -efu + +sed '/[[:space:]]\/[[:space:]]/d' /etc/fstab + +printf "/dev/sda1\t/\t$GLOBAL_VM_FSTYPE\tdefaults\t1 1\n" >> /etc/fstab diff --git a/features.in/mipsel-bfk3/rootfs/image-scripts.d/40-boot b/features.in/mipsel-bfk3/rootfs/image-scripts.d/40-boot new file mode 100755 index 0000000..8655400 --- /dev/null +++ b/features.in/mipsel-bfk3/rootfs/image-scripts.d/40-boot @@ -0,0 +1,23 @@ +#!/bin/sh -efu + +mkdir -p /boot + +vmlinuz="$(find /boot -type f -name 'vmlinuz-*')" +kversion="${vmlinuz##/boot/vmlinuz-}" + +[ -n "$GLOBAL_DTB_NAME" ] + +DTB_FILE="/lib/devicetree/$kversion/$GLOBAL_DTB_NAME" +DTB_NAME="$(basename "$DTB_FILE" .dtb)" + +cp "$DTB_FILE" "/boot/$DTB_NAME-$kversion.dtb" +ln -s "$DTB_NAME-$kversion.dtb" "/boot/$DTB_NAME.dtb" + +# various SDK version have various defaults +ln -s boot/vmlinuz /vmlinux.bin +ln -s boot/vmlinuz /bfk3.vmlinux.bin +ln -s boot/initrd.img /initramfs.gz +ln -s "boot/$DTB_NAME.dtb" /baikal.dtb +ln -s "boot/$DTB_NAME.dtb" /bfk3.dtb + +exit 0 diff --git a/features.in/mipsel-mitx/README b/features.in/mipsel-mitx/README new file mode 100644 index 0000000..e39fbdf --- /dev/null +++ b/features.in/mipsel-mitx/README @@ -0,0 +1,2 @@ +Фича предназначена для создания прошивки для компьютера "Таволга Терминал". +https://www.altlinux.org/Ports/mipsel/Прошивка_образа_в_формате_recovery.tar_на_Таволга_Терминал diff --git a/features.in/mipsel-mitx/config.mk b/features.in/mipsel-mitx/config.mk new file mode 100644 index 0000000..5232baa --- /dev/null +++ b/features.in/mipsel-mitx/config.mk @@ -0,0 +1,7 @@ +use/mipsel-mitx: use/kernel use/tty/S0 use/net-eth/dhcp/timeout/20 + @$(call add_feature) + @$(call set,KFLAVOURS,mitx-xpa) + @$(call add,THE_PACKAGES,alt-config-be-t) + +use/mipsel-mitx/x11: use/mipsel-mitx + @$(call add,THE_PACKAGES,xorg-conf-sm750-tavolga) diff --git a/features.in/mipsel-mitx/rootfs/image-scripts.d/15-fstab b/features.in/mipsel-mitx/rootfs/image-scripts.d/15-fstab new file mode 100755 index 0000000..f47f3e8 --- /dev/null +++ b/features.in/mipsel-mitx/rootfs/image-scripts.d/15-fstab @@ -0,0 +1,7 @@ +#!/bin/sh -efu + +# remove rootfs entry +sed -i '/rootfs/d' /etc/fstab + +echo "/dev/sda6 / ext4 relatime 1 1" >> /etc/fstab +echo "/dev/sda1 /boot ext4 defaults 1 2" >> /etc/fstab diff --git a/features.in/mipsel-mitx/rootfs/image-scripts.d/40-boot b/features.in/mipsel-mitx/rootfs/image-scripts.d/40-boot new file mode 100755 index 0000000..044a58b --- /dev/null +++ b/features.in/mipsel-mitx/rootfs/image-scripts.d/40-boot @@ -0,0 +1,38 @@ +#!/bin/sh -efu + +mkdir -p /boot + +vmlinuz="$(find /boot -type f -name 'vmlinuz-*')" +kversion="${vmlinuz##/boot/vmlinuz-}" + +DTB_NAME= +# grep 'load-.*0xffffffff' arch/mips/baikal/Platform +KERNEL_LOAD_ADDR= +case "$kversion" in + 3.19*) + DTB_NAME=tplatforms_mitx2 + KERNEL_LOAD_ADDR=0x80004000 + ;; + 4.4*) + DTB_NAME=tplatforms_mitx + KERNEL_LOAD_ADDR=0x80100000 + ;; + *) + # 4.9 and other experimential stuff + DTB_NAME=baikal_mitx + KERNEL_LOAD_ADDR=0x80100000 + ;; +esac + +[ -n "$DTB_NAME" ] +[ -n "$KERNEL_LOAD_ADDR" ] + +cp /lib/devicetree/"$kversion/$DTB_NAME".dtb /boot/"$DTB_NAME"-"$kversion".dtb +ln -s "$DTB_NAME"-"$kversion".dtb /boot/$DTB_NAME.dtb + +cat > /boot/bootconf << EOF +default: bootconf0 +bootconf0 vmlinuz $KERNEL_LOAD_ADDR $KERNEL_LOAD_ADDR $DTB_NAME.dtb initrd.img root=/dev/sda6 rw rootwait earlyprintk=uart8520,mmio32,0x1f04a000,115200 maxcpus=2 consoleblank=0 console=tty1 video=sm750fb:1920x1080-32@60 nohtw nocoherentio ieee754=relaxed +EOF + +exit 0 diff --git a/features.in/mipsel-mitx/rootfs/image-scripts.d/40-cpufreq-simple b/features.in/mipsel-mitx/rootfs/image-scripts.d/40-cpufreq-simple new file mode 100755 index 0000000..fe15d25 --- /dev/null +++ b/features.in/mipsel-mitx/rootfs/image-scripts.d/40-cpufreq-simple @@ -0,0 +1,9 @@ +#!/bin/sh + +CONFIG=/etc/sysconfig/cpufreq-simple + +[ -f "$CONFIG" ] || exit 0 + +. shell-config +shell_config_set "$CONFIG" GOVERNOR_AC_ON performance +shell_config_set "$CONFIG" GOVERNOR_AC_OFF performance diff --git a/features.in/net-dns/README b/features.in/net-dns/README new file mode 100644 index 0000000..bc498ec --- /dev/null +++ b/features.in/net-dns/README @@ -0,0 +1,9 @@ +Эта фича позволяет сконфигурировать публично доступный +рекурсивный DNS-сервер для условий, когда локальный +неизвестен заранее или попросту отсутствует; следует +понимать, что это в некотором роде утечка данных, +т.е. риск безопасности. + +Также возможно указать свои NAMESERVERS через пробел +у себя в фиче или конфигурации дистрибутива, которая +задействует use/net-dns. diff --git a/features.in/net-dns/config.mk b/features.in/net-dns/config.mk new file mode 100644 index 0000000..2e778e5 --- /dev/null +++ b/features.in/net-dns/config.mk @@ -0,0 +1,22 @@ +use/net-dns: use/net + @$(call add_feature) + @$(call xport,NAMESERVERS) + +use/net-dns/google: use/net-dns + @$(call add,NAMESERVERS,8.8.8.8 8.8.4.4) + +use/net-dns/google/v6: use/net-dns + @$(call add,NAMESERVERS,2001:4860:4860::8888) + @$(call add,NAMESERVERS,2001:4860:4860::8844) + +use/net-dns/level3: use/net-dns + @$(call add,NAMESERVERS,4.2.2.1 4.2.2.2 4.2.2.3) + +use/net-dns/yandex: use/net-dns + @$(call add,NAMESERVERS,77.88.8.8 77.88.8.1) + +use/net-dns/yandex/safe: use/net-dns + @$(call add,NAMESERVERS,77.88.8.88 77.88.8.2) + +use/net-dns/yandex/family: use/net-dns + @$(call add,NAMESERVERS,77.88.8.7 77.88.8.3) diff --git a/features.in/net-dns/rootfs/image-scripts.d/60-net-dns b/features.in/net-dns/rootfs/image-scripts.d/60-net-dns new file mode 100755 index 0000000..01dfa90 --- /dev/null +++ b/features.in/net-dns/rootfs/image-scripts.d/60-net-dns @@ -0,0 +1,17 @@ +#!/bin/sh +# set default nameserver, if any + +if [ $GLOBAL_NAMESERVERS = "example" ]; then + echo "# yandex" + echo "#nameserver 77.88.8.1" + echo "# google" + echo "#nameserver 8.8.8.8" + echo "# level3" + echo "#nameserver 4.2.2.1" + echo "#nameserver 4.2.2.2" + echo "#nameserver 4.2.2.3" +else + for i in $GLOBAL_NAMESERVERS; do + echo "nameserver $i" + done +fi >> /etc/resolv.conf diff --git a/features.in/net-eth/README b/features.in/net-eth/README new file mode 100644 index 0000000..c3431d5 --- /dev/null +++ b/features.in/net-eth/README @@ -0,0 +1,10 @@ +Эта фича позволяет задать конфигурацию Ethernet-интерфейсов. + +udev-rule-generator-net штатно добавляется для обеспечения +предсказуемых имён вида eth0/eth1/... в силу того, что их +сломали в апстримном systemd-udevd; для генерируемых "на лету" +следует применять конфигурирование времени загрузки (NM, connman +либо пакет livecd-net-eth). + +Обратите внимание: применение в инсталяторах требует задействования +как use/net-eth, так и use/stage2/net-eth; +net-eth "подберёт" оба. diff --git a/features.in/net-eth/config.mk b/features.in/net-eth/config.mk new file mode 100644 index 0000000..dafd3a7 --- /dev/null +++ b/features.in/net-eth/config.mk @@ -0,0 +1,28 @@ +# NB: this is aimed at LiveCD/installer images ++net-eth: use/net-eth use/stage2/net-eth; @: + +# see also use/stage2/net-eth; do not depend on it though +# as stage2-less images need preconfigured networking too +use/net-eth: use/net/etcnet + @$(call add_feature) + @$(call xport,NET_ETH) + @$(call add,BASE_PACKAGES,udev-rule-generator-net) + +use/net-eth/networkd: use/net/networkd + @$(call add_feature) + @$(call xport,NET_ETH) + @$(call add,BASE_PACKAGES,udev-rule-generator-net) + +# typical boilerplate +use/net-eth/dhcp: use/net-eth use/net/dhcp + @$(call add,NET_ETH,eth0:dhcp) + @$(call try,NET_ETH_TIMEOUT,7) + @$(call xport,NET_ETH_TIMEOUT) + +use/net-eth/dhcp/timeout/%: use/net-eth/dhcp + @$(call set,NET_ETH_TIMEOUT,$*) + +use/net-eth/networkd-dhcp: use/net-eth/networkd + @$(call add,NET_ETH,eth0:dhcp) + +# use e.g. eth0:static:10.0.0.2/24:10.0.0.1 for predefined static configuration diff --git a/features.in/net-eth/rootfs/image-scripts.d/50-net-eth b/features.in/net-eth/rootfs/image-scripts.d/50-net-eth new file mode 100755 index 0000000..92bde49 --- /dev/null +++ b/features.in/net-eth/rootfs/image-scripts.d/50-net-eth @@ -0,0 +1,97 @@ +#!/bin/sh +# parse interface configuration tuples: +# iface:proto[:ipv4addr/netmask[:ipv4gw]] +# and write it down as intended + +fatal() { echo "error: $*" >&2; exit 1; } + +# simple etcnet configurations are also picked up by NM +if [ -n "$GLOBAL_NMCTL" ]; then + NMCTL="$GLOBAL_NMCTL" +else + if type -t NetworkManager >&/dev/null || + type -t connmand >&/dev/null; then + NMCTL=yes + else + NMCTL=no + fi +fi + +ETCNET_IFDIR="/etc/net/ifaces" +SYSTEMD_IFDIR="/etc/systemd/network" + +write_iface() { + case "$proto" in + dhcp) + ;; + static) + [ -n "$ipv4addr" ] || fatal "ipv4addr missing" + ;; + *) + fatal "unknown proto value: $proto" + ;; + esac + [ -d "$ETCNET_IFDIR" ] && write_etcnet_iface ||: + [ -d "$SYSTEMD_IFDIR" ] && write_systemd_iface ||: +} + +# these use global variables +write_etcnet_iface() { + dir="$ETCNET_IFDIR/$iface" + mkdir -p "$dir" + append= + case "$proto" in + dhcp) + append="DHCP_TIMEOUT=$GLOBAL_NET_ETH_TIMEOUT" + ;; + static) + echo "$ipv4addr" > "$dir/ipv4address" + [ -z "$ipv4gw" ] || + echo "default via $ipv4gw" > "$dir/ipv4route" + ;; + esac + { + echo "TYPE=eth" + echo "BOOTPROTO=$proto" + echo "NM_CONTROLLED=$NMCTL" + echo "DISABLED=$NMCTL" + echo "#USE_IFPLUGD=yes" + [ -z "$append" ] || echo "$append" + } > "$dir/options" +} + +write_systemd_iface() { + case "$proto" in + dhcp) + echo "[Match]" + echo "Name=$iface" + echo + echo "[Network]" + echo "DHCP=yes" + echo + echo "[DHCP]" + echo "UseMTU=yes" + echo "UseDomains=yes" + echo "UseNTP=yes" + echo + ;; + static) + echo "[Match]" + echo "Name=$iface" + echo + echo "[Network]" + echo "Address=$ipv4addr" + [ -z "$ipv4gw" ] || + echo "Gateway=$ipv4gw" + echo "LinkLocalAddressing=no" + ;; + esac > "$SYSTEMD_IFDIR/$iface.network" +} + +[ -z "$GLOBAL_NET_ETH" ] || + echo "$GLOBAL_NET_ETH" \ + | tr ' ' '\n' \ + | while IFS=':' read iface proto ipv4addr ipv4gw; do + [ -n "$iface" -a -n "$proto" ] || continue + write_iface + done diff --git a/features.in/net-ssh/README b/features.in/net-ssh/README new file mode 100644 index 0000000..0ba1d52 --- /dev/null +++ b/features.in/net-ssh/README @@ -0,0 +1,3 @@ +Эта фича предназначена для добавления в образ поддержки SSH: +добавляется клиент и конфигурируется сервер (требуется задание +пути к существующему публичному ключу посредством переменной SSH_KEY). diff --git a/features.in/net-ssh/config.mk b/features.in/net-ssh/config.mk new file mode 100644 index 0000000..3bb4c37 --- /dev/null +++ b/features.in/net-ssh/config.mk @@ -0,0 +1,4 @@ +use/net-ssh: use/net use/services + @$(call add_feature) + @$(call add,THE_LISTS,openssh) + @$(call add,DEFAULT_SERVICES_ENABLE,sshd) diff --git a/features.in/net-ssh/generate.mk b/features.in/net-ssh/generate.mk new file mode 100644 index 0000000..24df3ca --- /dev/null +++ b/features.in/net-ssh/generate.mk @@ -0,0 +1,13 @@ +ifdef BUILDDIR + +include $(BUILDDIR)/distcfg.mk + +# prepare the provided public SSH key to be carried over into the image +all: SSH_DIR = $(BUILDDIR)/files/root/.ssh +all: + @if [ -s "$(SSH_KEY)" ]; then \ + mkdir -pm0700 "$(SSH_DIR)"; \ + install -pm0600 "$(SSH_KEY)" "$(SSH_DIR)/authorized_keys"; \ + fi + +endif diff --git a/features.in/net-usershares/README b/features.in/net-usershares/README new file mode 100644 index 0000000..e82cde5 --- /dev/null +++ b/features.in/net-usershares/README @@ -0,0 +1,5 @@ +Эта фича выполняет предварительное конфигурирование системы +для работы плагинов файл-менеджеров, реализующих взаимодействие +с Samba-сервером для динамического создания разделяемых файловых +ресурсов ("пользовательских шар"). Без добавления соответствующего +файл-менеджера и нужного плагина смысла не имеет. diff --git a/features.in/net-usershares/config.mk b/features.in/net-usershares/config.mk new file mode 100644 index 0000000..9413439 --- /dev/null +++ b/features.in/net-usershares/config.mk @@ -0,0 +1,5 @@ +# requires thunar-shares-plugin or mate-user-share to make sense +use/net-usershares: use/services use/deflogin + @$(call add,GROUPS,sambashare) + @$(call add,DEFAULT_SERVICES_ENABLE,smb nmb) + @$(call add,THE_PACKAGES,libshell) diff --git a/features.in/net-usershares/rootfs/image-scripts.d/85-samba-usershares.sh b/features.in/net-usershares/rootfs/image-scripts.d/85-samba-usershares.sh new file mode 100755 index 0000000..01a19fc --- /dev/null +++ b/features.in/net-usershares/rootfs/image-scripts.d/85-samba-usershares.sh @@ -0,0 +1,36 @@ +#!/bin/sh -efu + +[ -s /etc/samba/smb.conf ] || exit 0 + +. shell-config + +USERSHARES_DIR="/var/lib/samba/usershares" +USERSHARES_GROUP="sambashare" +DEFAULT_GROUPS='cdwriter cdrom audio video proc radio camera floppy xgrp scanner uucp' +GROUPS_FILE="/usr/share/install3/default-groups" + +mkdir -p "$USERSHARES_DIR" +groupadd -r "$USERSHARES_GROUP" +chown root:"$USERSHARES_GROUP" "$USERSHARES_DIR" +chmod 1770 "$USERSHARES_DIR" + +USERSHARES_OPTIONS="# ----------------------- User Shares Options -------------------------\n\tusershare path = $USERSHARES_DIR\n\tusershare max shares = 100\n\tusershare allow guests = yes\n\tusershare owner only = yes" + +sed -i -e "\|^\[global\]|a$USERSHARES_OPTIONS" \ + -e "s/workgroup = MYGROUP/workgroup = WORKGROUP/" \ + "/etc/samba/smb.conf" + +# Create group file for alterator-users +if [ ! -s "$GROUPS_FILE" ]; then + mkdir -p "${GROUPS_FILE%/*}" + echo "$DEFAULT_GROUPS" >"$GROUPS_FILE" +fi + +# Add USERSHARES_GROUP to the default groups list. +echo "$USERSHARES_GROUP" >>"$GROUPS_FILE" + +# Permissions for home dir must be 0701 +tab="$(printf "\t")" +shell_config_set "/etc/login.defs" UMASK 076 "$tab" "$tab" + +# smb and nmb services must be enabled diff --git a/features.in/net/README b/features.in/net/README new file mode 100644 index 0000000..38637e4 --- /dev/null +++ b/features.in/net/README @@ -0,0 +1,2 @@ +Эта фича конфигурирует базовую поддержку сети, включая нужную подсистему +(etcnet, NetworkManager поверх etcnet или connman). diff --git a/features.in/net/config.mk b/features.in/net/config.mk new file mode 100644 index 0000000..a03a56c --- /dev/null +++ b/features.in/net/config.mk @@ -0,0 +1,54 @@ ++nm: use/net/nm; @: ++nm-native: use/net/nm/native; @: + +use/net: use/services use/pkgpriorities + @$(call add_feature) + @$(call add,THE_PACKAGES,$$(THE_NET_SUBSYS)) + @$(call add,PINNED_PACKAGES,$$(THE_NET_SUBSYS)) + @$(call set,THE_NET_SUBSYS,network-config-subsystem) + +use/net/etcnet: use/net + @$(call set,THE_NET_SUBSYS,etcnet) + @$(call add,DEFAULT_SERVICES_ENABLE,network) + +use/net/dhcp: use/net + @$(call add,THE_PACKAGES,dhcpcd) + +# base service, no GUI; see x11 feature for those +use/net/nm: use/net + @$(call set,THE_NET_SUBSYS,NetworkManager) + @$(call add,THE_LISTS,$(call tags,base nm)) # NB: won't get overridden + @$(call add,LIVE_PACKAGES,livecd-save-nfs) + @$(call add,DEFAULT_SERVICES_ENABLE,network) # need for NM? + @$(call add,DEFAULT_SERVICES_ENABLE,NetworkManager ModemManager) + @$(call add,DEFAULT_SERVICES_ENABLE,livecd-save-nfs) # keep interface up + @$(call xport,NM_native) + +# use NetworkManager(native) +use/net/nm/native: + @$(call set,NM_Native,yes) + +# NOT recommended unless you know what you're doing +# (e.g. dnsmasq can win a race against dhcpcd) +use/net/nm/nodelay: use/net/nm + @$(call add,DEFAULT_SERVICES_DISABLE,NetworkManager-wait-online) + +use/net/nm/mmgui: use/net/nm + @$(call set,THE_NET_SUBSYS,modem-manager-gui) + +use/net/connman: use/net + @$(call set,THE_NET_SUBSYS,connman) + @$(call add,DEFAULT_SERVICES_ENABLE,connmand connman) + +use/net/networkd: use/net + @$(call set,THE_NET_SUBSYS,systemd-networkd) + @$(call add,DEFAULT_SERVICES_ENABLE,systemd-networkd) + @$(call xport,SYSTEMD_RESOLVED) + +use/net/networkd/resolved: use/net/networkd + @$(call add,DEFAULT_SERVICES_ENABLE,systemd-resolved) + @$(call set,SYSTEMD_RESOLVED,yes) + +use/net/networkd/resolved-stub: use/net/networkd + @$(call add,DEFAULT_SERVICES_ENABLE,systemd-resolved) + @$(call set,SYSTEMD_RESOLVED,stub) diff --git a/features.in/net/rootfs/image-scripts.d/50-net-nm b/features.in/net/rootfs/image-scripts.d/50-net-nm new file mode 100755 index 0000000..c5c36d0 --- /dev/null +++ b/features.in/net/rootfs/image-scripts.d/50-net-nm @@ -0,0 +1,17 @@ +#!/bin/sh + +. shell-config + +defcfg=/etc/net/ifaces/default/options-eth + +[ -f defcfg ] || exit 0 + +if [ -x /usr/sbin/NetworkManager -o -x /usr/sbin/connmand ]; then + shell_config_set "$defcfg" NM_CONTROLLED yes + shell_config_set "$defcfg" DISABLED yes + if [ NM_Native = 'yes' ]; then + shell_config_set "$defcfg" BOOTPROTO static + else + shell_config_set "$defcfg" BOOTPROTO dhcp + fi +fi diff --git a/features.in/net/rootfs/image-scripts.d/50-net-resolv b/features.in/net/rootfs/image-scripts.d/50-net-resolv new file mode 100755 index 0000000..b52353d --- /dev/null +++ b/features.in/net/rootfs/image-scripts.d/50-net-resolv @@ -0,0 +1,10 @@ +#!/bin/sh +# see also net-dns feature for actual nameserver control + +# purge hasher-provided files potentially disclosing +# build host's network configuration bits +find /var -name resolv.conf -or -name nsswitch.conf -delete + +# hasher might have carried host /etc/hosts over, need to overwrite +echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts +sed -ri "/^(search|nameserver|domain)/d" /etc/resolv.conf diff --git a/features.in/net/rootfs/image-scripts.d/99-systemd-resolved-link b/features.in/net/rootfs/image-scripts.d/99-systemd-resolved-link new file mode 100755 index 0000000..986f0c9 --- /dev/null +++ b/features.in/net/rootfs/image-scripts.d/99-systemd-resolved-link @@ -0,0 +1,10 @@ +#!/bin/sh + +[ -h /sbin/init ] || exit 0 +[ -n "$GLOBAL_SYSTEMD_RESOLVED" ] || exit 0 + +if [ "$GLOBAL_SYSTEMD_RESOLVED" = stub ]; then + ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf +else + ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf +fi diff --git a/features.in/net/stage1/modules.d/50-net b/features.in/net/stage1/modules.d/50-net new file mode 100644 index 0000000..7365d5e --- /dev/null +++ b/features.in/net/stage1/modules.d/50-net @@ -0,0 +1,6 @@ +# net +kernel/drivers/net/mii.ko +kernel/drivers/net/phy +kernel/drivers/net/ethernet +kernel/drivers/net/usb +# diff --git a/features.in/no-sleep/README b/features.in/no-sleep/README new file mode 100644 index 0000000..0341a37 --- /dev/null +++ b/features.in/no-sleep/README @@ -0,0 +1,3 @@ +Эта фича отключает спящий и ждущий режимы, а также гибернацию. +Нужна для одноплатных компьютеров вроде Raspberry Pi, +не поддерживающих их. diff --git a/features.in/no-sleep/config.mk b/features.in/no-sleep/config.mk new file mode 100644 index 0000000..548bce3 --- /dev/null +++ b/features.in/no-sleep/config.mk @@ -0,0 +1,2 @@ +use/no-sleep: + @$(call add_feature) diff --git a/features.in/no-sleep/rootfs/image-scripts.d/50-no-sleep-systemd b/features.in/no-sleep/rootfs/image-scripts.d/50-no-sleep-systemd new file mode 100755 index 0000000..2b76435 --- /dev/null +++ b/features.in/no-sleep/rootfs/image-scripts.d/50-no-sleep-systemd @@ -0,0 +1,13 @@ +#!/bin/sh -efu + +sleepconf=/etc/systemd/sleep.conf + +test ! -f "$sleepconf" && exit || : +cat >> "$sleepconf" <> /etc/sysconfig/i18n + +# Disable cleanup alterator-setup +[ ! "$GLOBAL_OEM_NO_CLEANUP" = yes ] || + sed -i 's/^REMOVE_SELF=.*/REMOVE_SELF=0/' /etc/alterator-setup/config + +# Set alterator-setup steps +if [ -n "$GLOBAL_OEM_STEPS" ]; then + rm -f /etc/alterator-setup/steps + for OEM_STEP in $GLOBAL_OEM_STEPS; do + echo $OEM_STEP >> /etc/alterator-setup/steps + done +fi + +if [ -n "$GLOBAL_OEM_INSTALL" ]; then + mkdir -p /var/lib/install3 + tar -xf /.install3.tar -C /var/lib/install3/ + rm /.install3.tar + touch /var/lib/install3/lists/.base +fi + +: diff --git a/features.in/office/README b/features.in/office/README new file mode 100644 index 0000000..ede8415 --- /dev/null +++ b/features.in/office/README @@ -0,0 +1,6 @@ +Эта фича обеспечивает наличие и конкретизацию выбора офисного +пакета по аналогии с выбором браузера. Разумеется, дополнительные +варианты могут быть установлены явным или косвенным затребованием. + +Следует понимать, что каждая из целей может быть использована +лишь один раз, повторное упоминание будет проигнорировано make. diff --git a/features.in/office/config.mk b/features.in/office/config.mk new file mode 100644 index 0000000..f57ab24 --- /dev/null +++ b/features.in/office/config.mk @@ -0,0 +1,46 @@ +ifeq (,$(filter-out riscv64,$(ARCH))) +# not available on riscv64 at the moment +use/office use/office/LibreOffice/still use/office/LibreOffice/full: ; @: +else + +use/office: + @$(call add_feature) + @$(call try,THE_OFFICE,abiword gnumeric) + @$(call add,THE_PACKAGES,$$(THE_OFFICE)) + +# support both LibreOffice and LibreOffice-still +use/office/LibreOffice: use/office + @$(call set,THE_OFFICE,LibreOffice$$(LO_FLAVOUR)) + +# the complete lack of dependencies is intentional +use/office/LibreOffice/still: ; @: +ifneq (,$(filter-out e2k%,$(ARCH))) + @$(call set,LO_FLAVOUR,-still) +endif + +use/office/LibreOffice/lang: use/office/LibreOffice + @$(call add,THE_OFFICE,LibreOffice$$(LO_FLAVOUR)-langpack-kk) + @$(call add,THE_OFFICE,LibreOffice$$(LO_FLAVOUR)-langpack-ru) + @$(call add,THE_OFFICE,LibreOffice$$(LO_FLAVOUR)-langpack-uk) + +use/office/LibreOffice/lang/extra: use/office/LibreOffice/lang + @$(call add,THE_OFFICE,LibreOffice$$(LO_FLAVOUR)-langpack-es) + @$(call add,THE_OFFICE,LibreOffice$$(LO_FLAVOUR)-langpack-pt-BR) + +use/office/LibreOffice/gtk2 use/office/LibreOffice/gtk3 \ + use/office/LibreOffice/qt5 use/office/LibreOffice/kde5 \ + use/office/LibreOffice/extensions \ + use/office/LibreOffice/integrated: \ + use/office/LibreOffice/%: use/office/LibreOffice + @$(call add,THE_OFFICE,LibreOffice$$(LO_FLAVOUR)-$*) + +use/office/LibreOffice/full: use/office/LibreOffice/still \ + use/office/LibreOffice/gtk3 \ + use/office/LibreOffice/extensions \ + use/office/LibreOffice/integrated \ + use/office/LibreOffice/lang; @: + +use/office/calligra: use/office + @$(call set,THE_OFFICE,calligra) + +endif # !riscv64 diff --git a/features.in/pack/README b/features.in/pack/README new file mode 100644 index 0000000..4d154d0 --- /dev/null +++ b/features.in/pack/README @@ -0,0 +1,6 @@ +Эта фича определяет формат упаковки создаваемого образа. + +На данный момент поддерживаются iso (загрузочный ISO9660 +для дистрибутивов), tar/cpio с возможностью сжатия gz/xz +(виртуальные окружения), а также различные варианты для +образов виртуальных машин, поддерживаемые qemu-img. diff --git a/features.in/pack/config.mk b/features.in/pack/config.mk new file mode 100644 index 0000000..19cd8d9 --- /dev/null +++ b/features.in/pack/config.mk @@ -0,0 +1,55 @@ +### this might really belong to build-*... + +# distributions +DISTRO_EXTS := .iso + +use/pack:: + @$(call add_feature) + +ifeq (,$(filter-out e2k%,$(ARCH))) +use/pack:: use/e2k; @: +endif + +# fallback type is isodata, might get set elsewhere to produce bootable iso +use/pack/iso: use/pack + @$(call try,IMAGE_PACKTYPE,isodata) + +# virtual environments +VE_ARCHIVES := squash tar cpio ubifs +VE_COMPRESSORS := gz xz# there's no sense in bzip2 by now +VE_ZIPS := $(call addsuffices, \ + $(addprefix .,$(VE_COMPRESSORS)), \ + $(VE_ARCHIVES))# tar.gz cpio.xz ... +VE_EXTS := $(sort $(addprefix .,$(VE_ARCHIVES) $(VE_ZIPS)))# .tar .tar.gz ... + +# generate rules for archive/compressor combinations +define PACK_containers +use/pack/$(1): use/pack + @$$(call set,IMAGE_PACKTYPE,$(1)) +endef + +define PACK_compressors +use/pack/$(1).$(2): use/pack/$(1) + @$$(call set,IMAGE_COMPRESS,$(2)) +endef + +ifeq (ve,$(IMAGE_CLASS)) +$(foreach c,$(VE_ARCHIVES), \ + $(eval $(call PACK_containers,$(c))) \ + $(foreach z,$(VE_COMPRESSORS), \ + $(eval $(call PACK_compressors,$(c),$(z))))) +endif + +# extensions for buld-vm +VM_EXTS := .tar .tar.gz .tar.xz .img .img.xz .qcow2 .qcow2c .vdi .vmdk .vhd +VM_TAVOLGA_EXTS := .recovery.tar + +ifeq (vm,$(IMAGE_CLASS)) + +$(VM_EXTS:.%=use/pack/%): use/pack; @: + +ifeq (mipsel,$(ARCH)) +use/pack/recovery.tar: use/pack/tar; @: +endif + +endif diff --git a/features.in/pid1/README b/features.in/pid1/README new file mode 100644 index 0000000..127962b --- /dev/null +++ b/features.in/pid1/README @@ -0,0 +1,15 @@ +Эта экспериментальная фича предназначена для обеспечения запуска +заданного приложения в моно^Wкачестве единственного, т.е. PID 1. + +Особенности результата: +- предельно быстрый запуск; +- работа под root; +- отсутствие какой бы то ни было инициализации окружения. + +Возможна настройка сетевых интерфейсов средствами ядра, условия: +- статически собранный модуль для используемого интерфейса; +- доступность DHCP/BOOTP/RARP в сегменте локальной сети. + +Пакет следует добавить в STAGE1_PACKAGES; путь к бинарнику +задаётся в PID1_BIN; PID1_PANIC позволяет указать время до +перезагрузки ядра при завершении работы приложения. diff --git a/features.in/pid1/config.mk b/features.in/pid1/config.mk new file mode 100644 index 0000000..e4e3cc3 --- /dev/null +++ b/features.in/pid1/config.mk @@ -0,0 +1,20 @@ +# choose the smallest suitable kernel +use/pid1: sub/stage1 use/syslinux/timeout/1 + @$(call add_feature) + @$(call add,STAGE1_PACKAGES,make-initrd) + @$(call add,STAGE2_BOOTARGS,quiet) + @$(call add,STAGE2_BOOTARGS,panic=$$(PID1_PANIC)) + @$(call add,STAGE2_BOOTARGS,rdinit=$$(PID1_BIN)) + @$(call add,SYSLINUX_CFG,pid1) + @$(call try,PID1_PANIC,3) + @$(call xport,PID1_PANIC) + @$(call xport,PID1_BIN) +ifeq (i586,$(ARCH)) + @$(call set,KFLAVOURS,ltsp-client) +endif + +# need a kernel with CONFIG_IP_PNP_DHCP +# NB: make-initrd must support resolver setup! +use/pid1/net: use/pid1 + @$(call add,STAGE2_BOOTARGS,ip=dhcp) + @$(call add,STAGE1_PACKAGES,chrooted-resolv) diff --git a/features.in/pid1/stage1/scripts.d/11-initrd-pid1 b/features.in/pid1/stage1/scripts.d/11-initrd-pid1 new file mode 100755 index 0000000..d3fbd71 --- /dev/null +++ b/features.in/pid1/stage1/scripts.d/11-initrd-pid1 @@ -0,0 +1,4 @@ +#!/bin/sh +# vi's +builtin_terms only cover ansi/xterm + +echo "PUT_FILES += /lib/terminfo/l/linux $GLOBAL_PID1_BIN" >> /etc/initrd.mk diff --git a/features.in/pid1/stage1/scripts.d/82-gzip-initfs b/features.in/pid1/stage1/scripts.d/82-gzip-initfs new file mode 100755 index 0000000..3f1bc9e --- /dev/null +++ b/features.in/pid1/stage1/scripts.d/82-gzip-initfs @@ -0,0 +1,3 @@ +#!/bin/sh + +gzip < /boot/initrd.img > /boot/full.cz diff --git a/features.in/pkgpriorities/README b/features.in/pkgpriorities/README new file mode 100644 index 0000000..db0c7ed --- /dev/null +++ b/features.in/pkgpriorities/README @@ -0,0 +1,28 @@ +Эта фича обеспечивает добавление записей в файл +`$(PKGBOX)/aptbox/etc/apt/pkgpriorities` +после инициализации чрута, но перед установкой пакетов. + +Содержимое файла `pkgpriorities` формируется на основе списка +`PINNED_PACKAGES`. Значение приоритета по умолчанию определяется +переменной `PIN_PRIORITY`, в которую при инициализации фичи +записывается `"Important"`. Список приоритетов: + + Essential, Important, Required, Standard, Optional, Extra + +Переопределить значение приоритета можно отдельно для каждого пакета +в списке, указав желаемый приоритет через двоеточие после имени пакета; +например: + + $(call add,PINNED_PACKAGES,my-package:Essential) + +Используя `PINNED_PACKAGES`, можно заранее определить выбор того +или иного пакета для удовлетворения виртуальной зависимости. +Если виртуальный пакет присутствует в основном списке пакетов для +установки, а пакет, его предоставляющий -- в этом списке, то +вероятность его установки повышается согласно приоритету. Однако +если виртуальный пакет не выбран для установки или приоритетный +пакет отсутствует в репозитории, то сборка образа продолжится без +изменений. Следовательно, с помощью списка `PINNED_PACKAGES` можно +влиять на состав дистрибутива, но его содержание, в отличие от +обыкновенных списков пакетов, имеет _рекомендательный_, а не +обязательный, характер. diff --git a/features.in/pkgpriorities/config.mk b/features.in/pkgpriorities/config.mk new file mode 100644 index 0000000..a538410 --- /dev/null +++ b/features.in/pkgpriorities/config.mk @@ -0,0 +1,3 @@ +use/pkgpriorities: + @$(call add_feature) + @$(call set,PIN_PRIORITY,Important) diff --git a/features.in/pkgpriorities/main/lib/50-pkgpriorities.mk b/features.in/pkgpriorities/main/lib/50-pkgpriorities.mk new file mode 100644 index 0000000..6779233 --- /dev/null +++ b/features.in/pkgpriorities/main/lib/50-pkgpriorities.mk @@ -0,0 +1,26 @@ +_IMAGE_APTBOX_ = $(WORKDIR)/aptbox + +# Add prerequisite to the copy-packages target of +# $(MKIMAGE_PREFIX)/targets.mk. +copy-packages: $(_IMAGE_APTBOX_)/etc/apt/pkgpriorities + +_PINNED_PACKAGES_ = $(foreach pp,$(PINNED_PACKAGES),$(if $(findstring :,$(pp)),$(pp),$(pp):$(PIN_PRIORITY))) +_PIN_PRIORITIES_ = $(sort $(foreach pp,$(_PINNED_PACKAGES_),$(lastword $(subst :, ,$(pp))))) +_PKGPRIORITIES_ = $(subst \n ,\n,$(foreach pri,$(_PIN_PRIORITIES_),$(pri):$(patsubst %:$(pri),\n %,$(filter %:$(pri),$(_PINNED_PACKAGES_)))\n)) + +$(_IMAGE_APTBOX_)/etc/apt/pkgpriorities: prepare-workdir + @echo -e '$(_PKGPRIORITIES_)' | sed -e 's,[[:space:]]\+$$,,' >$@ + @if [ -s $@ ]; then \ + if grep -q '^\(APT::\)\?Dir::Etc::pkgpriorities[[:space:]]' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + then \ + sed -i -e 's,\(Dir::Etc::pkgpriorities\)[[:space:]].*$$,\1 "$@";,g' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + else \ + echo 'Dir::Etc::pkgpriorities "$@";' \ + >>$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + fi; \ + echo "--- Package priorities ---" >&2; \ + cat $@ >&2; \ + echo "---" >&2; \ + fi diff --git a/features.in/pkgpriorities/rootfs/lib/50-pkgpriorities.mk b/features.in/pkgpriorities/rootfs/lib/50-pkgpriorities.mk new file mode 100644 index 0000000..63848de --- /dev/null +++ b/features.in/pkgpriorities/rootfs/lib/50-pkgpriorities.mk @@ -0,0 +1,26 @@ +_IMAGE_APTBOX_ = $(WORKDIR)/chroot/$(WORKDIRNAME)/aptbox + +# Add prerequisite to the build-image target of +# $(MKIMAGE_PREFIX)/targets.mk. +build-image: $(_IMAGE_APTBOX_)/etc/apt/pkgpriorities + +_PINNED_PACKAGES_ = $(foreach pp,$(PINNED_PACKAGES),$(if $(findstring :,$(pp)),$(pp),$(pp):$(PIN_PRIORITY))) +_PIN_PRIORITIES_ = $(sort $(foreach pp,$(_PINNED_PACKAGES_),$(lastword $(subst :, ,$(pp))))) +_PKGPRIORITIES_ = $(subst \n ,\n,$(foreach pri,$(_PIN_PRIORITIES_),$(pri):$(patsubst %:$(pri),\n %,$(filter %:$(pri),$(_PINNED_PACKAGES_)))\n)) + +$(_IMAGE_APTBOX_)/etc/apt/pkgpriorities: prepare-image-workdir + @echo -e '$(_PKGPRIORITIES_)' | sed -e 's,[[:space:]]\+$$,,' >$@ + @if [ -s $@ ]; then \ + if grep -q '^\(APT::\)\?Dir::Etc::pkgpriorities[[:space:]]' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + then \ + sed -i -e 's,\(Dir::Etc::pkgpriorities\)[[:space:]].*$$,\1 "$@";,g' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + else \ + echo 'Dir::Etc::pkgpriorities "$@";' \ + >>$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + fi; \ + echo "--- Package priorities ---" >&2; \ + cat $@ >&2; \ + echo "---" >&2; \ + fi diff --git a/features.in/pkgpriorities/stage2/lib/50-pkgpriorities.mk b/features.in/pkgpriorities/stage2/lib/50-pkgpriorities.mk new file mode 100644 index 0000000..63848de --- /dev/null +++ b/features.in/pkgpriorities/stage2/lib/50-pkgpriorities.mk @@ -0,0 +1,26 @@ +_IMAGE_APTBOX_ = $(WORKDIR)/chroot/$(WORKDIRNAME)/aptbox + +# Add prerequisite to the build-image target of +# $(MKIMAGE_PREFIX)/targets.mk. +build-image: $(_IMAGE_APTBOX_)/etc/apt/pkgpriorities + +_PINNED_PACKAGES_ = $(foreach pp,$(PINNED_PACKAGES),$(if $(findstring :,$(pp)),$(pp),$(pp):$(PIN_PRIORITY))) +_PIN_PRIORITIES_ = $(sort $(foreach pp,$(_PINNED_PACKAGES_),$(lastword $(subst :, ,$(pp))))) +_PKGPRIORITIES_ = $(subst \n ,\n,$(foreach pri,$(_PIN_PRIORITIES_),$(pri):$(patsubst %:$(pri),\n %,$(filter %:$(pri),$(_PINNED_PACKAGES_)))\n)) + +$(_IMAGE_APTBOX_)/etc/apt/pkgpriorities: prepare-image-workdir + @echo -e '$(_PKGPRIORITIES_)' | sed -e 's,[[:space:]]\+$$,,' >$@ + @if [ -s $@ ]; then \ + if grep -q '^\(APT::\)\?Dir::Etc::pkgpriorities[[:space:]]' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + then \ + sed -i -e 's,\(Dir::Etc::pkgpriorities\)[[:space:]].*$$,\1 "$@";,g' \ + $(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + else \ + echo 'Dir::Etc::pkgpriorities "$@";' \ + >>$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \ + fi; \ + echo "--- Package priorities ---" >&2; \ + cat $@ >&2; \ + echo "---" >&2; \ + fi diff --git a/features.in/plymouth/README b/features.in/plymouth/README new file mode 100644 index 0000000..46a994a --- /dev/null +++ b/features.in/plymouth/README @@ -0,0 +1,5 @@ +Эта фича предназначена для добавления поддержки plymouth +-- современной реализации bootsplash. Плотно взаимодействует +с фичей branding по объективным причинам, но оформлена отдельно +для возможности собирать образы с частичным брендированием либо +"без излишеств". diff --git a/features.in/plymouth/config.mk b/features.in/plymouth/config.mk new file mode 100644 index 0000000..f45dd4f --- /dev/null +++ b/features.in/plymouth/config.mk @@ -0,0 +1,54 @@ ++plymouth: use/plymouth/full; @: + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +# and a few aliases +use/plymouth/live: use/plymouth/stage2; @: +use/plymouth/install2: use/plymouth/stage2; @: + +use/plymouth: + @$(call add_feature) + +# NB: *_REGEXP due to branding() using regexp and the +# dependency resolution having to occur within a +# single transaction (due to plymouth-system-theme) + +# looks like there's no sense to pull in progressbars +# while leaving the very basic text bootloader screen +ifeq (distro,$(IMAGE_CLASS)) +use/plymouth/stage2: use/plymouth use/branding \ + use/stage2/kms + @$(call add,STAGE1_PACKAGES_REGEXP,make-initrd-plymouth) + @$(call add,STAGE1_BRANDING,bootsplash) + @$(call add,STAGE2_BRANDING,bootsplash) + @$(call add,STAGE2_BOOTARGS,quiet splash) +else +use/plymouth/stage2: use/plymouth use/branding; @: +endif + +ifeq (vm,$(IMAGE_CLASS)) +use/plymouth/vm: use/plymouth use/branding use/kernel/initrd-setup + @$(call add,VM_INITRDFEATURES,plymouth) + @$(call add,THE_BRANDING,bootsplash) + @$(call add,THE_PACKAGES,make-initrd-plymouth) + @$(call add,BASE_BOOTARGS,quiet) + @$(call add,THE_KMODULES,drm) +else +use/plymouth/vm: use/plymouth; @: +endif + +use/plymouth/base: use/plymouth/stage2 use/plymouth/vm \ + use/drm/full; @: +ifeq (distro,$(IMAGE_CLASS)) + @$(call add,INSTALL2_PACKAGES,installer-feature-setup-plymouth) +endif + @$(call add,BASE_PACKAGES_REGEXP,make-initrd-plymouth cpio) + @$(call add,THE_BRANDING,bootsplash) + @$(call add,THE_PACKAGES,make-initrd-plymouth) + @$(call add,BASE_BOOTARGS,splash) + +use/plymouth/full: use/plymouth/stage2 use/plymouth/base; @: + +else +use/plymouth use/plymouth/live use/plymouth/install2 use/plymouth/stage2 \ + use/plymouth/base use/plymouth/full: ; @: +endif diff --git a/features.in/plymouth/rootfs/image-scripts.d/10-plymouth b/features.in/plymouth/rootfs/image-scripts.d/10-plymouth new file mode 100755 index 0000000..4e28f55 --- /dev/null +++ b/features.in/plymouth/rootfs/image-scripts.d/10-plymouth @@ -0,0 +1,10 @@ +#!/bin/sh + +CONFIG=/etc/plymouth/plymouthd.conf + +if [ -f "$CONFIG" ]; then + grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG" +fi + +cp -a /usr/share/plymouth/default-install-duration \ + /var/lib/plymouth/boot-duration ||: diff --git a/features.in/plymouth/stage1/scripts.d/11-initrd-plymouth b/features.in/plymouth/stage1/scripts.d/11-initrd-plymouth new file mode 100755 index 0000000..dee8921 --- /dev/null +++ b/features.in/plymouth/stage1/scripts.d/11-initrd-plymouth @@ -0,0 +1,7 @@ +#!/bin/sh +CONFIG=/etc/plymouth/plymouthd.conf + +if [ -f "$CONFIG" ]; then + grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG" + echo 'FEATURES += plymouth' >> /etc/initrd.mk +fi diff --git a/features.in/power/README b/features.in/power/README new file mode 100644 index 0000000..a499391 --- /dev/null +++ b/features.in/power/README @@ -0,0 +1,3 @@ +Эта фича конфигурирует поддержку управления питанием +-- выключение и регулировку частоты CPU для ACPI, +засыпание для APM (не проверялось). diff --git a/features.in/power/config.mk b/features.in/power/config.mk new file mode 100644 index 0000000..40875d5 --- /dev/null +++ b/features.in/power/config.mk @@ -0,0 +1,32 @@ ++power: use/power/acpi/button; @: + +# common +use/power: sub/rootfs use/services + @$(call add_feature) +ifeq (,$(filter-out e2k%,$(ARCH))) + @$(call add,COMMON_PACKAGES,installer-feature-powerbutton-stage3) +endif + +# modern power management +use/power/acpi: use/power + @$(call add,COMMON_PACKAGES,acpid acpi) + @$(call add,DEFAULT_SERVICES_ENABLE,acpid) + +use/power/acpi/button: use/power/acpi +ifeq (,$(filter-out e2k%,$(ARCH))) + @$(call add,COMMON_PACKAGES,acpid-events-e2k) + @$(call add,INSTALL2_PACKAGES,installer-feature-e2k-power-stage2) + @$(call add,DEFAULT_SERVICES_ENABLE,acpid sysfs) +else + @$(call add,COMMON_PACKAGES,acpid-events-power) +endif + +use/power/acpi/powersave: use/power/acpi + @$(call add,COMMON_PACKAGES,powersave) + @$(call add,DEFAULT_SERVICES_DISABLE,acpid) # override + @$(call add,DEFAULT_SERVICES_ENABLE,powersaved) + +# legacy power management +use/power/apm: use/power + @$(call add,COMMON_PACKAGES,apmd lphdisk) + @$(call add,DEFAULT_SERVICES_ENABLE,apmd) diff --git a/features.in/power/rootfs/image-scripts.d/50-power b/features.in/power/rootfs/image-scripts.d/50-power new file mode 100755 index 0000000..15d82fe --- /dev/null +++ b/features.in/power/rootfs/image-scripts.d/50-power @@ -0,0 +1,6 @@ +#!/bin/sh -efu + +# provide kernel interface for ACPI power button +if [ `arch` != e2k -a -x /etc/init.d/acpid ]; then + grep -qsx button /etc/modules || echo button >> /etc/modules +fi diff --git a/features.in/relname/README b/features.in/relname/README new file mode 100644 index 0000000..075afea --- /dev/null +++ b/features.in/relname/README @@ -0,0 +1,4 @@ +Эта фича меняет содержимое файла /etc/altlinux-release в соответствии +с установленной переменной RELNAME, что изменяет пункты загрузки GRUB. + +Применяется при необходимости перекрыть внесенный брендингом текст. diff --git a/features.in/relname/config.mk b/features.in/relname/config.mk new file mode 100644 index 0000000..aedd3b9 --- /dev/null +++ b/features.in/relname/config.mk @@ -0,0 +1,3 @@ +use/relname: + @$(call add_feature) + @$(call xport,RELNAME) diff --git a/features.in/relname/stage2/image-scripts.d/91-relname b/features.in/relname/stage2/image-scripts.d/91-relname new file mode 100755 index 0000000..416b7cf --- /dev/null +++ b/features.in/relname/stage2/image-scripts.d/91-relname @@ -0,0 +1,20 @@ +#!/bin/sh -ef +# create a postinstall script to perform the change afterwards + +if [ -z "$GLOBAL_RELNAME" ]; then + echo "** warning: relname feature enabled but RELNAME not set" >&2 + exit 0 +fi + +if [ -n "$GLOBAL_VERBOSE" ]; then + echo "** Change /etc/altlinux-release contents to the release name" >&2 +fi + +SCRIPT="/usr/share/install2/postinstall.d/91-relname" +cat > "$SCRIPT" << EOF +#!/bin/sh +a= . install2-init-functions +exec_chroot sh -c 'echo "$GLOBAL_RELNAME" > /etc/altlinux-release' +exec_chroot sh -c 'grub-mkconfig -o /boot/grub/grub.cfg >&/dev/null ||:' +EOF +chmod +x "$SCRIPT" diff --git a/features.in/repo/README b/features.in/repo/README new file mode 100644 index 0000000..a6f9107 --- /dev/null +++ b/features.in/repo/README @@ -0,0 +1,8 @@ +Эта фича предназначена для конфигурирования репозиториев +в образе, включая генерацию хэшей и подключение к LiveCD. + +По умолчанию таким репозиторием является RPMS.main +(создаваемый sub/main), но возможно добавление +addons, updates или иных по мере необходимости. + +Результат -- каталог ALTLinux/base/ для копирования в образ. diff --git a/features.in/repo/config.mk b/features.in/repo/config.mk new file mode 100644 index 0000000..ddcf1e0 --- /dev/null +++ b/features.in/repo/config.mk @@ -0,0 +1,15 @@ +use/repo: + @$(call add_feature) + @$(call add,STAGE1_PACKAGES,gnupg) + @$(call xport,ROOTFS_MAIN) + +use/repo/main:: sub/main use/repo; @: + +ifeq (vm,$(IMAGE_CLASS)) +use/repo/main:: + @$(call set,ROOTFS_MAIN,1) + @$(call add,THE_PACKAGES,apt-repo-tools) +endif + +use/repo/addon: use/repo/main + @$(call set,MAIN_SUFFIX,addon) diff --git a/features.in/repo/image-scripts.d/90-enable-repo b/features.in/repo/image-scripts.d/90-enable-repo new file mode 100755 index 0000000..3788147 --- /dev/null +++ b/features.in/repo/image-scripts.d/90-enable-repo @@ -0,0 +1,15 @@ +#!/bin/sh +# enable online repos if possible, just quit if list is absent + +repo_source='/etc/apt/sources.list.d/yandex.list' + +[ -z "$GLOBAL_ROOTFS_MAIN" ] || exit 0 + +[ -s "$repo_source" ] || exit 0 + +# regexps from alterator-pkg (via installer-feature-online-repo) +prefix_re="[[:space:]]*rpm[[:space:]]\+\([^[:space:]]\+[[:space:]]\+\)\?" +host_re="http:\/\/\([^[:space:]]\+\)[[:space:]]\+" +updates_re="${prefix_re}${host_re}\([^[:space:]]\+\/\)\?" + +sed -i "s/^#\($updates_re\)/\1/" "$repo_source" diff --git a/features.in/repo/lib/50-genbasedir.mk b/features.in/repo/lib/50-genbasedir.mk new file mode 100644 index 0000000..81a5ebe --- /dev/null +++ b/features.in/repo/lib/50-genbasedir.mk @@ -0,0 +1,2 @@ +# ../scripts.d/01-genbasedir needs that +CHROOT_PACKAGES += apt-utils diff --git a/features.in/repo/live/image-scripts.d/80-repo-main b/features.in/repo/live/image-scripts.d/80-repo-main new file mode 100755 index 0000000..005602e --- /dev/null +++ b/features.in/repo/live/image-scripts.d/80-repo-main @@ -0,0 +1,10 @@ +#!/bin/sh -efu +# configure package repository of the image (provided by sub/main); +# this script will be run iff both live and repo features are used + +DIR=/etc/apt/sources.list.d + +mkdir -p $DIR && { + echo "# for real stuff you'll need full repo, see apt-repo" + echo "rpm file:/image ALTLinux main" +} > $DIR/main.list diff --git a/features.in/repo/rootfs/image-scripts.d/01-genbasedir-rootfs b/features.in/repo/rootfs/image-scripts.d/01-genbasedir-rootfs new file mode 100755 index 0000000..377122a --- /dev/null +++ b/features.in/repo/rootfs/image-scripts.d/01-genbasedir-rootfs @@ -0,0 +1,35 @@ +#!/bin/sh -eu + +[ -n "$GLOBAL_ROOTFS_MAIN" ] || exit 0 + +mv /ALTLinux /srv/ALT + +PREFIX=/srv/ALT +cd "$PREFIX" + +COMPS="$(find -mindepth 1 -maxdepth 1 -type d -name 'RPMS.*' -printf '%f\n' | + sed 's/^RPMS\.//')" + +[ -z "$GLOBAL_VERBOSE" ] || echo "** COMPS=$COMPS" >&2 +[ -n "$COMPS" ] || exit 1 + +for comp in $COMPS; do + for f in RPMS.$comp/*rpm; do + [ "$f" = "RPMS.$comp/$(rpm -qp $f).rpm" ] || mv $f RPMS.$comp/$(rpm -qp $f).rpm + done +done + +genbasedir \ + --topdir="/" \ + --no-oldhashfile \ + --partial \ + --xz \ + --bz2 \ + --create \ + --notautomatic=false \ + $PREFIX $COMPS + +### drop this when genbasedir is fixed (--no-uncompressed) +for c in $COMPS; do rm -f base/{pkg,src}list.$c; done + +apt-get update diff --git a/features.in/repo/rootfs/image-scripts.d/80-repo-rootfs-main b/features.in/repo/rootfs/image-scripts.d/80-repo-rootfs-main new file mode 100755 index 0000000..dede61a --- /dev/null +++ b/features.in/repo/rootfs/image-scripts.d/80-repo-rootfs-main @@ -0,0 +1,12 @@ +#!/bin/sh -efu +# configure package repository of the image (provided by sub/main); +# this script will be run iff both live and repo features are used + +[ -n "$GLOBAL_ROOTFS_MAIN" ] || exit 0 + +DIR=/etc/apt/sources.list.d + +mkdir -p $DIR && { + echo "# for real stuff you'll need full repo, see apt-repo" + echo "rpm file:/srv/ ALT main" +} > $DIR/main.list diff --git a/features.in/repo/scripts.d/01-genbasedir b/features.in/repo/scripts.d/01-genbasedir new file mode 100755 index 0000000..ba4e1d6 --- /dev/null +++ b/features.in/repo/scripts.d/01-genbasedir @@ -0,0 +1,35 @@ +#!/bin/sh -eu + +PREFIX=ALTLinux +cd "$WORKDIR/$PREFIX" + +COMPS="$(find -mindepth 1 -maxdepth 1 -type d -name 'RPMS.*' -printf '%f\n' | + sed 's/^RPMS\.//')" + +[ -z "$GLOBAL_VERBOSE" ] || echo "** COMPS=$COMPS" >&2 +[ -n "$COMPS" ] || exit 1 + +for comp in $COMPS; do + for f in RPMS.$comp/*rpm; do + [ "$f" = "RPMS.$comp/$(rpm -qp $f).rpm" ] || mv $f RPMS.$comp/$(rpm -qp $f).rpm + done +done + +# NB: bz2 still needed for apt-cdrom add to work +genbasedir \ + --topdir="$WORKDIR" \ + --no-oldhashfile \ + --partial \ + --xz \ + --bz2 \ + --create \ + --notautomatic=false \ + ${INFO_ARCH:+--architecture="$INFO_ARCH"} \ + ${INFO_NAME:+--archive="$INFO_NAME"} \ + ${INFO_VERSION:+--version="$INFO_VERSION"} \ + ${INFO_ORIGIN:+--origin="$INFO_ORIGIN"} \ + ${INFO_LABEL:+--label="$INFO_LABEL"} \ + $PREFIX $COMPS + +### drop this when genbasedir is fixed (--no-uncompressed) +for c in $COMPS; do rm -f base/{pkg,src}list.$c; done diff --git a/features.in/repo/scripts.d/02-pubring b/features.in/repo/scripts.d/02-pubring new file mode 100755 index 0000000..af1f547 --- /dev/null +++ b/features.in/repo/scripts.d/02-pubring @@ -0,0 +1,9 @@ +#!/bin/sh +# generate current plaintext rpm pubring representation +KEYDIR="/usr/lib/alt-gpgkeys" + +if [ -d "$KEYDIR" ]; then + gpg --export --armor --homedir="$KEYDIR" >$WORKDIR/RPM-GPG-KEY +else + echo "** warning: skipping RPM-GPG-KEY generation, $KEYDIR missing" >&2 +fi diff --git a/features.in/rescue/README b/features.in/rescue/README new file mode 100644 index 0000000..5fe5150 --- /dev/null +++ b/features.in/rescue/README @@ -0,0 +1,9 @@ +Эта фича дополняет базовый "живой" образ второй стадии +специфическими для спасательного образа настройками +и скриптовыми хуками. + +Цель use/rescue/rw добавляет предварительно настроенный +пункт загрузки, который в случае "просто гибридного" +(не GPT) ISO, записанного на USB Flash, обеспечит создание +и монтирование дополнительного раздела для сохранения данных +между сессиями. diff --git a/features.in/rescue/config.mk b/features.in/rescue/config.mk new file mode 100644 index 0000000..cf734b3 --- /dev/null +++ b/features.in/rescue/config.mk @@ -0,0 +1,33 @@ +use/rescue/.base: use/stage2 sub/stage2@rescue + @$(call add_feature) + @$(call add,RESCUE_LISTS,sysvinit) + @$(call add,RESCUE_PACKAGES,startup startup-rescue udev) + @$(call add,RESCUE_LISTS,openssh) + +use/rescue/base: use/rescue/.base + @$(call add,RESCUE_PACKAGES,pciutils nfs-utils os-prober) + @$(call add,RESCUE_LISTS,\ + $(call tags,base && (rescue || network || security || archive))) + +use/rescue: use/rescue/.base use/services use/firmware/full +wireless + @$(call add,DEFAULT_SERVICES_DISABLE,rpcbind) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,RESCUE_PACKAGES,grub2-pc lilo syslinux) +endif +ifeq (,$(filter-out ppc64le,$(ARCH))) + @$(call add,RESCUE_PACKAGES,grub-ieee1275) +endif +ifneq (,$(EFI_BOOTLOADER)) + @$(call add,RESCUE_PACKAGES,grub2-efi) +endif + @$(call add,RESCUE_LISTS,\ + $(call tags,(base || extra || server || backup || misc || fs) \ + && !x11 && (rescue || comm || network || security || archive))) + +use/rescue/rw: use/rescue use/syslinux/rescue_rw.cfg use/grub/rescue_rw.cfg; @: + +test/rescue: + @$(call xport,TEST_RESCUE) + +test/rescue/no-x11: test/rescue + @$(call add,TEST_RESCUE,no-x11) diff --git a/features.in/rescue/rescue/image-scripts.d/00-test-rescue b/features.in/rescue/rescue/image-scripts.d/00-test-rescue new file mode 100755 index 0000000..854a489 --- /dev/null +++ b/features.in/rescue/rescue/image-scripts.d/00-test-rescue @@ -0,0 +1,14 @@ +#!/bin/sh -efu + +no_x11() { + if rpmquery libX11 >&/dev/null; then + echo "** rescue image contains libX11 which is prohibited" + rpm -e --test libX11 + exit 1 + fi >&2 +} + +case "${GLOBAL_TEST_RESCUE:-}" in +*no-x11*) + no_x11;; +esac diff --git a/features.in/rescue/rescue/image-scripts.d/20-locale b/features.in/rescue/rescue/image-scripts.d/20-locale new file mode 100755 index 0000000..4eecab9 --- /dev/null +++ b/features.in/rescue/rescue/image-scripts.d/20-locale @@ -0,0 +1,12 @@ +#!/bin/sh -efu +# NB: keyboard layout not included! + +if [ -s /etc/sysconfig/i18n ]; then exit 0; fi + +mkdir -p /etc/sysconfig +cat >> /etc/sysconfig/i18n << _EOF_ +# mkimage-profiles live 20-locale hook +SYSFONT=LatArCyrHeb-16 +LANG=en_US.utf8 +_EOF_ +: diff --git a/features.in/rescue/rescue/image-scripts.d/50-openssh b/features.in/rescue/rescue/image-scripts.d/50-openssh new file mode 100755 index 0000000..ff60c47 --- /dev/null +++ b/features.in/rescue/rescue/image-scripts.d/50-openssh @@ -0,0 +1,19 @@ +#!/bin/sh +# re-enable insecure DSA and DH SHA1 support +# see also: http://www.openssh.com/legacy.html + +# any openssh at all? +[ -d /etc/openssh ] && cd /etc/openssh || exit 0 + +# is it p7 or earlier (which won't grok the lines added below)? +[ $(rpmvercmp $(rpmquery --qf='%{VERSION}' openssh-common) 7.0) != "-1" ] || + exit 0 + +KEY_TYPES="PubkeyAcceptedKeyTypes +ssh-dss,ssh-dss-cert-v01@openssh.com" +KEX_ALGOS="KexAlgorithms +diffie-hellman-group1-sha1" + +grep -qs "^$KEY_TYPES" sshd_config || echo "$KEY_TYPES" >> sshd_config +grep -qs "^$KEY_TYPES" ssh_config || echo "$KEY_TYPES" >> ssh_config +grep -qs "^$KEX_ALGOS" ssh_config || echo "$KEX_ALGOS" >> ssh_config + +: diff --git a/features.in/rescue/rescue/image-scripts.d/60-apt b/features.in/rescue/rescue/image-scripts.d/60-apt new file mode 100755 index 0000000..eddeee3 --- /dev/null +++ b/features.in/rescue/rescue/image-scripts.d/60-apt @@ -0,0 +1,5 @@ +#!/bin/sh +# enable online repository even more unconditionally + +sed -i "s,^#\(rpm .* http.*\),\1," "/etc/apt/sources.list.d/yandex.list" || + echo "** warning: unable to enable online repos" >&2 diff --git a/features.in/rescue/rescue/image-scripts.d/70-cleanup-locale.sh b/features.in/rescue/rescue/image-scripts.d/70-cleanup-locale.sh new file mode 100755 index 0000000..ccf6593 --- /dev/null +++ b/features.in/rescue/rescue/image-scripts.d/70-cleanup-locale.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# cleanup extra locales +CLEANUP_DIRS="/usr/lib/locale /usr/share/locale" + +for CLEANUP_DIR in $CLEANUP_DIRS; do +cd "$CLEANUP_DIR" +rm -fr $(ls -1 |sed '/en_US/d' | tr -s '\r\n' ' ') +done diff --git a/features.in/rescue/rescue/image-scripts.d/98-init-rescue b/features.in/rescue/rescue/image-scripts.d/98-init-rescue new file mode 100755 index 0000000..51ebc1e --- /dev/null +++ b/features.in/rescue/rescue/image-scripts.d/98-init-rescue @@ -0,0 +1,23 @@ +#!/bin/sh + +# m-p-d::profiles/rescue/image-scripts.d/999system +mv -f -- /etc/inittab.rescue /etc/inittab + +# enable NFS mounts +if [ -x /etc/rc.d/init.d/rpcbind ]; then + chkconfig rpcbind on + sed -i 's,#\(RPCBIND_ARGS="-l".*\),\1,' /etc/sysconfig/rpcbind +fi + +# remove unwanted startup scripts +echo "** removing initscripts:" +find /etc/rc.d/rc{2,3,4,5}.d/ -type l -name 'S*' \ + -not -name '*livecd-net-eth' \ + -not -name '*logd' \ + -not -name '*network' \ + -not -name '*rpcbind' \ + -not -name '*random' \ + -not -name '*rescue-remote' \ + -not -name '*sysreport' \ + -not -name '*udev*' \ + -delete -print diff --git a/features.in/rescue/rescue/stage2cfg.mk b/features.in/rescue/rescue/stage2cfg.mk new file mode 100644 index 0000000..6b03fcd --- /dev/null +++ b/features.in/rescue/rescue/stage2cfg.mk @@ -0,0 +1,12 @@ +# stage2 mod: rescue "live" image + +IMAGE_PACKAGES = $(COMMON_PACKAGES) \ + $(RESCUE_PACKAGES) \ + $(call list,$(RESCUE_LISTS) $(COMMON_LISTS)) \ + interactivesystem startup-rescue + +MKI_PACK_RESULTS = squash:rescue + +debug:: + @echo "** rescue: IMAGE_PACKAGES: $(IMAGE_PACKAGES)" + @echo "** rescue: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)" diff --git a/features.in/robotics/README b/features.in/robotics/README new file mode 100644 index 0000000..d9031e7 --- /dev/null +++ b/features.in/robotics/README @@ -0,0 +1,3 @@ +Набор ПО для управления роботами: 3D-принтерами RepRap и УМКИ, которым +можно управлять из программ на Кумире. Дополнительно для RepRap +добавлены Blender и FreeCad. \ No newline at end of file diff --git a/features.in/robotics/config.mk b/features.in/robotics/config.mk new file mode 100644 index 0000000..d0792b7 --- /dev/null +++ b/features.in/robotics/config.mk @@ -0,0 +1,9 @@ ++robotics: use/robotics/reprap use/robotics/umki; @: + +use/robotics/reprap: use/x11/3d + @$(call add_feature) + @$(call add,THE_LISTS,robotics/reprap) + +use/robotics/umki: + @$(call add_feature) + @$(call add,THE_LISTS,robotics/umki) diff --git a/features.in/server/README b/features.in/server/README new file mode 100644 index 0000000..889764c --- /dev/null +++ b/features.in/server/README @@ -0,0 +1,2 @@ +Эта фича предоставляет типичные для серверных образов +наборы списков пакетов и модулей ядра. diff --git a/features.in/server/config.mk b/features.in/server/config.mk new file mode 100644 index 0000000..dde38cc --- /dev/null +++ b/features.in/server/config.mk @@ -0,0 +1,60 @@ +use/server: sub/rootfs use/services + @$(call add_feature) + +use/server/base: use/server use/firmware/server \ + use/net-ssh use/syslinux/timeout/600 use/grub/timeout/60 + @$(call set,BOOTVGA,) + @$(call add,THE_LISTS,server-base) + @$(call add,THE_KMODULES,e1000e igb) + @$(call add,STAGE1_KMODULES,e1000e) + @$(call add,INSTALL2_PACKAGES,installer-feature-server-raid-fixup-stage2) + +use/server/mini: use/server/base use/services/lvm2-disable + @$(call add,THE_LISTS,\ + $(call tags,base && (network || security || pkg))) + @$(call add,THE_LISTS,$(call tags,extra && (server || network))) + @$(call add,MAIN_LISTS,osec) + @$(call add,DEFAULT_SERVICES_DISABLE,messagebus) + +use/server/ovz-base: use/server + @$(call set,STAGE1_KFLAVOURS,std-def) + @$(call set,KFLAVOURS,std-def ovz-el) + @$(call add,BASE_PACKAGES,lftp wget hdparm) + @$(call add,BASE_LISTS,$(call tags,base openvz)) + +use/server/ovz: use/server/ovz-base + @$(call add,MAIN_KMODULES,ipset ipt-netflow) + @$(call add,MAIN_KMODULES,xtables-addons) # t6/branch + @$(call add,MAIN_KMODULES,drbd9 kvm) + @$(call add,MAIN_KMODULES,staging) + @$(call add,BASE_LISTS,$(call tags,server openvz)) + +use/server/virt: use/server use/kernel + @$(call add,BASE_PACKAGES,openssh) + @$(call set,STAGE1_KFLAVOURS,std-def) + @$(call set,KFLAVOURS,std-def) + @$(call add,THE_KMODULES,kvm) + +# NB: examine zabbix-preinstall package, initialization is NOT automatic! +use/server/zabbix: use/server use/services use/control + @$(call add,THE_LISTS,$(call tags,server zabbix)) + @$(call add,DEFAULT_SERVICES_ENABLE,zabbix_mysql zabbix_agentd) + @$(call add,DEFAULT_SERVICES_ENABLE,httpd2 mysqld postfix) + @$(call add,CONTROL,postfix:server) + +use/server/groups/tools: use/server + @$(call add,MAIN_GROUPS,tools/diag tools/ipmi tools/monitoring) + @$(call add,MAIN_GROUPS,tools/tuning) + +use/server/groups/services: use/server + @$(call add,BASE_KMODULES,kvm) + @$(call add,MAIN_GROUPS,server/dhcp server/dns server/mail) + @$(call add,MAIN_GROUPS,server/apache2 server/nginx) + @$(call add,MAIN_GROUPS,server/mariadb server/pgsql) + @$(call add,MAIN_GROUPS,server/php7) + @$(call add,MAIN_GROUPS,server/ftp server/rsync) + @$(call add,MAIN_GROUPS,server/kvm) + @$(call add,DEFAULT_SERVICES_ENABLE,libvirtd) + @$(call add,DEFAULT_SERVICES_DISABLE,php7-fpm) + +use/server/groups/base: use/server/groups/tools use/server/groups/services; @: diff --git a/features.in/services/README b/features.in/services/README new file mode 100644 index 0000000..a150415 --- /dev/null +++ b/features.in/services/README @@ -0,0 +1,13 @@ +Данная фича конфигурирует автоматический запуск сервисов +при загрузке системы. + +Поскольку в конкретном образе может быть желательно перекрыть +умолчания предыдущей конфигурации, рекомендуется в фичах работать +с переменными DEFAULT_SERVICES_* и оставить переменные SERVICES_* +для релиз-менеджеров. + +Выключение сервиса в каждой из этих пар имеет приоритет перед +включением. + +Предприняты особые меры в виде скрипта для install2, +чтобы передать указание настроить службы инсталятору. diff --git a/features.in/services/config.mk b/features.in/services/config.mk new file mode 100644 index 0000000..36074b7 --- /dev/null +++ b/features.in/services/config.mk @@ -0,0 +1,13 @@ +use/services: sub/rootfs + @$(call add_feature) + @$(call xport,DEFAULT_SERVICES_ENABLE) + @$(call xport,DEFAULT_SERVICES_DISABLE) + @$(call xport,SERVICES_ENABLE) + @$(call xport,SERVICES_DISABLE) + @$(call xport,SYSTEMD_SERVICES_ENABLE) + @$(call xport,SYSTEMD_SERVICES_DISABLE) + +use/services/lvm2-disable: use/services + @$(call add,DEFAULT_SERVICES_DISABLE,lvm2-lvmetad) + @$(call add,DEFAULT_SERVICES_DISABLE,lvm2-lvmpolld) + @$(call add,DEFAULT_SERVICES_DISABLE,lvm2-monitor) diff --git a/features.in/services/install2/image-scripts.d/10-services b/features.in/services/install2/image-scripts.d/10-services new file mode 100755 index 0000000..e6ac1f0 --- /dev/null +++ b/features.in/services/install2/image-scripts.d/10-services @@ -0,0 +1,82 @@ +#!/bin/sh + +# this script piggybacks service status information +# into the system to be installed (instead of applying +# it to rootfs being formed immediately) + +# NB: install2 is not a rootfs, handling differs either + +STATUS=`mktemp` +CONFDIR=/usr/share/install2 +CHECK_FILES= + +. shell-config + +switch() { + local sname="$1" + + sname="${sname%.service}" + sname="${sname%.socket}" + + [ -n "$CHECK_FILES" ] && \ + egrep -qs "^[[:blank:]]*$sname(.service|.socket)?[[:blank:]]*$" \ + $CHECK_FILES && return ||: + + # avoid service duplication: drop sevice without unit type + [ "$sname" = "$1" ] || shell_config_del "$STATUS" "$sname" + + case "$2" in + on|off) + shell_config_set "$STATUS" "$1" "$2";; + esac +} + +for f in services-on services-off systemd-enabled systemd-disabled; do + [ -s "$CONFDIR/$f" ] || continue + CHECK_FILES="$CHECK_FILES $CONFDIR/$f" +done + +# defaults (most likely features.in ones) +for i in $GLOBAL_DEFAULT_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_DEFAULT_SERVICES_DISABLE; do switch $i off; done + +# explicitly specified behaviour (e.g. via conf.d) +for i in $GLOBAL_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SERVICES_DISABLE; do switch $i off; done + +# systemd services +for i in $GLOBAL_SYSTEMD_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SYSTEMD_SERVICES_DISABLE; do switch $i off; done + +SERVICES="$GLOBAL_DEFAULT_SERVICES_ENABLE $GLOBAL_DEFAULT_SERVICES_DISABLE" +SERVICES="$SERVICES $GLOBAL_SERVICES_ENABLE $GLOBAL_SERVICES_DISABLE" +SERVICES="$SERVICES $GLOBAL_SYSTEMD_SERVICES_ENABLE $GLOBAL_SYSTEMD_SERVICES_DISABLE" +SERVICES="$(echo $SERVICES | sort -u)" + +for i in $SERVICES; do + onoff="$(shell_config_get "$STATUS" "$i")" + [ -n "$onoff" ] || continue + echo "$i" >> "$CONFDIR"/services-"$onoff" +done + +if [ -s "$CONFDIR"/services-on ]; then + if [ -s "$CONFDIR"/systemd-enabled ] || [ -n "$GLOBAL_SYSTEMD_SERVICES_ENABLE" ]; then + cat "$CONFDIR"/services-on >>"$CONFDIR"/systemd-enabled + rm "$CONFDIR"/services-on + else + cp -a "$CONFDIR"/{services-on,systemd-enabled} + fi +fi + +if [ -s "$CONFDIR"/services-off ]; then + if [ -s "$CONFDIR"/systemd-disabled ] || [ -n "$GLOBAL_SYSTEMD_SERVICES_DISABLE" ]; then + cat "$CONFDIR"/services-off >>"$CONFDIR"/systemd-disabled + rm "$CONFDIR"/services-off + else + cp -a "$CONFDIR"/{services-off,systemd-disabled} + fi +fi + +rm "$STATUS" + +: diff --git a/features.in/services/rootfs/image-scripts.d/10-services b/features.in/services/rootfs/image-scripts.d/10-services new file mode 100755 index 0000000..d84fabd --- /dev/null +++ b/features.in/services/rootfs/image-scripts.d/10-services @@ -0,0 +1,40 @@ +#!/bin/sh +# this script implements the services regulation +# according to what has been decided in the profile + +CHKCONFIG= +SYSTEMCTL= + +[ ! -x /sbin/chkconfig ] || CHKCONFIG=1 +[ ! -x /bin/systemctl ] || SYSTEMCTL=1 + +[ -n "$CHKCONFIG$SYSTEMCTL" ] || exit 0 + +switch() { + case "$2" in + on) + cc=on; sc=enable;; + off) + cc=off; sc=disable;; + esac + + { + [ -z "$SYSTEMCTL" ] || /bin/systemctl --no-reload $sc $1 + [ -z "$CHKCONFIG" ] || /sbin/chkconfig $1 $cc + } # 2>/dev/null +} + +# defaults (most likely features.in ones) +for i in $GLOBAL_DEFAULT_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_DEFAULT_SERVICES_DISABLE; do switch $i off; done + +# explicitly specified behaviour (e.g. via conf.d) +for i in $GLOBAL_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SERVICES_DISABLE; do switch $i off; done + +# systemd services +CHKCONFIG= +for i in $GLOBAL_SYSTEMD_SERVICES_ENABLE; do switch $i on; done +for i in $GLOBAL_SYSTEMD_SERVICES_DISABLE; do switch $i off; done + +: diff --git a/features.in/slinux/README b/features.in/slinux/README new file mode 100644 index 0000000..1d16d48 --- /dev/null +++ b/features.in/slinux/README @@ -0,0 +1 @@ +Наборы пакетов для семейства дистрибутивов Simply Linux. diff --git a/features.in/slinux/config.mk b/features.in/slinux/config.mk new file mode 100644 index 0000000..80fb41e --- /dev/null +++ b/features.in/slinux/config.mk @@ -0,0 +1,121 @@ +use/slinux: use/x11 use/volumes/alt-workstation + @$(call add_feature) + @$(call set,BRANDING,simply-linux) + @$(call set,GRUBTHEME,slinux) + @$(call add,THE_BRANDING,menu xfce-settings system-settings) + @$(call set,META_PUBLISHER,BaseALT Ltd) + @$(call set,META_VOL_SET,ALT) + +use/slinux/services-enabled: + @$(call add_feature) + @$(call add,SYSTEMD_SERVICES_ENABLE,NetworkManager.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,NetworkManager-wait-online.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,ModemManager.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,alteratord.socket) + @$(call add,SYSTEMD_SERVICES_ENABLE,anacron.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,avahi-daemon.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,bluetooth.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,cpufreq-simple.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,crond.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,cups.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,dnsmasq.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,lightdm.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,lvm2-monitor.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,network.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,nmb.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,smb.service) + @$(call add,SYSTEMD_SERVICES_ENABLE,x11presetdrv.service) + +use/slinux/services-disabled: + @$(call add_feature) + @$(call add,SYSTEMD_SERVICES_DISABLE,acpid.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,clamd.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,consolesaver.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,cups.socket) + @$(call add,SYSTEMD_SERVICES_DISABLE,ethtool.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,haspd.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,iptables.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,krb5kdc.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,lm_sensors.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,openvpn.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,sshd.service) + @$(call add,SYSTEMD_SERVICES_DISABLE,syslogd.service) + +use/slinux/services: use/slinux/services-enabled use/slinux/services-disabled + +ifeq (,$(filter-out riscv64,$(ARCH))) +use/slinux/vm-base:: use/oem/vnc + @$(call set,KFLAVOURS,un-def) +endif + +use/slinux/vm-base:: vm/systemd \ + use/oem/distro use/slinux/mixin-base + @$(call add,THE_LISTS,slinux/games-base) + @$(call add,THE_LISTS,slinux/graphics-base) + @$(call add,THE_LISTS,slinux/multimedia-base) + @$(call add,THE_LISTS,slinux/net-base) + @$(call add,THE_PACKAGES,installer-feature-lightdm-stage3) + @$(call add,THE_PACKAGES,installer-feature-online-repo) + @$(call add,THE_PACKAGES,installer-feature-samba-usershares-stage2) + @$(call add,THE_PACKAGES,installer-feature-sudo-enable-by-default-stage3) + +use/slinux/mixin-base: use/slinux use/x11/xorg use/x11/lightdm/gtk +pulse \ + +nm use/x11/gtk/nm +systemd +systemd-optimal +wireless \ + use/l10n/default/ru_RU \ + use/ntp/chrony \ + use/office/LibreOffice/full \ + use/docs/manual use/docs/indexhtml \ + use/xdg-user-dirs/deep use/slinux/services + @$(call set,DOCS,simply-linux) + @$(call add,THE_LISTS,gnome-p2p) + @$(call add,LIVE_LISTS,slinux/games-base) + @$(call add,LIVE_LISTS,slinux/graphics-base) + @$(call add,LIVE_LISTS,slinux/multimedia-base) + @$(call add,LIVE_LISTS,slinux/net-base) + @$(call add,THE_LISTS,slinux/misc-base) + @$(call add,THE_LISTS,slinux/xfce-base) + @$(call add,THE_LISTS,$(call tags,base l10n)) + @$(call add,THE_KMODULES,staging) +ifeq (,$(filter-out armh aarch64 mipsel e2k%,$(ARCH))) + @$(call add,THE_LISTS,slinux/browser-firefox) +else + @$(call add,THE_LISTS,slinux/browser-chromium) +endif +ifeq (,$(filter-out armh aarch64 i586 x86_64,$(ARCH))) + @$(call set,KFLAVOURS,std-def) +endif + +use/slinux/base: use/isohybrid use/luks \ + +plymouth use/memtest +vmguest \ + +efi \ + use/stage2/fs use/stage2/hid use/stage2/md \ + use/stage2/mmc use/stage2/net use/stage2/net-nfs use/stage2/cifs \ + use/stage2/rtc use/stage2/sbc use/stage2/scsi use/stage2/usb \ + use/live/x11 use/live/rw use/install2/fonts \ + use/install2/fat \ + use/efi/memtest86 use/efi/shell \ + use/bootloader/grub \ + use/branding/complete \ + mixin/desktop-installer \ + use/vmguest/kvm/x11 use/stage2/kms \ + use/e2k/multiseat/full use/e2k/x11/101 use/e2k/sound/401 \ + use/slinux/mixin-base \ + use/cleanup/live-no-cleanupdb + @$(call add,LIVE_LISTS,slinux/live) + @$(call add,BASE_PACKAGES,installer-distro-simply-linux-stage3) + @$(call add,STAGE2_PACKAGES,xorg-conf-libinput-touchpad) +ifeq (,$(filter-out armh aarch64 mipsel e2k%,$(ARCH))) + @$(call add,THE_LISTS,slinux/multimedia-player-celluloid) +else + @$(call add,THE_LISTS,slinux/multimedia-player-vlc) +endif + +use/slinux/full: use/slinux/base + @$(call add,MAIN_LISTS,slinux/not-install-full) + @$(call add,THE_LISTS,slinux/misc-full) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call add,THE_KMODULES,virtualbox) + @$(call add,THE_KMODULES,nvidia) +# @$(call add,THE_KMODULES,fglrx) + @$(call add,MAIN_KMODULES,bbswitch) +endif diff --git a/features.in/slinux/live/image-scripts.d/30-local-time b/features.in/slinux/live/image-scripts.d/30-local-time new file mode 100755 index 0000000..d798643 --- /dev/null +++ b/features.in/slinux/live/image-scripts.d/30-local-time @@ -0,0 +1,5 @@ +#!/bin/bash +# Set system time to local time. + +CONFIG="/etc/sysconfig/clock" +sed -i 's/^UTC=true/UTC=false/' "$CONFIG" diff --git a/features.in/slinux/live/image-scripts.d/40-slinux-installer.sh b/features.in/slinux/live/image-scripts.d/40-slinux-installer.sh new file mode 100755 index 0000000..094a00a --- /dev/null +++ b/features.in/slinux/live/image-scripts.d/40-slinux-installer.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# Customize live installer + +[ -d /etc/livecd-install ] || exit 0 + +# Use custom luks step +sed -i 's;^luks$;slinux-luks;' /etc/livecd-install/steps diff --git a/features.in/slinux/live/image-scripts.d/50-services b/features.in/slinux/live/image-scripts.d/50-services new file mode 100755 index 0000000..69124b4 --- /dev/null +++ b/features.in/slinux/live/image-scripts.d/50-services @@ -0,0 +1,21 @@ +#!/bin/sh +# see also m-p-d::profiles/live/image-scripts.d/init3-services + +ENABLE=" +livecd-setlocale +livecd-evms +livecd-save-nfs +livecd-timezone +" + +DISABLE=" +" + +for i in $ENABLE; do + /bin/systemctl --no-reload enable "$i" ||: +done + +for i in $DISABLE; do + /bin/systemctl --no-reload disable "$i" ||: +done +: diff --git a/features.in/slinux/rootfs/image-scripts.d/60-no-bell b/features.in/slinux/rootfs/image-scripts.d/60-no-bell new file mode 100755 index 0000000..a39dce3 --- /dev/null +++ b/features.in/slinux/rootfs/image-scripts.d/60-no-bell @@ -0,0 +1,17 @@ +#!/bin/sh -efu + +cat >>"/etc/inputrc" </etc/X11/xinit.d/disable-bell < /etc/rc.d/rc.local +#!/bin/sh + +for i in Master PCM Headphone; do + amixer set $i 75% + amixer set $i toggle +done >&/dev/null + +EOF + +chmod 755 /etc/rc.d/rc.local diff --git a/features.in/speech/live/image-scripts.d/10-voiceman b/features.in/speech/live/image-scripts.d/10-voiceman new file mode 100755 index 0000000..5490497 --- /dev/null +++ b/features.in/speech/live/image-scripts.d/10-voiceman @@ -0,0 +1,15 @@ +#!/bin/sh -e + +case "$GLOBAL_SPEECH_LANG" in +en) + ln -s ../tts.d/espeak.voiceman /etc/voiceman.d/espeak.output + ;; +ru) + ln -s ../tts.d/rhvoice-en.voiceman /etc/voiceman.d/rhvoice-en.output + ln -s ../tts.d/rhvoice.voiceman /etc/voiceman.d/rhvoice.output + ;; +*) + echo "** error: speech feature used with no language chosen" >&2 + exit 1 + ;; +esac diff --git a/features.in/stage2/README b/features.in/stage2/README new file mode 100644 index 0000000..c9e10c6 --- /dev/null +++ b/features.in/stage2/README @@ -0,0 +1,9 @@ +Эта фича служит для добавления в первую стадию хуков, необходимых +при наличии в stage1 ядра (что типично, но не обязательно). + +Передача информации о конфигурации ядра между stage1 и stage2 также +требуется для оптимального сжатия squashfs-образа второй стадии. + +Возможно пополнение списка опций конфигурации ядра (CONFIG_*), +необходимых для загрузки целевого дистрибутива, посредством +переменной STAGE1_KCONFIG (см. фичу efi в качестве примера). diff --git a/features.in/stage2/config.mk b/features.in/stage2/config.mk new file mode 100644 index 0000000..e0ec1cb --- /dev/null +++ b/features.in/stage2/config.mk @@ -0,0 +1,57 @@ +# "1" is not a typo +use/stage2:: sub/stage1 + @$(call add_feature) + @$(call add,STAGE1_PACKAGES,make-initrd file iproute2) + @$(call add,STAGE1_MODLISTS,$$(FEATURES)) + @$(call xport,STAGE1_PACKAGES) + @$(call xport,STAGE1_KCONFIG) + @$(call set,GLOBAL_HSH_PROC,1) + +ifneq (,$(filter-out e2k%,$(ARCH))) +ifeq (,$(BRANCH)) +use/stage2:: use/initrd-bootchain; @: +else ifneq (,$(filter-out p10 p9 p8 p7 p6 p5,$(BRANCH))) +use/stage2:: use/initrd-bootchain; @: +else +use/stage2:: use/initrd-propagator; @: +endif +else +use/stage2:: use/initrd-propagator; @: +endif + +# building blocks for propagator's module cove +use/stage2/ata use/stage2/drm use/stage2/fs use/stage2/hid use/stage2/md \ + use/stage2/mmc use/stage2/net use/stage2/net-cifs use/stage2/net-nfs \ + use/stage2/pcmcia use/stage2/rtc use/stage2/scsi use/stage2/usb \ + use/stage2/virtio: \ + use/stage2/%: use/stage2 + @$(call add,STAGE1_MODLISTS,stage2-$*) + +use/stage2/sbc: use/stage2 +ifeq (,$(filter-out aarch64,$(ARCH))) + @$(call add,STAGE1_MODLISTS,stage2-sbc-aarch64) +endif + @: + +use/stage2/kms: use/stage2/drm use/drm/stage2/full; @: + +use/stage2/kms/nvidia: use/stage2/kms \ + use/drm/stage2/nvidia; @: + +# install mount.cifs to stage1 +# NB: there's builtin nfsmount there, no reason for nfs-utils +use/stage2/cifs: use/stage2/net-cifs + @$(call add,STAGE1_PACKAGES,cifs-utils) + +# grub submenu 'Network installation' +use/stage2/net-install: use/stage2/net use/stage2/cifs \ + use/stage2/net-nfs use/grub/netinstall.cfg; @: + +# eth0 instead of enp0s3 +use/stage2/net-eth: use/stage2 + @$(call add,STAGE1_PACKAGES,udev-rule-generator-net) + @$(call add,STAGE2_PACKAGES,udev-rule-generator-net livecd-net-eth) + +# NB: sub/stage2 isn't used standalone but rather +# as a base for various livecd modifications +# (currently install2, live, rescue) diff --git a/features.in/stage2/stage1/modules.d/10-stage2 b/features.in/stage2/stage1/modules.d/10-stage2 new file mode 100644 index 0000000..917e06b --- /dev/null +++ b/features.in/stage2/stage1/modules.d/10-stage2 @@ -0,0 +1,208 @@ +# a copy of the old static modules file for compatibility +kernel/drivers/ata +kernel/drivers/block +kernel/drivers/crypto +kernel/drivers/gpu/drm +kernel/drivers/hid +kernel/drivers/md +kernel/drivers/net/\([^w]\|w[^i]\).\+\.ko +kernel/drivers/rtc +kernel/drivers/scsi +kernel/drivers/usb/host +kernel/drivers/usb/storage +kernel/drivers/virtio +kernel/lib +3c574_cs.ko +3c589_cs.ko +3c59x.ko +3w-9xxx.ko +3w-xxxx.ko +8139too.ko +8390.ko +a100u2w.ko +aacraid.ko +acenic.ko +advansys.ko +af_packet.ko +aic7xxx.ko +amd8111e.ko +arc4.ko +ata_piix.ko +atl1.ko +atl1e.ko +atl2.ko +atp870u.ko +atp.ko +aufs.ko +overlay.ko +axnet_cs.ko +b44.ko +bnx2.ko +bsd_comp.ko +BusLogic.ko +cassini.ko +catc.ko +cciss.ko +cdrom.ko +ch.ko +cifs.ko +cmac.ko. +DAC960.ko +dc395x.ko +de4x5.ko +defxx.ko +dl2k.ko +dmfe.ko +dmx3191d.ko +dpt_i2o.ko +e1000.ko +e1000e.ko +e100.ko +eata.ko +ehci-hcd.ko +ehci_marvell.ko +epic100.ko +eql.ko +ext2.ko +ext3.ko +ext4.ko +fat.ko +fdomain.ko +fealnx.ko +fmvj18x_cs.ko +forcedeth.ko +gdth.ko +hamachi.ko +hp100.ko +hptiop.ko +i82092.ko +ifb.ko +imm.ko +initio.ko +ipr.ko +ips.ko +iscsi_tcp.ko +isofs.ko +kaweth.ko +libata.ko +libiscsi.ko +lockd.ko +loop.ko +md4.ko +megaraid.ko +megaraid_mbox.ko +mii.ko +natsemi.ko +ne2k-pci.ko +netconsole.ko +nfs.ko +nfsv2.ko +nfsv3.ko +nfsv4.ko +nls_base.ko +nls_cp866.ko +nls_koi8-r.ko +nmclan_cs.ko +ns83820.ko +ohci-hcd.ko +osst.ko +pata_it8213.ko +pata_marvell.ko +pcmcia_core.ko +pcmcia.ko +pcnet32.ko +pcnet_cs.ko +pd6729.ko +pdc_adma.ko +pegasus.ko +plip.ko +ppa.ko +ppp_async.ko +ppp_deflate.ko +ppp_generic.ko +ppp_mppe.ko +pppoe.ko +pppox.ko +ppp_synctty.ko +qla1280.ko +r8169.ko +raid_class.ko +reiserfs.ko +rrunner.ko +s2io.ko +sata_mv.ko +sata_nv.ko +sata_promise.ko +sata_qstor.ko +sata_sil24.ko +sata_sil.ko +sata_sis.ko +sata_svw.ko +sata_sx4.ko +sata_uli.ko +sata_via.ko +sata_vsc.ko +sb1000.ko +scsi_mod.ko +scsi_transport_fc.ko +scsi_transport_iscsi.ko +scsi_transport_sas.ko +scsi_transport_spi.ko +sd_mod.ko +serial_cs.ko +sg.ko +sha256-ssse3.ko +sis190.ko +sis900.ko +skge.ko +sky2.ko +slhc.ko +slip.ko +smc91c92_cs.ko +squashfs.ko +sr_mod.ko +starfire.ko +stex.ko +st.ko +sundance.ko +sungem.ko +sungem_phy.ko +sunhme.ko +sunrpc.ko +sym53c8xx.ko +tg3.ko +tlan.ko +tulip.ko +tun.ko +typhoon.ko +uhci-hcd.ko +usbcore.ko +usbhid.ko +usbnet.ko +usb-libusual.ko +usb-storage.ko +vfat.ko +via-rhine.ko +via-velocity.ko +winbond-840.ko +xirc2ps_cs.ko +xircom_cb.ko +yellowfin.ko +yenta_socket.ko +ahci.ko +dm-mod.ko +evdev.ko +ext2.ko +mbcache.ko +nls_cp866.ko +nls_koi8-r.ko +nls_utf8.ko +scsi_mod.ko +sd_mod.ko +serio_raw.ko +sr_mod.ko +sdhci.ko +sdhci-pci.ko +xhci-hcd.ko +xhci-pci.ko +uas.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-ata b/features.in/stage2/stage1/modules.d/50-stage2-ata new file mode 100644 index 0000000..fb9d567 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-ata @@ -0,0 +1,21 @@ +kernel/drivers/ata +kernel/drivers/block +ahci.ko +ahci_platform.ko +ata_piix.ko +libata.ko +pata_it8213.ko +pata_marvell.ko +pdc_adma.ko +sata_mv.ko +sata_nv.ko +sata_promise.ko +sata_qstor.ko +sata_sil.ko +sata_sil24.ko +sata_sis.ko +sata_svw.ko +sata_sx4.ko +sata_uli.ko +sata_via.ko +sata_vsc.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-drm b/features.in/stage2/stage1/modules.d/50-stage2-drm new file mode 100644 index 0000000..9efbd2d --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-drm @@ -0,0 +1 @@ +kernel/drivers/gpu/drm diff --git a/features.in/stage2/stage1/modules.d/50-stage2-fs b/features.in/stage2/stage1/modules.d/50-stage2-fs new file mode 100644 index 0000000..52dbc6c --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-fs @@ -0,0 +1,10 @@ +exfat.ko +ext2.ko +ext3.ko +ext4.ko +fat.ko +mbcache.ko +ntfs.ko +fuse.ko +reiserfs.ko +vfat.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-hid b/features.in/stage2/stage1/modules.d/50-stage2-hid new file mode 100644 index 0000000..24f516f --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-hid @@ -0,0 +1 @@ +kernel/drivers/hid diff --git a/features.in/stage2/stage1/modules.d/50-stage2-md b/features.in/stage2/stage1/modules.d/50-stage2-md new file mode 100644 index 0000000..68ae216 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-md @@ -0,0 +1,2 @@ +kernel/drivers/md +dm-mod.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-mmc b/features.in/stage2/stage1/modules.d/50-stage2-mmc new file mode 100644 index 0000000..39b7c34 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-mmc @@ -0,0 +1,7 @@ +iosf_mbi.ko +mmc_block.ko +mmc_core.ko +sdhci-acpi.ko +sdhci-pci.ko +sdhci-pltfm.ko +sdhci.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-net b/features.in/stage2/stage1/modules.d/50-stage2-net new file mode 100644 index 0000000..4f90db1 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-net @@ -0,0 +1,81 @@ +kernel/drivers/net/\([^w]\|w[^i]\).\+\.ko +kernel/drivers/net/ethernet +3c574_cs.ko +3c589_cs.ko +3c59x.ko +8139too.ko +8390.ko +acenic.ko +af_packet.ko +amd8111e.ko +atl1.ko +atl1e.ko +atl2.ko +atp.ko +axnet_cs.ko +b44.ko +bnx2.ko +bsd_comp.ko +cassini.ko +catc.ko +de4x5.ko +defxx.ko +dl2k.ko +dmfe.ko +e100.ko +e1000.ko +e1000e.ko +epic100.ko +eql.ko +fealnx.ko +fmvj18x_cs.ko +forcedeth.ko +hamachi.ko +hp100.ko +ifb.ko +kaweth.ko +mii.ko +natsemi.ko +ne2k-pci.ko +netconsole.ko +nmclan_cs.ko +ns83820.ko +pcnet32.ko +pcnet_cs.ko +pegasus.ko +plip.ko +ppp_async.ko +ppp_deflate.ko +ppp_generic.ko +ppp_mppe.ko +ppp_synctty.ko +pppoe.ko +pppox.ko +r8169.ko +rrunner.ko +s2io.ko +sb1000.ko +sis190.ko +sis900.ko +skge.ko +sky2.ko +slhc.ko +slip.ko +smc91c92_cs.ko +starfire.ko +sundance.ko +sungem.ko +sungem_phy.ko +sunhme.ko +tg3.ko +tlan.ko +tulip.ko +tun.ko +typhoon.ko +usbnet.ko +via-rhine.ko +via-velocity.ko +winbond-840.ko +xirc2ps_cs.ko +xircom_cb.ko +yellowfin.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-net-cifs b/features.in/stage2/stage1/modules.d/50-stage2-net-cifs new file mode 100644 index 0000000..6d67413 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-net-cifs @@ -0,0 +1,2 @@ +cifs.ko +cmac.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-net-nfs b/features.in/stage2/stage1/modules.d/50-stage2-net-nfs new file mode 100644 index 0000000..605c219 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-net-nfs @@ -0,0 +1,6 @@ +lockd.ko +nfs.ko +nfsv2.ko +nfsv3.ko +nfsv4.ko +sunrpc.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-pcmcia b/features.in/stage2/stage1/modules.d/50-stage2-pcmcia new file mode 100644 index 0000000..ab5c663 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-pcmcia @@ -0,0 +1,6 @@ +i82092.ko +pcmcia.ko +pcmcia_core.ko +pd6729.ko +serial_cs.ko +yenta_socket.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-rtc b/features.in/stage2/stage1/modules.d/50-stage2-rtc new file mode 100644 index 0000000..8b43c21 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-rtc @@ -0,0 +1 @@ +kernel/drivers/rtc diff --git a/features.in/stage2/stage1/modules.d/50-stage2-sbc-aarch64 b/features.in/stage2/stage1/modules.d/50-stage2-sbc-aarch64 new file mode 100644 index 0000000..a124024 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-sbc-aarch64 @@ -0,0 +1,9 @@ +kernel/drivers/dma +kernel/drivers/mmc/host +kernel/drivers/regulator +kernel/drivers/soc +kernel/drivers/usb/dwc2 +kernel/drivers/usb/dwc3 +kernel/drivers/usb/phy +kernel/drivers/usb/host +kernel/drivers/usb/musb diff --git a/features.in/stage2/stage1/modules.d/50-stage2-scsi b/features.in/stage2/stage1/modules.d/50-stage2-scsi new file mode 100644 index 0000000..416fe1e --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-scsi @@ -0,0 +1,40 @@ +kernel/drivers/scsi +3w-9xxx.ko +3w-xxxx.ko +BusLogic.ko +DAC960.ko +a100u2w.ko +aacraid.ko +advansys.ko +aic7xxx.ko +atp870u.ko +cciss.ko +ch.ko +dc395x.ko +dmx3191d.ko +dpt_i2o.ko +eata.ko +fdomain.ko +gdth.ko +hptiop.ko +imm.ko +initio.ko +ipr.ko +ips.ko +iscsi_tcp.ko +libiscsi.ko +megaraid.ko +megaraid_mbox.ko +osst.ko +ppa.ko +qla1280.ko +raid_class.ko +scsi_mod.ko +scsi_transport_fc.ko +scsi_transport_iscsi.ko +scsi_transport_sas.ko +scsi_transport_spi.ko +sg.ko +st.ko +stex.ko +sym53c8xx.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-usb b/features.in/stage2/stage1/modules.d/50-stage2-usb new file mode 100644 index 0000000..77d44a6 --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-usb @@ -0,0 +1,16 @@ +kernel/drivers/usb/host +kernel/drivers/usb/storage +ehci-fsl.ko +ehci-hcd.ko +ehci-pci.ko +ehci-platform.ko +ohci-hcd.ko +ohci-platform.ko +uas.ko +uhci-hcd.ko +usb-storage.ko +usbcore.ko +xhci-hcd.ko +xhci-pci.ko +xhci-pci-renesas.ko +xhci-plat-hcd.ko diff --git a/features.in/stage2/stage1/modules.d/50-stage2-virtio b/features.in/stage2/stage1/modules.d/50-stage2-virtio new file mode 100644 index 0000000..e14d2db --- /dev/null +++ b/features.in/stage2/stage1/modules.d/50-stage2-virtio @@ -0,0 +1,2 @@ +kernel/drivers/virtio +kernel/drivers/char/virtio_console diff --git a/features.in/stage2/stage1/scripts.d/03-test-kernel b/features.in/stage2/stage1/scripts.d/03-test-kernel new file mode 100755 index 0000000..f8af561 --- /dev/null +++ b/features.in/stage2/stage1/scripts.d/03-test-kernel @@ -0,0 +1,58 @@ +#!/bin/sh +# NB: -f prohibited in this shebang +# check relevant kernel features availability + +CONFIGS=/boot/config-* +GZ_OPTS="-comp gzip" +XZ_OPTS="-comp xz" +LZO_OPTS="-comp lzo" + +verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "** $@" >&2; } +fatal() { echo "** error: $@" >&2; exit 1; } + +configured() +{ + local option="CONFIG_$1" + if grep -q "^$option" $CONFIGS; then + verbose "${option%=*} available" + return 0 + else + return 1 + fi +} + +ls $CONFIGS >&/dev/null || fatal "no stage1 kernel config found in /boot" + +# test for installer-required filesystems support +configured "OVERLAY_FS=[my]" || configured "AUFS_FS=[my]" || + echo fatal "stage1 kernel must support overlayfs or aufs" + +for opt in SQUASHFS $GLOBAL_STAGE1_KCONFIG; do + configured "$opt=[my]" || fatal "stage1 kernel must have $opt support" +done + +verbose "GLOBAL_SQUASHFS: $GLOBAL_SQUASHFS" + +options() +{ + # squashfs options: not really neccessary but better than none + # NB: this config file should be carried over into install2 + if [ "$GLOBAL_SQUASHFS" != "fast" ] && configured "SQUASHFS_XZ=y"; then + # NB: the decompression filter overhead might hurt + # NB: there are arm, powerpc and some other filters too + if [ "$GLOBAL_SQUASHFS" = "tight" ] && configured "X86"; then + XZ_OPTS="$XZ_OPTS -b 524288 -Xbcj x86" + else + XZ_OPTS="$XZ_OPTS -b 262144" + fi + echo "$XZ_OPTS" + else # go fast, or even faster if possible + if configured "SQUASHFS_LZO=y"; then + echo "$LZO_OPTS" + else # safe default + echo "$GZ_OPTS" + fi + fi +} + +echo "PACK_SQUASHFS_OPTS=-no-recovery `options`" > /.image/squashcfg.mk diff --git a/features.in/stage2/stage1/scripts.d/11-initrd-misc b/features.in/stage2/stage1/scripts.d/11-initrd-misc new file mode 100755 index 0000000..305574d --- /dev/null +++ b/features.in/stage2/stage1/scripts.d/11-initrd-misc @@ -0,0 +1,4 @@ +#!/bin/sh + +# FIXME: move somewhere else +#echo 'FEATURES += nfs' >> /etc/initrd.mk diff --git a/features.in/stage2/stage1/scripts.d/20-initrd-cifs b/features.in/stage2/stage1/scripts.d/20-initrd-cifs new file mode 100755 index 0000000..1f36197 --- /dev/null +++ b/features.in/stage2/stage1/scripts.d/20-initrd-cifs @@ -0,0 +1,9 @@ +#!/bin/sh +# add mount.cifs to for get image from samba server +# if it's available + +if [ -f /sbin/mount.cifs ]; then + echo "PUT_FILES += /sbin/mount.cifs" >> /etc/initrd.mk +else + echo "20-initrd-cifs: skipping mount.cifs (missing)" +fi diff --git a/features.in/stage2/stage1/scripts.d/95-copy-kernel b/features.in/stage2/stage1/scripts.d/95-copy-kernel new file mode 100755 index 0000000..a543def --- /dev/null +++ b/features.in/stage2/stage1/scripts.d/95-copy-kernel @@ -0,0 +1,43 @@ +#!/bin/sh -ef + +cd /.image +mkdir -p boot + +case "`arch`" in + e2k) + kname=image + ;; + *) + kname=vmlinuz + ;; +esac + +if [ -L "/boot/$kname" ]; then + kimage="$(readlink -ev /boot/$kname)" + kverdef="${kimage#/boot/$kname-}" +fi + +kimage="$(find /boot -type f -name "$kname-*")" +propagator="$(find /boot -type f -name 'full-*.cz')" +[ -n "$propagator" ] || + initrd="$(find /boot -type f -name 'initrd-*.img')" + +cp $verbose -af $kimage boot/ +mv boot/$kname-$kverdef boot/$kname +if [ -n "$propagator" ]; then + cp $verbose -af $propagator boot/ + mv boot/full-$kverdef.cz boot/full.cz +else + cp $verbose -af $initrd boot/ + mv boot/initrd-$kverdef.img boot/initrd.img +fi + +# config is generated in mkimage +case "$GLOBAL_EFI_BOOTLOADER" in + refind|elilo) + mkdir -p EFI/BOOT + cp -lpLft EFI/BOOT -- boot/vmlinuz + [ ! -f boot/full.cz ] || + cp -lpLft EFI/BOOT -- boot/full.cz + ;; +esac diff --git a/features.in/syslinux/README b/features.in/syslinux/README new file mode 100644 index 0000000..9149267 --- /dev/null +++ b/features.in/syslinux/README @@ -0,0 +1,36 @@ +Добавление поддержки syslinux; требуется для инсталяторов, live/rescue; +реализуется в рамках stage1. + +Самостоятельное творческое использование на данный момент подразумевает +знакомство с /usr/share/doc/syslinux-*/syslinux.txt и изучение кусочков +конфигурации, которые уже существуют. + +Цели config.mk: +* use/syslinux/ui/% -- конфигурирование интерфейса (см. cfg.in/00*.cfg); + при использовании автоматически добавляют syslinux в FEATURES; +* use/syslinux/timeout/% -- задание таймаута автозагрузки (в десятых секунды); +* use/syslinux/%.com, use/syslinux/%.c32 -- подключение одноименных модулей + (копирование бинарников и включение кусочков конфигурации; экспериментальное); +* use/syslinux/%.cfg -- подключение кусочков конфигурации. + +Переменные generate.mk: +* BOOTARGS -- дополнительные аргументы загрузчику; +* BOOTLOADER -- isolinux (реализовано с оглядкой на syslinux/syslinux4); +* BOOTVGA -- видеорежим, запрашиваемый у ядра (параметр vga=); +* SYSLINUX_UI -- модуль интерфейса (если не указан, то внутренний prompt); +* SYSLINUX_MODULES -- модули .com или .c32 (перечисляются без расширения); +* SYSLINUX_CFG -- дополнительные кусочки конфигурации (например, localboot). + +Здесь производится первичная обработка конфигурационных данных, +окончательно проверяемых и используемых уже в инструментальном чруте. + +Обратите внимание: фрагменты, соответствующие именам субпрофилей, +добавляются автоматически; это поведение при необходимости отключается +выставлением переменной SYSLINUX_DIRECT и тогда вместо use/syslinux/*.cfg +следует применять прямое указание вида @$(call set,SYSLINUX_CFG,...). + +Установить дефолтный пункт: +Для того, чтобы установить конкретный дефолтный пункт (пример для LiveCD с поддержкой сессии): +@$(call set,SYSLINUX_DEFAULT,session) + +Именем дефолтного пункта является LABEL. diff --git a/features.in/syslinux/cfg.in/00defaults.cfg b/features.in/syslinux/cfg.in/00defaults.cfg new file mode 100644 index 0000000..d9b8def --- /dev/null +++ b/features.in/syslinux/cfg.in/00defaults.cfg @@ -0,0 +1,2 @@ +timeout @timeout@ +totaltimeout 3000 diff --git a/features.in/syslinux/cfg.in/00ttyS0.cfg b/features.in/syslinux/cfg.in/00ttyS0.cfg new file mode 100644 index 0000000..a53d329 --- /dev/null +++ b/features.in/syslinux/cfg.in/00ttyS0.cfg @@ -0,0 +1 @@ +serial 0 115200 diff --git a/features.in/syslinux/cfg.in/01gfxboot.cfg b/features.in/syslinux/cfg.in/01gfxboot.cfg new file mode 100644 index 0000000..efd1c7d --- /dev/null +++ b/features.in/syslinux/cfg.in/01gfxboot.cfg @@ -0,0 +1,4 @@ +ui gfxboot bootlogo message +menu title @relname@ +prompt 0 + diff --git a/features.in/syslinux/cfg.in/01menu.cfg b/features.in/syslinux/cfg.in/01menu.cfg new file mode 100644 index 0000000..aaad628 --- /dev/null +++ b/features.in/syslinux/cfg.in/01menu.cfg @@ -0,0 +1,4 @@ +ui menu.c32 +menu title @relname@ +prompt 0 + diff --git a/features.in/syslinux/cfg.in/01none.cfg b/features.in/syslinux/cfg.in/01none.cfg new file mode 100644 index 0000000..e85ecd3 --- /dev/null +++ b/features.in/syslinux/cfg.in/01none.cfg @@ -0,0 +1,2 @@ +prompt 0 + diff --git a/features.in/syslinux/cfg.in/01prompt.cfg b/features.in/syslinux/cfg.in/01prompt.cfg new file mode 100644 index 0000000..a37043d --- /dev/null +++ b/features.in/syslinux/cfg.in/01prompt.cfg @@ -0,0 +1,3 @@ +say @relname@ +prompt 1 + diff --git a/features.in/syslinux/cfg.in/01vesamenu.cfg b/features.in/syslinux/cfg.in/01vesamenu.cfg new file mode 100644 index 0000000..7a98368 --- /dev/null +++ b/features.in/syslinux/cfg.in/01vesamenu.cfg @@ -0,0 +1,4 @@ +ui vesamenu +menu title @relname@ +prompt 0 + diff --git a/features.in/syslinux/cfg.in/02noescape.cfg b/features.in/syslinux/cfg.in/02noescape.cfg new file mode 100644 index 0000000..d288f23 --- /dev/null +++ b/features.in/syslinux/cfg.in/02noescape.cfg @@ -0,0 +1,2 @@ +noescape 1 + diff --git a/features.in/syslinux/cfg.in/10localboot.cfg b/features.in/syslinux/cfg.in/10localboot.cfg new file mode 100644 index 0000000..26e4dea --- /dev/null +++ b/features.in/syslinux/cfg.in/10localboot.cfg @@ -0,0 +1,4 @@ +label harddisk + menu label ^Boot from hard drive as usual + localboot -2 + diff --git a/features.in/syslinux/cfg.in/10removable.cfg b/features.in/syslinux/cfg.in/10removable.cfg new file mode 100644 index 0000000..b0c293d --- /dev/null +++ b/features.in/syslinux/cfg.in/10removable.cfg @@ -0,0 +1,4 @@ +label removable + menu label Boot from removable ^drive + localboot 0x00 + diff --git a/features.in/syslinux/cfg.in/20install2.cfg b/features.in/syslinux/cfg.in/20install2.cfg new file mode 100644 index 0000000..e0ef559 --- /dev/null +++ b/features.in/syslinux/cfg.in/20install2.cfg @@ -0,0 +1,7 @@ +default linux + +label linux + menu label ^Install @relname@ + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ showopts vga=@bootvga@ @bootargs@ lowmem + diff --git a/features.in/syslinux/cfg.in/20pid1.cfg b/features.in/syslinux/cfg.in/20pid1.cfg new file mode 100644 index 0000000..25e26da --- /dev/null +++ b/features.in/syslinux/cfg.in/20pid1.cfg @@ -0,0 +1,4 @@ +label pid1 + menu label ^Just run as PID 1 + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ @bootargs@ diff --git a/features.in/syslinux/cfg.in/21install2-failsafe.cfg b/features.in/syslinux/cfg.in/21install2-failsafe.cfg new file mode 100644 index 0000000..82d5b24 --- /dev/null +++ b/features.in/syslinux/cfg.in/21install2-failsafe.cfg @@ -0,0 +1,5 @@ +label noapic + menu label ^Failsafe install + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ changedisk ramdisk_size=@altinst_size@ showopts lowmem noapic nolapic xdriver=vesa @bootargs@ + diff --git a/features.in/syslinux/cfg.in/25grub-install-vnc-connect.cfg b/features.in/syslinux/cfg.in/25grub-install-vnc-connect.cfg new file mode 100644 index 0000000..c9f03a6 --- /dev/null +++ b/features.in/syslinux/cfg.in/25grub-install-vnc-connect.cfg @@ -0,0 +1,5 @@ +label vncconnect + menu label VNC client (edit to set server IP address) + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ showopts @bootargs@ headless no_alt_virt_keyboard vncconnect=IP + diff --git a/features.in/syslinux/cfg.in/25grub-install-vnc-listen.cfg b/features.in/syslinux/cfg.in/25grub-install-vnc-listen.cfg new file mode 100644 index 0000000..e43b9d2 --- /dev/null +++ b/features.in/syslinux/cfg.in/25grub-install-vnc-listen.cfg @@ -0,0 +1,5 @@ +label vncpasswd + menu label Install @relname@ (headless with DHCP+VNC) (password VNCPWD) + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ showopts @bootargs@ headless no_alt_virt_keyboard vncpassword=VNCPWD + diff --git a/features.in/syslinux/cfg.in/25install-vnc-connect.cfg b/features.in/syslinux/cfg.in/25install-vnc-connect.cfg new file mode 100644 index 0000000..0e69b11 --- /dev/null +++ b/features.in/syslinux/cfg.in/25install-vnc-connect.cfg @@ -0,0 +1,5 @@ +label vncconnect + menu label ^VNC install (edit to set server IP address) + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ showopts @bootargs@ headless no_alt_virt_keyboard vncconnect=IP + diff --git a/features.in/syslinux/cfg.in/25install-vnc-listen.cfg b/features.in/syslinux/cfg.in/25install-vnc-listen.cfg new file mode 100644 index 0000000..2b8fc64 --- /dev/null +++ b/features.in/syslinux/cfg.in/25install-vnc-listen.cfg @@ -0,0 +1,5 @@ +label vncpasswd + menu label VNC install (, set pass^word and connect here) + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot @initrd_bootargs@ @stagename@=altinst ramdisk_size=@altinst_size@ showopts @bootargs@ headless no_alt_virt_keyboard vncpassword=VNCPWD + diff --git a/features.in/syslinux/cfg.in/30live.cfg b/features.in/syslinux/cfg.in/30live.cfg new file mode 100644 index 0000000..1f10cda --- /dev/null +++ b/features.in/syslinux/cfg.in/30live.cfg @@ -0,0 +1,5 @@ +label live + menu label ^LiveCD (no hard disk needed) + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot live @initrd_bootargs@ @stagename@=live ramdisk_size=@live_size@ showopts lowmem vga=@bootvga@ @bootargs@ + diff --git a/features.in/syslinux/cfg.in/32live_rw.cfg b/features.in/syslinux/cfg.in/32live_rw.cfg new file mode 100644 index 0000000..d8ed85b --- /dev/null +++ b/features.in/syslinux/cfg.in/32live_rw.cfg @@ -0,0 +1,5 @@ +label session + menu label LiveCD with ^sessions support + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot live @initrd_bootargs@ @stagename@=live ramdisk_size=@live_size@ showopts live_rw vga=@bootvga@ @bootargs@ + diff --git a/features.in/syslinux/cfg.in/40lateboot.cfg b/features.in/syslinux/cfg.in/40lateboot.cfg new file mode 100644 index 0000000..326cb6a --- /dev/null +++ b/features.in/syslinux/cfg.in/40lateboot.cfg @@ -0,0 +1,4 @@ +label harddisk + menu label ^Boot from hard drive as usual + localboot 0x80 + diff --git a/features.in/syslinux/cfg.in/80rescue.cfg b/features.in/syslinux/cfg.in/80rescue.cfg new file mode 100644 index 0000000..a33b09f --- /dev/null +++ b/features.in/syslinux/cfg.in/80rescue.cfg @@ -0,0 +1,5 @@ +label rescue + menu label ^Rescue LiveCD + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ lowmem + diff --git a/features.in/syslinux/cfg.in/82rescue_rw.cfg b/features.in/syslinux/cfg.in/82rescue_rw.cfg new file mode 100644 index 0000000..5b9ce30 --- /dev/null +++ b/features.in/syslinux/cfg.in/82rescue_rw.cfg @@ -0,0 +1,5 @@ +label rescue_session + menu label Rescue with sess^ions support + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ live_rw + diff --git a/features.in/syslinux/cfg.in/83rescue_fm.cfg b/features.in/syslinux/cfg.in/83rescue_fm.cfg new file mode 100644 index 0000000..d8637a3 --- /dev/null +++ b/features.in/syslinux/cfg.in/83rescue_fm.cfg @@ -0,0 +1,5 @@ +label rescue_forensic + menu label ^Forensic mode (leave disks alone) + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ max_loop=16 forensic hash=@rescue_hash@ lowmem + diff --git a/features.in/syslinux/cfg.in/84rescue_remote.cfg b/features.in/syslinux/cfg.in/84rescue_remote.cfg new file mode 100644 index 0000000..b0d2569 --- /dev/null +++ b/features.in/syslinux/cfg.in/84rescue_remote.cfg @@ -0,0 +1,4 @@ +label rescue_remote + menu label Rescue with remote SSH ^access (DHCP) + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ fastboot live @initrd_bootargs@ @stagename@=rescue ramdisk_size=@rescue_size@ nosplash showopts @rescue_bootargs@ ip=dhcp port=22 rootpw=AUTO lowmem diff --git a/features.in/syslinux/cfg.in/85dos.cfg b/features.in/syslinux/cfg.in/85dos.cfg new file mode 100644 index 0000000..18c703a --- /dev/null +++ b/features.in/syslinux/cfg.in/85dos.cfg @@ -0,0 +1,5 @@ +label freedos + menu label Live Free^DOS + kernel memdisk + append initrd=freedos.img + diff --git a/features.in/syslinux/cfg.in/85mediacheck.cfg b/features.in/syslinux/cfg.in/85mediacheck.cfg new file mode 100644 index 0000000..dac4976 --- /dev/null +++ b/features.in/syslinux/cfg.in/85mediacheck.cfg @@ -0,0 +1,5 @@ +label mediachk + menu label ^Check this media for defects + kernel /boot/vmlinuz + append initrd=/boot/@initrd@ live @initrd_bootargs@ mediacheck=1 stagename=mediacheck nosplash showopts lowmem @bootargs@ + diff --git a/features.in/syslinux/cfg.in/90hdt.cfg b/features.in/syslinux/cfg.in/90hdt.cfg new file mode 100644 index 0000000..bd14530 --- /dev/null +++ b/features.in/syslinux/cfg.in/90hdt.cfg @@ -0,0 +1,9 @@ +# NB: data can be gzipped (without .gz suffix); +# paths must be relative to image root; +# http://tinyurl.com/hdt-args is wrong as of 2011-05-31 +label hdt + menu label ^Hardware info + com32 hdt.c32 + append quiet +# no reed for "append pciids=pci.ids memtest=memtest", defaults are fine + diff --git a/features.in/syslinux/cfg.in/90memtest.cfg b/features.in/syslinux/cfg.in/90memtest.cfg new file mode 100644 index 0000000..b33f63c --- /dev/null +++ b/features.in/syslinux/cfg.in/90memtest.cfg @@ -0,0 +1,4 @@ +label memtest + menu label ^Memory Test + linux /boot/memtest.bin + diff --git a/features.in/syslinux/cfg.in/95sdab.cfg b/features.in/syslinux/cfg.in/95sdab.cfg new file mode 100644 index 0000000..7366cd2 --- /dev/null +++ b/features.in/syslinux/cfg.in/95sdab.cfg @@ -0,0 +1,8 @@ +label sda + menu label Boot from ^1st hard/flash drive + localboot 0x80 + +label sdb + menu label Boot from ^2nd hard/flash drive + localboot 0x81 + diff --git a/features.in/syslinux/cfg.in/Makefile b/features.in/syslinux/cfg.in/Makefile new file mode 100644 index 0000000..5670d97 --- /dev/null +++ b/features.in/syslinux/cfg.in/Makefile @@ -0,0 +1,3 @@ +# check for shortcut overlaps +check: + @sed -n 's/^.*\^\(.\).*$$/\1/p' *.cfg | sort | uniq -c diff --git a/features.in/syslinux/cfg.in/README b/features.in/syslinux/cfg.in/README new file mode 100644 index 0000000..48570c8 --- /dev/null +++ b/features.in/syslinux/cfg.in/README @@ -0,0 +1,19 @@ +Здесь хранятся кусочки конфигурации для syslinux, +нужные из которых копируются с подстановкой значений +из метапрофиля в профиль и уже там в зависимости от +доступных модулей собираются в конфигурационный файл. + +Обратите внимание: варианты с automatic=method:cdrom +работают и при записи гибридного ISO на USB-флэшку. + +При изменении или добавлении просьба по оформлению +с тем, чтобы легче было отсматривать и сводить: + +- параметры append перечисляются в следующем порядке: + * initrd=... + * по алфавиту те, что без аргументов + * по алфавиту те, что имеют аргументы +- в конце файла пустая строка + +Для проверки уникальности клавиатурных сокращений +служит команда "make check". diff --git a/features.in/syslinux/config.mk b/features.in/syslinux/config.mk new file mode 100644 index 0000000..0530e75 --- /dev/null +++ b/features.in/syslinux/config.mk @@ -0,0 +1,34 @@ +# default is plain text prompt +# NB: might be usbflash-ready hybrid iso +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/syslinux: sub/stage1 $(ISOHYBRID:%=use/isohybrid) + @$(call add_feature) + @$(call add,STAGE1_PACKAGES,syslinux) + @$(call try,BOOTVGA,normal) + @$(call add,SYSLINUX_FILES,/usr/lib/syslinux/pxelinux.0) + @$(call try,META_SYSTEM_ID,SYSLINUX) + @$(call set,RELNAME,ALT ($(IMAGE_NAME))) + @$(call xport,SYSLINUX_DEFAULT) +else +use/syslinux: ; @: +endif + +# UI is overwritten +use/syslinux/ui/%: use/syslinux + @$(call set,SYSLINUX_UI,$*) +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @if [ "$*" == gfxboot ]; then \ + $(call add,STAGE1_PACKAGES,gfxboot); \ + $(call add,STAGE1_BRANDING,bootloader); \ + fi +endif + +# modules and config snippets just add up +use/syslinux/%.com use/syslinux/%.c32: use/syslinux + @$(call add,SYSLINUX_MODULES,$*) + +use/syslinux/%.cfg: use/syslinux + @$(call add,SYSLINUX_CFG,$*) + +use/syslinux/timeout/%: use/syslinux + @$(call set,SYSLINUX_TIMEOUT,$*) diff --git a/features.in/syslinux/generate.mk b/features.in/syslinux/generate.mk new file mode 100644 index 0000000..d44bd70 --- /dev/null +++ b/features.in/syslinux/generate.mk @@ -0,0 +1,127 @@ +ifdef BUILDDIR + +# in deciseconds +DEFAULT_TIMEOUT = 600 + +# prepare data for syslinux installation; +# see also stage1/scripts.d/01-syslinux + +include $(BUILDDIR)/distcfg.mk + +ifndef BOOTLOADER +$(error syslinux feature enabled but BOOTLOADER undefined) +endif + +STAGE1_INITRD_BOOTARGS := $(STAGE1_INITRD_TYPEARGS)=$(STAGE1_INITRD_BOOTMETHOD) + +# UI is backed by modules in modern syslinux +# (except for built-in text prompt) +ifdef SYSLINUX_UI +SYSLINUX_MODULES := $(SYSLINUX_MODULES) $(SYSLINUX_UI) +else +$(warning no syslinux ui configured, default is now none) +SYSLINUX_UI := none +endif + +ifndef SYSLINUX_DIRECT +# SUBPROFILES are considered SYSLINUX_CFG too +# (note these can appear like stage2@live); +# 01defaults.cfg is included indefinitely +SYSLINUX_CFG := $(SYSLINUX_CFG) $(SUBPROFILE_DIRS) defaults +endif + +DSTDIR := $(BUILDDIR)/stage1/files/syslinux/.in +DSTCFGS := $(DSTDIR)/*.cfg + +# we can do SYSLINUX_{CFG,MODULES,FILES} +# CFG have only cfg snippet +# FILES have only filenames (absolute or relative to /usr/lib/syslinux/) +# MODULES must have both cfg snippet and syslinux module filename +# (and get included iff cfg snippet AND module exist) +cfg = $(wildcard cfg.in/??$(1).cfg) + +# NB: list position determined by file numbering (*.cfg sorting) +# +# config snippets are copied into generated profile where they can +# be also tested against syslinux modules (some can be unavailable); +# we can't do tests right now since that implies host syslinux being +# identical to build system one which might be not the case... +# +# have to piggyback parameters as we're running in host system yet, +# and files involved will appear inside instrumental chroot +# +# arguments get evaluated before recipe body execution thus prep + +all: debug timeout + @### proper text branding should be implemented + @echo $(SYSLINUX_MODULES) > $(DSTDIR)/modules.list + @echo $(SYSLINUX_FILES) > $(DSTDIR)/syslinux.list + @sed -i \ + -e 's,@mkimage-profiles@,$(IMAGE_NAME),' \ + -e 's,@relname@,$(RELNAME),' \ + $(DSTCFGS) + +# integerity check +timeout: distro + @if [ "$(SYSLINUX_TIMEOUT)" -ge 0 ] 2>/dev/null; then \ + TIMEOUT="$(SYSLINUX_TIMEOUT)"; \ + else \ + TIMEOUT="$(DEFAULT_TIMEOUT)"; \ + fi; \ + sed -i "s,@timeout@,$$TIMEOUT," $(DSTCFGS) + +distro: bootargs + @if [ -n "$(META_VOL_SET)" ]; then \ + DISTRO="$(META_VOL_SET)"; \ + else \ + DISTRO="ALT"; \ + fi; \ + sed -i "s,@distro@,$$DISTRO," $(DSTCFGS) + +# pass over additional parameters, if any +bootargs: clean + @if [ -n "$(STAGE2_BOOTARGS)" ]; then \ + sed -i "s,@bootargs@,$(STAGE2_BOOTARGS)," $(DSTCFGS); \ + fi; \ + sed -i "s,@bootargs@,," $(DSTCFGS) + @if [ -n "$(RESCUE_BOOTARGS)" ]; then \ + sed -i "s,@rescue_bootargs@,$(RESCUE_BOOTARGS)," $(DSTCFGS); \ + fi; \ + sed -i "s,@rescue_bootargs@,," $(DSTCFGS) + @if [ -n "$(BOOTVGA)" ]; then \ + sed -i "s,@bootvga@,$(BOOTVGA)," $(DSTCFGS); \ + fi; \ + sed -i "s,@bootvga@,,;s,vga= ,," $(DSTCFGS) + @if [ "$(STAGE1_INITRD)" = initrd-propagator ]; then \ + sed -i "s,@initrd@,full.cz," $(DSTCFGS); \ + else \ + sed -i "s,@initrd@,initrd.img," $(DSTCFGS); \ + fi + @sed -i "s|@initrd_bootargs@|$(STAGE1_INITRD_BOOTARGS)|g" $(DSTCFGS) + @sed -i "s|@initrd_bootmethod@|$(STAGE1_INITRD_BOOTMETHOD)|g" $(DSTCFGS) + @sed -i "s|@initrd_typeargs@|$(STAGE1_INITRD_TYPEARGS)|g" $(DSTCFGS) + @sed -i "s,@stagename@,$(STAGE1_INITRD_STAGE2_OPTION),g" $(DSTCFGS) + +clean: copy + @if [ "$(SYSLINUX_UI)" = gfxboot ]; then \ + sed -i "s/\^//;/menu label /d" $(DSTCFGS); \ + fi + +copy: prep + @cp -pLt $(DSTDIR) -- $(sort \ + $(foreach C,$(SYSLINUX_CFG),$(call cfg,$(C))) \ + $(foreach M,$(SYSLINUX_MODULES),$(call cfg,$(M)))) + +prep: + @mkdir -p $(DSTDIR) + +debug: + @if [ -n "$(DEBUG)" ]; then \ + echo "** BOOTLOADER: $(BOOTLOADER)"; \ + echo "** SYSLINUX_UI: $(SYSLINUX_UI)"; \ + echo "** SYSLINUX_CFG: $(SYSLINUX_CFG)"; \ + echo "** SYSLINUX_FILES: $(SYSLINUX_FILES)"; \ + echo "** SYSLINUX_MODULES: $(SYSLINUX_MODULES)"; \ + fi + +endif diff --git a/features.in/syslinux/scripts.d/20-propagator-ramdisk-syslinux b/features.in/syslinux/scripts.d/20-propagator-ramdisk-syslinux new file mode 100755 index 0000000..81a8e76 --- /dev/null +++ b/features.in/syslinux/scripts.d/20-propagator-ramdisk-syslinux @@ -0,0 +1,20 @@ +#!/bin/sh +# postprocess isolinux configuration +# when the image sizes are finally known +# NB: install2_size, live_size, rescue_size get defined here + +# validate just in case (see also stage1 Makefile) +if [ -z "$(find $WORKDIR/syslinux/*.cfg)" ]; then + echo "Warning: syslinux/*.cfg not found" + exit 0 +fi + +cd "$WORKDIR" + +# apply size census while looking for potential squashfs images +find -maxdepth 1 -type f -size +1M \ +| sed 's,^\./,,' \ +| while read image; do + size="$[ $(stat -c%s "$image") / 1024 + 1 ]" + sed -i "s,@${image}_size@,$size," syslinux/*.cfg +done diff --git a/features.in/syslinux/scripts.d/20-propagator-rescue-hash-syslinux b/features.in/syslinux/scripts.d/20-propagator-rescue-hash-syslinux new file mode 100755 index 0000000..74ee375 --- /dev/null +++ b/features.in/syslinux/scripts.d/20-propagator-rescue-hash-syslinux @@ -0,0 +1,20 @@ +#!/bin/sh +# postprocess isolinux configuration +# to add rescue image hash, if any +# (for propagator in forensic mode) + +# validate just in case (see also stage1 Makefile) +if [ -z "$(find $WORKDIR/syslinux/*.cfg)" ]; then + echo "Warning: syslinux/*.cfg not found" + exit 0 +fi + +cd "$WORKDIR" + +grep -qs "@rescue_hash@" syslinux/*.cfg || exit 0 + +find -maxdepth 1 -type f -name rescue \ +| while read image; do + rescue_hash="$(sha256sum -b "$image" | cut -f1 -d' ')" + sed -i "s,@rescue_hash@,$rescue_hash," syslinux/*.cfg +done diff --git a/features.in/syslinux/stage1/scripts.d/01-syslinux b/features.in/syslinux/stage1/scripts.d/01-syslinux new file mode 100755 index 0000000..cd349cb --- /dev/null +++ b/features.in/syslinux/stage1/scripts.d/01-syslinux @@ -0,0 +1,63 @@ +#!/bin/sh +# gather syslinux configuration from snippets; +# copy modules; see also this feature's generate.mk + +MODDIR="/usr/lib/syslinux" + +case "$GLOBAL_BOOTLOADER" in + isolinux|syslinux) CFG="$GLOBAL_BOOTLOADER.cfg";; + *) CFG="isolinux.cfg";; +esac + +cd "$WORKDIR/syslinux" + +# number ordering sponsored by shell's pathname expansion +grep -hv '^#' .in/[0-9][0-9]*.cfg > "$CFG" + +# there should be DEFAULT directive there (at least for alterator-netinst) +if [ -n "$GLOBAL_SYSLINUX_DEFAULT" ]; then + if [ -n "$(grep -i "^label $GLOBAL_SYSLINUX_DEFAULT" "$CFG")" ]; then + DEFAULT="$GLOBAL_SYSLINUX_DEFAULT" + sed -i '/^default/d' + echo "default $DEFAULT" >> "$CFG" + else + echo "error: $GLOBAL_SYSLINUX_DEFAULT missing in $CFG" >&2 + exit 1 + fi +fi +if ! grep -i '^default' "$CFG"; then + DEFAULT="$(grep -i '^label ' "$CFG" | head -1 | cut -f2 -d' ')" + if [ -n "$DEFAULT" ]; then + echo "default $DEFAULT" >> "$CFG" + else + echo "error: no DEFAULT or UI directive and cannot guess" >&2 + exit 1 + fi +fi + +# validate just in case (see also stage1 Makefile) +case "$GLOBAL_BOOTLOADER" in + isolinux|syslinux) ;; + *) exit 0;; +esac + +# copy extra files, if any +SYSLINUX_FILES="$(cat .in/syslinux.list)" +if [ -n "${SYSLINUX_FILES% }" ]; then + cp -a $SYSLINUX_FILES . +fi + +# prune module-specific config snippets; skip built-in one +SYSLINUX_MODULES="$(cat .in/modules.list)" +if [ -n "$SYSLINUX_MODULES" ]; then + for module in $SYSLINUX_MODULES; do + if [ "$modules" == "prompt" ]; then continue; fi + cp -a $MODDIR/$module.c?? . || rm .in/[0-9][0-9]$module.cfg + done +fi + +# snippets are not going into the actual image +if [ "$DEBUG" != 2 ]; then rm -r .in/; fi + +# NB: there will be final macro expansion based on actual image sizes +# done by features.in/syslinux/scripts.d/20-propagator-ramdisk diff --git a/features.in/syslinux/stage1/scripts.d/02-gfxboot b/features.in/syslinux/stage1/scripts.d/02-gfxboot new file mode 100755 index 0000000..f4bde1d --- /dev/null +++ b/features.in/syslinux/stage1/scripts.d/02-gfxboot @@ -0,0 +1,31 @@ +#!/bin/sh + +# validate just in case (see also stage1 Makefile) +if [ ! -f "$WORKDIR/syslinux/$GLOBAL_BOOTLOADER.cfg" ]; then + echo "Warning: syslinux/*.cfg not found" + exit 0 +fi + +gfxboot_datadir=/usr/share/gfxboot + +if [ ! -d "$gfxboot_datadir" ]; then + echo "** $gfxboot_datadir not found" >&2 + exit 0 +fi + +bootlogo="`ls $gfxboot_datadir/*/bootlogo | head -1`" ### + +if [ ! -f "$bootlogo" ]; then + echo "** bootlogo not found" >&2 + ls -alR $gfxboot_datadir + exit 0 +fi + +cd "$WORKDIR/syslinux" + +# unpack +cpio -iduV <"$bootlogo" + +# pack +printf 'init\nlanguages\n' | + cpio -oV >bootlogo diff --git a/features.in/tty/README b/features.in/tty/README new file mode 100644 index 0000000..da19fb2 --- /dev/null +++ b/features.in/tty/README @@ -0,0 +1,5 @@ +Эта фича занимается терминалами ввода-вывода, в первую очередь +COM-портами (serial console). + +Следует заметить, что systemd занимается развешиванием agetty +самостоятельно. diff --git a/features.in/tty/config.mk b/features.in/tty/config.mk new file mode 100644 index 0000000..adca3ae --- /dev/null +++ b/features.in/tty/config.mk @@ -0,0 +1,17 @@ +use/tty: + @$(call add_feature) + @$(call xport,TTY_DEV) + @$(call xport,TTY_RATE) + @$(call xport,BASE_BOOTARGS) +ifeq (distro,$(IMAGE_CLASS)) + @$(call add,INSTALL2_PACKAGES,installer-feature-serial-stage2) + @$(call add,BASE_PACKAGES,installer-feature-serial-stage3) +endif + +comma := , +use/tty/S0 use/tty/SIF0 use/tty/AMA0: use/tty/%: use/tty + @$(call add,THE_PACKAGES,agetty) + @$(call add,TTY_DEV,tty$*) + @$(call set,TTY_RATE,115200) + @$(call add,SYSLINUX_CFG,tty$*) + @$(call add,BASE_BOOTARGS,console=tty1 console=$$(TTY_DEV)$(comma)$$(TTY_RATE)n8) diff --git a/features.in/tty/rootfs/image-scripts.d/50-serial b/features.in/tty/rootfs/image-scripts.d/50-serial new file mode 100755 index 0000000..411fbc1 --- /dev/null +++ b/features.in/tty/rootfs/image-scripts.d/50-serial @@ -0,0 +1,18 @@ +#!/bin/sh +# setup serial console access + +BIN=/sbin/agetty +CFG=/etc/inittab +SEC=/etc/securetty + +[ -n "$GLOBAL_TTY_DEV" -a -n "$GLOBAL_TTY_RATE" ] || exit 0 +[ -s "$CFG" -a -x "$BIN" ] || exit 0 + +if ! grep -q "$BIN" "$CFG"; then + n=0 + for t in $GLOBAL_TTY_DEV; do + grep -q "$t" "$SEC" || echo "$t" >>"$SEC" + echo "T$n:2345:respawn:$BIN -L $t $GLOBAL_TTY_RATE vt100" >>$CFG + n=$(($n+1)) + done +fi diff --git a/features.in/uboot/README b/features.in/uboot/README new file mode 100644 index 0000000..4afda82 --- /dev/null +++ b/features.in/uboot/README @@ -0,0 +1 @@ +Настраивает систему для использования загрузчика uboot. diff --git a/features.in/uboot/config.mk b/features.in/uboot/config.mk new file mode 100644 index 0000000..31f0695 --- /dev/null +++ b/features.in/uboot/config.mk @@ -0,0 +1,31 @@ +ifeq (,$(filter-out qcow2 qcow2c,$(IMAGE_TYPE))) +ifeq (,$(filter-out aarch64 armh,$(ARCH))) +UBOOT_TTY := use/tty/AMA0 +else +UBOOT_TTY := use/tty/S0 +endif +endif + +ifeq (,$(filter-out riscv64,$(ARCH))) +ifeq (,$(filter-out qcow2 qcow2c,$(IMAGE_TYPE))) +UBOOT_TTY := use/tty/S0 +UBOOT_NOFDTDIR := 1 +else +UBOOT_TTY := use/tty/SIF0 +endif +endif + +ifneq (,$(filter-out i586 x86_64,$(ARCH))) +use/uboot: use/kernel/initrd-setup $(UBOOT_TTY) + @$(call add_feature) + @$(call add,THE_LISTS,singleboard-tools) +ifeq (,$(filter-out riscv64,$(ARCH))) + @$(call add,UBOOT_BOOTARGS,earlyprintk debug no_alt_virt_keyboard) +endif + @$(call try,UBOOT_TIMEOUT,50) + @$(call xport,UBOOT_BOOTARGS) + @$(call xport,UBOOT_TIMEOUT) + @$(call xport,UBOOT_NOFDTDIR) +else +use/uboot: ; @: +endif diff --git a/features.in/uboot/image-scripts.d/00-uboot-prepare b/features.in/uboot/image-scripts.d/00-uboot-prepare new file mode 100755 index 0000000..22dae55 --- /dev/null +++ b/features.in/uboot/image-scripts.d/00-uboot-prepare @@ -0,0 +1,23 @@ +#!/bin/sh + +TTY= +echo $GLOBAL_BASE_BOOTARGS | grep console= || + TTY='console=tty1' + +# installkernel relies on existing extlinux.conf +# with filled in `default' label +mkdir -p /boot/extlinux +cat > /boot/extlinux/extlinux.conf << EOF +menu title ALTLinux Boot Options + +default linux +timeout $GLOBAL_UBOOT_TIMEOUT + +label linux + kernel /boot/vmlinuz + initrd /boot/initrd.img + fdtdir /boot/dtb + append root=LABEL=ROOT ro $GLOBAL_BASE_BOOTARGS $GLOBAL_UBOOT_BOOTARGS $TTY +EOF + +[ -z "${GLOBAL_UBOOT_NOFDTDIR:-}" ] || sed -i -e '/^[\t]*fdtdir \/boot\/dtb$/d' /boot/extlinux/extlinux.conf diff --git a/features.in/uboot/image-scripts.d/90-uboot-config-install b/features.in/uboot/image-scripts.d/90-uboot-config-install new file mode 100755 index 0000000..60939c9 --- /dev/null +++ b/features.in/uboot/image-scripts.d/90-uboot-config-install @@ -0,0 +1,18 @@ +#!/bin/sh -x + +[ -n "$GLOBAL_KFLAVOURS" ] || + { echo "** KFLAVOURS is empty" >&2; exit 0; } + +kver= +for KFLAVOUR in $GLOBAL_KFLAVOURS; do + kver+=" $(rpm -qa 'kernel-image*' \ + --qf '%{version}-%{name}-%{release}\n' \ + | grep "$KFLAVOUR" \ + | sed 's/kernel-image-//')" +done +[ ! -z "${kver#"${kver%%[! ]*}"}" ] || + { echo "** unable to deduce kernel version" >&2; exit 1; } + +for KVER in $kver; do + /sbin/installkernel --uboot --keep-initrd "$KVER" +done diff --git a/features.in/uuid-iso/README b/features.in/uuid-iso/README new file mode 100644 index 0000000..fac239d --- /dev/null +++ b/features.in/uuid-iso/README @@ -0,0 +1,13 @@ +По умолчанию при сборке образа xorriso генерирует UUID образа +вида YYYY-MM-DD-hh-mm-ss-cc из текущего времени. +Если в командной строке xorriso есть пареметр +-volume_date uuid YYYYMMDDhhmmsscc +то UUID образа генерируется из него. +Данная фича читает текущее время и создаёт переменные: +UUID_ISO, содержащую YYYY-MM-DD-hh-mm-ss-cc +UUID_ISO_SHRT, содержащую YYYYMMDDhhmmsscc +Также фича добавляет в initrd файл +/lib/udev/rules.d/60-cdrom_id.rules +Это позволяет идентифицировать CD/DVD по UUID +и использовать для загрузки инсталлятора +method:disk,uuid:YYYY-MM-DD-hh-mm-ss-cc diff --git a/features.in/uuid-iso/config.mk b/features.in/uuid-iso/config.mk new file mode 100644 index 0000000..6ed5262 --- /dev/null +++ b/features.in/uuid-iso/config.mk @@ -0,0 +1,9 @@ +UUID_ISO := $(shell date -u +%Y-%m-%d-%H-%M-%S-00) +UUID_ISO_SHRT := $(shell echo $(UUID_ISO) | sed 's/-//g') + +use/uuid-iso: + @$(call add_feature) + @$(call set,MKI_VER_OPTIMAL,0.2.41) + @$(call set,UUID_ISO_SHRT,$(UUID_ISO_SHRT)) + @$(call set,UUID_ISO,$(UUID_ISO)) + @$(call xport,UUID_ISO) diff --git a/features.in/uuid-iso/stage1/scripts.d/20-initrd-cdrom b/features.in/uuid-iso/stage1/scripts.d/20-initrd-cdrom new file mode 100755 index 0000000..0523f78 --- /dev/null +++ b/features.in/uuid-iso/stage1/scripts.d/20-initrd-cdrom @@ -0,0 +1,9 @@ +#!/bin/sh +# add 60-cdrom_id.rules to identify CD/DVD by UUID +# if it's available + +if [ -f /lib/udev/rules.d/60-cdrom_id.rules ]; then + echo "PUT_FILES += /lib/udev/rules.d/60-cdrom_id.rules" >> /etc/initrd.mk +else + echo "uuid-iso, 20-initrd-cdrom: skipping 60-cdrom_id.rules (missing)" +fi diff --git a/features.in/uuid-iso/stage1/scripts.d/40-propagator-fuid-file b/features.in/uuid-iso/stage1/scripts.d/40-propagator-fuid-file new file mode 100755 index 0000000..4a57489 --- /dev/null +++ b/features.in/uuid-iso/stage1/scripts.d/40-propagator-fuid-file @@ -0,0 +1,5 @@ +#!/bin/sh +# add file named as UUID for use with fuid option in propagator + +cd "$WORKDIR" +touch $GLOBAL_UUID_ISO diff --git a/features.in/vagrant/README b/features.in/vagrant/README new file mode 100644 index 0000000..46086d6 --- /dev/null +++ b/features.in/vagrant/README @@ -0,0 +1,11 @@ +Эта фича обеспечивает специфичную для vagrant предварительную +настройку образа файловой системы виртуальной машины. + +Обратите внимание, что специфика включает широко известные: +- пароли root и пользователя vagrant с беспарольным sudo; +- "секретный" ключ от публичной части у пользователя vagrant. + +См. тж.: +http://bugzilla.altlinux.org/28553 +http://docs.vagrantup.com/v2/boxes/base.html +http://williamwalker.me/blog/creating-a-custom-vagrant-box.html diff --git a/features.in/vagrant/config.mk b/features.in/vagrant/config.mk new file mode 100644 index 0000000..72b8afd --- /dev/null +++ b/features.in/vagrant/config.mk @@ -0,0 +1,6 @@ +use/vagrant: use/vmguest/vbox use/deflogin use/net-ssh use/control + @$(call add_feature) + @$(call add,THE_PACKAGES,sudo) + @$(call add,CONTROL,sudo:public) + @$(call add,USERS,vagrant:vagrant:1:) # NB: custom sudoers + @$(call set,ROOTPW,vagrant) diff --git a/features.in/vagrant/rootfs/image-scripts.d/50-vagrant b/features.in/vagrant/rootfs/image-scripts.d/50-vagrant new file mode 100755 index 0000000..13e2775 --- /dev/null +++ b/features.in/vagrant/rootfs/image-scripts.d/50-vagrant @@ -0,0 +1,19 @@ +#!/bin/sh +# NB: 50-vargant > 50-users (so homedir exists already) + +echo "UseDNS no" >> /etc/openssh/sshd_config + +# https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub +pubkey="ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" +sshkeys=~vagrant/.ssh/authorized_keys +install -pDm400 -o vagrant -g vagrant /dev/null "$sshkeys" +echo "$pubkey" > "$sshkeys" + +sudocfg=/etc/sudoers.d/vagrant +install -pDm400 /dev/null "$sudocfg" +cat > "$sudocfg" << EOF +Defaults:vagrant !requiretty +vagrant ALL=(ALL) NOPASSWD:ALL +EOF + +mkdir -p /vagrant diff --git a/features.in/vmguest/README b/features.in/vmguest/README new file mode 100644 index 0000000..1ac753f --- /dev/null +++ b/features.in/vmguest/README @@ -0,0 +1,2 @@ +Эта фича предназначена для конфигурирования поддержки выполнения +дистрибутивов в качестве гостей в среде виртуальных машин. diff --git a/features.in/vmguest/config.mk b/features.in/vmguest/config.mk new file mode 100644 index 0000000..cac3b75 --- /dev/null +++ b/features.in/vmguest/config.mk @@ -0,0 +1,46 @@ +# various VM guest modules/tools ++vmguest: use/vmguest/complete; @: + +use/vmguest: + @$(call add_feature) + +use/vmguest/bare: use/vmguest/vbox use/vmguest/kvm; @: +use/vmguest/base: use/vmguest/bare use/vmguest/vmware; @: +use/vmguest/complete: use/vmguest/base \ + use/vmguest/vbox/x11 use/vmguest/vmware/x11 use/vmguest/kvm/x11; @: + +ifeq (,$(filter-out i586 x86_64 aarch64 armh ppc64le,$(ARCH))) +# NB: only reasonable for X11-bearing images +# see also use/install2/kvm +use/vmguest/kvm: use/vmguest + @$(call add,THE_PACKAGES,qemu-guest-agent) + +use/vmguest/kvm/x11: use/vmguest/kvm + @$(call add,THE_PACKAGES,spice-vdagent xorg-drv-qxl xorg-drv-spiceqxl) +ifneq (p9,$(BRANCH)) + @$(call add,THE_PACKAGES,xorg-dri-virtio) +endif +else +use/vmguest/kvm use/vmguest/kvm/x11: ; @: +endif + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/vmguest/vbox: use/vmguest; @: + +use/vmguest/vbox/x11: use/vmguest/vbox + @$(call add,THE_KMODULES,drm) + @$(call add,THE_PACKAGES,virtualbox-guest-additions) + +# see also use/install2/vmware +use/vmguest/vmware: + @$(call add,THE_KMODULES,vmware) + @$(call add,THE_KMODULES,scsi) # mptspi.ko + @$(call add,THE_PACKAGES,open-vm-tools) + +use/vmguest/vmware/x11: use/vmguest/vmware + @$(call add,THE_PACKAGES,xorg-drv-vmware xorg-drv-vmmouse) + @$(call add,THE_PACKAGES,open-vm-tools-desktop) +else +use/vmguest/vbox use/vmguest/vbox/x11 \ +use/vmguest/vmware use/vmguest/vmware/x11: ; @: +endif diff --git a/features.in/vmguest/install2/image-scripts.d/50-vmguest-noservices b/features.in/vmguest/install2/image-scripts.d/50-vmguest-noservices new file mode 100755 index 0000000..2894526 --- /dev/null +++ b/features.in/vmguest/install2/image-scripts.d/50-vmguest-noservices @@ -0,0 +1,16 @@ +#!/bin/sh +# disable services that are known to be useless under VMs +# TODO: un-hardwire the list? + +NOVM_SERVICES="cpufreq-simple powertop smartd" + +cat >> /usr/share/install2/postinstall.d/50-vmguest-noservices.sh << EOF +#!/bin/sh +if grep -qE '(101300b8)|(80eebeef)|(14ad0405)' /proc/bus/pci/devices; then + for i in $NOVM_SERVICES; do + echo "\$i" >> /usr/share/install2/services-off + done +fi +EOF + +chmod +x /usr/share/install2/postinstall.d/50-vmguest-noservices.sh diff --git a/features.in/vmguest/stage1/modules.d/50-vmguest b/features.in/vmguest/stage1/modules.d/50-vmguest new file mode 100644 index 0000000..c76fef5 --- /dev/null +++ b/features.in/vmguest/stage1/modules.d/50-vmguest @@ -0,0 +1,6 @@ +# vmguest +kernel/drivers/virtio +vmxnet3.ko +hv_netvsc.ko +virtio_net.ko +# diff --git a/features.in/volumes/README b/features.in/volumes/README new file mode 100644 index 0000000..7daace6 --- /dev/null +++ b/features.in/volumes/README @@ -0,0 +1,2 @@ +Эта фича обеспечивает выставление нужного профиля разбивки дисков +при установке с помощью installer или livecd-install. diff --git a/features.in/volumes/config.mk b/features.in/volumes/config.mk new file mode 100644 index 0000000..a150acd --- /dev/null +++ b/features.in/volumes/config.mk @@ -0,0 +1,7 @@ +use/volumes: + @$(call add_feature) + @$(call add,INSTALL2_PACKAGES,$$(STAGE2_VOLUMES_PROFILE)) + @$(call add,LIVE_PACKAGES,$$(STAGE2_VOLUMES_PROFILE)) + +use/volumes/%: use/volumes + @$(call set,STAGE2_VOLUMES_PROFILE,volumes-profile-$*) diff --git a/features.in/wireless/README b/features.in/wireless/README new file mode 100644 index 0000000..e1734af --- /dev/null +++ b/features.in/wireless/README @@ -0,0 +1 @@ +Эта фича занимается добавлением поддержки беспроводных соединений. diff --git a/features.in/wireless/config.mk b/features.in/wireless/config.mk new file mode 100644 index 0000000..3eda959 --- /dev/null +++ b/features.in/wireless/config.mk @@ -0,0 +1,8 @@ ++wireless: use/wireless/full; @: + +use/wireless: use/kernel/wireless + @$(call add_feature) + @$(call add,THE_LISTS,tools/wireless) + +use/wireless/full: use/wireless; @: + @$(call add,RESCUE_LISTS,tools/wireless) diff --git a/features.in/x11-autologin/README b/features.in/x11-autologin/README new file mode 100644 index 0000000..42f29ce --- /dev/null +++ b/features.in/x11-autologin/README @@ -0,0 +1,11 @@ +Эта фича добавляет в формируемый пользовательский корень +(как правило, live) функцию автоматического входа путём +конфигурирования отдельно запрошенного для установки +display manager (например, lightdm) либо специального +средства (пакеты nodm или autologin). + +Обратите внимание: с autologin могут быть проблемы под systemd, +а при использовании работающего в таком окружении nodm на сегодня +отмечено наличие /sbin:/usr/sbin в пользовательском PATH перед +/bin:/usr/bin, что приводит к неработоспособности consolehelper +и livecd-install, который им пользуется. diff --git a/features.in/x11-autologin/config.mk b/features.in/x11-autologin/config.mk new file mode 100644 index 0000000..66676ef --- /dev/null +++ b/features.in/x11-autologin/config.mk @@ -0,0 +1,3 @@ +use/x11-autologin: use/x11-autostart + @$(call add_feature) + @$(call add,THE_PACKAGES,shadow-groups) # gpasswd diff --git a/features.in/x11-autologin/rootfs/image-scripts.d/40-x11-autologin b/features.in/x11-autologin/rootfs/image-scripts.d/40-x11-autologin new file mode 100755 index 0000000..f07ba03 --- /dev/null +++ b/features.in/x11-autologin/rootfs/image-scripts.d/40-x11-autologin @@ -0,0 +1,212 @@ +#!/bin/sh +# see also http://www.enricozini.org/2008/tips/lightweight-autologin/ + +if [ ! -x /usr/bin/X ]; then + echo "SKIP autologin: X not installed" >&2 + exit 0 +fi + +USER=kometa + +add_nopasswdlogin_group() +{ + [ -f "/etc/pam.d/$1" ] && + egrep -qs '^auth.+user[[:blank:]]+ingroup[[:blank:]]+nopasswdlogin' "/etc/pam.d/$1" && + groupadd -r nopasswdlogin && + gpasswd -a "$USER" nopasswdlogin +} + +BAK=".save" +backup() { + [ -f "$1" -a ! -f "$1$BAK" ] || return 1 + cp -av "$1" "$1$BAK" +} + +## this is only relevant for installable livecd +### FIXME: this shouldn't proceed in other cases! +restore_later() { + [ -n "$1" ] || return 0 + + local prefix="/usr/lib/alterator/hooks/livecd-preinstall.d" + [ -d "$prefix" ] || mkdir -p "$prefix" + + local hook="$prefix/51-disable-autologin-again.sh" + [ -s "$hook" ] || cat >> "$hook" <<- EOF + #!/bin/sh + . livecd-functions + EOF + + echo mv -v "\$destdir$1$BAK" "\$destdir$1" >> "$hook" + chmod +x "$hook" +} + +## autologin^2 +AUTOLOGIN_CFG=/etc/sysconfig/autologin +if [ -x /usr/sbin/autologin ]; then + backup "$AUTOLOGIN_CFG" + cat >> "$AUTOLOGIN_CFG" <<- EOF + USER=$USER + AUTOLOGIN=yes + EOF + restore_later "$AUTOLOGIN_CFG" +fi + +## lightdm autologin +LIGHTDM_CONF=/etc/lightdm/lightdm.conf +if [ -f "$LIGHTDM_CONF" ]; then + mkdir -p /etc/lightdm/lightdm.conf.d + cat > /etc/lightdm/lightdm.conf.d/autologin.conf <> /etc/lightdm/lightdm.conf.d/autologin.conf + else + echo "** WARNING: no sessions found in /usr/share/xsessions/" >&2 + fi + backup "/etc/group" + add_nopasswdlogin_group lightdm ||: + + restore_later "/etc/group" +fi + +## gdm2 autologin +GDM_CONF=/etc/X11/gdm/custom.conf +if [ -f "$GDM_CONF" ]; then + backup "$GDM_CONF" + sed -i -e '/\[daemon\]/aAutomaticLoginEnable=true\nAutomaticLogin='$USER \ + "$GDM_CONF" + backup "/etc/group" + add_nopasswdlogin_group gdm ||: + + restore_later "$GDM_CONF" + restore_later "/etc/group" +fi + + +## lxdm autologin +LXDM_CONF=/etc/lxdm/lxdm.conf +if [ -f "$LXDM_CONF" ]; then + backup "$LXDM_CONF" + sed -i -e "s/\# autologin=dgod/autologin=$USER/" \ + "$LXDM_CONF" + backup "/etc/group" + add_nopasswdlogin_group lxdm ||: + + restore_later "$LXDM_CONF" + restore_later "/etc/group" +fi + +autologin_kdm() { + backup "$1" + sed -i \ + -e '/AutoLoginEnable/ s,^.*$,AutoLoginEnable=true,' \ + -e '/AutoLoginUser/ s,^.*$,AutoLoginUser='$USER',' \ + "$1" + restore_later "$1" +} + +## kdm3 autologin +# FIXME: tde packages have kdmrc in /usr via an absolute symlink :-( +KDM_ETC=/etc/X11/kdm +KDM_USR=/usr/share/kde/config/kdm +if [ "$(readlink "$KDM_ETC")" = "$KDM_USR" ]; then + rm -f "$KDM_ETC" + ln -s ../.."$KDM_USR" "$KDM_ETC" +fi + +KDMRC=/etc/X11/kdm/kdmrc +if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi + +## kdm4 autologin +KDMRC=/etc/X11/kdm4/kdmrc +if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi + +## sddm autologin +SDDM_RC=/etc/X11/sddm/sddm.conf +SDDM_SESSION= +if [ -f "$SDDM_RC" ]; then + backup "$SDDM_RC" + backup "/etc/group" + add_nopasswdlogin_group sddm ||: + sed -i "s,^User=$,&$USER," "$SDDM_RC" + if [ -f /usr/share/xsessions/lxqt.desktop ]; then + SDDM_SESSION=lxqt + elif [ -f /usr/share/xsessions/plasma.desktop ]; then + SDDM_SESSION=plasma + fi + if [ -n "$SDDM_SESSION" ]; then + sed -i "s,^Session=$,&$SDDM_SESSION," "$SDDM_RC" + fi + restore_later "$SDDM_RC" + restore_later "/etc/group" +fi + +## nodm autologin (the last since the most intrusive) +# FIXME nodm and xinitrc should be modified (also in p6) +# WARNING: check user PATH if things go weird! +NODM_RC=/etc/sysconfig/nodm +NODM_EXE=/usr/sbin/nodm +if [ -x "$NODM_EXE" ]; then + backup "$NODM_RC" + cat >> "$NODM_RC" <<- EOF + export NODM_USER=$USER + EOF + restore_later "$NODM_RC" +else + exit 0 +fi + +# FIXME: drop since #27449 is fixed +PREFDM=/etc/X11/prefdm +if [ -f "$PREFDM" ] && ! grep -q nodm "$PREFDM"; then + backup "$PREFDM" + sed -i \ + -e '/AUTOLOGIN_EXE=/ s,^.*$,AUTOLOGIN_EXE='$NODM_EXE',' \ + -e '/AUTOLOGIN_CFG=/ s,^.*$,AUTOLOGIN_CFG='$NODM_RC',' \ + "$PREFDM" + restore_later "$PREFDM" +fi + +# FIXME: drop when #27451 is fixed +NODM_PAM=/etc/pam.d/nodm +for module in pam_console.so pam_ck_connector.so; do + if [ -f /lib*/security/$module ]; then + str="-session optional $module" + grep -q "^$str$" "$NODM_PAM" || echo -e "$str" >> "$NODM_PAM" + fi +done + +NODM_POLKIT_CONFDIR=/etc/polkit-1/localauthority/50-local.d +NODM_POLKIT_CONF=org.freedesktop.NetworkManager.pkla +if [ -d "$NODM_POLKIT_CONFDIR" ]; then + cat > "$NODM_POLKIT_CONFDIR/$NODM_POLKIT_CONF" << _EOF_ +[nm-applet] +Identity=unix-group:users +Action=org.freedesktop.NetworkManager.* +ResultAny=yes +ResultInactive=no +ResultActive=yes +_EOF_ +fi + +NODM_DBUS_NM_CONF=/etc/dbus-1/system.d/nm-applet.conf +if [ -f "$NODM_DBUS_NM_CONF" ]; then + sed -i "s/at_console=\"true\"/user=\"$USER\"/" "$NODM_DBUS_NM_CONF" +fi + +NODM_G2KR_DIR=/etc/skel/.gnome2/keyrings +mkdir -p "$NODM_G2KR_DIR" +echo -n login > "$NODM_G2KR_DIR"/default +cat > "$NODM_G2KR_DIR"/login.keyring << _EOF_ +[keyring] +display-name=login +ctime=0 +mtime=0 +lock-on-idle=false +lock-after=false +_EOF_ + +: diff --git a/features.in/x11-autostart/README b/features.in/x11-autostart/README new file mode 100644 index 0000000..3bb9169 --- /dev/null +++ b/features.in/x11-autostart/README @@ -0,0 +1,5 @@ +Эта фича добавляет в формируемый пользовательский корень +(как правило, live) функцию автоматического запуска +графической сессии; обратите внимание, что автоматическим +входом после запуска графики занимается соседняя фича +x11-autologin. diff --git a/features.in/x11-autostart/config.mk b/features.in/x11-autostart/config.mk new file mode 100644 index 0000000..8a9ddf8 --- /dev/null +++ b/features.in/x11-autostart/config.mk @@ -0,0 +1,3 @@ +use/x11-autostart: use/x11 + @$(call add_feature) + @$(call add,BASE_PACKAGES,installer-feature-runlevel5-stage3) ### diff --git a/features.in/x11-autostart/rootfs/image-scripts.d/40-x11-autostart b/features.in/x11-autostart/rootfs/image-scripts.d/40-x11-autostart new file mode 100755 index 0000000..562cc1c --- /dev/null +++ b/features.in/x11-autostart/rootfs/image-scripts.d/40-x11-autostart @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ ! -x /usr/bin/X ]; then + echo "SKIP autostart: X not installed" >&2 + exit 0 +fi + +## setup automated graphical session startup +INITTAB=/etc/inittab +if [ -f "$INITTAB" ]; then + [ -z "$runlevel" ] && runlevel=5 + sed -i "s,^\(id:\)\(.*\)\(:initdefault.*\),\\1$runlevel\\3," "$INITTAB" +fi + +## ...and systemd, if any +## NB: alterator-setup's backup file can present a nice catch if left around +rm -f /etc/systemd/system/default.target{,.bak} + +: diff --git a/features.in/x11-vnc/README b/features.in/x11-vnc/README new file mode 100644 index 0000000..2f424ae --- /dev/null +++ b/features.in/x11-vnc/README @@ -0,0 +1,4 @@ +This feature allows to use X11 through VNC server. It adds x11vnc package and +sets default password to alt. Another thing is that this feature adds dummy +video adapter configuration to the /etc/X11/xorg.conf.d/. x11vnc becomes +default service. diff --git a/features.in/x11-vnc/config.mk b/features.in/x11-vnc/config.mk new file mode 100644 index 0000000..40d6277 --- /dev/null +++ b/features.in/x11-vnc/config.mk @@ -0,0 +1,4 @@ +use/x11-vnc: + @$(call add,THE_PACKAGES,x11vnc x11vnc-service xorg-drv-dummy) + @$(call add,DEFAULT_SERVICES_ENABLE,x11vnc) + @$(call add_feature) diff --git a/features.in/x11-vnc/rootfs/image-scripts.d/51-x11-vnc b/features.in/x11-vnc/rootfs/image-scripts.d/51-x11-vnc new file mode 100755 index 0000000..ccbf955 --- /dev/null +++ b/features.in/x11-vnc/rootfs/image-scripts.d/51-x11-vnc @@ -0,0 +1,35 @@ +#!/bin/sh +# setup X11 to use it with a VNC + +CFG=/root/.vnc/ + +[ -d "$CFG" ] || mkdir -p "$CFG" + +x11vnc -storepasswd alt "$CFG"/passwd + +cat > /etc/X11/xorg.conf.d/51-dummy.conf << EOF +Section "Device" + Identifier "Configured Video Device" + Driver "dummy" + VideoRam 16384 +EndSection + +Section "Monitor" + Identifier "Configured Monitor" + HorizSync 5.0 - 1000.0 + VertRefresh 5.0 - 200.0 +EndSection + +Section "Screen" + Identifier "Default Screen" + Monitor "Configured Monitor" + Device "Configured Video Device" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 24 + Virtual 1024 768 + EndSubSection +EndSection + +EOF diff --git a/features.in/x11/README b/features.in/x11/README new file mode 100644 index 0000000..77fc086 --- /dev/null +++ b/features.in/x11/README @@ -0,0 +1,34 @@ +Эта фича добавляет базовую поддержку графической системы X11, +а также комплектует типовые десктопные окружения и средства +графического входа в систему. + +Для добавления X-сервера и драйверов используйте цели: +- use/x11/xorg -- свободные драйверы, может недоставать + акселерации, особенно 3D, и функций энергосбережения, + но поддерживают наиболее широкий спектр оборудования + для типичных десктопных задач; +- use/x11/3d -- по возможности подключаются проприетарные + драйверы NVIDIA, обычно обладающие более высоким + уровнем ускорения графики, но также имеющие и больше + проблем совместимости со свежими ядрами/xorg-server, + а заодно обычно рано теряющие поддержку "устаревших" + видеокарт. + +Возможно предоставлять в образе одновременно свободные и закрытые +драйверы, но в этом случае следует понимать, что автоопределение +в X.org предпочитает свободный драйвер и nvidia при наличии nouveau +не будет автоматически выбран, т.е. потребуется дополнительное +конфигурирование (вручную или при помощи alterator-x11) -- +для live-систем это может быть лишено практического смысла. + +Обратите внимание: как и в фиче bootloader, переключение +на какой-либо дисплейный менеджер срабатывает только один раз; + + use/x11/xdm use/x11/lxdm use/x11/xdm + +приведёт к выставлению lxdm, а не xdm, поскольку это будет +последняя "новая" цель с точки зрения make. + +При необходимости перекрыть последнее изменение добавьте: + + @$(call set,THE_DISPLAY_MANAGER,нужный) diff --git a/features.in/x11/config.mk b/features.in/x11/config.mk new file mode 100644 index 0000000..666a931 --- /dev/null +++ b/features.in/x11/config.mk @@ -0,0 +1,205 @@ ++x11: use/x11/xorg; @: ++icewm: use/x11/icewm; @: ++xmonad: use/x11/xmonad; @: ++nm-gtk: use/x11/gtk/nm; @: ++screensaver: use/x11/xscreensaver/gl; @: + +## hardware support +# the very minimal driver set +use/x11: + @$(call add_feature) + @$(call add,THE_LISTS,$(call tags,base xorg)) + +use/x11/xorg:: use/x11 use/x11/armsoc; @: + +# x86: free drivers for various hardware (might lack acceleration) +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) +use/x11/xorg:: use/x11/intel use/x11/nouveau use/x11/radeon use/x11/amdgpu \ + use/drm/full + @$(call add,THE_LISTS,$(call tags,desktop xorg)) +endif + +ifeq (,$(filter-out riscv64,$(ARCH))) +use/x11/xorg:: use/x11/amdgpu use/drm/full + @$(call add,THE_LISTS,$(call tags,desktop xorg)) +endif + + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +use/x11/intel: use/x11 use/drm + @$(call add,THE_PACKAGES,xorg-drv-intel) + @$(call add,THE_PACKAGES,xorg-dri-intel) ### #25044 +else +use/x11/intel: use/x11; @: +endif + +ifeq (,$(filter-out armh aarch64,$(ARCH))) +use/x11/armsoc: use/x11 use/firmware use/drm + @$(call add,THE_PACKAGES,xorg-dri-armsoc) +else +use/x11/armsoc: use/x11; @: +endif + +ifeq (,$(filter-out e2k%,$(ARCH))) +# e2k: mostly radeon, 101 got mga2/vivante +use/x11/xorg:: use/x11/radeon use/x11/amdgpu use/x11/nouveau use/drm/full + +ifeq (,$(filter-out e2kv4,$(ARCH))) +use/x11/mga2: use/x11 use/drm + @$(call add,THE_PACKAGES,xorg-drv-mga2) +else +use/x11/mga2: use/x11; @: +endif + +use/x11/smi: use/x11 use/drm + @$(call add,THE_PACKAGES,xorg-drv-smi) +else +use/x11/smi: use/x11; @: +endif + +# for those cases when no 3D means no use at all +# NB: blobs won't Just Work (TM) along with nouveau/radeon +# as free drivers get prioritized during autodetection +use/x11/3d: use/x11/intel use/x11/radeon use/x11/amdgpu use/x11/nvidia; @: + +# somewhat lacking compared to radeon but still +use/x11/nouveau: use/x11 use/firmware use/drm/nouveau + @$(call try,NVIDIA_PACKAGES,xorg-drv-nouveau) + @$(call add,THE_PACKAGES,$$(NVIDIA_PACKAGES)) + +# has performance problems but is getting better, just not there yet +use/x11/radeon: use/x11 use/firmware use/drm/radeon + @$(call try,RADEON_PACKAGES,xorg-drv-ati xorg-drv-radeon) + @$(call add,THE_PACKAGES,$$(RADEON_PACKAGES)) + +# here's the future +use/x11/amdgpu: use/x11 use/firmware + @$(call add,THE_PACKAGES,xorg-drv-amdgpu) + +# Vulkan is new and bleeding edge, only intel and amgpu(pro?) +use/x11/vulkan: use/x11/intel use/x11/amdgpu + @$(call add,THE_PACKAGES,vulkan) + @$(call add,THE_PACKAGES,vulkan-radeon vulkan-intel) + +# see https://github.com/NVIDIA/libglvnd for all gory details +use/x11/glvnd: use/x11 + @$(call add,THE_PACKAGES,libglvnd-glx,libglvnd-egl) + +# sometimes broken with current xorg-server +use/x11/nvidia:: use/x11/nouveau; @: +use/x11/nvidia/optimus:: use/x11/nvidia; @: + +ifeq (,$(filter-out i586 x86_64 aarch64,$(ARCH))) +use/x11/nvidia:: use/drm/nvidia + @$(call set,NVIDIA_PACKAGES,nvidia-settings nvidia-xconfig) + +use/x11/nvidia/optimus:: use/drm/nvidia/optimus + @$(call add,NVIDIA_PACKAGES,bumblebee) +endif + +use/x11/wacom: use/x11 + @$(call add,THE_PACKAGES,xorg-drv-wacom) + +## display managers +use/x11/dm: use/x11-autostart use/pkgpriorities + @$(call try,THE_DISPLAY_MANAGER,xdm) + @$(call add,THE_PACKAGES,$$(THE_DISPLAY_MANAGER)) + @$(call add,PINNED_PACKAGES,$$(THE_DISPLAY_MANAGER)) + @$(call add,DEFAULT_SERVICES_ENABLE,$$(THE_DM_SERVICE)) + +use/x11/lightdm/gtk use/x11/lightdm/slick \ + use/x11/lightdm/qt use/x11/lightdm/lxqt use/x11/lightdm/kde: \ + use/x11/lightdm/%: use/x11/dm + @$(call set,THE_DISPLAY_MANAGER,lightdm-$*-greeter) + @$(call set,THE_DM_SERVICE,lightdm) + +use/x11/lxdm use/x11/gdm2.20 use/x11/sddm \ + use/x11/kde5-display-manager-sddm: \ + use/x11/%: use/x11/dm + @$(call set,THE_DISPLAY_MANAGER,$*) + +use/x11/kde5-display-manager-lightdm: \ + use/x11/%: use/x11/dm + @$(call set,THE_DISPLAY_MANAGER,$*) + @$(call set,THE_DM_SERVICE,lightdm) + @$(call add,PINNED_PACKAGES,kde5-display-manager-sddm:Extra) + +use/x11/gdm: \ + use/x11/%: use/x11/dm + @$(call set,THE_DISPLAY_MANAGER,$*) + @$(call set,THE_DM_SERVICE,$*) + +use/x11/xdm: use/x11/dm + @$(call set,THE_DISPLAY_MANAGER,xdm) + @$(call add,THE_PACKAGES,installer-feature-no-xconsole-stage3) + +## window managers and desktop environments +use/x11/icewm: use/x11 + @$(call add,THE_LISTS,$(call tags,icewm desktop)) + +use/x11/kde/synaptic: + @$(call add,THE_PACKAGES,synaptic-kde synaptic-usermode-) + +use/x11/gtk/nm: use/net/nm + @$(call add,THE_LISTS,$(call tags,desktop nm)) + +use/x11/xfce: use/x11 + @$(call add,THE_PACKAGES,xfce4-minimal xfce4-default) + @$(call add,IM_PACKAGES,imsettings-xfce) + +use/x11/xfce/full: use/x11/xfce +pulse + @$(call add,THE_PACKAGES,xfce4-full) + +use/x11/cinnamon: use/x11/xorg +pulse + @$(call add,THE_LISTS,$(call tags,cinnamon desktop)) + @$(call add,IM_PACKAGES,imsettings-cinnamon) + +use/x11/deepin: use/x11/xorg +pulse + @$(call add,THE_LISTS,$(call tags,deepin desktop)) + +use/x11/gnome3: use/x11/xorg use/x11/gdm +pulse + @$(call add,THE_PACKAGES,gnome3-minimal gnome3-default) + @$(call add,IM_PACKAGES,imsettings-gsettings) + +use/x11/enlightenment: use/x11 use/net/connman +pulse + @$(call add,THE_LISTS,$(call tags,enlightenment desktop)) + +use/x11/lxde: use/x11 + @$(call add,THE_LISTS,$(call tags,lxde desktop)) + @$(call add,IM_PACKAGES,imsettings-lxde) + +use/x11/lxqt: use/x11 +pulse + @$(call add,THE_LISTS,$(call tags,desktop && lxqt && !extra)) + @$(call add,IM_PACKAGES,imsettings-qt) + +use/x11/fvwm: use/x11 + @$(call add,THE_LISTS,$(call tags,fvwm desktop)) + +use/x11/wmaker: use/x11 + @$(call add,THE_LISTS,$(call tags,wmaker desktop)) + +use/x11/gnustep: use/x11 + @$(call add,THE_LISTS,$(call tags,gnustep desktop)) + +use/x11/mate: use/x11 +pulse + @$(call add,THE_LISTS,$(call tags,mate desktop)) + @$(call add,IM_PACKAGES,imsettings-mate) + +use/x11/dwm: use/x11 + @$(call add,THE_LISTS,$(call tags,dwm desktop)) + +use/x11/leechcraft: use/x11 + @$(call add,THE_PACKAGES,leechcraft) + +use/x11/kde5: use/x11/xorg use/x11/kde/synaptic + @$(call add,THE_PACKAGES,kde5-big) + +## screensavers +use/x11/xscreensaver: + @$(call add,THE_LISTS,$(call tags,base xscreensaver)) + +use/x11/xscreensaver/gl: use/x11/xscreensaver + @$(call add,THE_LISTS,$(call tags,desktop xscreensaver)) + +use/x11/xscreensaver/frontend: use/x11/xscreensaver + @$(call add,THE_PACKAGES,xscreensaver-frontend) diff --git a/features.in/xdg-user-dirs/README b/features.in/xdg-user-dirs/README new file mode 100644 index 0000000..79af002 --- /dev/null +++ b/features.in/xdg-user-dirs/README @@ -0,0 +1,5 @@ +Эта фича обеспечивает наличие "ручки" для конфигурирования +типовых пользовательских каталогов для нескольких типов данных +и предоставляет возможность задавать предпочитаемые умолчания, +которые могут различаться по дистрибутивам; см. тж. +http://freedesktop.org/wiki/Software/xdg-user-dirs diff --git a/features.in/xdg-user-dirs/config.mk b/features.in/xdg-user-dirs/config.mk new file mode 100644 index 0000000..e582a92 --- /dev/null +++ b/features.in/xdg-user-dirs/config.mk @@ -0,0 +1,10 @@ +use/xdg-user-dirs: use/control + @$(call add_feature) + @$(call add,CONTROL,xdg-user-dirs:enabled) + @$(call add,THE_PACKAGES,xdg-user-dirs) + @$(call xport,XDG_USER_DIRS) + +# tweak some values to move these dirs into Documents/ +use/xdg-user-dirs/deep: use/xdg-user-dirs + @$(call add,XDG_USER_DIRS,MOVIES:Documents/Videos) + @$(call add,XDG_USER_DIRS,PHOTOS:Documents/Pictures) diff --git a/features.in/xdg-user-dirs/rootfs/image-scripts.d/35-xdg-user-dirs b/features.in/xdg-user-dirs/rootfs/image-scripts.d/35-xdg-user-dirs new file mode 100755 index 0000000..426dc23 --- /dev/null +++ b/features.in/xdg-user-dirs/rootfs/image-scripts.d/35-xdg-user-dirs @@ -0,0 +1,15 @@ +#!/bin/sh +# tweak xdg-user-dirs defaults if told so +# using tuples like "PHOTOS:Documents/Pictures" + +. shell-config + +CONFIG="/etc/xdg/user-dirs.defaults" + +[ -z "$GLOBAL_XDG_USER_DIRS" ] || + echo "$GLOBAL_XDG_USER_DIRS" \ + | tr ' ' '\n' \ + | while IFS=':' read k v; do + [ -n "$k" -a -n "$v" ] || continue + shell_config_set "$CONFIG" "$k" "$v" + done diff --git a/image.in/.gitignore b/image.in/.gitignore new file mode 100644 index 0000000..b20547c --- /dev/null +++ b/image.in/.gitignore @@ -0,0 +1,3 @@ +build.log +reports +out diff --git a/image.in/Makefile b/image.in/Makefile new file mode 100644 index 0000000..f03e0ad --- /dev/null +++ b/image.in/Makefile @@ -0,0 +1,125 @@ +# step 4: dive into mkimage + +GLOBAL_BUILDDIR ?= $(shell pwd) +CURRENT_LINK := mkimage-profiles +OUT_LINK := out + +# there were mkimage fixes induced by mkimage-profile development +# - minimal version is bumped for critical bugfixes/features +# - optimal one relates to the less universally relevant bits +MKI_VER_MINIMAL = 0.1.7 +MKI_VER_OPTIMAL = 0.2.6 + +include distcfg.mk +include functions.mk + +# check the build environment +ifeq (,$(realpath $(MKIMAGE_PREFIX)/config.mk)) +$(error please apt-get install mkimage and have a look at QUICKSTART as well) +endif + +include $(MKIMAGE_PREFIX)/config.mk + +ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_MINIMAL) | tr -d [0-9])) +$(info error: mkimage-$(MKI_VERSION) is too old, please upgrade) +$(error mkimage is too old, $(MKI_VER_MINIMAL) is minimal supported version) +endif +ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_OPTIMAL) | tr -d [0-9])) +$(info warning: mkimage-$(MKI_VERSION) is suboptimal, consider upgrading) +$(warning consider upgrading mkimage to $(MKI_VER_OPTIMAL) or better) +endif + +# glob it just in case +IMAGEDIR := $(wildcard $(IMAGEDIR)) + +# additional means to reduce havoc in IMAGEDIR +IMAGE_SORTDIR := $(wildcard $(SORTDIR)) + +# use distro version in image name if defined +ifdef DISTRO_VERSION +IMAGE_VERSION := -$(DISTRO_VERSION) +IMAGE_VER_LINK := $(IMAGE_NAME)$(IMAGE_VERSION)-latest-$(ARCH).$(IMAGE_TYPE) +endif + +IMAGE_OUTNAME := $(IMAGE_NAME)$(IMAGE_VERSION)-$(STATUS)$(DATE)-$(ARCH) +IMAGE_OUTFILE := $(IMAGE_OUTNAME).$(IMAGE_TYPE) +IMAGE_OUTDIR := $(IMAGEDIR)$(IMAGE_SORTDIR:%=/%) +IMAGE_OUTPATH := $(IMAGE_OUTDIR)/$(IMAGE_OUTFILE) +IMAGE_RELPATH := $(IMAGE_SORTDIR:%=%/)$(IMAGE_OUTFILE) +IMAGE_RELDIR := $(IMAGE_OUTDIR:$(GLOBAL_BUILDDIR)/%=%) +IMAGE_LINK := $(IMAGE_NAME)-latest-$(ARCH).$(IMAGE_TYPE) +IMAGE_LINKPATH := $(IMAGEDIR)/$(IMAGE_LINK) + +### multi-pack can be useful (think netinst iso/tree) +MKI_PACK_RESULTS = $(IMAGE_PACKTYPE):$(IMAGE_OUTFILE) + +# these get copied over as is +COPY_TREE = ./files + +# outdir shouldn't be wiped clean before use +CLEANUP_OUTDIR ?= + +GLOBAL_TARGET := $(ARCH) +GLOBAL_HSH_LANGS := $(INSTALL_LANGS) +GLOBAL_HSH_APT_CONFIG := $(wildcard $(APTCONF)) + +# take the latter part for complex-specified subprofiles like stage2@live; +# care to exclude non-directories holding no makefiles like rootfs +SUBDIRS = $(dir $(wildcard $(addsuffix /Makefile,$(SUBPROFILE_DIRS)))) + +# the lib/build-*.mk comes from features.in/build-*/lib +include $(sort $(wildcard lib/*.mk)) +include $(MKIMAGE_PREFIX)/targets.mk + +# specified only for the final image (target-specific) +pack-image: OUTDIR = $(IMAGE_OUTDIR) +pack-image: imagedir + +copy-tree: $(SAVE_PROFILE:%=save-profile) + +save-profile: + @mkdir -p files/.disk; \ + git archive --prefix=mkimage-profile/ HEAD ":!.work" \ + | gzip -9 > files/.disk/profile.tgz + +.PHONY: imagedir postprocess debug + +prep: imagedir + +imagedir: + @mkdir -p "$(IMAGE_OUTDIR)" + +postprocess: | $(addprefix postprocess-,$(sort $(POSTPROCESS_TARGETS))) + @OUTSIZE="`ls -lh "$(IMAGE_OUTPATH)" | cut -f5 -d' '`"; \ + if [ ! -n "$$OUTSIZE" ]; then \ + echo "** error: $(IMAGE_OUTPATH) missing" >&2; \ + exit 1; \ + fi; \ + if [ -n "$(VM_SAVE_TARBALL)" ]; then \ + echo "** tarball saved: $(IMAGE_OUTPATH)/$(IMAGE_OUTNAME).$(VM_SAVE_TARBALL)" >&2; \ + fi; \ + echo "** image: $(IMAGE_OUTPATH) [$$OUTSIZE]" >&2 && \ + echo "IMAGE_OUTPATH = $(IMAGE_OUTPATH)" && \ + echo "IMAGE_OUTFILE = $(IMAGE_OUTFILE)" && \ + if [ ! -n "$(NO_SYMLINK)" ]; then \ + ln -sf "$(IMAGE_RELPATH)" "$(IMAGE_LINKPATH)" && \ + ln -sf "$(IMAGE_RELDIR)" "$(OUT_LINK)" && \ + ln -sf "$(IMAGE_LINK)" "$(IMAGEDIR)/$(CURRENT_LINK).$(IMAGE_TYPE)"; \ + if [ -n "$(IMAGE_VER_LINK)" ]; then \ + ln -sf "$(IMAGE_RELPATH)" "$(IMAGEDIR)/$(IMAGE_VER_LINK)"; \ + fi; \ + fi; \ + if [ -n "$(GLOBAL_DEBUG)" ]; then \ + mkdir -p "$(LOGDIR)"; \ + cp -a build.log "$(LOGDIR)/$(IMAGE_OUTFILE).log"; \ + cp -a distcfg.mk "$(LOGDIR)/$(IMAGE_OUTFILE).cfg"; \ + fi + +debug:: + @echo "TOPDIR=$(TOPDIR)" + @echo "IMAGEDIR=$(IMAGEDIR)" + @echo "ARCH=$(ARCH)" + @echo "GLOBAL_TARGET=$(GLOBAL_TARGET)" + @echo "GLOBAL_HSH_LANGS=$(GLOBAL_HSH_LANGS)" + @echo "GLOBAL_HSH_APT_CONFIG=$(GLOBAL_HSH_APT_CONFIG)" + @echo "GLOBAL_HSH_USE_QEMU=$(GLOBAL_HSH_USE_QEMU)" diff --git a/image.in/README b/image.in/README new file mode 100644 index 0000000..e79e05c --- /dev/null +++ b/image.in/README @@ -0,0 +1,21 @@ +== image.in == + +Этот каталог копируется из метапрофиля в профиль "как есть" +и формирует "заготовку" финальной стадии, собирающей собственно +образ из результатов работы индивидуальных субпрофилей +(для distro) либо непосредственно "на месте" (для ve, vm). + +Содержимое image.in/files/ копируется в корень образа. + +Соответственно для сборки также потребуется одна из фич +features.in/build-*. + +Пакетная база рабочего чрута минимальна (может чуть расширяться +фичами -- см. features.in/repo/lib/50-genbasedir.mk +в качестве примера). + +Если требуется какая-либо иная обработка чрута, следует +предпочитать scripts.d -- для универсальной обработки +скрипт можно добавить здесь, для специфичной -- в фичу. + +Результат -- готовый образ в $(IMAGEDIR)/. diff --git a/image.in/files/.gitignore b/image.in/files/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/image.in/functions.mk b/image.in/functions.mk new file mode 100644 index 0000000..7c247f2 --- /dev/null +++ b/image.in/functions.mk @@ -0,0 +1,55 @@ +ifneq (clean,$(MAKECMDGOALS)) +ifneq (distclean,$(MAKECMDGOALS)) + +ifndef INCLUDED_FUNCTIONS_MK +INCLUDED_FUNCTIONS_MK = 1 + +# globals +PKGDIR ?= $(GLOBAL_BUILDDIR)/pkg + +# duplicated from metaprofile makefiles for the sake of "local" builds +ARCH ?= $(shell arch | sed 's/i686/i586/; s/armv.*/arm/') +DATE ?= $(shell date +%Y%m%d) + +# prefix pkglist name with its directory to form a path (relative/absolute) +rlist = $(1:%=lists/%) +list = $(addprefix $(PKGDIR)/,$(call rlist,$(1))) + +# prefix/suffix group name to form a path (relative/absolute) +rgroup = $(1:%=groups/%.directory) +group = $(addprefix $(PKGDIR)/,$(call rgroup,$(1))) + +# prefix/suffix pkg profile name to form a path (relative/absolute) +rprofile = $(1:%=profiles/%.directory) +profile = $(addprefix $(PKGDIR)/,$(call rprofile,$(1))) + +# map first argument (a function) onto second one (an argument list) +map = $(foreach a,$(2),$(call $(1),$(a))) + +# happens at least twice, and variables are the same by design +groups2lists = $(shell $(groups2lists_body)) +define groups2lists_body +{ if [ -n "$(THE_GROUPS)$(MAIN_GROUPS)" ]; then \ + sed -rn 's,^X-Alterator-PackageList=(.*)$$,\1,p' \ + $(call map,group,$(THE_GROUPS) $(MAIN_GROUPS)); \ +fi; } +endef + +# kernel package list generation; see also #24669 +NULL := +SPACE := $(NULL) # the officially documented way of getting a space +COMMA := , + +list2re = $(subst $(SPACE),|,$(strip $(1))) + +# args: KFLAVOURS, KMODULES +# NB: $(2) could be empty +kpackages = $(and $(1), \ + ^kernel-(image|modules-($(call list2re,$(2))))-($(call list2re,$(1)))$$) + +# arg: branding subpackages +branding = $(and $(1),^branding-$(BRANDING)-($(call list2re,$(1)))$$) + +endif +endif +endif diff --git a/image.in/image-scripts.d/.gitignore b/image.in/image-scripts.d/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/image.in/image-scripts.d/01-rootdir b/image.in/image-scripts.d/01-rootdir new file mode 100755 index 0000000..b318b38 --- /dev/null +++ b/image.in/image-scripts.d/01-rootdir @@ -0,0 +1,6 @@ +#!/bin/sh +# fixup chroot's toplevel directory permissions (use to become 1775) + +chmod 755 / + +rm -f /.gitignore diff --git a/image.in/image-scripts.d/99-tcb-fix b/image.in/image-scripts.d/99-tcb-fix new file mode 100755 index 0000000..83bd59e --- /dev/null +++ b/image.in/image-scripts.d/99-tcb-fix @@ -0,0 +1,5 @@ +#!/bin/sh -e +# drop intermediate files not needed in the image +# which receive broken permissions in fakeroot environment + +rm -f /etc/tcb/*/shadow{-,.lock} diff --git a/image.in/lib/.gitignore b/image.in/lib/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/image.in/scripts.d/.gitignore b/image.in/scripts.d/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/image.in/vars.mk b/image.in/vars.mk new file mode 100644 index 0000000..c878267 --- /dev/null +++ b/image.in/vars.mk @@ -0,0 +1,22 @@ +# dump interesting variables' effective values; +# based on http://stackoverflow.com/questions/7117978 + +# staged "uninteresting" lists +SPAM := SPAM INIT PREFS DISTCFG DISTCFG_MK +INIT := $(.VARIABLES) +-include $(HOME)/.mkimage/profiles.mk +PREFS := $(.VARIABLES) +-include distcfg.mk +DISTCFG := $(.VARIABLES) + +# a separator variable +-- = -- + +.PHONY: dump-vars + +dump-vars: + $(foreach v, \ + $(filter-out $(SPAM) $(INIT),$(sort $(PREFS))) -- \ + $(filter-out $(SPAM) $(PREFS),$(sort $(DISTCFG))), \ + $(info $(v) = $($(v)))) + @: diff --git a/lib/README b/lib/README new file mode 100644 index 0000000..0e6a6b2 --- /dev/null +++ b/lib/README @@ -0,0 +1,9 @@ +== lib == + +Этот каталог содержит вспомогательные makefiles, +обеспечивающие основную функциональность создания +конфигурации образа и генерации соответствующего +профиля для сборки; см. тж. conf.d/. + +Следует помнить, что будучи включаемыми в main.mk, +они работают в каталоге верхнего уровня. diff --git a/lib/boot.mk b/lib/boot.mk new file mode 100644 index 0000000..ee3c869 --- /dev/null +++ b/lib/boot.mk @@ -0,0 +1,24 @@ +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +ifeq (distro,$(IMAGE_CLASS)) + +# install media bootloader +boot/iso: +ifeq (,$(filter-out i586 x86_64,$(ARCH))) + @$(call try,BOOTLOADER,isolinux) +endif +ifeq (,$(filter-out aarch64 riscv64,$(ARCH))) + @$(call try,BOOTLOADER,efiboot) +endif +ifeq (,$(filter-out e2k%,$(ARCH))) + @$(call try,BOOTLOADER,e2kboot) + @$(call set,IMAGE_PACKTYPE,isodata) +endif +ifeq (,$(filter-out ppc64le,$(ARCH))) + @$(call try,BOOTLOADER,ieee1275boot) +endif + @$(call try,IMAGE_PACKTYPE,boot) + +endif diff --git a/lib/build.mk b/lib/build.mk new file mode 100644 index 0000000..e2971a6 --- /dev/null +++ b/lib/build.mk @@ -0,0 +1,119 @@ +# step 4 is kicked off here but actually done by image.in/Makefile +ANSI_OK ?= 1;32 +ANSI_FAIL ?= 1;31 + +MAX_LINES = 200 +MAX_ERRORS = 5 +GOTCHA := ^(((\*\* )?(E:|[Ee]rror|[Ww]arning).*)|(.* (FAILURE|FATAL|ERROR|conflicts|Conflicts:|Depends:) .*)|(.* (Stop|failed|not found)\.)|(not allowed))$$ + +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +# try not to bog down the system, both CPU and I/O wise +ifdef NICE +START := nice $(shell ionice -c3 echo "ionice -c3" 2>/dev/null) +endif + +# in kilobytes (a kilometer is 1024 meters, you know) +LOWSPACE = 1024 + +# it's also nice to know how long and much it takes +START += time -f "%E %PCPU %Mk" + + +# e2k* builds always run natively, and without setarch +ifeq (,$(findstring e2k,$(ARCH))) + +# /usr/bin/{i586,x86_64} are setarch(8) symlinks but arm is not; +# armh (armv7l) doesn't have any but should cope with qemu-arm.static; +# also check whether non-x86 build is running native +ifeq (,$(wildcard $(subst :,/$(ARCH) ,$(PATH):))) + +EARCH := $(subst armh,arm,$(ARCH)) + +# for mips*el, `uname -m` never has 'el' suffix, but +# qemu-user-static binaries always do. +UARCH := $(subst mipsel,mips,$(EARCH)) +UARCH := $(subst mips64el,mips64,$(UARCH)) + +ifeq (,$(findstring $(UARCH),$(shell uname -m))) +export GLOBAL_HSH_USE_QEMU=$(EARCH) +endif +else +START += $(ARCH) +endif +endif + + +# to be passed into distcfg.mk; suggestions are welcome +ifneq (,$(filter-out $(DIRECT_TARGETS),$(MAKECMDGOALS))) +IMAGEDIR ?= $(shell \ + if [ -d "$$HOME/out" -a -w "$$HOME/out" ]; then \ + echo "$$HOME/out"; \ + else \ + dir="`dirname $(BUILDDIR)`/out"; \ + mkdir -p "$$dir" && echo "$$dir" || echo "/tmp"; \ + fi; \ +) +endif + +LOGDIR ?= $(wildcard $(IMAGEDIR)) + +make-aptbox: ; @: +ifneq (0,$(CHECK)) + @mkdir -p $(BUILDDIR)/.work/pkgbox; \ + mkdir -p $(BUILDDIR)/.work/.cache; \ + mkdir -p $(BUILDDIR)/.work/.out; \ + APTCONF=$(wildcard $(APTCONF)); \ + mkaptbox --without-stuff --target=$(ARCH) $${APTCONF:+--apt-config=$$APTCONF} -- $(BUILDDIR)/.work/pkgbox +endif + +# actual build starter +# NB: our output MUST go into stderr to escape POSTPROC +build-image: make-aptbox profile/populate + @{ \ + if [ -n "$(CHECK)" ]; then \ + echo "$(TIME) skipping actual image build (CHECK is set)"; \ + exit; \ + fi; \ + if [ -z "$(QUIET)" ]; then \ + echo -n "$(TIME) starting image build"; \ + if [ -n "$(DEBUG)" ]; then \ + echo ": tail -f $(BUILDLOG)" $(SHORTEN); \ + else \ + echo " (coffee time)"; \ + fi; \ + fi; \ + if $(START) $(MAKE) -C $(BUILDDIR)/ $(LOG); then \ + DURATION="(`tail -1 $(BUILDLOG) | cut -f1 -d.`)"; \ + tail -n $(MAX_LINES) "$(BUILDLOG)" $(SHORTEN) \ + | if [ -z "$(QUIET)" ]; then \ + echo "$(TIME) done $$DURATION"; \ + GREP_COLOR="$(ANSI_OK)" \ + grep --color=auto '^\*\* image: .*$$' ||:; \ + else \ + echo -n "$(TIME) $$DURATION "; \ + sed -rn 's/^\*\* image: (.*)$$/\1/p'; \ + fi; \ + RETVAL=0; \ + else \ + RETVAL=$$?; \ + echo -n "$(TIME) failed, see log"; \ + if [ -z "$(DEBUG)" -o -n "$(QUIET)" ]; then \ + echo ": $(BUILDLOG)" $(SHORTEN); \ + else \ + echo " above"; \ + fi; \ + if [ -z "$(DEBUG)" ]; then \ + echo "$(TIME) (you might want to rerun with DEBUG=1)"; \ + fi; \ + tail -n $(MAX_LINES) "$(BUILDLOG)" \ + | GREP_COLOR="$(ANSI_FAIL)" \ + egrep --color=auto -m "$(MAX_ERRORS)" "$(GOTCHA)"; \ + df -P $(BUILDDIR) | awk 'END { if ($$4 < $(LOWSPACE)) \ + { print "NB: low space on "$$6" ("$$5" used)"}}'; \ + fi; \ + if [ -n "$(BELL)" ]; then echo -ne '\a'; fi; \ + exit $$RETVAL; \ + } >&2 diff --git a/lib/check.mk b/lib/check.mk new file mode 100644 index 0000000..61d49a3 --- /dev/null +++ b/lib/check.mk @@ -0,0 +1,17 @@ +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +check: + @find sub.in features.in \ + -path '*scripts.d/*' \ + \! \( -perm 755 -o -name .gitignore \) \ + | while read line; do \ + echo "chmod 755 $$line"; \ + done + @find features.in -maxdepth 1 -type d \ + | while read dir; do \ + if [ ! -s "$$dir/README" ]; then \ + echo "$$dir: missing README"; \ + fi; \ + done diff --git a/lib/clean.mk b/lib/clean.mk new file mode 100644 index 0000000..71df378 --- /dev/null +++ b/lib/clean.mk @@ -0,0 +1,73 @@ +# this makefile can be used standalone + +# drop stock predefined rules +.DEFAULT: + +SYMLINK = build + +# tmpfs-sparing extra rule: cleanup workdir after completing each stage +# (as packed results are saved this only lowers RAM pressure) +# NB: it's useful enough to be enabled by default in DEBUG abscence +ifndef DEBUG +CLEAN ?= 1 +endif +ifdef CLEAN +export GLOBAL_CLEAN_WORKDIR = clean-current +ifdef DEBUG +WARNING = (NB: DEBUG scope is limited when CLEAN is enabled) +endif +endif + +# ordinary clean: destroys workdirs but not the corresponding results +# NB: our output MUST go into stderr to escape POSTPROC +clean: + @{ \ + find -name '*~' -delete >&/dev/null ||:; \ + if [ -L "$(SYMLINK)" -a -d "$(SYMLINK)"/ ]; then \ + if [ -z "$(QUIET)" ]; then \ + echo "$(TIME) cleaning up $(WARNING)"; \ + fi; \ + $(MAKE) -C "$(SYMLINK)" $@ \ + GLOBAL_BUILDDIR="$(realpath $(SYMLINK))" $(LOG) ||:; \ + fi; \ + } >&2 + +# there can be some sense in writing log here even if normally +# $(BUILDDIR)/ gets purged: make might have failed, +# and BUILDLOG can be specified by hand either +distclean: clean + @{ \ + if [ -L "$(SYMLINK)" -a -d "$(SYMLINK)"/ ]; then \ + build="$(realpath $(SYMLINK)/)"; \ + if [ "$$build" = / ]; then \ + echo "** ERROR: invalid \`"$(SYMLINK)"' symlink" >&2; \ + exit 128; \ + else \ + $(MAKE) -C "$(SYMLINK)" $@ \ + GLOBAL_BUILDDIR="$$build" $(LOG) ||:; \ + rm -rf "$$build"; \ + fi; \ + fi; \ + rm -f "$(SYMLINK)"; \ + } >&2 + +# builddir existing outside read-only metaprofile is less ephemeral +# than BUILDDIR variable is -- usually it's unneeded afterwards +postclean: build-image + @{ \ + if [ "$(CLEAN)" != 0 ] && \ + [ "0$(DEBUG)" -lt 2 ] && \ + [ -z "$(CHECK)" ] && \ + [ -z "$(REPORT)" ] && \ + [ "$(NUM_TARGETS)" -gt 1 \ + -o ! -t 1 \ + -o ! -L "$(SYMLINK)" ]; \ + then \ + if [ -z "$(QUIET)" ]; then \ + echo "$(TIME) cleaning up after build"; \ + fi; \ + $(MAKE) -C "$(BUILDDIR)" distclean \ + GLOBAL_BUILDDIR="$(BUILDDIR)" $(LOG) ||:; \ + rm -rf "$(BUILDDIR)"; \ + fi; \ + } >&2 diff --git a/lib/common.mk b/lib/common.mk new file mode 100644 index 0000000..16a1ff8 --- /dev/null +++ b/lib/common.mk @@ -0,0 +1,23 @@ +# common bits for building and reporting parts + +# somewhat reusable +BUILD_LOG = build.log + +# link it to BUILDDIR if possible +SYMLINK = build + +# brevity postprocessor; not exported, for toplevel use only +SHORTEN = $(shell FILTER=; \ + if [ -s "$(SYMLINK)" ]; then \ + FILTER=" -e 's,$(BUILDDIR),$(SYMLINK),'"; \ + fi; \ + if [ -n "$$TMP" ]; then \ + FILTER="$$FILTER -e 's,$$TMP,\$$TMP,'"; \ + fi; \ + if [ -n "$$HOME" ]; then \ + FILTER="$$FILTER -e 's,$$HOME,~,'"; \ + fi; \ + if [ -n "$$FILTER" ]; then \ + echo -n "| sed $$FILTER"; \ + fi; \ +) diff --git a/lib/distro.mk b/lib/distro.mk new file mode 100644 index 0000000..8aaae29 --- /dev/null +++ b/lib/distro.mk @@ -0,0 +1,28 @@ +# step 2: build up distribution's configuration + +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +ifeq (distro,$(IMAGE_CLASS)) +# fundamental targets + +distro/.init: profile/bare + @$(call try,META_PREPARER,mkimage-profiles) + @$(call try,META_APP_ID,$(IMAGE_NAME)) + @$(call set,META_PUBLISHER,Proskurnev Artem) + +distro/.boot: distro/.init boot/iso + @$(call set,META_VOL_ID,KOMETA $(IMAGE_NAME)/$(ARCH)) + @$(call set,META_VOL_SET,KOMETA) + @$(call set,GLOBAL_BOOT_LANG,ru_RU) + +# NB: the last flavour in KFLAVOURS gets to be the default one; +# the kernel packages regexp evaluation has to take place at build stage +distro/.base: distro/.boot use/kernel + @$(call set,META_SYSTEM_ID,LINUX) + +# this one should not be fundamental as it appears (think armh) +distro/.installer: distro/.base use/bootloader/grub +installer; @: + +endif diff --git a/lib/functions.mk b/lib/functions.mk new file mode 100644 index 0000000..e639280 --- /dev/null +++ b/lib/functions.mk @@ -0,0 +1,64 @@ +# NB: don"t use ANY quotes ('/") for put()/add()/set() arguments! +# shell will get confused by ' or args get spammed with " + +# pay attention to the context functions get called in: +# e.g. features.in/syslinux/config.mk introduces conditionals + +# this one adds whatever is given as an argument +put = $(and $(1),$(put_body)) +define put_body +{ $(log_body); \ +printf '%s\n' '$(1)' >> "$(CONFIG)"; } +endef + +# these three take two args +# add() just appends an additive rule... +add = $(and $(1),$(2),$(add_body)) +define add_body +$(if $(filter GLOBAL_% INFO_%,$(1)),$(warning add,$(1) might be a problem)) \ +{ $(log_body); \ +printf '%s += %s\n' '$(1)' '$(2)' >> "$(CONFIG)"; } +endef + +# ...set() comments out any previous definition +# and then appends an assigning rule... +# NB: $(2) could be empty +set = $(and $(1),$(set_body)) +define set_body +{ $(log_body); \ +sed -i 's|^$(1)[ ]*[+?]*=.*$$|#& # overridden by $@|' "$(CONFIG)"; \ +printf '%s = %s\n' '$(1)' '$(2)' >> "$(CONFIG)"; } +endef + +# try() appends a conditionally-assigning rule +try = $(and $(1),$(2),$(try_body)) +define try_body +{ $(log_body); \ +printf '%s ?= %s\n' '$(1)' '$(2)' >> "$(CONFIG)"; } +endef + +# xport() requests a variable to be exported to the scripts +# NB: immediate assignment would break accumulators like USERS +xport = $(and $(1),$(xport_body)) +define xport_body +{ $(log_body); \ +v='$(1:GLOBAL_%=%)'; \ +printf 'export GLOBAL_%s = $$(%s)\n' "$$v" "$$v" >> "$(CONFIG)"; } +endef + +# if the rule being executed isn't logged yet, log it +define log_body +{ [ -s "$(CONFIG)" ] && \ + grep -q '^# $@$$' "$(CONFIG)" || printf '# %s\n' '$@' >> "$(CONFIG)"; } +endef + +# in a use/feature/particularly target, we need a "feature" bit +add_feature = $(call add,FEATURES,$(word 2,$(subst /, ,$@))) + +# convert tag list into a list of relative package list paths +# NB: tags can do boolean expressions: (tag1 && !(tag2 || tag3)) +tags = $(and $(strip $(1)),$(addprefix tagged/,$(shell echo "$(1)" \ + | tags2lists pkg.in/lists/tagged))) + +# toplevel Makefile convenience +addsuffices = $(foreach s,$(1),$(call addsuffix,$s,$(2))) diff --git a/lib/help.mk b/lib/help.mk new file mode 100644 index 0000000..56786ce --- /dev/null +++ b/lib/help.mk @@ -0,0 +1,26 @@ +# this makefile holds the most helpful bits for the toplevel one + +define help_body +if [ -t 1 ]; then \ + echo '** available $(1) targets:'; \ + columnize $(2); \ +else \ + printf '%s\n' $(2); \ +fi +endef + +help = $(and $(2),$(help_body)) + +help/distro: + @$(call help,distribution,$(sort $(DISTROS:distro/%=%))) + +help/ve: + @[ -n "$(SPACE)" ] && echo; \ + $(call help,virtual environment,$(sort $(VES))) + +help/vm: + @[ -n "$(SPACE)" ] && echo; \ + $(call help,virtual machine,$(sort $(VMS))) + +help: SPACE = 1 +help: help/distro help/ve help/vm; @: diff --git a/lib/log.mk b/lib/log.mk new file mode 100644 index 0000000..94a51ef --- /dev/null +++ b/lib/log.mk @@ -0,0 +1,41 @@ +# simple logging switch inspired by netch@'s advice: +# you can add plain $(LOG) to a rule recipe line to moderate it +# (logfile is automatically truncated during profile/init) + +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +# 1.3.22 fixes http://bugzilla.altlinux.org/26217 +HSH_VER_OPTIMAL = 1.3.22 +HSH_VERSION := $(shell hsh -V | sed -n 's/^.* version \([0-9.]\+\).*$$/\1/p') + +ifeq (-,$(shell rpmvercmp $(HSH_VERSION) $(HSH_VER_OPTIMAL) | tr -d '[0-9]')) +$(info warning: hasher-$(HSH_VERSION) is suboptimal, consider upgrading) +endif + +BUILDLOG ?= $(BUILDDIR)/$(BUILD_LOG) + +# LOG holds a redirecting postprocessor +ifdef DEBUG +# 1) makefile target; 2) also passed to script hooks +GLOBAL_DEBUG := debug +GLOBAL_VERBOSE ?= $(DEBUG) +ifeq (2,$(DEBUG)) +SHELL += -x +endif +LOG = >>$(BUILDLOG) 2>&1 +else +MAKE += -s +LOG = 2>>$(BUILDLOG) >/dev/null +endif + +ifeq (,$(filter-out $(DIRECT_TARGETS),$(MAKECMDGOALS))) +LOG = >/dev/null 2>&1 +endif + +# in build.mk, naive TIME gets expanded a bit too early (no need to export btw) +DATE = $(shell date +%Y%m%d) +TIME = `date +%H:%M:%S` + +export BUILDLOG DATE GLOBAL_DEBUG GLOBAL_VERBOSE LOG MAKE SHELL diff --git a/lib/profile.mk b/lib/profile.mk new file mode 100644 index 0000000..d077cce --- /dev/null +++ b/lib/profile.mk @@ -0,0 +1,138 @@ +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +ifneq (,$(filter-out $(DIRECT_TARGETS),$(MAKECMDGOALS))) +# this could have come from env; or could be symlinked; or is made anew +# (the reuse rationale is avoiding extra tmpdir lookups) +# NB: immediate assignment matters +ifndef BUILDDIR +BUILDLINK := $(realpath $(SYMLINK)) +BUILDDIR := $(shell \ +if [ -s "$(SYMLINK)" -a "$(NUM_TARGETS)" = 1 ] && \ + [ -n "$(findstring $(BUILDDIR_PREFIX).,$(BUILDLINK))" ]; \ +then \ + echo "$(BUILDLINK)"; \ +else \ + mktmpdir $(BUILDDIR_PREFIX) || exit 200; \ +fi; ) +endif + +ifeq (,$(BUILDDIR)) +$(error suitable BUILDDIR unavailable) +endif +endif + +# even smart caching only hurts when every build goes from scratch +NO_CACHE ?= 1 + +export BUILDDIR NO_CACHE + +CONFIG := $(BUILDDIR)/distcfg.mk +RC = $(HOME)/.mkimage/profiles.mk + +# step 1: initialize the off-tree mkimage profile (BUILDDIR) +# NB: our output MUST go into stderr to escape POSTPROC +profile/init: distclean + @{ \ + if [ "`realpath "$(BUILDDIR)/"`" = / ]; then \ + echo "$(TIME) ERROR: invalid BUILDDIR: \`$(BUILDDIR)'"; \ + exit 128; \ + fi; \ + if [ -z $(QUIET) ]; then \ + echo -n "$(TIME) initializing BUILDDIR: "; \ + fi; \ + rsync -qaxH --exclude .gitignore --delete-after image.in/ "$(BUILDDIR)"/; \ + mkdir "$(BUILDDIR)"/.mki; \ + } >&2 + @$(call put,ifndef DISTCFG_MK) + @$(call put,DISTCFG_MK = 1) + @{ \ + mp-showref $(LOG); \ + { \ + APTCONF="$(wildcard $(APTCONF))"; \ + echo "** using $${APTCONF:-system apt configuration}:"; \ + eval `apt-config shell $${APTCONF:+-c=$$APTCONF} \ + SOURCELIST Dir::Etc::sourcelist/f \ + SOURCEPARTS Dir::Etc::sourceparts/d`; \ + find "$$SOURCEPARTS" -mindepth 1 -maxdepth 1 -name '*.list' \ + | xargs egrep -hv -e '^#|^[[:blank:]]*$$' -- "$$SOURCELIST" \ + | tee $(BUILDDIR)/sources.list; \ + echo; \ + } $(LOG); \ + if ! grep -q "\<$(ARCH)\>" $(BUILDDIR)/sources.list; then \ + if grep -q " noarch " $(BUILDDIR)/sources.list; then \ + echo -n "requested arch '$$ARCH' unavailable" >&2; \ + if [ -z "$(APTCONF)" ]; then \ + echo " (no APTCONF)"; \ + else \ + echo; \ + fi >&2; \ + [ "$(CHECK)" = 0 ] || exit 1; \ + fi; \ + fi; \ + mp-commit -i "$(BUILDDIR)" "derivative profile initialized"; \ + if [ -w . ]; then \ + rm -f "$(SYMLINK)" && \ + ln -s "$(BUILDDIR)" "$(SYMLINK)" && \ + if [ -z $(QUIET) ]; then \ + echo "$(SYMLINK)/"; \ + fi; \ + else \ + if [ -z $(QUIET) ]; then \ + echo "$(BUILDDIR)/"; \ + fi; \ + fi $(SHORTEN); \ + } >&2 + +profile/bare: profile/init use/pkgpriorities + @{ \ + NOTE="$${GLOBAL_VERBOSE:+: $(CONFIG)}"; \ + if [ -z "$(QUIET)" ]; then \ + echo "$(TIME) preparing distro config$$NOTE" $(SHORTEN); \ + fi; \ + } >&2 + @$(call try,MKIMAGE_PREFIX,/usr/share/mkimage) + @$(call try,GLOBAL_PREFIX,$(MKIMAGE_PREFIX)) + @$(call try,GLOBAL_VERBOSE,) + @$(call try,IMAGEDIR,$(wildcard $(IMAGEDIR))) + @$(call try,LOGDIR,$(wildcard $(LOGDIR))) +ifeq (,$(BRANCH)) + @$(call try,BRANDING,kometa-school) +else + @$(call try,BRANDING,kometa-school) +endif + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-alterator:Essential) + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-bootsplash:Essential) + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-bootloader:Essential) + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-graphics:Essential) + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-indexhtml:Essential) + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-notes:Essential) + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-release:Essential) + @$(call add,PINNED_PACKAGES,branding-$$(BRANDING)-slideshow:Essential) +ifeq (,$(REPO:kometa%=)) + @$(call set,WORK_INIT_LIST,+branding-$$(BRANDING)-release) + @$(call set,IMAGE_INIT_LIST,+branding-$$(BRANDING)-release) +endif + @$(call xport,ARCH) + @mp-commit "$(BUILDDIR)" "image configuration defaults set" + +# put the derived SUBPROFILE_DIRS here to get it logged in clear text by the way +profile/finalize: + @$(call put,SUBPROFILE_DIRS = $$(notdir $$(subst @,/,$$(SUBPROFILES)))) + @if [ -s $(RC) ]; then $(call put,-include $(value RC)); fi + @$(call put,endif) + @mp-commit "$(BUILDDIR)" "image configuration finalized" + +# requires already formed distcfg.mk for useful output +profile/dump-vars: + @if [ -s "$(SYMLINK)" ]; then \ + $(MAKE) --no-print-directory -C "$(SYMLINK)/" -f vars.mk; \ + echo; \ + fi $(LOG) + +# step 3 entry point: copy the needed parts into BUILDDIR +profile/populate: profile/finalize profile/dump-vars + @for dir in sub.in features.in pkg.in; do \ + $(MAKE) -C $$dir $(LOG); \ + done diff --git a/lib/report.mk b/lib/report.mk new file mode 100644 index 0000000..7785ce5 --- /dev/null +++ b/lib/report.mk @@ -0,0 +1,9 @@ +# enable make target tracing + +ifneq (,$(REPORT)) +TRACE_PREFIX := trace:building +OLD_SHELL := $(SHELL) +SHELL = $(info $(TRACE_PREFIX) $@$(if $^$|, -> $^ $|))$(OLD_SHELL) +# piggyback BUILDDIR back into supervising environment +$(info $(TRACE_PREFIX) BUILDDIR = $(BUILDDIR)) +endif diff --git a/lib/sugar.mk b/lib/sugar.mk new file mode 100644 index 0000000..75a389c --- /dev/null +++ b/lib/sugar.mk @@ -0,0 +1,22 @@ +# this makefile contains some syntactic sugar for the toplevel one + +# strip prefix +config/with/%: %; @: + +# just map to specific features +config/like/%: use/build-%; @: + +# map and preconfigure +config/pack/%: use/pack/% + @$(call set,IMAGE_TYPE,$*) + +# just preconfigure +config/name/%: + @$(call set,IMAGE_NAME,$*) + +# request particular image subprofile inclusion +sub/%: + @$(call add,SUBPROFILES,$(@:sub/%=%)) + +# the final thing will pull the rest in +build: postclean; @: diff --git a/lib/ve.mk b/lib/ve.mk new file mode 100644 index 0000000..002cfa2 --- /dev/null +++ b/lib/ve.mk @@ -0,0 +1,21 @@ +# step 2: build up virtual environment's configuration + +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +ifeq (ve,$(IMAGE_CLASS)) + +# no package management and networking +ve/.bare: profile/bare + @$(call add,BASE_PACKAGES,basesystem) + +# add package management +ve/.apt: ve/.bare + @$(call add,BASE_PACKAGES,apt) + +# also add networking +ve/.base: ve/.apt + @$(call add,BASE_PACKAGES,etcnet) + +endif diff --git a/lib/vm.mk b/lib/vm.mk new file mode 100644 index 0000000..e7ee829 --- /dev/null +++ b/lib/vm.mk @@ -0,0 +1,30 @@ +# step 2: build up virtual machine's configuration + +ifndef MKIMAGE_PROFILES +$(error this makefile is designed to be included in toplevel one) +endif + +ifeq (vm,$(IMAGE_CLASS)) + +vm/.bare: profile/bare + @$(call add,BASE_PACKAGES,interactivesystem shadow-utils e2fsprogs) + +ifeq (,$(filter-out i586 x86_64,$(ARCH))) +vm/.base-lilo: vm/.bare use/bootloader/lilo; @: +else +vm/.base-lilo: vm/.base-grub; @: +endif + +ifeq (,$(filter-out i586 x86_64 ppc64le,$(ARCH))) +vm/.base-grub: vm/.bare use/bootloader/grub; @: +else +vm/.base-grub: vm/.base-grub-efi; @: +endif + +ifeq (,$(filter-out x86_64 aarch64 riscv64,$(ARCH))) +vm/.base-grub-efi: vm/.bare use/efi/grub; @: +else +vm/.base-grub-efi: vm/.bare; @: +endif + +endif diff --git a/main.mk b/main.mk new file mode 100644 index 0000000..7efc5a5 --- /dev/null +++ b/main.mk @@ -0,0 +1,105 @@ +# steps to build an image: +# --- here +# 1. initialize new profile (BUILDDIR) as a copy of image.in/ +# 2. configure distro +# 3. copy the needed bits from metaprofile to a new profile +# --- in BUILDDIR +# 4. build subprofiles and subsequently an image + +# deal with one target at a time +IMAGE_TARGET := $(firstword $(MAKECMDGOALS))# ve/generic.tar.gz +ifeq (./,$(dir $(IMAGE_TARGET)))# convenience fallback +IMAGE_TARGET := distro/$(IMAGE_TARGET)# for omitted "distro/" +IMAGE_GUESS := 1 +else +IMAGE_GUESS := +endif +IMAGE_CONF := $(firstword $(subst ., ,$(IMAGE_TARGET)))# ve/generic +IMAGE_CLASS := $(firstword $(subst /, ,$(IMAGE_TARGET)))# ve +IMAGE_FILE := $(lastword $(subst /, ,$(IMAGE_TARGET)))# generic.tar.gz +ifneq (,$(BRANCH)) +IMAGE_FILE := $(subst regular,alt-$(BRANCH),$(IMAGE_FILE)) +endif +IMAGE_NAME := $(firstword $(subst ., ,$(IMAGE_FILE)))# generic +IMAGE_TYPE := $(subst $(IMAGE_NAME).,,$(IMAGE_FILE))# tar.gz +ifeq ($(IMAGE_NAME),$(IMAGE_TYPE)$(IMAGE_GUESS)) +ifneq (help,$(IMAGE_CLASS)) +$(warning no image type/extension specified, run make help?) +endif +endif + +# readjustable +ifeq (1,$(NUM_TARGETS)) +BUILDDIR_PREFIX ?= mkimage-profiles.build +else +BUILDDIR_PREFIX ?= mkimage-profiles.build/$(IMAGE_CONF).$(ARCH) +endif + +export MKIMAGE_PROFILES := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) + +# preferences +-include $(HOME)/.mkimage/profiles.mk + +# most of the actual work done elsewhere +include $(sort $(wildcard lib/*.mk)) +include conf.d/*.mk +include features.in/*/config.mk + +# ensure the outdir is created and globbable +ifdef IMAGEDIR +$(shell mkdir -p $(IMAGEDIR)) +IMAGEDIR := $(wildcard $(IMAGEDIR)) +endif + +# conf.d/*.mk can expose parts conditionally (e.g. DEBUG-only bits) +targets = $(shell \ + for i in conf.d/*.mk; do \ + make IMAGE_CLASS=$(1) -s -r -p -f $$i 2>/dev/null; \ + done \ + | sed -rn 's,^($(1)/[^.:]+):.*,\1,p' \ + | sort -u) + +DISTRO_TARGETS := $(call targets,distro) +VE_TARGETS := $(call targets,ve) +VM_TARGETS := $(call targets,vm) +DISTROS := $(call addsuffices,$(DISTRO_EXTS),$(DISTRO_TARGETS)) +VES := $(call addsuffices,$(VE_EXTS),$(VE_TARGETS)) +VES_TAR := $(call addsuffices,.tar,$(VE_TARGETS)) +VMS := $(call addsuffices,$(VM_EXTS),$(VM_TARGETS)) \ + $(call addsuffices,$(VM_TAVOLGA_EXTS), $(filter vm/%-tavolga, $(VM_TARGETS))) +VMS_IMG := $(call addsuffices,.img,$(VM_TARGETS)) +IMAGES := $(DISTROS) $(VES) $(VMS) + +.PHONY: $(IMAGES) $(DISTRO_TARGETS) $(VE_TARGETS) $(VM_TARGETS) +.PHONY: debug everything help space + +# grepping for localized error messages is not trivial +export LC_MESSAGES=C + +### duplicate but still needed +everything: + @n=1; sum=$(words $(DISTROS) $(VES_TAR) $(VMS_IMG)); \ + for distro in $(DISTROS) $(VES_TAR) $(VMS_IMG); do \ + echo "** building $$distro [$$n/$$sum]:"; \ + $(MAKE) -f main.mk --no-print-directory $$distro; \ + [ "$$n" -lt "$$sum" ] && echo; \ + n=$$(($$n+1)); \ + done + +# config/with/ve/generic config/like/ve config/name/generic config/pack/tar.gz +$(IMAGES): debug \ + config/with/$(IMAGE_CONF) \ + config/like/$(IMAGE_CLASS) \ + config/name/$(IMAGE_NAME) \ + config/pack/$(IMAGE_TYPE) \ + build; @: + +# convenience shortcut +$(DISTROS:distro/%=%): %: distro/%; @: + +debug:: +ifeq (2,$(DEBUG)) + @$(foreach v,\ + $(filter IMAGE_%,$(sort $(.VARIABLES))),\ + $(warning $v = $($v))) +endif diff --git a/makeimg.sh b/makeimg.sh new file mode 100755 index 0000000..513a2cd --- /dev/null +++ b/makeimg.sh @@ -0,0 +1,3 @@ +#!/bin/sh +#make APTCONF=/home/tema/mkimage-profiles/apt.conf DEBUG=1 BUILDDIR=/home/tema/mkimage-profiles/bld regular-kde5.iso +make APTCONF=/home/tema/mkimage-profiles/apt.conf DEBUG=1 BUILDDIR=/home/tema/mkimage-profiles/bld BRANCH=p10 regular-kde5.iso diff --git a/myp10 b/myp10 new file mode 100644 index 0000000..5f126f8 --- /dev/null +++ b/myp10 @@ -0,0 +1,5 @@ +rpm file:/d/repo/local x86_64 hasher #_home_tema_distronavigator_repo #branding_repo +#rpm file:/home/tema/repo/club/p9 x86_64 hasher #club_repo +rpm file:/d/repo/p10/branch x86_64 classic #main_repo_i +rpm file:/d/repo/p10/branch x86_64-i586 classic #main_repo_i +rpm file:/d/repo/p10/branch noarch classic #main_repo_n \ No newline at end of file diff --git a/pkg.in/Makefile b/pkg.in/Makefile new file mode 100644 index 0000000..2afdae1 --- /dev/null +++ b/pkg.in/Makefile @@ -0,0 +1,13 @@ +# step 3: copy package lists and groups as well as installation profiles +# referenced in distro configuration (and only those!) +# over to $(BUILDDIR) + +ifndef BUILDDIR +$(error BUILDDIR not defined) +endif + +# sequential execution, no reason to haste +all: + @for dir in lists groups profiles; do \ + $(MAKE) -C $$dir || exit; \ + done diff --git a/pkg.in/README b/pkg.in/README new file mode 100644 index 0000000..e54904a --- /dev/null +++ b/pkg.in/README @@ -0,0 +1,5 @@ +== pkg.in == + +Этот каталог содержит все возможные списки пакетов и описания групп, +которые по мере необходимости копируются из метапрофиля в формируемый +профиль. diff --git a/pkg.in/groups/Makefile b/pkg.in/groups/Makefile new file mode 100644 index 0000000..5d79727 --- /dev/null +++ b/pkg.in/groups/Makefile @@ -0,0 +1,51 @@ +# step 3: copy package groups referenced in distro configuration +# (and only those!) over to $(BUILDDIR) + +ifndef BUILDDIR + +check all: check-parents check-echo check-pkglists; @: + +check-parents: + @find -name "*.directory" \ + | xargs -r -- sed -rn 's,^X-Alterator-Parent=(.*)$$,\1,p' \ + | sort -u \ + | while read group; do \ + if ! [ -f "$$group.directory" ]; then \ + echo "** Error: missing parent group referenced in:"; \ + grep -rl "=$$group$$" $$(find -name "*.directory"); \ + fi >&2; \ + done + +check-echo: + @echo + +check-pkglists: + @find -name "*.directory" \ + | xargs -r -- sed -rn 's,^X-Alterator-PackageList=(.*)$$,\1,p' \ + | sort -u \ + | while read list; do \ + if ! [ -f "../lists/$$list" ]; then \ + echo "** Error: missing pkglist $$list referenced:"; \ + grep -rl "=$$list$$" $$(find -name "*.directory"); \ + fi >&2; \ + done + +else + +include $(BUILDDIR)/distcfg.mk +SUFFIX := pkg/groups +TARGET := $(BUILDDIR)/$(SUFFIX) + +all: $(GLOBAL_DEBUG) + @if [ -n "$(THE_GROUPS)$(MAIN_GROUPS)" ]; then \ + mkdir -p $(TARGET) && \ + cp --parents -at $(TARGET) -- \ + $(addsuffix .directory,$(THE_GROUPS) $(MAIN_GROUPS)); \ + mp-commit "$(TARGET)" "requested $(SUFFIX) copied over"; \ + fi + +debug: + @echo "** THE_GROUPS: $(THE_GROUPS)" + @echo "** MAIN_GROUPS: $(MAIN_GROUPS)" + +endif diff --git a/pkg.in/groups/README b/pkg.in/groups/README new file mode 100644 index 0000000..bfbb9ef --- /dev/null +++ b/pkg.in/groups/README @@ -0,0 +1,9 @@ +[float] +=== pkg.in/groups === + +Этот каталог содержит описания групп, копируемые из метапрофиля +в создаваемый профиль по необходимости (только фигурирующие в +списке, которым является значение переменной MAIN_GROUPS). + +В данный момент перенесено почти 1:1 из mkimage-profiles-desktop, +требует увязки с pkg.in/lists/tagged/ diff --git a/pkg.in/groups/centaurus/10-alterator.directory b/pkg.in/groups/centaurus/10-alterator.directory new file mode 100644 index 0000000..28f6ad6 --- /dev/null +++ b/pkg.in/groups/centaurus/10-alterator.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Management interface +X-Alterator-PackageList=centaurus/10-alterator +X-Alterator-Required=yes +Name[ru_RU]=Интерфейс управления diff --git a/pkg.in/groups/centaurus/20-server-apps.directory b/pkg.in/groups/centaurus/20-server-apps.directory new file mode 100644 index 0000000..e248f19 --- /dev/null +++ b/pkg.in/groups/centaurus/20-server-apps.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Server applications +X-Alterator-PackageList=centaurus/zero +X-Alterator-Required=no +Name[ru_RU]=Серверные приложения diff --git a/pkg.in/groups/centaurus/30-cups.directory b/pkg.in/groups/centaurus/30-cups.directory new file mode 100644 index 0000000..13e1bdc --- /dev/null +++ b/pkg.in/groups/centaurus/30-cups.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Printing system +X-Alterator-PackageList=centaurus/30-cups +X-Alterator-Required=no +Name[ru_RU]=Система печати + diff --git a/pkg.in/groups/centaurus/40-pve.directory b/pkg.in/groups/centaurus/40-pve.directory new file mode 100644 index 0000000..4604056 --- /dev/null +++ b/pkg.in/groups/centaurus/40-pve.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=PVE virtualization server +X-Alterator-Conflicts=centaurus/v12n-server centaurus/libvirt centaurus/openstack-block centaurus/openstack-controller centaurus/cluster +X-Alterator-PackageList=centaurus/40-pve +X-Alterator-Required=no +Name[ru_RU]=Сервер виртуализации PVE diff --git a/pkg.in/groups/centaurus/50-freeipa.directory b/pkg.in/groups/centaurus/50-freeipa.directory new file mode 100644 index 0000000..069b6e2 --- /dev/null +++ b/pkg.in/groups/centaurus/50-freeipa.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FreeIPA domain +X-Alterator-PackageList=centaurus/zero +X-Alterator-Conflicts=sambaDC +X-Alterator-Required=no +Name[ru_RU]=Домен FreeIPA +Categories=Networking diff --git a/pkg.in/groups/centaurus/60-openstack.directory b/pkg.in/groups/centaurus/60-openstack.directory new file mode 100644 index 0000000..65e7663 --- /dev/null +++ b/pkg.in/groups/centaurus/60-openstack.directory @@ -0,0 +1,6 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Openstack +X-Alterator-PackageList=centaurus/zero +X-Alterator-Required=no diff --git a/pkg.in/groups/centaurus/70-dev.directory b/pkg.in/groups/centaurus/70-dev.directory new file mode 100644 index 0000000..fd30fc9 --- /dev/null +++ b/pkg.in/groups/centaurus/70-dev.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Development tools +X-Alterator-PackageList=centaurus/70-dev +X-Alterator-Required=no +Name[ru_RU]=Средства разработки diff --git a/pkg.in/groups/centaurus/80-desktop.directory b/pkg.in/groups/centaurus/80-desktop.directory new file mode 100644 index 0000000..1493689 --- /dev/null +++ b/pkg.in/groups/centaurus/80-desktop.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Graphical desktop +X-Alterator-PackageList=centaurus/zero +X-Alterator-Required=no +Name[ru_RU]=Графическая система diff --git a/pkg.in/groups/centaurus/90-docs.directory b/pkg.in/groups/centaurus/90-docs.directory new file mode 100644 index 0000000..76d1b2b --- /dev/null +++ b/pkg.in/groups/centaurus/90-docs.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Documentation +X-Alterator-PackageList=centaurus/90-docs +X-Alterator-Required=yes + +Name[ru_RU]=Документация +Categories=KDE;KDE4;GNOME;XFCE + diff --git a/pkg.in/groups/centaurus/admc.directory b/pkg.in/groups/centaurus/admc.directory new file mode 100644 index 0000000..90d85cc --- /dev/null +++ b/pkg.in/groups/centaurus/admc.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Group policy managing tool +X-Alterator-PackageList=centaurus/admc +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Инструмент управления групповыми политиками + diff --git a/pkg.in/groups/centaurus/alterator.directory b/pkg.in/groups/centaurus/alterator.directory new file mode 100644 index 0000000..72448a4 --- /dev/null +++ b/pkg.in/groups/centaurus/alterator.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Management interface +X-Alterator-PackageList=alterator +X-Alterator-Required=yes +Name[ru_RU]=Интерфейс управления diff --git a/pkg.in/groups/centaurus/bacula-client-a.directory b/pkg.in/groups/centaurus/bacula-client-a.directory new file mode 100644 index 0000000..ede8ca3 --- /dev/null +++ b/pkg.in/groups/centaurus/bacula-client-a.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Network Backup Client +X-Alterator-PackageList=centaurus/bacula-client-a +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Required=yes +Name[ru_RU]=Клиент сетевого резервного копирования +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/bacula-client.directory b/pkg.in/groups/centaurus/bacula-client.directory new file mode 100644 index 0000000..513e09c --- /dev/null +++ b/pkg.in/groups/centaurus/bacula-client.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Network Backup Client +X-Alterator-PackageList=centaurus/bacula-client +X-Alterator-Parent=centaurus/20-server-apps +X-Alterator-Required=yes +Name[ru_RU]=Клиент сетевого резервного копирования +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/bacula-server.directory b/pkg.in/groups/centaurus/bacula-server.directory new file mode 100644 index 0000000..a282a46 --- /dev/null +++ b/pkg.in/groups/centaurus/bacula-server.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Backup Server +X-Alterator-PackageList=centaurus/backup-server +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Required=no +Name[ru_RU]=Сервер резервного копирования +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/bacula.directory b/pkg.in/groups/centaurus/bacula.directory new file mode 100644 index 0000000..5f1de21 --- /dev/null +++ b/pkg.in/groups/centaurus/bacula.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Backup +X-Alterator-PackageList=centaurus/bacula-a +X-Alterator-Parent=centaurus/80-desktop +X-Alterator-Required=no +Name[ru_RU]=Резервное копирование +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/blogs.directory b/pkg.in/groups/centaurus/blogs.directory new file mode 100644 index 0000000..40c6cac --- /dev/null +++ b/pkg.in/groups/centaurus/blogs.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Blogs Clients +X-Alterator-PackageList=centaurus/blogs +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Ведение блогов +Categories=KDE;KDE4 diff --git a/pkg.in/groups/centaurus/buildsystem.directory b/pkg.in/groups/centaurus/buildsystem.directory new file mode 100644 index 0000000..55d7f7c --- /dev/null +++ b/pkg.in/groups/centaurus/buildsystem.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Buildsystem +X-Alterator-PackageList=centaurus/buildsystem +X-Alterator-Parent=centaurus/70-dev +X-Alterator-Required=no +Name[ru_RU]=Сборка пакетов diff --git a/pkg.in/groups/centaurus/cups.directory b/pkg.in/groups/centaurus/cups.directory new file mode 100644 index 0000000..642dbf4 --- /dev/null +++ b/pkg.in/groups/centaurus/cups.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Printing system +X-Alterator-PackageList=cups +X-Alterator-Required=no +Name[ru_RU]=Система печати + diff --git a/pkg.in/groups/centaurus/dhcp-server-a.directory b/pkg.in/groups/centaurus/dhcp-server-a.directory new file mode 100644 index 0000000..2d1e41f --- /dev/null +++ b/pkg.in/groups/centaurus/dhcp-server-a.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DHCP server +X-Alterator-PackageList=centaurus/dhcp-server-a +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Depends=dhcp-server +X-Alterator-Required=no +Name[ru_RU]=Сервер DHCP +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/diag-tools.directory b/pkg.in/groups/centaurus/diag-tools.directory new file mode 100644 index 0000000..ad55b22 --- /dev/null +++ b/pkg.in/groups/centaurus/diag-tools.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Diagnostic tools +X-Alterator-PackageList=centaurus/diag-tools +X-Alterator-Parent=centaurus/20-server-apps +X-Alterator-Required=no +Name[ru_RU]=Утилиты для диагностики +Categories=Server;Diagnostics +# NB: as the list may expand, skip adding Networking diff --git a/pkg.in/groups/centaurus/dns-server-a.directory b/pkg.in/groups/centaurus/dns-server-a.directory new file mode 100644 index 0000000..11311f2 --- /dev/null +++ b/pkg.in/groups/centaurus/dns-server-a.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DNS server +X-Alterator-PackageList=centaurus/dns-server-a +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Depends=dns-server +X-Alterator-Required=no +Name[ru_RU]=Сервер DNS +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/dns-server.directory b/pkg.in/groups/centaurus/dns-server.directory new file mode 100644 index 0000000..f92d541 --- /dev/null +++ b/pkg.in/groups/centaurus/dns-server.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DNS Server +X-Alterator-PackageList=dns-server +X-Alterator-Required=no +X-Alterator-Parent=server-apps +Name[ru_RU]=Сервер DNS +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/docs.directory b/pkg.in/groups/centaurus/docs.directory new file mode 100644 index 0000000..1d6ffe7 --- /dev/null +++ b/pkg.in/groups/centaurus/docs.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Documentation +X-Alterator-PackageList=docs +X-Alterator-Required=yes + +Name[ru_RU]=Документация +Categories=KDE;KDE4;GNOME;XFCE + diff --git a/pkg.in/groups/centaurus/domain-server.directory b/pkg.in/groups/centaurus/domain-server.directory new file mode 100644 index 0000000..2ab7c90 --- /dev/null +++ b/pkg.in/groups/centaurus/domain-server.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=ALT Domain Server (ldap+kerberos) +X-Alterator-PackageList=centaurus/domain-server +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Required=no +Name[ru_RU]=Сервер Домена LDAP и Kerberos diff --git a/pkg.in/groups/centaurus/emulators.directory b/pkg.in/groups/centaurus/emulators.directory new file mode 100644 index 0000000..9287079 --- /dev/null +++ b/pkg.in/groups/centaurus/emulators.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Emulators +X-Alterator-PackageList=centaurus/emulators +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Эмуляторы +X-Alterator-Conflicts=wine-local +Categories=KDE;KDE4;GNOME diff --git a/pkg.in/groups/centaurus/freeipa-client.directory b/pkg.in/groups/centaurus/freeipa-client.directory new file mode 100644 index 0000000..d48004d --- /dev/null +++ b/pkg.in/groups/centaurus/freeipa-client.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FreeIPA domain client +X-Alterator-PackageList=centaurus/freeipa-client +X-Alterator-Required=no +X-Alterator-Parent=centaurus/50-freeipa +X-Alterator-Conflicts=sambaDC +Name[ru_RU]=Клиент домена FreeIPA +Categories=Networking + diff --git a/pkg.in/groups/centaurus/freeipa-server.directory b/pkg.in/groups/centaurus/freeipa-server.directory new file mode 100644 index 0000000..ddf21c7 --- /dev/null +++ b/pkg.in/groups/centaurus/freeipa-server.directory @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FreeIPA domain server +X-Alterator-PackageList=centaurus/freeipa-server +X-Alterator-Required=no +X-Alterator-Parent=centaurus/50-freeipa +X-Alterator-Depends=freeipa-client +X-Alterator-Conflicts=sambaDC +Name[ru_RU]=Сервер домена FreeIPA +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/freenx-server.directory b/pkg.in/groups/centaurus/freenx-server.directory new file mode 100644 index 0000000..aa938fa --- /dev/null +++ b/pkg.in/groups/centaurus/freenx-server.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FreeNX Server +X-Alterator-PackageList=centaurus/freenx-server +X-Alterator-Parent=centaurus/20-server-apps + +Name[ru_RU]=Сервер FreeNX diff --git a/pkg.in/groups/centaurus/ftp-server-a.directory b/pkg.in/groups/centaurus/ftp-server-a.directory new file mode 100644 index 0000000..1a6c87e --- /dev/null +++ b/pkg.in/groups/centaurus/ftp-server-a.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FTP server +X-Alterator-PackageList=centaurus/ftp-server-a +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Depends=ftp-server +X-Alterator-Required=no +Name[ru_RU]=Сервер FTP +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/ganeti.directory b/pkg.in/groups/centaurus/ganeti.directory new file mode 100644 index 0000000..b8db1bd --- /dev/null +++ b/pkg.in/groups/centaurus/ganeti.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Ganeti +X-Alterator-PackageList=centaurus/ganeti +X-Alterator-Parent=centaurus/20-server-apps +X-Alterator-Depends=kvm-server +X-Alterator-Required=no +Name[ru_RU]=Ganeti diff --git a/pkg.in/groups/centaurus/gnome-peer-to-peer.directory b/pkg.in/groups/centaurus/gnome-peer-to-peer.directory new file mode 100644 index 0000000..5a31cde --- /dev/null +++ b/pkg.in/groups/centaurus/gnome-peer-to-peer.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Peer-to-peer clients +X-Alterator-PackageList=centaurus/gnome-peer-to-peer +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Файлообменные сети +Categories=GNOME diff --git a/pkg.in/groups/centaurus/graphics-editing.directory b/pkg.in/groups/centaurus/graphics-editing.directory new file mode 100644 index 0000000..e8cfdca --- /dev/null +++ b/pkg.in/groups/centaurus/graphics-editing.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Graphics editing +X-Alterator-PackageList=centaurus/graphics-editing +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Обработка графики +Categories=KDE;KDE4;GNOME diff --git a/pkg.in/groups/centaurus/gtk-dictionary.directory b/pkg.in/groups/centaurus/gtk-dictionary.directory new file mode 100644 index 0000000..688abc4 --- /dev/null +++ b/pkg.in/groups/centaurus/gtk-dictionary.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Dictionary +X-Alterator-PackageList=centaurus/gtk-dictionary +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Словарь +Categories=GNOME;XFCE + diff --git a/pkg.in/groups/centaurus/http-server.directory b/pkg.in/groups/centaurus/http-server.directory new file mode 100644 index 0000000..bd139ee --- /dev/null +++ b/pkg.in/groups/centaurus/http-server.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=HTTP Server (Apache2,PHP) +X-Alterator-PackageList=http-server +X-Alterator-Parent=server-apps +X-Alterator-Required=no +Name[ru_RU]=Сервер HTTP (Apache2,PHP) +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/ipmi.directory b/pkg.in/groups/centaurus/ipmi.directory new file mode 100644 index 0000000..f7b2db3 --- /dev/null +++ b/pkg.in/groups/centaurus/ipmi.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=IPMI tools +X-Alterator-PackageList=centaurus/ipmi +X-Alterator-Parent=centaurus/20-server-apps +X-Alterator-Required=no +Name[ru_RU]=Утилиты для поддержки IPMI +Categories=Server;IPMI + diff --git a/pkg.in/groups/centaurus/jitsi-meet.directory b/pkg.in/groups/centaurus/jitsi-meet.directory new file mode 100644 index 0000000..0999c58 --- /dev/null +++ b/pkg.in/groups/centaurus/jitsi-meet.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Jitsi Meet Videconferecing +X-Alterator-PackageList=jitsi-meet +X-Alterator-Parent=centaurus/20-server-apps +X-Alterator-Required=no +Name[ru_RU]=Сервер видеоконференций Jitsi Meet +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/kvm-server.directory b/pkg.in/groups/centaurus/kvm-server.directory new file mode 100644 index 0000000..2bb8e30 --- /dev/null +++ b/pkg.in/groups/centaurus/kvm-server.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Virtualization over kvm +X-Alterator-PackageList=kvm-server +X-Alterator-Required=no +X-Alterator-Parent=server-apps +Name[ru_RU]=Сервер виртуализации kvm +Categories=Server;Virtualization + diff --git a/pkg.in/groups/centaurus/mail-server-a.directory b/pkg.in/groups/centaurus/mail-server-a.directory new file mode 100644 index 0000000..62ed468 --- /dev/null +++ b/pkg.in/groups/centaurus/mail-server-a.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Mail Server (SMTP, IMAP, POP3) +X-Alterator-PackageList=centaurus/mail-server-a +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Depends=mail-server +Name[ru_RU]=Почтовый сервер (SMTP, IMAP, POP3) +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/mate.directory b/pkg.in/groups/centaurus/mate.directory new file mode 100644 index 0000000..d876022 --- /dev/null +++ b/pkg.in/groups/centaurus/mate.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=GNOME desktop enviroment +X-Alterator-PackageList=centaurus/mate +X-Alterator-Parent=centaurus/80-desktop +X-Alterator-Depends=systemd centaurus/xorg +X-Alterator-Conflicts=sambaDC +X-Alterator-Required=yes +Name[ru_RU]=Среда MATE diff --git a/pkg.in/groups/centaurus/mediawiki.directory b/pkg.in/groups/centaurus/mediawiki.directory new file mode 100644 index 0000000..848bb4a --- /dev/null +++ b/pkg.in/groups/centaurus/mediawiki.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Mediawiki +X-Alterator-PackageList=centaurus/mediawiki +X-Alterator-Required=no +X-Alterator-Parent=centaurus/20-server-apps +Name[ru_RU]=Сервер mediawiki +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/monitoring.directory b/pkg.in/groups/centaurus/monitoring.directory new file mode 100644 index 0000000..f808671 --- /dev/null +++ b/pkg.in/groups/centaurus/monitoring.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Monitoring +X-Alterator-PackageList=centaurus/monitoring +X-Alterator-Parent=centaurus/20-server-apps +X-Alterator-Required=no +Name[ru_RU]=Средства мониторинга системы +Categories=Server;Monitoring + diff --git a/pkg.in/groups/centaurus/mysql-server-a.directory b/pkg.in/groups/centaurus/mysql-server-a.directory new file mode 100644 index 0000000..5e83348 --- /dev/null +++ b/pkg.in/groups/centaurus/mysql-server-a.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=MySQL +X-Alterator-PackageList=phpmyadmin +X-Alterator-Parent=alterator +X-Alterator-Depends=mysql-server +Name[ru_RU]=MySQL +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/netinst.directory b/pkg.in/groups/centaurus/netinst.directory new file mode 100644 index 0000000..79077db --- /dev/null +++ b/pkg.in/groups/centaurus/netinst.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Network installation server +X-Alterator-PackageList=centaurus/netinst +X-Alterator-Parent=centaurus/10-alterator +X-Alterator-Required=no +Name[ru_RU]=Сервер сетевой установки +Categories=Server;Networking diff --git a/pkg.in/groups/centaurus/nm-daemon.directory b/pkg.in/groups/centaurus/nm-daemon.directory new file mode 100644 index 0000000..2f2d674 --- /dev/null +++ b/pkg.in/groups/centaurus/nm-daemon.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=NetworkManager daemon +X-Alterator-PackageList=centaurus/nm-daemon +X-Alterator-Required=no +Name[ru_RU]=Система управления сетевыми интерфейсами NetworkManager + diff --git a/pkg.in/groups/centaurus/office.directory b/pkg.in/groups/centaurus/office.directory new file mode 100644 index 0000000..80e78e8 --- /dev/null +++ b/pkg.in/groups/centaurus/office.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Office packages +X-Alterator-PackageList=centaurus/gnome-office +X-Alterator-Parent=centaurus/80-desktop +X-Alterator-Required=yes +Name[ru_RU]=Офисный пакет diff --git a/pkg.in/groups/centaurus/openstack-block.directory b/pkg.in/groups/centaurus/openstack-block.directory new file mode 100644 index 0000000..798cea9 --- /dev/null +++ b/pkg.in/groups/centaurus/openstack-block.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Block Storage Node +X-Alterator-PackageList=centaurus/openstack-block +X-Alterator-Required=no +X-Alterator-Parent=centaurus/60-openstack +Name[ru_RU]=Узел хранения блочных устройств + diff --git a/pkg.in/groups/centaurus/openstack-compute.directory b/pkg.in/groups/centaurus/openstack-compute.directory new file mode 100644 index 0000000..e37a065 --- /dev/null +++ b/pkg.in/groups/centaurus/openstack-compute.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Computing Node +X-Alterator-PackageList=centaurus/openstack-compute +X-Alterator-Required=no +X-Alterator-Parent=centaurus/60-openstack +Name[ru_RU]=Вычислительный узел + diff --git a/pkg.in/groups/centaurus/openstack-controller.directory b/pkg.in/groups/centaurus/openstack-controller.directory new file mode 100644 index 0000000..8376177 --- /dev/null +++ b/pkg.in/groups/centaurus/openstack-controller.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Controller Node +X-Alterator-PackageList=centaurus/openstack-controller +X-Alterator-Required=no +X-Alterator-Parent=centaurus/60-openstack +Name[ru_RU]=Управляющий узел + diff --git a/pkg.in/groups/centaurus/openstack-network.directory b/pkg.in/groups/centaurus/openstack-network.directory new file mode 100644 index 0000000..175c097 --- /dev/null +++ b/pkg.in/groups/centaurus/openstack-network.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Network Node +X-Alterator-PackageList=centaurus/openstack-network +X-Alterator-Required=no +X-Alterator-Parent=centaurus/60-openstack +Name[ru_RU]=Сетевой узел + diff --git a/pkg.in/groups/centaurus/openstack-storage.directory b/pkg.in/groups/centaurus/openstack-storage.directory new file mode 100644 index 0000000..59d9b84 --- /dev/null +++ b/pkg.in/groups/centaurus/openstack-storage.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Storage Node +X-Alterator-PackageList=centaurus/openstack-storage +X-Alterator-Required=no +X-Alterator-Parent=centaurus/60-openstack +Name[ru_RU]=Узел хранения объектов + diff --git a/pkg.in/groups/centaurus/openuds-tunnel.directory b/pkg.in/groups/centaurus/openuds-tunnel.directory new file mode 100644 index 0000000..b0e52a7 --- /dev/null +++ b/pkg.in/groups/centaurus/openuds-tunnel.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OpenUDS VDS tunneling +X-Alterator-PackageList=centaurus/openuds-tunnel +X-Alterator-Required=no +X-Alterator-Parent=centaurus/20-server-apps +X-Alterator-Conflicts=centaurus/openuds +Name[ru_RU]=Сервер туннелирования виртуальных рабочих столов OpenUDS +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/openuds.directory b/pkg.in/groups/centaurus/openuds.directory new file mode 100644 index 0000000..704560a --- /dev/null +++ b/pkg.in/groups/centaurus/openuds.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OpenUDS virtual desktop server +X-Alterator-PackageList=centaurus/openuds +X-Alterator-Required=no +X-Alterator-Conflicts=centaurus/openuds-tunnel +X-Alterator-Parent=centaurus/20-server-apps +Name[ru_RU]=Сервер виртуальных рабочих столов OpenUDS +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/owncloud.directory b/pkg.in/groups/centaurus/owncloud.directory new file mode 100644 index 0000000..6a3b36f --- /dev/null +++ b/pkg.in/groups/centaurus/owncloud.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Nextcloud +X-Alterator-PackageList=centaurus/owncloud +X-Alterator-Required=no +X-Alterator-Parent=centaurus/20-server-apps +Name[ru_RU]=Сервер Nextcloud +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/pidgin.directory b/pkg.in/groups/centaurus/pidgin.directory new file mode 100644 index 0000000..ab79634 --- /dev/null +++ b/pkg.in/groups/centaurus/pidgin.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=IM client +X-Alterator-PackageList=centaurus/pidgin +X-Alterator-Parent=centaurus/80-desktop +X-Alterator-Required=no +Name[ru_RU]=Обмен мгновенными сообщениями diff --git a/pkg.in/groups/centaurus/publishing.directory b/pkg.in/groups/centaurus/publishing.directory new file mode 100644 index 0000000..3823023 --- /dev/null +++ b/pkg.in/groups/centaurus/publishing.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Publishing +X-Alterator-PackageList=centaurus/publishing +X-Alterator-Required=no +Name[ru_RU]=Издательская система +X-Alterator-Parent=centaurus/80-desktop +Categories=KDE;KDE4;GNOME diff --git a/pkg.in/groups/centaurus/remmina.directory b/pkg.in/groups/centaurus/remmina.directory new file mode 100644 index 0000000..d9f675f --- /dev/null +++ b/pkg.in/groups/centaurus/remmina.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Remote Desktop access client +X-Alterator-PackageList=centaurus/remmina +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Доступ к удалённым рабочим столам diff --git a/pkg.in/groups/centaurus/samba.directory b/pkg.in/groups/centaurus/samba.directory new file mode 100644 index 0000000..2444d7b --- /dev/null +++ b/pkg.in/groups/centaurus/samba.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Samba Server +X-Alterator-PackageList=centaurus/samba +X-Alterator-Required=no +X-Alterator-Parent=centaurus/20-server-apps +Name[ru_RU]=Сервер Samba +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/sambaDC.directory b/pkg.in/groups/centaurus/sambaDC.directory new file mode 100644 index 0000000..34ee3c8 --- /dev/null +++ b/pkg.in/groups/centaurus/sambaDC.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=SambaDC Server (AD controller) +X-Alterator-PackageList=centaurus/sambaDC +X-Alterator-Required=yes +X-Alterator-Parent=centaurus/20-server-apps +Name[ru_RU]=Сервер SambaDC (контроллер AD) +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/scanning.directory b/pkg.in/groups/centaurus/scanning.directory new file mode 100644 index 0000000..6e8db82 --- /dev/null +++ b/pkg.in/groups/centaurus/scanning.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Scanning +X-Alterator-PackageList=centaurus/scanning +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Поддержка сканеров +Categories=KDE;KDE4;GNOME;XFCE diff --git a/pkg.in/groups/centaurus/sogo.directory b/pkg.in/groups/centaurus/sogo.directory new file mode 100644 index 0000000..7d502ae --- /dev/null +++ b/pkg.in/groups/centaurus/sogo.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Sogo groupware server +X-Alterator-PackageList=centaurus/sogo +X-Alterator-Conflicts=samba samba-server domain-server +X-Alterator-Required=no +X-Alterator-Parent=centaurus/20-server-apps +Name[ru_RU]=Сервер системы совместной работы Sogo +Categories=Server;Networking + diff --git a/pkg.in/groups/centaurus/sound-editing.directory b/pkg.in/groups/centaurus/sound-editing.directory new file mode 100644 index 0000000..725ee62 --- /dev/null +++ b/pkg.in/groups/centaurus/sound-editing.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Sound editing +X-Alterator-PackageList=centaurus/sound-editing +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Обработка звука +Categories=KDE;KDE4;GNOME;XFCE diff --git a/pkg.in/groups/centaurus/systemd-networkd.directory b/pkg.in/groups/centaurus/systemd-networkd.directory new file mode 100644 index 0000000..9069b9f --- /dev/null +++ b/pkg.in/groups/centaurus/systemd-networkd.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Systemd network configuration daemon +X-Alterator-PackageList=centaurus/systemd-networkd +X-Alterator-Required=no +Name[ru_RU]=Система управления сетевыми интерфейсами Systemd-networkd + diff --git a/pkg.in/groups/centaurus/v12n-server.directory b/pkg.in/groups/centaurus/v12n-server.directory new file mode 100644 index 0000000..6296a72 --- /dev/null +++ b/pkg.in/groups/centaurus/v12n-server.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Virtualization +X-Alterator-PackageList=centaurus/v12n-server +X-Alterator-Required=no +X-Alterator-Parent=centaurus/20-server-apps +Name[ru_RU]=Сервер виртуализации +Categories=Server;Virtualization + diff --git a/pkg.in/groups/centaurus/virt-manager.directory b/pkg.in/groups/centaurus/virt-manager.directory new file mode 100644 index 0000000..e9e86e4 --- /dev/null +++ b/pkg.in/groups/centaurus/virt-manager.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Graphical manager for local and remote virtual machines +X-Alterator-PackageList=centaurus/virt-manager +X-Alterator-Required=no +X-Alterator-Parent=centaurus/80-desktop +Name[ru_RU]=Управление локальными и удалёнными виртуальными машинами diff --git a/pkg.in/groups/centaurus/vlc.directory b/pkg.in/groups/centaurus/vlc.directory new file mode 100644 index 0000000..cd62840 --- /dev/null +++ b/pkg.in/groups/centaurus/vlc.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=VLC mediaplayer +X-Alterator-PackageList=centaurus/vlc +X-Alterator-Parent=centaurus/80-desktop +X-Alterator-Required=yes +Name[ru_RU]=Медиаплеер VLC diff --git a/pkg.in/groups/centaurus/xorg.directory b/pkg.in/groups/centaurus/xorg.directory new file mode 100644 index 0000000..30b43ea --- /dev/null +++ b/pkg.in/groups/centaurus/xorg.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Main Components (Xorg) +X-Alterator-PackageList=centaurus/xorg +X-Alterator-Parent=centaurus/80-desktop +X-Alterator-Required=yes +Name[ru_RU]=Основные компоненты (Xorg) diff --git a/pkg.in/groups/dev/builder.directory b/pkg.in/groups/dev/builder.directory new file mode 100644 index 0000000..f335ee0 --- /dev/null +++ b/pkg.in/groups/dev/builder.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Build Environment +X-Alterator-PackageList=dev/builder +X-Alterator-Required=no +Name[ru_RU]=Сборочное окружение +Categories=Development;Builder + diff --git a/pkg.in/groups/education/00_base.directory b/pkg.in/groups/education/00_base.directory new file mode 100644 index 0000000..9026c6b --- /dev/null +++ b/pkg.in/groups/education/00_base.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Base education set +X-Alterator-PackageList=education/base +Name[ru_RU]=Базовый образовательный комплект +X-Alterator-Required=yes diff --git a/pkg.in/groups/education/01_preschool.directory b/pkg.in/groups/education/01_preschool.directory new file mode 100644 index 0000000..559b04d --- /dev/null +++ b/pkg.in/groups/education/01_preschool.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Preschool education +X-Alterator-PackageList=education/preschool +Name[ru_RU]=Дошкольное образование + diff --git a/pkg.in/groups/education/02_gradeschool.directory b/pkg.in/groups/education/02_gradeschool.directory new file mode 100644 index 0000000..ac2d2af --- /dev/null +++ b/pkg.in/groups/education/02_gradeschool.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Grade school edication +X-Alterator-PackageList=education/gradeschool +Name[ru_RU]=Начальная школа + diff --git a/pkg.in/groups/education/03_highschool.directory b/pkg.in/groups/education/03_highschool.directory new file mode 100644 index 0000000..0e5871d --- /dev/null +++ b/pkg.in/groups/education/03_highschool.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=High school education +X-Alterator-PackageList=education/highschool +Name[ru_RU]=Средняя школа + diff --git a/pkg.in/groups/education/04_secondary_vocational.directory b/pkg.in/groups/education/04_secondary_vocational.directory new file mode 100644 index 0000000..230bfa1 --- /dev/null +++ b/pkg.in/groups/education/04_secondary_vocational.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Secondary vocational education +X-Alterator-PackageList=education/secondary_vocational +Name[ru_RU]=Среднее профессиональное образование + diff --git a/pkg.in/groups/education/05_university.directory b/pkg.in/groups/education/05_university.directory new file mode 100644 index 0000000..e4718cf --- /dev/null +++ b/pkg.in/groups/education/05_university.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=University education +X-Alterator-PackageList=education/university +Name[ru_RU]=Высшее образование + diff --git a/pkg.in/groups/education/06_kde5.directory b/pkg.in/groups/education/06_kde5.directory new file mode 100644 index 0000000..6c051a6 --- /dev/null +++ b/pkg.in/groups/education/06_kde5.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=KDE 5 environment +X-Alterator-PackageList=education/kde5 +Name[ru_RU]=Среда KDE 5 + diff --git a/pkg.in/groups/education/06_kdesc.directory b/pkg.in/groups/education/06_kdesc.directory new file mode 100644 index 0000000..b163e8c --- /dev/null +++ b/pkg.in/groups/education/06_kdesc.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=KDE Software +X-Alterator-PackageList=education/kdesc +Name[ru_RU]=Программы KDE + diff --git a/pkg.in/groups/education/07_teacher.directory b/pkg.in/groups/education/07_teacher.directory new file mode 100644 index 0000000..e5978c5 --- /dev/null +++ b/pkg.in/groups/education/07_teacher.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Applications for teacher +X-Alterator-PackageList=education/teacher +Name[ru_RU]=Программы для учителя + diff --git a/pkg.in/groups/education/08_server-apps-edu.directory b/pkg.in/groups/education/08_server-apps-edu.directory new file mode 100644 index 0000000..f470a2a --- /dev/null +++ b/pkg.in/groups/education/08_server-apps-edu.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Server applications +X-Alterator-PackageList=education/server-apps-edu +X-Alterator-Required=no +Name[ru_RU]=Серверные приложения diff --git a/pkg.in/groups/education/09_video-conferencing.directory b/pkg.in/groups/education/09_video-conferencing.directory new file mode 100644 index 0000000..3674252 --- /dev/null +++ b/pkg.in/groups/education/09_video-conferencing.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Video conference server (Jitsi Meet) +X-Alterator-PackageList=education/video-conferencing +Name[ru_RU]=Сервер видеоконференций (Jitsi Meet) + diff --git a/pkg.in/groups/engineering/05-apps.directory b/pkg.in/groups/engineering/05-apps.directory new file mode 100644 index 0000000..fbfcb8f --- /dev/null +++ b/pkg.in/groups/engineering/05-apps.directory @@ -0,0 +1,6 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Engineering applications +X-Alterator-Required=no +Name[ru_RU]=Инженерные приложения diff --git a/pkg.in/groups/engineering/2d-cad.directory b/pkg.in/groups/engineering/2d-cad.directory new file mode 100644 index 0000000..c117562 --- /dev/null +++ b/pkg.in/groups/engineering/2d-cad.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/2d-cad +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=2D-CAD +Name[ru_RU]=2D-CAD +Comment=2D design. +Comment[ru_RU]=2D проектирование. diff --git a/pkg.in/groups/engineering/3d-cad.directory b/pkg.in/groups/engineering/3d-cad.directory new file mode 100644 index 0000000..db57ff7 --- /dev/null +++ b/pkg.in/groups/engineering/3d-cad.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/3d-cad +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=3D-CAD +Name[ru_RU]=3D-CAD +Comment=3D design. +Comment[ru_RU]=3D проектирование. diff --git a/pkg.in/groups/engineering/3d-printer.directory b/pkg.in/groups/engineering/3d-printer.directory new file mode 100644 index 0000000..a2c9df6 --- /dev/null +++ b/pkg.in/groups/engineering/3d-printer.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/3d-printer +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=3D-Printer +Name[ru_RU]=3D-Printer +Comment=3D printing. +Comment[ru_RU]=3D печать. diff --git a/pkg.in/groups/engineering/apcs.directory b/pkg.in/groups/engineering/apcs.directory new file mode 100644 index 0000000..6632bea --- /dev/null +++ b/pkg.in/groups/engineering/apcs.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/apcs +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=APCS +Name[ru_RU]=АСУ ТП +Comment=Advanced Process Control. +Comment[ru_RU]=Автоматизированные системы управления технологическим процессом. diff --git a/pkg.in/groups/engineering/cam.directory b/pkg.in/groups/engineering/cam.directory new file mode 100644 index 0000000..e3ef38b --- /dev/null +++ b/pkg.in/groups/engineering/cam.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/cam +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=CAM +Name[ru_RU]=CAM +Comment=Computer-aided manufacturing software and gcode generators. +Comment[ru_RU]=Cистемы автоматизации технологической подготовки производства и генераторы gcode. diff --git a/pkg.in/groups/engineering/cnc.directory b/pkg.in/groups/engineering/cnc.directory new file mode 100644 index 0000000..23328f1 --- /dev/null +++ b/pkg.in/groups/engineering/cnc.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/cnc +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=CNC +Name[ru_RU]=ЧПУ +Comment=Computer numerical control. +Comment[ru_RU]=Числовое программное управление. diff --git a/pkg.in/groups/engineering/eda.directory b/pkg.in/groups/engineering/eda.directory new file mode 100644 index 0000000..2d98434 --- /dev/null +++ b/pkg.in/groups/engineering/eda.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/eda +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=EDA +Name[ru_RU]=EDA +Comment=Electronic Design Automation software. +Comment[ru_RU]=Программного обеспечения для автоматизации проектирования электронных устройств. diff --git a/pkg.in/groups/engineering/misc.directory b/pkg.in/groups/engineering/misc.directory new file mode 100644 index 0000000..c72ed61 --- /dev/null +++ b/pkg.in/groups/engineering/misc.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=engineering/misc +X-Alterator-Required=no +Categories=Engineering +X-Alterator-Parent=engineering/05-apps +Name=Miscellanous engineering applications +Name[ru_RU]=Другие инженерные приложения +Comment=Engineering applications not in any category. +Comment[ru_RU]=Инженерные приложения, невошедшие ни в одну категорию. diff --git a/pkg.in/groups/kworkstation/additional-oem.directory b/pkg.in/groups/kworkstation/additional-oem.directory new file mode 100644 index 0000000..e5963ef --- /dev/null +++ b/pkg.in/groups/kworkstation/additional-oem.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=kworkstation/additional-oem +X-Alterator-Required=no +X-Alterator-Parent=kworkstation/z02-add-additional +Categories=KDE;GNOME;XFCE + +Name=OEM-install +Name[ru_RU]=ОЕМ-установка +Comment=System setup at first boot. +Comment[ru_RU]=Первоначальная настройка системы при первой загрузке. diff --git a/pkg.in/groups/kworkstation/clients-ad.directory b/pkg.in/groups/kworkstation/clients-ad.directory new file mode 100644 index 0000000..d8114e6 --- /dev/null +++ b/pkg.in/groups/kworkstation/clients-ad.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=kworkstation/clients-ad +X-Alterator-Required=no +X-Alterator-Parent=kworkstation/z01-add-clients +Categories=KDE;GNOME;XFCE + +Name=Active Directory +Name[ru_RU]=Активный каталог +Comment=Active Directory client. +Comment[ru_RU]=Клиент службы каталогов Active Directory. diff --git a/pkg.in/groups/kworkstation/clients-backup.directory b/pkg.in/groups/kworkstation/clients-backup.directory new file mode 100644 index 0000000..d3476a1 --- /dev/null +++ b/pkg.in/groups/kworkstation/clients-backup.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=kworkstation/clients-backup +X-Alterator-Required=no +X-Alterator-Parent=kworkstation/z01-add-clients +Categories=KDE;GNOME;XFCE + +Name=Backup +Name[ru_RU]=Резервное копирование +Comment=Data backup services clients. +Comment[ru_RU]=Клиенты резервного копирования данных. diff --git a/pkg.in/groups/kworkstation/clients-cloud.directory b/pkg.in/groups/kworkstation/clients-cloud.directory new file mode 100644 index 0000000..9107dd9 --- /dev/null +++ b/pkg.in/groups/kworkstation/clients-cloud.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=kworkstation/clients-cloud +X-Alterator-Required=no +X-Alterator-Parent=kworkstation/z01-add-clients +Categories=KDE;GNOME;XFCE + +Name=Clouds +Name[ru_RU]=Облака +Comment=Cloud data services clients. +Comment[ru_RU]=Клиенты облачных сервисов хранения данных. diff --git a/pkg.in/groups/kworkstation/clients-ipa.directory b/pkg.in/groups/kworkstation/clients-ipa.directory new file mode 100644 index 0000000..8e12758 --- /dev/null +++ b/pkg.in/groups/kworkstation/clients-ipa.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=kworkstation/clients-ipa +X-Alterator-Required=no +X-Alterator-Parent=kworkstation/z01-add-clients +Categories=KDE;GNOME;XFCE + +Name=ALT domain (IPA) +Name[ru_RU]=Домен Альт (IPA) +Comment=FreeIPA client for ALT domain. +Comment[ru_RU]=FreeIPA-клиент домена Альт. diff --git a/pkg.in/groups/kworkstation/clients-monitor.directory b/pkg.in/groups/kworkstation/clients-monitor.directory new file mode 100644 index 0000000..0520a8b --- /dev/null +++ b/pkg.in/groups/kworkstation/clients-monitor.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Directory +X-Alterator-PackageList=kworkstation/clients-monitor +X-Alterator-Required=no +X-Alterator-Parent=kworkstation/z01-add-clients +Categories=KDE;GNOME;XFCE + +Name=Мonitoring +Name[ru_RU]=Наблюдение +Comment=Monitoring systems clients. +Comment[ru_RU]=Клиенты систем мониторинга. diff --git a/pkg.in/groups/kworkstation/edu.directory b/pkg.in/groups/kworkstation/edu.directory new file mode 100644 index 0000000..ee75420 --- /dev/null +++ b/pkg.in/groups/kworkstation/edu.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Edutainment +Comment=Edutainment applications. +X-Alterator-PackageList=kworkstation/edu +X-Alterator-Required=no +Categories=KDE; + +Name[ru_RU]=Образование +Comment[ru_RU]=Образовательные приложения. diff --git a/pkg.in/groups/kworkstation/emulators.directory b/pkg.in/groups/kworkstation/emulators.directory new file mode 100644 index 0000000..8e3f146 --- /dev/null +++ b/pkg.in/groups/kworkstation/emulators.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Directory +Name=Emulators +Comment=Support the use of applications designed for other operating systems and computer architectures. For example, 32-bit programs in a 64-bit environment. +X-Alterator-PackageList=kworkstation/emulators +X-Alterator-Required=yes +X-Alterator-Conflicts=wine-local +Categories=KDE;GNOME; + +Name[ru_RU]=Эмуляторы +Comment[ru_RU]=Поддержка использования приложений, предназначенных для других операционных систем и компьютерных архитектур. Например, 32-битные программы в 64-битной среде. diff --git a/pkg.in/groups/kworkstation/games.directory b/pkg.in/groups/kworkstation/games.directory new file mode 100644 index 0000000..17a1ca6 --- /dev/null +++ b/pkg.in/groups/kworkstation/games.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Games +Comment=Games сollection. +X-Alterator-PackageList=kworkstation/games +X-Alterator-Required=no +Categories=KDE;GNOME; + +Name[ru_RU]=Игры +Comment[ru_RU]=Сборник игр. diff --git a/pkg.in/groups/kworkstation/graphics-editing.directory b/pkg.in/groups/kworkstation/graphics-editing.directory new file mode 100644 index 0000000..a723fe4 --- /dev/null +++ b/pkg.in/groups/kworkstation/graphics-editing.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Graphics editing +Comment=Graphics editing applications. +X-Alterator-PackageList=kworkstation/graphics-editing +X-Alterator-Required=yes +Categories=KDE;GNOME + +Name[ru_RU]=Обработка графики +Comment[ru_RU]=Приложения для обработки графических изображений. diff --git a/pkg.in/groups/kworkstation/kde5.directory b/pkg.in/groups/kworkstation/kde5.directory new file mode 100644 index 0000000..818346e --- /dev/null +++ b/pkg.in/groups/kworkstation/kde5.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=K Desktop Environment (recommended) +Comment=Main KDE components, without which it may be difficult to work with the system. +X-Alterator-PackageList=kworkstation/kde5 +X-Alterator-Required=yes +Categories=KDE; + +Name[ru_RU]=Графическое окружение KDE (рекомендуется) +Comment[ru_RU]=Основные компоненты графического окружения KDE, без которых может быть затруднена работа с системой. diff --git a/pkg.in/groups/kworkstation/printing.directory b/pkg.in/groups/kworkstation/printing.directory new file mode 100644 index 0000000..7819f5e --- /dev/null +++ b/pkg.in/groups/kworkstation/printing.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Printing +Comment=Applications and drivers for printing devices support. +X-Alterator-PackageList=kworkstation/printing +X-Alterator-Required=yes +Categories=KDE; + +Name[ru_RU]=Поддержка принтеров +Comment[ru_RU]=Приложения и драйвера для поддержки работы с устройствами печати. diff --git a/pkg.in/groups/kworkstation/publishing.directory b/pkg.in/groups/kworkstation/publishing.directory new file mode 100644 index 0000000..1c52eab --- /dev/null +++ b/pkg.in/groups/kworkstation/publishing.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Publishing +Comment=Desktop publishing applications. +X-Alterator-PackageList=kworkstation/publishing +X-Alterator-Required=no +Categories=KDE;GNOME; + +Name[ru_RU]=Издательская система +Comment[ru_RU]=Приложения для визуальной вёрстки документов. diff --git a/pkg.in/groups/kworkstation/remote-desktop.directory b/pkg.in/groups/kworkstation/remote-desktop.directory new file mode 100644 index 0000000..8ec8fed --- /dev/null +++ b/pkg.in/groups/kworkstation/remote-desktop.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Remote Desktop +Comment=Remote desktop support applications. +X-Alterator-PackageList=kworkstation/remote-desktop +X-Alterator-Required=no +Categories=KDE; + +Name[ru_RU]=Сетевой рабочий стол +Comment[ru_RU]=Приложения для поддержки работы с сетевым рабочим столом. diff --git a/pkg.in/groups/kworkstation/scanning.directory b/pkg.in/groups/kworkstation/scanning.directory new file mode 100644 index 0000000..2b455c3 --- /dev/null +++ b/pkg.in/groups/kworkstation/scanning.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Scanning +Comment=Applications and drivers for images scanning devices support. +X-Alterator-PackageList=kworkstation/scanning +X-Alterator-Required=yes +Categories=KDE;GNOME;XFCE; + +Name[ru_RU]=Поддержка сканеров +Comment[ru_RU]=Приложения и драйвера для поддержки работы с устройствами сканирования изображений diff --git a/pkg.in/groups/kworkstation/sound-editing.directory b/pkg.in/groups/kworkstation/sound-editing.directory new file mode 100644 index 0000000..5426814 --- /dev/null +++ b/pkg.in/groups/kworkstation/sound-editing.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Sound editing +Comment=Sound editing applications. +X-Alterator-PackageList=kworkstation/sound-editing +X-Alterator-Required=yes +Categories=KDE;GNOME;XFCE; + +Name[ru_RU]=Обработка звука +Comment[ru_RU]=Приложения для обработки звуковых материалов. diff --git a/pkg.in/groups/kworkstation/video-editing.directory b/pkg.in/groups/kworkstation/video-editing.directory new file mode 100644 index 0000000..705f3be --- /dev/null +++ b/pkg.in/groups/kworkstation/video-editing.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +Name=Video editing +Comment=Video editing applications. +X-Alterator-PackageList=kworkstation/video-editing +X-Alterator-Required=yes +Categories=KDE; + +Name[ru_RU]=Обработка видео +Comment[ru_RU]=Приложения для обработки видеоматериалов. diff --git a/pkg.in/groups/kworkstation/z01-add-clients.directory b/pkg.in/groups/kworkstation/z01-add-clients.directory new file mode 100644 index 0000000..8b81959 --- /dev/null +++ b/pkg.in/groups/kworkstation/z01-add-clients.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-Required=no +X-Alterator-PackageList=kworkstation/clients-base +Categories=KDE; + +Name=Service clients +Name[ru_RU]=Клиенты сервисов +Comment=Additional services clients. +Comment[ru_RU]=Дополнительные клиенты различных сервисов. diff --git a/pkg.in/groups/kworkstation/z02-add-additional.directory b/pkg.in/groups/kworkstation/z02-add-additional.directory new file mode 100644 index 0000000..b478379 --- /dev/null +++ b/pkg.in/groups/kworkstation/z02-add-additional.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Directory +X-Alterator-Required=no +X-Alterator-PackageList=kworkstation/additional-base +Categories=KDE; + +Name=Additional +Name[ru_RU]=Дополнительно +Comment=Additional options. +Comment[ru_RU]=Дополнительные опции. diff --git a/pkg.in/groups/server-v/110-opennebula.directory b/pkg.in/groups/server-v/110-opennebula.directory new file mode 100644 index 0000000..b244926 --- /dev/null +++ b/pkg.in/groups/server-v/110-opennebula.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OpenNebula +Name[ru_RU]=OpenNebula +X-Alterator-Required=no +X-Alterator-Conflicts=server-virt/120-openstack server-v/130-pve +Comment=OpenNebula solution to build Private Clouds and manage Data Center virtualization +Comment[ru_RU]=Opennebula это решение для построения частного облака и управления виртуальным центром обработки данных diff --git a/pkg.in/groups/server-v/120-openstack.directory b/pkg.in/groups/server-v/120-openstack.directory new file mode 100644 index 0000000..6dd4564 --- /dev/null +++ b/pkg.in/groups/server-v/120-openstack.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OpenStack +Name[ru_RU]=OpenStack +X-Alterator-Required=no +X-Alterator-Conflicts=server-virt/110-opennebula server-v/130-pve +Comment=OpenStack is a cloud operating system +Comment[ru_RU]=Комплекс проектов для создания инфраструктурных облачных сервисов diff --git a/pkg.in/groups/server-v/130-pve.directory b/pkg.in/groups/server-v/130-pve.directory new file mode 100644 index 0000000..9286395 --- /dev/null +++ b/pkg.in/groups/server-v/130-pve.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=PVE +Name[ru_RU]=PVE +X-Alterator-Required=no +X-Alterator-Conflicts=server-virt/110-opennebula server-virt/120-openstack server-v/140-basic +Comment=Proxmox Virtual Environment +Comment[ru_RU]=Виртуальное Окружение Proxmox diff --git a/pkg.in/groups/server-v/140-basic.directory b/pkg.in/groups/server-v/140-basic.directory new file mode 100644 index 0000000..0090ca0 --- /dev/null +++ b/pkg.in/groups/server-v/140-basic.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Basic Virtualization +Name[ru_RU]=Базовая виртуализация +X-Alterator-Required=no +Comment=Basic Virtualization Utils (qemu+libvirt) +Comment[ru_RU]=Минимальный набор приложений(qemu+libvirt) для виртуализации diff --git a/pkg.in/groups/server-v/141-cockpit.directory b/pkg.in/groups/server-v/141-cockpit.directory new file mode 100644 index 0000000..dd0f095 --- /dev/null +++ b/pkg.in/groups/server-v/141-cockpit.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Cockpit Server admin interface +Name[ru_RU]=Cockpit интерфейс управления сервером +Comment=Cockpit is an interactive server admin interface +Comment[ru_RU]=Cockpit это интерактивный интерфейс управления сервером +X-Alterator-Required=no +X-Alterator-Parent=server-v/140-basic diff --git a/pkg.in/groups/server-v/200-container.directory b/pkg.in/groups/server-v/200-container.directory new file mode 100644 index 0000000..fad2e17 --- /dev/null +++ b/pkg.in/groups/server-v/200-container.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Containers +Name[ru_RU]=Контейнеры +X-Alterator-Required=no +Comment=Container Virtualization +Comment[ru_RU]=Приложения для управления контейнерной виртуализацией diff --git a/pkg.in/groups/server-v/300-cluster.directory b/pkg.in/groups/server-v/300-cluster.directory new file mode 100644 index 0000000..ac481cd --- /dev/null +++ b/pkg.in/groups/server-v/300-cluster.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=HA Cluster +Name[ru_RU]=Кластер высокой доступности +X-Alterator-Required=no +Comment=High Availability Cluster +Comment[ru_RU]=Приложения для организации кластера высокой доступности diff --git a/pkg.in/groups/server-v/400-storage.directory b/pkg.in/groups/server-v/400-storage.directory new file mode 100644 index 0000000..398ee7a --- /dev/null +++ b/pkg.in/groups/server-v/400-storage.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Storage +Name[ru_RU]=Хранение данных +X-Alterator-Required=no +Comment=Storage +Comment[ru_RU]=Дополнительные приложения для хранение данных diff --git a/pkg.in/groups/server-v/410-ceph.directory b/pkg.in/groups/server-v/410-ceph.directory new file mode 100644 index 0000000..6a57612 --- /dev/null +++ b/pkg.in/groups/server-v/410-ceph.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Ceph +Name[ru_RU]=Ceph +X-Alterator-Required=no +Comment=Ceph uniquely delivers object, block, and file storage in one unified system +Comment[ru_RU]=Ceph уникальным образом обеспечивает хранение объектов, блоков и файлов в единой системе +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/420-glusterfs.directory b/pkg.in/groups/server-v/420-glusterfs.directory new file mode 100644 index 0000000..1526daf --- /dev/null +++ b/pkg.in/groups/server-v/420-glusterfs.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=GlusterFS +Name[ru_RU]=GlusterFS +X-Alterator-Required=no +Comment=GlusterFS is a scalable network filesystem +Comment[ru_RU]=GlusterFS это масштабируемая сетевая файловая система +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/430-lizardfs.directory b/pkg.in/groups/server-v/430-lizardfs.directory new file mode 100644 index 0000000..479d658 --- /dev/null +++ b/pkg.in/groups/server-v/430-lizardfs.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=LizardFS +Name[ru_RU]=LizardFS +X-Alterator-Required=no +Comment=Network Distributed File System +Comment[ru_RU]=Oтказоустойчивая, распределенная сетевая файловая система +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/430-moosefs.directory b/pkg.in/groups/server-v/430-moosefs.directory new file mode 100644 index 0000000..38386be --- /dev/null +++ b/pkg.in/groups/server-v/430-moosefs.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=MooseFS +Name[ru_RU]=MooseFS +X-Alterator-Required=no +Comment=Network Distributed File System +Comment[ru_RU]=Oтказоустойчивая, распределенная сетевая файловая система +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/450-nfs.directory b/pkg.in/groups/server-v/450-nfs.directory new file mode 100644 index 0000000..d800ee9 --- /dev/null +++ b/pkg.in/groups/server-v/450-nfs.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=NFS +Name[ru_RU]=NFS +X-Alterator-Required=no +Comment=Network File System +Comment[ru_RU]=Сетевая файловая система +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/460-iscsi.directory b/pkg.in/groups/server-v/460-iscsi.directory new file mode 100644 index 0000000..b4c62f4 --- /dev/null +++ b/pkg.in/groups/server-v/460-iscsi.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=iSCSI +Name[ru_RU]=iSCSI +X-Alterator-Required=no +Comment=iSCSI +Comment[ru_RU]=iSCSI +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/470-linstor.directory b/pkg.in/groups/server-v/470-linstor.directory new file mode 100644 index 0000000..e27df71 --- /dev/null +++ b/pkg.in/groups/server-v/470-linstor.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Linstor +Name[ru_RU]=Linstor +X-Alterator-Required=no +Comment=LINSTOR is a software that manages replicated volumes across a group of machines +Comment[ru_RU]=Управление репликацией томов на группе серверов +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/500-network.directory b/pkg.in/groups/server-v/500-network.directory new file mode 100644 index 0000000..21b9b2e --- /dev/null +++ b/pkg.in/groups/server-v/500-network.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Network +Name[ru_RU]=Сеть +X-Alterator-Required=no +Comment=Network +Comment[ru_RU]=Дополнительные приложения для сети diff --git a/pkg.in/groups/server-v/600-monitoring.directory b/pkg.in/groups/server-v/600-monitoring.directory new file mode 100644 index 0000000..819026c --- /dev/null +++ b/pkg.in/groups/server-v/600-monitoring.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Monitoring +Name[ru_RU]=Мониторинг +X-Alterator-Required=no +Comment=Monitoring +Comment[ru_RU]=Мониторинг diff --git a/pkg.in/groups/server-v/700-backup.directory b/pkg.in/groups/server-v/700-backup.directory new file mode 100644 index 0000000..796e5c3 --- /dev/null +++ b/pkg.in/groups/server-v/700-backup.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Backup +Name[ru_RU]=Архивирование +X-Alterator-Required=no +Comment=Backup +Comment[ru_RU]=Системы архивирования и восстановления данных diff --git a/pkg.in/groups/server-v/800-logging.directory b/pkg.in/groups/server-v/800-logging.directory new file mode 100644 index 0000000..a31c70b --- /dev/null +++ b/pkg.in/groups/server-v/800-logging.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Logging +Name[ru_RU]=Журналирование +X-Alterator-Required=no +Comment=Logging +Comment[ru_RU]=Системы журналирования diff --git a/pkg.in/groups/server-v/apache2.directory b/pkg.in/groups/server-v/apache2.directory new file mode 100644 index 0000000..e5ce450 --- /dev/null +++ b/pkg.in/groups/server-v/apache2.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Apache Web Server +Name[ru_RU]=Web-сервер Apache 2 +X-Alterator-PackageList=network/apache2 +X-Alterator-Required=no +X-Alterator-Conflicts=network/nginx +X-Alterator-Parent=server-v/500-network diff --git a/pkg.in/groups/server-v/bacula.directory b/pkg.in/groups/server-v/bacula.directory new file mode 100644 index 0000000..029ba69 --- /dev/null +++ b/pkg.in/groups/server-v/bacula.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Bacula File service(also known as the Client program) +Name[ru_RU]=Клиент архивирования Bacula +X-Alterator-PackageList=storage/bacula +X-Alterator-Required=no +X-Alterator-Parent=server-v/700-backup diff --git a/pkg.in/groups/server-v/bird.directory b/pkg.in/groups/server-v/bird.directory new file mode 100644 index 0000000..d196135 --- /dev/null +++ b/pkg.in/groups/server-v/bird.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Bird dynamic IP routing daemon +Name[ru_RU]=Маршрутизатор Bird +Comment=BIRD is an Internet Routing Daemon. Support all the routing technology used in the today's Internet or planned to be used in near future. +Comment[ru_RU]=Bird это програмный комплекс поддерживающий все современные протоколы динамической маршрутизации. +X-Alterator-PackageList=network/bird +X-Alterator-Required=no +X-Alterator-Parent=server-v/500-network diff --git a/pkg.in/groups/server-v/borg.directory b/pkg.in/groups/server-v/borg.directory new file mode 100644 index 0000000..27b0fce --- /dev/null +++ b/pkg.in/groups/server-v/borg.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Borg deduplicating backup +Name[ru_RU]=Архивирование Borg +X-Alterator-PackageList=storage/borg +X-Alterator-Required=no +X-Alterator-Parent=server-v/700-backup diff --git a/pkg.in/groups/server-v/burp.directory b/pkg.in/groups/server-v/burp.directory new file mode 100644 index 0000000..65789ce --- /dev/null +++ b/pkg.in/groups/server-v/burp.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Burp backup and restore program +Name[ru_RU]=Архивирование Burp +X-Alterator-PackageList=storage/burp +X-Alterator-Required=no +X-Alterator-Parent=server-v/700-backup diff --git a/pkg.in/groups/server-v/ceph/client.directory b/pkg.in/groups/server-v/ceph/client.directory new file mode 100644 index 0000000..e5c348c --- /dev/null +++ b/pkg.in/groups/server-v/ceph/client.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Ceph Client +Name[ru_RU]=Клиент ceph +X-Alterator-PackageList=storage/ceph-client +X-Alterator-Required=no +X-Alterator-Parent=server-v/410-ceph diff --git a/pkg.in/groups/server-v/ceph/mgr.directory b/pkg.in/groups/server-v/ceph/mgr.directory new file mode 100644 index 0000000..d83f8cc --- /dev/null +++ b/pkg.in/groups/server-v/ceph/mgr.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=MGR Manager Daemon +Name[ru_RU]=Управление кластером ceph MGR +X-Alterator-PackageList=storage/ceph-mgr +X-Alterator-Required=no +X-Alterator-Parent=server-v/410-ceph diff --git a/pkg.in/groups/server-v/ceph/mon.directory b/pkg.in/groups/server-v/ceph/mon.directory new file mode 100644 index 0000000..63f1b9d --- /dev/null +++ b/pkg.in/groups/server-v/ceph/mon.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=MON Cluster Monitor Daemon +Name[ru_RU]=Мониторинг кластера ceph MON +X-Alterator-PackageList=storage/ceph-mon +X-Alterator-Required=no +X-Alterator-Parent=server-v/410-ceph diff --git a/pkg.in/groups/server-v/ceph/osd.directory b/pkg.in/groups/server-v/ceph/osd.directory new file mode 100644 index 0000000..666343f --- /dev/null +++ b/pkg.in/groups/server-v/ceph/osd.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OSD Object Storage Daemon +Name[ru_RU]=Хранения объектов ceph OSD +X-Alterator-PackageList=storage/ceph-osd +X-Alterator-Required=no +X-Alterator-Parent=server-v/410-ceph diff --git a/pkg.in/groups/server-v/ceph/radosgw.directory b/pkg.in/groups/server-v/ceph/radosgw.directory new file mode 100644 index 0000000..b949001 --- /dev/null +++ b/pkg.in/groups/server-v/ceph/radosgw.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Rados REST Gateway +Name[ru_RU]=Шлюз Rados REST +X-Alterator-PackageList=storage/ceph-radosgw +X-Alterator-Required=no +X-Alterator-Parent=server-v/410-ceph diff --git a/pkg.in/groups/server-v/cockpit/docker.directory b/pkg.in/groups/server-v/cockpit/docker.directory new file mode 100644 index 0000000..c66bc28 --- /dev/null +++ b/pkg.in/groups/server-v/cockpit/docker.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Interface for Docker containers +Name[ru_RU]=Управление контейнерами docker +X-Alterator-PackageList=virt/cockpit/docker +X-Alterator-Required=no +X-Alterator-Depends=server-v/docker +X-Alterator-Parent=server-v/141-cockpit + diff --git a/pkg.in/groups/server-v/cockpit/kvm.directory b/pkg.in/groups/server-v/cockpit/kvm.directory new file mode 100644 index 0000000..c8a40db --- /dev/null +++ b/pkg.in/groups/server-v/cockpit/kvm.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Interface for Virtual machines +Name[ru_RU]=Управление виртуальными машинами KVM +X-Alterator-PackageList=virt/cockpit/machines +X-Alterator-Required=no +X-Alterator-Depends=server-v/kvm +X-Alterator-Parent=server-v/141-cockpit diff --git a/pkg.in/groups/server-v/cockpit/web.directory b/pkg.in/groups/server-v/cockpit/web.directory new file mode 100644 index 0000000..d8af511 --- /dev/null +++ b/pkg.in/groups/server-v/cockpit/web.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Web Service +Name[ru_RU]=Web интерфейс +X-Alterator-PackageList=virt/cockpit/web +X-Alterator-Required=no +X-Alterator-Parent=server-v/141-cockpit diff --git a/pkg.in/groups/server-v/collectd.directory b/pkg.in/groups/server-v/collectd.directory new file mode 100644 index 0000000..affe363 --- /dev/null +++ b/pkg.in/groups/server-v/collectd.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Collectd +Name[ru_RU]=Агент сбора метрик Collectd +X-Alterator-PackageList=monitoring/collectd +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring + diff --git a/pkg.in/groups/server-v/corosync_pacemaker.directory b/pkg.in/groups/server-v/corosync_pacemaker.directory new file mode 100644 index 0000000..6ad1ac9 --- /dev/null +++ b/pkg.in/groups/server-v/corosync_pacemaker.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=HA Cluster (Corosync and Pacemaker) +Name[ru_RU]=Отказоустойчивый кластер (Corosync и Pacemaker) +X-Alterator-PackageList=cluster/corosync_pacemaker +X-Alterator-Required=no +X-Alterator-Parent=server-v/300-cluster diff --git a/pkg.in/groups/server-v/dhcp.directory b/pkg.in/groups/server-v/dhcp.directory new file mode 100644 index 0000000..0d72d99 --- /dev/null +++ b/pkg.in/groups/server-v/dhcp.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DHCP Server +Name[ru_RU]=Сервер DHCP +X-Alterator-PackageList=network/dhcp +X-Alterator-Required=no +X-Alterator-Parent=server-v/500-network diff --git a/pkg.in/groups/server-v/dns.directory b/pkg.in/groups/server-v/dns.directory new file mode 100644 index 0000000..3590356 --- /dev/null +++ b/pkg.in/groups/server-v/dns.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DNS Server +Name[ru_RU]=Сервер DNS +X-Alterator-PackageList=network/dns +X-Alterator-Required=no +X-Alterator-Parent=server-v/500-network + + diff --git a/pkg.in/groups/server-v/docker.directory b/pkg.in/groups/server-v/docker.directory new file mode 100644 index 0000000..e39ec93 --- /dev/null +++ b/pkg.in/groups/server-v/docker.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Docker +Name[ru_RU]=Управление контейнерами Docker +X-Alterator-PackageList=container/docker +X-Alterator-Required=no +X-Alterator-Parent=server-v/200-container diff --git a/pkg.in/groups/server-v/freeipa-client.directory b/pkg.in/groups/server-v/freeipa-client.directory new file mode 100644 index 0000000..157d475 --- /dev/null +++ b/pkg.in/groups/server-v/freeipa-client.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FreeIPA domain client +Name[ru_RU]=Клиент домена FreeIPA +X-Alterator-PackageList=workstation/freeipa-client +X-Alterator-Required=no +X-Alterator-Parent=server-v/500-network diff --git a/pkg.in/groups/server-v/glusterfs/client.directory b/pkg.in/groups/server-v/glusterfs/client.directory new file mode 100644 index 0000000..68b3ff6 --- /dev/null +++ b/pkg.in/groups/server-v/glusterfs/client.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Glusterfs Client +Name[ru_RU]=Клиент glusterfs +X-Alterator-PackageList=storage/glusterfs-client +X-Alterator-Required=no +X-Alterator-Parent=server-v/420-glusterfs diff --git a/pkg.in/groups/server-v/glusterfs/server.directory b/pkg.in/groups/server-v/glusterfs/server.directory new file mode 100644 index 0000000..34a7b09 --- /dev/null +++ b/pkg.in/groups/server-v/glusterfs/server.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Glusterfs Server +Name[ru_RU]=Cервер glusterfs +X-Alterator-PackageList=storage/glusterfs-server +X-Alterator-Required=no +X-Alterator-Parent=server-v/420-glusterfs diff --git a/pkg.in/groups/server-v/grafana.directory b/pkg.in/groups/server-v/grafana.directory new file mode 100644 index 0000000..943cebd --- /dev/null +++ b/pkg.in/groups/server-v/grafana.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Grafana Metrics Dashboard +Name[ru_RU]=Сервер для визуализации Grafana +X-Alterator-PackageList=monitoring/grafana +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring diff --git a/pkg.in/groups/server-v/haproxy.directory b/pkg.in/groups/server-v/haproxy.directory new file mode 100644 index 0000000..bcc5aa2 --- /dev/null +++ b/pkg.in/groups/server-v/haproxy.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=HAProxy TCP/HTTP Load Balancer +Name[ru_RU]=Балансировщик нагрузки HAProxy +X-Alterator-PackageList=network/haproxy +X-Alterator-Required=no +X-Alterator-Parent=server-v/500-network diff --git a/pkg.in/groups/server-v/influxdb.directory b/pkg.in/groups/server-v/influxdb.directory new file mode 100644 index 0000000..684596b --- /dev/null +++ b/pkg.in/groups/server-v/influxdb.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=InfluxDB time series database +Name[ru_RU]=Сервер хранения временных рядов InfluxDB +X-Alterator-PackageList=monitoring/influxdb +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring diff --git a/pkg.in/groups/server-v/iscsi/initiator.directory b/pkg.in/groups/server-v/iscsi/initiator.directory new file mode 100644 index 0000000..7c88215 --- /dev/null +++ b/pkg.in/groups/server-v/iscsi/initiator.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Initiator +Name[ru_RU]=Клиент iSCSI +X-Alterator-PackageList=storage/open-iscsi +X-Alterator-Required=no +X-Alterator-Parent=server-v/460-iscsi diff --git a/pkg.in/groups/server-v/iscsi/scsitarget.directory b/pkg.in/groups/server-v/iscsi/scsitarget.directory new file mode 100644 index 0000000..a3b7c4d --- /dev/null +++ b/pkg.in/groups/server-v/iscsi/scsitarget.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=iSCSI target daemon (User Mode) +Name[ru_RU]=Cервер iSCSI (процесс пользователя) +X-Alterator-PackageList=storage/scsitarget +X-Alterator-Required=no +X-Alterator-Parent=server-v/460-iscsi diff --git a/pkg.in/groups/server-v/iscsi/targetcli.directory b/pkg.in/groups/server-v/iscsi/targetcli.directory new file mode 100644 index 0000000..6b04a40 --- /dev/null +++ b/pkg.in/groups/server-v/iscsi/targetcli.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Targetcli managing LIO kernel target (Kernel Mode) +Name[ru_RU]=Сервер iSCSI (процесс ядра) +X-Alterator-PackageList=storage/targetcli +X-Alterator-Required=no +X-Alterator-Parent=server-v/460-iscsi + diff --git a/pkg.in/groups/server-v/keepalived.directory b/pkg.in/groups/server-v/keepalived.directory new file mode 100644 index 0000000..182aafd --- /dev/null +++ b/pkg.in/groups/server-v/keepalived.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Keepalived distributing IP traffic +Name[ru_RU]=Балансировщик Keepalived +Comment=Keepalived is a routing software written in C. The main goal of this project is to provide simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures. +Comment[ru_RU]=Keepalived это программный комплекс обеспечивающий высокую доступность и балансировку нагрузки. +X-Alterator-PackageList=network/keepalived +X-Alterator-Required=no +X-Alterator-Parent=server-v/500-network diff --git a/pkg.in/groups/server-v/kubernetes-master.directory b/pkg.in/groups/server-v/kubernetes-master.directory new file mode 100644 index 0000000..f549567 --- /dev/null +++ b/pkg.in/groups/server-v/kubernetes-master.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Kubernetes services for master host +Name[ru_RU]=Сервисы Kubernetes для управляющего хоста +X-Alterator-PackageList=container/kubernetes-master +X-Alterator-Required=no +X-Alterator-Depends=server-v/docker +X-Alterator-Parent=server-v/200-container diff --git a/pkg.in/groups/server-v/kubernetes-node.directory b/pkg.in/groups/server-v/kubernetes-node.directory new file mode 100644 index 0000000..4b6d8f1 --- /dev/null +++ b/pkg.in/groups/server-v/kubernetes-node.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Kubernetes services for node host +Name[ru_RU]=Сервисы Kubernetes для вычислительного хоста +X-Alterator-PackageList=container/kubernetes-node +X-Alterator-Required=no +X-Alterator-Depends=server-v/docker +X-Alterator-Parent=server-v/200-container diff --git a/pkg.in/groups/server-v/kvm.directory b/pkg.in/groups/server-v/kvm.directory new file mode 100644 index 0000000..8a70a23 --- /dev/null +++ b/pkg.in/groups/server-v/kvm.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=KVM virtualization server +Name[ru_RU]=Сервер виртуализации (KVM) +X-Alterator-PackageList=virt/kvm +X-Alterator-Required=no +X-Alterator-Parent=server-v/140-basic diff --git a/pkg.in/groups/server-v/linstor/client.directory b/pkg.in/groups/server-v/linstor/client.directory new file mode 100644 index 0000000..b1c7bb4 --- /dev/null +++ b/pkg.in/groups/server-v/linstor/client.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Client +Name[ru_RU]=Клиент +Comment=Client for manage controller +Comment[ru_RU]=Клиент управления сервером +X-Alterator-PackageList=storage/linstor-client +X-Alterator-Required=no +X-Alterator-Parent=server-v/470-linstor diff --git a/pkg.in/groups/server-v/linstor/controller.directory b/pkg.in/groups/server-v/linstor/controller.directory new file mode 100644 index 0000000..f406192 --- /dev/null +++ b/pkg.in/groups/server-v/linstor/controller.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Controller +Name[ru_RU]=Cервер управления кластером +Comment=A LINSTOR controller manages the configuration of the LINSTOR cluster and all of its managed storage resources +Comment[ru_RU]=Сервер управления кофигурацией кластера и его ресурсами +X-Alterator-PackageList=storage/linstor-controller +X-Alterator-Required=no +X-Alterator-Parent=server-v/470-linstor diff --git a/pkg.in/groups/server-v/linstor/opennebula-addon.directory b/pkg.in/groups/server-v/linstor/opennebula-addon.directory new file mode 100644 index 0000000..dcf79b5 --- /dev/null +++ b/pkg.in/groups/server-v/linstor/opennebula-addon.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Linstor Storage Driver +Name[ru_RU]=Модуль хранилища Linstor +Comment=This driver allows for highly available storage using DRBD9 + Linstor in OpenNebula. +Comment[ru_RU]=Добавляет возможность управления сервером хранилища данных Linstor +X-Alterator-PackageList=storage/linstor-opennebula +X-Alterator-Required=no +X-Alterator-Depends=server-v/linstor/client server-v/linstor/satellite +X-Alterator-Parent=server-v/110-opennebula diff --git a/pkg.in/groups/server-v/linstor/pve-storage.directory b/pkg.in/groups/server-v/linstor/pve-storage.directory new file mode 100644 index 0000000..171d608 --- /dev/null +++ b/pkg.in/groups/server-v/linstor/pve-storage.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Linstor Plugin +Name[ru_RU]=Модуль хранилища Linstor +Comment=The Linstor PVE Plugin is a plugin that allows managing storage for VMs from the PVE GUI via LINSTOR. +Comment[ru_RU]=Добавляет возможность управления сервером хранилища данных Linstor +X-Alterator-PackageList=storage/linstor-pve +X-Alterator-Required=no +X-Alterator-Depends=server-v/linstor/client server-v/linstor/satellite +X-Alterator-Parent=server-v/130-pve diff --git a/pkg.in/groups/server-v/linstor/satellite.directory b/pkg.in/groups/server-v/linstor/satellite.directory new file mode 100644 index 0000000..fd599c0 --- /dev/null +++ b/pkg.in/groups/server-v/linstor/satellite.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Satellite +Name[ru_RU]=Cервер управления ресурсами +Comment=The LINSTOR satellite component manages creation, modification and deletion of storage resources on each node that provides or uses storage resources managed by LINSTOR +Comment[ru_RU]=Предоставляет серверу управления кластером информацию о ресурсах и выполняет полученные от него задачи +X-Alterator-PackageList=storage/linstor-satellite +X-Alterator-Required=no +X-Alterator-Parent=server-v/470-linstor diff --git a/pkg.in/groups/server-v/lizardfs/cgiserv.directory b/pkg.in/groups/server-v/lizardfs/cgiserv.directory new file mode 100644 index 0000000..72230e7 --- /dev/null +++ b/pkg.in/groups/server-v/lizardfs/cgiserv.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Web UI Server +Name[ru_RU]=Web интерфейс управления +X-Alterator-PackageList=storage/lizardfs-cgiserv +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-lizardfs diff --git a/pkg.in/groups/server-v/lizardfs/chunkserver.directory b/pkg.in/groups/server-v/lizardfs/chunkserver.directory new file mode 100644 index 0000000..9122ee0 --- /dev/null +++ b/pkg.in/groups/server-v/lizardfs/chunkserver.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Chunk Server +Name[ru_RU]=Cервер хранения данных +Comment=LizardFS Chunkserver for data storage servers +Comment[ru_RU]=LizardFS Cервер хранения данных +X-Alterator-PackageList=storage/lizardfs-chunkserver +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-lizardfs diff --git a/pkg.in/groups/server-v/lizardfs/client.directory b/pkg.in/groups/server-v/lizardfs/client.directory new file mode 100644 index 0000000..a21dcbc --- /dev/null +++ b/pkg.in/groups/server-v/lizardfs/client.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Client +Name[ru_RU]=Клиент +X-Alterator-PackageList=storage/lizardfs-client +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-lizardfs diff --git a/pkg.in/groups/server-v/lizardfs/master.directory b/pkg.in/groups/server-v/lizardfs/master.directory new file mode 100644 index 0000000..48e24f9 --- /dev/null +++ b/pkg.in/groups/server-v/lizardfs/master.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Master Server +Name[ru_RU]=Мастер сервер метаданных +Comment=LizardFS Master Server for metadata servers +Comment[ru_RU]=LizardFS Мастер сервер метаданных +X-Alterator-PackageList=storage/lizardfs-master +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-lizardfs diff --git a/pkg.in/groups/server-v/lizardfs/metalogger.directory b/pkg.in/groups/server-v/lizardfs/metalogger.directory new file mode 100644 index 0000000..6045e90 --- /dev/null +++ b/pkg.in/groups/server-v/lizardfs/metalogger.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Metalogger Server +Name[ru_RU]=Резервный сервер метаданных +Comment=Metalogger Server for synchronizes and backups the metadata +Comment[ru_RU]=Metalogger сервер для синхронизации и резервной копии метаданных +X-Alterator-PackageList=storage/lizardfs-metalogger +X-Alterator-Required=no +X-Alterator-Conflicts=server-v/lizardfs/master +X-Alterator-Parent=server-v/430-lizardfs diff --git a/pkg.in/groups/server-v/lxd.directory b/pkg.in/groups/server-v/lxd.directory new file mode 100644 index 0000000..72716b3 --- /dev/null +++ b/pkg.in/groups/server-v/lxd.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=LXD +Name[ru_RU]=Управление контейнерами LXD +X-Alterator-PackageList=container/lxd +X-Alterator-Required=no +X-Alterator-Parent=server-v/200-container diff --git a/pkg.in/groups/server-v/monit.directory b/pkg.in/groups/server-v/monit.directory new file mode 100644 index 0000000..f942778 --- /dev/null +++ b/pkg.in/groups/server-v/monit.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Monit managing and monitoring +Name[ru_RU]=Система мониторинга Monit +X-Alterator-PackageList=monitoring/monit +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring + diff --git a/pkg.in/groups/server-v/moosefs/cgiserv.directory b/pkg.in/groups/server-v/moosefs/cgiserv.directory new file mode 100644 index 0000000..c91a929 --- /dev/null +++ b/pkg.in/groups/server-v/moosefs/cgiserv.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Web UI Server +Name[ru_RU]=Web интерфейс управления +X-Alterator-PackageList=storage/moosefs-cgiserv +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-moosefs diff --git a/pkg.in/groups/server-v/moosefs/chunkserver.directory b/pkg.in/groups/server-v/moosefs/chunkserver.directory new file mode 100644 index 0000000..b01b2f2 --- /dev/null +++ b/pkg.in/groups/server-v/moosefs/chunkserver.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Chunk Server +Name[ru_RU]=Cервер хранения данных +Comment=MooseFS Chunkserver for data storage servers +Comment[ru_RU]=MooseFS Cервер хранения данных +X-Alterator-PackageList=storage/moosefs-chunkserver +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-moosefs diff --git a/pkg.in/groups/server-v/moosefs/client.directory b/pkg.in/groups/server-v/moosefs/client.directory new file mode 100644 index 0000000..05ce72e --- /dev/null +++ b/pkg.in/groups/server-v/moosefs/client.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Client +Name[ru_RU]=Клиент +X-Alterator-PackageList=storage/moosefs-client +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-moosefs diff --git a/pkg.in/groups/server-v/moosefs/master.directory b/pkg.in/groups/server-v/moosefs/master.directory new file mode 100644 index 0000000..281a24d --- /dev/null +++ b/pkg.in/groups/server-v/moosefs/master.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Master Server +Name[ru_RU]=Мастер сервер метаданных +Comment=MooseFS Master Server for metadata servers +Comment[ru_RU]=MooseFS Мастер сервер метаданных +X-Alterator-PackageList=storage/moosefs-master +X-Alterator-Required=no +X-Alterator-Parent=server-v/430-moosefs diff --git a/pkg.in/groups/server-v/moosefs/metalogger.directory b/pkg.in/groups/server-v/moosefs/metalogger.directory new file mode 100644 index 0000000..970bbba --- /dev/null +++ b/pkg.in/groups/server-v/moosefs/metalogger.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Metalogger Server +Name[ru_RU]=Резервный сервер метаданных +Comment=Metalogger Server for synchronizes and backups the metadata +Comment[ru_RU]=Metalogger сервер для синхронизации и резервной копии метаданных +X-Alterator-PackageList=storage/moosefs-metalogger +X-Alterator-Required=no +X-Alterator-Conflicts=server-v/moosefs/master +X-Alterator-Parent=server-v/430-moosefs diff --git a/pkg.in/groups/server-v/nagios-nrpe.directory b/pkg.in/groups/server-v/nagios-nrpe.directory new file mode 100644 index 0000000..d8ff091 --- /dev/null +++ b/pkg.in/groups/server-v/nagios-nrpe.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Agent Nagios NRPE +Name[ru_RU]=Агент мониторинга Nagios NRPE +Comment=NRPE Nagios Remote Plugin Executor +Comment[ru_RU]=NRPE Удаленный запуск команд для Nagios +X-Alterator-PackageList=monitoring/nagios-nrpe +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring diff --git a/pkg.in/groups/server-v/nfs-ganesha.directory b/pkg.in/groups/server-v/nfs-ganesha.directory new file mode 100644 index 0000000..4ada916 --- /dev/null +++ b/pkg.in/groups/server-v/nfs-ganesha.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=NFS-Ganesha Server (User Mode) +Name[ru_RU]=Сервер NFS-Ganesha (процесс пользователя) +X-Alterator-PackageList=storage/nfs-ganesha-server +X-Alterator-Required=no +X-Alterator-Parent=server-v/450-nfs diff --git a/pkg.in/groups/server-v/nfs.directory b/pkg.in/groups/server-v/nfs.directory new file mode 100644 index 0000000..37f697f --- /dev/null +++ b/pkg.in/groups/server-v/nfs.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=NFS Server (Kernel Mode) +Name[ru_RU]=Сервер NFS (процесс ядра) +X-Alterator-PackageList=storage/nfs-server +X-Alterator-Required=no +X-Alterator-Parent=server-v/450-nfs diff --git a/pkg.in/groups/server-v/nginx.directory b/pkg.in/groups/server-v/nginx.directory new file mode 100644 index 0000000..3dd7ad9 --- /dev/null +++ b/pkg.in/groups/server-v/nginx.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=NGINX Web Server +Name[ru_RU]=Web-сервер NGINX +X-Alterator-PackageList=network/nginx +X-Alterator-Required=no +X-Alterator-Conflicts=network/apache2 +X-Alterator-Parent=server-v/500-network + diff --git a/pkg.in/groups/server-v/ocfs2.directory b/pkg.in/groups/server-v/ocfs2.directory new file mode 100644 index 0000000..d9d589e --- /dev/null +++ b/pkg.in/groups/server-v/ocfs2.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OCFS2(Oracle Cluster FS) management utilities +Name[ru_RU]=Утилиты управления OCFS2 (Oracle Cluster FS) +X-Alterator-PackageList=storage/ocfs2 +X-Alterator-Required=no +X-Alterator-Parent=server-v/400-storage diff --git a/pkg.in/groups/server-v/opennebula/flow.directory b/pkg.in/groups/server-v/opennebula/flow.directory new file mode 100644 index 0000000..12855e5 --- /dev/null +++ b/pkg.in/groups/server-v/opennebula/flow.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OneFlow manages services and elasticity +Name[ru_RU]=Управление сервисами OneFlow +X-Alterator-PackageList=virt/opennebula/flow +X-Alterator-Required=no +X-Alterator-Parent=server-v/110-opennebula diff --git a/pkg.in/groups/server-v/opennebula/gate.directory b/pkg.in/groups/server-v/opennebula/gate.directory new file mode 100644 index 0000000..b3860b3 --- /dev/null +++ b/pkg.in/groups/server-v/opennebula/gate.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Communication between VMs and OpenNebula +Name[ru_RU]=Сервер сообщений между VM и OpenNebula +X-Alterator-PackageList=virt/opennebula/gate +X-Alterator-Required=no +X-Alterator-Parent=server-v/110-opennebula diff --git a/pkg.in/groups/server-v/opennebula/gui.directory b/pkg.in/groups/server-v/opennebula/gui.directory new file mode 100644 index 0000000..c980a39 --- /dev/null +++ b/pkg.in/groups/server-v/opennebula/gui.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Web GUI and the EC2 API +Name[ru_RU]=Web-интерфейс управления и EC2 API +X-Alterator-PackageList=virt/opennebula/gui +X-Alterator-Required=no +X-Alterator-Parent=server-v/110-opennebula diff --git a/pkg.in/groups/server-v/opennebula/node-kvm.directory b/pkg.in/groups/server-v/opennebula/node-kvm.directory new file mode 100644 index 0000000..9b34386 --- /dev/null +++ b/pkg.in/groups/server-v/opennebula/node-kvm.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Computing KVM Node +Name[ru_RU]=Сервер виртуализации KVM +X-Alterator-PackageList=virt/opennebula/node-kvm +X-Alterator-Required=no +X-Alterator-Conflicts=server-v/opennebula/server server-virt/opennebula/gui server-virt/opennebula/gate server-virt/opennebula/flow +X-Alterator-Depends=server-v/kvm +X-Alterator-Parent=server-v/110-opennebula diff --git a/pkg.in/groups/server-v/opennebula/node-lxd.directory b/pkg.in/groups/server-v/opennebula/node-lxd.directory new file mode 100644 index 0000000..dd36e0b --- /dev/null +++ b/pkg.in/groups/server-v/opennebula/node-lxd.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Computing LXD Node +Name[ru_RU]=Сервер контейнеризации LXD +X-Alterator-PackageList=virt/opennebula/node-lxd +X-Alterator-Required=no +X-Alterator-Conflicts=server-v/opennebula/server server-virt/opennebula/gui server-virt/opennebula/gate server-virt/opennebula/flow +X-Alterator-Parent=server-v/110-opennebula diff --git a/pkg.in/groups/server-v/opennebula/server.directory b/pkg.in/groups/server-v/opennebula/server.directory new file mode 100644 index 0000000..3049780 --- /dev/null +++ b/pkg.in/groups/server-v/opennebula/server.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Main OpenNebula daemon and scheduler +Name[ru_RU]=Управляющий сервер Opennebula +X-Alterator-PackageList=virt/opennebula/server +X-Alterator-Required=no +X-Alterator-Parent=server-v/110-opennebula diff --git a/pkg.in/groups/server-v/openstack/block.directory b/pkg.in/groups/server-v/openstack/block.directory new file mode 100644 index 0000000..c5281c1 --- /dev/null +++ b/pkg.in/groups/server-v/openstack/block.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Block Storage Node +Name[ru_RU]=Сервер управления блочными устройствами +X-Alterator-PackageList=virt/openstack/block +X-Alterator-Required=no +X-Alterator-Parent=server-v/120-openstack diff --git a/pkg.in/groups/server-v/openstack/compute.directory b/pkg.in/groups/server-v/openstack/compute.directory new file mode 100644 index 0000000..534de1e --- /dev/null +++ b/pkg.in/groups/server-v/openstack/compute.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Computing Node +Name[ru_RU]=Сервер виртуализации KVM +X-Alterator-PackageList=virt/openstack/compute +X-Alterator-Required=no +X-Alterator-Conflicts=server-v/openstack-block server-virt/openstack-controller server-virt/openstack-network server-virt/openstack-storage +X-Alterator-Depends=server-v/kvm +X-Alterator-Parent=server-v/120-openstack diff --git a/pkg.in/groups/server-v/openstack/controller.directory b/pkg.in/groups/server-v/openstack/controller.directory new file mode 100644 index 0000000..6ac17e9 --- /dev/null +++ b/pkg.in/groups/server-v/openstack/controller.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Controller Node +Name[ru_RU]=Сервер управления +X-Alterator-PackageList=virt/openstack/controller +X-Alterator-Required=no +X-Alterator-Parent=server-v/120-openstack diff --git a/pkg.in/groups/server-v/openstack/network.directory b/pkg.in/groups/server-v/openstack/network.directory new file mode 100644 index 0000000..dc5ebf4 --- /dev/null +++ b/pkg.in/groups/server-v/openstack/network.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Network Node +Name[ru_RU]=Сервер управления сетью +X-Alterator-PackageList=virt/openstack/network +X-Alterator-Required=no +X-Alterator-Parent=server-v/120-openstack diff --git a/pkg.in/groups/server-v/openstack/storage.directory b/pkg.in/groups/server-v/openstack/storage.directory new file mode 100644 index 0000000..24ecf5b --- /dev/null +++ b/pkg.in/groups/server-v/openstack/storage.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Storage Node +Name[ru_RU]=Сервер управления хранением объектов +X-Alterator-PackageList=virt/openstack/storage +X-Alterator-Required=no +X-Alterator-Parent=server-v/120-openstack diff --git a/pkg.in/groups/server-v/openvswitch.directory b/pkg.in/groups/server-v/openvswitch.directory new file mode 100644 index 0000000..dad751d --- /dev/null +++ b/pkg.in/groups/server-v/openvswitch.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OpenvSwitch virtual switch +Name[ru_RU]=Виртуальный коммутатор OpenvSwitch +X-Alterator-PackageList=network/openvswitch +X-Alterator-Required=no +X-Alterator-Parent=server-v/500-network diff --git a/pkg.in/groups/server-v/openvz.directory b/pkg.in/groups/server-v/openvz.directory new file mode 100644 index 0000000..0c8498f --- /dev/null +++ b/pkg.in/groups/server-v/openvz.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=OpenVZ +Name[ru_RU]=Управление контейнерами OpenVZ +X-Alterator-PackageList=container/openvz +X-Alterator-Required=no +X-Alterator-Parent=server-v/200-container diff --git a/pkg.in/groups/server-v/podman.directory b/pkg.in/groups/server-v/podman.directory new file mode 100644 index 0000000..784ebf5 --- /dev/null +++ b/pkg.in/groups/server-v/podman.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Podman +Name[ru_RU]=Управление контейнерами Podman +X-Alterator-PackageList=container/podman +X-Alterator-Required=no +X-Alterator-Parent=server-v/200-container diff --git a/pkg.in/groups/server-v/prometheus-node_exporter.directory b/pkg.in/groups/server-v/prometheus-node_exporter.directory new file mode 100644 index 0000000..fcde93b --- /dev/null +++ b/pkg.in/groups/server-v/prometheus-node_exporter.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Prometheus exporter for hardware and OS metrics +Name[ru_RU]=Агент сбора метрик Prometheus +X-Alterator-PackageList=monitoring/prometheus-node_exporter +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring diff --git a/pkg.in/groups/server-v/prometheus.directory b/pkg.in/groups/server-v/prometheus.directory new file mode 100644 index 0000000..5831fa4 --- /dev/null +++ b/pkg.in/groups/server-v/prometheus.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Prometheus monitoring system +Name[ru_RU]=Сервер мониторинга Prometheus +X-Alterator-PackageList=monitoring/prometheus +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring diff --git a/pkg.in/groups/server-v/pve.directory b/pkg.in/groups/server-v/pve.directory new file mode 100644 index 0000000..41fc5e6 --- /dev/null +++ b/pkg.in/groups/server-v/pve.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=PVE Server +Name[ru_RU]=Сервер PVE +X-Alterator-PackageList=virt/pve +X-Alterator-Required=no +X-Alterator-Depends=server-v/ceph/osd server-v/ceph/mon server-v/ceph/mgr server-v/openvswitch +X-Alterator-Conflicts=server-v/kvm +X-Alterator-Parent=server-v/130-pve diff --git a/pkg.in/groups/server-v/restic.directory b/pkg.in/groups/server-v/restic.directory new file mode 100644 index 0000000..e88f13c --- /dev/null +++ b/pkg.in/groups/server-v/restic.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Restic backup +Name[ru_RU]=Архивирование Restic +X-Alterator-PackageList=storage/restic +X-Alterator-Required=no +X-Alterator-Parent=server-v/700-backup diff --git a/pkg.in/groups/server-v/rkt.directory b/pkg.in/groups/server-v/rkt.directory new file mode 100644 index 0000000..9672ed4 --- /dev/null +++ b/pkg.in/groups/server-v/rkt.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=rkt +Name[ru_RU]=Управление контейнерами rkt +X-Alterator-PackageList=container/rkt +X-Alterator-Required=no +X-Alterator-Parent=server-v/200-container diff --git a/pkg.in/groups/server-v/rsyslog-classic.directory b/pkg.in/groups/server-v/rsyslog-classic.directory new file mode 100644 index 0000000..1577a91 --- /dev/null +++ b/pkg.in/groups/server-v/rsyslog-classic.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Rsyslog-classic +Name[ru_RU]=Rsyslog-classic +Comment=Classic syslog configuration with local logging to /var/log from /dev/log +Comment[ru_RU]=Классический демон для локального логирования /dev/log +X-Alterator-PackageList=logging/rsyslog-classic +X-Alterator-Required=no +X-Alterator-Parent=server-v/800-logging diff --git a/pkg.in/groups/server-v/systemd-journal-remote.directory b/pkg.in/groups/server-v/systemd-journal-remote.directory new file mode 100644 index 0000000..1da3f58 --- /dev/null +++ b/pkg.in/groups/server-v/systemd-journal-remote.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Systemd Journal Remote +Name[ru_RU]=Systemd Journal Remote +Comment=Serves journal events over the network +Comment[ru_RU]=Службы доступа и отправки журналов systemd через сеть +X-Alterator-PackageList=logging/systemd-journal-remote +X-Alterator-Required=no +X-Alterator-Parent=server-v/800-logging diff --git a/pkg.in/groups/server-v/telegraf.directory b/pkg.in/groups/server-v/telegraf.directory new file mode 100644 index 0000000..e4479a1 --- /dev/null +++ b/pkg.in/groups/server-v/telegraf.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Telegraf Agent agent for collecting +Name[ru_RU]=Агент сбора метрик Telegraf +X-Alterator-PackageList=monitoring/telegraf +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring + diff --git a/pkg.in/groups/server-v/urbackup-client.directory b/pkg.in/groups/server-v/urbackup-client.directory new file mode 100644 index 0000000..9dc220e --- /dev/null +++ b/pkg.in/groups/server-v/urbackup-client.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Client of UrBackup backup system +Name[ru_RU]=Клиент архивирования UrBackup +X-Alterator-PackageList=storage/urbackup-client +X-Alterator-Required=no +X-Alterator-Parent=server-v/700-backup diff --git a/pkg.in/groups/server-v/zabbix-agent.directory b/pkg.in/groups/server-v/zabbix-agent.directory new file mode 100644 index 0000000..1115036 --- /dev/null +++ b/pkg.in/groups/server-v/zabbix-agent.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Zabbix Agent +Name[ru_RU]=Агент мониторинга Zabbix +X-Alterator-PackageList=monitoring/zabbix-agent +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring + diff --git a/pkg.in/groups/server-v/zabbix.directory b/pkg.in/groups/server-v/zabbix.directory new file mode 100644 index 0000000..aeb8543 --- /dev/null +++ b/pkg.in/groups/server-v/zabbix.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Zabbix Monitoring Server +Name[ru_RU]=Сервер мониторинга Zabbix +X-Alterator-PackageList=tagged/server+zabbix +X-Alterator-Required=no +X-Alterator-Parent=server-v/600-monitoring diff --git a/pkg.in/groups/server/apache2.directory b/pkg.in/groups/server/apache2.directory new file mode 100644 index 0000000..4bbc6fd --- /dev/null +++ b/pkg.in/groups/server/apache2.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Apache Web Server +X-Alterator-PackageList=server/apache2 +X-Alterator-Required=no +X-Alterator-Conflicts=server/nginx +Name[ru_RU]=Web-сервер Apache 2 +Categories=Server;Networking + diff --git a/pkg.in/groups/server/dhcp.directory b/pkg.in/groups/server/dhcp.directory new file mode 100644 index 0000000..6b91b47 --- /dev/null +++ b/pkg.in/groups/server/dhcp.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DHCP Server +X-Alterator-PackageList=server/dhcp +X-Alterator-Required=no +Name[ru_RU]=Сервер DHCP +Categories=Server;Networking + diff --git a/pkg.in/groups/server/dns.directory b/pkg.in/groups/server/dns.directory new file mode 100644 index 0000000..d6fa743 --- /dev/null +++ b/pkg.in/groups/server/dns.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DNS Server +X-Alterator-PackageList=server/dns +X-Alterator-Required=no +Name[ru_RU]=Сервер DNS +Categories=Server;Networking + diff --git a/pkg.in/groups/server/ftp.directory b/pkg.in/groups/server/ftp.directory new file mode 100644 index 0000000..0b300de --- /dev/null +++ b/pkg.in/groups/server/ftp.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FTP Server +X-Alterator-PackageList=server/ftp +X-Alterator-Required=no +Name[ru_RU]=Сервер FTP +Categories=Server;Networking + diff --git a/pkg.in/groups/server/kvm.directory b/pkg.in/groups/server/kvm.directory new file mode 100644 index 0000000..97e88b2 --- /dev/null +++ b/pkg.in/groups/server/kvm.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Virtualization with KVM +X-Alterator-PackageList=server/kvm +X-Alterator-Required=no +Name[ru_RU]=Сервер виртуализации KVM +Categories=Server;Virtualization + diff --git a/pkg.in/groups/server/mail.directory b/pkg.in/groups/server/mail.directory new file mode 100644 index 0000000..5692055 --- /dev/null +++ b/pkg.in/groups/server/mail.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Mail Server (SMTP, IMAP, POP3) +X-Alterator-PackageList=server/mail +X-Alterator-Required=no +Name[ru_RU]=Почтовый сервер (SMTP, IMAP, POP3) +Categories=Server;Networking + diff --git a/pkg.in/groups/server/mariadb.directory b/pkg.in/groups/server/mariadb.directory new file mode 100644 index 0000000..fed591c --- /dev/null +++ b/pkg.in/groups/server/mariadb.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=MariaDB Server (MySQL replacement) +X-Alterator-PackageList=server/mariadb +X-Alterator-Required=no +X-Alterator-Conflicts=server/mysql +Name[ru_RU]=Сервер MariaDB (замена MySQL) +Categories=Server;Networking + diff --git a/pkg.in/groups/server/mysql.directory b/pkg.in/groups/server/mysql.directory new file mode 100644 index 0000000..ac9160a --- /dev/null +++ b/pkg.in/groups/server/mysql.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=MySQL Server +X-Alterator-PackageList=server/mysql +X-Alterator-Required=no +X-Alterator-Conflicts=server/mariadb +Name[ru_RU]=Сервер MySQL +Categories=Server;Networking + diff --git a/pkg.in/groups/server/nginx.directory b/pkg.in/groups/server/nginx.directory new file mode 100644 index 0000000..4bfaacc --- /dev/null +++ b/pkg.in/groups/server/nginx.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=NGINX Web Server +X-Alterator-PackageList=server/nginx +X-Alterator-Required=no +X-Alterator-Conflicts=server/apache2 +Name[ru_RU]=Web-сервер NGINX +Categories=Server;Networking + diff --git a/pkg.in/groups/server/pgsql-1C.directory b/pkg.in/groups/server/pgsql-1C.directory new file mode 100644 index 0000000..24f1f4f --- /dev/null +++ b/pkg.in/groups/server/pgsql-1C.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=PostgreSQL Server (for 1C) +Name[ru_RU]=Сервер PostgreSQL (вариант для 1С) +X-Alterator-PackageList=server/pgsql-1C +X-Alterator-Required=no +X-Alterator-Conflicts=pgsql-server +Categories=Server;Networking; diff --git a/pkg.in/groups/server/pgsql.directory b/pkg.in/groups/server/pgsql.directory new file mode 100644 index 0000000..a85d397 --- /dev/null +++ b/pkg.in/groups/server/pgsql.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=PostgreSQL Server +Name[ru_RU]=Сервер PostgreSQL +X-Alterator-PackageList=server/pgsql +X-Alterator-Required=no +Categories=Server;Networking; + diff --git a/pkg.in/groups/server/php7.directory b/pkg.in/groups/server/php7.directory new file mode 100644 index 0000000..66ee6d8 --- /dev/null +++ b/pkg.in/groups/server/php7.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=PHP 7 support +X-Alterator-PackageList=server/php7 +X-Alterator-Required=no +X-Alterator-Conflicts=server/php5 +Name[ru_RU]=Поддержка PHP 7 +Categories=Server;Networking + diff --git a/pkg.in/groups/server/rsync.directory b/pkg.in/groups/server/rsync.directory new file mode 100644 index 0000000..89b75e7 --- /dev/null +++ b/pkg.in/groups/server/rsync.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Rsync Server +X-Alterator-PackageList=server/rsync +X-Alterator-Required=no +Name[ru_RU]=Сервер rsync +Categories=Server;Networking + diff --git a/pkg.in/groups/server/sambaDC.directory b/pkg.in/groups/server/sambaDC.directory new file mode 100644 index 0000000..fa89041 --- /dev/null +++ b/pkg.in/groups/server/sambaDC.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Samba Server (AD, SMB/CIFS) +Name[ru_RU]=Samba-сервер (AD, SMB/CIFS) +X-Alterator-PackageList=server/sambaDC +X-Alterator-Required=no +Categories=Server;Networking + diff --git a/pkg.in/groups/server/sqlite.directory b/pkg.in/groups/server/sqlite.directory new file mode 100644 index 0000000..4627d99 --- /dev/null +++ b/pkg.in/groups/server/sqlite.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=SQLite Support +Name[ru_RU]=Поддержка SQLite +X-Alterator-PackageList=server/sqlite +X-Alterator-Required=no +Categories=Server; + diff --git a/pkg.in/groups/slinux/dropbox.directory b/pkg.in/groups/slinux/dropbox.directory new file mode 100644 index 0000000..7541f4c --- /dev/null +++ b/pkg.in/groups/slinux/dropbox.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Dropbox support +X-Alterator-PackageList=slinux/dropbox +X-Alterator-Required=no +Name[ru_RU]=Поддержка Dropbox diff --git a/pkg.in/groups/slinux/emulators-full.directory b/pkg.in/groups/slinux/emulators-full.directory new file mode 100644 index 0000000..aa1e34c --- /dev/null +++ b/pkg.in/groups/slinux/emulators-full.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Emulators +X-Alterator-PackageList=slinux/emulators-full +Name[ru_RU]=Эмуляторы и виртуальные машины +X-Alterator-Conflicts=wine-local +Categories=XFCE diff --git a/pkg.in/groups/slinux/games-base.directory b/pkg.in/groups/slinux/games-base.directory new file mode 100644 index 0000000..3ba3076 --- /dev/null +++ b/pkg.in/groups/slinux/games-base.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Base Components +X-Alterator-PackageList=slinux/games-base +X-Alterator-Parent=slinux/games +X-Alterator-Required=yes +Name[ru_RU]=Основные компоненты +Categories=XFCE diff --git a/pkg.in/groups/slinux/games-full-steam.directory b/pkg.in/groups/slinux/games-full-steam.directory new file mode 100644 index 0000000..090d13e --- /dev/null +++ b/pkg.in/groups/slinux/games-full-steam.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Steam +Name[ru_RU]=Steam +X-Alterator-PackageList=slinux/games-full-steam +X-Alterator-Parent=slinux/games +X-Alterator-Required=yes +X-Alterator-Conflicts=games +Categories=XFCE diff --git a/pkg.in/groups/slinux/games-full.directory b/pkg.in/groups/slinux/games-full.directory new file mode 100644 index 0000000..5653d0e --- /dev/null +++ b/pkg.in/groups/slinux/games-full.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Extra Components +X-Alterator-PackageList=slinux/games-full +X-Alterator-Parent=slinux/games +X-Alterator-Required=no +Name[ru_RU]=Дополнительные компоненты +Categories=XFCE diff --git a/pkg.in/groups/slinux/games.directory b/pkg.in/groups/slinux/games.directory new file mode 100644 index 0000000..ea65d7f --- /dev/null +++ b/pkg.in/groups/slinux/games.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Games +X-Alterator-PackageList=zero +Name[ru_RU]=Игры +Categories=XFCE diff --git a/pkg.in/groups/slinux/graphics-base.directory b/pkg.in/groups/slinux/graphics-base.directory new file mode 100644 index 0000000..d1ee817 --- /dev/null +++ b/pkg.in/groups/slinux/graphics-base.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Base Components +X-Alterator-PackageList=slinux/graphics-base +X-Alterator-Parent=slinux/graphics +X-Alterator-Required=yes +Name[ru_RU]=Основные компоненты +X-Alterator-Conflicts=graphics +Categories=XFCE diff --git a/pkg.in/groups/slinux/graphics-full-inkscape.directory b/pkg.in/groups/slinux/graphics-full-inkscape.directory new file mode 100644 index 0000000..e5ea532 --- /dev/null +++ b/pkg.in/groups/slinux/graphics-full-inkscape.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Inkscape +Name[ru_RU]=Редактор векторной графики Inkscape +X-Alterator-PackageList=slinux/graphics-full-inkscape +X-Alterator-Parent=slinux/graphics +X-Alterator-Required=yes +X-Alterator-Conflicts=graphics +Categories=XFCE diff --git a/pkg.in/groups/slinux/graphics-full-shotwell.directory b/pkg.in/groups/slinux/graphics-full-shotwell.directory new file mode 100644 index 0000000..a467d31 --- /dev/null +++ b/pkg.in/groups/slinux/graphics-full-shotwell.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Shotwell +Name[ru_RU]=Программа управления фотографиями Shotwell +X-Alterator-PackageList=slinux/graphics-full-shotwell +X-Alterator-Parent=slinux/graphics +X-Alterator-Required=yes +X-Alterator-Conflicts=graphics +Categories=XFCE diff --git a/pkg.in/groups/slinux/graphics.directory b/pkg.in/groups/slinux/graphics.directory new file mode 100644 index 0000000..fe77dd2 --- /dev/null +++ b/pkg.in/groups/slinux/graphics.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Graphics +X-Alterator-PackageList=zero +X-Alterator-Required=yes +Name[ru_RU]=Работа с графикой +X-Alterator-Conflicts=graphics +Categories=XFCE diff --git a/pkg.in/groups/slinux/multimedia-base.directory b/pkg.in/groups/slinux/multimedia-base.directory new file mode 100644 index 0000000..eebaac2 --- /dev/null +++ b/pkg.in/groups/slinux/multimedia-base.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Base Components +X-Alterator-PackageList=slinux/multimedia-base +X-Alterator-Parent=slinux/multimedia +X-Alterator-Required=yes +Name[ru_RU]=Основные компоненты +X-Alterator-Conflicts=multimedia +Categories=XFCE diff --git a/pkg.in/groups/slinux/multimedia-full-audacity.directory b/pkg.in/groups/slinux/multimedia-full-audacity.directory new file mode 100644 index 0000000..1ae279e --- /dev/null +++ b/pkg.in/groups/slinux/multimedia-full-audacity.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Audacity +Name[ru_RU]=Редактор звуковых файлов Audacity +X-Alterator-PackageList=slinux/multimedia-full-audacity +X-Alterator-Parent=slinux/multimedia +X-Alterator-Required=yes +X-Alterator-Conflicts=multimedia +Categories=XFCE diff --git a/pkg.in/groups/slinux/multimedia-full-cheese.directory b/pkg.in/groups/slinux/multimedia-full-cheese.directory new file mode 100644 index 0000000..9302a71 --- /dev/null +++ b/pkg.in/groups/slinux/multimedia-full-cheese.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Cheese Webcam Booth +Name[ru_RU]=Фотовидеобудка Cheese +X-Alterator-PackageList=slinux/multimedia-full-cheese +X-Alterator-Parent=slinux/multimedia +X-Alterator-Required=yes +X-Alterator-Conflicts=multimedia +Categories=XFCE diff --git a/pkg.in/groups/slinux/multimedia-full-obs-studio.directory b/pkg.in/groups/slinux/multimedia-full-obs-studio.directory new file mode 100644 index 0000000..26a5f33 --- /dev/null +++ b/pkg.in/groups/slinux/multimedia-full-obs-studio.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Streaming/Recording Software OBS Studio +Name[ru_RU]=Программа для записи/трансляции видео OBS Studio +X-Alterator-PackageList=slinux/multimedia-full-obs-studio +X-Alterator-Parent=slinux/multimedia +X-Alterator-Required=yes +X-Alterator-Conflicts=multimedia +Categories=XFCE diff --git a/pkg.in/groups/slinux/multimedia-full-shotcut.directory b/pkg.in/groups/slinux/multimedia-full-shotcut.directory new file mode 100644 index 0000000..2d17afe --- /dev/null +++ b/pkg.in/groups/slinux/multimedia-full-shotcut.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Shotcut Video Editor +Name[ru_RU]=Видеоредактор Shotcut +X-Alterator-PackageList=slinux/multimedia-full-shotcut +X-Alterator-Parent=slinux/multimedia +X-Alterator-Required=yes +X-Alterator-Conflicts=multimedia +Categories=XFCE diff --git a/pkg.in/groups/slinux/multimedia-full-sound-juicer.directory b/pkg.in/groups/slinux/multimedia-full-sound-juicer.directory new file mode 100644 index 0000000..265775f --- /dev/null +++ b/pkg.in/groups/slinux/multimedia-full-sound-juicer.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Audio CD Extractor +Name[ru_RU]=Программа копирования звуковых CD +X-Alterator-PackageList=slinux/multimedia-full-sound-juicer +X-Alterator-Parent=slinux/multimedia +X-Alterator-Required=yes +X-Alterator-Conflicts=multimedia +Categories=XFCE diff --git a/pkg.in/groups/slinux/multimedia.directory b/pkg.in/groups/slinux/multimedia.directory new file mode 100644 index 0000000..e0524a5 --- /dev/null +++ b/pkg.in/groups/slinux/multimedia.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Multimedia +X-Alterator-PackageList=zero +X-Alterator-Required=yes +Name[ru_RU]=Мультимедиа +X-Alterator-Conflicts=multimedia +Categories=XFCE diff --git a/pkg.in/groups/slinux/net-base.directory b/pkg.in/groups/slinux/net-base.directory new file mode 100644 index 0000000..ce42481 --- /dev/null +++ b/pkg.in/groups/slinux/net-base.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Internet/Networking +Name[ru_RU]=Интернет/сети +Comment=Networking applications +Comment[ru_RU]=Сетевые приложения +X-Alterator-PackageList=slinux/net-base +X-Alterator-Required=yes +Categories=XFCE diff --git a/pkg.in/groups/tools/diag.directory b/pkg.in/groups/tools/diag.directory new file mode 100644 index 0000000..0b61dc8 --- /dev/null +++ b/pkg.in/groups/tools/diag.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Diagnostic tools +X-Alterator-PackageList=tools/diag +X-Alterator-Required=yes +Name[ru_RU]=Утилиты для диагностики +Categories=Server;Diagnostics +# NB: as the list may expand, skip adding Networking diff --git a/pkg.in/groups/tools/hyperv.directory b/pkg.in/groups/tools/hyperv.directory new file mode 100644 index 0000000..8f83f23 --- /dev/null +++ b/pkg.in/groups/tools/hyperv.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Hyper-V tools +Name[ru_RU]=Утилиты для Hyper-V +X-Alterator-PackageList=tools/hyperv +X-Alterator-Required=no +Categories=Server;Virtualization diff --git a/pkg.in/groups/tools/ipmi.directory b/pkg.in/groups/tools/ipmi.directory new file mode 100644 index 0000000..0911efb --- /dev/null +++ b/pkg.in/groups/tools/ipmi.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=IPMI tools +X-Alterator-PackageList=tools/ipmi +X-Alterator-Required=no +Name[ru_RU]=Утилиты для поддержки IPMI +Categories=Server;IPMI + diff --git a/pkg.in/groups/tools/monitoring.directory b/pkg.in/groups/tools/monitoring.directory new file mode 100644 index 0000000..842d02d --- /dev/null +++ b/pkg.in/groups/tools/monitoring.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Monitoring +X-Alterator-PackageList=tools/monitoring +X-Alterator-Required=no +Name[ru_RU]=Средства мониторинга системы +Categories=Server;Monitoring + diff --git a/pkg.in/groups/tools/tuning.directory b/pkg.in/groups/tools/tuning.directory new file mode 100644 index 0000000..4dee5f6 --- /dev/null +++ b/pkg.in/groups/tools/tuning.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=System tuning +X-Alterator-PackageList=tools/tuning +X-Alterator-Required=no +Name[ru_RU]=Подстройка системы +Categories=Server;Diagnostics diff --git a/pkg.in/groups/tools/vzstats.directory b/pkg.in/groups/tools/vzstats.directory new file mode 100644 index 0000000..5667f6a --- /dev/null +++ b/pkg.in/groups/tools/vzstats.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=VZstats (OpenVZ host survey) +X-Alterator-PackageList=tools/vzstats +X-Alterator-Required=no +Name[ru_RU]=VZstats (сбор статистики OpenVZ) +Categories=Server;Monitoring + diff --git a/pkg.in/groups/workstation/10-office.directory b/pkg.in/groups/workstation/10-office.directory new file mode 100644 index 0000000..4a95933 --- /dev/null +++ b/pkg.in/groups/workstation/10-office.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Office +Name[ru_RU]=Офис +X-Alterator-Required=no +Comment=Office applications +Comment[ru_RU]=Офисные приложения diff --git a/pkg.in/groups/workstation/20-networking.directory b/pkg.in/groups/workstation/20-networking.directory new file mode 100644 index 0000000..8342a6f --- /dev/null +++ b/pkg.in/groups/workstation/20-networking.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Internet/Networking +Name[ru_RU]=Интернет/сети +X-Alterator-Required=no +Comment=Networking applications +Comment[ru_RU]=Сетевые приложения diff --git a/pkg.in/groups/workstation/30-multimedia.directory b/pkg.in/groups/workstation/30-multimedia.directory new file mode 100644 index 0000000..9490a9c --- /dev/null +++ b/pkg.in/groups/workstation/30-multimedia.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Multimedia +Name[ru_RU]=Мультимедиа +X-Alterator-Required=no +Comment=Multimedia applications +Comment[ru_RU]=Мультимедийные приложения diff --git a/pkg.in/groups/workstation/3rdparty.directory b/pkg.in/groups/workstation/3rdparty.directory new file mode 100644 index 0000000..98bb34f --- /dev/null +++ b/pkg.in/groups/workstation/3rdparty.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=3rd party app support (Chrome, VMware View...) +Name[ru_RU]=Поддержка сторонних приложений (1С, CryptoPro...) +X-Alterator-PackageList=workstation/3rdparty +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;MATE;XFCE;KDE;KDE4; diff --git a/pkg.in/groups/workstation/40-virtualization.directory b/pkg.in/groups/workstation/40-virtualization.directory new file mode 100644 index 0000000..6673b4f --- /dev/null +++ b/pkg.in/groups/workstation/40-virtualization.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Virtualization +Name[ru_RU]=Виртуализация +X-Alterator-Required=no +Comment=Virtualization/access applications +Comment[ru_RU]=Приложения для виртуализации и доступа diff --git a/pkg.in/groups/workstation/50-publishing.directory b/pkg.in/groups/workstation/50-publishing.directory new file mode 100644 index 0000000..adef6dc --- /dev/null +++ b/pkg.in/groups/workstation/50-publishing.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Publishing +Name[ru_RU]=Издательство +X-Alterator-Required=no +Comment=Desktop Publishing applications +Comment[ru_RU]=Приложения для издательства diff --git a/pkg.in/groups/workstation/admc.directory b/pkg.in/groups/workstation/admc.directory new file mode 100644 index 0000000..baada37 --- /dev/null +++ b/pkg.in/groups/workstation/admc.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Group policy managing tools +Name[ru_RU]=Инструменты управления групповыми политиками +X-Alterator-PackageList=workstation/admc +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking diff --git a/pkg.in/groups/workstation/agents.directory b/pkg.in/groups/workstation/agents.directory new file mode 100644 index 0000000..6c717c9 --- /dev/null +++ b/pkg.in/groups/workstation/agents.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Infrastructure agents (Bacula, Zabbix...) +Name[ru_RU]=Агенты инфраструктуры (Zabbix, Bacula...) +X-Alterator-PackageList=workstation/agents +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;MATE;XFCE;KDE;KDE4; diff --git a/pkg.in/groups/workstation/alterator-web.directory b/pkg.in/groups/workstation/alterator-web.directory new file mode 100644 index 0000000..55a04ee --- /dev/null +++ b/pkg.in/groups/workstation/alterator-web.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Management interface +Name[ru_RU]=Интерфейс управления +Comment=Alterator Web interface (port 8080) +Comment[ru_RU]=Веб-интерфейс Alterator (порт 8080) +X-Alterator-PackageList=workstation/alterator-web +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;MATE;XFCE;KDE;KDE4; diff --git a/pkg.in/groups/workstation/blender.directory b/pkg.in/groups/workstation/blender.directory new file mode 100644 index 0000000..d2e3a5b --- /dev/null +++ b/pkg.in/groups/workstation/blender.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Blender 3D Modeller +Name[ru_RU]=Трёхмерное моделирование (Blender) +X-Alterator-PackageList=workstation/blender +X-Alterator-Required=no +X-Alterator-Parent=workstation/30-multimedia diff --git a/pkg.in/groups/workstation/celluloid.directory b/pkg.in/groups/workstation/celluloid.directory new file mode 100644 index 0000000..b363518 --- /dev/null +++ b/pkg.in/groups/workstation/celluloid.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Celluloid mediaplayer +Name[ru_RU]=Медиаплеер (Celluloid) +X-Alterator-PackageList=workstation/celluloid +X-Alterator-Required=yes +X-Alterator-Parent=workstation/30-multimedia diff --git a/pkg.in/groups/workstation/clamav.directory b/pkg.in/groups/workstation/clamav.directory new file mode 100644 index 0000000..92066df --- /dev/null +++ b/pkg.in/groups/workstation/clamav.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=ClamAV Antivirus +Name[ru_RU]=Антивирус ClamAV +X-Alterator-PackageList=workstation/clamav +X-Alterator-Required=no +X-Alterator-Parent=workstation/10-office +Categories=GNOME;MATE;XFCE; diff --git a/pkg.in/groups/workstation/claws-mail.directory b/pkg.in/groups/workstation/claws-mail.directory new file mode 100644 index 0000000..22b1185 --- /dev/null +++ b/pkg.in/groups/workstation/claws-mail.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Claws Mail client +Name[ru_RU]=Электронная почта (Claws Mail) +X-Alterator-PackageList=workstation/claws-mail +X-Alterator-Required=yes +X-Alterator-Parent=workstation/20-networking diff --git a/pkg.in/groups/workstation/cloud-clients.directory b/pkg.in/groups/workstation/cloud-clients.directory new file mode 100644 index 0000000..4cb0d89 --- /dev/null +++ b/pkg.in/groups/workstation/cloud-clients.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Cloud storage clients (Owncloud, Seafile) +Name[ru_RU]=Клиенты облачного хранилища (Owncloud, Seafile) +X-Alterator-PackageList=workstation/cloud-clients +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;MATE;XFCE;KDE;KDE4; diff --git a/pkg.in/groups/workstation/emulators.directory b/pkg.in/groups/workstation/emulators.directory new file mode 100644 index 0000000..9edfd60 --- /dev/null +++ b/pkg.in/groups/workstation/emulators.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Run Windows/DOS software +Name[ru_RU]=Запуск программ Windows/DOS +X-Alterator-PackageList=workstation/emulators +X-Alterator-Conflicts=wine-local +X-Alterator-Parent=workstation/40-virtualization +Categories=KDE;KDE4;GNOME;XFCE; +#Comment=Run applications designed for other operating systems and computer architectures; for example, 32-bit programs in a 64-bit environment +#Comment[ru_RU]=Запуск приложений, предназначенных для других операционных систем и компьютерных архитектур; например, 32-битных программ в 64-битной среде diff --git a/pkg.in/groups/workstation/freecad.directory b/pkg.in/groups/workstation/freecad.directory new file mode 100644 index 0000000..1685c18 --- /dev/null +++ b/pkg.in/groups/workstation/freecad.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FreeCAD system +Name[ru_RU]=САПР (FreeCAD) +X-Alterator-PackageList=workstation/freecad +X-Alterator-Required=no +X-Alterator-Parent=workstation/50-publishing diff --git a/pkg.in/groups/workstation/freeipa-client.directory b/pkg.in/groups/workstation/freeipa-client.directory new file mode 100644 index 0000000..e270a35 --- /dev/null +++ b/pkg.in/groups/workstation/freeipa-client.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=FreeIPA domain client +Name[ru_RU]=Клиент домена FreeIPA +X-Alterator-PackageList=workstation/freeipa-client +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;MATE;XFCE;KDE;KDE4; diff --git a/pkg.in/groups/workstation/ganttproject.directory b/pkg.in/groups/workstation/ganttproject.directory new file mode 100644 index 0000000..347df2e --- /dev/null +++ b/pkg.in/groups/workstation/ganttproject.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Project management (GanttProject) +Name[ru_RU]=Управление проектами (диаграммы Гантта) +X-Alterator-PackageList=workstation/ganttproject +X-Alterator-Required=no +X-Alterator-Parent=workstation/10-office diff --git a/pkg.in/groups/workstation/gnome-peer-to-peer.directory b/pkg.in/groups/workstation/gnome-peer-to-peer.directory new file mode 100644 index 0000000..5aed8e6 --- /dev/null +++ b/pkg.in/groups/workstation/gnome-peer-to-peer.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Peer-to-peer clients +Name[ru_RU]=Файлообменные сети +X-Alterator-PackageList=workstation/gnome-peer-to-peer +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;XFCE; diff --git a/pkg.in/groups/workstation/graphics-editing.directory b/pkg.in/groups/workstation/graphics-editing.directory new file mode 100644 index 0000000..e264f3e --- /dev/null +++ b/pkg.in/groups/workstation/graphics-editing.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Graphics editing +Name[ru_RU]=Обработка графики +X-Alterator-PackageList=workstation/graphics-editing +X-Alterator-Required=no +X-Alterator-Parent=workstation/30-multimedia +Categories=KDE;KDE4;GNOME;XFCE; diff --git a/pkg.in/groups/workstation/gtk-dictionary.directory b/pkg.in/groups/workstation/gtk-dictionary.directory new file mode 100644 index 0000000..7300848 --- /dev/null +++ b/pkg.in/groups/workstation/gtk-dictionary.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Dictionary +Name[ru_RU]=Словари +X-Alterator-PackageList=workstation/gtk-dictionary +X-Alterator-Required=no +X-Alterator-Parent=workstation/10-office +Categories=GNOME;XFCE; + diff --git a/pkg.in/groups/workstation/kvm.directory b/pkg.in/groups/workstation/kvm.directory new file mode 100644 index 0000000..dc322bd --- /dev/null +++ b/pkg.in/groups/workstation/kvm.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=KVM virtualization server +Name[ru_RU]=Сервер виртуализации (KVM) +X-Alterator-PackageList=workstation/kvm +X-Alterator-Required=no +X-Alterator-Parent=workstation/40-virtualization diff --git a/pkg.in/groups/workstation/libreoffice.directory b/pkg.in/groups/workstation/libreoffice.directory new file mode 100644 index 0000000..3abbb90 --- /dev/null +++ b/pkg.in/groups/workstation/libreoffice.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=LibreOffice +Name[ru_RU]=Офисный пакет (LibreOffice) +X-Alterator-PackageList=workstation/libreoffice +X-Alterator-Required=yes +X-Alterator-Parent=workstation/10-office +Categories=KDE;KDE4;GNOME;XFCE diff --git a/pkg.in/groups/workstation/mate-usershare.directory b/pkg.in/groups/workstation/mate-usershare.directory new file mode 100644 index 0000000..4bc9d4e --- /dev/null +++ b/pkg.in/groups/workstation/mate-usershare.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=User folder sharing +Name[ru_RU]=Общий доступ к папкам +X-Alterator-PackageList=workstation/mate-usershare +X-Alterator-Required=yes +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;MATE; +Comment=Enables users to right-click a folder and mark it for network sharing +Comment[ru_RU]=Даёт возможность расшарить папку по сети щелчком правой кнопки мыши diff --git a/pkg.in/groups/workstation/pidgin.directory b/pkg.in/groups/workstation/pidgin.directory new file mode 100644 index 0000000..05819bf --- /dev/null +++ b/pkg.in/groups/workstation/pidgin.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Pidgin IM client +Name[ru_RU]=Обмен мгновенными сообщениями (Pidgin) +X-Alterator-PackageList=workstation/pidgin +X-Alterator-Required=yes +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;XFCE; diff --git a/pkg.in/groups/workstation/qgis.directory b/pkg.in/groups/workstation/qgis.directory new file mode 100644 index 0000000..3259a42 --- /dev/null +++ b/pkg.in/groups/workstation/qgis.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=QGIS geoinformation system +Name[ru_RU]=Геоинформационная система QGIS +X-Alterator-PackageList=workstation/qgis +X-Alterator-Parent=workstation/50-publishing diff --git a/pkg.in/groups/workstation/raccess.directory b/pkg.in/groups/workstation/raccess.directory new file mode 100644 index 0000000..c0f808b --- /dev/null +++ b/pkg.in/groups/workstation/raccess.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Remote Desktop access client +Name[ru_RU]=Доступ к удалённым рабочим столам +X-Alterator-Parent=workstation/40-virtualization +X-Alterator-PackageList=workstation/raccess +X-Alterator-Required=no diff --git a/pkg.in/groups/workstation/runa-client.directory b/pkg.in/groups/workstation/runa-client.directory new file mode 100644 index 0000000..b4a56ae --- /dev/null +++ b/pkg.in/groups/workstation/runa-client.directory @@ -0,0 +1,7 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=RunaWFE business process management system +Name[ru_RU]=Управление бизнес-процессами (Runa WFE) +X-Alterator-PackageList=workstation/runa-client +X-Alterator-Parent=workstation/10-office diff --git a/pkg.in/groups/workstation/scanning.directory b/pkg.in/groups/workstation/scanning.directory new file mode 100644 index 0000000..53161de --- /dev/null +++ b/pkg.in/groups/workstation/scanning.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Scanning +Name[ru_RU]=Поддержка сканеров +X-Alterator-PackageList=workstation/scanning +X-Alterator-Required=yes +X-Alterator-Parent=workstation/10-office +Categories=KDE;KDE4;GNOME;XFCE diff --git a/pkg.in/groups/workstation/scribus.directory b/pkg.in/groups/workstation/scribus.directory new file mode 100644 index 0000000..235250a --- /dev/null +++ b/pkg.in/groups/workstation/scribus.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Scribus desktop publishing system +Name[ru_RU]=Издательская система (Scribus) +X-Alterator-PackageList=workstation/scribus +X-Alterator-Required=no +X-Alterator-Parent=workstation/50-publishing +Categories=KDE;KDE4;GNOME;XFCE; diff --git a/pkg.in/groups/workstation/smartcard.directory b/pkg.in/groups/workstation/smartcard.directory new file mode 100644 index 0000000..0ec37a4 --- /dev/null +++ b/pkg.in/groups/workstation/smartcard.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Smartcard support +Name[ru_RU]=Поддержка смарт-карт +X-Alterator-PackageList=workstation/smartcard +X-Alterator-Required=yes +X-Alterator-Parent=workstation/10-office +Categories=KDE;KDE4;GNOME;XFCE diff --git a/pkg.in/groups/workstation/sound-editing.directory b/pkg.in/groups/workstation/sound-editing.directory new file mode 100644 index 0000000..b20ac25 --- /dev/null +++ b/pkg.in/groups/workstation/sound-editing.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Audacity sound editor +Name[ru_RU]=Обработка звука (Audacity) +X-Alterator-PackageList=workstation/sound-editing +X-Alterator-Required=no +X-Alterator-Parent=workstation/30-multimedia +Categories=KDE;KDE4;GNOME;XFCE; diff --git a/pkg.in/groups/workstation/thunderbird.directory b/pkg.in/groups/workstation/thunderbird.directory new file mode 100644 index 0000000..f8a5b34 --- /dev/null +++ b/pkg.in/groups/workstation/thunderbird.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Thunderbird email client +Name[ru_RU]=Электронная почта (Thunderbird) +X-Alterator-PackageList=workstation/thunderbird +X-Alterator-Required=yes +X-Alterator-Parent=workstation/20-networking diff --git a/pkg.in/groups/workstation/virtualbox.directory b/pkg.in/groups/workstation/virtualbox.directory new file mode 100644 index 0000000..2ca4b53 --- /dev/null +++ b/pkg.in/groups/workstation/virtualbox.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=VirtualBox desktop virtualization +Name[ru_RU]=Настольная виртуализация (VirtualBox) +X-Alterator-PackageList=workstation/virtualbox +X-Alterator-Required=no +X-Alterator-Parent=workstation/40-virtualization diff --git a/pkg.in/groups/workstation/vlc.directory b/pkg.in/groups/workstation/vlc.directory new file mode 100644 index 0000000..c1382df --- /dev/null +++ b/pkg.in/groups/workstation/vlc.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=VLC mediaplayer +Name[ru_RU]=Медиаплеер (VLC) +X-Alterator-PackageList=workstation/vlc +X-Alterator-Required=yes +X-Alterator-Parent=workstation/30-multimedia diff --git a/pkg.in/groups/workstation/voip-clients.directory b/pkg.in/groups/workstation/voip-clients.directory new file mode 100644 index 0000000..afbca30 --- /dev/null +++ b/pkg.in/groups/workstation/voip-clients.directory @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Internet telephony (Linphone) +Name[ru_RU]=Интернет-телефония (Linphone) +X-Alterator-PackageList=workstation/voip-clients +X-Alterator-Required=no +X-Alterator-Parent=workstation/20-networking +Categories=GNOME;MATE;XFCE;KDE;KDE4; diff --git a/pkg.in/groups/x-e2k/90-e801.directory b/pkg.in/groups/x-e2k/90-e801.directory new file mode 100644 index 0000000..59779d4 --- /dev/null +++ b/pkg.in/groups/x-e2k/90-e801.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Multiseat Elbrus 801-PC +Name[ru_RU]=«Горыныч» на «Эльбрус 801-РС» +X-Alterator-Required=no +Comment=Multiple seats on a system with multiple GPUs +Comment[ru_RU]=Многоместная рабочая станция diff --git a/pkg.in/groups/x-e2k/90-e901.directory b/pkg.in/groups/x-e2k/90-e901.directory new file mode 100644 index 0000000..18dd670 --- /dev/null +++ b/pkg.in/groups/x-e2k/90-e901.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Multiseat Elbrus 901-PC +Name[ru_RU]=«Горыныч» на «Эльбрус 901-РС» +X-Alterator-Required=no +Comment=Multiple seats on a system with multiple GPUs +Comment[ru_RU]=Многоместная рабочая станция diff --git a/pkg.in/groups/x-e2k/91-e101.directory b/pkg.in/groups/x-e2k/91-e101.directory new file mode 100644 index 0000000..f53c937 --- /dev/null +++ b/pkg.in/groups/x-e2k/91-e101.directory @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Elbrus 101-PC videodrivers +Name[ru_RU]=Видеодрайверы для «Эльбрус 101-РС» +X-Alterator-Required=no +Comment=Elbrus 101-PC videodrivers +Comment[ru_RU]=Видеодрайверы для «Эльбрус 101-РС» diff --git a/pkg.in/groups/x-e2k/e101-mga2.directory b/pkg.in/groups/x-e2k/e101-mga2.directory new file mode 100644 index 0000000..5933abd --- /dev/null +++ b/pkg.in/groups/x-e2k/e101-mga2.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Accelerated 3D graphics +Name[ru_RU]=Ускоренный 3D-драйвер +Comment=mga2/vivante driver setup for Elbrus-1C+ +Comment[ru_RU]=Настройка видеодрайвера mga2/vivante для Эльбрус-1С+ +X-Alterator-PackageList=x-e2k/e101-mga2 +X-Alterator-Conflicts=x-e2k/e101-modesetting +X-Alterator-Required=no +X-Alterator-Parent=x-e2k/91-e101 diff --git a/pkg.in/groups/x-e2k/e101-modesetting.directory b/pkg.in/groups/x-e2k/e101-modesetting.directory new file mode 100644 index 0000000..e6fa198 --- /dev/null +++ b/pkg.in/groups/x-e2k/e101-modesetting.directory @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Safe-mode 2D graphics (default) +Name[ru_RU]=2D-драйвер (надёжно) +Comment=Modesetting driver for Elbrus-1C+ +Comment[ru_RU]=Настройка видеодрайвера modesetting для Эльбрус-1С+ +X-Alterator-PackageList=x-e2k/e101-modesetting +X-Alterator-Conflicts=x-e2k/e101-mga2 +X-Alterator-Required=no +X-Alterator-Parent=x-e2k/91-e101 diff --git a/pkg.in/groups/x-e2k/e801-1seat.directory b/pkg.in/groups/x-e2k/e801-1seat.directory new file mode 100644 index 0000000..4b8ecdd --- /dev/null +++ b/pkg.in/groups/x-e2k/e801-1seat.directory @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Single seat +Name[ru_RU]=Одно место +Comment=Single-seat Elbrus 801-PC setup +Comment[ru_RU]=Одно рабочее место на Эльбрус 801-РС +X-Alterator-PackageList=zero +X-Alterator-Required=no +X-Alterator-Conflicts=x-e2k/e801-2seat +X-Alterator-Conflicts=x-e2k/e801-3seat +X-Alterator-Conflicts=x-e2k/e801-6seat +X-Alterator-Parent=x-e2k/90-e801 diff --git a/pkg.in/groups/x-e2k/e801-2seat.directory b/pkg.in/groups/x-e2k/e801-2seat.directory new file mode 100644 index 0000000..5850c4c --- /dev/null +++ b/pkg.in/groups/x-e2k/e801-2seat.directory @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Dual seat +Name[ru_RU]=Два места +Comment=Dual-seat setup for Elbrus 801-PC with additional GPU +Comment[ru_RU]=Два рабочих места на Эльбрус 801-РС с дополнительной видеокартой +X-Alterator-PackageList=x-e2k/e801-2seat +X-Alterator-Required=no +X-Alterator-Conflicts=x-e2k/e801-1seat +X-Alterator-Conflicts=x-e2k/e801-3seat +X-Alterator-Conflicts=x-e2k/e801-6seat +X-Alterator-Parent=x-e2k/90-e801 diff --git a/pkg.in/groups/x-e2k/e801-3seat.directory b/pkg.in/groups/x-e2k/e801-3seat.directory new file mode 100644 index 0000000..0b3af78 --- /dev/null +++ b/pkg.in/groups/x-e2k/e801-3seat.directory @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Triple seat +Name[ru_RU]=Три места +Comment=Triple-seat setup for Elbrus 801-PC with additional GPUs +Comment[ru_RU]=Три рабочих места на Эльбрус 801-РС с дополнительными видеокартами +X-Alterator-PackageList=x-e2k/e801-3seat +X-Alterator-Required=no +X-Alterator-Conflicts=x-e2k/e801-1seat +X-Alterator-Conflicts=x-e2k/e801-2seat +X-Alterator-Conflicts=x-e2k/e801-6seat +X-Alterator-Parent=x-e2k/90-e801 diff --git a/pkg.in/groups/x-e2k/e801-6seat.directory b/pkg.in/groups/x-e2k/e801-6seat.directory new file mode 100644 index 0000000..3e5750b --- /dev/null +++ b/pkg.in/groups/x-e2k/e801-6seat.directory @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Six seats +Name[ru_RU]=Шесть мест +Comment=Hexa-seat setup for Elbrus 801-PC with additional GPUs +Comment[ru_RU]=Шесть рабочих мест на Эльбрус 801-РС (.400) с дополнительными видеокартами +X-Alterator-PackageList=x-e2k/e801-6seat +X-Alterator-Required=no +X-Alterator-Conflicts=x-e2k/e801-1seat +X-Alterator-Conflicts=x-e2k/e801-2seat +X-Alterator-Conflicts=x-e2k/e801-3seat +X-Alterator-Parent=x-e2k/90-e801 diff --git a/pkg.in/groups/x-e2k/e901-1seat.directory b/pkg.in/groups/x-e2k/e901-1seat.directory new file mode 100644 index 0000000..20c1c2d --- /dev/null +++ b/pkg.in/groups/x-e2k/e901-1seat.directory @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Single seat +Name[ru_RU]=Одно место +Comment=Single-seat Elbrus 901-PC setup +Comment[ru_RU]=Одно рабочее место на Эльбрус 901-РС +X-Alterator-PackageList=zero +X-Alterator-Required=no +X-Alterator-Conflicts=x-e2k/e901-2seat +X-Alterator-Conflicts=x-e2k/e901-3seat +X-Alterator-Conflicts=x-e2k/e901-6seat +X-Alterator-Parent=x-e2k/90-e901 diff --git a/pkg.in/groups/x-e2k/e901-2seat.directory b/pkg.in/groups/x-e2k/e901-2seat.directory new file mode 100644 index 0000000..2262720 --- /dev/null +++ b/pkg.in/groups/x-e2k/e901-2seat.directory @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Dual seat +Name[ru_RU]=Два места +Comment=Dual-seat setup for Elbrus 901-PC with additional GPU +Comment[ru_RU]=Два рабочих места на Эльбрус 901-РС с дополнительной видеокартой +X-Alterator-PackageList=x-e2k/e901-2seat +X-Alterator-Required=no +X-Alterator-Conflicts=x-e2k/e901-1seat +X-Alterator-Conflicts=x-e2k/e901-3seat +X-Alterator-Conflicts=x-e2k/e901-6seat +X-Alterator-Parent=x-e2k/90-e901 diff --git a/pkg.in/groups/x-e2k/e901-3seat.directory b/pkg.in/groups/x-e2k/e901-3seat.directory new file mode 100644 index 0000000..e8f9b84 --- /dev/null +++ b/pkg.in/groups/x-e2k/e901-3seat.directory @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Triple seat +Name[ru_RU]=Три места +Comment=Triple-seat setup for Elbrus 901-PC with additional GPUs +Comment[ru_RU]=Три рабочих места на Эльбрус 901-РС с дополнительными видеокартами +X-Alterator-PackageList=x-e2k/e901-3seat +X-Alterator-Required=no +X-Alterator-Conflicts=x-e2k/e901-1seat +X-Alterator-Conflicts=x-e2k/e901-2seat +X-Alterator-Conflicts=x-e2k/e901-6seat +X-Alterator-Parent=x-e2k/90-e901 diff --git a/pkg.in/groups/x-e2k/x-autologin.directory b/pkg.in/groups/x-e2k/x-autologin.directory new file mode 100644 index 0000000..0543520 --- /dev/null +++ b/pkg.in/groups/x-e2k/x-autologin.directory @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=Log in automatically +Name[ru_RU]=Вход без запроса пароля +Comment=This enables autologin in single- or multi-seat configuration +Comment[ru_RU]=Включает автоматический вход в систему на всех местах +X-Alterator-PackageList=x-e2k/x-autologin +X-Alterator-Required=no +X-Alterator-Parent=x-e2k/90-e801 diff --git a/pkg.in/lists/.base b/pkg.in/lists/.base new file mode 100644 index 0000000..fecb019 --- /dev/null +++ b/pkg.in/lists/.base @@ -0,0 +1 @@ +# basesystem packages, see Makefile diff --git a/pkg.in/lists/Makefile b/pkg.in/lists/Makefile new file mode 100644 index 0000000..788b8fb --- /dev/null +++ b/pkg.in/lists/Makefile @@ -0,0 +1,105 @@ +# step 3: copy package lists referenced in distro configuration +# (and only those!) over to $(BUILDDIR) + +ifndef BUILDDIR +pkgdups: + @find -type f ! -name README ! -name Makefile \ + | grep -v '~$$' \ + | sed 's,^\./,,g' \ + | xargs ../../bin/pkgdups + +%: + $(error BUILDDIR not defined) + +else + +include $(BUILDDIR)/distcfg.mk +include $(BUILDDIR)/functions.mk + +SUFFIX := pkg/lists +TARGET := $(BUILDDIR)/$(SUFFIX) + +all: | $(TARGET) $(GLOBAL_DEBUG) copy-lists copy-groups save_packages_to_lists grep-metadep grep-archdep check-lists + @mp-commit "$(TARGET)" "requested $(SUFFIX) copied over" + +# env | sort -u | grep _LISTS | xargs -r cp -t +copy-lists: + @echo $(foreach V, \ + $(filter %_LISTS,$(sort $(.VARIABLES))), \ + $(if $(filter environment% file,$(origin $V)),$($V))) \ + |xargs -r -- cp --parents -at $(TARGET) --; \ + find $(TARGET) -name 'README' -delete -o -name 'Makefile' -delete + +save_packages_to_lists: + @echo $(BASE_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/BASE_PACKAGES + @echo $(BASE_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/BASE_PACKAGES_REGEXP + @echo $(COMMON_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/COMMON_PACKAGES + @echo $(COMMON_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/COMMON_PACKAGES_REGEXP + @echo $(INSTALL2_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/INSTALL2_PACKAGES + @echo $(INSTALL2_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/INSTALL2_PACKAGES_REGEXP + @echo $(LIVE_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/LIVE_PACKAGES + @echo $(LIVE_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/LIVE_PACKAGES_REGEXP + @echo $(MAIN_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/MAIN_PACKAGES + @echo $(MAIN_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/MAIN_PACKAGES_REGEXP + @echo $(STAGE1_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/STAGE1_PACKAGES + @echo $(STAGE1_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/STAGE1_PACKAGES_REGEXP + @echo $(STAGE2_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/STAGE2_PACKAGES + @echo $(STAGE2_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/STAGE2_PACKAGES_REGEXP + @echo $(SYSTEM_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/SYSTEM_PACKAGES + @echo $(SYSTEM_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/SYSTEM_PACKAGES_REGEXP + @echo $(THE_PACKAGES) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/THE_PACKAGES + @echo $(THE_PACKAGES_REGEXP) |sed -e 's/\s\+/\n/g' \ + |sort -u > $(TARGET)/THE_PACKAGES_REGEXP + +check-lists: + @APTBOX=$(BUILDDIR)/.work/pkgbox/aptbox; \ + if [ -d "$$APTBOX" ]; then \ + check-pkg-list --aptbox "$$APTBOX" `find $(TARGET) -type f`; \ + fi + @rm -f $(TARGET)/*_PACKAGES* + +copy-groups: PKGDIR = .. +copy-groups: + @echo $(call groups2lists) \ + | xargs -r -- cp --parents -at $(TARGET) -- + +grep-archdep: + @find $(TARGET) -type f \ + | xargs -r -I __ -- archdep-filter -a "$(ARCH)" -i __ + +grep-metadep: + @APT_CACHE=$(BUILDDIR)/.work/pkgbox/aptbox/apt-cache; \ + if [ -f "$$APT_CACHE" ]; then \ + find $(TARGET) -type f \ + | xargs -r -I __ -- metadep-expander "$$APT_CACHE" __; \ + fi + +# do beforehand as foreach gets expanded before recipe execution +$(TARGET): + @mkdir -p $(TARGET) + +# figure out *_LISTS variables and print them out nicely +debug: + @echo -e $(foreach V, \ + $(filter %_LISTS,$(sort $(.VARIABLES))), \ + $(if $(filter environment% file,$(origin $V)),\ + $(shell echo '\\n"**"' $V: $($V)))) '\n' + +endif diff --git a/pkg.in/lists/README b/pkg.in/lists/README new file mode 100644 index 0000000..9e4602e --- /dev/null +++ b/pkg.in/lists/README @@ -0,0 +1,24 @@ +=== pkg.in/lists === + +Этот каталог содержит списки пакетов, копируемые из метапрофиля +в создаваемый профиль по необходимости (определяется по наличию +имён списков в переменных *_LISTS, см. реализацию в ./Makefile). + +Список .base является особенным (формирует базовую систему, +см. http://www.altlinux.org/Alterator-pkg); он создаётся из +содержимого ряда переменных (см. реализацию). + +Подкаталог tagged содержит тегированные списки, имена которых +удобно получать функцией tags() (см. lib/functions.mk). + +Для выявления дубликатов в составе списков служит `make pkgdups'; +пытаться избежать дублей на 100% скорее бесполезно, но бродячие +устойчивые группы пакетов могут заслуживать выделения отдельным +списком. + +При копировании списков в BUILDROOT происходит их обработка +с применением архитектурнозависимых макросов, см. doc/archdep.txt + +NB: списки пакетов есть смысл выделять в файлы при повторном +использовании либо при заметном объёме, когда перечисление +прямо в конфигурации сильно снижает её читаемость. diff --git a/pkg.in/lists/base b/pkg.in/lists/base new file mode 100644 index 0000000..4b15bed --- /dev/null +++ b/pkg.in/lists/base @@ -0,0 +1 @@ +interactivesystem diff --git a/pkg.in/lists/centaurus/10-alterator b/pkg.in/lists/centaurus/10-alterator new file mode 100644 index 0000000..0a15e8a --- /dev/null +++ b/pkg.in/lists/centaurus/10-alterator @@ -0,0 +1,75 @@ +branding-alt-server-alterator@X86 +branding-alt-server-indexhtml@X86 + +#indexhtml-OfficeServer +avahi-daemon +avahi-tools + +# alterator +installer-feature-pxeboot-stage3@X86 +tftp-server-xinetd@X86 +tftpd +#systemd-services- +###installer-feature-resolver-bind-stage3 + +# SysV Shared Memory defaults (for e.g. PostgreSQL) +installer-feature-shm-defaults-stage3 + +#apache2 defaults +installer-feature-apache2-userdir-stage3 +installer-feature-apache2-indexhtml-stage3 +apache2 +apache2-mod_ssl + +# office server +alterator-fbi + +alterator-root +alterator-users +alterator-notes +alterator-grub +ldap-user-tools +alterator-ca +alterator-firsttime +alterator-ldap-groups +alterator-ldap-users +alterator-logs +alterator-mirror +alterator-net-eth +alterator-net-domain +alterator-net-pppoe +alterator-net-pptp +alterator-net-openvpn +nss-ldapd +alterator-openvpn-server +alterator-squid@X86 +alterator-squidmill@X86 +alterator-updates +alterator-xinetd +alterator-quota + +alterator-update-kernel +alterator-multiseat + +squid + + +xauth +branding-alt-server-alterator@X86 +branding-alt-server-indexhtml@X86 +alterator-fbi +###installer-feature-display-acc-address-stage3 + +alterator-net-bond +alterator-net-bridge +alterator-net-pppoe +alterator-net-pptp +###alterator-netinst@X86 +alterator-net-openvpn +alterator-openvpn-server +alterator-trust +alterator-vsftpd +alterator-xinetd +alterator-ulogd + +alterator-gpupdate diff --git a/pkg.in/lists/centaurus/30-cups b/pkg.in/lists/centaurus/30-cups new file mode 100644 index 0000000..1a4fd4b --- /dev/null +++ b/pkg.in/lists/centaurus/30-cups @@ -0,0 +1,5 @@ +cups +cups-ppd +printer-drivers-base +hplip-hpijs + diff --git a/pkg.in/lists/centaurus/40-pve b/pkg.in/lists/centaurus/40-pve new file mode 100644 index 0000000..b1b8f54 --- /dev/null +++ b/pkg.in/lists/centaurus/40-pve @@ -0,0 +1,14 @@ +pve-qemu-img +pve-qemu-aux +pve-qemu-common +pve-manager +pve-qemu-server +pve-qemu-system +pve-qemu-common +installer-feature-pve +alterator-net-eth +alterator-net-bridge +alterator-root +alterator-fbi +alterator-pve +crmsh diff --git a/pkg.in/lists/centaurus/70-dev b/pkg.in/lists/centaurus/70-dev new file mode 100644 index 0000000..288dbe4 --- /dev/null +++ b/pkg.in/lists/centaurus/70-dev @@ -0,0 +1,4 @@ +kernel-headers-std-def@!E2K +kernel-headers-modules-std-def@!E2K +kernel-headers-elbrus-def@E2K +kernel-headers-modules-elbrus-def@E2K diff --git a/pkg.in/lists/centaurus/90-docs b/pkg.in/lists/centaurus/90-docs new file mode 100644 index 0000000..7ce77a8 --- /dev/null +++ b/pkg.in/lists/centaurus/90-docs @@ -0,0 +1,2 @@ +branding-alt-server-indexhtml@X86 +docs-alt-server diff --git a/pkg.in/lists/centaurus/admc b/pkg.in/lists/centaurus/admc new file mode 100644 index 0000000..0bacbbc --- /dev/null +++ b/pkg.in/lists/centaurus/admc @@ -0,0 +1,8 @@ +admc +alterator-gpupdate +gpupdate +local-policy +admx-basealt +samba-dc-common +admx-firefox +admx-chromium diff --git a/pkg.in/lists/centaurus/backup-server b/pkg.in/lists/centaurus/backup-server new file mode 100644 index 0000000..348ffe6 --- /dev/null +++ b/pkg.in/lists/centaurus/backup-server @@ -0,0 +1,2 @@ +alterator-backup-server +bacula-director-postgresql diff --git a/pkg.in/lists/centaurus/bacula-a b/pkg.in/lists/centaurus/bacula-a new file mode 100644 index 0000000..8706d90 --- /dev/null +++ b/pkg.in/lists/centaurus/bacula-a @@ -0,0 +1 @@ +alterator-bacula diff --git a/pkg.in/lists/centaurus/bacula-client b/pkg.in/lists/centaurus/bacula-client new file mode 100644 index 0000000..da89ba9 --- /dev/null +++ b/pkg.in/lists/centaurus/bacula-client @@ -0,0 +1 @@ +bacula-client diff --git a/pkg.in/lists/centaurus/bacula-client-a b/pkg.in/lists/centaurus/bacula-client-a new file mode 100644 index 0000000..1d63d54 --- /dev/null +++ b/pkg.in/lists/centaurus/bacula-client-a @@ -0,0 +1,2 @@ +bacula-client +alterator-bacula-client diff --git a/pkg.in/lists/centaurus/base b/pkg.in/lists/centaurus/base new file mode 100644 index 0000000..f73d38b --- /dev/null +++ b/pkg.in/lists/centaurus/base @@ -0,0 +1,12 @@ +installer-feature-online-repo +installer-feature-repo-add@!E2K +make-initrd-multipath +lsof +man-pages +system-report +terminfo-extra + +### use/firmware/cpu +make-initrd-ucode@X86 +iucode_tool@X86 +firmware-intel-ucode@X86 diff --git a/pkg.in/lists/centaurus/base-server b/pkg.in/lists/centaurus/base-server new file mode 100644 index 0000000..6cd3bfe --- /dev/null +++ b/pkg.in/lists/centaurus/base-server @@ -0,0 +1,112 @@ +# interactivesystem +anacron +apt +apt-repo +glibc-gconv-modules +glibc-locales +glibc-nss +glibc-utils +interactivesystem +kbd +setarch +shadow-suite +bc +udev +udev-extras +pciutils +su + +make-initrd +make-initrd-lvm +make-initrd-luks +make-initrd-mdadm +make-initrd-multipath + +# network tools +curl +etcnet +dhcpcd +openresolv +hostinfo +iptables +iputils +sysstat +iotop +lftp +mailx +netcat +netlist +nfs-utils +openssh-clients +rsync +traceroute +ntpdate +tcpdump +ifplugd + +# disk tools +eject +hdparm +lvm2 +mdadm +mtools +ntfs-3g +sfdisk +usbutils +xfsprogs +smartmontools +reiserfsprogs +jfsutils +dosfstools +multipath-tools + +# scsi +sdparm +sg3_utils + +# servers +openssh-server +openssh-blacklist +postfix +openntpd +irqbalance +cgroup + +# security +openssl +osec-mailreport +audit + +# debug +strace + +# ? +rp-pppoe-base + +# ldap +nss-ldapd + +# haldbus :( +dbus + +# mc :( +mc +bash-completion + +screen + +lm_sensors3 +update-kernel +pciids + +# compression +cpio +p7zip +tar +unzip +zip +xz + +expect + +system-report diff --git a/pkg.in/lists/centaurus/blogs b/pkg.in/lists/centaurus/blogs new file mode 100644 index 0000000..6f54196 --- /dev/null +++ b/pkg.in/lists/centaurus/blogs @@ -0,0 +1,2 @@ +logjam +qtm diff --git a/pkg.in/lists/centaurus/buildsystem b/pkg.in/lists/centaurus/buildsystem new file mode 100644 index 0000000..c191584 --- /dev/null +++ b/pkg.in/lists/centaurus/buildsystem @@ -0,0 +1,13 @@ +hasher +mkimage +fakeroot +basesystem +rpm-build +sisyphus_check +mkisofs +squashfs-tools +hasher +hasher-priv +time +mkimage +apt-utils diff --git a/pkg.in/lists/centaurus/cluster b/pkg.in/lists/centaurus/cluster new file mode 100644 index 0000000..1971844 --- /dev/null +++ b/pkg.in/lists/centaurus/cluster @@ -0,0 +1,83 @@ +# servers +heartbeat + +# monitoring +sysstat + +#cluster tools: addons +torque-server +torque-client +torque-scheduler +torque-docs +torque-mom + +#slurm +slurm-blcr +slurm-master +slurm-plugins +slurm-slave +slurm-slurmdbd +slurm-sview +slurm-utils +lam +lam-devel + +#xCAT +xCAT +qemu-system +qemu-user +qemu-common +xCAT-server +xCAT-client +xCAT-netboot-alt +xCAT-nbroot-core-x86 +xCAT-nbroot-core-ppc64 +xCAT-nbroot-core-x86_64 +atftp +#xCATsn +mariadb-server + +# ldap support +nss-ldapd +openldap-clients +openldap-doc +openldap-servers +openldap-clients + +# hasher repo reqs +setup +filesystem +rpm +fakeroot +basesystem +rpm-build +kernel-headers-common +sisyphus_check + +# mkimage repo reqs +mkisofs +rsync +glibc-utils +mar +mkisofs +propagator +rsync +squashfsprogs +syslinux + + + +# monitoring: addons +apache2-httpd-prefork +ganglia-web +ganglia-gmetad +ganglia-gmond +libganglia-devel + +# other +ipmitool + +#gcc openMP support files +libgomp4.1 +libgomp4.1-devel + diff --git a/pkg.in/lists/centaurus/cppcheck b/pkg.in/lists/centaurus/cppcheck new file mode 100644 index 0000000..cf8fcf0 --- /dev/null +++ b/pkg.in/lists/centaurus/cppcheck @@ -0,0 +1,2 @@ +cppcheck +cppcheck-gui diff --git a/pkg.in/lists/centaurus/cups b/pkg.in/lists/centaurus/cups new file mode 100644 index 0000000..1a4fd4b --- /dev/null +++ b/pkg.in/lists/centaurus/cups @@ -0,0 +1,5 @@ +cups +cups-ppd +printer-drivers-base +hplip-hpijs + diff --git a/pkg.in/lists/centaurus/dhcp-server-a b/pkg.in/lists/centaurus/dhcp-server-a new file mode 100644 index 0000000..120aacd --- /dev/null +++ b/pkg.in/lists/centaurus/dhcp-server-a @@ -0,0 +1 @@ +alterator-dhcp diff --git a/pkg.in/lists/centaurus/diag-tools b/pkg.in/lists/centaurus/diag-tools new file mode 100644 index 0000000..8971af3 --- /dev/null +++ b/pkg.in/lists/centaurus/diag-tools @@ -0,0 +1,10 @@ +# diagnostic tools (see also disk-server-light.in) +iftop +lft +mtr +nmap +scanssh +tcptraceroute +telnet +whois +minicom diff --git a/pkg.in/lists/centaurus/disk b/pkg.in/lists/centaurus/disk new file mode 100644 index 0000000..1b2ee86 --- /dev/null +++ b/pkg.in/lists/centaurus/disk @@ -0,0 +1,3 @@ +apache2-mod_php7 +postgresql11-server +tftp diff --git a/pkg.in/lists/centaurus/disk-dvd b/pkg.in/lists/centaurus/disk-dvd new file mode 100644 index 0000000..6282594 --- /dev/null +++ b/pkg.in/lists/centaurus/disk-dvd @@ -0,0 +1,97 @@ +# tags: disk, dvd + +#altlinux-release + +1c-preinstall@X86 + +#apache2-mod_.* + +fonts-ttf-tempora + +stardict-slovnyk* + +ImageMagick + +etckeeper + +#kernel +kernel-build-tools +kernel-doc-std + +c-icap +virt-viewer + +b43-fwcutter + +perl-Crypt-Rijndael + +ffmpeg +dvgrab +transcode +jackd + +osec-mailreport +slocate +adjtimex +tunctl +wireless-tools +wodim + +opensc + +alterator-fbi + +# wacom driver and utilities +xorg-drv-wacom + +#bacula +### + +anonftp + +clamav +clamav-db + +ocfs2-tools + +zsh + +glxgears + +rsync +screen +perl-Crypt-Rijndael + +#needed for crypto +lsb@X86 +python3-module-Crypto + +postgresql-jdbc +#postgresql10-1C-server + +mariadb-server + +php7-soap +php7-calendar + +xprobe2 + +libqt4-sql-mysql +libqt4-sql-postgresql + + +libini + +mongo-server@x86_64 +mongo-server@aarch64 +rdesktop +gsynaptics +clamtk + +apcupsd + +urbackup-client +urbackup-server + +alt-csp-cryptopro +inxi hwinfo htop iotop diff --git a/pkg.in/lists/centaurus/disk-server-light b/pkg.in/lists/centaurus/disk-server-light new file mode 100644 index 0000000..8e354bd --- /dev/null +++ b/pkg.in/lists/centaurus/disk-server-light @@ -0,0 +1,196 @@ + +# servers +dhcp-server +popa3d +postfix-cyrus postfix-dovecot postfix-html postfix-ldap postfix-mysql postfix-pcre postfix-pgsql postfix-tls +rsync-server +scanlogd +slocate +smartmontools +vsftpd + +# editor +hexedit +vim-console + +# mailer +mutt + +# devel +bc +ctags +#git-cvs git-email git-svn libsubversion +git-doc@X86 +git-server +findsym +flex +gdb +gear +hasher +help2man +indent +john@X86 +ltrace@X86 +patchutils +srpmcmp +xdelta + +# fs +dosfstools +ntfs-3g +squashfsprogs + +# scsi +sdparm +sg3_utils + +# network tools +arpwatch +iftop +mtr +nmap +pptp-client +scanssh +tcptraceroute +telnet +whois + +# mc :( +mc + +# hasher repo reqs +setup filesystem rpm fakeroot +basesystem rpm-build kernel-headers-common sisyphus_check + +# mkimage repo reqs +mar +mkisofs +propagator +squashfsprogs +syslinux@X86 + +# kernel +kernel-build-tools +kernel-doc-std +###kernel-headers-modules-@KERNEL_MOD@ +###kernel-headers-@KERNEL_MOD@ + +# misc +acct +adjtimex +apt-scripts +autossh +cpuburn@X86 +fhs +mtree +vlock +xauth + +# cert +libzmalloc + +# etc +apt-rsync +bash-completion +bind-doc +cfdisk +dnet +expat +gpm +iptables-ipv6 +isoutils +kbdrate +look +lua5 +nfs-clients +nfs-server +openssh-askpass-common +openssl-doc +pam0_timestamp +pam-doc +pam_userpass-devel +#perl-full +perl-base +perl-devel +perl-pod +perl-threads +perl-unicore +perl-DBM +perl-Storable +perl-PerlIO +python-dev +setproctitle-devel +tcl-devel +terminfo-extra +tftp +tinycdb +xml-utils +zlib-devel-static + +# alexsid@ + +# at@ +screen + + +# force@ +bonnie@X86 +ccze +ddrescue +disktype +dmidecode +dump rmt +hddtemp +iptstate +#spamassassin +lshw +lsof +make-initrd-ucode@X86 +iucode_tool@X86 +firmware-intel-ucode@X86 +#mod_geoip +p0f +sysstat + +# icesik@ +#phpMyAdmin-apache2-php5 phpMyAdmin + +# lakostis@ +#drbd + +# legion@ + +# lioka@ +acl +attr + +# mike@ +#dev MAKEDEV +wget + +# mithraen@ +ppp-pppoe +tcl-syslog + + +# raorn@ +sysfsutils +vim-spell-en vim-spell-ru +#vim-plugin-* +#wireshark + +# solo@ +apache2-devel apache2-manual apache2-suexec + +# vvk@ +ebtables +#lighttpd +#mailgraph-* +minicom +#queuegraph-* +#postgrey-dogwatch +pptpd +redirector-dbl +#seiroswiki + +#1c-tools diff --git a/pkg.in/lists/centaurus/dns-server-a b/pkg.in/lists/centaurus/dns-server-a new file mode 100644 index 0000000..9a1baaa --- /dev/null +++ b/pkg.in/lists/centaurus/dns-server-a @@ -0,0 +1,3 @@ +alterator-bind +installer-feature-resolver-bind-stage3 +openresolv-bind diff --git a/pkg.in/lists/centaurus/domain-client b/pkg.in/lists/centaurus/domain-client new file mode 100644 index 0000000..7ce0f80 --- /dev/null +++ b/pkg.in/lists/centaurus/domain-client @@ -0,0 +1,24 @@ +pam_mount + +samba-client +cifs-utils +keyutils +nfs-clients +autofs +installer-feature-auto-domain +installer-feature-nfs-client-stage3 +installer-feature-start-avahi +installer-feature-network-shares-client-stage3 +###installer-feature-resolver-bind-stage3 +libnss-fallback +libnss-mdns +settime-rfc867 + +krb5-ticket-watcher + +alterator-browser-qt +alterator-standalone + +alterator-auth +alterator-net-shares + diff --git a/pkg.in/lists/centaurus/domain-server b/pkg.in/lists/centaurus/domain-server new file mode 100644 index 0000000..ad74952 --- /dev/null +++ b/pkg.in/lists/centaurus/domain-server @@ -0,0 +1,17 @@ +samba-common +ldap-user-tools +samba +samba-client +alt-domain-server +bind +#systemd-timesyncd- systemd-networkd- +samba-common-tools +samba-libs +alterator-openldap +alterator-kdc + +###installer-feature-resolver-bind-stage3 + +autofs +avahi-daemon +avahi-tools diff --git a/pkg.in/lists/centaurus/emulators b/pkg.in/lists/centaurus/emulators new file mode 100644 index 0000000..c4fcc7e --- /dev/null +++ b/pkg.in/lists/centaurus/emulators @@ -0,0 +1,21 @@ +firefox-esr +firefox-esr-ru +wine@i586 +libwine-gl@i586 +libwine-twain@i586 + +wine-mono@X86 +wine-gecko@X86 + +i586-wine-vanilla@x86_64 +i586-libwine-vanilla-gl@x86_64 +i586-xorg-dri-*@x86_64 +i586-libwine-vanilla-twain@x86_64 +i586-libnss-mdns@x86_64 +i586-libnss-myhostname@x86_64 + +dosbox + +glib2@IA32 + +rtc@E2K diff --git a/pkg.in/lists/centaurus/freeipa-client b/pkg.in/lists/centaurus/freeipa-client new file mode 100644 index 0000000..227e535 --- /dev/null +++ b/pkg.in/lists/centaurus/freeipa-client @@ -0,0 +1,7 @@ +openntpd +task-auth-freeipa +freeipa-client +certmonger +systemd-units +systemd-services +libsss_sudo diff --git a/pkg.in/lists/centaurus/freeipa-server b/pkg.in/lists/centaurus/freeipa-server new file mode 100644 index 0000000..1c52cc9 --- /dev/null +++ b/pkg.in/lists/centaurus/freeipa-server @@ -0,0 +1,5 @@ +freeipa-server-trust-ad +freeipa-server-dns +openntpd +freeipa-client +libsss_sudo diff --git a/pkg.in/lists/centaurus/freenx-server b/pkg.in/lists/centaurus/freenx-server new file mode 100644 index 0000000..1988124 --- /dev/null +++ b/pkg.in/lists/centaurus/freenx-server @@ -0,0 +1 @@ +freenx-server diff --git a/pkg.in/lists/centaurus/ftp-server-a b/pkg.in/lists/centaurus/ftp-server-a new file mode 100644 index 0000000..5e179cf --- /dev/null +++ b/pkg.in/lists/centaurus/ftp-server-a @@ -0,0 +1,2 @@ +alterator-vsftpd +alterator-services diff --git a/pkg.in/lists/centaurus/ganeti b/pkg.in/lists/centaurus/ganeti new file mode 100644 index 0000000..9113fa4 --- /dev/null +++ b/pkg.in/lists/centaurus/ganeti @@ -0,0 +1 @@ +^ganeti* diff --git a/pkg.in/lists/centaurus/gnome-office b/pkg.in/lists/centaurus/gnome-office new file mode 100644 index 0000000..55566c1 --- /dev/null +++ b/pkg.in/lists/centaurus/gnome-office @@ -0,0 +1,8 @@ +# tags: gnome, office, dvd + +dia +LibreOffice +LibreOffice-langpack-ru +#libreoffice-langpack-tt +LibreOffice-langpack-uk +LibreOffice-gnome diff --git a/pkg.in/lists/centaurus/gnome-peer-to-peer b/pkg.in/lists/centaurus/gnome-peer-to-peer new file mode 100644 index 0000000..d3e00e3 --- /dev/null +++ b/pkg.in/lists/centaurus/gnome-peer-to-peer @@ -0,0 +1,4 @@ +# tags: gnome, p2p + +transmission-gtk +eiskaltdcpp-gtk diff --git a/pkg.in/lists/centaurus/graphics-editing b/pkg.in/lists/centaurus/graphics-editing new file mode 100644 index 0000000..e7703ac --- /dev/null +++ b/pkg.in/lists/centaurus/graphics-editing @@ -0,0 +1,2 @@ +gimp2 +inkscape diff --git a/pkg.in/lists/centaurus/gtk-dictionary b/pkg.in/lists/centaurus/gtk-dictionary new file mode 100644 index 0000000..f6653f4 --- /dev/null +++ b/pkg.in/lists/centaurus/gtk-dictionary @@ -0,0 +1,10 @@ +stardict-gtk +stardict-mueller7 +stardict-slovnyk_be-en +stardict-slovnyk_en-be +stardict-slovnyk_en-ru +stardict-slovnyk_en-uk +stardict-slovnyk_ru-en +stardict-slovnyk_uk-en +stardict-wn + diff --git a/pkg.in/lists/centaurus/ipmi b/pkg.in/lists/centaurus/ipmi new file mode 100644 index 0000000..ca79190 --- /dev/null +++ b/pkg.in/lists/centaurus/ipmi @@ -0,0 +1,4 @@ +freeipmi-bmc-watchdog +ipmitool +freeipmi-doc +freeipmi diff --git a/pkg.in/lists/centaurus/live b/pkg.in/lists/centaurus/live new file mode 100644 index 0000000..d850e1e --- /dev/null +++ b/pkg.in/lists/centaurus/live @@ -0,0 +1,10 @@ +git-core +xdg-user-dirs + +livecd-gnome-nowarn-space + +livecd-install +installer-feature-desktop-suspend-stage2@X86 + +synaptic +synaptic-usermode diff --git a/pkg.in/lists/centaurus/mail-server-a b/pkg.in/lists/centaurus/mail-server-a new file mode 100644 index 0000000..1332607 --- /dev/null +++ b/pkg.in/lists/centaurus/mail-server-a @@ -0,0 +1 @@ +alterator-postfix-dovecot diff --git a/pkg.in/lists/centaurus/mate b/pkg.in/lists/centaurus/mate new file mode 100644 index 0000000..f9e31b6 --- /dev/null +++ b/pkg.in/lists/centaurus/mate @@ -0,0 +1,207 @@ +pcmciautils@X86 +pm-utils@X86 +pmount +pam_mount +cifs-utils +pam_ccreds +libsss_nss_idmap + +virtualbox-guest-additions@X86 + +samba-client +nfs-clients +autofs +installer-feature-nfs-client-stage3 +installer-feature-start-avahi +installer-feature-network-shares-client-stage3 +libnss-mdns + +# FIXME: i18n, someday should be checked/subst'ed +man-pages-ru +#packages-info-i18n-ru + +synaptic +synaptic-usermode +krb5-ticket-watcher +arj +pinfo +wget + +#printing +cups +printer-drivers-base +hplip-hpijs +hplip-sane + +alsa-tools + +cpufreq-simple@X86 +pam-limits-desktop +pam_mount + +samba-client +cifs-utils +keyutils +nfs-clients +autofs +installer-feature-auto-domain +installer-feature-nfs-client-stage3 +installer-feature-start-avahi +installer-feature-network-shares-client-stage3 +###installer-feature-resolver-bind-stage3 +libnss-fallback +libnss-mdns +settime-rfc867 + +krb5-ticket-watcher + +alterator-browser-qt +alterator-standalone + +alterator-auth +alterator-net-shares + +# tags: alterator, desktop +branding-alt-server-alterator@X86 +branding-alt-server-indexhtml@X86 + +alterator-browser-qt +alterator-standalone + +alterator-net-pppoe +alterator-net-pptp +alterator-net-openvpn +alterator-nsswitch +alterator-packages +alterator-pkg +alterator-profile +alterator-proxy +alterator-datetime +alterator-users +alterator-auth +alterator-net-shares +alterator-gpupdate + +# tags: mate, base + +firefox-esr +#mate-minimal +zenity +mate-polkit +mate-settings-daemon +mate-session +mate-panel +mate-control-center +mate-desktop +mate-window-manager +yelp +mate-user-guide +mate-menus +mate-system-monitor +gucharmap +mate-calc +mate-file-manager +mate-terminal +mate-file-manager-archiver +mate-text-editor +mate-icon-theme +mate-themes +libgtk2-engine-adwaita +mate-screensaver +#mate-default +gnome-keyring +seahorse +gvfs-backends +gvfs-utils +fuse-gvfs +mate-document-viewer +mate-document-viewer-thumbnailer +mate-document-viewer-caja +mate-document-viewer-djvu +mate-document-viewer-pixbuf +mate-document-viewer-xps +mate-applets +mate-utils +mate-system-log +mate-screenshot +mate-dictionary +mate-search-tool +mate-disk-usage-analyzer +dconf-editor +mate-notification-daemon +mate-media +gst-plugins-good1.0 +mate-image-viewer +parcellite +mate-menu-editor +mate-power-manager +blueberry +mate-file-manager-sendto +mate-file-manager-open-terminal +mate-file-manager-image-converter +mate-file-manager-extensions +mate-file-manager-wallpaper +mate-backgrounds + + +totem-video-thumbnailer@X86 +installer-feature-samba-usershares-stage2 +gtk2-ssh-askpass +installer-feature-centaurus-keyring +beesu +branding-alt-server-graphics@X86 +lightdm-gtk-greeter +lightdm +dconf +#ConsoleKit +#ConsoleKit-x11 + +mate-terminal +pulseaudio-daemon +pulseaudio-bluez +bluez +alsa-plugins-pulse +python3-module-smbc +system-config-printer +system-config-printer-udev +installer-feature-xdg-user-dirs +xdg-user-dirs-gtk +pulseaudio-daemon +alsa-plugins-pulse +rpminstall +apt-repo +dhcp-client +NetworkManager +NetworkManager-applet-gtk +NetworkManager-openvpn-gtk +NetworkManager-pptp-gtk +NetworkManager-vpnc-gtk +# strongswan (for NM-l2tp) conflicts with pki-tools (for freeipa-server) +#NetworkManager-l2tp-gtk +NetworkManager-sstp-gtk@X86 +usb-modeswitch +autofs +avahi-daemon +avahi-tools + +setup-mate-nocomposite@E2K +avahi-daemon +avahi-tools + +alterator-root +alterator-users +alterator-notes +alterator-grub +alterator-firsttime +alterator-logs +alterator-mirror +alterator-net-eth +alterator-net-domain +alterator-net-pppoe +alterator-net-pptp +alterator-net-openvpn +alterator-updates +alterator-quota + +alterator-net-bond +alterator-net-bridge diff --git a/pkg.in/lists/centaurus/mediawiki b/pkg.in/lists/centaurus/mediawiki new file mode 100644 index 0000000..09d8abe --- /dev/null +++ b/pkg.in/lists/centaurus/mediawiki @@ -0,0 +1,5 @@ +mariadb-server +mediawiki-mysql +mediawiki +mediawiki-ldap +installed-db-office-server-mediawiki diff --git a/pkg.in/lists/centaurus/monitoring b/pkg.in/lists/centaurus/monitoring new file mode 100644 index 0000000..d282cc8 --- /dev/null +++ b/pkg.in/lists/centaurus/monitoring @@ -0,0 +1,16 @@ +monit + +# pull in subpackages which shouldn't toss +# lots of extra dependencies into an image +collectd +collectd-apache +collectd-bind +collectd-cgi +collectd-curl +collectd-dbi +collectd-ipmi +collectd-libvirt@X86 +collectd-mysql +collectd-nginx +collectd-ping +collectd-sensors diff --git a/pkg.in/lists/centaurus/netinst b/pkg.in/lists/centaurus/netinst new file mode 100644 index 0000000..b720935 --- /dev/null +++ b/pkg.in/lists/centaurus/netinst @@ -0,0 +1,4 @@ +alterator-netinst@X86 +tftp-server +ahttpd +tftpd diff --git a/pkg.in/lists/centaurus/nm b/pkg.in/lists/centaurus/nm new file mode 100644 index 0000000..ed89b99 --- /dev/null +++ b/pkg.in/lists/centaurus/nm @@ -0,0 +1,9 @@ +dhcp-client +NetworkManager +NetworkManager-applet-gtk +NetworkManager-openvpn-gtk +NetworkManager-pptp-gtk +NetworkManager-vpnc-gtk +NetworkManager-l2tp-gtk +NetworkManager-sstp-gtk +usb-modeswitch diff --git a/pkg.in/lists/centaurus/nm-daemon b/pkg.in/lists/centaurus/nm-daemon new file mode 100644 index 0000000..fd3ac61 --- /dev/null +++ b/pkg.in/lists/centaurus/nm-daemon @@ -0,0 +1 @@ +NetworkManager-daemon diff --git a/pkg.in/lists/centaurus/openstack-block b/pkg.in/lists/centaurus/openstack-block new file mode 100644 index 0000000..d81f49e --- /dev/null +++ b/pkg.in/lists/centaurus/openstack-block @@ -0,0 +1,6 @@ +openntpd +python-module-MySQLdb +lvm2 +openstack-cinder +qemu-img +python-module-rtslib diff --git a/pkg.in/lists/centaurus/openstack-compute b/pkg.in/lists/centaurus/openstack-compute new file mode 100644 index 0000000..34f050a --- /dev/null +++ b/pkg.in/lists/centaurus/openstack-compute @@ -0,0 +1,4 @@ +openntpd +python-module-MySQLdb +openstack-nova-compute +openstack-neutron-openvswitch diff --git a/pkg.in/lists/centaurus/openstack-controller b/pkg.in/lists/centaurus/openstack-controller new file mode 100644 index 0000000..d96fa58 --- /dev/null +++ b/pkg.in/lists/centaurus/openstack-controller @@ -0,0 +1,37 @@ +openntpd +python-module-MySQLdb +openstack-keystone +python-module-keystoneclient +openstack-glance +python-module-glanceclient +openstack-nova-api +openstack-nova-cert +openstack-nova-conductor +openstack-nova-console +openstack-nova-novncproxy +openstack-nova-scheduler +python-module-novaclient +openstack-neutron +python-module-neutronclient +memcached +python-module-memcached +apache2-mod_wsgi +openstack-dashboard +qemu-img +openstack-cinder +python-module-swiftclient +openstack-swift +openstack-heat-api +openstack-heat-engine +openstack-heat-api-cfn +openstack-ceilometer-api +openstack-ceilometer-collector +openstack-ceilometer-notification +openstack-ceilometer-central +openstack-ceilometer-alarm +python-module-ceilometerclient +mongo +mongo-server-mongod +python-module-troveclient +mariadb-server +rabbitmq-server diff --git a/pkg.in/lists/centaurus/openstack-network b/pkg.in/lists/centaurus/openstack-network new file mode 100644 index 0000000..03a99ab --- /dev/null +++ b/pkg.in/lists/centaurus/openstack-network @@ -0,0 +1,7 @@ +openntpd +python-module-MySQLdb +openstack-neutron +openstack-neutron-openvswitch +openstack-ceilometer-compute +python-module-ceilometerclient +python-module-pecan diff --git a/pkg.in/lists/centaurus/openstack-storage b/pkg.in/lists/centaurus/openstack-storage new file mode 100644 index 0000000..5e385c2 --- /dev/null +++ b/pkg.in/lists/centaurus/openstack-storage @@ -0,0 +1,7 @@ +openntpd +python-module-MySQLdb +openstack-swift-account +openstack-swift-container +openstack-swift-object +xfsprogs +xinetd diff --git a/pkg.in/lists/centaurus/openuds b/pkg.in/lists/centaurus/openuds new file mode 100644 index 0000000..69c9dfc --- /dev/null +++ b/pkg.in/lists/centaurus/openuds @@ -0,0 +1 @@ +openuds-server-nginx diff --git a/pkg.in/lists/centaurus/openuds-tunnel b/pkg.in/lists/centaurus/openuds-tunnel new file mode 100644 index 0000000..6a7cb39 --- /dev/null +++ b/pkg.in/lists/centaurus/openuds-tunnel @@ -0,0 +1 @@ +openuds-tunnel diff --git a/pkg.in/lists/centaurus/owncloud b/pkg.in/lists/centaurus/owncloud new file mode 100644 index 0000000..c52cffb --- /dev/null +++ b/pkg.in/lists/centaurus/owncloud @@ -0,0 +1,5 @@ +mariadb-server +nextcloud +nextcloud-apache2 + +installed-db-office-server-nextcloud diff --git a/pkg.in/lists/centaurus/pidgin b/pkg.in/lists/centaurus/pidgin new file mode 100644 index 0000000..05af7b0 --- /dev/null +++ b/pkg.in/lists/centaurus/pidgin @@ -0,0 +1 @@ +pidgin diff --git a/pkg.in/lists/centaurus/publishing b/pkg.in/lists/centaurus/publishing new file mode 100644 index 0000000..9414f83 --- /dev/null +++ b/pkg.in/lists/centaurus/publishing @@ -0,0 +1 @@ +scribus diff --git a/pkg.in/lists/centaurus/remmina b/pkg.in/lists/centaurus/remmina new file mode 100644 index 0000000..d6643af --- /dev/null +++ b/pkg.in/lists/centaurus/remmina @@ -0,0 +1,2 @@ +remmina +remmina-plugins diff --git a/pkg.in/lists/centaurus/samba b/pkg.in/lists/centaurus/samba new file mode 100644 index 0000000..ce0f1f1 --- /dev/null +++ b/pkg.in/lists/centaurus/samba @@ -0,0 +1,3 @@ +samba +ldap-user-tools +samba-common-tools diff --git a/pkg.in/lists/centaurus/sambaDC b/pkg.in/lists/centaurus/sambaDC new file mode 100644 index 0000000..a72f495 --- /dev/null +++ b/pkg.in/lists/centaurus/sambaDC @@ -0,0 +1,12 @@ +samba-dc +ldb-tools +krb5-kinit +bind-utils +ldap-user-tools +task-auth-ad-sssd +alterator-gpupdate +gpupdate +local-policy +admx-basealt +admx-firefox +admx-chromium diff --git a/pkg.in/lists/centaurus/scanning b/pkg.in/lists/centaurus/scanning new file mode 100644 index 0000000..6e2af4b --- /dev/null +++ b/pkg.in/lists/centaurus/scanning @@ -0,0 +1,7 @@ +firefox-esr +xsane +#yagf +gimagereader-qt5 +tesseract +tesseract-langpack-ru +tesseract-langpack-en diff --git a/pkg.in/lists/centaurus/sogo b/pkg.in/lists/centaurus/sogo new file mode 100644 index 0000000..f82d755 --- /dev/null +++ b/pkg.in/lists/centaurus/sogo @@ -0,0 +1 @@ +task-sogo3 diff --git a/pkg.in/lists/centaurus/sound-editing b/pkg.in/lists/centaurus/sound-editing new file mode 100644 index 0000000..1b3b1c4 --- /dev/null +++ b/pkg.in/lists/centaurus/sound-editing @@ -0,0 +1,2 @@ +audacity + diff --git a/pkg.in/lists/centaurus/systemd-networkd b/pkg.in/lists/centaurus/systemd-networkd new file mode 100644 index 0000000..9ca2fd0 --- /dev/null +++ b/pkg.in/lists/centaurus/systemd-networkd @@ -0,0 +1 @@ +systemd-networkd diff --git a/pkg.in/lists/centaurus/v12n-server b/pkg.in/lists/centaurus/v12n-server new file mode 100644 index 0000000..bdfef57 --- /dev/null +++ b/pkg.in/lists/centaurus/v12n-server @@ -0,0 +1,7 @@ +qemu-kvm +qemu-img +libvirt +libvirt-kvm +libvirt-daemon-driver-lxc +lxc +dnsmasq diff --git a/pkg.in/lists/centaurus/virt-manager b/pkg.in/lists/centaurus/virt-manager new file mode 100644 index 0000000..3cb1f5f --- /dev/null +++ b/pkg.in/lists/centaurus/virt-manager @@ -0,0 +1,5 @@ +virt-manager +polkit +gtk2-ssh-askpass +libvirt +qemu-system diff --git a/pkg.in/lists/centaurus/vlc b/pkg.in/lists/centaurus/vlc new file mode 100644 index 0000000..fe15416 --- /dev/null +++ b/pkg.in/lists/centaurus/vlc @@ -0,0 +1 @@ +vlc diff --git a/pkg.in/lists/centaurus/xorg b/pkg.in/lists/centaurus/xorg new file mode 100644 index 0000000..70efbe4 --- /dev/null +++ b/pkg.in/lists/centaurus/xorg @@ -0,0 +1,61 @@ +xorg-drv-intel@X86 +xorg-drv-video +alterator-x11 +alterator-backend-x11 +xorg-server +xorg-drv-ati@X86 +xorg-drv-cirrus@X86 +xorg-drv-evdev +xorg-drv-fbdev +xorg-drv-joystick +xorg-drv-mga@X86 +xorg-drv-nouveau@X86 +xorg-drv-modesetting +xorg-drv-vboxvideo@X86 +xorg-drv-synaptics +xorg-drv-libinput +# for those who need these +xorg-drv-vesa +xorg-drv-qxl@X86 +xorg-drv-keyboard +xorg-drv-mouse +xorg-drv-vboxvideo@X86 +xorg-drv-vmware@X86 +xorg-drv-smi@E2K +xorg-drv-void +^xorg-dri-* +xauth +xorg-utils +^xorg-extensions* +xorg-drv-wacom +xinit +xterm +wm-select + +#fonts +fonts-ttf-liberation +fonts-ttf-dejavu +fonts-bitmap-terminus +fonts-otf-stix +fonts-ttf-google-droid* +x-cursor-theme-jimmac + +menu-icons-default + +branding-alt-server-graphics +branding-alt-server-bootloader@X86 +branding-alt-server-bootsplash@X86 +make-initrd-plymouth@X86 + +firefox-esr +firefox-esr-ru +firefox-esr-uk + +spice-vdagent +xorg-drv-qxl + +kernel-modules-drm-std-def@!E2K +kernel-modules-drm-nouveau-std-def@!E2K +kernel-modules-v4l-std-def@!E2K + +cpio diff --git a/pkg.in/lists/centaurus/zero b/pkg.in/lists/centaurus/zero new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/cluster/corosync_pacemaker b/pkg.in/lists/cluster/corosync_pacemaker new file mode 100644 index 0000000..291ccc5 --- /dev/null +++ b/pkg.in/lists/cluster/corosync_pacemaker @@ -0,0 +1,2 @@ +corosync +pacemaker diff --git a/pkg.in/lists/container/docker b/pkg.in/lists/container/docker new file mode 100644 index 0000000..182e8d6 --- /dev/null +++ b/pkg.in/lists/container/docker @@ -0,0 +1,2 @@ +docker-ce +cni-plugins diff --git a/pkg.in/lists/container/kubernetes-master b/pkg.in/lists/container/kubernetes-master new file mode 100644 index 0000000..02a3a2c --- /dev/null +++ b/pkg.in/lists/container/kubernetes-master @@ -0,0 +1,3 @@ +kubernetes-kubeadm +kubernetes-master +cri-tools diff --git a/pkg.in/lists/container/kubernetes-node b/pkg.in/lists/container/kubernetes-node new file mode 100644 index 0000000..23c1e60 --- /dev/null +++ b/pkg.in/lists/container/kubernetes-node @@ -0,0 +1,3 @@ +kubernetes-kubeadm +kubernetes-node +cri-tools diff --git a/pkg.in/lists/container/lxd b/pkg.in/lists/container/lxd new file mode 100644 index 0000000..d759cd4 --- /dev/null +++ b/pkg.in/lists/container/lxd @@ -0,0 +1,8 @@ +# LXC/LXD +lxc +#lxc-devel +lxcfs +lxd + +# For storage creation +python3 diff --git a/pkg.in/lists/container/openvz b/pkg.in/lists/container/openvz new file mode 100644 index 0000000..6e57a05 --- /dev/null +++ b/pkg.in/lists/container/openvz @@ -0,0 +1,5 @@ +kernel-image-ovz-el7 +vzctl +vztt +vzstat +htop diff --git a/pkg.in/lists/container/podman b/pkg.in/lists/container/podman new file mode 100644 index 0000000..d1074a7 --- /dev/null +++ b/pkg.in/lists/container/podman @@ -0,0 +1,3 @@ +podman +buildah +crtools diff --git a/pkg.in/lists/container/rkt b/pkg.in/lists/container/rkt new file mode 100644 index 0000000..23bf9a5 --- /dev/null +++ b/pkg.in/lists/container/rkt @@ -0,0 +1,2 @@ +rkt + diff --git a/pkg.in/lists/dev/builder b/pkg.in/lists/dev/builder new file mode 100644 index 0000000..b3881e1 --- /dev/null +++ b/pkg.in/lists/dev/builder @@ -0,0 +1,12 @@ +# base+builder +rpm-build +mkimage +git-core + +# some builder+extra bits +fdisk +gear +mkimage-profiles +strace +vim-console +zsh diff --git a/pkg.in/lists/domain-client b/pkg.in/lists/domain-client new file mode 100644 index 0000000..09c8ab6 --- /dev/null +++ b/pkg.in/lists/domain-client @@ -0,0 +1,21 @@ +pam-config +pam_mount +pam_ccreds + +samba-client +cifs-utils +keyutils +nfs-clients +autofs +libnss-fallback +libnss-mdns + +settime-rfc867 + +#krb5-ticket-watcher + +alterator-browser-qt +alterator-standalone + +alterator-auth +alterator-net-shares diff --git a/pkg.in/lists/domain-client-i b/pkg.in/lists/domain-client-i new file mode 100644 index 0000000..48f3995 --- /dev/null +++ b/pkg.in/lists/domain-client-i @@ -0,0 +1,5 @@ +installer-feature-auto-domain +installer-feature-nfs-client-stage3 +installer-feature-start-avahi +installer-feature-network-shares-client-stage3 +installer-feature-weak-passwd diff --git a/pkg.in/lists/education/base b/pkg.in/lists/education/base new file mode 100644 index 0000000..7743de1 --- /dev/null +++ b/pkg.in/lists/education/base @@ -0,0 +1,17 @@ +task-edu + +# WINE +glibc-gconv-modules@i586 +wine-programs@i586 +libwine-gl@i586 +libwine-twain@i586 +wine@i586 +i586-glibc-gconv-modules@x86_64 +i586-libwine-gl@x86_64 +i586-libwine-twain@x86_64 +i586-wine@x86_64 +libnss-fallback +wine-gecko@X86 +wine-mono@X86 +winetricks@X86 +wineexec@X86 diff --git a/pkg.in/lists/education/gradeschool b/pkg.in/lists/education/gradeschool new file mode 100644 index 0000000..68bc647 --- /dev/null +++ b/pkg.in/lists/education/gradeschool @@ -0,0 +1 @@ +task-edu-gradeschool diff --git a/pkg.in/lists/education/highschool b/pkg.in/lists/education/highschool new file mode 100644 index 0000000..0357bb1 --- /dev/null +++ b/pkg.in/lists/education/highschool @@ -0,0 +1 @@ +task-edu-highschool diff --git a/pkg.in/lists/education/kde5 b/pkg.in/lists/education/kde5 new file mode 100644 index 0000000..2fd147b --- /dev/null +++ b/pkg.in/lists/education/kde5 @@ -0,0 +1 @@ +task-edu-kde5@!E2K diff --git a/pkg.in/lists/education/kdesc b/pkg.in/lists/education/kdesc new file mode 100644 index 0000000..25fcb70 --- /dev/null +++ b/pkg.in/lists/education/kdesc @@ -0,0 +1,24 @@ +kde5-edu@!E2K +kde5-connect + +branding-alt-education-kde-settings + +# not all of kde5{,-edu} is available on e2k +kde5-cantor +kde5-dragon +kde5-filelight +kde5-k3b +kde5-kanagram +kde5-kbruch +kde5-kcalc +kde5-kgeography +kde5-khangman +kde5-kig +kde5-kolourpaint +kde5-kturtle +kde5-kwordquiz +kde5-marble +#kde5-minuet +kde5-profile +kde5-skanlite +kde5-spectacle diff --git a/pkg.in/lists/education/misc b/pkg.in/lists/education/misc new file mode 100644 index 0000000..da24000 --- /dev/null +++ b/pkg.in/lists/education/misc @@ -0,0 +1,309 @@ +# Multimedia +vlc-maxi +simplescreenrecorder + +# better optimized for 8C +mplayer@E2K +libva-driver-intel@X86 +libva-intel-media-driver@x86_64 +vulkan-amdgpu@X86 + +# Graphics +ristretto +simple-scan +sane +sane-frontends +atril-gtk +atril-gtk-djvu +atril-gtk-pixbuf +atril-gtk-xps +shutter + +# Games +gnome-games-gnomine@!E2K +gnome-games-gnotravex@!E2K +gnome-games-gnotski@!E2K +gnome-games-mahjongg +gnome-games-sol@!E2K + +# Dictionary +goldendict@!E2K +stardict@E2K +dict-mueller7-utf8 +aspell-ru-lebedev +hunspell-ru-lebedev + +# Fonts +fonts-ttf-google-droid-.* +fonts-ttf-ubuntu-font-family +fonts-ttf-liberation +fonts-ttf-dejavu +fonts-ttf-gost +fonts-ttf-xorg +fonts-ttf-PTAstra +fonts-ttf-XO +fonts-ttf-google-noto-sans +fonts-ttf-google-crosextra-caladea +fonts-ttf-google-crosextra-carlito +fonts-ttf-wqy-zenhei +fonts-ttf-unifont + +# Alterator +alterator-browser-qt +alterator-fbi +alterator-standalone +alterator-notes + +alterator-auth +alterator-control +alterator-datetime +alterator-gpupdate +alterator-groups +alterator-grub +alterator-logs +alterator-net-eth +alterator-net-general +alterator-net-openvpn +alterator-net-pppoe +alterator-net-pptp +alterator-net-wifi +alterator-osec +alterator-packages +alterator-pkg +alterator-ports-access +alterator-printers +alterator-root +alterator-services +alterator-sslkey +alterator-sysconfig +alterator-update-kernel +alterator-updates +alterator-users +alterator-x11 +alterator-xkb + +# Authentication and computer management via group policy +task-auth-ad-sssd +task-auth-freeipa +task-auth-ldap-sssd +gpupdate +adp +settime-rfc867 +x11spice@x86_64 +x11spice@aarch64 +pam_pkcs11 +gvfs-shares +shared-desktop-icons + +# Base utilities +tzdata +vim-console +rsync +strace +anacron +os-prober +make-initrd-lvm +shadow-change +b43-fwcutter +pam-limits-desktop +bash-completion +mc-full +inxi +hwinfo@X86 +attr +rfkill +fvwm- +fvwm-full- +apt-repo +eepm +apt-rsync +apt-updatecache +xdg-user-dirs +vconsole-setup-kludge +systemd-analyze +fwupd@x86_64 + +# Other utulities and beautifications +color-prompt-and-man +vlock +perl-Crypt-Rijndael +osec-mailreport +adjtimex +opensc +zsh +screen +apcupsd +disable-usb-autosuspend + +# GUI utilities +gparted +nvidia-xconfig@X86 +nvidia-xconfig@aarch64 +mate-file-archiver +unzip +unrar +unarj +p7zip-standalone +dbus-tools-gui +xfburn +mate-calc +beesu +zenity +mate-search-tool +libmate-desktop +yelp +altmediawriter +system-config-printer +system-config-printer-udev +xkill + +# Package managenment +synaptic +synaptic-usermode +gnome-software@!riscv64 +gnome-software-disable-updates@!riscv64 +rpminstall +appinstall + +# Menu +altlinux-freedesktop-menu-shallow-menu +altlinux-freedesktop-menu-mate-like-menu@!riscv64 +altlinux-freedesktop-menu-icon-theme-default + +# Fallback themes +gnome-icon-theme +gnome-icon-theme-symbolic +gnome-themes-extra-data +x-cursor-theme-jimmac + +# Keyrings and pinentry +gnome-keyring +gcr +pinentry-gnome3 +pinentry-qt5- +gtk2-ssh-askpass + +# Hardware and computer peripherals support +alt-rootfs-installer +cups +cups-filters +cups-pdf +avahi-daemon +blueberry +update-kernel +printer-drivers-base@!riscv64 +udev-extras +fdisk +gdisk +parted +partclone +ntfs-3g +xorg-drv-wacom +ocfs2-tools +cpufreq-simple@X86 +hplip-PPDs +hplip-sane +udev-rule-generator-cdrom +xorg-drv-synaptics +xorg-conf-synaptics +xinput +xorg-drv-libinput +usbutils + +# Network utilities +iproute2 +net-tools +openssh-server +openssh-clients +dhcpcd +telnet +cifs-utils +hostname-hook-hosts +libnss-mdns +i586-glibc-nss@x86_64 +i586-libnss-mdns@x86_64 +i586-libnss-myhostname@x86_64 +autossh +ntpdate +keyutils +krb5-kinit +openresolv-bind +ipset +lftp +links2 + +# Multimedia support +pulseaudio-daemon +pulseaudio-utils +pavucontrol +alsa-plugins-pulse +gst-plugins-base1.0 +gst-plugins-good1.0 +gst-plugins-bad1.0 +gst-plugins-ugly1.0 +alsa-set-initial-options +dvgrab +mjpegtools +transcode +jackd +test-audio +wodim +glxgears +glxinfo + +# Additional filesystem support +fuse-exfat + +# Communications +pidgin +pidgin-libnotify + +# Other stuff +htop +avplay +cabextract +cheese +libsqlite +lm_sensors3-utils +man-pages-ru +media-player-info +nano +quick-usb-formatter +rpm-build +setbranding +system-report +zbar +audit +vixie-cron +screenfetch +debhelper +xdg-user-dirs-gtk +pv + +# New stuff +xfce4-whiskermenu-plugin +menulibre +mugshot +xfce-polkit +screenkey + +# Search +recoll-extras +perl-Image-ExifTool +antiword +unrtf +wv +python3-module-pychm +python3-module-lxml +aspell +aspell-ru-rk +xpdf-utils + +# Append all modules from xscreensaver +desktop-screensaver-modules-xscreensaver +desktop-screensaver-modules-xscreensaver-gl +systemd-settings-enable-showstatus +systemd-settings-enable-log-to-tty12 + +# Other architecture-depended utilities +task-edu-tools diff --git a/pkg.in/lists/education/preschool b/pkg.in/lists/education/preschool new file mode 100644 index 0000000..569f650 --- /dev/null +++ b/pkg.in/lists/education/preschool @@ -0,0 +1 @@ +task-edu-preschool diff --git a/pkg.in/lists/education/secondary_vocational b/pkg.in/lists/education/secondary_vocational new file mode 100644 index 0000000..9d2cccf --- /dev/null +++ b/pkg.in/lists/education/secondary_vocational @@ -0,0 +1 @@ +task-edu-secondary-vocational diff --git a/pkg.in/lists/education/server-apps-edu b/pkg.in/lists/education/server-apps-edu new file mode 100644 index 0000000..94c2df5 --- /dev/null +++ b/pkg.in/lists/education/server-apps-edu @@ -0,0 +1,13 @@ +deploy +task-edu-server-apps +installer-feature-repo-add +installer-feature-online-repo +installer-feature-resolver-bind-stage3 +installer-feature-apache2-indexhtml-stage3 +installer-feature-apache2-userdir-stage3 +installer-feature-network-shares-client-stage3 +installer-feature-nfs-client-stage3 +installer-feature-nfs-server-stage3 +installer-feature-pxeboot-stage3@X86 +installer-feature-shm-defaults-stage3 +installer-feature-start-avahi diff --git a/pkg.in/lists/education/teacher b/pkg.in/lists/education/teacher new file mode 100644 index 0000000..50f5b69 --- /dev/null +++ b/pkg.in/lists/education/teacher @@ -0,0 +1 @@ +task-edu-teacher diff --git a/pkg.in/lists/education/university b/pkg.in/lists/education/university new file mode 100644 index 0000000..6308f32 --- /dev/null +++ b/pkg.in/lists/education/university @@ -0,0 +1 @@ +task-edu-university diff --git a/pkg.in/lists/education/video-conferencing b/pkg.in/lists/education/video-conferencing new file mode 100644 index 0000000..72ee256 --- /dev/null +++ b/pkg.in/lists/education/video-conferencing @@ -0,0 +1 @@ +task-edu-video-conferencing@!E2K diff --git a/pkg.in/lists/engineering/2d-cad b/pkg.in/lists/engineering/2d-cad new file mode 100644 index 0000000..af59386 --- /dev/null +++ b/pkg.in/lists/engineering/2d-cad @@ -0,0 +1,2 @@ +# 2D CAD (Computer Aided Design) +engineering-2D-CAD@META diff --git a/pkg.in/lists/engineering/3d-cad b/pkg.in/lists/engineering/3d-cad new file mode 100644 index 0000000..b3e32e2 --- /dev/null +++ b/pkg.in/lists/engineering/3d-cad @@ -0,0 +1,2 @@ +# 3D CAD (Computer Aided Design) +engineering-3D-CAD@META diff --git a/pkg.in/lists/engineering/3d-printer b/pkg.in/lists/engineering/3d-printer new file mode 100644 index 0000000..abee271 --- /dev/null +++ b/pkg.in/lists/engineering/3d-printer @@ -0,0 +1,2 @@ +# 3D Printer Software +engineering-3D-printing@META diff --git a/pkg.in/lists/engineering/apcs b/pkg.in/lists/engineering/apcs new file mode 100644 index 0000000..d185175 --- /dev/null +++ b/pkg.in/lists/engineering/apcs @@ -0,0 +1,2 @@ +# Advanced Process Control Software +engineering-APCS@META diff --git a/pkg.in/lists/engineering/cam b/pkg.in/lists/engineering/cam new file mode 100644 index 0000000..cf25a20 --- /dev/null +++ b/pkg.in/lists/engineering/cam @@ -0,0 +1,3 @@ +# CAM (Computer-aided manufacturing) +# and G-Code generators +engineering-CAM@META diff --git a/pkg.in/lists/engineering/cnc b/pkg.in/lists/engineering/cnc new file mode 100644 index 0000000..9ed06aa --- /dev/null +++ b/pkg.in/lists/engineering/cnc @@ -0,0 +1,2 @@ +# CNC (Computer Numerical Control) +engineering-CNC@META diff --git a/pkg.in/lists/engineering/eda b/pkg.in/lists/engineering/eda new file mode 100644 index 0000000..9e059fd --- /dev/null +++ b/pkg.in/lists/engineering/eda @@ -0,0 +1,2 @@ +# EDA (Electronic Design Automation) +engineering-EDA@META diff --git a/pkg.in/lists/engineering/misc b/pkg.in/lists/engineering/misc new file mode 100644 index 0000000..16800c8 --- /dev/null +++ b/pkg.in/lists/engineering/misc @@ -0,0 +1 @@ +engineering-misc@META diff --git a/pkg.in/lists/gnome-p2p b/pkg.in/lists/gnome-p2p new file mode 100644 index 0000000..5ba6d3b --- /dev/null +++ b/pkg.in/lists/gnome-p2p @@ -0,0 +1,2 @@ +transmission-gtk +eiskaltdcpp-gtk diff --git a/pkg.in/lists/grub b/pkg.in/lists/grub new file mode 100644 index 0000000..3ee4c6e --- /dev/null +++ b/pkg.in/lists/grub @@ -0,0 +1,6 @@ +grub-pc@X86 +grub-efi@X86 +grub-efi@aarch64 +grub-ieee1275@ppc64le +# should be R: in grub-ieee1275 +powerpc-utils@ppc64le diff --git a/pkg.in/lists/homeros/homeros b/pkg.in/lists/homeros/homeros new file mode 100644 index 0000000..5da84b8 --- /dev/null +++ b/pkg.in/lists/homeros/homeros @@ -0,0 +1,2 @@ +homeros-core +homeros-live-data diff --git a/pkg.in/lists/homeros/tools b/pkg.in/lists/homeros/tools new file mode 100644 index 0000000..374d0f0 --- /dev/null +++ b/pkg.in/lists/homeros/tools @@ -0,0 +1,6 @@ +su +sudo +net-tools +openssh-server +amixer +alsa-utils diff --git a/pkg.in/lists/homeros/yasr b/pkg.in/lists/homeros/yasr new file mode 100644 index 0000000..fe04bb3 --- /dev/null +++ b/pkg.in/lists/homeros/yasr @@ -0,0 +1 @@ +yasr diff --git a/pkg.in/lists/jitsi-meet b/pkg.in/lists/jitsi-meet new file mode 100644 index 0000000..f3717a1 --- /dev/null +++ b/pkg.in/lists/jitsi-meet @@ -0,0 +1,6 @@ +prosody +jitsi-meet-prosody +jitsi-meet-web +jitsi-meet-web-config +jicofo@X86 +jitsi-videobridge diff --git a/pkg.in/lists/kworkstation/additional-base b/pkg.in/lists/kworkstation/additional-base new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/kworkstation/additional-oem b/pkg.in/lists/kworkstation/additional-oem new file mode 100644 index 0000000..202d96e --- /dev/null +++ b/pkg.in/lists/kworkstation/additional-oem @@ -0,0 +1 @@ +alterator-setup-kworkstation diff --git a/pkg.in/lists/kworkstation/clients-ad b/pkg.in/lists/kworkstation/clients-ad new file mode 100644 index 0000000..f0e4a5a --- /dev/null +++ b/pkg.in/lists/kworkstation/clients-ad @@ -0,0 +1,8 @@ +libwbclient +task-auth-ad-sssd +kde5-autofs-shares +krb5-ticket-watcher +usbguard +usbguard-dbus +task-auth-ldap-sssd +alterator-gpupdate diff --git a/pkg.in/lists/kworkstation/clients-backup b/pkg.in/lists/kworkstation/clients-backup new file mode 100644 index 0000000..3ef3372 --- /dev/null +++ b/pkg.in/lists/kworkstation/clients-backup @@ -0,0 +1,3 @@ +bacula11-client +#alterator-bacula-client +timeshift diff --git a/pkg.in/lists/kworkstation/clients-base b/pkg.in/lists/kworkstation/clients-base new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/kworkstation/clients-cloud b/pkg.in/lists/kworkstation/clients-cloud new file mode 100644 index 0000000..93bb9e6 --- /dev/null +++ b/pkg.in/lists/kworkstation/clients-cloud @@ -0,0 +1,2 @@ +nextcloud-client-kde5 +#seafile-client diff --git a/pkg.in/lists/kworkstation/clients-ipa b/pkg.in/lists/kworkstation/clients-ipa new file mode 100644 index 0000000..5482058 --- /dev/null +++ b/pkg.in/lists/kworkstation/clients-ipa @@ -0,0 +1,9 @@ +task-auth-freeipa +installer-feature-sudo-enable-by-default-stage3 +#installer-feature-sudo-enable-by-default-kde5su-stage3 +kde5-autofs-shares +krb5-ticket-watcher +usbguard +usbguard-dbus +task-auth-ldap-sssd +alterator-gpupdate diff --git a/pkg.in/lists/kworkstation/clients-monitor b/pkg.in/lists/kworkstation/clients-monitor new file mode 100644 index 0000000..1aaca62 --- /dev/null +++ b/pkg.in/lists/kworkstation/clients-monitor @@ -0,0 +1,2 @@ +zabbix-agent +alterator-zabbix-agent diff --git a/pkg.in/lists/kworkstation/disk-install b/pkg.in/lists/kworkstation/disk-install new file mode 100644 index 0000000..1d85725 --- /dev/null +++ b/pkg.in/lists/kworkstation/disk-install @@ -0,0 +1,39 @@ +# R7 Office +libGConf +fonts-ttf-liberation +# CryptoPRO +cryptopro-preinstall-full@X86 +cryptopro-preinstall@X86 +gnupg-pkcs11-scd +libpkcs11-helper +gnupg2 +# 1C +1c-preinstall@X86 +# FSIN +openssh-gostcrypto +openssh-clients-gostcrypto openssh-askpass-common-gostcrypto +openssh-server-gostcrypto openssh-server-control-gostcrypto +openssh-common-gostcrypto +# +openvpn-gostcrypto openvpn-plugins-gostcrypto alterator-openvpn-server +# +alterator-openvpn-server alterator-ca +# +freeipa-server freeipa-server-dns +# +alt-customize-branding +task-samba-dc bind-utils tdb-utils installer-feature-sambaDC-stage3 +# +alterator-kiosk +# +# KDE +#kde5-maxi +kde5-kfloppy +#kde5-telepathy +# MISC +exim +admc +vsftpd +anonftp +vlock +telnet diff --git a/pkg.in/lists/kworkstation/edu b/pkg.in/lists/kworkstation/edu new file mode 100644 index 0000000..0222563 --- /dev/null +++ b/pkg.in/lists/kworkstation/edu @@ -0,0 +1,7 @@ +kde5-edu@META +kumir +stellarium +gcompris-qt +tuxpaint +tuxpaint-stamps +tuxmath diff --git a/pkg.in/lists/kworkstation/emulators b/pkg.in/lists/kworkstation/emulators new file mode 100644 index 0000000..80d8be9 --- /dev/null +++ b/pkg.in/lists/kworkstation/emulators @@ -0,0 +1,12 @@ +libnss-mdns@IA32 +libnss-myhostname@IA32 +xorg-dri-*@IA32 + +wine-mono +wine-gecko +winetricks +wine@IA32 +libwine-gl@IA32 +libwine-twain@IA32 + +virtualbox@x86_64 diff --git a/pkg.in/lists/kworkstation/games b/pkg.in/lists/kworkstation/games new file mode 100644 index 0000000..023b820 --- /dev/null +++ b/pkg.in/lists/kworkstation/games @@ -0,0 +1,19 @@ +#kde5-games@META +kde5-kmines +kde5-lskat +kde5-kpat +kde5-kmahjongg + +knights +#frozen-bubble +#freeciv +kcheckers +#lbreakout2 +#openpref +#pingus +#supertux2 +#tuxkart +##xmoto + +libtxc_dxtn@IA32 +steam@IA32 diff --git a/pkg.in/lists/kworkstation/graphics-editing b/pkg.in/lists/kworkstation/graphics-editing new file mode 100644 index 0000000..04a13a7 --- /dev/null +++ b/pkg.in/lists/kworkstation/graphics-editing @@ -0,0 +1,19 @@ +gimp +#gimp-help-ru +#gimp-help-en +gimp-plugin-gutenprint +#gimp-plugin-separateplus +gimp-script-ISONoiseReduction +gimp-plugin-ufraw +#darktable +inkscape +#hugin +zint + +kde5-digikam +kde5-kipi-plugins + +# 3D +blender +#blender-i18n +blender-doc diff --git a/pkg.in/lists/kworkstation/kde5 b/pkg.in/lists/kworkstation/kde5 new file mode 100644 index 0000000..4a64a63 --- /dev/null +++ b/pkg.in/lists/kworkstation/kde5 @@ -0,0 +1,82 @@ + +pam0_kwallet5 + +catdoc +gdb +fuse-cryfs +libnss-mdns + +alt-csp-cryptopro +pinentry-qt5 +quick-usb-formatter +altmediawriter +# +gparted +# +kde5-ksystemlog +kde5-kcm-grub2 +synaptic-kde +#plasma5-discover-maxi +plasma5-discover +plasma5-discover-flatpak +plasma5-discover-fwupd +apt-indicator +openssl-gost-engine +kde5-kreslimit +kde5-file-actions-gost + +#altlinux-freedesktop-menu-nested-menu +alt-desktop-wallpapers + +# #browser chromium-gost# +#chromium-ublock_origin + +qmmp1 +qmmp-skins + +samba +# system-config-samba + +kde5-messenger-client-mix +kde5-connect + +isomaster +kde5-k3b +#fbreader +#kde5-basket +#kmymoney +#kmymoney-i18n +#kde5-plasma-yawp + +qstardict +stardict-mueller7 +stardict-slovnyk_en-ru +stardict-slovnyk_ru-en +#stardict-slovnyk_en-uk +#stardict-slovnyk_uk-en +#stardict-wn + +hunspell-ru-lebedev +#hunspell-uk + +#LibreOffice-still +LibreOffice-still-mimetypes +LibreOffice-still-integrated +LibreOffice-still-kde5 +LibreOffice-still-langpack-ru +#LibreOffice-still-langpack-tt +#LibreOffice-still-langpack-uk +#^docs-ooo_infra_.* +LibreOffice-plugin-altcsp + +kamoso + +kde5-ktorrent +#eiskaltdcpp-qt +#kde5-kio-gdrive + +# 3dparty +#skype-preinstall@IA32 + +kde5@META +kde5-big@META diff --git a/pkg.in/lists/kworkstation/kde5-base b/pkg.in/lists/kworkstation/kde5-base new file mode 100644 index 0000000..15f14fd --- /dev/null +++ b/pkg.in/lists/kworkstation/kde5-base @@ -0,0 +1,132 @@ + +firmware-alsa-sof + +gst-plugins-good1.0-qt5 +pavucontrol + +alt-kworkstation-addon +alterator-standalone +alterator-auth +alterator-control +#alterator-controlpp +alterator-datetime +state-change-notify-postfix +alterator-fbi +alterator-groups +alterator-limits +alterator-logs +alterator-multiseat +alterator-net-iptables +alterator-net-openvpn +alterator-net-routing +alterator-net-shares +alterator-notes +alterator-ports-access +alterator-quota +alterator-secsetup +alterator-services +alterator-sysconfig +alterator-updates +alterator-update-kernel +alterator-x11 +alterator-xkb +alterator-zram-swap + +wireless-tools +rfkill +wpa_supplicant +ppp-pppoe + +apt-https +apt-rsync +apt-repo +arj +audit +avahi-daemon +bash-completion +bc +bind-utils +cpufreq-simple +cifs-utils +curl +ddcprobe@X86 +dmidecode +easy-rsa +eepm +eepm-yum +etcnet-full +fdisk +gpm +hdparm +inxi +ipcalc +jfsutils +libproxy-kde +libva-utils +lsb-release +lsblk +lshw +mc-full +make-initrd-lvm +make-initrd-ucode@X86 +man-pages-ru +mtr +mcedit-editor +net-tools +netcat +netlist +nfs-clients +pciutils +pcmciautils +pinfo +pm-utils +pulseaudio-bluez +quota +rpminstall +rng-tools +screen +smartmontools +strace +sudo +system-report +systemd-analyze +tcpdump +udev-android +udev-extras +udev-rule-generator-cdrom +udev-rules-ioschedulers +update-kernel +usb-modeswitch +usbutils +#userpasswd +vim-console +wget +xinput +xfsprogs +xorg-conf-synaptics +xorg-conf-libinput-touchpad + +ocl-nvidia +libva-driver-intel@X86 +libva-intel-media-driver@x86_64 +#libva-driver-vdpau +#libvdpau-va-gl +vulkan-amdgpu@X86 + +chromium-gost + +openvpn-gostcrypto +kde5-network-manager-etcnet +openssh openssh-clients openssh-askpass-common openssh-server openssh-common openssh-server-control +kde5-network-manager-nm +kde5-video-player-smplayer +kde5-audio-player-qmmp +kde5-mini@META +kde5-small@META +plasma5-kscreen + +alt-app-starter + +# GTK2/GTK3 theme +gtk3-theme-breeze +gtk2-theme-breeze diff --git a/pkg.in/lists/kworkstation/live-rescue b/pkg.in/lists/kworkstation/live-rescue new file mode 100644 index 0000000..56b4972 --- /dev/null +++ b/pkg.in/lists/kworkstation/live-rescue @@ -0,0 +1,20 @@ + +kde5-plasma-applet-places-widget + +kamoso +plasma5-kinfocenter +plasma5-bluedevil +kde5-khelpcenter +kde5-filelight +kde5-spectacle +inxi +glmark2 +glxgears +glxinfo +efivar +sos +system-report +startup-rescue +qt-fsarchiver +vulkan-tools +f2fs-tools diff --git a/pkg.in/lists/kworkstation/printing b/pkg.in/lists/kworkstation/printing new file mode 100644 index 0000000..98d3dc6 --- /dev/null +++ b/pkg.in/lists/kworkstation/printing @@ -0,0 +1,15 @@ +kde5-printing@META + +cups +cups-ppd +samba-client-cups +printer-drivers-base +printer-drivers-X11 +hplip-hpijs +hplip-PPDs +printer-testpages + +bluez-cups + +system-config-printer-lib +#system-config-printer diff --git a/pkg.in/lists/kworkstation/publishing b/pkg.in/lists/kworkstation/publishing new file mode 100644 index 0000000..7989b0a --- /dev/null +++ b/pkg.in/lists/kworkstation/publishing @@ -0,0 +1,2 @@ +scribus +scribus-doc diff --git a/pkg.in/lists/kworkstation/remote-desktop b/pkg.in/lists/kworkstation/remote-desktop new file mode 100644 index 0000000..8e17c33 --- /dev/null +++ b/pkg.in/lists/kworkstation/remote-desktop @@ -0,0 +1,4 @@ +kde5-krfb +kde5-krdc + +rdesktop diff --git a/pkg.in/lists/kworkstation/scanning b/pkg.in/lists/kworkstation/scanning new file mode 100644 index 0000000..00793ed --- /dev/null +++ b/pkg.in/lists/kworkstation/scanning @@ -0,0 +1,9 @@ +kde5-scanning@META + +tesseract-langpack-en +tesseract-langpack-ru +#tesseract-langpack-uk +gimagereader-qt5 +hplip-sane +libsane-gphoto2 +sane-airscan diff --git a/pkg.in/lists/kworkstation/sound-editing b/pkg.in/lists/kworkstation/sound-editing new file mode 100644 index 0000000..e2e6543 --- /dev/null +++ b/pkg.in/lists/kworkstation/sound-editing @@ -0,0 +1,5 @@ +kde5-soundkonverter +kde5-kid3 +flacon + +kde5-kwave diff --git a/pkg.in/lists/kworkstation/video-editing b/pkg.in/lists/kworkstation/video-editing new file mode 100644 index 0000000..c880acf --- /dev/null +++ b/pkg.in/lists/kworkstation/video-editing @@ -0,0 +1,4 @@ +kdenlive + +avidemux-qt +simplescreenrecorder diff --git a/pkg.in/lists/lilo b/pkg.in/lists/lilo new file mode 100644 index 0000000..cb03d3c --- /dev/null +++ b/pkg.in/lists/lilo @@ -0,0 +1,2 @@ +lilo@X86 +elilo@x86_64 diff --git a/pkg.in/lists/logging/rsyslog b/pkg.in/lists/logging/rsyslog new file mode 100644 index 0000000..3b56fcb --- /dev/null +++ b/pkg.in/lists/logging/rsyslog @@ -0,0 +1 @@ +rsyslog diff --git a/pkg.in/lists/logging/rsyslog-classic b/pkg.in/lists/logging/rsyslog-classic new file mode 100644 index 0000000..2ce6c4f --- /dev/null +++ b/pkg.in/lists/logging/rsyslog-classic @@ -0,0 +1 @@ +rsyslog-classic diff --git a/pkg.in/lists/logging/rsyslog-elasticsearch b/pkg.in/lists/logging/rsyslog-elasticsearch new file mode 100644 index 0000000..8b448ef --- /dev/null +++ b/pkg.in/lists/logging/rsyslog-elasticsearch @@ -0,0 +1 @@ +rsyslog-elasticsearch diff --git a/pkg.in/lists/logging/rsyslog-mysql b/pkg.in/lists/logging/rsyslog-mysql new file mode 100644 index 0000000..e69d54a --- /dev/null +++ b/pkg.in/lists/logging/rsyslog-mysql @@ -0,0 +1 @@ +rsyslog-mysql diff --git a/pkg.in/lists/logging/rsyslog-pgsql b/pkg.in/lists/logging/rsyslog-pgsql new file mode 100644 index 0000000..a7efb69 --- /dev/null +++ b/pkg.in/lists/logging/rsyslog-pgsql @@ -0,0 +1 @@ +rsyslog-pgsql diff --git a/pkg.in/lists/logging/systemd-journal-remote b/pkg.in/lists/logging/systemd-journal-remote new file mode 100644 index 0000000..40e088d --- /dev/null +++ b/pkg.in/lists/logging/systemd-journal-remote @@ -0,0 +1 @@ +systemd-journal-remote diff --git a/pkg.in/lists/ltsp b/pkg.in/lists/ltsp new file mode 100644 index 0000000..a5b5261 --- /dev/null +++ b/pkg.in/lists/ltsp @@ -0,0 +1,29 @@ +ltsp-server +ltsp-server-basic +openssh-server + +alterator-ltsconf +alterator-standalone + +alsa-plugins +alsa-plugins-pulse +mplayer + +syslinux +mkisofs + +iftop + +#kde-settings-kded-no_media_popup + +#docs-install_ltsp +#docs-issue-desktop_personal + +installer-feature-ltsp-stage3 + +# Set available online repository and some useful utilites from /sbin +installer-feature-online-repo + +#### +vim-console +cpio diff --git a/pkg.in/lists/ltsp-client b/pkg.in/lists/ltsp-client new file mode 100644 index 0000000..844766c --- /dev/null +++ b/pkg.in/lists/ltsp-client @@ -0,0 +1,9 @@ +ltsp-client +ltsp-client-full +ltsp-client-nxsession +# ouch! +mc + +kernel-image-led-ws +kernel-modules-drm-led-ws +kernel-modules-alsa-led-ws diff --git a/pkg.in/lists/monitoring/collectd b/pkg.in/lists/monitoring/collectd new file mode 100644 index 0000000..f1b31eb --- /dev/null +++ b/pkg.in/lists/monitoring/collectd @@ -0,0 +1,2 @@ +collectd-virt +collectd-ipmi diff --git a/pkg.in/lists/monitoring/grafana b/pkg.in/lists/monitoring/grafana new file mode 100644 index 0000000..59081c9 --- /dev/null +++ b/pkg.in/lists/monitoring/grafana @@ -0,0 +1 @@ +grafana diff --git a/pkg.in/lists/monitoring/influxdb b/pkg.in/lists/monitoring/influxdb new file mode 100644 index 0000000..30775bb --- /dev/null +++ b/pkg.in/lists/monitoring/influxdb @@ -0,0 +1 @@ +influxdb diff --git a/pkg.in/lists/monitoring/monit b/pkg.in/lists/monitoring/monit new file mode 100644 index 0000000..43d127c --- /dev/null +++ b/pkg.in/lists/monitoring/monit @@ -0,0 +1,2 @@ +monit + diff --git a/pkg.in/lists/monitoring/nagios-nrpe b/pkg.in/lists/monitoring/nagios-nrpe new file mode 100644 index 0000000..b4393c5 --- /dev/null +++ b/pkg.in/lists/monitoring/nagios-nrpe @@ -0,0 +1 @@ +nagios-nrpe diff --git a/pkg.in/lists/monitoring/prometheus b/pkg.in/lists/monitoring/prometheus new file mode 100644 index 0000000..fb3d48d --- /dev/null +++ b/pkg.in/lists/monitoring/prometheus @@ -0,0 +1,2 @@ +prometheus +prometheus-alertmanager diff --git a/pkg.in/lists/monitoring/prometheus-node_exporter b/pkg.in/lists/monitoring/prometheus-node_exporter new file mode 100644 index 0000000..827e38b --- /dev/null +++ b/pkg.in/lists/monitoring/prometheus-node_exporter @@ -0,0 +1,4 @@ +prometheus +prometheus-node_exporter +prometheus-blackbox_exporter + diff --git a/pkg.in/lists/monitoring/telegraf b/pkg.in/lists/monitoring/telegraf new file mode 100644 index 0000000..e6b8775 --- /dev/null +++ b/pkg.in/lists/monitoring/telegraf @@ -0,0 +1 @@ +telegraf diff --git a/pkg.in/lists/monitoring/zabbix-agent b/pkg.in/lists/monitoring/zabbix-agent new file mode 100644 index 0000000..1a0f2bc --- /dev/null +++ b/pkg.in/lists/monitoring/zabbix-agent @@ -0,0 +1,3 @@ +zabbix-agent +alterator-zabbix-agent +zabbix-agent-sudo diff --git a/pkg.in/lists/network/apache2 b/pkg.in/lists/network/apache2 new file mode 100644 index 0000000..e98cb79 --- /dev/null +++ b/pkg.in/lists/network/apache2 @@ -0,0 +1,7 @@ +apache2 +apache2-httpd-prefork +apache2-mod_http2 +apache2-mod_auth_gssapi +apache2-mod_ssl +apache2-mod_ldap +apache2-mod_wsgi-py3 diff --git a/pkg.in/lists/network/bird b/pkg.in/lists/network/bird new file mode 100644 index 0000000..22cb7d6 --- /dev/null +++ b/pkg.in/lists/network/bird @@ -0,0 +1,2 @@ +bird +bird6 diff --git a/pkg.in/lists/network/dhcp b/pkg.in/lists/network/dhcp new file mode 100644 index 0000000..00e2bed --- /dev/null +++ b/pkg.in/lists/network/dhcp @@ -0,0 +1 @@ +dhcp-server diff --git a/pkg.in/lists/network/dns b/pkg.in/lists/network/dns new file mode 100644 index 0000000..c0b6b7b --- /dev/null +++ b/pkg.in/lists/network/dns @@ -0,0 +1,3 @@ +bind +bind-control +bind-utils diff --git a/pkg.in/lists/network/haproxy b/pkg.in/lists/network/haproxy new file mode 100644 index 0000000..6968bad --- /dev/null +++ b/pkg.in/lists/network/haproxy @@ -0,0 +1 @@ +haproxy diff --git a/pkg.in/lists/network/keepalived b/pkg.in/lists/network/keepalived new file mode 100644 index 0000000..641b12f --- /dev/null +++ b/pkg.in/lists/network/keepalived @@ -0,0 +1 @@ +keepalived diff --git a/pkg.in/lists/network/nginx b/pkg.in/lists/network/nginx new file mode 100644 index 0000000..b06dcb7 --- /dev/null +++ b/pkg.in/lists/network/nginx @@ -0,0 +1,4 @@ +nginx +nginx-webapps +nginx-webapps-ssl +nginx-spnego diff --git a/pkg.in/lists/network/openvswitch b/pkg.in/lists/network/openvswitch new file mode 100644 index 0000000..64796f7 --- /dev/null +++ b/pkg.in/lists/network/openvswitch @@ -0,0 +1 @@ +openvswitch diff --git a/pkg.in/lists/opencl b/pkg.in/lists/opencl new file mode 100644 index 0000000..97eb0e1 --- /dev/null +++ b/pkg.in/lists/opencl @@ -0,0 +1,4 @@ +opencl-filesystem +libMesaOpenCL +libclc +clinfo diff --git a/pkg.in/lists/openscada b/pkg.in/lists/openscada new file mode 100644 index 0000000..76b08a2 --- /dev/null +++ b/pkg.in/lists/openscada @@ -0,0 +1,2 @@ +openscada-Model.AGLKS +openscada-Model.Boiler diff --git a/pkg.in/lists/openssh b/pkg.in/lists/openssh new file mode 100644 index 0000000..6593203 --- /dev/null +++ b/pkg.in/lists/openssh @@ -0,0 +1,5 @@ +openssh +openssh-server +openssh-server-control +openssh-blacklist +openssh-clients diff --git a/pkg.in/lists/osec b/pkg.in/lists/osec new file mode 100644 index 0000000..a33a6c8 --- /dev/null +++ b/pkg.in/lists/osec @@ -0,0 +1,3 @@ +osec +osec-cronjob +osec-mailreport diff --git a/pkg.in/lists/realtime/tests b/pkg.in/lists/realtime/tests new file mode 100644 index 0000000..836a585 --- /dev/null +++ b/pkg.in/lists/realtime/tests @@ -0,0 +1,4 @@ +jitterdebugger +linux-rt-tests +rtcheck +#rteval diff --git a/pkg.in/lists/remote-access b/pkg.in/lists/remote-access new file mode 100644 index 0000000..b8da7be --- /dev/null +++ b/pkg.in/lists/remote-access @@ -0,0 +1,6 @@ +connector +freerdp +remmina +remmina-plugins +x2goclient +virt-viewer diff --git a/pkg.in/lists/robotics/reprap b/pkg.in/lists/robotics/reprap new file mode 100644 index 0000000..27acb61 --- /dev/null +++ b/pkg.in/lists/robotics/reprap @@ -0,0 +1,11 @@ +#repetierhost +repraptor +slic3r +#skeinforge +CuraEngine +meshlab +GLC_Player +blender +free-cad +openscad +arduino diff --git a/pkg.in/lists/robotics/umki b/pkg.in/lists/robotics/umki new file mode 100644 index 0000000..039ed97 --- /dev/null +++ b/pkg.in/lists/robotics/umki @@ -0,0 +1,6 @@ +#umki +kumir2 +gnuplot +scratch-full +#kdeedu-kturtle +gedit diff --git a/pkg.in/lists/server-base b/pkg.in/lists/server-base new file mode 100644 index 0000000..fb97817 --- /dev/null +++ b/pkg.in/lists/server-base @@ -0,0 +1,7 @@ +interactivesystem +vim-console + +sfdisk +mdadm + +screen diff --git a/pkg.in/lists/server/apache2 b/pkg.in/lists/server/apache2 new file mode 100644 index 0000000..7f96a2c --- /dev/null +++ b/pkg.in/lists/server/apache2 @@ -0,0 +1,2 @@ +apache2 +apache2-httpd-prefork diff --git a/pkg.in/lists/server/dhcp b/pkg.in/lists/server/dhcp new file mode 100644 index 0000000..00e2bed --- /dev/null +++ b/pkg.in/lists/server/dhcp @@ -0,0 +1 @@ +dhcp-server diff --git a/pkg.in/lists/server/dns b/pkg.in/lists/server/dns new file mode 100644 index 0000000..c0b6b7b --- /dev/null +++ b/pkg.in/lists/server/dns @@ -0,0 +1,3 @@ +bind +bind-control +bind-utils diff --git a/pkg.in/lists/server/ftp b/pkg.in/lists/server/ftp new file mode 100644 index 0000000..6d98aa5 --- /dev/null +++ b/pkg.in/lists/server/ftp @@ -0,0 +1,2 @@ +vsftpd +xinetd diff --git a/pkg.in/lists/server/kvm b/pkg.in/lists/server/kvm new file mode 100644 index 0000000..a335cf9 --- /dev/null +++ b/pkg.in/lists/server/kvm @@ -0,0 +1,2 @@ +qemu-kvm +libvirt diff --git a/pkg.in/lists/server/mail b/pkg.in/lists/server/mail new file mode 100644 index 0000000..d51821c --- /dev/null +++ b/pkg.in/lists/server/mail @@ -0,0 +1,3 @@ +dovecot +postfix-dovecot +postfix-tls diff --git a/pkg.in/lists/server/mariadb b/pkg.in/lists/server/mariadb new file mode 100644 index 0000000..94bda5a --- /dev/null +++ b/pkg.in/lists/server/mariadb @@ -0,0 +1,6 @@ +mariadb-backup +mariadb-bench +mariadb-client +mariadb-server +perl-DBD-mysql +python3-module-mysqlclient diff --git a/pkg.in/lists/server/mysql b/pkg.in/lists/server/mysql new file mode 100644 index 0000000..b3aa30f --- /dev/null +++ b/pkg.in/lists/server/mysql @@ -0,0 +1,5 @@ +MySQL-bench +MySQL-client +MySQL-server +MySQL-server-perl +python-module-MySQLdb diff --git a/pkg.in/lists/server/nginx b/pkg.in/lists/server/nginx new file mode 100644 index 0000000..039f7b6 --- /dev/null +++ b/pkg.in/lists/server/nginx @@ -0,0 +1,2 @@ +nginx +nginx-perl diff --git a/pkg.in/lists/server/pgsql b/pkg.in/lists/server/pgsql new file mode 100644 index 0000000..6a1b77a --- /dev/null +++ b/pkg.in/lists/server/pgsql @@ -0,0 +1,2 @@ +postgresql11-server +postgresql11-contrib diff --git a/pkg.in/lists/server/pgsql-1C b/pkg.in/lists/server/pgsql-1C new file mode 100644 index 0000000..5e67a67 --- /dev/null +++ b/pkg.in/lists/server/pgsql-1C @@ -0,0 +1 @@ +postgresql10-1C-server diff --git a/pkg.in/lists/server/php7 b/pkg.in/lists/server/php7 new file mode 100644 index 0000000..fd3f3ac --- /dev/null +++ b/pkg.in/lists/server/php7 @@ -0,0 +1,24 @@ +apache2-mod_php7 +php7 +php7-curl +php7-dba +php7-dom +php7-exif +php7-fileinfo +php7-fpm-fcgi +php7-gd2 +php7-imap +php7-ldap +php7-mbstring +php7-mcrypt +php7-memcached +php7-mysqlnd +php7-pdo +php7-pdo_mysql +php7-pdo_odbc +php7-pdo_pgsql +php7-pdo_sqlite +php7-pgsql +php7-xmlrpc +php7-xsl +php7-zip diff --git a/pkg.in/lists/server/rsync b/pkg.in/lists/server/rsync new file mode 100644 index 0000000..62ffaad --- /dev/null +++ b/pkg.in/lists/server/rsync @@ -0,0 +1,2 @@ +rsync-server +xinetd diff --git a/pkg.in/lists/server/sambaDC b/pkg.in/lists/server/sambaDC new file mode 100644 index 0000000..a40e4e3 --- /dev/null +++ b/pkg.in/lists/server/sambaDC @@ -0,0 +1,5 @@ +task-samba-dc +bind-utils +tdb-utils + +installer-feature-sambaDC-stage3 diff --git a/pkg.in/lists/server/sqlite b/pkg.in/lists/server/sqlite new file mode 100644 index 0000000..8b2f60c --- /dev/null +++ b/pkg.in/lists/server/sqlite @@ -0,0 +1 @@ +sqlite3 diff --git a/pkg.in/lists/singleboard-tools b/pkg.in/lists/singleboard-tools new file mode 100644 index 0000000..028a332 --- /dev/null +++ b/pkg.in/lists/singleboard-tools @@ -0,0 +1,2 @@ +i2c-tools +spi-tools diff --git a/pkg.in/lists/slinux/browser-chromium b/pkg.in/lists/slinux/browser-chromium new file mode 100644 index 0000000..8faa0e9 --- /dev/null +++ b/pkg.in/lists/slinux/browser-chromium @@ -0,0 +1 @@ +chromium@!riscv64 diff --git a/pkg.in/lists/slinux/browser-firefox b/pkg.in/lists/slinux/browser-firefox new file mode 100644 index 0000000..cb40d4b --- /dev/null +++ b/pkg.in/lists/slinux/browser-firefox @@ -0,0 +1,7 @@ +firefox-esr + +# h.264 for firefox-esr 52.9.0-alt1.E2K.8 (ffmpeg 3) +libavcodec57@E2K +libavdevice57@E2K +libavfilter6@E2K +libavformat57@E2K diff --git a/pkg.in/lists/slinux/dropbox b/pkg.in/lists/slinux/dropbox new file mode 100644 index 0000000..d0a363d --- /dev/null +++ b/pkg.in/lists/slinux/dropbox @@ -0,0 +1,3 @@ +dropbox +thunar-dropbox-plugin +python3-module-gpg diff --git a/pkg.in/lists/slinux/emulators-full b/pkg.in/lists/slinux/emulators-full new file mode 100644 index 0000000..d362c1e --- /dev/null +++ b/pkg.in/lists/slinux/emulators-full @@ -0,0 +1,16 @@ +wine@i586 +libwine-gl@i586 +libwine-twain@i586 +i586-wine@x86_64 +i586-libwine-gl@x86_64 +i586-libwine-twain@x86_64 +wine-mono@X86 +winetricks@X86 +# For winetricks +zenity@X86 + +i586-xorg-dri-.*@x86_64 +cabextract@X86 +dosbox +#kernel-modules-virtualbox-@KERNEL@ +virtualbox@x86_64 diff --git a/pkg.in/lists/slinux/games b/pkg.in/lists/slinux/games new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/slinux/games-base b/pkg.in/lists/slinux/games-base new file mode 100644 index 0000000..9fdac68 --- /dev/null +++ b/pkg.in/lists/slinux/games-base @@ -0,0 +1,20 @@ +# tags: xfce, games, cd + +# gnome-games + +#gnome-games-glines +#gnome-games-gnect +#gnome-games-gnibbles +#gnome-games-gnobots +#gnome-games-quadrapassel +gnome-games-mines +gnome-games-tetravex +gnome-games-klotski +#gnome-games-gtali +#gnome-games-iagno +gnome-games-mahjongg +#gnome-games-swell-foop +gnome-games-aisleriot@!E2K +# ALT bug #28998 +#gnome-games-sudoku +gnome-games-chess diff --git a/pkg.in/lists/slinux/games-full b/pkg.in/lists/slinux/games-full new file mode 100644 index 0000000..10c95ae --- /dev/null +++ b/pkg.in/lists/slinux/games-full @@ -0,0 +1,16 @@ +freeciv +#wesnoth +#ppracer +#sauerbraten +#flare-game + +Ri-li +openttd +#astromenace +PokerTH@!E2K + +#celestia-gnome + +#gcompris-qt +#gcompris-qt-voices-en +#gcompris-qt-voices-ru diff --git a/pkg.in/lists/slinux/games-full-steam b/pkg.in/lists/slinux/games-full-steam new file mode 100644 index 0000000..8a2cc2b --- /dev/null +++ b/pkg.in/lists/slinux/games-full-steam @@ -0,0 +1,2 @@ +steam@i586 +i586-steam@x86_64 diff --git a/pkg.in/lists/slinux/graphics b/pkg.in/lists/slinux/graphics new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/slinux/graphics-base b/pkg.in/lists/slinux/graphics-base new file mode 100644 index 0000000..5a86508 --- /dev/null +++ b/pkg.in/lists/slinux/graphics-base @@ -0,0 +1,17 @@ +gimp@!riscv64 +gimp-plugin-gutenprint@!riscv64 +xsane-gimp2@!riscv64 +# inkscape +gphoto2 +sane +hplip-sane@!riscv64 +xsane@!riscv64 + +ristretto +gimagereader-qt5@!riscv64 +tesseract +tesseract-langpack-ru +tesseract-langpack-en + +glmark2@aarch64 +glmark2-es2@aarch64 diff --git a/pkg.in/lists/slinux/graphics-full-inkscape b/pkg.in/lists/slinux/graphics-full-inkscape new file mode 100644 index 0000000..722759e --- /dev/null +++ b/pkg.in/lists/slinux/graphics-full-inkscape @@ -0,0 +1 @@ +inkscape diff --git a/pkg.in/lists/slinux/graphics-full-shotwell b/pkg.in/lists/slinux/graphics-full-shotwell new file mode 100644 index 0000000..a8ddde0 --- /dev/null +++ b/pkg.in/lists/slinux/graphics-full-shotwell @@ -0,0 +1 @@ +shotwell diff --git a/pkg.in/lists/slinux/live b/pkg.in/lists/slinux/live new file mode 100644 index 0000000..fb9fee6 --- /dev/null +++ b/pkg.in/lists/slinux/live @@ -0,0 +1,21 @@ +livecd-timezone + +lftp- + +python-module-PyQt4- +libqt4-test- +libqt4-uitools- +#libqt4-xmlpatterns- +#libqt4-declarative- +libqt4-scripttools- +libqt4-svg- +libqt4-help- +libqt4-designer- +#libqt4-webkit- +libqt4-multimedia- +#libqt4-opengl- +libqt4-clucene- +libqt4-qt3support- +#libqt4-sql- + +nano- diff --git a/pkg.in/lists/slinux/live-install b/pkg.in/lists/slinux/live-install new file mode 100644 index 0000000..540c203 --- /dev/null +++ b/pkg.in/lists/slinux/live-install @@ -0,0 +1 @@ +installer-feature-simply-livecd diff --git a/pkg.in/lists/slinux/misc-base b/pkg.in/lists/slinux/misc-base new file mode 100644 index 0000000..7218802 --- /dev/null +++ b/pkg.in/lists/slinux/misc-base @@ -0,0 +1,204 @@ +# Basic packages +tzdata +vim-console +openssh-server +openssh-clients +rsync +strace +anacron +os-prober +make-initrd-lvm +shadow-change +dhcpcd +test-audio + +telnet +b43-fwcutter +#bcm43xx-fwcutter + +pam-limits-desktop +bash-completion +mc-full +inxi +glxinfo +fvwm- +fvwm-full- +#kernel-modules-staging-@KERNEL_MOD@ +altlinux-freedesktop-menu-shallow-menu +altlinux-freedesktop-menu-mate-like-menu@!riscv64 +altlinux-freedesktop-menu-icon-theme-default +#altlinux-freedesktop-menu-common +#branding-@BRANDING@-xfce-settings +#branding-@BRANDING@-system-settings +#branding-@BRANDING@-menu +branding-simply-linux-backgrounds-vladstudio +branding-simply-linux-backgrounds9 +#docs-linux_intro +fonts-ttf-google-droid-.* +fonts-ttf-ubuntu-font-family +fonts-ttf-liberation +fonts-ttf-dejavu +gnome-icon-theme +gnome-icon-theme-symbolic +gnome-keyring +gcr +pinentry-gnome3 +pinentry-qt5- +gparted +#tango-icon-theme +#tango-icon-theme-extras +#ntfsprogs- +driconf- +aspell-ru-lebedev +vulkan-amdgpu@X86 + +mate-file-archiver +unzip +unrar +unarj +p7zip-standalone +dbus-tools-gui +xfburn +mousepad +mate-calc +synaptic +synaptic-usermode +apt-indicator +gnome-software@!riscv64 +gnome-software-disable-updates@!riscv64 + +alt-rootfs-installer +beesu +cups +cups-filters +cups-pdf +avahi-daemon +blueberry +update-kernel +printer-drivers-base@!riscv64 +udev-extras +hostname-hook-hosts +libnss-mdns +i586-glibc-nss@x86_64 +i586-libnss-mdns@x86_64 +i586-libnss-myhostname@x86_64 + +pulseaudio-daemon +pulseaudio-utils +pavucontrol +alsa-plugins-pulse + +# gstreamer plugins +gst-plugins-base1.0 +gst-plugins-good1.0 +gst-plugins-bad1.0 +gst-plugins-ugly1.0 + +fdisk +cpufreq-simple@X86 +attr +rfkill +cifs-utils + +# dm +#gdm2.20 +#gdm-theme-simply +#gdm2.20-help +lightdm-gtk-greeter +#gtk3-themes-xfce4 +gnome-themes-extra-data + +# Alterator +alterator-browser-qt +alterator-standalone +alterator-notes + +alterator-auth +alterator-datetime +alterator-net-eth +alterator-net-pppoe +alterator-net-openvpn +alterator-net-pptp +alterator-packages +alterator-pkg +alterator-services +alterator-sysconfig +alterator-update-kernel +alterator-users +alterator-root +alterator-x11 +alterator-xkb + +#additional +mate-search-tool +libmate-desktop +yelp +rosa-imagewriter + +#compiz +#python-module-fusion-icon-gtk +#compiz-gtk + +#aen +#elinks- +rpminstall +system-config-printer +system-config-printer-udev +alterator-printers +#krb5-ticket-watcher- +apt-repo +#krb5-ticket-watcher- +rekonq-@X86 +rekonq-@ARM +xdg-user-dirs +x-cursor-theme-jimmac + +plymouth@!E2K +#branding-simply-linux-bootsplash + +# Office +java-11-openjdk@!mipsel +atril-gtk +atril-gtk-djvu +atril-gtk-pixbuf +atril-gtk-xps +stardict +stardict-mueller7 +stardict-quick_en-ru@!riscv64 +stardict-quick_ru-en@!riscv64 + +# For work as guest in the virtualbox +virtualbox-guest-additions@X86 +xorg-drv-vboxvideo@X86 + +#For ALT domain +settime-rfc867 + +# Dirty hackaround for #28753 +alsa-set-initial-options + +# Console fonts workaround +vconsole-setup-kludge + +# askpass +gtk2-ssh-askpass + +# Systemd-specific +systemd-analyze + +# Enable left mouse button by tapping by default +xorg-conf-libinput-touchpad@X86 + +# Otherwise hunspell-ru will be replace by it +# during dist-upgrade +hunspell-ru-lebedev + +# xkill is present in the live anyway somehow. +# So explicitly add it for both live and install +# versions. +xkill + +fwupd@x86_64 + +#https://bugzilla.altlinux.org/39067 +eepm diff --git a/pkg.in/lists/slinux/misc-full b/pkg.in/lists/slinux/misc-full new file mode 100644 index 0000000..0d99531 --- /dev/null +++ b/pkg.in/lists/slinux/misc-full @@ -0,0 +1,66 @@ +#mintmenu +homebank +homebank-help +stardict-mueller7 +stardict-wn +stardict-engcom + +# NVIDIA drivers +#kernel-modules-nvidia-@KERNEL_MOD@ +nvidia-xconfig@X86 +nvidia-xconfig@aarch64 + +# ATI proprietary driver +#fglrx_glx +#fglrx-tools +#kernel-modules-fglrx-@KERNEL_MOD@ + +vlock + +hplip-PPDs@!riscv64 + +tango-icon-theme +tango-icon-theme-extras + +hwinfo@X86 + +# Merged from disk-dvd list + +fonts-ttf-church +fonts-ttf-latex-xft +fonts-ttf-tempora + +ImageMagick + +ntfs-3g + +perl-Crypt-Rijndael + +ffmpeg +dvgrab +mencoder +transcode +jack-audio-connection-kit + +osec-mailreport +slocate +adjtimex +wodim + +opensc + +# wacom driver and utilities +xorg-drv-wacom + +ocfs2-tools + +zsh + +glxgears + +rsync +screen + +xrdp + +apcupsd diff --git a/pkg.in/lists/slinux/multimedia b/pkg.in/lists/slinux/multimedia new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/slinux/multimedia-base b/pkg.in/lists/slinux/multimedia-base new file mode 100644 index 0000000..b284ac9 --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-base @@ -0,0 +1,5 @@ +easytag +audacious +audacious-plugins +libva-driver-intel@X86 +libva-intel-media-driver@x86_64 diff --git a/pkg.in/lists/slinux/multimedia-full-audacity b/pkg.in/lists/slinux/multimedia-full-audacity new file mode 100644 index 0000000..480d970 --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-full-audacity @@ -0,0 +1 @@ +audacity diff --git a/pkg.in/lists/slinux/multimedia-full-cheese b/pkg.in/lists/slinux/multimedia-full-cheese new file mode 100644 index 0000000..70de1df --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-full-cheese @@ -0,0 +1 @@ +cheese diff --git a/pkg.in/lists/slinux/multimedia-full-obs-studio b/pkg.in/lists/slinux/multimedia-full-obs-studio new file mode 100644 index 0000000..b3e07a5 --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-full-obs-studio @@ -0,0 +1 @@ +obs-studio diff --git a/pkg.in/lists/slinux/multimedia-full-shotcut b/pkg.in/lists/slinux/multimedia-full-shotcut new file mode 100644 index 0000000..4d07286 --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-full-shotcut @@ -0,0 +1 @@ +shotcut diff --git a/pkg.in/lists/slinux/multimedia-full-sound-juicer b/pkg.in/lists/slinux/multimedia-full-sound-juicer new file mode 100644 index 0000000..a1b65ab --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-full-sound-juicer @@ -0,0 +1 @@ +sound-juicer diff --git a/pkg.in/lists/slinux/multimedia-player-celluloid b/pkg.in/lists/slinux/multimedia-player-celluloid new file mode 100644 index 0000000..47f9c53 --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-player-celluloid @@ -0,0 +1,2 @@ +celluloid +celluloid-csd-disabled diff --git a/pkg.in/lists/slinux/multimedia-player-vlc b/pkg.in/lists/slinux/multimedia-player-vlc new file mode 100644 index 0000000..099ddbd --- /dev/null +++ b/pkg.in/lists/slinux/multimedia-player-vlc @@ -0,0 +1 @@ +vlc-maxi diff --git a/pkg.in/lists/slinux/net-base b/pkg.in/lists/slinux/net-base new file mode 100644 index 0000000..5b19ffb --- /dev/null +++ b/pkg.in/lists/slinux/net-base @@ -0,0 +1,9 @@ +thunderbird@!riscv64 +thunderbird-ru@!riscv64 + +pidgin@!riscv64 +pidgin-libnotify@!riscv64 + +rdesktop +remmina@!riscv64 +remmina-plugins@!riscv64 diff --git a/pkg.in/lists/slinux/not-install-full b/pkg.in/lists/slinux/not-install-full new file mode 100644 index 0000000..7512e8c --- /dev/null +++ b/pkg.in/lists/slinux/not-install-full @@ -0,0 +1,21 @@ +#kernel-image-led-ws +#kernel-modules-.*-led-ws +#firmware-kernel-led-ws + +# For steam +i586-nvidia_glx_.*@x86_64 +#i586-fglrx_glx@x86_64 + +# Bumblebee +bumblebee@X86 +#kernel-modules-bbswitch-@KERNEL_MOD@@X86 + +# Proprietary blob +#citrix-client + +# Spice client +libspice-gtk3 +#spice-client + +# Nvidia drivers +nvidia_glx_.*@X86 diff --git a/pkg.in/lists/slinux/xfce-base b/pkg.in/lists/slinux/xfce-base new file mode 100644 index 0000000..cf28d8a --- /dev/null +++ b/pkg.in/lists/slinux/xfce-base @@ -0,0 +1,63 @@ +#main-xfce +#xfce4-icon-theme +xfce4-xkb-plugin +xfce4-appfinder +xfce4-settings +xfce4-minimal +xfce4-session +xfce4-panel +xfce4-screenshooter +xfconf-utils +xfce4-power-manager +thunar +xfce4-terminal +xfce4-default +#xfce4-full + +#xfce-additional +#xfprint +thunar-media-tags-plugin +thunar-volman-plugin +#thunar-shares-plugin +thunar-archive-plugin + +#screensaver +xfce4-screensaver@X86 +desktop-screensaver-modules-xscreensaver@X86 +desktop-screensaver-modules-xscreensaver-gl@X86 + +light-locker@!X86 +light-locker-settings@!X86 + + +#samba +thunar-shares-plugin + +xfwm4-themes +#xfce4-dict +xfce4-screenshooter +xfce4-clipman-plugin +xfce4-cpufreq-plugin@!riscv64 +#xfce4-globalmenu-plugin +xfce4-xkb-plugin +xfce4-timer-plugin +xfce4-datetime-plugin +xfce4-places-plugin +xfce4-time-out-plugin +xfce4-fsguard-plugin +xfce4-mailwatch-plugin +xfce4-battery-plugin +xfce4-verve-plugin +xfce4-diskperf-plugin +xfce4-eyes-plugin +xfce4-notes-plugin +xfce4-netload-plugin +xfce4-mount-plugin +xfce4-weather-plugin +xfce4-systemload-plugin +xfce4-cpugraph-plugin +xfce4-pulseaudio-plugin +xfce4-whiskermenu-plugin + +# For system sounds at least +libcanberra-gtk2 diff --git a/pkg.in/lists/sound/alsa b/pkg.in/lists/sound/alsa new file mode 100644 index 0000000..c258e1d --- /dev/null +++ b/pkg.in/lists/sound/alsa @@ -0,0 +1 @@ +apulse diff --git a/pkg.in/lists/sound/base b/pkg.in/lists/sound/base new file mode 100644 index 0000000..38ae3fa --- /dev/null +++ b/pkg.in/lists/sound/base @@ -0,0 +1,6 @@ +amixer +alsa-utils +aplay +test-audio + +alsa-set-initial-options diff --git a/pkg.in/lists/sound/pulseaudio b/pkg.in/lists/sound/pulseaudio new file mode 100644 index 0000000..c18e09b --- /dev/null +++ b/pkg.in/lists/sound/pulseaudio @@ -0,0 +1,3 @@ +pulseaudio-daemon +pulseaudio-utils +alsa-plugins-pulse diff --git a/pkg.in/lists/speech/emacspeak b/pkg.in/lists/speech/emacspeak new file mode 100644 index 0000000..cfc21c5 --- /dev/null +++ b/pkg.in/lists/speech/emacspeak @@ -0,0 +1,4 @@ +emacs23-gnus +emacspeak +emacs-easypim +#emacs-w3m diff --git a/pkg.in/lists/speech/en b/pkg.in/lists/speech/en new file mode 100644 index 0000000..ef54815 --- /dev/null +++ b/pkg.in/lists/speech/en @@ -0,0 +1 @@ +espeak diff --git a/pkg.in/lists/speech/ru b/pkg.in/lists/speech/ru new file mode 100644 index 0000000..ff64757 --- /dev/null +++ b/pkg.in/lists/speech/ru @@ -0,0 +1,2 @@ +RHVoice +textlus-rhvoice diff --git a/pkg.in/lists/speech/voiceman b/pkg.in/lists/speech/voiceman new file mode 100644 index 0000000..a9e4b92 --- /dev/null +++ b/pkg.in/lists/speech/voiceman @@ -0,0 +1,3 @@ +voiceman-server +voiceman +voiceman-tools diff --git a/pkg.in/lists/storage/bacula b/pkg.in/lists/storage/bacula new file mode 100644 index 0000000..474ab68 --- /dev/null +++ b/pkg.in/lists/storage/bacula @@ -0,0 +1,4 @@ +bacula11-client +#alterator-bacula-client + + diff --git a/pkg.in/lists/storage/borg b/pkg.in/lists/storage/borg new file mode 100644 index 0000000..d136dc0 --- /dev/null +++ b/pkg.in/lists/storage/borg @@ -0,0 +1 @@ +borg diff --git a/pkg.in/lists/storage/burp b/pkg.in/lists/storage/burp new file mode 100644 index 0000000..56900a9 --- /dev/null +++ b/pkg.in/lists/storage/burp @@ -0,0 +1 @@ +burp diff --git a/pkg.in/lists/storage/ceph-client b/pkg.in/lists/storage/ceph-client new file mode 100644 index 0000000..d27a231 --- /dev/null +++ b/pkg.in/lists/storage/ceph-client @@ -0,0 +1,2 @@ +ceph-common +ceph-fuse diff --git a/pkg.in/lists/storage/ceph-mgr b/pkg.in/lists/storage/ceph-mgr new file mode 100644 index 0000000..00913b8 --- /dev/null +++ b/pkg.in/lists/storage/ceph-mgr @@ -0,0 +1,7 @@ +ceph-mgr +ceph-mgr-zabbix +ceph-mgr-prometheus +ceph-mgr-dashboard +ceph-mgr-influx +ceph-mgr-restful +ceph-mgr-telegraf diff --git a/pkg.in/lists/storage/ceph-mon b/pkg.in/lists/storage/ceph-mon new file mode 100644 index 0000000..9dc726e --- /dev/null +++ b/pkg.in/lists/storage/ceph-mon @@ -0,0 +1 @@ +ceph-mon diff --git a/pkg.in/lists/storage/ceph-osd b/pkg.in/lists/storage/ceph-osd new file mode 100644 index 0000000..a8bc179 --- /dev/null +++ b/pkg.in/lists/storage/ceph-osd @@ -0,0 +1 @@ +ceph-osd diff --git a/pkg.in/lists/storage/ceph-radosgw b/pkg.in/lists/storage/ceph-radosgw new file mode 100644 index 0000000..738664c --- /dev/null +++ b/pkg.in/lists/storage/ceph-radosgw @@ -0,0 +1 @@ +ceph-radosgw diff --git a/pkg.in/lists/storage/glusterfs-client b/pkg.in/lists/storage/glusterfs-client new file mode 100644 index 0000000..ba03f33 --- /dev/null +++ b/pkg.in/lists/storage/glusterfs-client @@ -0,0 +1 @@ +glusterfs-client diff --git a/pkg.in/lists/storage/glusterfs-server b/pkg.in/lists/storage/glusterfs-server new file mode 100644 index 0000000..665df7e --- /dev/null +++ b/pkg.in/lists/storage/glusterfs-server @@ -0,0 +1 @@ +glusterfs-server diff --git a/pkg.in/lists/storage/linstor-client b/pkg.in/lists/storage/linstor-client new file mode 100644 index 0000000..f9ad6a7 --- /dev/null +++ b/pkg.in/lists/storage/linstor-client @@ -0,0 +1 @@ +linstor-client diff --git a/pkg.in/lists/storage/linstor-controller b/pkg.in/lists/storage/linstor-controller new file mode 100644 index 0000000..5b3e5ea --- /dev/null +++ b/pkg.in/lists/storage/linstor-controller @@ -0,0 +1 @@ +linstor-controller diff --git a/pkg.in/lists/storage/linstor-opennebula b/pkg.in/lists/storage/linstor-opennebula new file mode 100644 index 0000000..061c3b2 --- /dev/null +++ b/pkg.in/lists/storage/linstor-opennebula @@ -0,0 +1 @@ +opennebula-addon-linstor_un diff --git a/pkg.in/lists/storage/linstor-pve b/pkg.in/lists/storage/linstor-pve new file mode 100644 index 0000000..f7f62dd --- /dev/null +++ b/pkg.in/lists/storage/linstor-pve @@ -0,0 +1 @@ +pve-storage-linstor diff --git a/pkg.in/lists/storage/linstor-satellite b/pkg.in/lists/storage/linstor-satellite new file mode 100644 index 0000000..446b2ac --- /dev/null +++ b/pkg.in/lists/storage/linstor-satellite @@ -0,0 +1,2 @@ +linstor-satellite +kernel-modules-drbd9-std-def diff --git a/pkg.in/lists/storage/lizardfs-cgiserv b/pkg.in/lists/storage/lizardfs-cgiserv new file mode 100644 index 0000000..bc5aae5 --- /dev/null +++ b/pkg.in/lists/storage/lizardfs-cgiserv @@ -0,0 +1,3 @@ +lizardfs-cgi +lizardfs-cgiserv +lizardfs-client diff --git a/pkg.in/lists/storage/lizardfs-chunkserver b/pkg.in/lists/storage/lizardfs-chunkserver new file mode 100644 index 0000000..cb9cfe0 --- /dev/null +++ b/pkg.in/lists/storage/lizardfs-chunkserver @@ -0,0 +1 @@ +lizardfs-chunkserver diff --git a/pkg.in/lists/storage/lizardfs-client b/pkg.in/lists/storage/lizardfs-client new file mode 100644 index 0000000..22d50b9 --- /dev/null +++ b/pkg.in/lists/storage/lizardfs-client @@ -0,0 +1 @@ +lizardfs-client diff --git a/pkg.in/lists/storage/lizardfs-master b/pkg.in/lists/storage/lizardfs-master new file mode 100644 index 0000000..7aaf3ec --- /dev/null +++ b/pkg.in/lists/storage/lizardfs-master @@ -0,0 +1,2 @@ +lizardfs-master +lizardfs-uraft diff --git a/pkg.in/lists/storage/lizardfs-metalogger b/pkg.in/lists/storage/lizardfs-metalogger new file mode 100644 index 0000000..0665efc --- /dev/null +++ b/pkg.in/lists/storage/lizardfs-metalogger @@ -0,0 +1 @@ +lizardfs-metalogger diff --git a/pkg.in/lists/storage/moosefs-cgiserv b/pkg.in/lists/storage/moosefs-cgiserv new file mode 100644 index 0000000..925126b --- /dev/null +++ b/pkg.in/lists/storage/moosefs-cgiserv @@ -0,0 +1,3 @@ +moosefs-cgi +moosefs-cgiserv +moosefs-cli diff --git a/pkg.in/lists/storage/moosefs-chunkserver b/pkg.in/lists/storage/moosefs-chunkserver new file mode 100644 index 0000000..35ed5c5 --- /dev/null +++ b/pkg.in/lists/storage/moosefs-chunkserver @@ -0,0 +1 @@ +moosefs-chunkserver diff --git a/pkg.in/lists/storage/moosefs-client b/pkg.in/lists/storage/moosefs-client new file mode 100644 index 0000000..b2f9af1 --- /dev/null +++ b/pkg.in/lists/storage/moosefs-client @@ -0,0 +1 @@ +moosefs-client diff --git a/pkg.in/lists/storage/moosefs-master b/pkg.in/lists/storage/moosefs-master new file mode 100644 index 0000000..db03570 --- /dev/null +++ b/pkg.in/lists/storage/moosefs-master @@ -0,0 +1 @@ +moosefs-master \ No newline at end of file diff --git a/pkg.in/lists/storage/moosefs-metalogger b/pkg.in/lists/storage/moosefs-metalogger new file mode 100644 index 0000000..a267b14 --- /dev/null +++ b/pkg.in/lists/storage/moosefs-metalogger @@ -0,0 +1 @@ +moosefs-metalogger diff --git a/pkg.in/lists/storage/nfs-ganesha-server b/pkg.in/lists/storage/nfs-ganesha-server new file mode 100644 index 0000000..b61062c --- /dev/null +++ b/pkg.in/lists/storage/nfs-ganesha-server @@ -0,0 +1,3 @@ +nfs-ganesha +nfs-ganesha-proxy +nfs-ganesha-vfs diff --git a/pkg.in/lists/storage/nfs-server b/pkg.in/lists/storage/nfs-server new file mode 100644 index 0000000..3cbd870 --- /dev/null +++ b/pkg.in/lists/storage/nfs-server @@ -0,0 +1 @@ +nfs-server diff --git a/pkg.in/lists/storage/ocfs2 b/pkg.in/lists/storage/ocfs2 new file mode 100644 index 0000000..2d5ac1b --- /dev/null +++ b/pkg.in/lists/storage/ocfs2 @@ -0,0 +1 @@ +ocfs2-tools diff --git a/pkg.in/lists/storage/open-iscsi b/pkg.in/lists/storage/open-iscsi new file mode 100644 index 0000000..002bd39 --- /dev/null +++ b/pkg.in/lists/storage/open-iscsi @@ -0,0 +1 @@ +open-iscsi diff --git a/pkg.in/lists/storage/restic b/pkg.in/lists/storage/restic new file mode 100644 index 0000000..80a9aa2 --- /dev/null +++ b/pkg.in/lists/storage/restic @@ -0,0 +1 @@ +restic diff --git a/pkg.in/lists/storage/scsitarget b/pkg.in/lists/storage/scsitarget new file mode 100644 index 0000000..d0832d3 --- /dev/null +++ b/pkg.in/lists/storage/scsitarget @@ -0,0 +1,3 @@ +scsitarget-utils +scsitarget-utils-gluster +scsitarget-utils-rbd diff --git a/pkg.in/lists/storage/targetcli b/pkg.in/lists/storage/targetcli new file mode 100644 index 0000000..50698d3 --- /dev/null +++ b/pkg.in/lists/storage/targetcli @@ -0,0 +1 @@ +targetcli diff --git a/pkg.in/lists/storage/urbackup-client b/pkg.in/lists/storage/urbackup-client new file mode 100644 index 0000000..e6dbaca --- /dev/null +++ b/pkg.in/lists/storage/urbackup-client @@ -0,0 +1 @@ +urbackup-client diff --git a/pkg.in/lists/storage/urbackup-server b/pkg.in/lists/storage/urbackup-server new file mode 100644 index 0000000..99b335e --- /dev/null +++ b/pkg.in/lists/storage/urbackup-server @@ -0,0 +1 @@ +urbackup-server diff --git a/pkg.in/lists/storage/zfs b/pkg.in/lists/storage/zfs new file mode 100644 index 0000000..1e5fc86 --- /dev/null +++ b/pkg.in/lists/storage/zfs @@ -0,0 +1,4 @@ +kernel-modules-zfs-std-def +zfs-utils +libvirt-daemon-driver-storage-zfs + diff --git a/pkg.in/lists/systemd b/pkg.in/lists/systemd new file mode 100644 index 0000000..4331c99 --- /dev/null +++ b/pkg.in/lists/systemd @@ -0,0 +1,6 @@ +systemd +systemd-units +systemd-services +systemd-sysvinit +systemd-analyze +chkconfig diff --git a/pkg.in/lists/sysvinit b/pkg.in/lists/sysvinit new file mode 100644 index 0000000..a2e783f --- /dev/null +++ b/pkg.in/lists/sysvinit @@ -0,0 +1,4 @@ +sysvinit +rsyslog-classic +etcnet +interactivesystem diff --git a/pkg.in/lists/tagged/README b/pkg.in/lists/tagged/README new file mode 100644 index 0000000..807c1c2 --- /dev/null +++ b/pkg.in/lists/tagged/README @@ -0,0 +1,15 @@ +=== pkg.in/lists/tagged === + +Этот каталог содержит тегированные списки; на данный момент +реализация (bin/tags2lists) требует, чтобы каждый из тегов +был отдельным словом из символов в наборе [a-zA-Z0-9_] + +Не используйте в слове "-"); рекомендуется разделять слова "+". + +Применение: дополнение жёстко статически заданной функциональности +(как правило, обязательной в данном образе) более "плавающим" +в долгосрочном плане результатом раскрытия списка тегов (который +может покрывать второстепенные вещи способом, обычно требующим +меньше внимания). + +Реализация никак не сопряжена с pkg.in/groups/ diff --git a/pkg.in/lists/tagged/archive+base b/pkg.in/lists/tagged/archive+base new file mode 100644 index 0000000..89d6c32 --- /dev/null +++ b/pkg.in/lists/tagged/archive+base @@ -0,0 +1,6 @@ +bzip2 +cpio +gzip +tar +xz +zip diff --git a/pkg.in/lists/tagged/archive+extra b/pkg.in/lists/tagged/archive+extra new file mode 100644 index 0000000..c509638 --- /dev/null +++ b/pkg.in/lists/tagged/archive+extra @@ -0,0 +1,33 @@ +gzip-utils +lzip +lzop +p7zip +pax +rzip +unrar +unzip +xbiso +zpaq + +# parallel (de)compression +pbzip2 +pigz +plzip +pxz + +# legacy +arj +cabextract +lha +mdbtools +mscompress +nomarch +ncompress +unace +unarj +#unzoo +uudeview + +# recovery +#gzrt +lziprecover diff --git a/pkg.in/lists/tagged/base+bench b/pkg.in/lists/tagged/base+bench new file mode 100644 index 0000000..a5503e9 --- /dev/null +++ b/pkg.in/lists/tagged/base+bench @@ -0,0 +1,31 @@ +# overall +dhrystone +lmbench@X86 +procbench@X86 +# requires luajit +sysbench@X86 +sysbench@aarch64 +whetstone + +# RAM +bandwidth@X86 +stream-mem + +# disk subsystem +bonnie +bonnie++ +iozone +fio +ffsb + +# networking +#dbench +hammerhead +#postal +siege +t50@X86 +wrk@X86 + +# stresstesting/burn-in +cpuburn@X86 +stress diff --git a/pkg.in/lists/tagged/base+builder b/pkg.in/lists/tagged/base+builder new file mode 100644 index 0000000..0f89c71 --- /dev/null +++ b/pkg.in/lists/tagged/base+builder @@ -0,0 +1,3 @@ +rpm-build +mkimage +git-core diff --git a/pkg.in/lists/tagged/base+clamav b/pkg.in/lists/tagged/base+clamav new file mode 100644 index 0000000..ee239a2 --- /dev/null +++ b/pkg.in/lists/tagged/base+clamav @@ -0,0 +1,2 @@ +clamav +clamav-db diff --git a/pkg.in/lists/tagged/base+comm b/pkg.in/lists/tagged/base+comm new file mode 100644 index 0000000..3cd7cec --- /dev/null +++ b/pkg.in/lists/tagged/base+comm @@ -0,0 +1,3 @@ +minicom +picocom +python3-module-serial diff --git a/pkg.in/lists/tagged/base+desktop+live b/pkg.in/lists/tagged/base+desktop+live new file mode 100644 index 0000000..098924c --- /dev/null +++ b/pkg.in/lists/tagged/base+desktop+live @@ -0,0 +1,10 @@ +wget +curl +rsync +apt +fdisk +vim-console +nano +mc +nfs-utils +system-backup diff --git a/pkg.in/lists/tagged/base+efi b/pkg.in/lists/tagged/base+efi new file mode 100644 index 0000000..35e0639 --- /dev/null +++ b/pkg.in/lists/tagged/base+efi @@ -0,0 +1,6 @@ +gdisk +parted +fatresize +dosfstools +grub2-efi +efibootmgr diff --git a/pkg.in/lists/tagged/base+extra b/pkg.in/lists/tagged/base+extra new file mode 100644 index 0000000..d84afb3 --- /dev/null +++ b/pkg.in/lists/tagged/base+extra @@ -0,0 +1,30 @@ +# Disk utils +parted +quota +time +acl + +# Applications/Editors +vim-console +nano + +# Filesystem utils +dosfstools +ntfs-3g +reiserfsprogs +f2fs-tools +cifs-utils +extundelete + +# Applications/Networking +lftp +rsync +tcpdump +telnet + +# Applications/Shells +bc +mc + +# Development/Debuggers +strace diff --git a/pkg.in/lists/tagged/base+firmware+wireless b/pkg.in/lists/tagged/base+firmware+wireless new file mode 100644 index 0000000..7fbe039 --- /dev/null +++ b/pkg.in/lists/tagged/base+firmware+wireless @@ -0,0 +1,7 @@ +# kernel/firmware +firmware-ipw2100 +firmware-ipw2200 +firmware-iwl3945 +firmware-iwl4965 +firmware-iwl5000 +firmware-prism54 diff --git a/pkg.in/lists/tagged/base+l10n b/pkg.in/lists/tagged/base+l10n new file mode 100644 index 0000000..52f0d35 --- /dev/null +++ b/pkg.in/lists/tagged/base+l10n @@ -0,0 +1,2 @@ +glibc-locales +glibc-gconv-modules diff --git a/pkg.in/lists/tagged/base+network b/pkg.in/lists/tagged/base+network new file mode 100644 index 0000000..25d02ff --- /dev/null +++ b/pkg.in/lists/tagged/base+network @@ -0,0 +1,3 @@ +etcnet +dhcpcd +dhcp-client diff --git a/pkg.in/lists/tagged/base+nm b/pkg.in/lists/tagged/base+nm new file mode 100644 index 0000000..4bf803d --- /dev/null +++ b/pkg.in/lists/tagged/base+nm @@ -0,0 +1,9 @@ +NetworkManager + +NetworkManager-vpnc +NetworkManager-openvpn +NetworkManager-pptp +NetworkManager-l2tp +NetworkManager-openconnect + +usb-modeswitch diff --git a/pkg.in/lists/tagged/base+openvz b/pkg.in/lists/tagged/base+openvz new file mode 100644 index 0000000..aabffd8 --- /dev/null +++ b/pkg.in/lists/tagged/base+openvz @@ -0,0 +1,4 @@ +vzctl +vzdump +vzquota +htop diff --git a/pkg.in/lists/tagged/base+pkg b/pkg.in/lists/tagged/base+pkg new file mode 100644 index 0000000..7ec1521 --- /dev/null +++ b/pkg.in/lists/tagged/base+pkg @@ -0,0 +1,2 @@ +apt +cpio diff --git a/pkg.in/lists/tagged/base+regular b/pkg.in/lists/tagged/base+regular new file mode 100644 index 0000000..d7f68a6 --- /dev/null +++ b/pkg.in/lists/tagged/base+regular @@ -0,0 +1,45 @@ +glibc-locales + +xfsprogs +jfsprogs +ntfs-3g +dosfstools +fatresize + +make-initrd-ucode@X86 + +shadow-change + +openssh +openssh-blacklist +net-tools +nfs-utils + +smartmontools +system-report +ps_mem + +strace +powertop@X86 +pciutils +usbutils +acpi +dmidecode@X86 +dmidecode@aarch64 + +apt-repo +apt-rsync +apt-scripts +aptitude +update-kernel +eepm + +bash-completion +cpufreq-simple@X86 +eject +bc + +ncdu +tree + +zsh diff --git a/pkg.in/lists/tagged/base+regular+extra b/pkg.in/lists/tagged/base+regular+extra new file mode 100644 index 0000000..2a5444b --- /dev/null +++ b/pkg.in/lists/tagged/base+regular+extra @@ -0,0 +1,5 @@ +lvm2 +make-initrd-lvm + +mdadm +make-initrd-mdadm diff --git a/pkg.in/lists/tagged/base+rescue b/pkg.in/lists/tagged/base+rescue new file mode 100644 index 0000000..43bc3ff --- /dev/null +++ b/pkg.in/lists/tagged/base+rescue @@ -0,0 +1,39 @@ +# Startup +rootfiles +servicectl + +# Common +acl +coreutils +glibc-nss +glibc-utils +man +man-pages +util-linux +eject + +# Package management +apt-repo +aptitude + +# Partition management +fdisk + +# Serial console +agetty + +# Console mouse +gpm + +# File management +mc + +# Provisioning +partclone + +# l10n +glibc-locales + +# Misc +rescue-launcher +system-backup diff --git a/pkg.in/lists/tagged/base+security b/pkg.in/lists/tagged/base+security new file mode 100644 index 0000000..6a74d8d --- /dev/null +++ b/pkg.in/lists/tagged/base+security @@ -0,0 +1,4 @@ +sudo +su +passwd +rsyslog-classic diff --git a/pkg.in/lists/tagged/base+smartcard b/pkg.in/lists/tagged/base+smartcard new file mode 100644 index 0000000..20e6df6 --- /dev/null +++ b/pkg.in/lists/tagged/base+smartcard @@ -0,0 +1,16 @@ +openct +opensc +pcsc-tools + +pcsc-lite +pcsc-lite-acsccid +pcsc-lite-asedriveiiie-usb +pcsc-lite-ccid +pcsc-lite-openct +pcsc-lite-rutokens + +pam_pkcs11 + +openssl +openssl-engines +openssl-engine_pkcs11 diff --git a/pkg.in/lists/tagged/base+tablet b/pkg.in/lists/tagged/base+tablet new file mode 100644 index 0000000..6577e7e --- /dev/null +++ b/pkg.in/lists/tagged/base+tablet @@ -0,0 +1,35 @@ +xorg-server +xorg-utils +xterm +xauth +twofing +setxkbmap + +fonts-otf-adobe-source-code-pro +fonts-otf-adobe-source-sans-pro +fonts-otf-mozilla-fira + +rfkill +wpa_supplicant + +pciutils + +glibc-timezones +tzdata + +etcnet +dhcpcd +dhcp-client + +openssh +openssh-blacklist + +nfs-clients + +zsh +vim-console +screen +rsync + +sudo +su diff --git a/pkg.in/lists/tagged/base+xorg b/pkg.in/lists/tagged/base+xorg new file mode 100644 index 0000000..d6c8437 --- /dev/null +++ b/pkg.in/lists/tagged/base+xorg @@ -0,0 +1,15 @@ +xorg-server + +xorg-drv-evdev +xorg-drv-synaptics +xorg-drv-libinput + +xorg-drv-vesa +xorg-drv-fbdev + +xauth +xorg-utils + +x-cursor-theme-jimmac + +menu-icons-default diff --git a/pkg.in/lists/tagged/base+xscreensaver b/pkg.in/lists/tagged/base+xscreensaver new file mode 100644 index 0000000..e313b3c --- /dev/null +++ b/pkg.in/lists/tagged/base+xscreensaver @@ -0,0 +1,3 @@ +xscreensaver +xscreensaver-modules +desktop-screensaver-modules-xscreensaver diff --git a/pkg.in/lists/tagged/basesystem b/pkg.in/lists/tagged/basesystem new file mode 100644 index 0000000..71be9e2 --- /dev/null +++ b/pkg.in/lists/tagged/basesystem @@ -0,0 +1,2 @@ +interactivesystem +apt diff --git a/pkg.in/lists/tagged/basesystem+alterator b/pkg.in/lists/tagged/basesystem+alterator new file mode 100644 index 0000000..087d392 --- /dev/null +++ b/pkg.in/lists/tagged/basesystem+alterator @@ -0,0 +1,3 @@ +alterator-root +alterator-users +alterator-net-eth diff --git a/pkg.in/lists/tagged/bench+hpc b/pkg.in/lists/tagged/bench+hpc new file mode 100644 index 0000000..654dbe5 --- /dev/null +++ b/pkg.in/lists/tagged/bench+hpc @@ -0,0 +1,2 @@ +mpitests +perftest diff --git a/pkg.in/lists/tagged/bench+x11 b/pkg.in/lists/tagged/bench+x11 new file mode 100644 index 0000000..bd1a220 --- /dev/null +++ b/pkg.in/lists/tagged/bench+x11 @@ -0,0 +1,10 @@ +# overall +hardinfo +unixbench + +# X11 +x11perf + +# stresstesting/burn-in +autobench +stressitout diff --git a/pkg.in/lists/tagged/builder+extra b/pkg.in/lists/tagged/builder+extra new file mode 100644 index 0000000..e237df2 --- /dev/null +++ b/pkg.in/lists/tagged/builder+extra @@ -0,0 +1,20 @@ +bash-completion +builder-useradd +e2fsprogs +fdisk +gear +hasher +iproute2 +mkimage-profiles +net-tools +parallel +pv +rpm-build +screen +strace +sudo +su +tavolga-image-tools@mipsel +tavolga-image-tools@X86 +vim-console +zsh diff --git a/pkg.in/lists/tagged/desktop+cinnamon b/pkg.in/lists/tagged/desktop+cinnamon new file mode 100644 index 0000000..b06e689 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+cinnamon @@ -0,0 +1,4 @@ +cinnamon-minimal@META +cinnamon-default@META +cinnamon-regular@META +installer-feature-xdg-user-dirs diff --git a/pkg.in/lists/tagged/desktop+cinnamon+extra b/pkg.in/lists/tagged/desktop+cinnamon+extra new file mode 100644 index 0000000..385adff --- /dev/null +++ b/pkg.in/lists/tagged/desktop+cinnamon+extra @@ -0,0 +1 @@ +cinnamon-regular diff --git a/pkg.in/lists/tagged/desktop+clamav b/pkg.in/lists/tagged/desktop+clamav new file mode 100644 index 0000000..c83a8ee --- /dev/null +++ b/pkg.in/lists/tagged/desktop+clamav @@ -0,0 +1 @@ +clamtk diff --git a/pkg.in/lists/tagged/desktop+cups b/pkg.in/lists/tagged/desktop+cups new file mode 100644 index 0000000..edbda89 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+cups @@ -0,0 +1,18 @@ +cups +ghostscript-cups +cups-pdf + +printer-drivers-base +foomatic-db +cups-filters + +hplip +hplip-hpcups +hplip-hpijs +hplip-PPDs +hplip-gui + +printer-driver-splix + +system-config-printer +system-config-printer-udev diff --git a/pkg.in/lists/tagged/desktop+deepin b/pkg.in/lists/tagged/desktop+deepin new file mode 100644 index 0000000..9efa8f3 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+deepin @@ -0,0 +1,8 @@ +# meta packages +deepin-minimal@META +deepin-default@META +#deepin-full@META +#deepin-regular@META + +# polkit agent +polkit-gnome diff --git a/pkg.in/lists/tagged/desktop+dwm b/pkg.in/lists/tagged/desktop+dwm new file mode 100644 index 0000000..7f0be3a --- /dev/null +++ b/pkg.in/lists/tagged/desktop+dwm @@ -0,0 +1,3 @@ +dwm +dmenu +xterm diff --git a/pkg.in/lists/tagged/desktop+enlightenment b/pkg.in/lists/tagged/desktop+enlightenment new file mode 100644 index 0000000..826774e --- /dev/null +++ b/pkg.in/lists/tagged/desktop+enlightenment @@ -0,0 +1,7 @@ +enlightenment +evas_generic_loaders +gnome-icon-theme +rage +xterm +polkit-gnome +xreader diff --git a/pkg.in/lists/tagged/desktop+enlightenment+extra b/pkg.in/lists/tagged/desktop+enlightenment+extra new file mode 100644 index 0000000..0b6c37e --- /dev/null +++ b/pkg.in/lists/tagged/desktop+enlightenment+extra @@ -0,0 +1,2 @@ +ephoto +econnman diff --git a/pkg.in/lists/tagged/desktop+fvwm b/pkg.in/lists/tagged/desktop+fvwm new file mode 100644 index 0000000..9048271 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+fvwm @@ -0,0 +1,6 @@ +fvwm +fvwm-doc +fvwm-icons +fvwm-themes +#fvwm-crystal +xterm diff --git a/pkg.in/lists/tagged/desktop+gnustep b/pkg.in/lists/tagged/desktop+gnustep new file mode 100644 index 0000000..d8ce8d9 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+gnustep @@ -0,0 +1,127 @@ +gnustep-back +gnustep-base +gnustep-dirs + +gnustep-make +gnustep-mknfonts + +gnustep-gui + +gnustep-gorm +gnustep-gworkspace + +gnustep-themes-Gtk +gnustep-themes-Neos +gnustep-themes-Nesedah +gnustep-themes-Narcissus +gnustep-silver.theme + +# current apps; some are useless at the moment +gnustep-aclock +#gnustep-adgnumailconverter +#gnustep-adserver +gnustep-Affiche +#gnustep-AppWrapper +gnustep-Backbone +gnustep-BatMon +gnustep-Bean +#gnustep-Burn cdrdao genisoimage +gnustep-Camera +gnustep-CameraTransfer +gnustep-Cartotheque +gnustep-CDPlayer +#gnustep-cenon +#gnustep-Chess +#gnustep-Connect +#gnustep-Cynthiune +gnustep-DataBasin +gnustep-DisplayCalibrator +gnustep-easydiff +#gnustep-ec +gnustep-EdenMath +gnustep-Expense +#gnustep-FisicaLab +#gnustep-FlexiSheet +gnustep-FreeTar +gnustep-FTP +gnustep-Gemas +gnustep-Ghack +gnustep-gmastermind +gnustep-gmines +#gnustep-GNUMail +gnustep-GNUWash +gnustep-Gomoku +gnustep-gorm +gnustep-Graphos +#gnustep-Grouch +gnustep-Grr +gnustep-GRubik +#gnustep-GSBench +gnustep-GScheme +gnustep-GSCommander +#gnustep-GSDock # i586-only, abandoned +gnustep-gshisen +#gnustep-GSKrab +gnustep-GSPdf ghostscript-classic +gnustep-GTAMSAnalyzer +gnustep-gworkspace +gnustep-HelpViewer +gnustep-IconManager +gnustep-ImageViewer +gnustep-Ink +gnustep-Innerspace +#gnustep-jigsaw +gnustep-KeyArcher +gnustep-Ladder +gnustep-LapisPuzzle +gnustep-LaternaMagica +gnustep-Localize +#gnustep-LoginPanel +#gnustep-LuserNET +gnustep-Lynkeos +#gnustep-Mixer +gnustep-Money +#gnustep-MPDCon +#gnustep-MusicBox +#gnustep-MusicKit +gnustep-MyWiki +#gnustep-NeXTGo +gnustep-NoteBook +gnustep-Paje +gnustep-PictureFrame +gnustep-Pixen +gnustep-PlopFolio +gnustep-Poe +gnustep-Popup +gnustep-Preview +gnustep-PRICE +#gnustep-projectcenter +gnustep-ProjectManager +#gnustep-quartzcore +gnustep-RemoteDesk +#gnustep-renaissance +gnustep-SequenceConverter +#gnustep-SimpleAgenda +gnustep-SlideShow +gnustep-Stepbill +gnustep-Stepulator +gnustep-sudoku +gnustep-systempreferences +#gnustep-TalkSoup +gnustep-terminal +gnustep-TextEdit +#gnustep-thematic +gnustep-Ticker +gnustep-TimeMon +gnustep-Toolbox +gnustep-Vespucci +#gnustep-ViewPDF +#gnustep-Vindaloo +#gnustep-VolumeControl +gnustep-Waiho +#gnustep-Yap +#gnustep-Zillion +gnustep-Zipper + +# fonts for unicode symbol support +fonts-ttf-dejavu diff --git a/pkg.in/lists/tagged/desktop+gvfs b/pkg.in/lists/tagged/desktop+gvfs new file mode 100644 index 0000000..09b3c28 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+gvfs @@ -0,0 +1,4 @@ +gvfs +gvfs-backends +gvfs-utils +fuse-gvfs diff --git a/pkg.in/lists/tagged/desktop+ibus b/pkg.in/lists/tagged/desktop+ibus new file mode 100644 index 0000000..5ef35fd --- /dev/null +++ b/pkg.in/lists/tagged/desktop+ibus @@ -0,0 +1,11 @@ +ibus +ibus-gtk2 +ibus-gtk3 + +im-chooser +imsettings +imsettings-xim + +ibus-hangul +ibus-pinyin@X86 +#ibus-unikey diff --git a/pkg.in/lists/tagged/desktop+icewm b/pkg.in/lists/tagged/desktop+icewm new file mode 100644 index 0000000..16fdde7 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+icewm @@ -0,0 +1,2 @@ +icewm +xinit diff --git a/pkg.in/lists/tagged/desktop+live b/pkg.in/lists/tagged/desktop+live new file mode 100644 index 0000000..5e29c98 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+live @@ -0,0 +1,9 @@ +xdm +xinit +xinitrc +livecd-setlocale +livecd-timezone +installer-feature-runlevel5-stage3 +os-prober +sudo +su diff --git a/pkg.in/lists/tagged/desktop+lxde b/pkg.in/lists/tagged/desktop+lxde new file mode 100644 index 0000000..1f6fe04 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+lxde @@ -0,0 +1,3 @@ +lxde@META +lxde-settings-lxdesktop +gvfs-backend-mtp diff --git a/pkg.in/lists/tagged/desktop+lxde+extra b/pkg.in/lists/tagged/desktop+lxde+extra new file mode 100644 index 0000000..b96dca2 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+lxde+extra @@ -0,0 +1,28 @@ +tango-icon-theme-extras + +fonts-bitmap-terminus + +leafpad +galculator +deadbeef-incomplete@!E2K +deadbeef-etcskel@!E2K +mpv +mtpaint +parcellite + +gpicview + +# file-roller is recommended over xarchiver (gns@) and not that fatty yet +file-roller + +# openbox behaviour, virtual desktops, etc +obconf + +# an asus eeepc inspired application launcher (needs integration) +lxde-lxlauncher + +# instead of a (missing) native notification display +notify-osd + +# for lock screen session menu entry +xscreensaver-frontend diff --git a/pkg.in/lists/tagged/desktop+lxqt b/pkg.in/lists/tagged/desktop+lxqt new file mode 100644 index 0000000..acc9bf9 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+lxqt @@ -0,0 +1,23 @@ +# metapackage +lxqt-mini@META +lxqt-regular@META + +# media-player +mpv +qmmp1 + +# graphics +easypaint + +# text-editor +featherpad + +gvfs-shares +gvfs-backend-mtp + +icon-theme-oxygen +x-cursor-theme-jimmac + +light-locker + +xdg-user-dirs-gtk diff --git a/pkg.in/lists/tagged/desktop+lxqt+extra b/pkg.in/lists/tagged/desktop+lxqt+extra new file mode 100644 index 0000000..2a4fe1d --- /dev/null +++ b/pkg.in/lists/tagged/desktop+lxqt+extra @@ -0,0 +1,29 @@ +# carefully chosen +x-cursor-theme-BlueGlass3D +x-cursor-theme-CP38 +x-cursor-theme-Obsidian +x-cursor-theme-oxy-white + +# a bit lacking +icon-theme-simple + +# text editor +focuswriter + +# media player; see also #30556 though +clementine@!E2K +clementine-codecs-full@!E2K + +# rss-reader +quiterss + +# torrent client +qbittorrent@!E2K + +# xmpp client +psi-plus +psi-plus-plugin-birthdayreminder +psi-plus-plugin-conferencelogger +psi-plus-plugin-screenshot +psi-plus-plugin-watcher +psi-plus-l10n diff --git a/pkg.in/lists/tagged/desktop+mate b/pkg.in/lists/tagged/desktop+mate new file mode 100644 index 0000000..ca347f1 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+mate @@ -0,0 +1,80 @@ +# MATE Desktop Core +mate-applets +mate-control-center +mate-desktop +mate-media +mate-menus +mate-notification-daemon +mate-panel +mate-polkit +mate-session +mate-settings-daemon +mate-window-manager + +# Help browser +yelp + +# tutorial +mate-user-guide + +# Utilities +mate-system-monitor +dconf-editor +gucharmap +mate-calc +mate-image-viewer +parcellite +mate-menu-editor +mate-power-manager +mate-backgrounds +mate-system-log +gnome-keyring +seahorse +mate-utils +mate-sensors-applet + +# Applications +## Default file manager and extesnsions +mate-file-manager +mate-file-manager-actions +mate-file-manager-beesu +mate-file-manager-extensions +mate-file-manager-image-converter +mate-file-manager-open-terminal +mate-file-manager-sendto +mate-file-manager-share +mate-file-manager-wallpaper +## ALT bug 39638 +gvfs +## Default terminal emulator +mate-terminal +## Default archiving tool +mate-file-manager-archiver +## Default text editor +mate-text-editor +## pdf viewer +mate-document-viewer +mate-document-viewer-djvu +mate-document-viewer-thumbnailer +mate-document-viewer-caja + +# Look & Feel +## Default themes +mate-icon-theme +mate-themes +libgtk2-engine-adwaita + +## Screensaver +mate-screensaver + +### should be dropped at some stage; see bugreports within this thread: +# http://lists.altlinux.org/pipermail/sisyphus/2012-August/358079.html +iso-codes +tzdata + +# basic multimedia +pavucontrol +mpv + +# clipboard manager +parcellite diff --git a/pkg.in/lists/tagged/desktop+nm b/pkg.in/lists/tagged/desktop+nm new file mode 100644 index 0000000..feb9654 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+nm @@ -0,0 +1,7 @@ +NetworkManager-applet-gtk + +NetworkManager-openvpn-gtk +NetworkManager-pptp-gtk +NetworkManager-vpnc-gtk +NetworkManager-l2tp-gtk +NetworkManager-openconnect-gtk diff --git a/pkg.in/lists/tagged/desktop+office b/pkg.in/lists/tagged/desktop+office new file mode 100644 index 0000000..97fbdd1 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+office @@ -0,0 +1,8 @@ +LibreOffice-still@!E2K +LibreOffice-still-langpack-ru@!E2K + +LibreOffice@E2K +LibreOffice-langpack-ru@E2K + +libcmis +libwps diff --git a/pkg.in/lists/tagged/desktop+regular b/pkg.in/lists/tagged/desktop+regular new file mode 100644 index 0000000..a4c29ec --- /dev/null +++ b/pkg.in/lists/tagged/desktop+regular @@ -0,0 +1,80 @@ +synaptic +synaptic-usermode + +userpasswd + +xdg-user-dirs + +alterator-browser-qt +alterator-standalone + +alterator-root +alterator-users +alterator-groups + +alterator-net-general +alterator-net-pppoe rp-pppoe-client +alterator-net-pptp +alterator-net-openvpn +alterator-net-eth +alterator-net-wifi@X86 + +alterator-datetime +alterator-proxy@X86 +alterator-services + +alterator-x11@!E2K +alterator-xkb + +alterator-update-kernel + +glxinfo +glxgears +xorg-conf-synaptics@X86 + +cpu-x@X86 +exfatprogs +hdparm +inxi +lcdtest +lm_sensors3 +lsblk +sdparm + +ntpdate + +fonts-bitmap-terminus + +ldd-requires@X86 +alt-rootfs-installer + +gparted +gpart + +x11-ssh-askpass + +sysfsutils + +mc + +apf + +udev-extras + +librsvg + +# icons +gnome-icon-theme +gnome-icon-theme-symbolic + +# unicode fonts +fonts-ttf-gnu-freefont-mono +fonts-ttf-gnu-freefont-sans +fonts-ttf-gnu-freefont-serif + +htop + +# firmware update utils +#fwupd@x86_64 + +blacklist-pcspkr@X86 diff --git a/pkg.in/lists/tagged/desktop+sane b/pkg.in/lists/tagged/desktop+sane new file mode 100644 index 0000000..f8d897f --- /dev/null +++ b/pkg.in/lists/tagged/desktop+sane @@ -0,0 +1,6 @@ +sane +sane-frontends +hplip-sane + +gscan2pdf +xsane diff --git a/pkg.in/lists/tagged/desktop+smartcard b/pkg.in/lists/tagged/desktop+smartcard new file mode 100644 index 0000000..502f698 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+smartcard @@ -0,0 +1 @@ +pcsc-tools-gui diff --git a/pkg.in/lists/tagged/desktop+wmaker b/pkg.in/lists/tagged/desktop+wmaker new file mode 100644 index 0000000..f3c10a0 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+wmaker @@ -0,0 +1,11 @@ +WindowMaker +fonts-bitmap-cyr_rfx-iso10646-0400 + +wmsystemtray +wmdf +wmnd +wmsm +wmacpi +wmfire +wmclock +wmaker-theme-club07 diff --git a/pkg.in/lists/tagged/desktop+wmaker+extra b/pkg.in/lists/tagged/desktop+wmaker+extra new file mode 100644 index 0000000..26fb895 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+wmaker+extra @@ -0,0 +1,42 @@ +wmCalClock +wmMatrix +wmMoonClock +wmappl +wmbday +#wmbeats --> useless? +wmcliphist +wmclockmon +wmctrl +wmdiskmon +wmeyes +wmfishtime +#wmfmio --> requires hardware and setup +#wmforkplop --> needed fonts-ttf-vera, which breaks cyrillic into gnustep +wmfortune +#wmgtemp --> requires lm_sensors configuration +#wmhdaps --> requires that hdaps.ko be loaded +#wmhdplop --> needed fonts-ttf-vera, which breaks cyrillic into gnustep +wmibam +#wmix --> /dev/mixer +wmlife +wmmemload +wmmenu +wmmisc +wmmon +wmnet +wmnetload +wmpager +wmpiki +#wmpinboard --> hogs CPU somehow +#wmpomme --> very specific +wmpower +wmsysmon +wmsystray +wmtimer +wmtop +wmupmon +#wmvolman --> needs udisks2 *running* +#wmusic --> libxmms +#wmwifi --> looks broken? +#wmxkbru --> quite specific +#wmxmms --> libxmms diff --git a/pkg.in/lists/tagged/desktop+xfce+extra b/pkg.in/lists/tagged/desktop+xfce+extra new file mode 100644 index 0000000..5e200e6 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+xfce+extra @@ -0,0 +1,2 @@ +xfce4-whiskermenu-plugin +arandr diff --git a/pkg.in/lists/tagged/desktop+xorg b/pkg.in/lists/tagged/desktop+xorg new file mode 100644 index 0000000..9a58142 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+xorg @@ -0,0 +1,10 @@ +xorg-drv-ati@!riscv64 +xorg-drv-cirrus@X86 +#xorg-drv-mga +xorg-drv-modesetting +#xorg-drv-nv@X86 +xorg-drv-qxl@X86 +#xorg-drv-s3 +#xorg-drv-s3virge +#xorg-drv-savage +#xorg-drv-sis diff --git a/pkg.in/lists/tagged/desktop+xscreensaver b/pkg.in/lists/tagged/desktop+xscreensaver new file mode 100644 index 0000000..089cc98 --- /dev/null +++ b/pkg.in/lists/tagged/desktop+xscreensaver @@ -0,0 +1,3 @@ +xscreensaver-hacks-rss_glx +xscreensaver-modules-gl +desktop-screensaver-modules-xscreensaver-gl diff --git a/pkg.in/lists/tagged/dev+gnustep b/pkg.in/lists/tagged/dev+gnustep new file mode 100644 index 0000000..2e3a4bc --- /dev/null +++ b/pkg.in/lists/tagged/dev+gnustep @@ -0,0 +1,14 @@ +# development +#gnustep-charsets +gnustep-dbuskit +gnustep-pdfkit +#gnustep-projectcenter +gnustep-renaissance +gnustep-simplewebkit +gnustep-sqlclient +#gnustep-steptalk +gnustep-systempreferences +gnustep-ucsdata +gnustep-Wrapper +gnustep-xcode +#libgnustep-objc2 diff --git a/pkg.in/lists/tagged/dev+security b/pkg.in/lists/tagged/dev+security new file mode 100644 index 0000000..67e8855 --- /dev/null +++ b/pkg.in/lists/tagged/dev+security @@ -0,0 +1,3 @@ +flawfinder +rats +valgrind diff --git a/pkg.in/lists/tagged/live+builder b/pkg.in/lists/tagged/live+builder new file mode 100644 index 0000000..beb1de7 --- /dev/null +++ b/pkg.in/lists/tagged/live+builder @@ -0,0 +1,3 @@ +livecd-tmpfs +mkimage-profiles +cdrkit-utils diff --git a/pkg.in/lists/tagged/main+builder b/pkg.in/lists/tagged/main+builder new file mode 100644 index 0000000..9181577 --- /dev/null +++ b/pkg.in/lists/tagged/main+builder @@ -0,0 +1,9 @@ +basesystem +fakeroot +file + +make-initrd +make-initrd-propagator + +rpm-build +sisyphus_check diff --git a/pkg.in/lists/tagged/mobile+mate b/pkg.in/lists/tagged/mobile+mate new file mode 100644 index 0000000..9a77a59 --- /dev/null +++ b/pkg.in/lists/tagged/mobile+mate @@ -0,0 +1,11 @@ +NetworkManager +NetworkManager-gnome +NetworkManager-l2tp-gnome +rfkill +dbus-tools-gui +fonts-otf-mozilla-fira +xdg-user-dirs +#gnome-minimal +#gnome-mobile +notification-daemon +#powermgmt-base diff --git a/pkg.in/lists/tagged/network+bench b/pkg.in/lists/tagged/network+bench new file mode 100644 index 0000000..d2d20f0 --- /dev/null +++ b/pkg.in/lists/tagged/network+bench @@ -0,0 +1 @@ +httperf diff --git a/pkg.in/lists/tagged/network+extra b/pkg.in/lists/tagged/network+extra new file mode 100644 index 0000000..43aa7e7 --- /dev/null +++ b/pkg.in/lists/tagged/network+extra @@ -0,0 +1,4 @@ +etcnet-full +net-tools +nfs-utils +postfix diff --git a/pkg.in/lists/tagged/network+security b/pkg.in/lists/tagged/network+security new file mode 100644 index 0000000..7c016e2 --- /dev/null +++ b/pkg.in/lists/tagged/network+security @@ -0,0 +1,3 @@ +aircrack-ng +macchanger +tcptrace diff --git a/pkg.in/lists/tagged/pkg+extra b/pkg.in/lists/tagged/pkg+extra new file mode 100644 index 0000000..badded3 --- /dev/null +++ b/pkg.in/lists/tagged/pkg+extra @@ -0,0 +1 @@ +aptitude diff --git a/pkg.in/lists/tagged/regular+icewm b/pkg.in/lists/tagged/regular+icewm new file mode 100644 index 0000000..c13f7c0 --- /dev/null +++ b/pkg.in/lists/tagged/regular+icewm @@ -0,0 +1,27 @@ +SysVinit-usermode + +icewm-startup-simple-sound + +xxkb +icewm-startup-xxkb-tray + +iftop +mutt +elinks +lftp + +qasmixer +pnmixer +icewm-startup-pnmixer +leafpad + +gqview +screengrab +design-icewm-themes +icewm-theme-darkt +icewm-theme-silverxp + +rp-pppoe-gui + +spacefm +icewm-startup-spacefm diff --git a/pkg.in/lists/tagged/regular+server b/pkg.in/lists/tagged/regular+server new file mode 100644 index 0000000..fe4e320 --- /dev/null +++ b/pkg.in/lists/tagged/regular+server @@ -0,0 +1,7 @@ +vim-console +screen +quota +fdisk +mailx +nano +mc diff --git a/pkg.in/lists/tagged/regular+tde b/pkg.in/lists/tagged/regular+tde new file mode 100644 index 0000000..91701e8 --- /dev/null +++ b/pkg.in/lists/tagged/regular+tde @@ -0,0 +1,8 @@ +alterator-datetime +alterator-x11 + +pm-utils +asoundconf + +kcpuload +knetload diff --git a/pkg.in/lists/tagged/rescue+backup b/pkg.in/lists/tagged/rescue+backup new file mode 100644 index 0000000..c9dc76b --- /dev/null +++ b/pkg.in/lists/tagged/rescue+backup @@ -0,0 +1 @@ +bacula11-client diff --git a/pkg.in/lists/tagged/rescue+crypto b/pkg.in/lists/tagged/rescue+crypto new file mode 100644 index 0000000..3428183 --- /dev/null +++ b/pkg.in/lists/tagged/rescue+crypto @@ -0,0 +1,6 @@ +aespipe +bcrypt +cryptmount +cryptsetup +cryptsetup-reencrypt +steghide diff --git a/pkg.in/lists/tagged/rescue+extra b/pkg.in/lists/tagged/rescue+extra new file mode 100644 index 0000000..2c4db18 --- /dev/null +++ b/pkg.in/lists/tagged/rescue+extra @@ -0,0 +1,220 @@ +# CPU utils +cpuburn@X86 +x86info@X86 + +# Disk utils +aff-tools +altquire +bonnie++ +cfdisk +dcfldd +dc3dd +dd_rescue@X86 +dd_rescue@aarch64 +ddrescue +ddrutility +disktype +# NB: EVMS must be off by default as "normal" /dev/sd* +# would suddenly get busy otherwise +#evms +#evms-ncurses +# fio pulls in a bunch of huge libraries down to libicu +#fio +gpart +hddtemp +idle3-tools +iotop +iozone +hdparm +lsblk +lsmount +lvm2 +mdadm +ms-sys +myrescue@X86 +parted +recoverdm +safecopy +sdparm +sfdisk +smartmontools +stress +testdisk +mtools +gdisk +cgdisk +fixparts +whdd +bcache-tools + +# Applications +binutils +dmidecode +gnupg +htop +pciutils +procps +quota +shadow-suite +sharutils +time +openssl + +# Applications/Editors +hexedit +nano +tweak +vim-console + +# Applications/File +agrep-tre +enca +findutils +file +ldd-requires@X86 +less +lnav +wdiff + +# Filesystem maintenance +btrfs-progs +e2fsprogs +f2fs-tools +jfsprogs +nilfs-utils +mtd-utils +reiser4progs +reiserfsprogs +shake +xfsprogs + +# Compressed filesystem image +clicfs-utils +squashfs-tools + +# Foreign filesystems +afpfs-ng +bindfs +dosfstools +exfatprogs +fatback +fatresize +fuse-chunkfs +fuse-ciopfs +hfsprogs +ifuse +libevt-tools@X86 +libevtx-tools@X86 +liblnk-tools@X86 +libpff-tools@X86 +libregf-tools@X86 +libuna-tools +#libvshadow-tools +libwrc-tools@X86 +ntfs-3g +ocfs2-tools + +# Filesystem recovery/cleanup +extundelete +foremost +ftimes@X86 +fuse-convmvfs +magicrescue +photorec +scalpel +sleuthkit +srm +wipefreespace +xfsdump +zerofree + +# Archiving/Compression +archivemount +fuse-7z + +# Applications/Networking +arpwatch +cifs-utils +curl +davfs2 +dhcpdump +dsniff +elinks +exabgp +fping +fuse-curlftpfs +fuse-lftpfs +fuse-sshfs +hostinfo +hping3@X86 +httpry +httpry-scripts +iftop +infiniband-diags +iperf +iperf3 +ipmitool +iproute2 +iptables +iputils +lft +lftp +mailx +mtr +netcat +netlist +nfs-server +nfs-utils +ngrep +nmap +p0f +pdsh +perftest +rsh +rsync +scanssh +sflowtool +#shellinabox +socat +sshpt +#stunnel +tcpdump +tcpreen +tcpreplay +tcptrace +tcputils +tcpxtract +telnet +traceroute +uucp +wget +whatmask +whois + +# Applications/Shells +ash +bash +bc +mc +pdksh +zsh + +# Terminals +screen +tmux + +# Development/Debuggers +gdb +ltrace +strace +sysstat +udis86@X86 + +# win32 +chntpw@X86 +hivex@X86 +scrounge-ntfs@X86 +wabread@X86 + +# Mobile +android-tools diff --git a/pkg.in/lists/tagged/rescue+fs b/pkg.in/lists/tagged/rescue+fs new file mode 100644 index 0000000..84349ad --- /dev/null +++ b/pkg.in/lists/tagged/rescue+fs @@ -0,0 +1,8 @@ +#anyfs-tools +cpipe +cv +pv +dar +dmsdos +genromfs +shake diff --git a/pkg.in/lists/tagged/rescue+live b/pkg.in/lists/tagged/rescue+live new file mode 100644 index 0000000..1a36523 --- /dev/null +++ b/pkg.in/lists/tagged/rescue+live @@ -0,0 +1,3 @@ +parted +mdadm +etcnet-full diff --git a/pkg.in/lists/tagged/rescue+misc b/pkg.in/lists/tagged/rescue+misc new file mode 100644 index 0000000..ead8d5a --- /dev/null +++ b/pkg.in/lists/tagged/rescue+misc @@ -0,0 +1,66 @@ +# Databases +db4.8-utils +sqlite3 + +# Office files +antiword +docx2txt +unrtf + +# Networking +drbd-utils +scsitarget-utils +ntp-utils + +# Optical media +dvd+rw-tools +readom +udftools +xorriso + +# Magnetic tapes +dvgrab +mt-st +mtx +rmt + +# Hardware +cmospwd@X86 +cpuid2@X86 +encled +flashrom +hwinfo +inxi +irda-utils +lm_sensors3 +lshw +mpt-status +nvme +nvramtool@X86 +smartmontools +#smbios-utils + +# Misc^2 +kexec-tools +multipath-tools +lsof +parallel +sysfsutils + +# initrd helpers +make-initrd-devmapper +make-initrd-mdadm +make-initrd-lvm +make-initrd-multipath +make-initrd-nfs + +# Filesystem archival tools +fsarchiver +wimtools@X86 + +# Filesystem maintenance +duff +fdupes +jdupes +hardlinkpy +hardlink diff --git a/pkg.in/lists/tagged/rescue+x11 b/pkg.in/lists/tagged/rescue+x11 new file mode 100644 index 0000000..9fe5f30 --- /dev/null +++ b/pkg.in/lists/tagged/rescue+x11 @@ -0,0 +1,12 @@ +# mostly X11 counterparts/GUIs to some rescue+extra packages +binwalk +dsniff-X11@X86 +dvdisaster +extract +gparted +jhead +hardinfo@X86 +ht +libpst-tools +qt-fsarchiver@X86 +recoverjpeg diff --git a/pkg.in/lists/tagged/rescue+x11+extra b/pkg.in/lists/tagged/rescue+x11+extra new file mode 100644 index 0000000..1ece579 --- /dev/null +++ b/pkg.in/lists/tagged/rescue+x11+extra @@ -0,0 +1,4 @@ +# This package did not like zerg@ +autopsy +gsmartcontrol +recoll-full@X86 diff --git a/pkg.in/lists/tagged/security+extra b/pkg.in/lists/tagged/security+extra new file mode 100644 index 0000000..89a6dcd --- /dev/null +++ b/pkg.in/lists/tagged/security+extra @@ -0,0 +1,17 @@ +apg +#chkrootkit +john@X86 +hashalot +hashcat@X86 +#logcheck +md5deep +ssdeep +pwgen + +# integrity check +osec +osec-cronjob +osec-mailreport + +# hardware reliability +mcelog@X86 diff --git a/pkg.in/lists/tagged/security+luks b/pkg.in/lists/tagged/security+luks new file mode 100644 index 0000000..46eb8e5 --- /dev/null +++ b/pkg.in/lists/tagged/security+luks @@ -0,0 +1,2 @@ +make-initrd-luks +cryptsetup diff --git a/pkg.in/lists/tagged/server+alterator b/pkg.in/lists/tagged/server+alterator new file mode 100644 index 0000000..fb6d07f --- /dev/null +++ b/pkg.in/lists/tagged/server+alterator @@ -0,0 +1,14 @@ +alterator-console +alterator-datetime +alterator-logs +alterator-net-bond +alterator-net-bridge +alterator-net-iptables +alterator-net-pppoe +alterator-net-vlan +alterator-services +alterator-sysconfig +alterator-sysinfo +alterator-notes +alterator-updates +alterator-quota diff --git a/pkg.in/lists/tagged/server+extra b/pkg.in/lists/tagged/server+extra new file mode 100644 index 0000000..f160116 --- /dev/null +++ b/pkg.in/lists/tagged/server+extra @@ -0,0 +1,13 @@ +# disk tools +eject +hdparm +lvm2 +mdadm +mtools +ntfs-3g +sfdisk +usbutils +xfsprogs + +# misc +pciutils diff --git a/pkg.in/lists/tagged/server+network b/pkg.in/lists/tagged/server+network new file mode 100644 index 0000000..3919937 --- /dev/null +++ b/pkg.in/lists/tagged/server+network @@ -0,0 +1,19 @@ +# network tools +apt-rsync +curl +elinks +hostinfo +iptables +iputils +lftp +mailx +netcat +netlist +nfs-utils +rsync +traceroute +ntpdate +tcpdump +wget +ppp-pppoe +rp-pppoe-client diff --git a/pkg.in/lists/tagged/server+openvpn b/pkg.in/lists/tagged/server+openvpn new file mode 100644 index 0000000..df1aec7 --- /dev/null +++ b/pkg.in/lists/tagged/server+openvpn @@ -0,0 +1,11 @@ +apt +basesystem +sysklogd +etcnet +glibc-nss +openvpn +netlist +#alterator-fbi +openssh-server +passwd +less diff --git a/pkg.in/lists/tagged/server+openvz b/pkg.in/lists/tagged/server+openvz new file mode 100644 index 0000000..98e4d7b --- /dev/null +++ b/pkg.in/lists/tagged/server+openvz @@ -0,0 +1,5 @@ +#vzautolimit +#vzfree +#vzvalidate +openvz-etersoft +#yabeda diff --git a/pkg.in/lists/tagged/server+sambaDC b/pkg.in/lists/tagged/server+sambaDC new file mode 100644 index 0000000..3dada5d --- /dev/null +++ b/pkg.in/lists/tagged/server+sambaDC @@ -0,0 +1,3 @@ +task-samba-dc +bind-utils +tdb-utils diff --git a/pkg.in/lists/tagged/server+zabbix b/pkg.in/lists/tagged/server+zabbix new file mode 100644 index 0000000..a446b5c --- /dev/null +++ b/pkg.in/lists/tagged/server+zabbix @@ -0,0 +1,16 @@ +zabbix-server-mysql +zabbix-phpfrontend-apache2-mod_php7 +zabbix-agent + +zabbix-preinstall + +MySQL-server +MySQL-client + +php7-gd2 +php7-mbstring +php7-mysqli +php7-sockets + +postfix +mailx diff --git a/pkg.in/lists/tagged/ve+tools b/pkg.in/lists/tagged/ve+tools new file mode 100644 index 0000000..cc900a9 --- /dev/null +++ b/pkg.in/lists/tagged/ve+tools @@ -0,0 +1,5 @@ +vim-console +screen +zsh +rsync +lftp diff --git a/pkg.in/lists/tagged/xorg+misc b/pkg.in/lists/tagged/xorg+misc new file mode 100644 index 0000000..4c81544 --- /dev/null +++ b/pkg.in/lists/tagged/xorg+misc @@ -0,0 +1 @@ +xorg-drv-joystick diff --git a/pkg.in/lists/tagged/xorg+vaapi b/pkg.in/lists/tagged/xorg+vaapi new file mode 100644 index 0000000..cada97e --- /dev/null +++ b/pkg.in/lists/tagged/xorg+vaapi @@ -0,0 +1,5 @@ +# NB: these might hurt each other, for MAIN_LISTS +libva-driver-intel@X86 +libva-intel-media-driver@x86_64 +libva-utils +#xvba-video diff --git a/pkg.in/lists/tools/diag b/pkg.in/lists/tools/diag new file mode 100644 index 0000000..dab8e72 --- /dev/null +++ b/pkg.in/lists/tools/diag @@ -0,0 +1,11 @@ +# diagnostic tools +dsniff +iftop +lft +mtr +nmap +scanssh +telnet +traceroute +whois +minicom diff --git a/pkg.in/lists/tools/hyperv b/pkg.in/lists/tools/hyperv new file mode 100644 index 0000000..99ee24b --- /dev/null +++ b/pkg.in/lists/tools/hyperv @@ -0,0 +1,2 @@ +hyperv-daemons@X86 +installer-feature-hyperv-stage3@x86_64 diff --git a/pkg.in/lists/tools/ipmi b/pkg.in/lists/tools/ipmi new file mode 100644 index 0000000..d1d1768 --- /dev/null +++ b/pkg.in/lists/tools/ipmi @@ -0,0 +1,4 @@ +freeipmi-bmc-watchdog +freeipmi +ipmitool +agetty diff --git a/pkg.in/lists/tools/monitoring b/pkg.in/lists/tools/monitoring new file mode 100644 index 0000000..a86a20d --- /dev/null +++ b/pkg.in/lists/tools/monitoring @@ -0,0 +1,20 @@ +monit +vnstat + +# pull in subpackages which shouldn't toss +# lots of extra dependencies into an image +collectd +collectd-apache +collectd-bind +collectd-cgi +collectd-curl +collectd-dbi +collectd-ipmi +collectd-memcached +collectd-mysql +collectd-nginx +#collectd-openvz +collectd-ping +collectd-rrdtool +collectd-sensors +collectd-virt diff --git a/pkg.in/lists/tools/tuning b/pkg.in/lists/tools/tuning new file mode 100644 index 0000000..789bec2 --- /dev/null +++ b/pkg.in/lists/tools/tuning @@ -0,0 +1,2 @@ +tuned +powertop diff --git a/pkg.in/lists/tools/vzstats b/pkg.in/lists/tools/vzstats new file mode 100644 index 0000000..ee3baac --- /dev/null +++ b/pkg.in/lists/tools/vzstats @@ -0,0 +1 @@ +vzstats diff --git a/pkg.in/lists/tools/wireless b/pkg.in/lists/tools/wireless new file mode 100644 index 0000000..4f6b821 --- /dev/null +++ b/pkg.in/lists/tools/wireless @@ -0,0 +1,5 @@ +wireless-tools +ath_info +rfkill +crda@X86 +iw diff --git a/pkg.in/lists/uboot b/pkg.in/lists/uboot new file mode 100644 index 0000000..53ba31c --- /dev/null +++ b/pkg.in/lists/uboot @@ -0,0 +1,8 @@ +raspberrypi-firmware@ARM +u-boot-meson@aarch64 +u-boot-sunxi@ARM +u-boot-rockchip@aarch64 +fu540-bootloaders@riscv64 +opensbi-firmware-fu540@riscv64 +opensbi-firmware-generic@riscv64 +u-boot-sifive-fu740@riscv64 diff --git a/pkg.in/lists/virt/base.pkgs b/pkg.in/lists/virt/base.pkgs new file mode 100644 index 0000000..d00f388 --- /dev/null +++ b/pkg.in/lists/virt/base.pkgs @@ -0,0 +1,61 @@ +make-initrd-mdadm +make-initrd-lvm +make-initrd-multipath +make-initrd-ucode@X86 +dhcpcd +cpio +fdisk +gdisk +sfdisk +hdparm +sdparm +btrfs-progs +xfsprogs +e2fsprogs +rsync +lftp +wget +pciutils +usbutils +powertop +glibc-gconv-modules +glibc-locales +shadow-change +tzdata +iptables +iptables-ipv6 +ebtables +nftables +xtables-addons +lsof +ethtool +python3 +systemd-container +nfs-clients +su +sudo +apt-repo +apt-rsync +apt-scripts +update-kernel +eepm +systemd-networkd +systemd-container +libnss-systemd +zsh +bash-completion +bc +tree +smartmontools +lsb-release +vim-console +screen +quota +mailx +nano +mc +installer-feature-repo-add +ipmitool +udev-rules-ioschedulers +alt-issue-server +systemd-settings-disable-kill-user-processes diff --git a/pkg.in/lists/virt/cockpit/docker b/pkg.in/lists/virt/cockpit/docker new file mode 100644 index 0000000..da2e225 --- /dev/null +++ b/pkg.in/lists/virt/cockpit/docker @@ -0,0 +1 @@ +cockpit-docker diff --git a/pkg.in/lists/virt/cockpit/machines b/pkg.in/lists/virt/cockpit/machines new file mode 100644 index 0000000..c838711 --- /dev/null +++ b/pkg.in/lists/virt/cockpit/machines @@ -0,0 +1 @@ +cockpit-machines diff --git a/pkg.in/lists/virt/cockpit/web b/pkg.in/lists/virt/cockpit/web new file mode 100644 index 0000000..a505db2 --- /dev/null +++ b/pkg.in/lists/virt/cockpit/web @@ -0,0 +1,2 @@ +cockpit-ws +cockpit-dashboard diff --git a/pkg.in/lists/virt/extra.pkgs b/pkg.in/lists/virt/extra.pkgs new file mode 100644 index 0000000..911bddc --- /dev/null +++ b/pkg.in/lists/virt/extra.pkgs @@ -0,0 +1,28 @@ +kernel-headers-std-def +kernel-headers-modules-std-def +kernel-modules-ipset-std-def +kernel-modules-xtables-addons-std-def +kernel-modules-kvdo-std-def +kernel-modules-zfs-std-def +kernel-modules-hinic-std-def@aarch64 +kernel-modules-hifc-std-def@aarch64 +zfs-utils +ocfs2-tools +vdo + +net-snmp +corosync +pacemaker +pacemaker-cli +pacemaker-remote +resource-agents +resource-agents-fio +resource-agents-iSCSI +resource-agents-libvirt +resource-agents-lvm +resource-agents-lxc +resource-agents-nfs +pcs +ansible +docker-compose +etcd diff --git a/pkg.in/lists/virt/kvm b/pkg.in/lists/virt/kvm new file mode 100644 index 0000000..e0981c6 --- /dev/null +++ b/pkg.in/lists/virt/kvm @@ -0,0 +1,6 @@ +libvirt +libvirt-kvm +libvirt-daemon-driver-storage +libvirt-lock-sanlock +nss-libvirt +libosinfo diff --git a/pkg.in/lists/virt/opennebula/flow b/pkg.in/lists/virt/opennebula/flow new file mode 100644 index 0000000..5c5435e --- /dev/null +++ b/pkg.in/lists/virt/opennebula/flow @@ -0,0 +1 @@ +opennebula-flow diff --git a/pkg.in/lists/virt/opennebula/gate b/pkg.in/lists/virt/opennebula/gate new file mode 100644 index 0000000..8e2a3d2 --- /dev/null +++ b/pkg.in/lists/virt/opennebula/gate @@ -0,0 +1 @@ +opennebula-gate diff --git a/pkg.in/lists/virt/opennebula/gui b/pkg.in/lists/virt/opennebula/gui new file mode 100644 index 0000000..246edf6 --- /dev/null +++ b/pkg.in/lists/virt/opennebula/gui @@ -0,0 +1,2 @@ +opennebula-sunstone +memcached diff --git a/pkg.in/lists/virt/opennebula/node-kvm b/pkg.in/lists/virt/opennebula/node-kvm new file mode 100644 index 0000000..f647810 --- /dev/null +++ b/pkg.in/lists/virt/opennebula/node-kvm @@ -0,0 +1 @@ +opennebula-node-kvm diff --git a/pkg.in/lists/virt/opennebula/node-lxd b/pkg.in/lists/virt/opennebula/node-lxd new file mode 100644 index 0000000..566b206 --- /dev/null +++ b/pkg.in/lists/virt/opennebula/node-lxd @@ -0,0 +1 @@ +opennebula-node-lxd diff --git a/pkg.in/lists/virt/opennebula/server b/pkg.in/lists/virt/opennebula/server new file mode 100644 index 0000000..c3ac0cc --- /dev/null +++ b/pkg.in/lists/virt/opennebula/server @@ -0,0 +1,2 @@ +mariadb-server +opennebula-server diff --git a/pkg.in/lists/virt/openstack/block b/pkg.in/lists/virt/openstack/block new file mode 100644 index 0000000..836e467 --- /dev/null +++ b/pkg.in/lists/virt/openstack/block @@ -0,0 +1,3 @@ +lvm2 +openstack-cinder + diff --git a/pkg.in/lists/virt/openstack/compute b/pkg.in/lists/virt/openstack/compute new file mode 100644 index 0000000..914062e --- /dev/null +++ b/pkg.in/lists/virt/openstack/compute @@ -0,0 +1,4 @@ +openstack-nova-compute +openstack-neutron-openvswitch-agent +openstack-neutron-linuxbridge-agent +openstack-ceilometer-compute diff --git a/pkg.in/lists/virt/openstack/controller b/pkg.in/lists/virt/openstack/controller new file mode 100644 index 0000000..4e90f92 --- /dev/null +++ b/pkg.in/lists/virt/openstack/controller @@ -0,0 +1,20 @@ +mariadb-server +rabbitmq-server +memcached +openstack-keystone +openstack-glance +openstack-nova-api +openstack-nova-conductor +openstack-nova-console +openstack-nova-novncproxy +openstack-nova-scheduler +openstack-neutron +openstack-cinder +openstack-swift +openstack-heat-api +openstack-heat-engine +openstack-heat-api-cfn +openstack-ceilometer-notification +openstack-ceilometer-central +openstack-ceilometer-alarm +openstack-dashboard diff --git a/pkg.in/lists/virt/openstack/network b/pkg.in/lists/virt/openstack/network new file mode 100644 index 0000000..8cdcae9 --- /dev/null +++ b/pkg.in/lists/virt/openstack/network @@ -0,0 +1,8 @@ +openstack-neutron +openstack-neutron-openvswitch-agent +openstack-neutron-l3-agent +openstack-neutron-linuxbridge-agent +openstack-neutron-metadata-agent +openstack-neutron-server +openstack-neutron-fwaas +openstack-neutron-lbaas diff --git a/pkg.in/lists/virt/openstack/storage b/pkg.in/lists/virt/openstack/storage new file mode 100644 index 0000000..b38fb6e --- /dev/null +++ b/pkg.in/lists/virt/openstack/storage @@ -0,0 +1,4 @@ +openstack-swift-account +openstack-swift-container +openstack-swift-object +xfsprogs diff --git a/pkg.in/lists/virt/pve b/pkg.in/lists/virt/pve new file mode 100644 index 0000000..2d0f8ea --- /dev/null +++ b/pkg.in/lists/virt/pve @@ -0,0 +1,8 @@ +pve-manager +postfix +control-sshd-permit-root-login +kernel-modules-ipset-std-def +kernel-modules-xtables-addons-std-def +kernel-modules-zfs-std-def +zfs-utils +alt-issue-server-pve diff --git a/pkg.in/lists/workstation/3rdparty b/pkg.in/lists/workstation/3rdparty new file mode 100644 index 0000000..ce9e121 --- /dev/null +++ b/pkg.in/lists/workstation/3rdparty @@ -0,0 +1,9 @@ +1c-preinstall@X86 +cryptopro-preinstall-full@X86 +alt-csp-cryptopro +google-chrome-preinstall@X86 +vmware-view-preinstall@X86 +yandex-browser-preinstall@x86_64 +sputnik-browser-preinstall@x86_64 +skype-preinstall@x86_64 +teamviewer-preinstall@X86 diff --git a/pkg.in/lists/workstation/admc b/pkg.in/lists/workstation/admc new file mode 100644 index 0000000..0bacbbc --- /dev/null +++ b/pkg.in/lists/workstation/admc @@ -0,0 +1,8 @@ +admc +alterator-gpupdate +gpupdate +local-policy +admx-basealt +samba-dc-common +admx-firefox +admx-chromium diff --git a/pkg.in/lists/workstation/agents b/pkg.in/lists/workstation/agents new file mode 100644 index 0000000..fc52010 --- /dev/null +++ b/pkg.in/lists/workstation/agents @@ -0,0 +1,8 @@ +bacula11-client +#alterator-bacula-client + +urbackup-client + +zabbix-agent +alterator-zabbix-agent +zabbix-agent-sudo diff --git a/pkg.in/lists/workstation/alterator-web b/pkg.in/lists/workstation/alterator-web new file mode 100644 index 0000000..ba3ad04 --- /dev/null +++ b/pkg.in/lists/workstation/alterator-web @@ -0,0 +1 @@ +alterator-fbi diff --git a/pkg.in/lists/workstation/base.pkgs b/pkg.in/lists/workstation/base.pkgs new file mode 100644 index 0000000..d91b92b --- /dev/null +++ b/pkg.in/lists/workstation/base.pkgs @@ -0,0 +1,2 @@ +installer-feature-centaurus-keyring +installer-feature-lightdm-stage3 diff --git a/pkg.in/lists/workstation/blender b/pkg.in/lists/workstation/blender new file mode 100644 index 0000000..562fe1d --- /dev/null +++ b/pkg.in/lists/workstation/blender @@ -0,0 +1 @@ +blender diff --git a/pkg.in/lists/workstation/celluloid b/pkg.in/lists/workstation/celluloid new file mode 100644 index 0000000..47f9c53 --- /dev/null +++ b/pkg.in/lists/workstation/celluloid @@ -0,0 +1,2 @@ +celluloid +celluloid-csd-disabled diff --git a/pkg.in/lists/workstation/clamav b/pkg.in/lists/workstation/clamav new file mode 100644 index 0000000..5dfaecb --- /dev/null +++ b/pkg.in/lists/workstation/clamav @@ -0,0 +1,2 @@ +clamtk +clamav-db diff --git a/pkg.in/lists/workstation/claws-mail b/pkg.in/lists/workstation/claws-mail new file mode 100644 index 0000000..dd0791e --- /dev/null +++ b/pkg.in/lists/workstation/claws-mail @@ -0,0 +1,11 @@ +claws-mail +claws-mail-plugin-attachwarner +claws-mail-plugin-notification +claws-mail-plugin-pgpcore +claws-mail-plugin-pgpinline +claws-mail-plugin-pgpmime +claws-mail-plugin-rssyl +claws-mail-plugin-spamassassin +claws-mail-plugin-vcalendar +claws-mail-theme-TangoClaws +claws-mail-tools diff --git a/pkg.in/lists/workstation/cloud-clients b/pkg.in/lists/workstation/cloud-clients new file mode 100644 index 0000000..36c83dd --- /dev/null +++ b/pkg.in/lists/workstation/cloud-clients @@ -0,0 +1,2 @@ +nextcloud-client +seafile-client diff --git a/pkg.in/lists/workstation/emulators b/pkg.in/lists/workstation/emulators new file mode 100644 index 0000000..6908ba6 --- /dev/null +++ b/pkg.in/lists/workstation/emulators @@ -0,0 +1,14 @@ +wine@i586 +libwine-gl@i586 +libwine-twain@i586 +wine-mono@X86 +wine-gecko@X86 +i586-wine@x86_64 +i586-libwine-gl@x86_64 +i586-xorg-dri-*@x86_64 +i586-libwine-twain@x86_64 +i586-libnss-mdns@x86_64 +i586-libnss-myhostname@x86_64 + +dosbox +rtc@E2K diff --git a/pkg.in/lists/workstation/extras b/pkg.in/lists/workstation/extras new file mode 100644 index 0000000..e131574 --- /dev/null +++ b/pkg.in/lists/workstation/extras @@ -0,0 +1,34 @@ +# GOST encryption +openssl-engines + +# for AltHa +alterator-secsetup + +# just in case +kernel-headers-modules-std-def +kernel-headers-std-def +#kernel-image-un-def +#kernel-modules-drm-ancient-un-def +#kernel-modules-drm-radeon-un-def +#kernel-modules-v4l-un-def +#kernel-modules-drm-un-def +#kernel-modules-staging-un-def +#kernel-modules-drm-nouveau-un-def@X86 +#kernel-modules-virtualbox-un-def@x86_64 +#kernel-headers-modules-un-def +#kernel-headers-un-def + +chromium + +chromium-gost + +# gostcrypo repo component is needed +openvpn-gostcrypto openvpn-plugins-gostcrypto +alterator-openvpn-server + +openssh-gostcrypto +openssh-common-gostcrypto +openssh-askpass-common-gostcrypto +openssh-clients-gostcrypto +openssh-server-control-gostcrypto +openssh-server-gostcrypto diff --git a/pkg.in/lists/workstation/freecad b/pkg.in/lists/workstation/freecad new file mode 100644 index 0000000..115a0fc --- /dev/null +++ b/pkg.in/lists/workstation/freecad @@ -0,0 +1,2 @@ +freecad +#freecad-thumbnailer diff --git a/pkg.in/lists/workstation/freeipa-client b/pkg.in/lists/workstation/freeipa-client new file mode 100644 index 0000000..7fa9d78 --- /dev/null +++ b/pkg.in/lists/workstation/freeipa-client @@ -0,0 +1,2 @@ +freeipa-client +task-auth-freeipa diff --git a/pkg.in/lists/workstation/ganttproject b/pkg.in/lists/workstation/ganttproject new file mode 100644 index 0000000..de06cb6 --- /dev/null +++ b/pkg.in/lists/workstation/ganttproject @@ -0,0 +1,2 @@ +java-11-openjdk@!mipsel +ganttproject diff --git a/pkg.in/lists/workstation/gnome-peer-to-peer b/pkg.in/lists/workstation/gnome-peer-to-peer new file mode 100644 index 0000000..5ba6d3b --- /dev/null +++ b/pkg.in/lists/workstation/gnome-peer-to-peer @@ -0,0 +1,2 @@ +transmission-gtk +eiskaltdcpp-gtk diff --git a/pkg.in/lists/workstation/graphics-editing b/pkg.in/lists/workstation/graphics-editing new file mode 100644 index 0000000..03c707a --- /dev/null +++ b/pkg.in/lists/workstation/graphics-editing @@ -0,0 +1,10 @@ +gimp2 +gimp-help-ru +gimp-help-en +gimp-plugin-gutenprint +gimp-plugin-ufraw@X86 +darktable@x86_64 +darktable@aarch64 +inkscape +hugin@X86 +autopano-sift-C diff --git a/pkg.in/lists/workstation/gtk-dictionary b/pkg.in/lists/workstation/gtk-dictionary new file mode 100644 index 0000000..134622c --- /dev/null +++ b/pkg.in/lists/workstation/gtk-dictionary @@ -0,0 +1,4 @@ +goldendict +dict-mueller7-utf8 +stardict-engcom +stardict-wn diff --git a/pkg.in/lists/workstation/kvm b/pkg.in/lists/workstation/kvm new file mode 100644 index 0000000..95f8585 --- /dev/null +++ b/pkg.in/lists/workstation/kvm @@ -0,0 +1,4 @@ +qemu-system +libvirt +virt-manager +gtk2-ssh-askpass diff --git a/pkg.in/lists/workstation/libreoffice b/pkg.in/lists/workstation/libreoffice new file mode 100644 index 0000000..0a3f410 --- /dev/null +++ b/pkg.in/lists/workstation/libreoffice @@ -0,0 +1,16 @@ +LibreOffice-still@!E2K +LibreOffice-still-langpack-ru@!E2K +LibreOffice-still-gtk3@!E2K +LibreOffice-still-common@!E2K + +LibreOffice@E2K +LibreOffice-langpack-ru@E2K +LibreOffice-common@E2K + +java-11-openjdk@!mipsel +libreoffice-languagetool@!mipsel +libcmis +libwps + +projectlibre@!mipsel +dia diff --git a/pkg.in/lists/workstation/libreoffice-latest b/pkg.in/lists/workstation/libreoffice-latest new file mode 100644 index 0000000..a4008a9 --- /dev/null +++ b/pkg.in/lists/workstation/libreoffice-latest @@ -0,0 +1,12 @@ +LibreOffice +LibreOffice-langpack-ru +LibreOffice-gtk3 +LibreOffice-common + +java-11-openjdk@!mipsel +libreoffice-languagetool@!mipsel +libcmis +libwps + +projectlibre@!mipsel +dia diff --git a/pkg.in/lists/workstation/live.pkgs b/pkg.in/lists/workstation/live.pkgs new file mode 100644 index 0000000..bf6d7d0 --- /dev/null +++ b/pkg.in/lists/workstation/live.pkgs @@ -0,0 +1,4 @@ +connector +luvcview@X86 + +xterm- diff --git a/pkg.in/lists/workstation/mate b/pkg.in/lists/workstation/mate new file mode 100644 index 0000000..88024fe --- /dev/null +++ b/pkg.in/lists/workstation/mate @@ -0,0 +1,77 @@ +#mate-full + +consolehelper + +pinentry-gnome3 +gcr +pinentry-qt5- + +# mate-default: +zenity +mate-polkit +mate-settings-daemon +mate-session +mate-panel +mate-control-center +mate-desktop +mate-window-manager +yelp +mate-user-guide +mate-menus +mate-system-monitor +gucharmap +mate-calc +mate-file-manager +mate-terminal +mate-file-manager-archiver +mate-text-editor +mate-icon-theme +mate-themes +libgtk2-engine-adwaita +mate-screensaver +gnome-keyring +seahorse +gvfs-backends +gvfs-utils +fuse-gvfs +mate-document-viewer +mate-document-viewer-thumbnailer +mate-document-viewer-caja +mate-document-viewer-djvu +mate-document-viewer-pixbuf +mate-document-viewer-xps +mate-applets +mate-utils +mate-system-log +mate-screenshot +mate-dictionary +mate-search-tool +mate-disk-usage-analyzer +dconf-editor +mate-notification-daemon +mate-media +gst-plugins-good1.0 +mate-image-viewer +parcellite +mate-menu-editor +mate-power-manager +blueberry +mate-file-manager-sendto +mate-file-manager-open-terminal +mate-file-manager-image-converter +mate-file-manager-extensions +mate-file-manager-wallpaper +mate-backgrounds + +vino-mate@X86 + +# for mate-screensaver +desktop-screensaver-modules-xscreensaver@!mipsel +desktop-screensaver-modules-xscreensaver-gl@!mipsel + +# put these two into a pkggroup so no-extra-services setup could be achieved +#mate-user-share +#mate-file-manager-share + +# ALT bugs #37967, #37966 +ImageMagick-tools diff --git a/pkg.in/lists/workstation/mate-usershare b/pkg.in/lists/workstation/mate-usershare new file mode 100644 index 0000000..2bfaa24 --- /dev/null +++ b/pkg.in/lists/workstation/mate-usershare @@ -0,0 +1,3 @@ +mate-file-manager-share +installer-feature-samba-usershares-stage2 +libnss-mdns diff --git a/pkg.in/lists/workstation/pidgin b/pkg.in/lists/workstation/pidgin new file mode 100644 index 0000000..3ab95a6 --- /dev/null +++ b/pkg.in/lists/workstation/pidgin @@ -0,0 +1,2 @@ +pidgin +pidgin-otr diff --git a/pkg.in/lists/workstation/qgis b/pkg.in/lists/workstation/qgis new file mode 100644 index 0000000..c25fa0b --- /dev/null +++ b/pkg.in/lists/workstation/qgis @@ -0,0 +1,3 @@ +qgis +#qgis-grass +qgis-python diff --git a/pkg.in/lists/workstation/raccess b/pkg.in/lists/workstation/raccess new file mode 100644 index 0000000..8c773d3 --- /dev/null +++ b/pkg.in/lists/workstation/raccess @@ -0,0 +1,6 @@ +openuds-client +remmina +remmina-plugins +rdesktop +connector +ansible diff --git a/pkg.in/lists/workstation/runa-client b/pkg.in/lists/workstation/runa-client new file mode 100644 index 0000000..474daa7 --- /dev/null +++ b/pkg.in/lists/workstation/runa-client @@ -0,0 +1,8 @@ +runawfe-adminkit +runawfe-client +runawfe-client-conf +runawfe-doc +runawfe-gpd +runawfe-notifier +runawfe-simulation +runawfe-jboss diff --git a/pkg.in/lists/workstation/scanning b/pkg.in/lists/workstation/scanning new file mode 100644 index 0000000..5603adf --- /dev/null +++ b/pkg.in/lists/workstation/scanning @@ -0,0 +1,7 @@ +sane +xsane +gimagereader-qt5 +tesseract +tesseract-langpack-ru +tesseract-langpack-en +hplip-sane diff --git a/pkg.in/lists/workstation/scribus b/pkg.in/lists/workstation/scribus new file mode 100644 index 0000000..9414f83 --- /dev/null +++ b/pkg.in/lists/workstation/scribus @@ -0,0 +1 @@ +scribus diff --git a/pkg.in/lists/workstation/smartcard b/pkg.in/lists/workstation/smartcard new file mode 100644 index 0000000..88a7198 --- /dev/null +++ b/pkg.in/lists/workstation/smartcard @@ -0,0 +1,18 @@ +card-actions + +# FIXME: cloned from ../tagged/base+smartcard :-/ +openct +opensc +pcsc-tools + +pcsc-lite +pcsc-lite-acsccid +pcsc-lite-asedriveiiie-usb +pcsc-lite-ccid +pcsc-lite-openct + +pam_pkcs11 + +openssl +openssl-engines +openssl-engine_pkcs11 diff --git a/pkg.in/lists/workstation/sound-editing b/pkg.in/lists/workstation/sound-editing new file mode 100644 index 0000000..480d970 --- /dev/null +++ b/pkg.in/lists/workstation/sound-editing @@ -0,0 +1 @@ +audacity diff --git a/pkg.in/lists/workstation/the.pkgs b/pkg.in/lists/workstation/the.pkgs new file mode 100644 index 0000000..1a3285e --- /dev/null +++ b/pkg.in/lists/workstation/the.pkgs @@ -0,0 +1,93 @@ +installer-feature-desktop-other-fs-stage2 +alterator-notes +userpasswd +pam-limits-desktop +beesu +audit +xmessage +etcnet-defaults-desktop +lsb-release +alterator-quota +alterator-control +alterator-x11 +alterator-logs +alterator-updates +alterator-net-iptables +alterator-update-kernel + +grub-customizer@X86 + +xorg-conf-libinput-touchpad + +# Support Chinese characters +fonts-bitmap-wqy + +make-initrd-ucode@X86 +iucode_tool@X86 +firmware-intel-ucode@X86 + +task-auth-ad-sssd +task-auth-ldap-sssd + +apt-indicator + +recoll-extras + +onboard + +# compat libs +libusb-compat@IA32 + +screen +terminfo-extra + +# Console fonts workaround +vconsole-setup-kludge@X86 + +fwupd@x86_64 + +rpminstall +gnome-software +gnome-software-disable-updates + +rosa-imagewriter +firefox-esr-ru + +# h.264 for firefox-esr 52.9.0-alt1.E2K.8 (ffmpeg 3) +libavcodec57@E2K +libavdevice57@E2K +libavfilter6@E2K +libavformat57@E2K + +disable-usb-autosuspend@X86 + +bluez +pulseaudio-bluez +gnome-bluetooth + +gpm +fdisk +dvd+rw-tools + +pv +mtr +net-tools +tcpdump +ipcalc +python3-module-serial +inxi +hwinfo@!E2K +htop +iotop +color-prompt-and-man +hunspell-ru-lebedev + +accountsservice + +alterator-printers +alterator-multiseat + +test-audio + +glmark2@aarch64 +glmark2-es2@aarch64 diff --git a/pkg.in/lists/workstation/thunderbird b/pkg.in/lists/workstation/thunderbird new file mode 100644 index 0000000..9136bf2 --- /dev/null +++ b/pkg.in/lists/workstation/thunderbird @@ -0,0 +1,4 @@ +thunderbird +thunderbird-ru +thunderbird-lightning +thunderbird-lightning-ru diff --git a/pkg.in/lists/workstation/virtualbox b/pkg.in/lists/workstation/virtualbox new file mode 100644 index 0000000..07c67d6 --- /dev/null +++ b/pkg.in/lists/workstation/virtualbox @@ -0,0 +1 @@ +virtualbox diff --git a/pkg.in/lists/workstation/vlc b/pkg.in/lists/workstation/vlc new file mode 100644 index 0000000..b0f6380 --- /dev/null +++ b/pkg.in/lists/workstation/vlc @@ -0,0 +1,10 @@ +vlc +vlc-plugin-h264 +vlc-plugin-h265 +vlc-plugin-modplug +vlc-plugin-speex + +totem-video-thumbnailer@X86 +simplescreenrecorder@X86 +cheese@X86 +gst-libav diff --git a/pkg.in/lists/workstation/voip-clients b/pkg.in/lists/workstation/voip-clients new file mode 100644 index 0000000..f2d235e --- /dev/null +++ b/pkg.in/lists/workstation/voip-clients @@ -0,0 +1,3 @@ +linphone@X86 +linphone@aarch64 +libbcg729 diff --git a/pkg.in/lists/x-e2k/e101-mga2 b/pkg.in/lists/x-e2k/e101-mga2 new file mode 100644 index 0000000..bcf8044 --- /dev/null +++ b/pkg.in/lists/x-e2k/e101-mga2 @@ -0,0 +1,3 @@ +xorg-conf-e101-mga2 +xorg-drv-mga2 +vivante_glx diff --git a/pkg.in/lists/x-e2k/e101-modesetting b/pkg.in/lists/x-e2k/e101-modesetting new file mode 100644 index 0000000..3108301 --- /dev/null +++ b/pkg.in/lists/x-e2k/e101-modesetting @@ -0,0 +1,2 @@ +xorg-conf-e101-modesetting +dummy-xorg-drv-vivante diff --git a/pkg.in/lists/x-e2k/e801-1seat b/pkg.in/lists/x-e2k/e801-1seat new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/x-e2k/e801-2seat b/pkg.in/lists/x-e2k/e801-2seat new file mode 100644 index 0000000..f5fea93 --- /dev/null +++ b/pkg.in/lists/x-e2k/e801-2seat @@ -0,0 +1,2 @@ +udev-conf-e801-2seat +setup-multiseat-pulse diff --git a/pkg.in/lists/x-e2k/e801-3seat b/pkg.in/lists/x-e2k/e801-3seat new file mode 100644 index 0000000..38db88a --- /dev/null +++ b/pkg.in/lists/x-e2k/e801-3seat @@ -0,0 +1,2 @@ +udev-conf-e801-3seat +setup-multiseat-pulse diff --git a/pkg.in/lists/x-e2k/e801-6seat b/pkg.in/lists/x-e2k/e801-6seat new file mode 100644 index 0000000..6d0b88f --- /dev/null +++ b/pkg.in/lists/x-e2k/e801-6seat @@ -0,0 +1,2 @@ +udev-conf-e801-6seat +setup-multiseat-pulse diff --git a/pkg.in/lists/x-e2k/e901-1seat b/pkg.in/lists/x-e2k/e901-1seat new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/lists/x-e2k/e901-2seat b/pkg.in/lists/x-e2k/e901-2seat new file mode 100644 index 0000000..561a82c --- /dev/null +++ b/pkg.in/lists/x-e2k/e901-2seat @@ -0,0 +1,2 @@ +udev-conf-e901-2seat +setup-multiseat-pulse diff --git a/pkg.in/lists/x-e2k/e901-3seat b/pkg.in/lists/x-e2k/e901-3seat new file mode 100644 index 0000000..42a0ce9 --- /dev/null +++ b/pkg.in/lists/x-e2k/e901-3seat @@ -0,0 +1,2 @@ +udev-conf-e901-3seat +setup-multiseat-pulse diff --git a/pkg.in/lists/x-e2k/x-autologin b/pkg.in/lists/x-e2k/x-autologin new file mode 100644 index 0000000..a771b1d --- /dev/null +++ b/pkg.in/lists/x-e2k/x-autologin @@ -0,0 +1,2 @@ +installer-feature-lightdm-multiseat-autologin-stage3 +setup-multiseat-autologin diff --git a/pkg.in/lists/xfce-sysv b/pkg.in/lists/xfce-sysv new file mode 100644 index 0000000..1146f1e --- /dev/null +++ b/pkg.in/lists/xfce-sysv @@ -0,0 +1,26 @@ +alsa-oss +apt-conf-ignore-systemd +cdrkit +ddrescue +elinks +fbset +gnome-disks +iotop +leafpad +man-pages-ru +man-pages-ru-extra +mpg123 +NetworkManager-tui +nload +ossp +pandoc +parcellite +pm-utils +pnmixer +qasmixer +SysVinit-usermode +sysstat +xfce4-screensaver +vlock +wget +whdd diff --git a/pkg.in/lists/zero b/pkg.in/lists/zero new file mode 100644 index 0000000..e69de29 diff --git a/pkg.in/profiles/Makefile b/pkg.in/profiles/Makefile new file mode 100644 index 0000000..38899ef --- /dev/null +++ b/pkg.in/profiles/Makefile @@ -0,0 +1,29 @@ +# step 3: copy package profiles referenced in distro configuration +# (and only those!) over to $(BUILDDIR) + +ifndef BUILDDIR +$(error BUILDDIR not defined) +endif + +include $(BUILDDIR)/distcfg.mk +SUFFIX := pkg/profiles +TARGET := $(BUILDDIR)/$(SUFFIX) + +all: | $(TARGET) $(GLOBAL_DEBUG) copy-profiles grep-archdep + @mp-commit "$(TARGET)" "requested $(SUFFIX) copied over" + +copy-profiles: + @if [ -n "$(THE_PROFILES)" ]; then \ + cp --parents -at $(TARGET) -- \ + $(addsuffix .directory,$(THE_PROFILES)); \ + fi + +grep-archdep: + @find $(TARGET) -type f \ + | xargs -r -I __ -- archdep-filter -a "$(ARCH)" -i __ + +$(TARGET): + @mkdir -p $(TARGET) + +debug: + @echo "** THE_PROFILES: $(THE_PROFILES)" diff --git a/pkg.in/profiles/README b/pkg.in/profiles/README new file mode 100644 index 0000000..fd5da5e --- /dev/null +++ b/pkg.in/profiles/README @@ -0,0 +1,5 @@ +=== pkg.in/profiles === + +Этот каталог содержит описания профилей установки дистрибутива. + +Состояние: экспериментальный перенос из mkimage-profiles-desktop. diff --git a/pkg.in/profiles/centaurus-10-server.directory b/pkg.in/profiles/centaurus-10-server.directory new file mode 100644 index 0000000..fe0b53f --- /dev/null +++ b/pkg.in/profiles/centaurus-10-server.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Office Server +Name[ru_RU]=Офисный сервер +X-Alterator-Groups=centaurus/dhcp-server-a centaurus/dns-server-a centaurus/ftp-server-a centaurus/mail-server-a centaurus/mysql-server-a centaurus/netinst centaurus/http-server centaurus/dns-server centaurus/bacula-server centaurus/kvm-server centaurus/xorg centaurus/samba centaurus/domain-server centaurus/alterator centaurus/owncloud centaurus/mediawiki centaurus/mate centaurus/office centaurus/cups diff --git a/pkg.in/profiles/centaurus-20-serverDC.directory b/pkg.in/profiles/centaurus-20-serverDC.directory new file mode 100644 index 0000000..0d0c35c --- /dev/null +++ b/pkg.in/profiles/centaurus-20-serverDC.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Samba-DC Server (AD controller) +Name[ru_RU]=Сервер Samba-DC (контроллер AD) +X-Alterator-Groups=centaurus/dhcp-server-a centaurus/mail-server-a centaurus/mysql-server-a centaurus/netinst centaurus/freenx-server centaurus/http-server centaurus/dns-server centaurus/bacula-server centaurus/kvm-server centaurus/xorg centaurus/sambaDC centaurus/cups centaurus/sogo diff --git a/pkg.in/profiles/centaurus-30-desktop.directory b/pkg.in/profiles/centaurus-30-desktop.directory new file mode 100644 index 0000000..1791b47 --- /dev/null +++ b/pkg.in/profiles/centaurus-30-desktop.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Workstation +Name[ru_RU]=Рабочая станция +X-Alterator-Groups=centaurus/mate centaurus/office centaurus/alterator centaurus/bacula-client-a centaurus/bacula-client centaurus/xorg centaurus/docs centaurus/vlc centaurus/cups diff --git a/pkg.in/profiles/engineering/00-minimal.directory b/pkg.in/profiles/engineering/00-minimal.directory new file mode 100644 index 0000000..f6dc69e --- /dev/null +++ b/pkg.in/profiles/engineering/00-minimal.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Minimal Install +Name[ru_RU]=Минимальная установка +X-Alterator-Groups= diff --git a/pkg.in/profiles/engineering/10-design.directory b/pkg.in/profiles/engineering/10-design.directory new file mode 100644 index 0000000..0ca71cd --- /dev/null +++ b/pkg.in/profiles/engineering/10-design.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Engineering Design +Name[ru_RU]=Инженерное ПО для проектирования +X-Alterator-Groups=engineering/2d-cad engineering/3d-cad engineering/eda diff --git a/pkg.in/profiles/engineering/20-automations.directory b/pkg.in/profiles/engineering/20-automations.directory new file mode 100644 index 0000000..78d8106 --- /dev/null +++ b/pkg.in/profiles/engineering/20-automations.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Engineering Automation +Name[ru_RU]=Инженерное ПО для АСУТП +X-Alterator-Groups=engineering/2d-cad engineering/apcs engineering/cam engineering/cnc engineering/eda engineering/scada diff --git a/pkg.in/profiles/minimal.directory b/pkg.in/profiles/minimal.directory new file mode 100644 index 0000000..f6dc69e --- /dev/null +++ b/pkg.in/profiles/minimal.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Minimal Install +Name[ru_RU]=Минимальная установка +X-Alterator-Groups= diff --git a/pkg.in/profiles/server-v/111-opennebula-server.directory b/pkg.in/profiles/server-v/111-opennebula-server.directory new file mode 100644 index 0000000..d034433 --- /dev/null +++ b/pkg.in/profiles/server-v/111-opennebula-server.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Opennebula Control Server +Name[ru_RU]=Сервер управления Opennebula +X-Alterator-Groups=server-v/opennebula/server server-v/opennebula/flow server-v/opennebula/gate server-v/opennebula/gui diff --git a/pkg.in/profiles/server-v/112-opennebula-node.directory b/pkg.in/profiles/server-v/112-opennebula-node.directory new file mode 100644 index 0000000..58f68fe --- /dev/null +++ b/pkg.in/profiles/server-v/112-opennebula-node.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Opennebula Computing KVM Node +Name[ru_RU]=Вычислительный узел Opennebula KVM +X-Alterator-Groups=server-v/opennebula/node-kvm diff --git a/pkg.in/profiles/server-v/113-opennebula-lxd.directory b/pkg.in/profiles/server-v/113-opennebula-lxd.directory new file mode 100644 index 0000000..114e9f7 --- /dev/null +++ b/pkg.in/profiles/server-v/113-opennebula-lxd.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Opennebula Computing LXD Node +Name[ru_RU]=Вычислительный узел Opennebula LXD +X-Alterator-Groups=server-v/opennebula/node-lxd diff --git a/pkg.in/profiles/server-v/121-openstack-node.directory b/pkg.in/profiles/server-v/121-openstack-node.directory new file mode 100644 index 0000000..3b58195 --- /dev/null +++ b/pkg.in/profiles/server-v/121-openstack-node.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=OpenStack Computing KVM Node +Name[ru_RU]=Вычислительный узел OpenStack KVM +X-Alterator-Groups=server-v/openstack/compute diff --git a/pkg.in/profiles/server-v/122-openstack-controller.directory b/pkg.in/profiles/server-v/122-openstack-controller.directory new file mode 100644 index 0000000..3b64a17 --- /dev/null +++ b/pkg.in/profiles/server-v/122-openstack-controller.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=OpenStack Controller Node +Name[ru_RU]=Управляющий узел OpenStack +X-Alterator-Groups=server-v/openstack/controller server-v/openstack/block server-v/openstack/network diff --git a/pkg.in/profiles/server-v/130-pve.directory b/pkg.in/profiles/server-v/130-pve.directory new file mode 100644 index 0000000..386533d --- /dev/null +++ b/pkg.in/profiles/server-v/130-pve.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Proxmox Virtual Environment +Name[ru_RU]=Виртуальное Окружение Proxmox +X-Alterator-Groups=server-v/pve diff --git a/pkg.in/profiles/server-v/140-basic.directory b/pkg.in/profiles/server-v/140-basic.directory new file mode 100644 index 0000000..a4a2b71 --- /dev/null +++ b/pkg.in/profiles/server-v/140-basic.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Basic Virtualization +Name[ru_RU]=Базовая виртуализация +X-Alterator-Groups=server-v/kvm diff --git a/pkg.in/profiles/server-v/201-docker.directory b/pkg.in/profiles/server-v/201-docker.directory new file mode 100644 index 0000000..e651d40 --- /dev/null +++ b/pkg.in/profiles/server-v/201-docker.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Docker +Name[ru_RU]=Docker +X-Alterator-Groups=server-v/docker diff --git a/pkg.in/profiles/server-v/211-openvz.directory b/pkg.in/profiles/server-v/211-openvz.directory new file mode 100644 index 0000000..372b8cd --- /dev/null +++ b/pkg.in/profiles/server-v/211-openvz.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=OpenVZ +Name[ru_RU]=OpenVZ +X-Alterator-Groups=server-v/openvz diff --git a/pkg.in/profiles/server-v/999-minimal.directory b/pkg.in/profiles/server-v/999-minimal.directory new file mode 100644 index 0000000..f6dc69e --- /dev/null +++ b/pkg.in/profiles/server-v/999-minimal.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Directory +Name=Minimal Install +Name[ru_RU]=Минимальная установка +X-Alterator-Groups= diff --git a/reports.mk b/reports.mk new file mode 100644 index 0000000..a6ff1d2 --- /dev/null +++ b/reports.mk @@ -0,0 +1,119 @@ +# collect what's left + +ifneq (,$(REPORT)) + +include lib/common.mk + +BUILDDIR := $(shell sed -n 's/^.* BUILDDIR = \(.*\)/\1/p' "$(REPORT_PATH)") +BUILDLOG := $(BUILDDIR)/$(BUILD_LOG) +BUILDCFG := $(BUILDDIR)/distcfg.mk +REPORTDIR := $(BUILDDIR)/reports +IMAGE_OUTPATH := $(shell sed -n 's/^IMAGE_OUTPATH = \(.*\)/\1/p' $(BUILDLOG)) +IMAGE_OUTFILE := $(shell sed -n 's/^IMAGE_OUTFILE = \(.*\)/\1/p' $(BUILDLOG)) +LOGDIR := $(shell sed -n 's/^LOGDIR = \(.*\)/\1/p' $(BUILDLOG)) +ifeq (,$(LOGDIR)) +LOGDIR := $(shell sed -n 's/^LOGDIR ?= \(.*\)/\1/p' $(BUILDCFG)) +endif +ifeq (,$(IMAGE_OUTPATH)) +TARGET_NAME := $(shell sed -n 's/^IMAGE_NAME = \(.*\)/\1/p' $(BUILDDIR)/distcfg.mk) +TARGET_TYPE := $(shell sed -n 's/^IMAGE_TYPE = \(.*\)/\1/p' $(BUILDDIR)/distcfg.mk) +TARGET_NAME := $(TARGET_NAME).$(TARGET_TYPE) +LOGDIR := $(LOGDIR)/CHECK +endif + +# for a multi-image build there's no sense to refer to buildroot +# contained reports as these are very ephemeral between builds +ifneq (1,$(NUM_TARGETS)) +SHORTEN := >/dev/null +else +SHORTEN := >>$(BUILDLOG) +endif + +report = $(and $(1),$(report_body)) +define report_body +{ if [ -s "$$OUT" ]; then \ + echo "** $(1): $$OUT" $(SHORTEN); \ +fi; } +endef + +ifneq (,$(IMAGE_OUTPATH)) +all: reports/targets reports/scripts reports/cleanlog \ + reports/contents reports/packages + @rm -fr "$(LOGDIR)/$(IMAGE_OUTFILE).reports" + @cp -a "$(REPORTDIR)" "$(LOGDIR)/$(IMAGE_OUTFILE).reports" + @mv $(LOGDIR)/{$(IMAGE_OUTFILE),$(IMAGE_OUTFILE).reports/build}.log + @mv $(LOGDIR)/{$(IMAGE_OUTFILE),$(IMAGE_OUTFILE).reports/build}.cfg + @find $(BUILDDIR)/pkg/ -type f | sed 's:$(BUILDDIR)/pkg/::' > \ + "$(LOGDIR)/$(IMAGE_OUTFILE).reports/pkg.list" +else +all: reports/prep reports/targets reports/scripts + @rm -fr "$(LOGDIR)/$(TARGET_NAME).reports" + @cp -a "$(REPORTDIR)" "$(LOGDIR)/$(TARGET_NAME).reports" + @if [ -f "$(BUILDCFG)" ]; then \ + cp -a "$(BUILDCFG)" "$(LOGDIR)/$(TARGET_NAME).reports/build.cfg"; \ + fi + @find $(BUILDDIR)/pkg/ -type f | sed 's:$(BUILDDIR)/pkg/::' > \ + "$(LOGDIR)/$(TARGET_NAME).reports/pkg.list" +endif + +reports/prep: + @mkdir -p "$(REPORTDIR)" "$(LOGDIR)" + +# try to drop common noise rendering diff(1) mostly useless +reports/cleanlog: reports/prep + @OUT="$(REPORTDIR)/$(@F).log"; \ + BUILDDIR="$(BUILDDIR)" \ + cleanlog < $(BUILDLOG) > "$$OUT" \ + && $(call report,diffable log) + +reports/scripts: reports/prep + @OUT="$(REPORTDIR)/$(@F).log"; \ + grep "^mki.*scripts: Run: " $(BUILDLOG) \ + | sed -rn "s,^.*($(BUILDDIR)|$(SYMLINK))/(.*)'$$,\2,p" > "$$OUT" \ + && $(call report,scripts report) + +reports/targets: reports/prep + @if ! [ -n "$(REPORT_PATH)" -a -s "$(REPORT_PATH)" ]; then \ + exit 0; \ + fi; \ + if type -t dot >&/dev/null; then \ + OUT="$(REPORTDIR)/$(@F).svgz"; \ + report-targets < "$(REPORT_PATH)" \ + | dot -Tsvgz -o "$$OUT" \ + && $(call report,target graph report); \ + if type -t rsvg-convert >&/dev/null; then \ + IN="$$OUT"; \ + OUT="$(REPORTDIR)/$(@F).pdf"; \ + rsvg-convert -f pdf "$$IN" -o "$$OUT"; \ + fi; \ + else \ + OUT="$(BUILDDIR)/targets.dot"; \ + report-targets < "$(REPORT_PATH)" > "$$OUT" \ + && $(call report,graphviz missing, target graph dot file); \ + fi; \ + mv "$(REPORT_PATH)" "$(REPORTDIR)/$(@F).log" + +reports/contents: reports/prep + @case $(IMAGE_OUTFILE) in \ + *.iso) \ + if type -t isoinfo >&/dev/null; then \ + OUT="$(REPORTDIR)/$(@F).txt"; \ + isoinfo -f -R -i $(IMAGE_OUTPATH) > $$OUT \ + && $(call report,contents list); \ + else \ + echo "reports.mk: missing isoinfo" >&2; \ + fi; \ + esac + +reports/packages: SHELL = /bin/bash +reports/packages: reports/prep + @grep -E 'chroot/.in/[^/]*.rpm' < $(BUILDLOG) | \ + cut -d' ' -f 1 | tr -d "'"'`' | \ + tee /dev/stderr 2> >(sed 's,^.*/,,' | \ + sort -u > "$(REPORTDIR)/list-rpms.txt") | \ + xargs -r rpm -qp --queryformat '%{sourcerpm}\n' | \ + sort -u > "$(REPORTDIR)/list-srpms.txt" + +else +all:; @: +endif diff --git a/sub.in/Makefile b/sub.in/Makefile new file mode 100644 index 0000000..177882d --- /dev/null +++ b/sub.in/Makefile @@ -0,0 +1,35 @@ +# step 3: copy the needed subprofiles to $(BUILDDIR) + +ifndef BUILDDIR +$(error BUILDDIR not defined) +endif + +include $(BUILDDIR)/distcfg.mk + +# if the subprofile is specified in src/dst notation, +# take src/ and put it as dst/ (for stage2 variants) +# NB: rootfs may come in first +all: + @for sub in $(SUBPROFILES); do \ + src="$${sub%@*}" && \ + dst="$${sub#*@}" && \ + neq="$${src#$$dst}" && \ + dstdir=""$(BUILDDIR)/$$dst/"" && \ + if [ -d "$$dstdir" ]; then \ + action="complemented"; \ + else \ + action="initialized"; \ + fi; \ + rsync -qa --exclude .gitignore "$$src/" "$(BUILDDIR)/$$dst/" && \ + mp-commit "$(BUILDDIR)/$$dst/" \ + "$$dst subprofile $$action$${neq:+ (using $$src)}"; \ + done + +clean: + @for sub in $(SUBPROFILES); do \ + dst="${sub#*@}" && \ + if [ -n "$$dst" -a -n "$(BUILDDIR)" ]; then \ + rm -r "$(BUILDDIR)/$$dst" && \ + mkdir -p "$(BUILDDIR)/$$dst"; \ + fi; \ + done diff --git a/sub.in/README b/sub.in/README new file mode 100644 index 0000000..c3b57d3 --- /dev/null +++ b/sub.in/README @@ -0,0 +1,38 @@ +== sub.in == + +Этот каталог содержит субпрофили; содержимое затребованных +(названия которых содержатся в значении переменной SUBPROFILES, +которую заполняют цели sub/* -- см. lib/sugar.mk) будет +скопировано в корневой каталог формируемого профиля. + +Просьба ответственно относиться к изменению существующих субпрофилей +и вдумчиво -- к созданию новых; возможно, достаточно всего лишь +оформить нужное новой фичей (см. features.in/). + +Обратите внимание: поскольку сборка частей дистрибутивного образа +и происходит в каталогах субпрофилей, то повторное использование +одного простого субпрофиля в рамках сгенерированного профиля штатным +образом невозможно. Если требуется создать несколько близких по +реализации субпрофилей, изучите stage2 и задействующие его фичи. + +Краткое описание существующих вариантов (см. соотв. README): + +* rootfs является особым случаем, который используется при + формировании файловых систем, предназначенных для пользователя + (т.е. корень LiveCD, образа VM, ...) + +* stage1: propagator и загрузчик (совместно с фичей syslinux); + типично требуется для инсталяторов, live- и rescue-образов, + но может использоваться без добавления таковых в образ, + обеспечивая сетевую загрузку второй стадии + +* stage2: наиболее сложный технологически субпрофиль, поскольку + он является только базовым для получения ряда итоговых частей + дистрибутива (install2, live, rescue); задействуется для этого + только опосредованно через use/stage2/* и модифицирует stage1 + в силу наличия связи между ними (в stage1 попадает образ ядра + и firmware, в stage2 -- соответствующие модули) + +* main: пакетная база, укладываемая на образ (NB: поскольку рабочий + чрут в этом случае не содержит ничего, кроме пакетов, добавлять + что-либо в image-scripts.d смысла нет, только в scripts.d) diff --git a/sub.in/main/Makefile b/sub.in/main/Makefile new file mode 100644 index 0000000..25fa710 --- /dev/null +++ b/sub.in/main/Makefile @@ -0,0 +1,44 @@ +# step 4: build main subprofile (requisite + optional packages for media) + +ifndef GLOBAL_BUILDDIR +$(error GLOBAL_BUILDDIR not defined) +endif + +default: all + +MAIN_SUFFIX := main + +include $(GLOBAL_BUILDDIR)/distcfg.mk +include $(GLOBAL_BUILDDIR)/functions.mk +include $(MKIMAGE_PREFIX)/config.mk + +CHROOT_PACKAGES = apt-utils rsync + +IMAGE_PACKAGES_REGEXP = $(BASE_PACKAGES_REGEXP) \ + $(THE_PACKAGES_REGEXP) \ + $(MAIN_PACKAGES_REGEXP) \ + $(call kpackages, \ + $(KFLAVOURS), \ + $(BASE_KMODULES) \ + $(BASE_KMODULES_REGEXP) \ + $(THE_KMODULES) \ + $(MAIN_KMODULES)) + +IMAGE_PACKAGES = $(SYSTEM_PACKAGES) $(COMMON_PACKAGES) \ + $(BASE_PACKAGES) $(THE_PACKAGES) $(MAIN_PACKAGES) \ + $(call map,list,$(BASE_LISTS) $(THE_LISTS) $(MAIN_LISTS) \ + $(COMMON_LISTS) \ + $(call groups2lists)) + +-include $(sort $(wildcard lib/*.mk)) + +MKI_DESTDIR = ALTLinux/RPMS.$(MAIN_SUFFIX) +MKI_PACK_RESULTS = data + +include $(MKIMAGE_PREFIX)/targets.mk + +all: $(GLOBAL_DEBUG) copy-packages pack-image $(GLOBAL_CLEAN_WORKDIR) + +debug: + @echo "** main: IMAGE_PACKAGES: $(IMAGE_PACKAGES)" + @echo "** main: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)" diff --git a/sub.in/main/README b/sub.in/main/README new file mode 100644 index 0000000..8ae5adf --- /dev/null +++ b/sub.in/main/README @@ -0,0 +1,23 @@ +=== sub.in/main === + +Этот каталог содержит субпрофиль main, собирающий пакетную базу +для локальной инсталяции дистрибутива из полученного образа, +включая необязательные пакеты; в distro/live-builder применяется +как локальный репозиторий для сборки. + +Рекомендуется использовать BASE_PACKAGES и BASE_LISTS для того, +что должно быть установлено по умолчанию, и MAIN_PACKAGES, MAIN_LISTS +-- для того, что должно быть доступно на носителе; подробнее см. +в документации фичи metadata. + +Если что-либо требуется как в main, так и в live, применяйте +THE_PACKAGES и THE_LISTS вместо дублирования вручную. + +В image-scripts.d смысла нет, только scripts.d, т.к. рабочий чрут +не содержит исполняемых файлов. + +Не следует использовать этот субпрофиль напрямую, для добавления +пакетного репозитория в образ предназначена фича use/repo/main. + +Результат -- каталог ALTLinux/RPMS.main для копирования в образ +(если не указан иной суффикс посредством переменной MAIN_SUFFIX). diff --git a/sub.in/main/lib/.gitignore b/sub.in/main/lib/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sub.in/rootfs/README b/sub.in/rootfs/README new file mode 100644 index 0000000..bcd8e8f --- /dev/null +++ b/sub.in/rootfs/README @@ -0,0 +1,19 @@ +=== sub.in/rootfs === + +Этот каталог содержит общие компоненты, добавляемые в "пользовательскую" +корневую файловую систему вне зависимости от того, с чем именно в итоге +столкнётся обычный пользователь: livecd, vm/ve, но не rescue (который +может входить в комплексный дистрибутив, но не должен дублировать его). + +Соответственно функциональность вроде настройки автоматического входа +в систему, которая должна быть задействована вне зависимости от того, +какая часть профиля отвечает за формирование итоговой "пользоФС", +может быть помещена в подкаталог rootfs/ (аналогично stage2/ для фич, +дополняющих все производные субпрофиля stage2). + +В фичах, опирающихся на функциональность rootfs, следует указывать +зависимость на sub/rootfs@нужное (например, sub/rootfs@live в фиче +live, порождающей субпрофиль live из субпрофиля stage2). + +Зависимость на sub/rootfs не имеет смысла, указывать подобное не следует +ни в фичах, дополняющих rootfs, ни в фичах, опирающихся на неё. diff --git a/sub.in/rootfs/image-scripts.d/90-firsttime b/sub.in/rootfs/image-scripts.d/90-firsttime new file mode 100755 index 0000000..b96cf33 --- /dev/null +++ b/sub.in/rootfs/image-scripts.d/90-firsttime @@ -0,0 +1,3 @@ +#!/bin/sh +# Run scripts from /etc/firsttime.d at first start +[ -f "/etc/firsttime.flag" ] || touch "/etc/firsttime.flag" diff --git a/sub.in/stage1/Makefile b/sub.in/stage1/Makefile new file mode 100644 index 0000000..6cf1642 --- /dev/null +++ b/sub.in/stage1/Makefile @@ -0,0 +1,76 @@ +# step 4: build stage1 subprofile (installer bootstrap) + +ifndef GLOBAL_BUILDDIR +$(error GLOBAL_BUILDDIR not defined) +endif + +include $(GLOBAL_BUILDDIR)/distcfg.mk +include $(GLOBAL_BUILDDIR)/functions.mk +include $(MKIMAGE_PREFIX)/config.mk + +ifndef BOOTLOADER +$(error BOOTLOADER not defined) +endif +GLOBAL_BOOTLOADER := $(BOOTLOADER) + +MKI_PACK_RESULTS = data +COPY_TREE = ./files + +include $(MKIMAGE_PREFIX)/targets.mk + +# here we try and come up with the installer kernel/modules, if any; +# only for grub allowed multiple kernels, for other a single kernel +# might be needed (STAGE1_KFLAVOURS sets explicitly); +# kernel image copied from instrumental chroot into .work/boot/ +ifeq (grubpcboot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (grub-efi,$(EFI_BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (ieee1275boot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +STAGE1_KFLAVOURS ?= $(lastword $(KFLAVOURS)) + +# propagator needed iff stage1 kernel installed (not for e.g. syslinux.iso) +ifneq "$(STAGE1_KFLAVOURS)" "" +GLOBAL_STAGE1_KFLAVOURS := $(STAGE1_KFLAVOURS) +CHROOT_PACKAGES_REGEXP := $(call kpackages, \ + $(STAGE1_KFLAVOURS),$(STAGE1_KMODULES),$(STAGE1_KMODULES_REGEXP)) +ifneq "$(STAGE1_MODLISTS))" "" +LIST_MODULES = .work/chroot/.in/modules +PREPARE_MODULES = prepare-modules +endif +endif + +CHROOT_PACKAGES_REGEXP += $(STAGE1_PACKAGES_REGEXP) +CHROOT_PACKAGES = $(STAGE1_PACKAGES) $(SYSTEM_PACKAGES) + +# pass for use/stage2 +GLOBAL_SQUASHFS := $(SQUASHFS) + +-include $(sort $(wildcard lib/*.mk)) + +prepare-modules: + @echo $(foreach V,$(STAGE1_MODLISTS),$(wildcard modules.d/??-$(V))) \ + | xargs -r -- cat >> $(LIST_MODULES) + +# scripts prepare bootloader configuration, too +# NB: we pass tested squashfs options for sub.in/stage2/Makefile to include +all: | debug prepare-workdir copy-tree $(PREPARE_MODULES) run-scripts \ + $(COPY_SQUASHCFG) pack-image $(GLOBAL_CLEAN_WORKDIR) + @if [ -s $(OUTDIR)/squashcfg.mk ]; then \ + cp $(OUTDIR)/squashcfg.mk $(GLOBAL_BUILDDIR)/; \ + fi + +debug: + @if [ -n "$(GLOBAL_VERBOSE)" ]; then \ + echo "** BRANDING: $(BRANDING)"; \ + echo "** IMAGE_INIT_LIST: $(IMAGE_INIT_LIST)"; \ + echo "** STAGE1_PACKAGES: $(STAGE1_PACKAGES)"; \ + echo "** STAGE1_PACKAGES_REGEXP: $(STAGE1_PACKAGES_REGEXP)"; \ + echo "** CHROOT_PACKAGES: $(CHROOT_PACKAGES)"; \ + echo "** CHROOT_PACKAGES_REGEXP: $(CHROOT_PACKAGES_REGEXP)"; \ + echo "** BOOTLOADER: $(BOOTLOADER)"; \ + fi diff --git a/sub.in/stage1/README b/sub.in/stage1/README new file mode 100644 index 0000000..8923731 --- /dev/null +++ b/sub.in/stage1/README @@ -0,0 +1,27 @@ +=== sub.in/stage1 === + +Этот каталог содержит субпрофиль первой стадии загрузки; +здесь место syslinux (загрузчик) и propagator (ориентировка +на местности, вытягивание второй стадии с CD/FTP/...). + +Скрипты запускаются извне формируемого образа (scripts.d/); +следует крайне бережно относиться к объёму этой стадии. + +Обратите внимание: если не указать явно требуемый вариант +ядер посредством STAGE1_KFLAVOURS, то будет взят из KFLAVOURS; +если используется загрузчик отличный от grub, то будет взят +последний указанный в STAGE1_KFLAVOURS или KFLAVOURS; +если не указать явно регэкс, описывающий требуемые в инсталяторе +kernel-modules-*, посредством STAGE1_KMODULES_REGEXP -- будут +доступны модули из kernel-image (упаковываются в boot/full*.cz). + +Сам список модулей, попадающих в full.cz, определяется +в файле modules (наиболее базовые!) и дополняется указанным +в переменной STAGE1_MODLISTS набором списков модулей, см. +features.in/stage2/stage1/modules.d/ в качестве примера. + +Требуется для инсталяционных, live- и rescue-образов, +соответствующими фичами подключается автоматически +(в силу зависимости stage2 от stage1). + +Результат -- каталог syslinux/ для копирования в образ. diff --git a/sub.in/stage1/files/.gitignore b/sub.in/stage1/files/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sub.in/stage1/initfs b/sub.in/stage1/initfs new file mode 100644 index 0000000..59905b8 --- /dev/null +++ b/sub.in/stage1/initfs @@ -0,0 +1 @@ +file /.VERSION @TMPDIR@/.VERSION 0644 0 0 diff --git a/sub.in/stage1/modules b/sub.in/stage1/modules new file mode 100644 index 0000000..54814ad --- /dev/null +++ b/sub.in/stage1/modules @@ -0,0 +1,19 @@ +kernel/lib +kernel/drivers/crypto +kernel/drivers/rtc +arc4.ko +aufs.ko +overlay.ko +cdrom.ko +evdev.ko +ext4.ko +isofs.ko +loop.ko +md4.ko +serio_raw.ko +scsi_mod.ko +sd_mod.ko +sha256-ssse3.ko +squashfs.ko +sr_mod.ko +usbhid.ko diff --git a/sub.in/stage1/modules.d/.gitignore b/sub.in/stage1/modules.d/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sub.in/stage1/scripts.d/.gitignore b/sub.in/stage1/scripts.d/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sub.in/stage2/Makefile b/sub.in/stage2/Makefile new file mode 100644 index 0000000..aff2841 --- /dev/null +++ b/sub.in/stage2/Makefile @@ -0,0 +1,77 @@ +# step 4: build a stage2 subprofile (custom livecd) + +# NB: stage2 is not standalone but rather a common base +# for all livecd images (installer, live, rescue) + +ifndef GLOBAL_BUILDDIR +$(error GLOBAL_BUILDDIR not defined) +endif + +default: all + +include $(GLOBAL_BUILDDIR)/distcfg.mk +include $(GLOBAL_BUILDDIR)/functions.mk +include $(MKIMAGE_PREFIX)/config.mk + +COPY_TREE = ./files + +# this might have been prepared +# by features.in/stage2/stage1/scripts.d/03-test-kernel +-include $(GLOBAL_BUILDDIR)/squashcfg.mk + +# this should be brought in by corresponding specific stage2 feature +include stage2cfg.mk + +# requisite stuff +IMAGE_PACKAGES += $(SYSTEM_PACKAGES) $(STAGE2_PACKAGES) + +# here we try and come up with the installer kernel/modules, if any; +# only for grub allowed multiple kernels, for other a single kernel +# might be needed (STAGE1_KFLAVOURS sets explicitly); +# kernel image copied from instrumental chroot into .work/boot/ +ifeq (grubpcboot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (grub-efi,$(EFI_BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +ifeq (ieee1275boot,$(BOOTLOADER)) +STAGE1_KFLAVOURS ?= $(KFLAVOURS) +endif +STAGE1_KFLAVOURS ?= $(lastword $(KFLAVOURS)) + +ifeq (,$(STAGE1_KFLAVOURS)) +$(error STAGE1_KFLAVOURS is utterly empty; cannot guess either) +endif + +# need kernel modules only (which require corresponding kernel-image); +# these go into work chroot; NB: no vmlinuz there (unless live-install) +IMAGE_PACKAGES_REGEXP += $(call kpackages, \ + $(STAGE1_KFLAVOURS), \ + $(STAGE1_KMODULES) $(STAGE1_KMODULES_REGEXP) \ + $(STAGE2_KMODULES) $(STAGE2_KMODULES_REGEXP)) + +-include $(sort $(wildcard lib/*.mk)) + +# see also ./scripts.d/99-elf-stats +ifdef GLOBAL_SQUASHFS_SORT +ifeq (tight,$(SQUASHFS)) +CHROOT_PACKAGES += file +pack-image: PACK_SQUASHFS_OPTS += -sort /.our/elf.lst +pack-image: CLEANUP_OUTDIR= +endif +endif + +GLOBAL_SQUASHFS := $(SQUASHFS) + +include $(MKIMAGE_PREFIX)/targets.mk + +# NB: it's a collector variable, add()ing to a GLOBAL_ results in lost hair +GLOBAL_CLEANUP_PACKAGES := $(CLEANUP_PACKAGES) + +all: | $(GLOBAL_DEBUG) \ + build-image run-image-scripts copy-tree run-scripts pack-image \ + $(GLOBAL_CLEAN_WORKDIR) + +# dummy +debug:: ; diff --git a/sub.in/stage2/README b/sub.in/stage2/README new file mode 100644 index 0000000..8e868e5 --- /dev/null +++ b/sub.in/stage2/README @@ -0,0 +1,16 @@ +=== sub.in/stage2 === + +Этот каталог содержит общий базовый субпрофиль "живой" второй стадии, +используемый для сборки образов install2, live, rescue (возможно, +нескольких одновременно в составе одного дистрибутива). + +Зависимость на него стоит прописывать в таких фичах; +сама по себе (без нужного stage2cfg.mk) смысла не имеет. + +Обратите внимание, что набор потенциально доступных в stage1 +модулей ядра для stage2 может быть расширен (STAGE2_KMODULES). + +Результат -- соответственно названный файл со squashfs, +подлежащий копированию в итоговый образ. + +NB: смонтированный образ доступен в такой системе как /image/. diff --git a/sub.in/stage2/files/.gitignore b/sub.in/stage2/files/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sub.in/stage2/image-scripts.d/00-stage1 b/sub.in/stage2/image-scripts.d/00-stage1 new file mode 100755 index 0000000..2f65ba0 --- /dev/null +++ b/sub.in/stage2/image-scripts.d/00-stage1 @@ -0,0 +1,5 @@ +#!/bin/sh + +# propagator needs this, +# "FATAL ERROR IN INIT: overmounting /image" otherwise +mkdir -p /image diff --git a/sub.in/stage2/image-scripts.d/01-rootdir b/sub.in/stage2/image-scripts.d/01-rootdir new file mode 100755 index 0000000..b318b38 --- /dev/null +++ b/sub.in/stage2/image-scripts.d/01-rootdir @@ -0,0 +1,6 @@ +#!/bin/sh +# fixup chroot's toplevel directory permissions (use to become 1775) + +chmod 755 / + +rm -f /.gitignore diff --git a/sub.in/stage2/image-scripts.d/50-udev b/sub.in/stage2/image-scripts.d/50-udev new file mode 100755 index 0000000..064edca --- /dev/null +++ b/sub.in/stage2/image-scripts.d/50-udev @@ -0,0 +1,9 @@ +#!/bin/sh + +# for udev +ln -sf /proc/mounts /etc/mtab + +# pam_console_apply is harmful during install +find /etc/udev/rules.d/ -type f -print0 | + xargs -r0 fgrep -Zl pam_console_apply -- | + xargs -r0 rm -fv -- diff --git a/sub.in/stage2/image-scripts.d/85-cleanup-cjk b/sub.in/stage2/image-scripts.d/85-cleanup-cjk new file mode 100755 index 0000000..9d65ce0 --- /dev/null +++ b/sub.in/stage2/image-scripts.d/85-cleanup-cjk @@ -0,0 +1,25 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# remove unused fonts +cd /usr/share/fonts/bitmap/misc/ && + rm -f *ja.* *ko.* han* gb* jis* k14* rk* *rk.* *kana* cl* *JIS* + +# drop unneeded translations +cd /usr/share/qt?/translations/ && rm -f *_zh* *_ja* + +# l10n +cd /usr/share/X11/locale && rm -rf ja* ko* th* vi* zh* + +# xkb +cd /usr/share/X11/xkb/symbols && rm -rf jp kr th vn cn + +# locales +cd /usr/lib/locale && rm -rf ja_* ko_* th_* zh_* + +# gconv +cd /usr/lib*/gconv && rm -f JIS* T* + +: diff --git a/sub.in/stage2/image-scripts.d/85-cleanup-legacy b/sub.in/stage2/image-scripts.d/85-cleanup-legacy new file mode 100755 index 0000000..c50ae88 --- /dev/null +++ b/sub.in/stage2/image-scripts.d/85-cleanup-legacy @@ -0,0 +1,20 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# remove unused legacy/tiny fonts +#cd /usr/share/fonts/bitmap/misc/ && rm -f *ISO* *KOI* [1456]* +cd /usr/share/fonts/bitmap/misc/ && rm -f [1456]* + +# l10n +cd /usr/share/X11/locale/ && rm -rf *[^C8]/ iso* + +# xkb +cd /usr/share/X11/xkb/symbols && rm -rf *_vndr + +# gconv +#cd /usr/lib*/gconv && rm -f CP* ISO* *JIS* KOI* HP* MAC* +cd /usr/lib*/gconv && rm -f CP* *JIS* HP* MAC* + +: diff --git a/sub.in/stage2/image-scripts.d/90-cleanup-drm b/sub.in/stage2/image-scripts.d/90-cleanup-drm new file mode 100755 index 0000000..c7a7651 --- /dev/null +++ b/sub.in/stage2/image-scripts.d/90-cleanup-drm @@ -0,0 +1,10 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# no sense in xorg-dri-* without kernel-modules-drm* +stat /lib/modules/*/kernel/drivers/gpu/drm >&/dev/null \ +|| rm -rf /usr/lib*/X11/modules/dri/ + +: diff --git a/sub.in/stage2/image-scripts.d/97-cleanup-blacklisted b/sub.in/stage2/image-scripts.d/97-cleanup-blacklisted new file mode 100755 index 0000000..85311c5 --- /dev/null +++ b/sub.in/stage2/image-scripts.d/97-cleanup-blacklisted @@ -0,0 +1,12 @@ +#!/bin/sh + +# don't cripple the image to be copied over +[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 + +# blacklisted kernel modules +sed -n 's/^blacklist[[:space:]]\+\([^[:space:]]\+\).*/\1/p' /etc/modprobe.d/* | + while read i; do + find /lib/modules/ -type f -name "$i.ko" -delete + done + +: diff --git a/sub.in/stage2/image-scripts.d/98-depmod b/sub.in/stage2/image-scripts.d/98-depmod new file mode 100755 index 0000000..fa7ab75 --- /dev/null +++ b/sub.in/stage2/image-scripts.d/98-depmod @@ -0,0 +1,12 @@ +#!/bin/sh +# regenerate module dependencies after pruning kernel modules +# (this script must run after anything touching /lib/modules) + +cd /lib/modules +for i in *.*; do + if [ "$i" = "*.*" ]; then + echo "** error: no valid KFLAVOURS installed, bailing out" >&2 + exit 1 + fi + depmod -a -F /boot/System.map-$i $i +done diff --git a/sub.in/stage2/image-scripts.d/99-cleanup-boot b/sub.in/stage2/image-scripts.d/99-cleanup-boot new file mode 100755 index 0000000..2c7c59c --- /dev/null +++ b/sub.in/stage2/image-scripts.d/99-cleanup-boot @@ -0,0 +1,15 @@ +#!/bin/sh + +# don't cripple the image to be copied over +# NB: livecd-install has 50-restore-kernel.sh +[ -x /usr/sbin/live-install -o \ + -x /usr/sbin/homeros-install -o \ + -x /usr/sbin/luwrain-install ] && exit 0 + +# no need for the kernel in live root otherwise: it's been booted already +# NB: installkernel run by that livecd-install hook needs System.map +rm -f -- /boot/{initrd,vmlinuz}* + +[ -x /usr/sbin/livecd-install ] || rm -f -- /boot/* + +: diff --git a/sub.in/stage2/image-scripts.d/99-tcb-fix b/sub.in/stage2/image-scripts.d/99-tcb-fix new file mode 100755 index 0000000..83bd59e --- /dev/null +++ b/sub.in/stage2/image-scripts.d/99-tcb-fix @@ -0,0 +1,5 @@ +#!/bin/sh -e +# drop intermediate files not needed in the image +# which receive broken permissions in fakeroot environment + +rm -f /etc/tcb/*/shadow{-,.lock} diff --git a/sub.in/stage2/lib/.gitignore b/sub.in/stage2/lib/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/sub.in/stage2/scripts.d/99-elf-stats b/sub.in/stage2/scripts.d/99-elf-stats new file mode 100755 index 0000000..e798dda --- /dev/null +++ b/sub.in/stage2/scripts.d/99-elf-stats @@ -0,0 +1,48 @@ +#!/bin/sh -e +# tally up sizes of chroot's ELF binaries for squashfs tuning + +# NB: it's unclear so far whether mksquashfs -sort is beneficial +if [ -z "$GLOBAL_SQUASHFS_SORT" -o "$GLOBAL_SQUASHFS" != "tight" ]; then + echo "SKIP elf-stats: looks like it's not needed" >&2 + exit 0 +fi + +exit_handler() +{ + local rc=$1 + rm -f -- "$TMPFILE" + exit $rc +} + +# it's controlled environment +TMPFILE="$(mktemp)" + +trap 'exit_handler $?' EXIT HUP PIPE INT QUIT TERM + +# a list of ELF binaries (both executables and shared libraries) +ELFLIST=/.our/elf.lst + +cd "$WORKDIR" + +# let's parallelize a bit, chroot should be on tmpfs or just-cached +du -bsx | cut -f1 > "$TMPFILE" & + +elf="$(find {,usr/}{lib*,{,s}bin} \ + -path lib/modules -prune -o \ + -path usr/lib/locale -prune -o \ + -type f \ + | file -nN -e ascii -e compress -e tar -e elf -f - \ + | sed -n "/: ELF /s/: .*$//p" \ + | tee "$ELFLIST.in" \ + | tr '\n' '\0' \ + | du -cb --files0-from=- \ + | tail -1 \ + | cut -f1)" + +wait +read root < "$TMPFILE" + +echo "** live chroot ELF ratio: $((100*$elf/$root))% ($elf/$root)" >&2 + +# add priorities +sed 's,^.*$,& 1,' < "$ELFLIST.in" > "$ELFLIST"