você está aqui: Home  → Arquivo de Mensagens

Script para atualização do kernel em sistemas Gentoo

Colaboração: Ricardo Iramar dos Santos

Data de Publicação: 19 de December de 2008

Um script para quem está cansado de repetir os mesmos comandos de compilação do kernel quando existe uma nova versão no Gentoo.

#!/bin/bash
#
# Script para atualização do kernel em sistemas Gentoo com eix
# Agent Smith (Ricardo Iramar dos Santos)
# ricardo.iramar@gmail.com
#

VERSOES=(`eix -n sys-kernel/gentoo-sources --format "< fullinstalled>" | sed 's/sys-kernel\///g' | cat -n`)
DVERSOES=(`eix -n sys-kernel/gentoo-sources --format "< fullinstalled>" | sed 's/sys-kernel\///g'`)
NVERSAO=$(dialog --stdout --menu "Selecione a versao do kernel" 0 0 0 ${VERSOES[@]})
if [ "$NVERSAO" = "" ]; then echo "Favor informar a versão do kernel."; exit 1; fi
VERSAO=`echo ${DVERSOES[$NVERSAO-1]} | sed 's/gentoo-sources-//g' | sed 's/-/-gentoo-/g'`
if [ ! -d "/usr/src/linux-$VERSAO" ]; then echo "Diretório /usr/src/linux-$VERSAO não encontrado."; exit 2; fi
if [ ! -d "/usr/src/linux" ]; then echo "Link simbólico /usr/src/linux não encontrado."; exit 3; fi
if [ ! -d "/boot/grub" ]; then mount /boot; fi
if [ -f "/boot/kernel-$VERSAO" ]; then echo "Arquivo /boot/kernel-$VERSAO existente."; umount /boot; exit 4; fi
if [ -f "/boot/config-$VERSAO" ]; then echo "Arquivo /boot/config-$VERSAO existente."; umount /boot; exit 5; fi
if [ -f "/boot/System.map-$VERSAO" ]; then echo "Arquivo /boot/System.map-$VERSAO existente."; umount /boot; exit 6; fi

echo "Copiando arquivo de configuração antigo..."
cd /usr/src/
cp linux/.config linux-$VERSAO/
echo "Removendo e criando novo link simbólico /usr/src/linux..."
rm -f linux
ln -s linux-$VERSAO linux
ls -l
cd linux
echo "Carregando configuração antiga..."
make oldconfig
echo "Compilando kernel versão $VERSAO..."
make && make modules_install
echo "Copiando kernel versão $VERSAO para /boot..."
cp arch/i386/boot/bzImage /boot/kernel-$VERSAO
cp System.map /boot/System.map-$VERSAO
cp .config /boot/config-$VERSAO
echo "Recompilando os módulos..."
module-rebuild populate && module-rebuild rebuild
echo "Atualizando /boot/grub/grub.conf..."
cd /boot/grub
rm -f grub.conf.old
cp grub.conf grub.conf.old
sed -n '1,10p' grub.conf > grub.conf.new
echo "title=Gentoo Linux $VERSAO" >> grub.conf.new
echo "root (hd0,0)" >> grub.conf.new
echo "kernel /kernel-$VERSAO root=/dev/hda4" >> grub.conf.new
echo "savedefault" >> grub.conf.new
sed -n '10,$p' grub.conf | sed 's/^savedefault$/savedefault 0/g' >> grub.conf.new
mv grub.conf.new grub.conf
echo "Instalando grub no MBR de /dev/hda..."
grub-install --no-floppy /dev/hda
umount /boot
echo "Kernel versão $VERSAO compilado e instalado com sucesso!"
Agent Smith (Ricardo Iramar dos Santos) <ricardo iramar (a) gmail com>


Veja a relação completa dos artigos de Ricardo Iramar dos Santos