domingo, 28 de octubre de 2012

compilar kernel netbook a la manera debian

Hola, escribo este script que funciona junto con el de ultima_version_kernel.sh 
Este funciona con github; clona el repositorio de dieguen89 (este aloja el archivo necesario para compilar un kernel optimizado para netbooks), Compara que la version descargada del codigo fuente y del archivo config sean iguales, en tal caso, empieza a compilar el codigo fuente del kernel. He consultado con el autor del repositorio (Diego F) y ahora sé que las construcciones que compilo les faltan los parches correspondientes: BFS, BFQ, uKSM y TuxOnIce, no he agregado el parche para tarjetas Broadcom por el desconocimiento sobre el cómo hacerlo, (este usa zenity para mostrar mensajes y tambíen xmessage. 

ACTUALIZACIÓN 15/12/12: Estuve haciendo pruebas con los diferentes parches y, al correr un kernel que tenga el parche TuxOnIce, y al suspender la computadora, ésta se congela. Por eso he quitado el soporte para ese parche, pero pueden habilitarlo modificando el script de abajo, en la linea 58 donde dice: TUX_ON_ICE="n" lo pueden cambiar por: TUX_ON_ICE="y" Así habilitarán el parche y el kernel se compilará con este. Este script compila la versión del núcleo linux-3.7.
Este script funciona descargando del repositorio, los archivos necesarios (aquí yo me basé en PKBUILD y config). Estos archivos se encuentran en mi carpeta personal, sólo hay que instalar git:
sudo apt-get install git
y luego hay que clonarlo con:
git clone https://github.com/dieghen89/kernel-netbook.git 

#!/bin/bash
###################################################################################
# This work is licensed under a Creative Commons Reconocimiento-NoComercial 3.0 Unported License.
# http://creativecommons.org/licenses/by-nc/3.0/deed.es_ES
# Creado por Paulo Lira Gutiérrez (enriquelira948@gmail.com)
# Se concede permiso para copiar, distribuir y/o modificar este programa siempre 
# y cuando se cite al autor y la fuente de http://kernel-netbook.blogspot.com  
# y según los términos de la GNU General Public License, Versión 3 o cualquiera
# posterior publicada por la Free Software Foundation.
YELLOW="\033[1;33m"
ENDCOLOR="\033[0m"
RED="\033[0;31m"
if [ $USER != root ]; then
  echo -e $RED"Error: debes ser root"
  echo -e $YELLOW"Saliendo..."$ENDCOLOR
  exit 0
fi

cd ~/Programas
_linux=3.7
LISTAR=$(ls *.tar.bz2)
VERSION=$(curl -s http://kernel.org/kdist/finger_banner | head -1 |tail -1 | awk '{ print $11 }')
LINUX_VERSION_TAR=linux-$VERSION.tar.bz2
LINUX_VERSION=linux-$VERSION
VERSION_CONFIG=$(cat $HOME/kernel-netbook/config | head -3 |tail -1 | grep -o '[0123456789.]*' | head -3 |tail -1)
VERSION_LISTADO=$(ls *.tar.bz2 | grep -o '[0123456789.]*'| head -1 | sed 's/.$//g')

gxmessage -center -geometry 600×400 -title “kernel-netbook” -buttons Si:1″,No:2″ -default “Si” -wrap “La versión del archivo de configuración del kernel-netbook es la $VERSION_CONFIG y la versión del kernel es la $VERSION_LISTADO, ¿Desea continuar?”

case $? in

1)	echo -e $YELLOW"Instalando dependencias necesarias para la compilación..."$ENDCOLOR
sudo apt-get install build-essential gcc libncurses5-dev
sleep 3
sudo cp ~/Programas/$LISTAR /usr/src/$LISTAR
cd /usr/src
echo -e $YELLOW"Listando archivos .tar.bz2 en Programas..."$ENDCOLOR
echo $LISTAR
sleep 3
sudo rm -rf linux-$VERSION_CONFIG
echo -e $YELLOW"Descomprimiendo el código fuente en /usr/src/linux-$_linux..."$ENDCOLOR
sleep 3
sudo tar -xjvf $LISTAR
echo -e $YELLOW"Borrando archivo $LISTAR..."$ENDCOLOR
sudo rm $LISTAR
sleep 2
echo -e $YELLOW"Creando enlace simbólico hacia carpeta linux-$_linux..."$ENDCOLOR
sudo rm -rf linux
sudo ln -s linux-$_linux linux
sleep 2
cd /usr/src/linux
echo -e $YELLOW"Borrando archivos innecesarios..."$ENDCOLOR
sudo rm patch-*-ck1* toi*.patch 000*BFQ*.patch *.patch hybrid-portsrc*.tar.gz
################################################################################################
#                                         PARCHES                                              #
# ALGUNAS PARTES TOMADAS DEL PKBUILD DE DIEGUEN89
#https://github.com/dieghen89/kernel-netbook/blob/master/PKGBUILD
TUX_ON_ICE="n"
BROADCOM_WL="n"
UKSM="n"

### HOW-TO:
#
## >> Details for: TUX_ON_ICE
#		Set it to "n" you you don't want the Tux On Ice support
#
## >> Details for: BROADCOM_WL
#		Set is to "y" if you need the iw module for your wireless card
#
#
#		P.S. this pkgbuild supports the graysky's modprobe_db package
#
#
## >> Details for: UKSM
#		Set it to "y" to enable the testing uKSM patch, more info here:
#		http://kerneldedup.org
#
## >> The previous BFQ_IO_SCHEDULER is useless, read the wiki page in google code
#
##########

zenity --info --text="Según su configuración,se aplicarán los parches BFS, BFQ, uKSM y TuxOnIce"
DIR_FUENTE=/usr/src/linux
_basekernel=3.7
pkgver=${_basekernel}
pkgrel=1
#Broadcom-wl:
broadcom_ver=5.100.82.112
broadcom="hybrid-portsrc_x86_32-v${broadcom_ver//./_}"
#BFS: - http://users.on.net/~ckolivas/kernel/ -
_ckpatchversion=1
_ckpatchname="patch-${_basekernel}-ck${_ckpatchversion}"
#BFQ: - http://algo.ing.unimo.it/people/paolo/disk_sched/ -
_bfqpath="http://algo.ing.unimo.it/people/paolo/disk_sched/patches/3.7.0-v5r1"
#TuxOnIce:
_toipatch="$HOME/kernel-netbook/toi-3.7.patch"

#uKSM:
_uksm="http://kerneldedup.org/download/uksm/0.1.2.1"

_uksm_name="uksm-0.1.2.1-for-v3.6.ge.2"
echo -e $YELLOW"Descargando parche BFS..."$ENDCOLOR
wget http://ck.kolivas.org/patches/3.0/3.7/${_basekernel}-ck${_ckpatchversion}/${_ckpatchname}.bz2
echo -e $YELLOW"Descargando parche uKSM..."$ENDCOLOR
wget ${_uksm}/${_uksm_name}.patch
echo -e $YELLOW"Descargando parche BFQ..."$ENDCOLOR
wget "${_bfqpath}/0001-block-cgroups-kconfig-build-bits-for-BFQ-v5r1-3.7.patch"
wget "${_bfqpath}/0002-block-introduce-the-BFQ-v5r1-I-O-sched-for-3.7.patch"
echo -e $YELLOW"Descargando parche Broadcom..."$ENDCOLOR
wget http://www.broadcom.com/docs/linux_sta/${broadcom}.tar.gz
cp $_toipatch $DIR_FUENTE
cp $HOME/kernel-netbook/linux-recent.patch linux-recent.patch
cp $HOME/kernel-netbook/license.patch license.patch
cp $HOME/kernel-netbook/user-ioctl.patch user-ioctl.patch

 install -m644 $HOME/kernel-netbook/ubuntu-logo.ppm drivers/video/logo/

  # --> BFS
  zenity --info --text="Parchando fuente con parche BFS"
  #Adjust localversion
  bzip2 -d patch-3.7-ck1.bz2
  sed -i -e "s/-ck${_ckpatchversion}//g" $DIR_FUENTE/${_ckpatchname}
  patch -Np1 -i $DIR_FUENTE/patch-3.7-ck1
  

  # --> TOI

  if [ $TUX_ON_ICE = "y" ] ; then
   zenity --info --text="Parchando fuente con parche TuxOnIce"
    patch -Np1 -i ${_toipatch}
  fi



  # --> BFQ
    zenity --info --text="Parchando fuente con parche BFQ"
  for patch in $(ls $DIR_FUENTE/000*BFQ*.patch) ; do
    patch -Np1 -i $patch
  done



 # --> uKSM
  if [ $UKSM = "y" ] ; then
    zenity --info --text="Parchando fuente con parche uKSM"
    patch -Np1 -i $DIR_FUENTE/${_uksm_name}.patch
  fi


##Section: Broadcom-wl
  if [ "${BROADCOM_WL}" == "y" ] ; then
    zenity --info --text="Compilando módulo Broadcom" 
    cp -ar src/wl src/wl_orig
    patch -p1 -N -i linux-recent.patch
    patch -p1 -N -i license.patch
    patch -p1 -N -i user-ioctl.patch
    make -C $DIR_FUENTE/linux-$_basekernel M=`pwd`
    install -D -m 755 wl.ko ${pkgdir}/lib/modules/${_extramodules}/wl.ko
    rm -r src/wl
    mv src/wl_orig src/wl
  fi


zenity --warning --text="Asegúrese de que los parches se hallan aplicado con éxito"
sleep 3
echo -e $YELLOW"Si no presione Ctrl+C"$ENDCOLOR
sleep 10
echo -e $YELLOW"Borrando archivos innecesarios..."$ENDCOLOR
sudo rm patch-*-ck1* toi*.patch 000*BFQ*.patch *.patch hybrid-portsrc*.tar.gz

echo -e $YELLOW"Limpiando el árbol del directorio fuente..."$ENDCOLOR
sudo make mrproper
#                                      FIN DE PARCHES                                          #
################################################################################################
echo -e $YELLOW"Copiando fichero kernel-netbook/config como .config"$ENDCOLOR
sudo cp $HOME/kernel-netbook/config /usr/src/linux/.config
echo -e $YELLOW"Asegúrese que se haya añadido el archivo .config"$ENDCOLOR
cat /usr/src/linux/.config | grep CONFIG_MATOM
sleep 10
echo -e $YELLOW"Iniciando gconfig"$ENDCOLOR
sudo make gconfig
echo -e $YELLOW"Copiando fichero .config a Ubuntu One"$ENDCOLOR
sudo cp /usr/src/linux/.config $HOME/"Ubuntu One"/kernel-netbook-$VERSION_CONFIG
sleep 3
echo -e $YELLOW"Limpiando el kernel..."$ENDCOLOR
sleep 5
sudo make-kpkg clean
sleep 5
echo -e $YELLOW"Compilando el kernel..."$ENDCOLOR
sudo make-kpkg -j2 --initrd linux_headers linux_image
sleep 5
#Reproduce un pitido
play /usr/share/sounds/Sentinella/Bip-bip.ogg
#echo -e $YELLOW"Instalando linux-image y linux_headers..."$ENDCOLOR
#cd /usr/src
#sudo dpkg -i linux*.deb
sleep 5
echo -e $YELLOW"Subiendo linux-image y linux-headers a 4shared..."$ENDCOLOR
cadaver --rcfile=$HOME/.4shared-kernel
echo -e $YELLOW"Moviendo archivos .deb a Programas"$ENDCOLOR
sudo mv /usr/src/linux*.deb $HOME/Programas
echo -e $YELLOW"Se desactiva una entrada al inicio para checar la version del kernel-netbook"$ENDCOLOR
sed -i 's/X-GNOME-Autostart-enabled=true/X-GNOME-Autostart-enabled=false/g' $HOME/.config/autostart/checa_avisa_kernel.sh.desktop
echo -e $YELLOW"Saliendo..."$ENDCOLOR
sleep 4;;


2)	CANCELAR=$(zenity --warning --text="Se ha cancelado");;

esac



Descarga: kernel.sh
Pueden descargar el script o copiar y pegar el codigo anterior en su editor favorito (puede ser gedit), guardarlo, y darle permisos de ejecución; seleccionan el archivo guardado, le dan clic derecho >Propiedades > pestaña Permisos y marcan la casilla de "Permitir ejecutar el archivo como un programa". Algunos scripts no contienen la extension .sh pero aún asi siguen funcionando.

Nota: En cualquier momento podría modificar el script para adaptarlo a mis necesidades. Favor de avisar en caso de que los enlaces no funcionen.

No hay comentarios:

Publicar un comentario

Entre todos ayudemos a mejorar linux