El parche «milagro» de Linux (ahora con script de instalación)

Recordais ese parche «milagro» de 200 lineas de código que mejoraba el rendimiento en la agrupación de tareas ejecutadas desde la consola. Pues bien, he sacado un «ratejo» e implementado un pequeño script (valga la redundancia) para facilitar su instalación. El script (que teneis que ejecutar como root) es el siguiente:


#!/bin/bash

YELLOW="\033[1;33m"
RED="\033[0;31m"
ENDCOLOR="\033[0m"

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# PARCHEAR
#
# Aplica las mejoras del kernel (parche de 200 lineas)
# pero en 4 lineas de bash.
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function PARCHEAR()
{

FICHERO="$HOME/.bashrc"

echo ""
echo -e $YELLOW"Parcheando el fichero [${FICHERO}]..."$ENDCOLOR
echo ""

# Añadiendo cadenas a .bashrc

# Primero buscamos una cadena "base" para ver si esta o no ya añadido
LINEAS=`cat $FICHERO | grep "/dev/cgroup/cpu/user" | wc -l`
if [ "$LINEAS" == "0" ];
then
	echo "Añadiendo parche para rendimiento..."
	echo "if [ \"\$PS1\" ] ; then" | tee -a $FICHERO
	echo "mkdir -m 0700 /dev/cgroup/cpu/user/\$\$" | tee -a $FICHERO
	echo "echo \$\$ > /dev/cgroup/cpu/user/\$\$/tasks" | tee -a $FICHERO
	echo "fi" | tee -a $FICHERO
else
	echo "Parece que parche ya fue incluido en $FICHERO"
fi

FICHERO="/etc/rc.local"
echo ""
echo -e $YELLOW"Parcheando el fichero [${FICHERO}]..."$ENDCOLOR
echo ""

# Añadiendo cadenas a /etc/rc.local

# Primero buscamos una cadena "base" para ver si esta o no ya añadido
LINEAS=`cat $FICHERO | grep "/dev/cgroup/cpu/release_agent" | wc -l`
if [ "$LINEAS" == "0" ];
then

	echo "Añadiendo parche para rendimiento..."
	POSI=`cat $FICHERO | grep -n "exit 0" | sort -nr | head -n 1 | awk -F: '{print $1}'`
	#echo "Posi es [$POSI]"
	echo "Sacando copia de seguridad de $FICHERO en /etc/rc.local.backup.txt"
	cp /etc/rc.local /etc/rc.local.backup.txt
	sed "${POSI}imkdir -p /dev/cgroup/cpu\nmount -t cgroup cgroup /dev/cgroup/cpu -o cpu\nmkdir -m 0777 /dev/cgroup/cpu/user\necho \"/usr/local/sbin/cgroup_clean\" > /dev/cgroup/cpu/release_agent" /etc/rc.local | tee /etc/rc.new.local
	mv /etc/rc.new.local /etc/rc.local

	#echo "#========== parche mejora ============" | tee -a $FICHERO
	#echo "mkdir -p /dev/cgroup/cpu" | tee -a $FICHERO
	#echo "mount -t cgroup cgroup /dev/cgroup/cpu -o cpu" | tee -a $FICHERO
	#echo "mkdir -m 0777 /dev/cgroup/cpu/user" | tee -a $FICHERO
	#echo "echo \"/usr/local/sbin/cgroup_clean\" > /dev/cgroup/cpu/release_agent" | tee -a $FICHERO
	#echo "#====================================" | tee -a $FICHERO
else
	echo "Parece que parche ya fue incluido en $FICHERO"
fi

echo ""
echo -e $YELLOW"Dando permisos de ejecucion a [${FICHERO}]..."$ENDCOLOR
echo ""
sudo chmod +x $FICHERO

FICHERO="/usr/local/sbin/cgroup_clean"
echo ""
echo -e $YELLOW"Creando el fichero [${FICHERO}]..."$ENDCOLOR
echo ""
if [ -f $FICHERO ];
then
	echo "#!/bin/sh" | tee $FICHERO
	echo "rmdir /dev/cgroup/cpu/$*" | tee -a $FICHERO

else
	echo "Fichero $FICHERO ya existe."
fi;

echo ""
echo -e $YELLOW"Dando permisos de ejecucion a [${FICHERO}]..."$ENDCOLOR
echo ""
sudo chmod +x $FICHERO

echo "FINALIZADO. Parche aplicado, reinicia y disfruta de Linux..."

}
#-----------------------------------------------------------------------------

