Inicio / Wikis / Monografías / Guia de Shell Scripting Avanzado - Ejemplo bash Kernel helper

Guia de Shell Scripting Avanzado - Ejemplo bash Kernel helper

11 de Octubre de 2005
Linux

7 - Ejemplo bash Kernel helper

Khlper, un script que he hecho para automatizar un poco el proceso de instalación del kernel. Para usarlo se le debe especificar las fuentes del kernel con la opción -i. Las fuentes pueden ser:

- Una url de un archivo tar.bz2 o tar.gz2
Una url parcial de kernel.org a partir de la versión. Por ejemplo, v2.6/linux-2.6.7.tar.bz2
Una ruta de un archivo comprimido con las fuentes
Una carpeta con las fuentes descompridas
Para indicarle que lo descargue añadimos la opción -d. Podemos especificar que nombre tendrá el kernel con la opción -n. Con la opción -b indicamos una partición que debe montar para instalar el binario del kernel y los archivos .config y System.map en /boot, si no incluímos está opción, lo instalará en /boot sin montar partición alguna. Con la opción -c incluímos una entrada en nuestro grub.conf para que grub pueda arrancar el sistema operativo. Si queremos incluir la entrada en lilo.conf, hay que usar la opción -l(ojo en lilo no lo he probado,no sé como saldrá). Podemos pasarle parámetros a la línea que leerá nuestro gestor de arranque con -p con los parámetros entre comillas si son varios.

Después de que configureis las fuentes con el menuconfig el script continuará instalando el kernel.

Ejemplos de uso:

Baja el kernel 2.6 de kernel.org y lo instala en /dev/hda5
# khlper -i v2.6/linux-2.6.7.tar.bz2 -b /dev/hda5 -d

Instala a partir de comprimido y añade entradas a grub
# khlper -i paquetes/linux-2.6.7.tar.bz2 -dcp "VGA=788 gentoo=nodefvfs root=/dev/hda8"


#!/bin/bash

# Helper script para realizar tareas comunes con el kernel
# Una inmensa chorrada, aunque ahorra tiempo
# © David F. Madrid for www.nautopia.net

# Uso() ayuda de consola

uso()
{
printf "Instala el kernel desde diversas fuentes\n"
printf "Uso:\n\n krnhelper -i nombre [-d] [-l] [-b part] [-a arq] \
[-o archivo] [-c] [-p pboot] [-n nombre]\n\n"
printf " -i nombre Origen del kernel a instalar\n"
printf " -b paritition Partición de boot donde buscará el gestor\
de inicio. Por defecto /boot\n"
printf " -a arquitectura Arquitectura de la máquina. Por defecto, i386\n"
printf " -n nombre Nombre de nuestro kernel para el gestor \
de arranque\n"
printf " -o archivo Archivo donde registrar la salida de la\
compilación\n"
printf " -p paramboot Parámetros de boot que necesite nuestro\
gestor\(entrecomillas si son varios\)\n"
printf " -c Añadir entrada al archivo de configuración\
del gestor de arranque\n"
printf " -d Descarga las fuentes especificadas con la\
opción i \n"
printf " -l Utiliza Lilo como gestor de arranque\(por\
defecto usa GRUB\).Aviso no probado\n\n\n"
printf " Fallos?
>\
davidfm@nautopia.net\n"

exit 1
}

arch="i386"
archivo="/dev/null"

while getopts i:b:dlocv:p:n: opt
do case $opt in
a) arch="$OPTARG";;
  1. version="$OPTARG";;
  2. boot="$OPTARG";;
  3. cargador=1;;
d) downl=1;;
  1. lilo=1;;
n) nombre="$OPTARG";;
o) archivo="$OPTARG";;
p) barg="$OPTARG";;
v) verbose=1;;
?) uso;;
esac
done

export PATH="/bin:/usr/bin/:$PATH"

if [ -z "$version" ]
then
uso
exit 0
fi

# Si tenemos que descargar el kernel ...

if [ -n "$downl" ]
then

