#/**
#         ogr LinuxBootParameters int_ndisk int_nfilesys
#@brief   Muestra los parámetros de arranque de un sistema de archivos Linux.
#@param   int_ndisk     nº de orden del disco
#@param   int_nfilesys  nº de orden del sistema de archivos
#@return  str_kernel str_initrd str_parameters ...
#@exception OG_ERR_FORMAT    Formato incorrecto.
#@exception OG_ERR_NOTFOUND  Disco o particion no corresponden con un dispositivo.
#@exception OG_ERR_FILESYS   Tipo de sistema de archivos desconocido o no se puede montar.
#@warning Función básica usada por \c ogr Boot
#@version 0.9 - Primera adaptación para OpenGnSys.
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2009-09-11
#@version 0.9.2 - Soporta sistema de archivos /boot independiente.
#@author  Ramon Gomez, ETSII Universidad de Sevilla
#@date    2010-07-20
#*/ ##
# Variables locales.
local MNTDIR CONFDIR CONFFILE

# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
    ogr Help "$FUNCNAME" "$FUNCNAME int_ndisk int_nfilesys" \
           "$FUNCNAME 1 2  ==>  ..."
    return
fi
# Error si no se reciben 2 parámetros.
[ $# == 2 ] || ogr RaiseError $OG_ERR_FORMAT || return $?

# Detectar id. de tipo de partición y codificar al mnemonico.
MNTDIR=$(ogr Mount $1 $2) 2>/dev/null
[ -z "$MNTDIR" ] && ogr RaiseError OG_ERR_FILESYS "$1, $2" && return $?

# Fichero de configuración de GRUB.
CONFDIR=$MNTDIR                               # Sist. archivos de arranque /boot.
[ -d $MNTDIR/boot ] && CONFDIR=$MNTDIR/boot   # Sist. archivos raíz con directorio boot.
CONFFILE="$CONFDIR/grub/menu.lst"
[ ! -e $CONFFILE ] && CONFFILE="$CONFDIR/grub/grub.cfg"
[ ! -e $CONFFILE ] && ogr RaiseError $OG_ERR_NOTFOUND "grub.cfg" && return $?

# Toma del fichero de configuracion los valores del kernel, initrd
#       y parámetros de arranque usando las cláusulas por defecto
#       ("default" en GRUB1, "set default" en GRUB2)
#       y los formatea para que sean compatibles con \c kexec .  */
# /* (comentario Doxygen)
awk 'BEGIN {cont=-1;}
     $1~/^default/      {sub(/=/," "); def=$2+0;}
     $1~/^set/ && $2~/^default/ {gsub(/[="]/," "); def=$3+0;}
     $1~/^title|^menuentry/ {cont++}
     $1~/^kernel|^linux/ {if (def==cont) {
                            kern=$2;
                            sub($1,"");sub($1,"");sub(/^[ \t]*/,"");app=$0}  # /* (comentario Doxygen)
                        }
     $1~/^initrd/       {if (def==cont) init=$2}
     END {if (kern!="") printf("%s %s %s", kern,init,app)}
    ' $CONFFILE
# */ (comentario Doxygen)
