#!/usr/bin/bash

if [ "$1" = "update-grub2" ]; then
  UPDATE_GRUB2=$1
  shift 1
fi

if [ "$1" ]; then
  TTYS="$1"
else
  TTYS="0"
fi

# sysctl
sed -i 's/kernel.sysrq = 0/kernel.sysrq = 1/g' /etc/sysctl.conf \
  && sysctl kernel.sysrq=1

# update time configuration
#cat /etc/adjtime
#sed -i 's/^LOCAL/UTC/' /etc/adjtime

GRUB2_CONF="${GRUB2_CONF:=/etc/default/grub}"
if [ -f ${GRUB2_CONF} ]; then
  echo "GRUB2 found, configuring GRUB2!"
  # increase timeout to 3 seconds
  sed -i 's/^GRUB_TIMEOUT=1$/GRUB_TIMEOUT=3/' ${GRUB2_CONF}
  grep -q '^ *GRUB_TERMINAL.*serial' $GRUB2_CONF || \
    cat >> $GRUB2_CONF << EOF
# grub2 serial console configuration
GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX nomodeset console=tty0 console=ttyS$TTYS"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --unit=$TTYS --speed=115200"
EOF
  if [ "$UPDATE_GRUB2" ]; then
    grub2-mkconfig -o /boot/grub2/grub.cfg
  else
    echo "Please run these commands:"
    echo "grub2-mkconfig -o /boot/grub2/grub.cfg"
    #echo "grub2-install /dev/[sv]da"
    echo "Or run:"
    echo "$0 update-grub2"
  fi
  exit
fi

# serial console
if [ -z "$GRUB_CONF" ]; then
  GRUB_CONF=`readlink -f /boot/grub/menu.lst`
fi
grep -q '^terminal .*serial' $GRUB_CONF || \
sed -i 's/hiddenmenu$/hiddenmenu\n'\
'serial --unit='$TTYS' --speed=115200\n'\
'terminal --timeout=3 serial console/' \
  $GRUB_CONF
sed -i 's/^hiddenmenu/#hiddenmenu/' $GRUB_CONF
sed -i 's/^timeout=0$/timeout=3/' $GRUB_CONF
grep -E -q '^[[:space:]]+kernel .* console=ttyS.' $GRUB_CONF || \
sed -i 's/^\([ \t]\+kernel .*\)$/\1 console=tty0 console=ttyS'$TTYS'/' \
  $GRUB_CONF
# disable rhgb and KMS
sed -i 's/ rhgb / nomodeset /' $GRUB_CONF
