livecd-install-0.9.0/000075500000000000000000000000001232751324600144355ustar00rootroot00000000000000livecd-install-0.9.0/Makefile000064400000000000000000000011051232751324600160720ustar00rootroot00000000000000alterator_datadir = $(datadir)/alterator alterator_libdir = $(libexecdir)/alterator install: install -Dpm 644 livecd-install.steps $(sysconfdir)/livecd-install/steps install -Dpm 644 livecd-install.desktop $(datadir)/applications/livecd-install.desktop install -Dpm 755 livecd-install $(sbindir)/livecd-install install -d $(alterator_libdir)/hooks cp -a livecd-initinstall.d $(alterator_libdir)/hooks cp -a livecd-preinstall.d $(alterator_libdir)/hooks cp -a livecd-postinstall.d $(alterator_libdir)/hooks install -d $(alterator_datadir) cp -a steps $(alterator_datadir) livecd-install-0.9.0/livecd-initinstall.d/000075500000000000000000000000001232751324600204555ustar00rootroot00000000000000livecd-install-0.9.0/livecd-initinstall.d/10-disable-privatetmp.sh000075500000000000000000000012441232751324600250270ustar00rootroot00000000000000#!/bin/sh -u # DESCRIPTION # # Disable PrivateTmp in the systemd unit files. # It can cause undesired effects after mount/unmount # . livecd-functions SYSTEMCTL=/bin/systemctl SYSTEMD_SERVICE_DIR=/lib/systemd/system SYSTEMD_CGROUP_DIR=/sys/fs/cgroup/systemd # Is systemd active? [ -x "$SYSTEMCTL" -a -d "$SYSTEMD_CGROUP_DIR" ] && mountpoint -q "$SYSTEMD_CGROUP_DIR" || exit 0 units_list="$(grep -ls '^[[:blank:]]*PrivateTmp' "$SYSTEMD_SERVICE_DIR"/*.* | tr '\n' ' ')" [ -n "$units_list" ] || exit 0 sed -i 's/^[[:blank:]]*PrivateTmp/#PrivateTmp/' $units_list $SYSTEMCTL daemon-reload for s in $units_list; do $SYSTEMCTL try-restart "${s##*/}" done exit 0 livecd-install-0.9.0/livecd-initinstall.d/50-removable.sh000075500000000000000000000010741232751324600232140ustar00rootroot00000000000000#!/bin/sh -eu . livecd-functions ## # Purpose: find all removable devices. # List stored at out file for future processing. # List contains only devices, not partitions. # readonly OUT="/tmp/removable" readonly UDEVADM="/sbin/udevadm" if ! [ -x "$UDEVADM" ]; then fatal "Can't find $UDEVADM" fi # # Ask udevadm for all removable block devices # "$UDEVADM" trigger --dry-run --verbose --subsystem-match=block --attr-match=removable=1 \ | xargs --no-run-if-empty -n 1 \ "$UDEVADM" info --export -a -p | sed -ne '/KERNEL==/s@^.*"\(.*\)"$@/dev/\1@p' > "$OUT" livecd-install-0.9.0/livecd-install000075500000000000000000000001461232751324600172760ustar00rootroot00000000000000#!/bin/sh export ALTERATOR_DESTDIR="/mnt/destination" alterator-wizard -f /etc/livecd-install/steps livecd-install-0.9.0/livecd-install.desktop000064400000000000000000000004221232751324600207400ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Categories=System; Exec=livecd-install Icon=altlinux Terminal=false Name=Install to hard disk Name[ru]=Установить на жёсткий диск Name[uk]=Встановити на жорсткий диск livecd-install-0.9.0/livecd-install.steps000064400000000000000000000001311232751324600204220ustar00rootroot00000000000000livecd-start notes-license datetime vm livecd-install grub root users luks livecd-finish livecd-install-0.9.0/livecd-postinstall.d/000075500000000000000000000000001232751324600204775ustar00rootroot00000000000000livecd-install-0.9.0/livecd-postinstall.d/00-cp-installer-logs.sh000075500000000000000000000006641232751324600246200ustar00rootroot00000000000000#!/bin/sh -eu . livecd-functions [ -d "$destdir/root" ] || return 0 mkdir -p -m700 -- "$destdir/root/.install-log" cd "$destdir/root/.install-log" # Copy alteratord.log from temporary dir to /tmp cp /var/run/alteratord/alteratord.log /tmp ||: for f in install2 pkg-install remount wizard alteratord x11; do [ -f "/tmp/$f.log" ] || continue sed -r 's;( passwd_?([12]|auto) ")([^"]|[\\]["])*";\1*";g' <"/tmp/$f.log" >"$f.log" done livecd-install-0.9.0/livecd-postinstall.d/60-disable-efivars.sh000075500000000000000000000002351232751324600243210ustar00rootroot00000000000000#!/bin/sh -eu . livecd-functions # Don't load efivars module if there is no UEFI [ -d /sys/firmware/efi ] || sed -i '/^efivars$/d' "$destdir/etc/modules" livecd-install-0.9.0/livecd-postinstall.d/90-firsttime.sh000075500000000000000000000002231232751324600232670ustar00rootroot00000000000000#!/bin/sh -efu . livecd-functions # See /etc/rc.d/scripts/first_time [ -f "$destdir/etc/firsttime.flag" ] || touch "$destdir/etc/firsttime.flag" livecd-install-0.9.0/livecd-postinstall.d/95-remove-livecd-pkgs.sh000075500000000000000000000005541232751324600250000ustar00rootroot00000000000000#!/bin/sh -efu # DESCRIPTION # # Remove installer specific packages from installed system . livecd-functions verbose "Remove livecd - specific packages" list="$(exec_chroot rpmquery -a 'livecd-*' 'installer-*' 'alterator-wizardf*' 'branding-*-slideshow' ) alterator-livecd alterator-vm alterator-luks autologin nodm" exec_chroot rpmi -e -- $list exit 0 livecd-install-0.9.0/livecd-preinstall.d/000075500000000000000000000000001232751324600203005ustar00rootroot00000000000000livecd-install-0.9.0/livecd-preinstall.d/08-crypttab.sh000075500000000000000000000015631232751324600227210ustar00rootroot00000000000000#!/bin/sh -fu . livecd-functions [ -f /tmp/fstab ] || exit 0 for device in $(find /dev/ -name 'dm-*' -type b); do uuid=$(blkid -o value -s UUID "$device") fgrep "$uuid" "/tmp/fstab" &> /dev/null || continue # we should add luks feature to initrd if / is placed on luks # or create /etc/crypttab otherwise if grep -qe ".*$uuid.*[^[:alnum:]]/[^[:alnum:]]" "/tmp/fstab"; then echo 'FEATURES += luks' >> $destdir/etc/initrd.mk exit 0 fi device_luks="/dev/"$(ls "/sys/block/$(basename "$device")/slaves/") [ "$(blkid -o value -s TYPE "$device_luks")" = "crypto_LUKS" ] || continue luks_uuid=$(blkid -o value -s UUID "$device_luks") [ -r "$destdir/etc/crypttab" ] && fgrep "$luks_uuid" "$destdir/etc/crypttab" &> /dev/null && continue echo "luks-$luks_uuid UUID=$luks_uuid none luks" >> "/tmp/crypttab" done [ -f /tmp/crypttab ] && mv /tmp/crypttab $destdir/etc/ ||: livecd-install-0.9.0/livecd-preinstall.d/20-setup-plymouth1.sh000075500000000000000000000011611232751324600241550ustar00rootroot00000000000000#!/bin/sh -e . livecd-functions for device in $(find /dev/ -name 'dm-*' -type b); do # don't use plymouth with luks # if we can not check root mountpoint [ -f /tmp/fstab ] || exit 0 uuid=$(blkid -o value -s UUID "$device") fgrep "$uuid" "/tmp/fstab" &> /dev/null || continue # don't use plymouth if / is placed on luks grep -qe ".*$uuid.*[^[:alnum:]]/[^[:alnum:]]" "/tmp/fstab" && exit 0 ||: done CONFIG="$destdir/etc/plymouth/plymouthd.conf" grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG" CONFIG="$destdir/etc/initrd.mk" grep -q plymouth "$CONFIG" || echo 'FEATURES += plymouth' >> "$CONFIG" livecd-install-0.9.0/livecd-preinstall.d/30-setup-network.sh000075500000000000000000000043341232751324600237120ustar00rootroot00000000000000#!/bin/sh -efu . livecd-functions . alterator-net-functions . shell-config . shell-var nm_controlled() { [ -d "/etc/net/ifaces/$1" ] || return 0 # presume "yes" shell_var_is_yes "$(/etc/net/scripts/contrib/ifdump "$1" \ | sed -rn 's,^NM_CONTROLLED=(.*)$,\1,p')" } transfer_etcnet() { [ -d "/etc/net/ifaces/$1" ] || return 1 cp -a "/etc/net/ifaces/$1" $destdir/etc/net/ifaces/ } transfer_runtime() { [ -n "$ip" ] || continue mkdir -p $destdir/etc/net/ifaces/$iface case "${BOOTPROTO:-}" in # might be set by propagator (netboot) static) exec_chroot alterator-cmdline -l "/net-eth" action "write" \ commit '#t' \ name "$iface" \ controlled 'etcnet' \ configuration 'static' \ ip "${IPADDR:-}" \ mask "${NETBITS:-}" \ default "${GATEWAY:-}" \ search "${DOMAINNAME:-}" \ dns "${DNS_SERVER:-}${DNS_SERVER2:+ $DNS_SERVER2}" \ # ;; *) shell_config_set "$iface/options" BOOTPROTO dhcp if [ -d "/sys/class/net/$iface/bridge" ]; then brif="$(netdev_list_brif "$iface")" shell_config_set $iface/options TYPE bri shell_config_set $iface/options HOST "$brif" mkdir -p "$brif" shell_config_set "$brif/options" TYPE eth else shell_config_set "$iface/options" TYPE eth fi ;; esac } migrate() { for prefix in /var/lib /etc; do [ -d "$prefix$1" ] || continue rm -rf "$destdir$prefix$1" cp -a "$prefix$1" "$destdir$prefix$1" done } migrate NetworkManager migrate connman hostname= [ -z "${HOSTNAME-}" -o \ "${HOSTNAME-}" = localhost -o \ "${HOSTNAME-}" = localhost.localdomain ] || hostname="$HOSTNAME" fallback= for iface in $(list_eth); do ip="$(ip addr show $iface | sed -n 's,.*[[:space:]]inet[[:space:]]\+\([^/]\+\)/.*,\1,p' | head -n1)" # might be there upon netboot nm_controlled "$iface" || transfer_etcnet "$iface" || transfer_runtime "$iface" [ -z "$hostname" ] || continue h="$(hostinfo "$ip" |sed '/^hostname:[[:space:]]*/!d;s///;q')" if [ -n "$h" ]; then # valid backresolved hostname hostname="$h" else # current fallback hostname fallback="host-${ip##*.}${DOMAINNAME:+.$DOMAINNAME}" fi done [ -n "$hostname" ] || hostname="$fallback" [ -n "$hostname" ] || shell_config_set $destdir/etc/sysconfig/network HOSTNAME "$hostname" livecd-install-0.9.0/livecd-preinstall.d/40-autohostname.sh000075500000000000000000000012751232751324600235740ustar00rootroot00000000000000#!/bin/sh -fu . livecd-functions CONFIG="$destdir/etc/sysconfig/network" [ -f "$CONFIG" ] || exit 0 . "$CONFIG" [ "$HOSTNAME" = 'localhost.localdomain' ] || exit 0 proc="$(sed -n 's;^model name[[:blank:]:]*\(.\+\);\1;p' < /proc/cpuinfo \ | head -1 \ | cut -d' ' -f 2-3 \ | sed 's;(.*);;' \ | tr ' _/' '---' \ | tr '[:upper:]' '[:lower:]')" mactail="$(ip link show \ | sed -n 's;^.*link/ether[[:blank:]]\+\([[:xdigit:]:]\+\).*$;\1;p' \ | head -1 \ | cut -d: -f4-6 \ | tr -d ":")" [ -n "$mactail" -o -n "$proc" ] || exit 0 hostname="comp${proc:+-}$proc${mactail:+-}$mactail" echo $hostname > $destdir/etc/HOSTNAME subst "s/HOSTNAME=localhost.localdomain/HOSTNAME=$hostname/" "$CONFIG" : livecd-install-0.9.0/livecd-preinstall.d/50-autologin-off.sh000075500000000000000000000012141232751324600236300ustar00rootroot00000000000000#!/bin/sh -efu # DESCRIPTION # # Restore default GDM/lightdm config. Turn off autologin settings. # . livecd-functions # Disable GDM autologin conf=/etc/X11/gdm/custom.conf if [ -f "$destdir/$conf" ]; then verbose "Restore default GDM config" exec_chroot subst 's/AutomaticLogin/#AutomaticLogin/g' "$conf" &>/dev/null fi # Disable lightdm autologin conf=/etc/lightdm/lightdm.conf if [ -f "$destdir/$conf" ]; then verbose "Restore default lightdm config" exec_chroot subst 's/^autologin-user=/#autologin-user=/g' "$conf" &>/dev/null exec_chroot subst 's/^autologin-user-timeout=/#autologin-user-timeout=/g' "$conf" &>/dev/null fi exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-datetime.sh000075500000000000000000000016601232751324600226600ustar00rootroot00000000000000#!/bin/sh -efu # DESCRIPTION # # Save: timezone, NTP configs # # XXX: save dhcpcd config # . livecd-functions save="/etc/sysconfig/clock" save="${save} /etc/ntpd.conf" save="${save} /etc/ntp.conf" save="${save} /etc/localtime" for i in $save; do if [ -r "$i" ]; then verbose "Save: $i" mkdir -p "$target_dir/$(dirname "$i")" cp -a -f "$i" "$target_dir/$i" else verbose "Missing: $i" fi done ## # Save ntpd service status. # if [ -x "/etc/init.d/ntpd" ]; then "/sbin/chkconfig" --list 'ntpd' | grep -q -s 'on' ret=$? if [ $ret -eq 0 ]; then exec_chroot "/sbin/chkconfig" --add 'ntpd' exec_chroot "/sbin/chkconfig" 'ntpd' 'on' fi fi if [ -f "/etc/control.d/facilities/ntpd" ]; then local mode="$(control ntpd 2>/dev/null)" if [ -n "$mode" ]; then exec_chroot "/usr/sbin/control" ntpd "$mode" client >/dev/null 2>/dev/null fi fi exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-fstab.sh000075500000000000000000000004461232751324600221640ustar00rootroot00000000000000#!/bin/sh # DESCRIPTION # # Tweak /etc/fstab for installed system. . livecd-functions dst_fstab="$target_dir/etc/fstab" verbose "Tweak /etc/fstab" if ! [ -w "$dst_fstab" ]; then fatal "Destination $dst_fstab doesn't exist." fi sed -i -e '/^\/dev\/root/d' "$dst_fstab" exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-kdm-autologin-off.sh000075500000000000000000000003761232751324600244110ustar00rootroot00000000000000#!/bin/sh -efu # DESCRIPTION # # Restore default KDM config. Turn off autologin settings. # . livecd-functions KDMRC="/etc/X11/kdm4/kdmrc" verbose "Restore default KDM config: $KDMRC" exec_chroot "/bin/mv" -f -- "$KDMRC.orig" "$KDMRC" exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-mtab.sh000075500000000000000000000003341232751324600220040ustar00rootroot00000000000000#!/bin/sh -efu # DESCRIPTION # # Remove /etc/mtab. # See corresponding hook in mkimage profile. . livecd-functions mtab="/etc/mtab" verbose "Delete mtab: $mtab" # exec_chroot "/bin/rm" -f -- "$mtab" exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-propagator.sh000075500000000000000000000003261232751324600232400ustar00rootroot00000000000000#!/bin/sh -efu # DESCRIPTION # # Remove /image dir, needed only for propagator. # . livecd-functions dir="/image" verbose "Delete propagator directory : $dir" exec_chroot "/bin/rm" -rf -- "$dir" exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-remount_rw.sh000075500000000000000000000005001232751324600232550ustar00rootroot00000000000000#!/bin/sh # DESCRIPTION # # Remove LiveCD REMOUNT_ROOTFS_RW_COMMAND. # . livecd-functions verbose "Remove LiveCD REMOUNT_ROOTFS_RW_COMMAND" cfg="$target_dir/etc/sysconfig/init" if [ -w "$cfg" ]; then sed -i -e "/^[:space:]*REMOUNT_ROOTFS_RW_COMMAND/d" "$cfg" else verbose "Can't find writable $cfg" fi livecd-install-0.9.0/livecd-preinstall.d/50-restore-kernel.sh000075500000000000000000000010731232751324600240230ustar00rootroot00000000000000#!/bin/sh # DESCRIPTION # # Anti hook. Restore deleted kernel in /boot dir. . livecd-functions kernel="/image/syslinux/alt0/vmlinuz" installkernel="/sbin/installkernel" release="$(uname -r)" verbose "Restore kernel image" if ! [ -d "$target_dir" ]; then fatal "$target_dir doesn't exist" fi if ! [ -x "$installkernel" ]; then fatal "can't find $installkernel" fi if ! [ -r "$kernel" ]; then fatal "can't find kernel image: $kernel" fi cp "$kernel" "$target_dir/boot/vmlinuz-$release" exec_chroot "$installkernel" "$release" --nolaunch exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-save-locale.sh000075500000000000000000000010771232751324600232610ustar00rootroot00000000000000#!/bin/sh # DESCRIPTION # # Save system-wide locale settings. . livecd-functions configs="${configs:-} /etc/sysconfig/i18n" configs="${configs:-} /etc/sysconfig/consolefont" configs="${configs:-} /etc/sysconfig/keyboard" configs="${configs:-} /etc/X11/xinit/Xkbmap" configs="${configs:-} /etc/profile.d/00dconf-kbd.sh" configs="${configs:-} /etc/locale.conf" verbose "Save locale settings." for i in $configs; do if [ -r "$i" ]; then verbose "Copy $i" cp -f -a "$i" "$target_dir/$i" else verbose "Missing $i file" fi done exit 0 livecd-install-0.9.0/livecd-preinstall.d/50-xorg.conf.sh000075500000000000000000000004341232751324600227650ustar00rootroot00000000000000#!/bin/sh # DESCRIPTION # # Copy current /etc/X11/xorg.conf to installed system. . livecd-functions xorgconf="/etc/X11/xorg.conf" verbose "Copy $xorgconf" if ! [ -r "$xorgconf" ]; then fatal "$xorgconf doesn't exist" fi cp -f "$xorgconf" "$target_dir/$xorgconf" exit 0 livecd-install-0.9.0/livecd-preinstall.d/60-rm-issue.sh000075500000000000000000000003261232751324600226270ustar00rootroot00000000000000#!/bin/sh # DESCRIPTION # # Remove /etc/issue. Its content can be livecd-specific. # It will be generated again while boot, . livecd-functions verbose "Removing /etc/issue" rm -f "$target_dir/etc/issue" ||: livecd-install-0.9.0/livecd-preinstall.d/90-setup-plymouth2.sh000075500000000000000000000012121232751324600241620ustar00rootroot00000000000000#!/bin/sh . livecd-functions for device in $(find /dev/ -name 'dm-*' -type b); do # don't use plymouth with luks # if we can not check root mountpoint [ -f /tmp/fstab ] || exit 0 uuid=$(blkid -o value -s UUID "$device") fgrep "$uuid" "/tmp/fstab" &> /dev/null || continue # don't use plymouth if / is placed on luks grep -qe ".*$uuid.*[^[:alnum:]]/[^[:alnum:]]" "/tmp/fstab" && exit 0 ||: done CONFIG="$destdir/etc/sysconfig/grub2" grep -q drm_kms_helper /proc/modules || \ subst 's/\(LINUX_DEFAULT=.\)/\1vga=0x314 /' "$CONFIG" subst 's/splash=silent/splash/g' "$CONFIG" grep -q quiet "$CONFIG" || subst 's/\/quiet &/' "$CONFIG" livecd-install-0.9.0/livecd-preinstall.d/90-userdel.sh000075500000000000000000000007771232751324600225430ustar00rootroot00000000000000#!/bin/sh -efu # DESCRIPTION # # Delete LiveCD user. . livecd-functions username="altlinux" verbose "Delete LiveCD user: $username" exec_chroot userdel -r -f -- "$username" for i in "/tmp" "/var/tmp"; do exec_chroot /bin/find "$i" -mindepth 1 -maxdepth 1 -exec rm -rf -- '{}' ';' done if [ -f "$target_dir/etc/sudoers" ]; then verbose "Remove LiveCD user from sudoers file." exec_chroot sed -i -e "/^$username/d" -- "/etc/sudoers" else verbose "Can't find sudoers file." fi exit 0 livecd-install-0.9.0/steps/000075500000000000000000000000001232751324600155735ustar00rootroot00000000000000livecd-install-0.9.0/steps/datetime.desktop000064400000000000000000000003151232751324600207610ustar00rootroot00000000000000[Desktop Entry] Type=Application Icon=steps/datetime Terminal=false Name=Date/Time Name[ru]=Дата и время Name[uk]=Дата й час X-Alterator-URI=/datetime/installer X-Alterator-Help=datetime livecd-install-0.9.0/steps/notes-license.desktop000064400000000000000000000003701232751324600217360ustar00rootroot00000000000000[Desktop Entry] Type=Application Terminal=false Icon=steps/notes-license Name=License agreement Name[ru]=Лицензионный договор Name[uk]=Ліцензійна угода X-Alterator-URI=/notes/license X-Alterator-Help=notes-license livecd-install-0.9.0/steps/root.desktop000064400000000000000000000003541232751324600201530ustar00rootroot00000000000000[Desktop Entry] Type=Application Icon=steps/root Terminal=false Name=System Administrator Name[ru]=Администратор системы Name[uk]=Адміністратор системи X-Alterator-URI=/root X-Alterator-Help=root livecd-install-0.9.0/steps/users.desktop000064400000000000000000000003521232751324600203270ustar00rootroot00000000000000[Desktop Entry] Type=Application Icon=steps/users Terminal=false Name=System User Name[ru]=Системный пользователь Name[uk]=Системний користувач X-Alterator-URI=/users/add X-Alterator-Help=users livecd-install-0.9.0/zdg-user-dirs-install.sh000075500000000000000000000004471232751324600211440ustar00rootroot00000000000000#!/bin/sh if [ -f ~/.config/user-dirs.dirs ] && [ "$UID" -eq 500 ] ; then . ~/.config/user-dirs.dirs if [ ! -f "$XDG_DESKTOP_DIR"/livecd-install.desktop ]; then cp /usr/share/applications/livecd-install.desktop "$XDG_DESKTOP_DIR"/ chmod +x "$XDG_DESKTOP_DIR"/livecd-install.desktop fi fi