OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.
Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.
Kernel optimizadito para tu hardware
A algunas personas les gusta construir cosas con sus manos y adaptados para sus propias necesidades y gustos, es por eso que ofrezco un tutorial bastante completo (desde mi perspectiva) para tener una Mandriva optimizada para cada quien.
Pero se debe de tener un conocimiento un poco extenso sobre el hardware de tu PC/ordenador si en verdad se desea una buena optimización, de lo contrario solo se lograra una optimización mediana, pero buena de todas formas.
Algunas palabras ocupadas aquí no deben de ser extrañas para un linuxero normal, es pan nuestro de cada día, si aun no estas familiarizado con dichas palabras lo mas recomendable es que Googlees un poco, todo ya esta documentado, no es nada difícil ni complicado. El objetivo de esto ademas de tener tu Mandriva optimizada es que aprendas más sobre tu PC/ordenador.
OK, comenzare.
Primero comenzare explicando como obtener una mejor compilación.
Breviario cultural: Al compilar cualquier cosa la optimización que ocupa gcc por default es -O2, esto es el segundo nivel de optimización, existen más altos, pero se corre el riesgo de que los binarios resultantes no funcionen como es debido, esto no es común pero es un riesgo.
Fin del breviario cultural.
Lo primero que debemos de hacer es agregar una variable de entorno al usuario que compilara el kernel, en este caso es el usuario root, para agregar una variable de entorno se edita el fichero
.bashrc que se encuentra dentro del directorio home del usuario (puede que la ruta mostrada aquí cambie), yo lo hago con vi.
vi /root/.bashrc
Y agregamos esta linea al final del fichero, obviamente cambiando los valores para cada tipo de procesador que tengas en tu PC/ordenador...
export CFLAGS="-O3 -mtune=athlon-xp -march=athlon-xp" && CXXFLAGS=$CFLAGS
Permitanme explicar los campos:
CFLAGS.- Modificaremos las banderas del compilador de C (cambiaremos su forma de actuar).
-O3.- Optimización de nivel 3, no estoy seguro cual sea el nivel máximo, si lo averiguan por favor díganmelo, no he tenido el valor para subir este nivel, pero algún día lo haré.
mtune=athlon-xp -march=athlon-xp.- Le decimos al compilador para que tipo de arquitectura queremos que compile exactamente, estos valores se cambian para cada tipo de procesador y se pueden ver los valores aceptados aquí, http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html (liga funcionando el 30 de octubre del 2008).
CXXFLAGS=$CFLAGS.- Las banderas de C se copian también para C++.
Existen más banderas y modificadores, pero no las he explorado todas y puede que alguna nos ayude a una mejor optimización pero con estas yo estoy satisfecho. Exploren y añadanlas sin miedo.
Guardamos el fichero y listo.
Para que las variables de entorno tengan efecto podemos hacer varias cosas:
Reiniciar todo el sistema (tipo Windows).
Cerrar sesión del usuario (en este caso el root) y volver a iniciar sesión.
Insertar el comando
source /root/.bashrc
con esto las variables de entorno agregadas ya deberían de funcionar, lo verificamos poniendo
echo $CFLAGS
Si nos regresa (en mi caso) -O3 -mtune=athlon-xp -march=athlon-xp, quiere decir que efectivamente la variable de entorno funciona.
Muy bien, con esto nos aseguramos que lo que sea compilado tenga este orientado a nuestro procesador en especifico y con una optimización de nivel 3, ahora...
Compilación de kernel.
Aquí tenemos mas de una opción:
Recompilar el kernel que viene con tu Mandriva
Compilar un kernel más nuevo.
Cada una tiene sus ventajas y desventajas, enumero:
El compilar un kernel más nuevo te ofrece actualizaciones de seguridad, más y mejor soporte para hardware nuevo.
Al compilar un kernel más nuevo pierdes la opción la instalar los drivers propietarios (y otros módulos) ofrecidos por Mandriva vía urpmi de las tarjetas NVIDIA y tendrás que descargarlos y compilarlos tu mismo. Algunos de estos son ndiswrapper, los drivers de nvidia, dkms-virtualbox, ya que como el nombre del paquete lo indica están compilados para un versión de kernel en especifico.
El recompilar el kernel que viene con tu Mandriva no pierdes características ofrecidas por Mandriva, como la instalación de módulos ofrecidos por Mandriva, ya que sigues ocupando la misma versión de kernel.
Sea cual sea tu decisión los pasos son los mismos, yo escogeré compilar el kernel más nuevo. Para compilar el kernel necesitamos los siguientes paquetes instalados: gcc, make, libncurses-devel y creo que también libncursesw-devel, yo siempre instalo ambas librerías.
Descargamos de www.kernel.org el kernel más reciente.
Lo descomprimimos en la ruta /usr/src/
tar xvf linux-2.6.xx.x.tar.bz2 /usr/src/
Nos posicionamos sobre /usr/src
cd /usr/src
Hacemos una liga simbólica hacia nuestras fuentes llamada linux
ln -s linux-2.6.xx.x linux
Y ahora si, lo interesante y lo mejor de todo, escogeremos que módulos queremos que se inserten en el kernel, que módulos queremos queden como módulos externos y que módulos definitivamente no queremos que sean compilados. En otras palabras, configuraremos el kernel
make menuconfig
Si no existe una configuración previa tomara la configuración actual del kernel, podrás observar una pantalla con varias opciones:
Breviario cultural: Mandriva siempre configura el kernel oficial para que tenga el mayor soporte de hardware posible, esto lo hace compilando TODOS los módulos posibles del kernel.
Recordemos que un modulo puede estar dentro o no del kernel. Los módulos externos se cargan solamente si el hardware correspondiente esta presente, los módulos insertados en el kernel se cargan siempre junto con el kernel estando o no el hardware presente.
Esta acción es buena ya que el sistema reconocerá mucho hardware, pero a la vez es mala ya que los módulos que no se ocupan se cargan de todas formas (si están insertados en el kernel) y ocupan espacio en memoria.
Esto lo puedes verificar poniendo como root:
lsmod
y veras una lista muy grande de módulos, la mayoría puede que si sea ocupado, pero alguno pueden ser omitidos.
Fin del breviario cultural.
Aquí es el momento de invertir un par de horas navegando por las opciones y ver lo que nos sirve y lo que no, si no sabes que es lo que esta en las opciones déjalo como esta, pero no pierdes nada con moverle un poco a estas opciones.
Lo que yo hago siempre es lo siguiente:
Ya que el sistema de fichero ext3 siempre lo ocupo lo inserto en el kernel, esta opción esta en:
File systems ---> <*> Ext3 journalling file system support
Ya que mi procesador es un AMD Atlhon XP siempre lo especifico en:
Processor type and features ---> Processor family (Athlon/Duron/K7)
Ya que mi PC/ordenador no tiene puerto ISA ni PCI Express quito este modulo en:
Bus options (PCI etc.) ---> PCI Express support
Bus options (PCI etc.) ---> ISA support
Ya que mi PC/ordenador no tiene lector de disquetes también se lo quito (por una extraña razón, si no se lo quito no tengo sonido después).
Device Drivers ---> Block devices ---> Normal floppy disk support
y la lista de lo que incluyo y no incluyo sigue y sigue, aquí se pondrá en practica tu conocimiento a cerca de tu hardware, los módulos que también quieras insertar en el kernel son:
El soporte para AGP y Renderizado Directorio
El modulo de tu tarjeta de red.
El modulo para tu tarjeta de sonido
El modulo para tu tarjeta de video, si tienes una tarjeta de video NVIDIA no insertes el modulo dentro del kernel, ya que al obtener el driver propietario te dirá que existen conflictos y no es posible la compilación.
En lo personal no me gusta el timbre del sistema, yo quito ese modulo y santo remedio.
Muy bien, después de invertir un par de horas definiendo nuestras opciones ahora vamos directo a la compilación, ponemos los comandos en este orden:
make dep.- Se prepararán las dependencias necesarias para efectuar la compilación.
make bzImage.- Se hace la imagen del kernel.
make modules.- Se compilan los modules.
make modules_install.- Se instalan los módulos.
make install.- Se instala el kernel y se crea una entrada en el cargador de arranque.
Todo este proceso tarda unas horas dependiendo de la velocidad de la PC, el nivel de optimización elegido y la cantidad de módulos que se compilaran. Lo que yo hago cuando compilo el kernel es:
make dep && make bzImage && make modules && make modules_install && make install && shutdown -h now
Así cuando termina todo el proceso se apaga el equipo, mientras tanto yo me voy a dormir.
Breviario cultural: ¿Has notado que todos los nombres de los paquetes de Mandriva terminan con *.i586.rpm y los paquetes para otras distribuciones terminan en *.i386.rpm o *.i386.deb?
Mandriva compila sus paquetes para procesadores i586 y superiores, lo cual significa que tienen un mejor rendimiento, pero sacrifican su potabilidad para los procesadores antiguos.
Si has intentado instalar Mandriva en una maquina 386 sabrás los difícil (o imposible) que es.
Fin del breviario cultural.
Ahora por ultimo, quiero ahorrarme unos cuantos megas de RAM más, esto lo haré quitando las consolas que se pueden accesar a ellas con ALT +CTRL + F1 hasta F6.
Editamos el fichero inittab que se encuentra en /etc
vi /etc/inittab
y comentamos las lineas que están casi hasta abajo
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6
Cada una de estas lineas es una consola, yo solo ocupo 2, por eso no comente las dos primeras, cada una de estas consolas ocupa aprox 1.5 MB, puede que sea exagerado, pero también sirve para aprender en caso de que alguien lo necesite o quiera hacerlo.
Eso es todo en cuanto a esto, algún día en el futuro publicare otra cosa de utilidad. Gracias por leer.
Wris.
Guillermo A. Sánchez.
- Blog de wris
- Entra a tu cuenta o crea una para poder comentar.
BOFH
# 63169 Añadido a la documentación
Acabo de añadir el manual a la documentación. De nada por leer, gracias por escribirlo ;)
Usuario
# 63199 Haganle caso queda de SUPER LUJO...
Wow que cosa hermano, tengo un Athlon 64 X2 con 2 gigas de RAM y ahora si se siente todo el poder de AMD de los núcleos múltiples y de Linux, en las flags yo le puse el nivel de personalización 4 y no me falló en absolutamente nada:
export CFLAGS="-O4 -mtune=athlon64-sse3 -march=athlon64-sse3" && CXXFLAGS=$CFLAGS
y comprobando con el comando
# echo $CFLAGS
Aparece así:
-O4 -mtune=athlon64-sse3 -march=athlon64-sse3
KDE 4 corre como bestia desbocada, antes tardaba un poco en jalar extreme tux racer... ahora es INMEDIATO, ya ni hablemos de Celestia....... WOW estoy feliz, valieron la pena 2 horas de perzonalización increíble....
------------------------------------------------------------------------
Dicen que me río de todo y me burlo de todo, porque me río de ellos y me burlo de ellos, y ellos creen serlo todo...
Usuario
# 63204 Genial
Genial, que bueno que les sirva de mucho esto.
Conectado a 5 decibeles, Wris reportándose, dándole un Nuevo Orden a las palabras, por la belleza del baudio, la inmortalidad de la super nova infinita y la entropía de las matemáticas del caos.
Conectado a 5 decibeles, Wris reportándose, dándole un Nuevo Orden a las palabras, por la belleza del baudio, la inmortalidad de la super nova infinita y la entropía de las matemáticas del caos.
Usuario
# 63206 Joer, qué bien! Aún no me
Joer, qué bien!
Aún no me siento lo suficientemente valiente cómo para meterle mano al kernel en este PC, pero me has animado, y puede que algún día lo haga.
Fabulosa guía de compilación y optimización del kernel.
-------------------------------------
Salud, Linux, y mucho Heavy Metal!!
Sólo se respeta a los que combaten, sólo vencen los que luchan, sólo triunfan los que resisten
Usuario
# 63733 Gracias!
Gracias, compilaré nuevamente mi kernel y te cuento como me va, en cuanto a los niveles de optimización, he encontrado algo completo en el wiki de gentoo http://www.gentoo-wiki.info/CFLAGS#-O
Saludos!
Usuario
# 104945 Consulta
Hola!, estuve leyendo y esta muy buena la guia. Pero me queda la duda, pues dijisteis que teniamos dos alternativas en la etapa de compilacion.... re-compilar el kernel que trae mandriva, o compilar de 0 uno bajado de kernel.org
Disteis los pasos para compilar un nuevo kernel... pero no los pasos para re-compilar el que ya tenemos de mandriva.
Te molestaria dadme los pasos para que pueda yo hacerlo?
He buscado en internet como hacerlo, pero todas las guias que he encontrado solo muestran como compilar un kernel nuevo.
Uso Mandriva 2010, saludos. Y gracias de antemano!
Usuario
# 104956 Es lo mismo.
Hola, ¿qué tal?
Jeh, perdón, creo que se me paso al momento de redactarlo ese
pequeño detalle, los pasos son exactamente los mismos para
recompilar el kernel de Mandriva que los que muestro aquí, sólo
difiere un detalle, en vez de obtener las fuentes desde
www.kernel.org debes de obtener
las fuentes del kernel de Mandriva via urpmi.
Una forma de hacerlo se explica aquí mismo en Blogdrake, en:
http://blogdrake.net/FAQ/como-se-instalan-las-fuentes-del-kernel,
las fuentes te las instala tambien en /usr/src/. Suerte y saludos.
Conectado a 5 decibeles, Wris reportándose, dándole un Nuevo Orden a las palabras, por la belleza del baudio, la inmortalidad de la super nova infinita y la entropía de las matemáticas del caos.
Usuario
# 105480 Esta noche...
Esta noche lo pruebo. Mañana estaré comentando.
Muchas gracias, saludos.
John