#!/bin/bash # # Initial script for Live operating system # This script are launching before starting init from linux-live script. # Current dir allways must be set to root (/) # All system path must be relative, except initrd dirs ENABLED=yes [[ ${ENABLED} != yes ]] && exit 0 DEBUGMODE=no PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 debug_mode "$0" "$@" SYSCONF="${ROOTFS}/${SYSCONF}" SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null exec_hostname(){ local PARAM="$@" [[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'" SET_HOSTNAME="${HOSTNAME}" [[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live tail -c1 -- hosts | grep -qx $'\n' || echo >> ${ROOTFS}/etc/hosts HOSTS_1="127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com" grep -q "^\s*${HOSTS_1}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_1}" >> ${ROOTFS}/etc/hosts HOSTS_2="127.0.0.1 ${SET_HOSTNAME%%.*}" grep -q "^\s*${HOSTS_2}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_2}" >> ${ROOTFS}/etc/hosts echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname [[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}" if [[ ${DOMAIN} != "" ]]; then HOSTNAME="${SET_HOSTNAME%%.*}.${DOMAIN}" HOSTS_3="127.0.0.1 ${SET_HOSTNAME}" grep -q "^\s*${HOSTS_3}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_3}" >> ${ROOTFS}/etc/hosts ## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM ls -d ${ROOTFS}/home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch ${ROOTFS}/var/lib/AccountsService/users/{} ## Домен для сервера dhcpd sed s/"option domain-name .*"/"option domain-name \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf sed s/"option nis-domain .*"/"option nis-domain \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf ## Имя хоста записать в конфиг с постфиксом домена sed /^HOSTNAME=/d -i ${ROOTFS}/etc/ublinux/config echo "HOSTNAME=${SET_HOSTNAME}" >> ${ROOTFS}/etc/ublinux/config fi } exec_hostname_live(){ [[ -z ${ROOTFS} ]] || return 0 local PARAM="$@" [[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'" SET_HOSTNAME="${HOSTNAME}" [[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live [[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}" [[ ${DOMAIN} != "" ]] && ubconfig -q set network DOMAIN="${DOMAIN}" hostnamectl set-hostname ${SET_HOSTNAME} ## Если меняется имя хоста в запущенных X, то новое имя добавляем в xauth who | grep "(:[0-9.]*)$" | cut -d' ' -f1 | xargs -ri su {} -c "xauth list | sed 's|^.*/|su {} -c \\\\\"xauth add ${SET_HOSTNAME}/|;s|$|\\\\\"|'" | xargs -ri sh -c '{}' } ################ ##### MAIN ##### ################ if [[ -z $@ || $1 == set ]]; then shift KERNEL_HOSTNAME=$(cmdline_value hostname) [[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME} exec_hostname $@ exec_hostname_live $@ elif [[ $1 == remove ]]; then shift exec_hostname $@ exec_hostname_live $@ fi