Guia de Shell Scripting Avanzado - Ejemplo bash Kernel helper
Monografía creado por David F. Madrid. Extraido de: http://www.nautopia.net/archives/es/linux_programacion/guia_de_shell_scripting_avanzado/introduccion.php
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()
{
arch="i386"
archivo="/dev/null"
while getopts i:b:dlocv:p:n: opt
do case $opt in
a) arch="$OPTARG";;
o) archivo="$OPTARG";;
p) barg="$OPTARG";;
v) verbose=1;;
done
export PATH="/bin:/usr/bin/:$PATH"
if [ -z "$version" ]
then
# Si tenemos que descargar el kernel ...
if [ -n "$downl" ]
then
# Descarga el kernel especificado desde el sitio oficial o sitio externo
# Obtenemos el nombre del archivo comprimido
# Si no descargamos, instalamos desde la ruta de la carpeta
# Borra el enlace simbólico actual
if [ -h /usr/src/linux ]
then
# Creamos directorio para encontrar el creado
mkdir $$.tempo
if echo $archivtar | egrep "*.bz2"
then
# Es un tar bzip2
if echo $archivtar | egrep "*.gz"
then
# Es un tar gzip
if [ -n "$comprimido" ]
then
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
# Partición/directorio donde colocar lo que buscará GRUB o LILO
if echo $boot | egrep "/dev"
then
if [ ! -e arch/$arch/boot/bzImage ]
then
fi
if [ -n "$nombre" ]
then
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 echo $boot | egrep "/dev"
then
echo "Añadidas entradas al gestor de inicio"
echo "Listo"
- 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 "Uso:\n\n krnhelper -i nombre [-d] [-l] [-b part] [-a arq] \
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 " -b paritition Partición de boot donde buscará el gestor\
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 " -n nombre Nombre de nuestro kernel para el gestor \
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";;
- version="$OPTARG";;
- boot="$OPTARG";;
- cargador=1;;
- lilo=1;;
o) archivo="$OPTARG";;
p) barg="$OPTARG";;
v) verbose=1;;
?) uso;;
esacdone
export PATH="/bin:/usr/bin/:$PATH"
if [ -z "$version" ]
then
uso
exit 0
fiexit 0
# 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
fi
then
url=$version
wget $version
elsewget $version
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
ficraiz=$archivtar
# 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
ficomprimido=1
if echo $archivtar | egrep "*.gz"
then
# Es un tar gzip
opt="z"
comprimido=1
ficomprimido=1
if [ -n "$comprimido" ]
then
tar xv"$opt"pf $archivtar > $archivo
craiz=`find -cnewer $$.tempo -type d -maxdepth 1\
| sed "s/\.\/\(.*\)/\1/g"`craiz=`find -cnewer $$.tempo -type d -maxdepth 1\
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
elsemake 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
fithen
echo "Error montando la partición de boot $boot"
exit 0
fiexit 0
if [ ! -e arch/$arch/boot/bzImage ]
then
echo "Error al compilar el kernel o sus módulos"
exit 0fi
if [ -n "$nombre" ]
then
craiz=$nombre
ficp 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
fithen
printf "\n%s\n%s\nread-only\n$s" "image=/boot/kernel-$craiz"\
else"label=$craiz" "$barg" >> /etc/lilo.conf
printf "\n%s\n%s" "title=$craiz" "kernel /kernel-$craiz \
fi$barg" >> /boot/grub/grub.conf
if echo $boot | egrep "/dev"
then
if ! umount $boot
then
echo "Error desmontando la partición $boot"
exit 0
exit 0
fi
fiecho "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'
|
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 |
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 »