# Descarga el kernel especificado desde el sitio oficial o sitio externo

if echo $version | egrep -i "http|ftp"
then
url=$version
wget $version
else
fi

# Obtenemos el nombre del archivo comprimido

archivtar=`basename "$url"`
else

# Si no descargamos, instalamos desde la ruta de la carpeta

archivtar=$version
craiz=$archivtar
fi

# Borra el enlace simbólico actual

if [ -h /usr/src/linux ]
then
rm -rf /usr/src/linux
fi

# Creamos directorio para encontrar el creado

mkdir $$.tempo

if echo $archivtar | egrep "*.bz2"
then

# Es un tar bzip2

opt="j"
comprimido=1
fi

if echo $archivtar | egrep "*.gz"
then

# Es un tar gzip

opt="z"
comprimido=1
fi

if [ -n "$comprimido" ]
then
tar xv"$opt"pf $archivtar > $archivo
craiz=`find -cnewer $$.tempo -type d -maxdepth 1\
| sed "s/\.\/\(.*\)/\1/g"`
fi

# Borra el directorio temporal

rm -rf $$.tempo

# ejecutamos menuconfig

echo "Configurando kernel $craiz ..."
cd $craiz

# Crea el enlace simbólico apuntando a pwd(el directorio actual)

ln -s `pwd` /usr/src/linux

make menuconfig

# Iniciamos la secuencia de compilación según la serie del kernel
# 2.4 o 2.6

if echo $craiz | egrep "2.6"
then
make && make modules_install > $archivo
else
make dep && make bzImage modules modules_install > $archivo
fi

# Partición/directorio donde colocar lo que buscará GRUB o LILO

if echo $boot | egrep "/dev"
then
if ! mount $boot /boot
then
echo "Error montando la partición de boot $boot"
exit 0
fi
fi

if [ ! -e arch/$arch/boot/bzImage ]
then
echo "Error al compilar el kernel o sus módulos"
exit 0

fi

if [ -n "$nombre" ]
then
craiz=$nombre
fi

cp arch/$arch/boot/bzImage /boot/kernel-$craiz
cp System.map /boot/System.map-$craiz
cp .config /boot/config-$craiz

echo "Copiados archivos en BOOT"

if [ -n "$cargador" ]
then

# Añadimos una nueva entrada en nuestro gestor de arranque(GRUB/LILO)

if [ -n "$lilo" ]
then
printf "\n%s\n%s\nread-only\n$s" "image=/boot/kernel-$craiz"\
"label=$craiz" "$barg" >> /etc/lilo.conf
else
printf "\n%s\n%s" "title=$craiz" "kernel /kernel-$craiz \
$barg" >> /boot/grub/grub.conf
fi
fi

if echo $boot | egrep "/dev"
then

if ! umount $boot
then
echo "Error desmontando la partición $boot"
exit 0

fi
fi

echo "Añadidas entradas al gestor de inicio"
echo "Listo"
Valora este capítulo:
Autor y licencia de 'Guia de Shell Scripting Avanzado - Ejemplo bash Kernel helper'
David F. Madrid Extraído de: http://www.nautopia.net/archives/es/linux_programacion/guia_de_shell_scripting_avanzado/introduccion.php

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
This article is licensed under a Creative Commons License
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Guia de Shell Scripting Avanzado - Ejemplo bash Kernel helper' (0)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este monografía



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Guia de Shell Scripting Avanzado - Ejemplo bash Kernel helper'

Es muy fácil crear archivos en el sistema operativo UNIX. Por lo tanto, los usuarios... Más »
Esta guía no es un documento general de seguridad. Esta guía está específicamente orientada a... Más »
Esta guía rápida explica cómo instalar y configurar Iptables con soporte H323. Se basa en... Más »
Esta guía tiene por objetivo dar respuestas muy claras y concretas a los problemas que... Más »
Que la ideología política (quizá sea mejor llamarla ideología a secas [1]) influye en el... Más »
¿Estás seguro de que deseas eliminar este capítulo?