From a145ddda284570e57413e37f025c3657205e17d8 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Fri, 25 May 2018 20:01:54 +0200 Subject: Repository scheme updated to new layout NOTE: This commit just moves files around, without actually fixing the Makefiles and specfile. See follow up commits which resolve this. --- etc/NetworkManager/dispatcher.d/00-netreport | 11 + etc/adjtime | 2 + etc/networks | 3 + etc/profile.d/lang.csh | 83 +++ etc/profile.d/lang.sh | 90 ++++ etc/rc.d/init.d/functions | 721 +++++++++++++++++++++++++++ etc/rc.d/init.d/netconsole | 164 ++++++ etc/rc.d/init.d/network | 259 ++++++++++ etc/rwtab | 45 ++ etc/statetab | 12 + etc/sysconfig/netconsole | 20 + etc/sysconfig/network-scripts | 1 + etc/sysconfig/readonly-root | 23 + 13 files changed, 1434 insertions(+) create mode 100755 etc/NetworkManager/dispatcher.d/00-netreport create mode 100644 etc/adjtime create mode 100644 etc/networks create mode 100644 etc/profile.d/lang.csh create mode 100644 etc/profile.d/lang.sh create mode 100644 etc/rc.d/init.d/functions create mode 100755 etc/rc.d/init.d/netconsole create mode 100755 etc/rc.d/init.d/network create mode 100644 etc/rwtab create mode 100644 etc/statetab create mode 100644 etc/sysconfig/netconsole create mode 120000 etc/sysconfig/network-scripts create mode 100644 etc/sysconfig/readonly-root (limited to 'etc') diff --git a/etc/NetworkManager/dispatcher.d/00-netreport b/etc/NetworkManager/dispatcher.d/00-netreport new file mode 100755 index 00000000..eee7fb38 --- /dev/null +++ b/etc/NetworkManager/dispatcher.d/00-netreport @@ -0,0 +1,11 @@ +#!/bin/sh + +cd /etc/sysconfig/network-scripts +. ./network-functions + +[ -f ../network ] && . ../network + +# Notify programs that have requested notification +do_netreport + +exit 0 diff --git a/etc/adjtime b/etc/adjtime new file mode 100644 index 00000000..3127bd0d --- /dev/null +++ b/etc/adjtime @@ -0,0 +1,2 @@ +0.0 0 0.0 +0 diff --git a/etc/networks b/etc/networks new file mode 100644 index 00000000..9a46fc80 --- /dev/null +++ b/etc/networks @@ -0,0 +1,3 @@ +default 0.0.0.0 +loopback 127.0.0.0 +link-local 169.254.0.0 diff --git a/etc/profile.d/lang.csh b/etc/profile.d/lang.csh new file mode 100644 index 00000000..c6a44664 --- /dev/null +++ b/etc/profile.d/lang.csh @@ -0,0 +1,83 @@ +# /etc/profile.d/lang.csh - set i18n stuff + +set sourced=0 + +if ($?LANG) then + set saved_lang=$LANG + if ( -f "$HOME/.i18n" ) then + eval `sed -ne 's|^[[:blank:]]*\([^#=]\{1,\}\)=\([^=]*\)|setenv \1 \2;|p' "$HOME/.i18n"` + set sourced=1 + endif + setenv LANG $saved_lang + unset saved_lang +else + foreach file (/etc/locale.conf "$HOME/.i18n") + if ( -f $file ) then + eval `sed -ne 's|^[[:blank:]]*\([^#=]\{1,\}\)=\([^=]*\)|setenv \1 \2;|p' $file` + set sourced=1 + endif + end +endif + +if ($sourced == 1) then + if ($?LC_ALL && $?LANG) then + if ($LC_ALL == $LANG) then + unsetenv LC_ALL + endif + endif + + set consoletype=`/sbin/consoletype stdout` + + if ($?LANG) then + switch ($LANG) + case *.utf8*: + case *.UTF-8*: + if ( $?TERM ) then + if ( "$TERM" == "linux" ) then + if ( "$consoletype" == "vt" ) then + switch ($LANG) + case en_IN*: + breaksw + case ja*: + case ko*: + case si*: + case zh*: + case ar*: + case fa*: + case he*: + case *_IN*: + setenv LANG en_US.UTF-8 + breaksw + endsw + endif + endif + endif + breaksw + case *: + if ( $?TERM ) then + if ( "$TERM" == "linux" ) then + if ( "$consoletype" == "vt" ) then + switch ($LANG) + case en_IN*: + breaksw + case ja*: + case ko*: + case si*: + case zh*: + case ar*: + case fa*: + case he*: + case *_IN*: + setenv LANG en_US + breaksw + endsw + endif + endif + endif + breaksw + endsw + endif + unsetenv SYSFONTACM + unsetenv SYSFONT + unsetenv consoletype +endif diff --git a/etc/profile.d/lang.sh b/etc/profile.d/lang.sh new file mode 100644 index 00000000..4a759f53 --- /dev/null +++ b/etc/profile.d/lang.sh @@ -0,0 +1,90 @@ +# /etc/profile.d/lang.sh - set i18n stuff + +sourced=0 + +if [ -n "$LANG" ]; then + saved_lang="$LANG" + [ -f "$HOME/.i18n" ] && . "$HOME/.i18n" && sourced=1 + LANG="$saved_lang" + unset saved_lang +else + for langfile in /etc/locale.conf "$HOME/.i18n" ; do + [ -f $langfile ] && . $langfile && sourced=1 + done +fi + +if [ "$sourced" = 1 ]; then + [ -n "$LANG" ] && export LANG || unset LANG + [ -n "$LC_ADDRESS" ] && export LC_ADDRESS || unset LC_ADDRESS + [ -n "$LC_CTYPE" ] && export LC_CTYPE || unset LC_CTYPE + [ -n "$LC_COLLATE" ] && export LC_COLLATE || unset LC_COLLATE + [ -n "$LC_IDENTIFICATION" ] && export LC_IDENTIFICATION || unset LC_IDENTIFICATION + [ -n "$LC_MEASUREMENT" ] && export LC_MEASUREMENT || unset LC_MEASUREMENT + [ -n "$LC_MESSAGES" ] && export LC_MESSAGES || unset LC_MESSAGES + [ -n "$LC_MONETARY" ] && export LC_MONETARY || unset LC_MONETARY + [ -n "$LC_NAME" ] && export LC_NAME || unset LC_NAME + [ -n "$LC_NUMERIC" ] && export LC_NUMERIC || unset LC_NUMERIC + [ -n "$LC_PAPER" ] && export LC_PAPER || unset LC_PAPER + [ -n "$LC_TELEPHONE" ] && export LC_TELEPHONE || unset LC_TELEPHONE + [ -n "$LC_TIME" ] && export LC_TIME || unset LC_TIME + if [ -n "$LC_ALL" ]; then + if [ "$LC_ALL" != "$LANG" ]; then + export LC_ALL + else + unset LC_ALL + fi + else + unset LC_ALL + fi + [ -n "$LANGUAGE" ] && export LANGUAGE || unset LANGUAGE + [ -n "$LINGUAS" ] && export LINGUAS || unset LINGUAS + [ -n "$_XKB_CHARSET" ] && export _XKB_CHARSET || unset _XKB_CHARSET + + consoletype=$CONSOLETYPE + if [ -z "$consoletype" ]; then + consoletype=$(/sbin/consoletype stdout) + fi + + if [ -n "$LANG" ]; then + case $LANG in + *.utf8*|*.UTF-8*) + if [ "$TERM" = "linux" ]; then + if [ "$consoletype" = "vt" ]; then + case $LANG in + ja*) LANG=en_US.UTF-8 ;; + ko*) LANG=en_US.UTF-8 ;; + si*) LANG=en_US.UTF-8 ;; + zh*) LANG=en_US.UTF-8 ;; + ar*) LANG=en_US.UTF-8 ;; + fa*) LANG=en_US.UTF-8 ;; + he*) LANG=en_US.UTF-8 ;; + en_IN*) ;; + *_IN*) LANG=en_US.UTF-8 ;; + esac + fi + fi + ;; + *) + if [ "$TERM" = "linux" ]; then + if [ "$consoletype" = "vt" ]; then + case $LANG in + ja*) LANG=en_US ;; + ko*) LANG=en_US ;; + si*) LANG=en_US ;; + zh*) LANG=en_US ;; + ar*) LANG=en_US ;; + fa*) LANG=en_US ;; + he*) LANG=en_US ;; + en_IN*) ;; + *_IN*) LANG=en_US ;; + esac + fi + fi + ;; + esac + fi + + unset SYSFONTACM SYSFONT consoletype +fi +unset sourced +unset langfile diff --git a/etc/rc.d/init.d/functions b/etc/rc.d/init.d/functions new file mode 100644 index 00000000..a8174751 --- /dev/null +++ b/etc/rc.d/init.d/functions @@ -0,0 +1,721 @@ +# -*-Shell-script-*- +# +# functions This file contains functions to be used by most or all +# shell scripts in the /etc/init.d directory. +# + +TEXTDOMAIN=initscripts + +# Make sure umask is sane +umask 022 + +# Set up a default search path. +PATH="/sbin:/usr/sbin:/bin:/usr/bin" +export PATH + +if [ $PPID -ne 1 -a -z "$SYSTEMCTL_SKIP_REDIRECT" ] && \ + [ -d /run/systemd/system ] ; then + case "$0" in + /etc/init.d/*|/etc/rc.d/init.d/*) + _use_systemctl=1 + ;; + esac +fi + +systemctl_redirect () { + local s + local prog=${1##*/} + local command=$2 + local options="" + + case "$command" in + start) + s=$"Starting $prog (via systemctl): " + ;; + stop) + s=$"Stopping $prog (via systemctl): " + ;; + reload|try-reload) + s=$"Reloading $prog configuration (via systemctl): " + ;; + restart|try-restart|condrestart) + s=$"Restarting $prog (via systemctl): " + ;; + esac + + if [ -n "$SYSTEMCTL_IGNORE_DEPENDENCIES" ] ; then + options="--ignore-dependencies" + fi + + if ! systemctl show "$prog.service" > /dev/null 2>&1 || \ + systemctl show -p LoadState "$prog.service" | grep -q 'not-found' ; then + action $"Reloading systemd: " /bin/systemctl daemon-reload + fi + + action "$s" /bin/systemctl $options $command "$prog.service" +} + +# Get a sane screen width +[ -z "${COLUMNS:-}" ] && COLUMNS=80 + +if [ -z "${CONSOLETYPE:-}" ]; then + if [ -c "/dev/stderr" ] && [ -r "/dev/stderr" ]; then + CONSOLETYPE="$(/sbin/consoletype < /dev/stderr 2>/dev/null)" + else + CONSOLETYPE="serial" + fi +fi + +if [ -z "${NOLOCALE:-}" ] && [ -z "${LANGSH_SOURCED:-}" ] && \ + [ -f /etc/sysconfig/i18n -o -f /etc/locale.conf ] ; then + . /etc/profile.d/lang.sh 2>/dev/null + # avoid propagating LANGSH_SOURCED any further + unset LANGSH_SOURCED +fi + +# Read in our configuration +if [ -z "${BOOTUP:-}" ]; then + if [ -f /etc/sysconfig/init ]; then + . /etc/sysconfig/init + else + # verbose ->> very (very!) old bootup look (prior to RHL-6.0?) + # color ->> default bootup look + # other ->> default bootup look without ANSI colors or positioning + BOOTUP=color + # Column to start "[ OK ]" label in: + RES_COL=60 + # terminal sequence to move to that column: + MOVE_TO_COL="echo -en \\033[${RES_COL}G" + # Terminal sequence to set color to a 'success' (bright green): + SETCOLOR_SUCCESS="echo -en \\033[1;32m" + # Terminal sequence to set color to a 'failure' (bright red): + SETCOLOR_FAILURE="echo -en \\033[1;31m" + # Terminal sequence to set color to a 'warning' (bright yellow): + SETCOLOR_WARNING="echo -en \\033[1;33m" + # Terminal sequence to reset to the default color: + SETCOLOR_NORMAL="echo -en \\033[0;39m" + + # Verbosity of logging: + LOGLEVEL=1 + fi + if [ "$CONSOLETYPE" = "serial" ]; then + BOOTUP=serial + MOVE_TO_COL= + SETCOLOR_SUCCESS= + SETCOLOR_FAILURE= + SETCOLOR_WARNING= + SETCOLOR_NORMAL= + fi +fi + +# Check if any of $pid (could be plural) are running +checkpid() { + local i + + for i in $* ; do + [ -d "/proc/$i" ] && return 0 + done + return 1 +} + +__kill_pids_term_kill_checkpids() { + local base_stime=$1 + shift 1 + local pid= + local pids=$* + local remaining= + local stat= + local stime= + + for pid in $pids ; do + [ ! -e "/proc/$pid" ] && continue + read -r line < "/proc/$pid/stat" 2> /dev/null + + stat=($line) + stime=${stat[21]} + + [ -n "$stime" ] && [ "$base_stime" -lt "$stime" ] && continue + remaining+="$pid " + done + + echo "$remaining" + [ -n "$remaining" ] && return 1 + + return 0 +} + +__kill_pids_term_kill() { + local try=0 + local delay=3; + local pid= + local stat= + local base_stime= + + # We can't initialize stat & base_stime on the same line where 'local' + # keyword is, otherwise the sourcing of this file will fail for ksh... + stat=($(< /proc/self/stat)) + base_stime=${stat[21]} + + if [ "$1" = "-d" ]; then + delay=$2 + shift 2 + fi + + local kill_list=$* + + kill_list=$(__kill_pids_term_kill_checkpids $base_stime $kill_list) + + [ -z "$kill_list" ] && return 0 + + kill -TERM $kill_list >/dev/null 2>&1 + sleep 0.1 + + kill_list=$(__kill_pids_term_kill_checkpids $base_stime $kill_list) + if [ -n "$kill_list" ] ; then + while [ $try -lt $delay ] ; do + sleep 1 + kill_list=$(__kill_pids_term_kill_checkpids $base_stime $kill_list) + [ -z "$kill_list" ] && break + let try+=1 + done + if [ -n "$kill_list" ] ; then + kill -KILL $kill_list >/dev/null 2>&1 + sleep 0.1 + kill_list=$(__kill_pids_term_kill_checkpids $base_stime $kill_list) + fi + fi + + [ -n "$kill_list" ] && return 1 + return 0 +} + +# __proc_pids {program} [pidfile] +# Set $pid to pids from /run* for {program}. $pid should be declared +# local in the caller. +# Returns LSB exit code for the 'status' action. +__pids_var_run() { + local base=${1##*/} + local pid_file=${2:-/run/$base.pid} + local pid_dir=$(/usr/bin/dirname $pid_file > /dev/null) + local binary=$3 + + [ -d "$pid_dir" ] && [ ! -r "$pid_dir" ] && return 4 + + pid= + if [ -f "$pid_file" ] ; then + local line p + + [ ! -r "$pid_file" ] && return 4 # "user had insufficient privilege" + while : ; do + read line + [ -z "$line" ] && break + for p in $line ; do + if [ -z "${p//[0-9]/}" ] && [ -d "/proc/$p" ] ; then + if [ -n "$binary" ] ; then + local b=$(readlink /proc/$p/exe | sed -e 's/\s*(deleted)$//') + [ "$b" != "$binary" ] && continue + fi + pid="$pid $p" + fi + done + done < "$pid_file" + + if [ -n "$pid" ]; then + return 0 + fi + return 1 # "Program is dead and /run pid file exists" + fi + return 3 # "Program is not running" +} + +# Output PIDs of matching processes, found using pidof +__pids_pidof() { + pidof -c -m -o $$ -o $PPID -o %PPID -x "$1" || \ + pidof -c -m -o $$ -o $PPID -o %PPID -x "${1##*/}" +} + + +# A function to start a program. +daemon() { + # Test syntax. + local gotbase= force= nicelevel corelimit + local pid base= user= nice= bg= pid_file= + local cgroup= + nicelevel=0 + while [ "$1" != "${1##[-+]}" ]; do + case $1 in + '') + echo $"$0: Usage: daemon [+/-nicelevel] {program}" "[arg1]..." + return 1 + ;; + --check) + base=$2 + gotbase="yes" + shift 2 + ;; + --check=?*) + base=${1#--check=} + gotbase="yes" + shift + ;; + --user) + user=$2 + shift 2 + ;; + --user=?*) + user=${1#--user=} + shift + ;; + --pidfile) + pid_file=$2 + shift 2 + ;; + --pidfile=?*) + pid_file=${1#--pidfile=} + shift + ;; + --force) + force="force" + shift + ;; + [-+][0-9]*) + nice="nice -n $1" + shift + ;; + *) + echo $"$0: Usage: daemon [+/-nicelevel] {program}" "[arg1]..." + return 1 + ;; + esac + done + + # Save basename. + [ -z "$gotbase" ] && base=${1##*/} + + # See if it's already running. Look *only* at the pid file. + __pids_var_run "$base" "$pid_file" + + [ -n "$pid" -a -z "$force" ] && return + + # make sure it doesn't core dump anywhere unless requested + corelimit="ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0}" + + # if they set NICELEVEL in /etc/sysconfig/foo, honor it + [ -n "${NICELEVEL:-}" ] && nice="nice -n $NICELEVEL" + + # if they set CGROUP_DAEMON in /etc/sysconfig/foo, honor it + if [ -n "${CGROUP_DAEMON}" ]; then + if [ ! -x /bin/cgexec ]; then + echo -n "Cgroups not installed"; warning + echo + else + cgroup="/bin/cgexec"; + for i in $CGROUP_DAEMON; do + cgroup="$cgroup -g $i"; + done + fi + fi + + # Echo daemon + [ "${BOOTUP:-}" = "verbose" -a -z "${LSB:-}" ] && echo -n " $base" + + # And start it up. + if [ -z "$user" ]; then + $cgroup $nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*" + else + $cgroup $nice runuser -s /bin/bash $user -c "$corelimit >/dev/null 2>&1 ; $*" + fi + + [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup" +} + +# A function to stop a program. +killproc() { + local RC killlevel= base pid pid_file= delay try binary= + + RC=0; delay=3; try=0 + # Test syntax. + if [ "$#" -eq 0 ]; then + echo $"Usage: killproc [-p pidfile] [ -d delay] {program} [-signal]" + return 1 + fi + if [ "$1" = "-p" ]; then + pid_file=$2 + shift 2 + fi + if [ "$1" = "-b" ]; then + if [ -z $pid_file ]; then + echo $"-b option can be used only with -p" + echo $"Usage: killproc -p pidfile -b binary program" + return 1 + fi + binary=$2 + shift 2 + fi + if [ "$1" = "-d" ]; then + delay=$(echo $2 | awk -v RS=' ' -v IGNORECASE=1 '{if($1!~/^[0-9.]+[smhd]?$/) exit 1;d=$1~/s$|^[0-9.]*$/?1:$1~/m$/?60:$1~/h$/?60*60:$1~/d$/?24*60*60:-1;if(d==-1) exit 1;delay+=d*$1} END {printf("%d",delay+0.5)}') + if [ "$?" -eq 1 ]; then + echo $"Usage: killproc [-p pidfile] [ -d delay] {program} [-signal]" + return 1 + fi + shift 2 + fi + + + # check for second arg to be kill level + [ -n "${2:-}" ] && killlevel=$2 + + # Save basename. + base=${1##*/} + + # Find pid. + __pids_var_run "$1" "$pid_file" "$binary" + RC=$? + if [ -z "$pid" ]; then + if [ -z "$pid_file" ]; then + pid="$(__pids_pidof "$1")" + else + [ "$RC" = "4" ] && { failure $"$base shutdown" ; return $RC ;} + fi + fi + + # Kill it. + if [ -n "$pid" ] ; then + [ "$BOOTUP" = "verbose" -a -z "${LSB:-}" ] && echo -n "$base " + if [ -z "$killlevel" ] ; then + __kill_pids_term_kill -d $delay $pid + RC=$? + [ "$RC" -eq 0 ] && success $"$base shutdown" || failure $"$base shutdown" + # use specified level only + else + if checkpid $pid; then + kill $killlevel $pid >/dev/null 2>&1 + RC=$? + [ "$RC" -eq 0 ] && success $"$base $killlevel" || failure $"$base $killlevel" + elif [ -n "${LSB:-}" ]; then + RC=7 # Program is not running + fi + fi + else + if [ -n "${LSB:-}" -a -n "$killlevel" ]; then + RC=7 # Program is not running + else + failure $"$base shutdown" + RC=0 + fi + fi + + # Remove pid file if any. + if [ -z "$killlevel" ]; then + rm -f "${pid_file:-/run/$base.pid}" + fi + return $RC +} + +# A function to find the pid of a program. Looks *only* at the pidfile +pidfileofproc() { + local pid + + # Test syntax. + if [ "$#" = 0 ] ; then + echo $"Usage: pidfileofproc {program}" + return 1 + fi + + __pids_var_run "$1" + [ -n "$pid" ] && echo $pid + return 0 +} + +# A function to find the pid of a program. +pidofproc() { + local RC pid pid_file= + + # Test syntax. + if [ "$#" = 0 ]; then + echo $"Usage: pidofproc [-p pidfile] {program}" + return 1 + fi + if [ "$1" = "-p" ]; then + pid_file=$2 + shift 2 + fi + fail_code=3 # "Program is not running" + + # First try "/run/*.pid" files + __pids_var_run "$1" "$pid_file" + RC=$? + if [ -n "$pid" ]; then + echo $pid + return 0 + fi + + [ -n "$pid_file" ] && return $RC + __pids_pidof "$1" || return $RC +} + +status() { + local base pid lock_file= pid_file= binary= + + # Test syntax. + if [ "$#" = 0 ] ; then + echo $"Usage: status [-p pidfile] {program}" + return 1 + fi + if [ "$1" = "-p" ]; then + pid_file=$2 + shift 2 + fi + if [ "$1" = "-l" ]; then + lock_file=$2 + shift 2 + fi + if [ "$1" = "-b" ]; then + if [ -z $pid_file ]; then + echo $"-b option can be used only with -p" + echo $"Usage: status -p pidfile -b binary program" + return 1 + fi + binary=$2 + shift 2 + fi + base=${1##*/} + + if [ "$_use_systemctl" = "1" ]; then + systemctl status ${0##*/}.service + ret=$? + # LSB daemons that dies abnormally in systemd looks alive in systemd's eyes due to RemainAfterExit=yes + # lets adjust the reality a little bit + if systemctl show -p ActiveState ${0##*/}.service | grep -q '=active$' && \ + systemctl show -p SubState ${0##*/}.service | grep -q '=exited$' ; then + ret=3 + fi + return $ret + fi + + # First try "pidof" + __pids_var_run "$1" "$pid_file" "$binary" + RC=$? + if [ -z "$pid_file" -a -z "$pid" ]; then + pid="$(__pids_pidof "$1")" + fi + if [ -n "$pid" ]; then + echo $"${base} (pid $pid) is running..." + return 0 + fi + + case "$RC" in + 0) + echo $"${base} (pid $pid) is running..." + return 0 + ;; + 1) + echo $"${base} dead but pid file exists" + return 1 + ;; + 4) + echo $"${base} status unknown due to insufficient privileges." + return 4 + ;; + esac + if [ -z "${lock_file}" ]; then + lock_file=${base} + fi + # See if /var/lock/subsys/${lock_file} exists + if [ -f /var/lock/subsys/${lock_file} ]; then + echo $"${base} dead but subsys locked" + return 2 + fi + echo $"${base} is stopped" + return 3 +} + +echo_success() { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS + echo -n $" OK " + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 0 +} + +echo_failure() { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE + echo -n $"FAILED" + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 1 +} + +echo_passed() { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING + echo -n $"PASSED" + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 1 +} + +echo_warning() { + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL + echo -n "[" + [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING + echo -n $"WARNING" + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL + echo -n "]" + echo -ne "\r" + return 1 +} + +# Inform the graphical boot of our current state +update_boot_stage() { + if [ -x /bin/plymouth ]; then + /bin/plymouth --update="$1" + fi + return 0 +} + +# Log that something succeeded +success() { + [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_success + return 0 +} + +# Log that something failed +failure() { + local rc=$? + [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_failure + [ -x /bin/plymouth ] && /bin/plymouth --details + return $rc +} + +# Log that something passed, but may have had errors. Useful for fsck +passed() { + local rc=$? + [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_passed + return $rc +} + +# Log a warning +warning() { + local rc=$? + [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_warning + return $rc +} + +# Run some action. Log its output. +action() { + local STRING rc + + STRING=$1 + echo -n "$STRING " + shift + "$@" && success $"$STRING" || failure $"$STRING" + rc=$? + echo + return $rc +} + +# returns OK if $1 contains $2 +strstr() { + [ "${1#*$2*}" = "$1" ] && return 1 + return 0 +} + +# Check whether file $1 is a backup or rpm-generated file and should be ignored +is_ignored_file() { + case "$1" in + *~ | *.bak | *.old | *.orig | *.rpmnew | *.rpmorig | *.rpmsave) + return 0 + ;; + esac + return 1 +} + +# Convert the value ${1} of time unit ${2}-seconds into seconds: +convert2sec() { + local retval="" + + case "${2}" in + deci) retval=$(awk "BEGIN {printf \"%.1f\", ${1} / 10}") ;; + centi) retval=$(awk "BEGIN {printf \"%.2f\", ${1} / 100}") ;; + mili) retval=$(awk "BEGIN {printf \"%.3f\", ${1} / 1000}") ;; + micro) retval=$(awk "BEGIN {printf \"%.6f\", ${1} / 1000000}") ;; + nano) retval=$(awk "BEGIN {printf \"%.9f\", ${1} / 1000000000}") ;; + piko) retval=$(awk "BEGIN {printf \"%.12f\", ${1} / 1000000000000}") ;; + esac + + echo "${retval}" +} + +# Evaluate shvar-style booleans +is_true() { + case "$1" in + [tT] | [yY] | [yY][eE][sS] | [oO][nN] | [tT][rR][uU][eE] | 1) + return 0 + ;; + esac + return 1 +} + +# Evaluate shvar-style booleans +is_false() { + case "$1" in + [fF] | [nN] | [nN][oO] | [oO][fF][fF] | [fF][aA][lL][sS][eE] | 0) + return 0 + ;; + esac + return 1 +} + +# Apply sysctl settings, including files in /etc/sysctl.d +apply_sysctl() { + if [ -x /lib/systemd/systemd-sysctl ]; then + /lib/systemd/systemd-sysctl + else + for file in /usr/lib/sysctl.d/*.conf ; do + is_ignored_file "$file" && continue + [ -f /run/sysctl.d/${file##*/} ] && continue + [ -f /etc/sysctl.d/${file##*/} ] && continue + test -f "$file" && sysctl -e -p "$file" >/dev/null 2>&1 + done + for file in /run/sysctl.d/*.conf ; do + is_ignored_file "$file" && continue + [ -f /etc/sysctl.d/${file##*/} ] && continue + test -f "$file" && sysctl -e -p "$file" >/dev/null 2>&1 + done + for file in /etc/sysctl.d/*.conf ; do + is_ignored_file "$file" && continue + test -f "$file" && sysctl -e -p "$file" >/dev/null 2>&1 + done + sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1 + fi +} + +# A sed expression to filter out the files that is_ignored_file recognizes +__sed_discard_ignored_files='/\(~\|\.bak\|\.old\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d' + +if [ "$_use_systemctl" = "1" ]; then + if [ "x$1" = xstart -o \ + "x$1" = xstop -o \ + "x$1" = xrestart -o \ + "x$1" = xreload -o \ + "x$1" = xtry-restart -o \ + "x$1" = xforce-reload -o \ + "x$1" = xcondrestart ] ; then + + systemctl_redirect $0 $1 + exit $? + fi +fi + +strstr "$(cat /proc/cmdline)" "rc.debug" && set -x +return 0 + diff --git a/etc/rc.d/init.d/netconsole b/etc/rc.d/init.d/netconsole new file mode 100755 index 00000000..3f2872dd --- /dev/null +++ b/etc/rc.d/init.d/netconsole @@ -0,0 +1,164 @@ +#!/bin/bash +# +# netconsole This loads the netconsole module with the configured parameters. +# +# chkconfig: - 50 50 +# description: Initializes network console logging +# config: /etc/sysconfig/netconsole +# +### BEGIN INIT INFO +# Provides: netconsole +# Required-Start: $network +# Short-Description: Initializes network console logging +# Description: Initializes network console logging of kernel messages. +### END INIT INFO + +# Copyright 2002 Red Hat, Inc. +# +# Based in part on a shell script by +# Andreas Dilger Sep 26, 2001 + +PATH=/sbin:/usr/sbin:$PATH +RETVAL=0 +SERVER_ADDRESS_RESOLUTION= + +# Check that networking is up. +. /etc/sysconfig/network + +# Source function library. +. /etc/rc.d/init.d/functions + +# Default values +LOCALPORT=6666 +DEV= + +SYSLOGADDR= +SYSLOGPORT=514 +SYSLOGMACADDR= + +kernel=$(uname -r | cut -d. -f1-2) + +usage () +{ + echo $"Usage: $0 {start|stop|status|restart|condrestart}" 1>&2 + RETVAL=2 +} + +print_address_info () +{ + local host=$1 + local route via target + + route=$(LANG=C ip -o route get to $host/32) + + [ -z "$DEV" ] && DEV=$(echo $route | sed "s|.* dev \([^ ]*\).*|\1|") + echo "DEV=$DEV" + echo "LOCALADDR=$(echo $route | sed "s|.* src \([^ ]*\).*|\1|")" + if [[ $route == *" via "* ]] ; then + via=$(echo $route | sed "s|.* via \([^ ]*\).*|\1|") + target=$via + else + target=$host + fi + if [ -z "$SYSLOGMACADDR" ]; then + arp=$(LANG=C /sbin/arping -f -c 1 -I $DEV $target 2>/dev/null | awk '/ reply from .*[.*]/ { print gensub(".* reply from .* \\[(.*)\\].*","\\1","G"); exit }') + [ -n "$arp" ] && echo "SYSLOGMACADDR=$arp" + fi +} + +start () +{ + [ -f /etc/sysconfig/netconsole ] || exit 6 + . /etc/sysconfig/netconsole + + SYSLOGOPTS= + # syslogd server, if any + if [ -n "$SYSLOGADDR" ]; then + # IPv6 regex also covers 4to6, zero-compressed, and link-local addresses with zone-index addresses. + # It should also cover IPv4-embedded, IPv4-mapped, and IPv4-translated IPv6 addresses. + # Taken from: http://stackoverflow.com/a/17871737/3481531 + IPv4_regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$" + IPv6_regex="^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$" + if ! [[ "$SYSLOGADDR" =~ $IPv4_regex ]] && ! [[ "$SYSLOGADDR" =~ $IPv6_regex ]]; then + # Use IPv4 by default: + SYSLOGADDR="$(LANG=C getent ahostsv4 $SYSLOGADDR 2> /dev/null)" + + # Try IPv6 in case IPv4 resolution has failed: + if [[ $? -eq 2 ]]; then + SYSLOGADDR="$(LANG=C getent ahostsv6 $SYSLOGADDR 2> /dev/null)" + fi + + if [[ $? -ne 0 ]]; then + echo $"Unable to resolve IP address specified in /etc/sysconfig/netconsole" 1>&2 + exit 6 + fi + + SYSLOGADDR="$(echo "$SYSLOGADDR" | head -1 | cut --delimiter=' ' --fields=1)" + fi + fi + if [ -z "$SYSLOGADDR" ] ; then + echo $"Server address not specified in /etc/sysconfig/netconsole" 1>&2 + exit 6 + fi + eval $(print_address_info $SYSLOGADDR) + + if [ -z "$SYSLOGMACADDR" ]; then + echo $"netconsole: can't resolve MAC address of $SYSLOGADDR" 1>&2 + exit 1 + fi + + SYSLOGOPTS="netconsole=$LOCALPORT@$LOCALADDR/$DEV,$SYSLOGPORT@$SYSLOGADDR/$SYSLOGMACADDR " + + /usr/bin/logger -p daemon.info -t netconsole: inserting netconsole module with arguments \ + $SYSLOGOPTS + if [ -n "$SYSLOGOPTS" ]; then + action $"Initializing netconsole" modprobe netconsole \ + $SYSLOGOPTS + [ "$?" != "0" ] && RETVAL=1 + fi + touch /var/lock/subsys/netconsole +} + +stop () +{ + if /sbin/lsmod | grep netconsole >/dev/null 2>&1 ; then + action $"Disabling netconsole" rmmod netconsole; + [ "$?" != "0" ] && RETVAL=1 + fi + + rm -f /var/lock/subsys/netconsole +} + +status () +{ + if /sbin/lsmod | grep netconsole >/dev/null 2>&1 ; then + echo $"netconsole module loaded" + RETVAL=0 + else + echo $"netconsole module not loaded" + RETVAL=3 + fi +} + + +restart () +{ + stop + start +} + +condrestart () +{ + [ -e /var/lock/subsys/netconsole ] && restart +} + + +case "$1" in + stop) stop ;; + status) status ;; + start|restart|reload|force-reload) restart ;; + condrestart) condrestart ;; + *) usage ;; +esac + +exit $RETVAL diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network new file mode 100755 index 00000000..52b2d6b9 --- /dev/null +++ b/etc/rc.d/init.d/network @@ -0,0 +1,259 @@ +#! /bin/bash +# +# network Bring up/down networking +# +# chkconfig: - 10 90 +# description: Activates/Deactivates all network interfaces configured to \ +# start at boot time. +# +### BEGIN INIT INFO +# Provides: $network +# Should-Start: iptables ip6tables NetworkManager-wait-online NetworkManager $network-pre +# Short-Description: Bring up/down networking +# Description: Bring up/down networking +### END INIT INFO + +# Source function library. +. /etc/init.d/functions + +if [ ! -f /etc/sysconfig/network ]; then + exit 6 +fi + +. /etc/sysconfig/network + +if [ -f /etc/sysconfig/pcmcia ]; then + . /etc/sysconfig/pcmcia +fi + + +# Check that networking is up. +[ "${NETWORKING}" = "no" ] && exit 6 + +# if the ip configuration utility isn't around we can't function. +[ -x /sbin/ip ] || exit 1 + + +CWD=$(pwd) +cd /etc/sysconfig/network-scripts + +. ./network-functions + +# find all the interfaces besides loopback. +# ignore aliases, alternative configurations, and editor backup files +interfaces=$(ls ifcfg-* | \ + LC_ALL=C sed -e "$__sed_discard_ignored_files" \ + -e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \ + -e '{ s/^ifcfg-//g;s/[0-9]/ &/}' | \ + LC_ALL=C sort -k 1,1 -k 2n | \ + LC_ALL=C sed 's/ //') +rc=0 + +# See how we were called. +case "$1" in +start) + [ "$EUID" != "0" ] && exit 4 + rc=0 + # IPv6 hook (pre IPv4 start) + if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then + /etc/sysconfig/network-scripts/init.ipv6-global start pre + fi + + apply_sysctl + + #tell NM to reload its configuration + if [ "$(LANG=C nmcli -t --fields running general status 2>/dev/null)" = "running" ]; then + nmcli connection reload + fi + + # bring up loopback interface + action $"Bringing up loopback interface: " ./ifup ifcfg-lo + + case "$VLAN" in + yes) + if [ ! -d /proc/net/vlan ] && ! modprobe 8021q >/dev/null 2>&1 ; then + net_log $"No 802.1Q VLAN support available in kernel." + fi + ;; + esac + + vlaninterfaces="" + vpninterfaces="" + xdslinterfaces="" + bridgeinterfaces="" + + # bring up all other interfaces configured to come up at boot time + for i in $interfaces; do + unset DEVICE TYPE SLAVE NM_CONTROLLED + eval $(LANG=C grep -F "DEVICE=" ifcfg-$i) + eval $(LANG=C grep -F "TYPE=" ifcfg-$i) + eval $(LANG=C grep -F "SLAVE=" ifcfg-$i) + eval $(LANG=C grep -F "NM_CONTROLLED=" ifcfg-$i) + + if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi + + if [ "$SLAVE" = "yes" ] && ( ! is_nm_running || is_false $NM_CONTROLLED ) ; then + continue + fi + + if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then + vpninterfaces="$vpninterfaces $i" + continue + fi + if [ "$TYPE" = "xDSL" -o "$TYPE" = "Modem" ]; then + xdslinterfaces="$xdslinterfaces $i" + continue + fi + + if [ "$TYPE" = "Bridge" ]; then + bridgeinterfaces="$bridgeinterfaces $i" + continue + fi + if [ "$TYPE" = "IPSEC" ] || [ "$TYPE" = "IPIP" ] || [ "$TYPE" = "GRE" ]; then + vpninterfaces="$vpninterfaces $i" + continue + fi + + if [ "${DEVICE%%.*}" != "$DEVICE" -o "${DEVICE##vlan}" != "$DEVICE" ] ; then + vlaninterfaces="$vlaninterfaces $i" + continue + fi + + if LANG=C grep -EL "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i > /dev/null ; then + # this loads the module, to preserve ordering + is_available $i + continue + fi + action $"Bringing up interface $i: " ./ifup $i boot + [ $? -ne 0 ] && rc=1 + done + + # Bring up xDSL and VPN interfaces + for i in $vlaninterfaces $bridgeinterfaces $xdslinterfaces $vpninterfaces ; do + if ! LANG=C grep -EL "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i >/dev/null 2>&1 ; then + action $"Bringing up interface $i: " ./ifup $i boot + [ $? -ne 0 ] && rc=1 + fi + done + + # Add non interface-specific static-routes. + if [ -f /etc/sysconfig/static-routes ]; then + if [ -x /sbin/route ]; then + grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do + /sbin/route add -$args + done + else + net_log $"Legacy static-route support not available: /sbin/route not found" + fi + fi + + # IPv6 hook (post IPv4 start) + if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then + /etc/sysconfig/network-scripts/init.ipv6-global start post + fi + # Run this again to catch any interface-specific actions + apply_sysctl + + touch /var/lock/subsys/network + + [ -n "${NETWORKDELAY}" ] && /bin/sleep ${NETWORKDELAY} + ;; +stop) + [ "$EUID" != "0" ] && exit 4 + # Don't shut the network down if root or /usr is on NFS or a network + # block device. + if systemctl show --property=RequiredBy -- -.mount usr.mount | grep -q 'remote-fs.target' ; then + net_log $"rootfs or /usr is on network filesystem, leaving network up" + exit 1 + fi + + # Don't shut the network down when shutting down the system if configured + # as such in sysconfig + if is_false "$IFDOWN_ON_SHUTDOWN"; then + if systemctl is-system-running | grep -q 'stopping'; then + net_log $"system is shutting down, leaving interfaces up as requested" + exit 1 + fi + fi + + vlaninterfaces="" + vpninterfaces="" + xdslinterfaces="" + bridgeinterfaces="" + remaining="" + rc=0 + + # get list of bonding, vpn, and xdsl interfaces + for i in $interfaces; do + unset DEVICE TYPE + eval $(LANG=C grep -F "DEVICE=" ifcfg-$i) + eval $(LANG=C grep -F "TYPE=" ifcfg-$i) + + if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi + + if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then + vpninterfaces="$vpninterfaces $i" + continue + fi + if [ "$TYPE" = "IPSEC" ] || [ "$TYPE" = "IPIP" ] || [ "$TYPE" = "GRE" ]; then + vpninterfaces="$vpninterfaces $i" + continue + fi + if [ "$TYPE" = "Bridge" ]; then + bridgeinterfaces="$bridgeinterfaces $i" + continue + fi + if [ "$TYPE" = "xDSL" -o "$TYPE" = "Modem" ]; then + xdslinterfaces="$xdslinterfaces $i" + continue + fi + + if [ "${DEVICE%%.*}" != "$DEVICE" -o "${DEVICE##vlan}" != "$DEVICE" ] ; then + vlaninterfaces="$vlaninterfaces $i" + continue + fi + remaining="$remaining $i" + done + + for i in $vpninterfaces $xdslinterfaces $bridgeinterfaces $vlaninterfaces $remaining; do + unset DEVICE TYPE + (. ./ifcfg-$i + if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi + + if ! check_device_down $DEVICE; then + action $"Shutting down interface $i: " ./ifdown $i boot + [ $? -ne 0 ] && rc=1 + fi + ) + done + + action $"Shutting down loopback interface: " ./ifdown ifcfg-lo + + sysctl -w net.ipv4.ip_forward=0 > /dev/null 2>&1 + + # IPv6 hook (post IPv4 stop) + if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then + /etc/sysconfig/network-scripts/init.ipv6-global stop post + fi + + rm -f /var/lock/subsys/network + ;; +status) + echo $"Configured devices:" + echo lo $interfaces + + echo $"Currently active devices:" + echo $(/sbin/ip -o link show up | awk -F ": " '{ print $2 }') + ;; +restart|force-reload) + cd "$CWD" + $0 stop + $0 start + rc=$? + ;; +*) + echo $"Usage: $0 {start|stop|status|restart|force-reload}" + exit 2 +esac + +exit $rc diff --git a/etc/rwtab b/etc/rwtab new file mode 100644 index 00000000..ef574664 --- /dev/null +++ b/etc/rwtab @@ -0,0 +1,45 @@ +dirs /var/cache/man +dirs /var/gdm +dirs /var/lib/xkb +dirs /var/log +dirs /var/lib/puppet +dirs /var/lib/dbus + +empty /tmp +empty /var/cache/foomatic +empty /var/cache/logwatch +empty /var/cache/httpd/ssl +empty /var/cache/httpd/proxy +empty /var/cache/php-pear +empty /var/cache/systemtap +empty /var/db/nscd +empty /var/lib/dav +empty /var/lib/dhcpd +empty /var/lib/dhclient +empty /var/lib/php +empty /var/lib/pulse +empty /var/lib/systemd/timers +empty /var/lib/ups +empty /var/tmp + +files /etc/adjtime +files /etc/ntp.conf +files /etc/resolv.conf +files /etc/lvm/cache +files /etc/lvm/archive +files /etc/lvm/backup +files /var/account +files /var/lib/arpwatch +files /var/lib/NetworkManager +files /var/cache/alchemist +files /var/lib/gdm +files /var/lib/iscsi +files /var/lib/logrotate.status +files /var/lib/ntp +files /var/lib/xen +files /var/empty/sshd/etc/localtime +files /var/lib/systemd/random-seed +files /var/spool +files /var/lib/samba +files /var/log/audit/audit.log +files /var/lib/nfs diff --git a/etc/statetab b/etc/statetab new file mode 100644 index 00000000..f06981ac --- /dev/null +++ b/etc/statetab @@ -0,0 +1,12 @@ +# +# A list of paths which should be bind-mounted from a +# partition dedicated to persistent data +# +# See $STATE_LABEL in /etc/sysconfig/readonly-root +# +# Examples: +# +# /root +# /etc/ssh +# /var/spool/mail +# diff --git a/etc/sysconfig/netconsole b/etc/sysconfig/netconsole new file mode 100644 index 00000000..7b9d96e5 --- /dev/null +++ b/etc/sysconfig/netconsole @@ -0,0 +1,20 @@ +# This is the configuration file for the netconsole service. By starting +# this service you allow a remote syslog daemon to record console output +# from this system. + +# The local port number that the netconsole module will use +# LOCALPORT=6666 + +# The ethernet device to send console messages out of (only set this if it +# can't be automatically determined) +# DEV= + +# The IP address of the remote syslog server to send messages to +# SYSLOGADDR= + +# The listening port of the remote syslog daemon +# SYSLOGPORT=514 + +# The MAC address of the remote syslog server (only set this if it can't +# be automatically determined) +# SYSLOGMACADDR= diff --git a/etc/sysconfig/network-scripts b/etc/sysconfig/network-scripts new file mode 120000 index 00000000..78d743c1 --- /dev/null +++ b/etc/sysconfig/network-scripts @@ -0,0 +1 @@ +../../network-scripts \ No newline at end of file diff --git a/etc/sysconfig/readonly-root b/etc/sysconfig/readonly-root new file mode 100644 index 00000000..80da7ad5 --- /dev/null +++ b/etc/sysconfig/readonly-root @@ -0,0 +1,23 @@ +# Set to 'yes' to mount the system filesystems read-only. +# NOTE: It's necessary to append 'ro' to mount options of '/' mount point in +# /etc/fstab as well, otherwise the READONLY option will not work. +READONLY=no +# Set to 'yes' to mount various temporary state as either tmpfs +# or on the block device labelled RW_LABEL. Implied by READONLY +TEMPORARY_STATE=no +# Place to put a tmpfs for temporary scratch writable space +RW_MOUNT=/var/lib/stateless/writable +# Label on local filesystem which can be used for temporary scratch space +RW_LABEL=stateless-rw +# Options to use for temporary mount +RW_OPTIONS= +# Label for partition with persistent data +STATE_LABEL=stateless-state +# Where to mount to the persistent data +STATE_MOUNT=/var/lib/stateless/state +# Options to use for persistent mount +STATE_OPTIONS= +# NFS server to use for persistent data? +CLIENTSTATE= +# Use slave bind-mounts +SLAVE_MOUNTS=yes -- cgit v1.2.1 From 3424690ff366fa2e7ca3cf5806f9601249bea6df Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Thu, 17 May 2018 17:52:44 +0200 Subject: adjtime moved into 'util-linux' package The line /etc/adjtime has been kept in rwtab, to not break the readonly-root... --- etc/adjtime | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 etc/adjtime (limited to 'etc') diff --git a/etc/adjtime b/etc/adjtime deleted file mode 100644 index 3127bd0d..00000000 --- a/etc/adjtime +++ /dev/null @@ -1,2 +0,0 @@ -0.0 0 0.0 -0 -- cgit v1.2.1 From 59928ce72da10f1c45a0aa08c9dd3a439fdd74a0 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Fri, 18 May 2018 18:30:20 +0200 Subject: lang.{sh,csh} cleanup before moving to 'setup' package The dependance on 'consoletype' binary has been removed. --- etc/profile.d/lang.csh | 145 ++++++++++++++++++++++++------------------------- etc/profile.d/lang.sh | 135 +++++++++++++++++++-------------------------- 2 files changed, 125 insertions(+), 155 deletions(-) (limited to 'etc') diff --git a/etc/profile.d/lang.csh b/etc/profile.d/lang.csh index c6a44664..f6ec891d 100644 --- a/etc/profile.d/lang.csh +++ b/etc/profile.d/lang.csh @@ -1,83 +1,78 @@ -# /etc/profile.d/lang.csh - set i18n stuff +# /etc/profile.d/lang.csh - exports environment variables, and provides fallback +# for CJK languages that can't be displayed in console. -set sourced=0 +if (${?LANG}) then + set LANG_backup=${LANG} +endif -if ($?LANG) then - set saved_lang=$LANG - if ( -f "$HOME/.i18n" ) then - eval `sed -ne 's|^[[:blank:]]*\([^#=]\{1,\}\)=\([^=]*\)|setenv \1 \2;|p' "$HOME/.i18n"` - set sourced=1 +foreach config (/etc/locale.conf "${HOME}/.i18n") + if (-f "${file}") then + # NOTE: We are using eval & sed here to avoid invoking of any commands & functions from those files. + eval `sed -r -e 's/^[[:blank:]]*([[:upper:]_]+)=([[:print:][:digit:]\._-]+|"[[:print:][:digit:]\._-]+")/setenv \1 \2;/;t;d' ${config}` endif - setenv LANG $saved_lang - unset saved_lang -else - foreach file (/etc/locale.conf "$HOME/.i18n") - if ( -f $file ) then - eval `sed -ne 's|^[[:blank:]]*\([^#=]\{1,\}\)=\([^=]*\)|setenv \1 \2;|p' $file` - set sourced=1 - endif - end +end + +if (${?LANG_backup}) then + set LANG="${LANG_backup}" endif -if ($sourced == 1) then - if ($?LC_ALL && $?LANG) then - if ($LC_ALL == $LANG) then - unsetenv LC_ALL - endif +unset LANG_backup config + +# ---------------------------------------------- + +# The LC_ALL is not supposed to be set in /etc/locale.conf according to 'man 5 locale.conf'. +# If it is set, then we we expect it is user's explicit override (most likely from ~/.i18n file). +# See 'man 7 locale' for more info about LC_ALL. +if (${?LC_ALL}) then + if (${LC_ALL} != ${LANG}) then + setenv LC_ALL + else + unsetenv LC_ALL endif - - set consoletype=`/sbin/consoletype stdout` +endif + +# The ${LANG} manipulation is necessary only in virtual terminal (a.k.a. console - /dev/tty*): +set in_console=`tty | grep --quiet -e '/dev/tty'; echo $?` - if ($?LANG) then - switch ($LANG) - case *.utf8*: - case *.UTF-8*: - if ( $?TERM ) then - if ( "$TERM" == "linux" ) then - if ( "$consoletype" == "vt" ) then - switch ($LANG) - case en_IN*: - breaksw - case ja*: - case ko*: - case si*: - case zh*: - case ar*: - case fa*: - case he*: - case *_IN*: - setenv LANG en_US.UTF-8 - breaksw - endsw - endif - endif - endif - breaksw - case *: - if ( $?TERM ) then - if ( "$TERM" == "linux" ) then - if ( "$consoletype" == "vt" ) then - switch ($LANG) - case en_IN*: - breaksw - case ja*: - case ko*: - case si*: - case zh*: - case ar*: - case fa*: - case he*: - case *_IN*: - setenv LANG en_US - breaksw - endsw - endif - endif - endif - breaksw - endsw - endif - unsetenv SYSFONTACM - unsetenv SYSFONT - unsetenv consoletype +if (${?LANG} && ${TERM} == 'linux' && in_console == 0) then + set utf8_used=`echo ${LANG} | grep --quiet -E -i -e '^.+\.utf-?8$'; echo $?` + + if (${utf8_used} == 0) then + switch (${LANG}) + case en_IN*: + breaksw + + case ja*: + case ko*: + case si*: + case zh*: + case ar*: + case fa*: + case he*: + case *_IN*: + setenv LANG en_US.UTF-8 + breaksw + endsw + else + switch (${LANG}) + case en_IN*: + breaksw + case ja*: + case ko*: + case si*: + case zh*: + m case ar*: + case fa*: + case he*: + case *_IN*: + setenv LANG en_US + breaksw + endsw + endif + + # NOTE: We are not exporting the ${LANG} here again on purpose. + # If user starts GUI session from console manually, then + # the previously set LANG should be okay to use. endif + +unset in_console utf8_used diff --git a/etc/profile.d/lang.sh b/etc/profile.d/lang.sh index 4a759f53..0252b0fe 100644 --- a/etc/profile.d/lang.sh +++ b/etc/profile.d/lang.sh @@ -1,90 +1,65 @@ -# /etc/profile.d/lang.sh - set i18n stuff +# /etc/profile.d/lang.sh - exports environment variables, and provides fallback +# for CJK languages that can't be displayed in console. -sourced=0 +if [ -n "${LANG}" ]; then + LANG_backup="${LANG}" +fi + +for config in /etc/locale.conf "${HOME}/.i18n"; do + # NOTE: We are using eval & sed here to avoid invoking of any commands & functions from those files. + if [ -f "${config}" ]; then + eval $(sed -r -e 's/^[[:blank:]]*([[:upper:]_]+)=([[:print:][:digit:]\._-]+|"[[:print:][:digit:]\._-]+")/export \1=\2/;t;d' ${config}) + fi +done -if [ -n "$LANG" ]; then - saved_lang="$LANG" - [ -f "$HOME/.i18n" ] && . "$HOME/.i18n" && sourced=1 - LANG="$saved_lang" - unset saved_lang -else - for langfile in /etc/locale.conf "$HOME/.i18n" ; do - [ -f $langfile ] && . $langfile && sourced=1 - done +if [ -n "${LANG_backup}" ]; then + LANG="${LANG_backup}" fi -if [ "$sourced" = 1 ]; then - [ -n "$LANG" ] && export LANG || unset LANG - [ -n "$LC_ADDRESS" ] && export LC_ADDRESS || unset LC_ADDRESS - [ -n "$LC_CTYPE" ] && export LC_CTYPE || unset LC_CTYPE - [ -n "$LC_COLLATE" ] && export LC_COLLATE || unset LC_COLLATE - [ -n "$LC_IDENTIFICATION" ] && export LC_IDENTIFICATION || unset LC_IDENTIFICATION - [ -n "$LC_MEASUREMENT" ] && export LC_MEASUREMENT || unset LC_MEASUREMENT - [ -n "$LC_MESSAGES" ] && export LC_MESSAGES || unset LC_MESSAGES - [ -n "$LC_MONETARY" ] && export LC_MONETARY || unset LC_MONETARY - [ -n "$LC_NAME" ] && export LC_NAME || unset LC_NAME - [ -n "$LC_NUMERIC" ] && export LC_NUMERIC || unset LC_NUMERIC - [ -n "$LC_PAPER" ] && export LC_PAPER || unset LC_PAPER - [ -n "$LC_TELEPHONE" ] && export LC_TELEPHONE || unset LC_TELEPHONE - [ -n "$LC_TIME" ] && export LC_TIME || unset LC_TIME - if [ -n "$LC_ALL" ]; then - if [ "$LC_ALL" != "$LANG" ]; then - export LC_ALL - else - unset LC_ALL - fi +unset LANG_backup config + +# ---------------------------------------------- + +# The LC_ALL is not supposed to be set in /etc/locale.conf according to 'man 5 locale.conf'. +# If it is set, then we we expect it is user's explicit override (most likely from ~/.i18n file). +# See 'man 7 locale' for more info about LC_ALL. +if [ -n "${LC_ALL}" ]; then + if [ "${LC_ALL}" != "${LANG}" ]; then + export LC_ALL else - unset LC_ALL - fi - [ -n "$LANGUAGE" ] && export LANGUAGE || unset LANGUAGE - [ -n "$LINGUAS" ] && export LINGUAS || unset LINGUAS - [ -n "$_XKB_CHARSET" ] && export _XKB_CHARSET || unset _XKB_CHARSET - - consoletype=$CONSOLETYPE - if [ -z "$consoletype" ]; then - consoletype=$(/sbin/consoletype stdout) + unset LC_ALL fi +fi - if [ -n "$LANG" ]; then - case $LANG in - *.utf8*|*.UTF-8*) - if [ "$TERM" = "linux" ]; then - if [ "$consoletype" = "vt" ]; then - case $LANG in - ja*) LANG=en_US.UTF-8 ;; - ko*) LANG=en_US.UTF-8 ;; - si*) LANG=en_US.UTF-8 ;; - zh*) LANG=en_US.UTF-8 ;; - ar*) LANG=en_US.UTF-8 ;; - fa*) LANG=en_US.UTF-8 ;; - he*) LANG=en_US.UTF-8 ;; - en_IN*) ;; - *_IN*) LANG=en_US.UTF-8 ;; - esac - fi - fi - ;; - *) - if [ "$TERM" = "linux" ]; then - if [ "$consoletype" = "vt" ]; then - case $LANG in - ja*) LANG=en_US ;; - ko*) LANG=en_US ;; - si*) LANG=en_US ;; - zh*) LANG=en_US ;; - ar*) LANG=en_US ;; - fa*) LANG=en_US ;; - he*) LANG=en_US ;; - en_IN*) ;; - *_IN*) LANG=en_US ;; - esac - fi - fi - ;; - esac +# The ${LANG} manipulation is necessary only in virtual terminal (a.k.a. console - /dev/tty*): +if [ -n "${LANG}" ] && [ "${TERM}" = 'linux' ] && tty | grep --quiet -e '/dev/tty'; then + if grep --quiet -E -i -e '^.+\.utf-?8$' <<< "${LANG}"; then + case ${LANG} in + ja*) LANG=en_US.UTF-8 ;; + ko*) LANG=en_US.UTF-8 ;; + si*) LANG=en_US.UTF-8 ;; + zh*) LANG=en_US.UTF-8 ;; + ar*) LANG=en_US.UTF-8 ;; + fa*) LANG=en_US.UTF-8 ;; + he*) LANG=en_US.UTF-8 ;; + en_IN*) true ;; + *_IN*) LANG=en_US.UTF-8 ;; + esac + else + case ${LANG} in + ja*) LANG=en_US ;; + ko*) LANG=en_US ;; + si*) LANG=en_US ;; + zh*) LANG=en_US ;; + ar*) LANG=en_US ;; + fa*) LANG=en_US ;; + he*) LANG=en_US ;; + en_IN*) true ;; + *_IN*) LANG=en_US ;; + esac fi - unset SYSFONTACM SYSFONT consoletype + # NOTE: We are not exporting the ${LANG} here again on purpose. + # If user starts GUI session from console manually, then + # the previously set LANG should be okay to use. fi -unset sourced -unset langfile -- cgit v1.2.1 From f88dbd98e992635ee569fb6349f49cb6d215c434 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Thu, 24 May 2018 16:00:22 +0200 Subject: lang.{sh,csh} moved into setup package Other references to these files were removed, as well as irrelevant info in sysconfig.txt, and some dead code in init.d/functions file. --- etc/profile.d/lang.csh | 78 ----------------------------------------------- etc/profile.d/lang.sh | 65 --------------------------------------- etc/rc.d/init.d/functions | 19 ++---------- 3 files changed, 3 insertions(+), 159 deletions(-) delete mode 100644 etc/profile.d/lang.csh delete mode 100644 etc/profile.d/lang.sh (limited to 'etc') diff --git a/etc/profile.d/lang.csh b/etc/profile.d/lang.csh deleted file mode 100644 index f6ec891d..00000000 --- a/etc/profile.d/lang.csh +++ /dev/null @@ -1,78 +0,0 @@ -# /etc/profile.d/lang.csh - exports environment variables, and provides fallback -# for CJK languages that can't be displayed in console. - -if (${?LANG}) then - set LANG_backup=${LANG} -endif - -foreach config (/etc/locale.conf "${HOME}/.i18n") - if (-f "${file}") then - # NOTE: We are using eval & sed here to avoid invoking of any commands & functions from those files. - eval `sed -r -e 's/^[[:blank:]]*([[:upper:]_]+)=([[:print:][:digit:]\._-]+|"[[:print:][:digit:]\._-]+")/setenv \1 \2;/;t;d' ${config}` - endif -end - -if (${?LANG_backup}) then - set LANG="${LANG_backup}" -endif - -unset LANG_backup config - -# ---------------------------------------------- - -# The LC_ALL is not supposed to be set in /etc/locale.conf according to 'man 5 locale.conf'. -# If it is set, then we we expect it is user's explicit override (most likely from ~/.i18n file). -# See 'man 7 locale' for more info about LC_ALL. -if (${?LC_ALL}) then - if (${LC_ALL} != ${LANG}) then - setenv LC_ALL - else - unsetenv LC_ALL - endif -endif - -# The ${LANG} manipulation is necessary only in virtual terminal (a.k.a. console - /dev/tty*): -set in_console=`tty | grep --quiet -e '/dev/tty'; echo $?` - -if (${?LANG} && ${TERM} == 'linux' && in_console == 0) then - set utf8_used=`echo ${LANG} | grep --quiet -E -i -e '^.+\.utf-?8$'; echo $?` - - if (${utf8_used} == 0) then - switch (${LANG}) - case en_IN*: - breaksw - - case ja*: - case ko*: - case si*: - case zh*: - case ar*: - case fa*: - case he*: - case *_IN*: - setenv LANG en_US.UTF-8 - breaksw - endsw - else - switch (${LANG}) - case en_IN*: - breaksw - case ja*: - case ko*: - case si*: - case zh*: - m case ar*: - case fa*: - case he*: - case *_IN*: - setenv LANG en_US - breaksw - endsw - endif - - # NOTE: We are not exporting the ${LANG} here again on purpose. - # If user starts GUI session from console manually, then - # the previously set LANG should be okay to use. -endif - -unset in_console utf8_used diff --git a/etc/profile.d/lang.sh b/etc/profile.d/lang.sh deleted file mode 100644 index 0252b0fe..00000000 --- a/etc/profile.d/lang.sh +++ /dev/null @@ -1,65 +0,0 @@ -# /etc/profile.d/lang.sh - exports environment variables, and provides fallback -# for CJK languages that can't be displayed in console. - -if [ -n "${LANG}" ]; then - LANG_backup="${LANG}" -fi - -for config in /etc/locale.conf "${HOME}/.i18n"; do - # NOTE: We are using eval & sed here to avoid invoking of any commands & functions from those files. - if [ -f "${config}" ]; then - eval $(sed -r -e 's/^[[:blank:]]*([[:upper:]_]+)=([[:print:][:digit:]\._-]+|"[[:print:][:digit:]\._-]+")/export \1=\2/;t;d' ${config}) - fi -done - -if [ -n "${LANG_backup}" ]; then - LANG="${LANG_backup}" -fi - -unset LANG_backup config - -# ---------------------------------------------- - -# The LC_ALL is not supposed to be set in /etc/locale.conf according to 'man 5 locale.conf'. -# If it is set, then we we expect it is user's explicit override (most likely from ~/.i18n file). -# See 'man 7 locale' for more info about LC_ALL. -if [ -n "${LC_ALL}" ]; then - if [ "${LC_ALL}" != "${LANG}" ]; then - export LC_ALL - else - unset LC_ALL - fi -fi - -# The ${LANG} manipulation is necessary only in virtual terminal (a.k.a. console - /dev/tty*): -if [ -n "${LANG}" ] && [ "${TERM}" = 'linux' ] && tty | grep --quiet -e '/dev/tty'; then - if grep --quiet -E -i -e '^.+\.utf-?8$' <<< "${LANG}"; then - case ${LANG} in - ja*) LANG=en_US.UTF-8 ;; - ko*) LANG=en_US.UTF-8 ;; - si*) LANG=en_US.UTF-8 ;; - zh*) LANG=en_US.UTF-8 ;; - ar*) LANG=en_US.UTF-8 ;; - fa*) LANG=en_US.UTF-8 ;; - he*) LANG=en_US.UTF-8 ;; - en_IN*) true ;; - *_IN*) LANG=en_US.UTF-8 ;; - esac - else - case ${LANG} in - ja*) LANG=en_US ;; - ko*) LANG=en_US ;; - si*) LANG=en_US ;; - zh*) LANG=en_US ;; - ar*) LANG=en_US ;; - fa*) LANG=en_US ;; - he*) LANG=en_US ;; - en_IN*) true ;; - *_IN*) LANG=en_US ;; - esac - fi - - # NOTE: We are not exporting the ${LANG} here again on purpose. - # If user starts GUI session from console manually, then - # the previously set LANG should be okay to use. -fi diff --git a/etc/rc.d/init.d/functions b/etc/rc.d/init.d/functions index a8174751..dd6a3165 100644 --- a/etc/rc.d/init.d/functions +++ b/etc/rc.d/init.d/functions @@ -58,21 +58,6 @@ systemctl_redirect () { # Get a sane screen width [ -z "${COLUMNS:-}" ] && COLUMNS=80 -if [ -z "${CONSOLETYPE:-}" ]; then - if [ -c "/dev/stderr" ] && [ -r "/dev/stderr" ]; then - CONSOLETYPE="$(/sbin/consoletype < /dev/stderr 2>/dev/null)" - else - CONSOLETYPE="serial" - fi -fi - -if [ -z "${NOLOCALE:-}" ] && [ -z "${LANGSH_SOURCED:-}" ] && \ - [ -f /etc/sysconfig/i18n -o -f /etc/locale.conf ] ; then - . /etc/profile.d/lang.sh 2>/dev/null - # avoid propagating LANGSH_SOURCED any further - unset LANGSH_SOURCED -fi - # Read in our configuration if [ -z "${BOOTUP:-}" ]; then if [ -f /etc/sysconfig/init ]; then @@ -98,7 +83,9 @@ if [ -z "${BOOTUP:-}" ]; then # Verbosity of logging: LOGLEVEL=1 fi - if [ "$CONSOLETYPE" = "serial" ]; then + + # NOTE: /dev/ttyS* is serial console. + if tty | grep --quiet -e '/dev/ttyS'; then BOOTUP=serial MOVE_TO_COL= SETCOLOR_SUCCESS= -- cgit v1.2.1 From b4a33f400394b4f89bac723977f6f356252a3386 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Fri, 18 May 2018 16:59:18 +0200 Subject: networks moved into 'setup' package --- etc/networks | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 etc/networks (limited to 'etc') diff --git a/etc/networks b/etc/networks deleted file mode 100644 index 9a46fc80..00000000 --- a/etc/networks +++ /dev/null @@ -1,3 +0,0 @@ -default 0.0.0.0 -loopback 127.0.0.0 -link-local 169.254.0.0 -- cgit v1.2.1 From 9b2dbe00100d4e1077404b9d781f35adad979467 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Thu, 24 May 2018 16:06:03 +0200 Subject: netreport functionality dropped This concept is quite outdated, and not sane to use at all. --- etc/NetworkManager/dispatcher.d/00-netreport | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100755 etc/NetworkManager/dispatcher.d/00-netreport (limited to 'etc') diff --git a/etc/NetworkManager/dispatcher.d/00-netreport b/etc/NetworkManager/dispatcher.d/00-netreport deleted file mode 100755 index eee7fb38..00000000 --- a/etc/NetworkManager/dispatcher.d/00-netreport +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -cd /etc/sysconfig/network-scripts -. ./network-functions - -[ -f ../network ] && . ../network - -# Notify programs that have requested notification -do_netreport - -exit 0 -- cgit v1.2.1 From f5e4588e0e73046ed0995c148e8a4619b9ba69fb Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Tue, 12 Jun 2018 17:24:57 +0200 Subject: specfile: netconsole service moved to /usr/libexec --- etc/rc.d/init.d/netconsole | 164 --------------------------------------------- 1 file changed, 164 deletions(-) delete mode 100755 etc/rc.d/init.d/netconsole (limited to 'etc') diff --git a/etc/rc.d/init.d/netconsole b/etc/rc.d/init.d/netconsole deleted file mode 100755 index 3f2872dd..00000000 --- a/etc/rc.d/init.d/netconsole +++ /dev/null @@ -1,164 +0,0 @@ -#!/bin/bash -# -# netconsole This loads the netconsole module with the configured parameters. -# -# chkconfig: - 50 50 -# description: Initializes network console logging -# config: /etc/sysconfig/netconsole -# -### BEGIN INIT INFO -# Provides: netconsole -# Required-Start: $network -# Short-Description: Initializes network console logging -# Description: Initializes network console logging of kernel messages. -### END INIT INFO - -# Copyright 2002 Red Hat, Inc. -# -# Based in part on a shell script by -# Andreas Dilger Sep 26, 2001 - -PATH=/sbin:/usr/sbin:$PATH -RETVAL=0 -SERVER_ADDRESS_RESOLUTION= - -# Check that networking is up. -. /etc/sysconfig/network - -# Source function library. -. /etc/rc.d/init.d/functions - -# Default values -LOCALPORT=6666 -DEV= - -SYSLOGADDR= -SYSLOGPORT=514 -SYSLOGMACADDR= - -kernel=$(uname -r | cut -d. -f1-2) - -usage () -{ - echo $"Usage: $0 {start|stop|status|restart|condrestart}" 1>&2 - RETVAL=2 -} - -print_address_info () -{ - local host=$1 - local route via target - - route=$(LANG=C ip -o route get to $host/32) - - [ -z "$DEV" ] && DEV=$(echo $route | sed "s|.* dev \([^ ]*\).*|\1|") - echo "DEV=$DEV" - echo "LOCALADDR=$(echo $route | sed "s|.* src \([^ ]*\).*|\1|")" - if [[ $route == *" via "* ]] ; then - via=$(echo $route | sed "s|.* via \([^ ]*\).*|\1|") - target=$via - else - target=$host - fi - if [ -z "$SYSLOGMACADDR" ]; then - arp=$(LANG=C /sbin/arping -f -c 1 -I $DEV $target 2>/dev/null | awk '/ reply from .*[.*]/ { print gensub(".* reply from .* \\[(.*)\\].*","\\1","G"); exit }') - [ -n "$arp" ] && echo "SYSLOGMACADDR=$arp" - fi -} - -start () -{ - [ -f /etc/sysconfig/netconsole ] || exit 6 - . /etc/sysconfig/netconsole - - SYSLOGOPTS= - # syslogd server, if any - if [ -n "$SYSLOGADDR" ]; then - # IPv6 regex also covers 4to6, zero-compressed, and link-local addresses with zone-index addresses. - # It should also cover IPv4-embedded, IPv4-mapped, and IPv4-translated IPv6 addresses. - # Taken from: http://stackoverflow.com/a/17871737/3481531 - IPv4_regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$" - IPv6_regex="^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$" - if ! [[ "$SYSLOGADDR" =~ $IPv4_regex ]] && ! [[ "$SYSLOGADDR" =~ $IPv6_regex ]]; then - # Use IPv4 by default: - SYSLOGADDR="$(LANG=C getent ahostsv4 $SYSLOGADDR 2> /dev/null)" - - # Try IPv6 in case IPv4 resolution has failed: - if [[ $? -eq 2 ]]; then - SYSLOGADDR="$(LANG=C getent ahostsv6 $SYSLOGADDR 2> /dev/null)" - fi - - if [[ $? -ne 0 ]]; then - echo $"Unable to resolve IP address specified in /etc/sysconfig/netconsole" 1>&2 - exit 6 - fi - - SYSLOGADDR="$(echo "$SYSLOGADDR" | head -1 | cut --delimiter=' ' --fields=1)" - fi - fi - if [ -z "$SYSLOGADDR" ] ; then - echo $"Server address not specified in /etc/sysconfig/netconsole" 1>&2 - exit 6 - fi - eval $(print_address_info $SYSLOGADDR) - - if [ -z "$SYSLOGMACADDR" ]; then - echo $"netconsole: can't resolve MAC address of $SYSLOGADDR" 1>&2 - exit 1 - fi - - SYSLOGOPTS="netconsole=$LOCALPORT@$LOCALADDR/$DEV,$SYSLOGPORT@$SYSLOGADDR/$SYSLOGMACADDR " - - /usr/bin/logger -p daemon.info -t netconsole: inserting netconsole module with arguments \ - $SYSLOGOPTS - if [ -n "$SYSLOGOPTS" ]; then - action $"Initializing netconsole" modprobe netconsole \ - $SYSLOGOPTS - [ "$?" != "0" ] && RETVAL=1 - fi - touch /var/lock/subsys/netconsole -} - -stop () -{ - if /sbin/lsmod | grep netconsole >/dev/null 2>&1 ; then - action $"Disabling netconsole" rmmod netconsole; - [ "$?" != "0" ] && RETVAL=1 - fi - - rm -f /var/lock/subsys/netconsole -} - -status () -{ - if /sbin/lsmod | grep netconsole >/dev/null 2>&1 ; then - echo $"netconsole module loaded" - RETVAL=0 - else - echo $"netconsole module not loaded" - RETVAL=3 - fi -} - - -restart () -{ - stop - start -} - -condrestart () -{ - [ -e /var/lock/subsys/netconsole ] && restart -} - - -case "$1" in - stop) stop ;; - status) status ;; - start|restart|reload|force-reload) restart ;; - condrestart) condrestart ;; - *) usage ;; -esac - -exit $RETVAL -- cgit v1.2.1 From 765c1737b3e3e4ca38f0140bcfadc3f2c11a7413 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Tue, 24 Jul 2018 15:28:12 +0200 Subject: network: parsing of /proc/mounts returned This partially reverts the commit 15eaf7ece, because systemd's generated unit files might have incorrect dependencies at some circumstances, thus causing diskless nfs-clients to hang while unmounting root filesystem after '$ service network stop'. --- etc/rc.d/init.d/network | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network index 52b2d6b9..06723859 100755 --- a/etc/rc.d/init.d/network +++ b/etc/rc.d/init.d/network @@ -162,11 +162,16 @@ stop) [ "$EUID" != "0" ] && exit 4 # Don't shut the network down if root or /usr is on NFS or a network # block device. - if systemctl show --property=RequiredBy -- -.mount usr.mount | grep -q 'remote-fs.target' ; then + root_fstype=$(gawk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/" && $3 != "rootfs") { print $3; }}' /proc/mounts) + usr_fstype=$(gawk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/usr" && $3 != "rootfs") { print $3; }}' /proc/mounts) + + if [[ "${root_fstype}" == nfs* || "${usr_fstype}" == nfs* ]] || systemctl show --property=RequiredBy -- -.mount usr.mount | grep -q 'remote-fs.target' ; then net_log $"rootfs or /usr is on network filesystem, leaving network up" exit 1 fi + unset root_fstype usr_fstype + # Don't shut the network down when shutting down the system if configured # as such in sysconfig if is_false "$IFDOWN_ON_SHUTDOWN"; then -- cgit v1.2.1 From de16adb62bfc62cdfb2fce185d83bfe157c41803 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Wed, 1 Aug 2018 17:41:08 +0200 Subject: network/ifup/ifdown: deprecation warnings for 'network-scripts' added In case of 'network' service these warnings are displayed only once, to not spam unnecessarily user's journalctl if they have many NICs. --- etc/rc.d/init.d/network | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'etc') diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network index 06723859..36c1a922 100755 --- a/etc/rc.d/init.d/network +++ b/etc/rc.d/init.d/network @@ -49,6 +49,13 @@ interfaces=$(ls ifcfg-* | \ LC_ALL=C sed 's/ //') rc=0 +net_log $"You are using 'network' service provided by 'network-scripts', which are now deprecated." warning network +net_log $"'network-scripts' will be removed from distribution in near future." warning network +net_log $"It is advised to switch to 'NetworkManager' instead for network management." warning network + +# This disables additional warnings during the boot process: +export DEPRECATION_WARNING_ISSUED='true' + # See how we were called. case "$1" in start) -- cgit v1.2.1 From e92401ef4c2d317601f6280d654cd2b7b297e8b7 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Mon, 6 Aug 2018 11:15:47 +0200 Subject: network/ifup/ifdown: deprecations warnings redirected to stderr --- etc/rc.d/init.d/network | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network index 36c1a922..ade227ef 100755 --- a/etc/rc.d/init.d/network +++ b/etc/rc.d/init.d/network @@ -49,9 +49,9 @@ interfaces=$(ls ifcfg-* | \ LC_ALL=C sed 's/ //') rc=0 -net_log $"You are using 'network' service provided by 'network-scripts', which are now deprecated." warning network -net_log $"'network-scripts' will be removed from distribution in near future." warning network -net_log $"It is advised to switch to 'NetworkManager' instead for network management." warning network +net_log $"You are using 'network' service provided by 'network-scripts', which are now deprecated." warning network >&2 +net_log $"'network-scripts' will be removed from distribution in near future." warning network >&2 +net_log $"It is advised to switch to 'NetworkManager' instead for network management." warning network >&2 # This disables additional warnings during the boot process: export DEPRECATION_WARNING_ISSUED='true' -- cgit v1.2.1 From 95632676a94a32bfa0a334b8e7f1c0fc87ce1af4 Mon Sep 17 00:00:00 2001 From: Jan Macku Date: Thu, 14 Mar 2019 15:53:53 +0100 Subject: Add option to wait until target is reachable Add option for time saving waiting Replace date with simple timeout Rename configurable variable and add documentation Print log only when didn't reach IP address in time Add support for IPv6 address Remove unneeded output Change -ge to -gt, because equal value is ok Clarify DNS name option in documentation --- etc/rc.d/init.d/network | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network index ade227ef..2b874d17 100755 --- a/etc/rc.d/init.d/network +++ b/etc/rc.d/init.d/network @@ -163,7 +163,22 @@ start) touch /var/lock/subsys/network - [ -n "${NETWORKDELAY}" ] && /bin/sleep ${NETWORKDELAY} + # Fixed delay + [ -n "${NETWORKDELAY}" ] && [ -z "${WAIT_UNTIL_REACHABLE}" ] && /bin/sleep "${NETWORKDELAY}" + + # Adaptive delay + # It tests if network connection is ready via ping + if [ -n "${WAIT_UNTIL_REACHABLE}" ] ; then + [ -z "${NETWORKDELAY}" ] && NETWORKDELAY=30 + TIMEOUT=0 + IPV="" + ipcalc -c -6 "${WAIT_UNTIL_REACHABLE}" &>/dev/null && IPV="-6" + while [ $TIMEOUT -le $NETWORKDELAY ] ; do + ping $IPV -q -c 1 -W 1 "${WAIT_UNTIL_REACHABLE}" >/dev/null && break + TIMEOUT=$(( TIMEOUT + 1 )) + done + [ $TIMEOUT -gt $NETWORKDELAY ] && net_log $"Target is not reachable, but timeout was already reached. Continuing anyway." + fi ;; stop) [ "$EUID" != "0" ] && exit 4 -- cgit v1.2.1 From 0330dd3457ecefbbca58eab8ed83f9ced56b0081 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 29 Mar 2019 12:05:57 +0100 Subject: rc.d/functions: remove support cgroups Now with systemd, this does not work pretty well and users really should use systemd unit-files for this. --- etc/rc.d/init.d/functions | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/functions b/etc/rc.d/init.d/functions index dd6a3165..97f09d13 100644 --- a/etc/rc.d/init.d/functions +++ b/etc/rc.d/init.d/functions @@ -290,27 +290,14 @@ daemon() { # if they set NICELEVEL in /etc/sysconfig/foo, honor it [ -n "${NICELEVEL:-}" ] && nice="nice -n $NICELEVEL" - # if they set CGROUP_DAEMON in /etc/sysconfig/foo, honor it - if [ -n "${CGROUP_DAEMON}" ]; then - if [ ! -x /bin/cgexec ]; then - echo -n "Cgroups not installed"; warning - echo - else - cgroup="/bin/cgexec"; - for i in $CGROUP_DAEMON; do - cgroup="$cgroup -g $i"; - done - fi - fi - # Echo daemon [ "${BOOTUP:-}" = "verbose" -a -z "${LSB:-}" ] && echo -n " $base" # And start it up. if [ -z "$user" ]; then - $cgroup $nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*" + $nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*" else - $cgroup $nice runuser -s /bin/bash $user -c "$corelimit >/dev/null 2>&1 ; $*" + $nice runuser -s /bin/bash $user -c "$corelimit >/dev/null 2>&1 ; $*" fi [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup" -- cgit v1.2.1 From 2145c10d1c2d8d934a2292fc6f630884c856dc01 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Mon, 1 Apr 2019 17:57:43 +0200 Subject: network: don't fail with IFDOWN_ON_SHUTDOWN --- etc/rc.d/init.d/network | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network index 2b874d17..e3560b64 100755 --- a/etc/rc.d/init.d/network +++ b/etc/rc.d/init.d/network @@ -198,8 +198,8 @@ stop) # as such in sysconfig if is_false "$IFDOWN_ON_SHUTDOWN"; then if systemctl is-system-running | grep -q 'stopping'; then - net_log $"system is shutting down, leaving interfaces up as requested" - exit 1 + net_log $"system is shutting down, leaving interfaces up as requested" info + exit 0 fi fi -- cgit v1.2.1 From fdcc55839df2334d7a7567de1f02f07ee7a69561 Mon Sep 17 00:00:00 2001 From: HATAYAMA Daisuke Date: Wed, 7 Aug 2019 16:32:27 +0900 Subject: rc.d/functions: fix escape sequence being output under systemd service units When functions provided by /etc/rc.d/functions is used, escape sequence is output under systemd service units and logged into /var/log/messages as follows: # LANG=C systemctl cat foobar.service # /etc/systemd/system/foobar.service [Unit] Description=FOOBAR [Service] Type=oneshot ExecStart=/usr/bin/foobar.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target # cat /usr/bin/foobar.sh #! /bin/bash . /etc/init.d/functions echo_success # LANG=C grep foobar.sh /var/log/messages Aug 7 09:29:54 localhost foobar.sh[29607]: #033[60G[#033[1;32m OK #033[0;39m]#015#033[60G[#033[1;31mFAILED#033[0;39m] This is a regression issue caused by the commit f88dbd98e992 where consoletype command was dropped. Under systemd service units, standard input is associated with /dev/null by default: # systemctl show -p StandardInput foobar.service StandardInput=null man 5 systemd.exec: StandardInput= Controls where file descriptor 0 (STDIN) of the executed processes is connected to. Takes one of null, tty, tty-force, tty-fail, data, file:path, socket or fd:name. If null is selected, standard input will be connected to /dev/null, i.e. all read attempts by the process will result in immediate EOF. consoletype command interprets /dev/null as serial: # consoletype < /dev/null warning: consoletype is now deprecated, and will be removed in the near future! warning: use tty (1) instead! More info: 'man 1 tty' serial The commit f88dbd98e992 overlooks this situation. To fix this issue, check also "not a tty" to cover the case where standard input is /dev/null. Note that LANG=C is needed because the message "not a tty" varies depending on locales. --- etc/rc.d/init.d/functions | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/functions b/etc/rc.d/init.d/functions index 97f09d13..9b0add1c 100644 --- a/etc/rc.d/init.d/functions +++ b/etc/rc.d/init.d/functions @@ -84,8 +84,9 @@ if [ -z "${BOOTUP:-}" ]; then LOGLEVEL=1 fi - # NOTE: /dev/ttyS* is serial console. - if tty | grep --quiet -e '/dev/ttyS'; then + # NOTE: /dev/ttyS* is serial console. "not a tty" is such as + # /dev/null associated when executed under systemd service units. + if LANG=C tty | grep --quiet -e '\(/dev/ttyS\|not a tty\)'; then BOOTUP=serial MOVE_TO_COL= SETCOLOR_SUCCESS= -- cgit v1.2.1 From 66d26269a83229b7340f7ace06dfc715c04df7d8 Mon Sep 17 00:00:00 2001 From: Jan Macku Date: Thu, 12 Sep 2019 12:32:36 +0200 Subject: Repalace hardcoded tests for yes and no with testing functions Resolve issue: #42 --- etc/rc.d/init.d/network | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network index e3560b64..414bee06 100755 --- a/etc/rc.d/init.d/network +++ b/etc/rc.d/init.d/network @@ -28,7 +28,7 @@ fi # Check that networking is up. -[ "${NETWORKING}" = "no" ] && exit 6 +is_false "${NETWORKING}" && exit 6 # if the ip configuration utility isn't around we can't function. [ -x /sbin/ip ] || exit 1 @@ -76,13 +76,11 @@ start) # bring up loopback interface action $"Bringing up loopback interface: " ./ifup ifcfg-lo - case "$VLAN" in - yes) + if is_true "$VLAN" ; then if [ ! -d /proc/net/vlan ] && ! modprobe 8021q >/dev/null 2>&1 ; then net_log $"No 802.1Q VLAN support available in kernel." fi - ;; - esac + fi vlaninterfaces="" vpninterfaces="" @@ -99,7 +97,7 @@ start) if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi - if [ "$SLAVE" = "yes" ] && ( ! is_nm_running || is_false $NM_CONTROLLED ) ; then + if is_true "$SLAVE" && ( ! is_nm_running || is_false "$NM_CONTROLLED" ) ; then continue fi -- cgit v1.2.1 From 78d63a837ca18cd88f6b79e11211805bea05cf0d Mon Sep 17 00:00:00 2001 From: Jan Macku Date: Tue, 24 Mar 2020 11:04:57 +0100 Subject: Remove deprecated option -m of pidof MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves: #1798128 Co-authored-by: Lukáš Nykrýn --- etc/rc.d/init.d/functions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/functions b/etc/rc.d/init.d/functions index 9b0add1c..9e33ee06 100644 --- a/etc/rc.d/init.d/functions +++ b/etc/rc.d/init.d/functions @@ -218,8 +218,8 @@ __pids_var_run() { # Output PIDs of matching processes, found using pidof __pids_pidof() { - pidof -c -m -o $$ -o $PPID -o %PPID -x "$1" || \ - pidof -c -m -o $$ -o $PPID -o %PPID -x "${1##*/}" + pidof -c -o $$ -o $PPID -o %PPID -x "$1" || \ + pidof -c -o $$ -o $PPID -o %PPID -x "${1##*/}" } -- cgit v1.2.1 From 55ee446c0715b013e6d54860ae65e55baf544dc3 Mon Sep 17 00:00:00 2001 From: Jan Macku Date: Tue, 8 Jan 2019 17:23:13 +0100 Subject: Replace grep -EL with subshell since -L changed behaviour Sugested by @lnykryn Related to issue #300 --- etc/rc.d/init.d/network | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'etc') diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network index 414bee06..bc5c1502 100755 --- a/etc/rc.d/init.d/network +++ b/etc/rc.d/init.d/network @@ -124,7 +124,7 @@ start) continue fi - if LANG=C grep -EL "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i > /dev/null ; then + if ( . ./ifcfg-"$i" ; is_false "$ONBOOT" ) ; then # this loads the module, to preserve ordering is_available $i continue @@ -135,7 +135,7 @@ start) # Bring up xDSL and VPN interfaces for i in $vlaninterfaces $bridgeinterfaces $xdslinterfaces $vpninterfaces ; do - if ! LANG=C grep -EL "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i >/dev/null 2>&1 ; then + if ( . ./ifcfg-"$i" ; ! is_false "$ONBOOT" ) ; then action $"Bringing up interface $i: " ./ifup $i boot [ $? -ne 0 ] && rc=1 fi -- cgit v1.2.1 From ff4fcd53fae5189b6a4692647463823ea7d1c16c Mon Sep 17 00:00:00 2001 From: Jan Macku Date: Tue, 14 Jul 2020 15:42:52 +0200 Subject: rwtab: Add support for chrony Chrony isn't able to write into its files while stateless mode is active.This patch should avoid this issue. (cherry picked from commit 21c44a8e9a68a3a9d39a7fe003096434cea904ea) --- etc/rwtab | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'etc') diff --git a/etc/rwtab b/etc/rwtab index ef574664..2254aaca 100644 --- a/etc/rwtab +++ b/etc/rwtab @@ -20,6 +20,7 @@ empty /var/lib/php empty /var/lib/pulse empty /var/lib/systemd/timers empty /var/lib/ups +empty /var/lib/chrony empty /var/tmp files /etc/adjtime @@ -41,5 +42,5 @@ files /var/empty/sshd/etc/localtime files /var/lib/systemd/random-seed files /var/spool files /var/lib/samba -files /var/log/audit/audit.log +files /var/log/audit/audit.log files /var/lib/nfs -- cgit v1.2.1