# Comprobar que eres usuario root
if [ $USER != root ]; then
  echo -e $RED"Error: tienes que ser root."
  echo -e $YELLOW"Finalizando..."$ENDCOLOR
  exit 0
fi

# Parchear el Sistema
PARCHEAR

# end of parche.sh

Nota: no me hago responsable de si se rompe algo en tu equipo (que ya tengo bastante con soportar a «zanganos» en el trabajo ^^, asi que ejecutalo bajo tu propia responsabilidad). De todas formas es fácil volver «hacia atrás» si se siguen las instrucciones del post original. Sin embargo, antes de ejecutar el script te recomiendo sacar una copia de seguridad de tu «.bashrc» y de tu «/etc/rc.local». Si no da muchos problemas, lo empaquetare como .deb.

Descarga | (Renombra el .doc a .sh) parche.sh

64 Respuestas to “El parche «milagro» de Linux (ahora con script de instalación)”


  1. 1 RoyalGNZ noviembre 22, 2010 a las 7:19 pm

    Mejor espero a que salga la versión full, no vaya a ser cosa que rompa algo en el sistema xD

  2. 2 superpiwi noviembre 22, 2010 a las 7:31 pm

    Bueno, yo lo llevo probado en 2 equipos con exito, pero tampoco me voy a mojar…

  3. 3 domingo perez noviembre 22, 2010 a las 7:32 pm

    lo instalo y me dice lo siguiente;
    domingopv@pc1:~$ sudo sh mejorar.sh
    mejorar.sh: 14: Syntax error: «(» unexpected
    domingopv@pc1:~$

  4. 6 songochain noviembre 22, 2010 a las 7:33 pm

    Seguro que es una chorrada pero no entiendo porque se queja de esta línea cuando sólo es la declaración de la función:

    sudo ./hack_200_lines
    ./hack_200_lines: 15: Syntax error: «(» unexpected

    Saludos.

  5. 7 superpiwi noviembre 22, 2010 a las 7:40 pm

    mmm, voy a subirlo como .doc (wordpress no me deja subir .sh) directamente.

  6. 8 superpiwi noviembre 22, 2010 a las 7:50 pm

    Me olvide una cosa en el script. si te sale un error como:

    mkdir: no se puede crear el directorio «/dev/cgroup/cpu/user/10955»: Permiso denegado
    bash: /dev/cgroup/cpu/user/10955/tasks: No existe el archivo o directorio

    Es que hay que dar permisos de ejecucion al directorio /dev/cgroup/cpu/user

    como root ejecuta:

    chmod a+rwx /dev/cgroup/cpu/user

    pero bueno, esto mismo tambien te pasaria si ejecutas las instrucciones manuales paso a paso.

  7. 9 droide noviembre 22, 2010 a las 8:44 pm

    lo guardo como parche.sh pero al abrirlo me lo abre con gedit, como lo ejecuto?

    • 10 Marco noviembre 22, 2010 a las 9:24 pm

      un de dos:
      1) le das click derecho, propiedades y bajo la pestaña permisos tildas permitir ejecutar como un programa. ahi le das doble click y te preguntara si queres ejecutarlo, ejecutarlo en una terminal o solo mostrar.
      2) (la forma que me gusta) abris una terminal, navegas hasta el directorio donde tenes el sh y le das:
      $ chmod +x parche.sh
      $ ./parche.sh

      de cualquiera de las dos formas hace lo mismo.

  8. 12 domingo perez noviembre 22, 2010 a las 9:06 pm

    pues no hay manera,me sale lo mismo que la otra vez
    domingopv@pc1:~$ sudo sh parche.sh
    [sudo] password for domingopv:
    parche.sh: 14: Syntax error: «(» unexpected
    domingopv@pc1:~$

  9. 13 domingo perez noviembre 22, 2010 a las 9:15 pm

    lo probe descomentando la linea 14 y al reiniciar teclee glxgears en el terminal y me ha aumentado en 1000 frames x segundo o sea que mejoria hay.

  10. 14 José Miguel noviembre 22, 2010 a las 11:03 pm

    Saludos a todos… de verdad alguien se cree que 4 lineas puedan sustituir a 200, pues yo no creo en los milagros.

    • 15 Christopher noviembre 23, 2010 a las 6:44 am

      Es exactamente lo mismo pero implementado directamente en el kernel por eso la cantidad de lineas, es como ahora José hizo su script con más lineas de las necesarias pero al final tendremos el mismo resultado. :D.

  11. 16 Fernan noviembre 23, 2010 a las 12:19 am

    Mismo error:

    $ sudo sh parche.sh
    parche.sh: 14: Syntax error: «(» unexpected

  12. 17 angelbotto noviembre 23, 2010 a las 5:03 am

    pues metan sudo ./parche.sh y ya xD

    gracias!! 🙂

  13. 18 juan noviembre 23, 2010 a las 1:20 pm

    Gracias por el Script, me ha sido de mucha utilidad. Personalmente lo he aplicado en mi portátil y tengo que reconocer que va algo mejor que sin él parche. Sirve para Ubuntu Lucid?

    Un saludo.

  14. 19 mcongom noviembre 23, 2010 a las 1:24 pm

    Hola, muy bueno y muy util el script, pero queria comentarte que en la linea 77 la logica debe ser la inversa,es decir, las acciones a realizar en el then deberian ir en el else, ya que el comando test -f $fichero va a devolver true si existe, y false si no existe..

    saludos,
    mcongom

  15. 20 Andrew noviembre 23, 2010 a las 5:52 pm

    There are a few errors in the script:

    1.

    if [ -f $FICHERO ];
    then
    echo «#!/bin/sh» | tee $FICHERO
    echo «rmdir /dev/cgroup/cpu/$*» | tee -a $FICHERO

    else

    The above doesn’t work and doesn’t create the file. This works:

    if [ ! -e $FICHERO ];
    then
    echo «#!/bin/sh» | tee $FICHERO
    echo «rmdir /dev/cgroup/cpu/$*» | tee -a $FICHERO

    else

    2. Your script writes the following in the ~/.bashrc file:

    if [ «$PS1» ] ; then
    mkdir -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    fi

    It should write this:

    if [ «$PS1» ] ; then
    mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo «1» > /dev/cgroup/cpu/user/$$/notify_on_release
    fi

    You can ignore «> /dev/null 2>&1», but not «-p -m» and not the last echo line… That’s because I’ve updated the instructions as it didn’t work for some people (not sure why).

    3. The cgroup_clean file should look like this:
    #!/bin/sh
    rmdir /dev/cgroup/cpu/$*

  16. 22 Andrew noviembre 23, 2010 a las 5:57 pm

    By the way, regarding #3 in my comment above, you simply forgot to add a «/» in front of the «$» sign:
    echo «rmdir /dev/cgroup/cpu/\$*» | tee -a $FICHERO

  17. 23 songochain noviembre 23, 2010 a las 6:19 pm

    Bueno, a ver si sacan una versión que funcione porque visto el comentario de andrew me parece que no anda del todo fino.

  18. 24 x1sc0 noviembre 24, 2010 a las 12:55 am

    Me sale el siguiente error:

    Dando permisos de ejecucion a [/usr/local/sbin/cgroup_clean]…

    chmod: no se ha podido acceder a «/usr/local/sbin/cgroup_clean»: No such file or directory

  19. 25 Wagner noviembre 24, 2010 a las 2:07 am

    Yo lo aplique el parche, pero parece que no funciona bien con un viejo prescott 800.

    Bueno sera para cuando tenga otro nucleo nuevo.

    Por cierto, muy interesante el parche, así me gusta ver cositas así en español, porque me ayuda a comprender mas como se hacen los scripts en bash.

    Gracias por publicarlo

  20. 26 ironjon noviembre 24, 2010 a las 1:24 pm

    Creo que falla algo:

    Dando permisos de ejecucion a [/usr/local/sbin/cgroup_clean]…

    chmod: no se puede acceder a «/usr/local/sbin/cgroup_clean»: No existe el archivo o directorio

  21. 27 Mario Colque noviembre 24, 2010 a las 4:27 pm

    Quiero compartir un .deb que hice para la distro Tuquito, pero es compatible con Debian/Ubuntu
    http://social.tuquito.org.ar/forum/topics/como-instalar-el-parche-de

    Saludos!

  22. 29 elavdeveloper noviembre 25, 2010 a las 4:53 pm

    Solo tengo una duda y no tiene nada que ver con el parche ¿Que etiquetas pongo en WordPress para que las líneas de código de bash me salgan como a ti?

  23. 34 Koratsuki noviembre 26, 2010 a las 4:32 pm

    Yo me lo acabo de probar y hasta ahora no he tenido problemas. Veamos en el transcurso de la semana q

  24. 35 daniel noviembre 27, 2010 a las 5:14 pm

    devuelve:

    : orden no encontrada
    : orden no encontrada 33m
    : orden no encontrada 31m
    : orden no encontrada
    ‘/parche.sh: línea 14: error sintáctico cerca del elemento inesperado `
    ‘/parche.sh: línea 14: `function PARCHEAR()

    Soluciones?

    • 36 gamerfear noviembre 28, 2010 a las 7:36 pm

      al parecer si está bien el script, pero no existe el archivo /usr/local/sbin/cgroup_clean o almenos no en ubuntu 10.04 lts, entonces yo creo que hay que crearlo y agregar la linea en el script, lo probaré y vere que tal funciona espero que bien y cuando realices el deb concideres este error ya que no se si en todas las versiones de ubuntu sea así

  25. 37 Ser noviembre 28, 2010 a las 6:45 pm

    Me causa mucha curiosidad si Linus Tordwals de verdad lo usó… Si alguien tiene un link oficial, sería muy interesante.
    Saludos.

  26. 38 phenobarbital diciembre 1, 2010 a las 6:47 pm

    Es irresponsable decir que este script aplica el «parche de 200 líneas» de Mike Galbraith, son dos cosas ABSOLUTAMENTE distintas, el parche de Mike Galbraith implica una modificación del kernel para generar grupos de tareas por TTY, este script es una *alternativa* que se ejecuta en el espacio de usuario (userspace) y que genera grupos de tareas «por usuario», esta alternativa fué postulada por Lennart Poettering de Red Hat en las lístas del kernel Linux.-
    Decir que este script aplica el parche de las 200 líneas es cuando sumo, una chorrada! … a menos que se descargara el kernel, lo descomprimiera, le aplicara el parche de Mike Galbraith, te lo compilara y lo empaquetara en .deb …

  27. 40 Eliot Rocha diciembre 2, 2010 a las 4:19 pm

    …publicado en WebUp8 fue visto originalmente en el sitio Ubuntu Life, esto demuestra… http://www.rsmvirtual.com/2010/12/las-4-lineas-de-bash-que-mejoran-linux.html

  28. 41 Sikimkalkti.com diciembre 17, 2010 a las 11:34 am

    Good Work,very thx.You are best…

  29. 42 songochain enero 24, 2011 a las 6:58 pm

    Hola, no se que ha pasado pero glxgears me daba el doble antes y no se si han cambiado algo en los drivers de nvidia o es el que el parche ha dejado de funcionar con alguna actualización del sistema. Ahora me da exactamente el mismo resultado en glxgears que antes de aplicar el parche hace unos meses :S


  1. 1 El parche “milagro” de Linux (ahora con script de instalación) | Ayuda Linux Trackback en noviembre 23, 2010 a las 1:21 am
  2. 2 El parche “milagro” de Linux (ahora con script de instalación) (via Ubuntu Life) « Vive Ubuntu Trackback en noviembre 23, 2010 a las 6:41 am
  3. 3 A “200 lines” alternative patch script | INDLOVU Trackback en noviembre 23, 2010 a las 9:54 am
  4. 4 El parche “milagro” de Linux de 200 lineas (ahora con script de instalación) | El Blog de Rigo Trackback en noviembre 23, 2010 a las 10:08 am
  5. 5 Script para mejorar el rendimiento del kernel de Linux Trackback en noviembre 24, 2010 a las 4:06 pm
  6. 6 Jorink.nl » Blog Archive » Apply the “200 Lines Kernel Patch That Does Wonders” Trackback en noviembre 24, 2010 a las 4:09 pm
  7. 7 Script para aplicar o patch milagroso de 200 linhas no kernel do Linux no Ubuntu – Ubuntu Dicas Trackback en noviembre 24, 2010 a las 4:17 pm
  8. 8 (Actualizado) El parche “milagro” de Linux (ahora con script de instalación) « Ubuntu Life Trackback en noviembre 24, 2010 a las 8:49 pm
  9. 9 (Actualizado) El parche “milagro” de Linux (ahora con script de instalación) | Ayuda Linux Trackback en noviembre 25, 2010 a las 3:06 am
  10. 10 Script para aplicar el milagroso parche de 200 líneas al kernel Linux en Ubuntu « ApokAlypsys Trackback en noviembre 25, 2010 a las 4:53 am
  11. 11 Booster Ubuntu 10.10 et 10.04 avec le patch du kernel | WebDevOnLinux Trackback en noviembre 25, 2010 a las 8:57 am
  12. 12 Instalar el parche “milagro” de Linux mediante script « Un Bioinformatiquillo Trackback en noviembre 25, 2010 a las 12:01 pm
  13. 13 Ubuntu: installare la patch miracolosa facilmente grazie ad uno script - Chimera Revo Trackback en noviembre 26, 2010 a las 8:27 am
  14. 14 Parche milagro de Linux « Wavilox Trackback en noviembre 26, 2010 a las 11:20 am
  15. 15 Script To Automatically Apply the “200 Lines Kernel Patch” Alternative In Ubuntu | Exclusive XP4G Trackback en noviembre 27, 2010 a las 12:49 pm
  16. 16 200 ligne qui font un miracle !!! | Ardious's Blog Trackback en diciembre 9, 2010 a las 10:11 pm
  17. 17 El famoso script de Lennart Poettering, mejorado en Hunting Bears // Hunting Bears Trackback en diciembre 31, 2010 a las 5:50 am
  18. 18 dimosx@dimos-pc:~$ Trackback en enero 5, 2011 a las 9:39 pm
  19. 19 Script To Automatically Apply the “200 Lines Kernel Patch” Alternative In Ubuntu | My Ubuntu Trackback en febrero 10, 2011 a las 4:41 pm
  20. 20 Αλλάζοντας 200 γραμμές κώδικα, το Linux κάνει θαύματα! Ένα θαυματουργό Kernel Pach Trackback en diciembre 7, 2013 a las 11:15 pm
  21. 21 price for silver Trackback en agosto 26, 2014 a las 4:52 am
  22. 22 Sólo 200 líneas hacen de Linux un sistema mucho mejor – Micronet C.A. Trackback en May 11, 2016 a las 10:39 pm

Deja un comentario







¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

noviembre 2010
L M X J V S D
1234567
891011121314
15161718192021
22232425262728
2930  

Blog Stats

  • 31.401.419 hits