Rename /etc/grml/fai/files to /etc/grml/fai/config/files and move /etc/grml/fai/live...
[grml-live.git] / etc / grml / fai / config / files / usr / share / initramfs-tools / scripts / init-top / grml / GRMLBASE
diff --git a/etc/grml/fai/config/files/usr/share/initramfs-tools/scripts/init-top/grml/GRMLBASE b/etc/grml/fai/config/files/usr/share/initramfs-tools/scripts/init-top/grml/GRMLBASE
new file mode 100755 (executable)
index 0000000..5afaca4
--- /dev/null
@@ -0,0 +1,174 @@
+#!/bin/sh
+
+# prereq header {{{
+# without this header booting will fail with:
+# "PANIC: Circular dependancy.  Exiting."
+PREREQ=""
+prereqs()
+{
+        echo "$PREREQ"
+}
+case $1 in
+# get pre-requisites
+prereqs)
+        prereqs
+        exit 0
+        ;;
+esac
+# }}}
+
+# helper functions {{{
+
+if grep -qe debug -qe verbose /proc/cmdline 2>/dev/null ; then
+   echo "debug: scripts/init-top/grml running">/dev/console
+fi
+
+# get boot command line
+CMDLINE="$(cat /proc/cmdline)"
+
+# Simple shell grep
+stringinfile(){
+  case "$(cat $2)" in *$1*) return 0;; esac
+  return 1
+}
+
+# same for strings
+stringinstring(){
+  case "$2" in *$1*) return 0;; esac
+  return 1
+}
+
+# Reread boot command line; echo last parameter's argument or return false.
+getbootparam(){
+  stringinstring " $1=" "$CMDLINE" || return 1
+  result="${CMDLINE##*$1=}"
+  result="${result%%[   ]*}"
+  echo "$result"
+  return 0
+}
+
+# Check boot commandline for specified option
+checkbootparam(){
+  stringinstring " $1" "$CMDLINE"
+  return "$?"
+}
+
+if checkbootparam "nocolor" ; then
+  echo "Disabling colors in bootsequence as requested on commandline."
+  # Reset fb color mode
+  RESET="\e]R"
+  # ANSI COLORS
+  # Erase to end of line
+  CRE="\r\e[K"
+  # Clear and reset Screen
+  CLEAR="\ec"
+else
+  # Reset fb color mode
+  RESET="\e]R"
+  # ANSI COLORS
+  # Erase to end of line
+  CRE="\r\e[K"
+  # Clear and reset Screen
+  CLEAR="\ec"
+  # Normal color
+  NORMAL="\e[0;39m"
+  # RED: Failure or error message
+  RED="\e[1;31m"
+  # GREEN: Success message
+  GREEN="\e[1;32m"
+  # YELLOW: Descriptions
+  YELLOW="\e[1;33m"
+  # BLUE: System mesages
+  BLUE="\e[1;34m"
+  # MAGENTA: Found devices or drivers
+  MAGENTA="\e[1;35m"
+  # CYAN: Questions
+  CYAN="\e[1;36m"
+  # BOLD WHITE: Hint
+  WHITE="\e[1;37m"
+fi
+
+log_grml_failure_msg () {
+  echo -n " ${RED}*${NORMAL} $@"
+}
+
+# int log_grml_begin_message (char *message)
+log_grml_begin_msg () {
+  echo -n " ${GREEN}*${NORMAL} $@"
+}
+
+log_grml_warn_msg () {
+  echo -n " ${YELLOW}*${NORMAL} $@"
+}
+
+# int log_grml_end_message (int exitstatus)
+SUCCESS=" ${BLUE}[ ${GREEN}ok ${BLUE}]${NORMAL}"
+FAILED=" ${NORMAL}[${RED}fail${NORMAL}]"
+
+# }}}
+
+# welcome splash {{{
+
+DISTRI="$(getbootparam 'distri' 2>/dev/null)"
+
+if [ -r /etc/grml_version ] ; then
+   GRML_VERSION="$(cat /etc/grml_version)"
+fi
+
+if checkbootparam "quiet" ; then
+    echo -e "${CLEAR}"
+fi
+
+if [ -n "$DISTRI" ] ; then
+SPLASH="
+${RED} $DISTRI
+
+${WHITE}based on grml.org.
+
+${NORMAL}"
+else
+SPLASH="
+${RED}   ____ ____  __  __ _
+${RED}  / ___|  _ \|  \/  | |
+${RED} | |  _| |_) | |\/| | |
+${RED} | |_| |  _ <| |  | | |___
+${RED}  \____|_| \_\_|  |_|_____|
+
+${WHITE}grml.org - Linux for sysadmins and texttool users.${NORMAL}"
+fi
+
+echo ""
+echo "${WHITE}Welcome to"
+echo "$SPLASH"
+echo
+
+if [ -n "$GRML_VERSION" ] ; then
+   log_grml_begin_msg "Running $GRML_VERSION"
+   echo
+fi
+
+# don't output anything if running with bootsplash feature
+if checkbootparam "splash" ; then
+  exec >/dev/null </dev/null 2>&1
+fi
+# }}}
+
+## /proc/cmdline handling {{{
+# No kernel messages while probing modules:
+if ! grep -qe debug -qe verbose /proc/cmdline 2>/dev/null ; then
+   [ -r /proc/sys/kernel/printk ] && echo "0" > /proc/sys/kernel/printk
+fi
+
+# Make sure we support squashfs:
+if ! grep -q squashfs /proc/filesystems ; then
+   modprobe -q squashfs || log_grml_failure_msg "Warning: looks like you do not have support for squashfs"
+fi
+
+if grep -q 'boot=live' /proc/cmdline 2>/dev/null ; then
+   log_grml_begin_msg "Finished early booting sequence." ; echo "$SUCCESS"
+   log_grml_begin_msg "Searching for GRML file, this might take a few seconds..."
+   echo
+fi
+## }}}
+
+# vim: foldmethod=marker expandtab ai ft=sh