Mostrando entradas con la etiqueta Kernel. Mostrar todas las entradas
Mostrando entradas con la etiqueta Kernel. Mostrar todas las entradas

jueves, 6 de junio de 2024

¿Cómo instalo un kernel en tiempo real en Ubuntu?

Reunido con representantes de las 62 Organizaciones, Juan Perón expone cómo reaccionar en tiempo real ante las vicisitudes sindicales, a la vez que enseña a instalar un kernel optimizado para cómputo en tiempo real en Ubuntu.

¡Trabajadores!

Las acciones de gobierno requieren una fluida acción de conducción, tendientes a lograr los máximos beneficios para el Pueblo. Estos abarcan mejoras de carácter social, y nunca individual.

Indudablemente el Conductor debe reaccionar en tiempo real a las cambiantes situaciones que hacen a todos los frentes gubernamentales. Si sus directrices son certeras pero no rígidas, se amoldarán a las condiciones - también cambiantes - del terreno político.

Para su lectura deberá contar con toda una serie de instrumentos que operarán como polea de transmisión; el mayor de los cuales será el pulso popular, y en menor medida también se contará con el adecuado tesón legislativo, que siempre guarda parte cabal de la función de gobierno. 

Tonificar la acción mancomunada de los hombres en pos de un objetivo comprendido y asimilado por todos como propio tiene la consecuencia de producir las Realizaciones. En este sentido sus resultados no podrían menos que ofrecer satisfacciones al Pueblo, pues sólo así este empeñará sus esfuerzos.

Ahora bien, al desplegarnos para nuestra obra de bien, la aplicación del esfuerzo también debe verse fluida: son contadísimas las ocasiones donde debe empeñarse toda la masa en acción común. Mas bien, lo normal será disgregar su potencial en un sinnúmero de frentes, dotando a cada sector de los medios que favorezcan concretar aquello que se debe, en pos de izar nuestra noble bandera sobre todo aquello que realizamos en conjunto.

A partir de Ubuntu 22.04LTS es posible instalar un kernel optimizado para operaciones de cómputo en tiempo real con dos líneas de terminal, a través del programa Canonical Pro. La suscripción al mismo es opcional, y gratuita si se utiliza para uso personal.

Estas operaciones pueden obrar según ciertas aplicaciones computacionales de tiempo real, y aunque yo de momento no hago uso de él personalmente, indudablemente existen situaciones donde alguien podría anhelarlo, sin tener que recurrir a condiciones de configuración personalizada de un kernel. En tal sentido, ha de propugnarse la opción para que el Pueblo lo instale.

Quien lo desee, puede abrir una terminal con Ctrl+Alt+T e ingresar el siguiente Comando de Organización:

sudo pro attach ;
sudo pro enable realtime-kernel --access-only

De tenerse habilitado el repositorio Livepatch (que surte actualizaciones experimentales a través de repositorios de Canonical), nos saldrá una advertencia de la siguiente calaña indicando la necesidad de desactivarlas y responder con las actualizaciones típicas:

One moment, checking your subscription first
Real-time kernel cannot be enabled with Livepatch.
Disable Livepatch and proceed to enable Real-time kernel? (y/N) y
Disabling incompatible service: Livepatch
Updating Real-time kernel package lists
Skipping installing packages: ubuntu-realtime
Real-time kernel access enabled

Conforme se desactive el repositorio Livepatch, se podrá instalar el kernel en tiempo real y otras aplicaciones de tal estilo, compendiadas en el paquete "ubuntu-realtime". Para ello ingresamos:

sudo apt install ubuntu-realtime

Una vez instalado, podremos reiniciar el sistema para que cargue el nuevo kernel.

sudo reboot

Al reiniciar, el arrancador Grub indicará ahora Ubuntu-realtime junto con el kernel común, para que lo elijamos. También podremos elegir dicho kernel por defecto.

Luego de reiniciar, una de las formas de evaluar el mismo es utilizar el conjunto de aplicaciones de medición para aplicaciones en tiempo real (por ejemplo, cyclictest). Para instalar esta suite ingresamos:

sudo apt install rt-tests

y disparamos un test bajo sudo con:

sudo cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0

Esto realizará un test cíclico hasta que lo interrumpamos con Ctrl+c.

Incluso podremos correrlo en nanosegundos, con:

sudo cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0 --nsecs

Con fines de evaluación, instalando GNU Plot también podríamos realizar un trazado de un minuto de operaciones en tiempo real:

sudo apt install gnuplot ;
cd /tmp ;
wget https://canonical-real-time-ubuntu-documentation.readthedocs-hosted.com/en/latest/_downloads/3af8bfb9ac8b109e9ffb3eaaa0487e9b/histogram-plot.sh ;
chmod +x /tmp/
histogram-plot.sh ;

y lo ejecutamos con:

cd;sudo ./tmp/histogram-plot.sh 

Una vez que termine, podremos verlo por ejemplo con:

eom /home/$USER/plot.png

Al desplegar el kernel de tiempo real, notaremos menores tiempos de retraso (lag) que los indicados en las gráficas producidas con el kernel genérico.

miércoles, 21 de febrero de 2024

¿Cómo iniciar una versión de kernel específica en Ubuntu?

¡Trabajadores!

No siempre todos los cambios dan los resultados que queremos. 

Sabemos que Ubuntu es un sistema operativo de tipo GNU, que actualmente cuenta con varias líneas de núcleos de sistema operativo de tipo Linux. Cualquiera de estas pueden servir, pero tienen el sentido de complacer a distintos tipos de afiliados. Por defecto se adjuntan versiones veteranas específicas para servidor, que suelen estar ampliamente probadas, bajo el nombre de linux-generic. Conforme las versiones del kernel genérico de Ubuntu van avanzando, estos núcleos también lo hacen. En el caso de Ubuntu 22.04LTS, esta rama representa a kernels de la línea 5.15.

En el caso de las versiones de Ubuntu para uso en escritorio, se puede decidir instalar kernels de una versión más nuevas, la cual sigue una política de mejoras para hardware ("HWE"). El sentido es contar con soporte para hardware de más moderno desarrollo como el que se suele incluir en las PC más modernas. En el caso particular del Ubuntu 22.04LTS, podremos recurrir a instalar la rama 6.5.xx del Kernel Linux. Ya he explicado que desde un tiempo a esta parte esto se hace realidad efectiva desde la terminal, simplemente ingresando el comando:

sudo apt install linux-generic-hwe-22.04

Y finalmente, también podríamos decidir utilizar una versión de kernel incluso más moderna, de carácter experimental de avanzada, o como se dice en la jerga, "bleeding edge". No suelo recomendarlos en aras de la estabilidad del sistema, pero  naturalmente en el caso de Ubuntu 22.04LTS, se podrían instalar versiones de la rama 6.7.xx del kernel Linux mediante:

sudo apt install linux-generic-hwe-22.04-edge

Aunque un sistema Linux sólo corre un único kernel, es indudable que teniendo en nuestro sistemas las imágenes de varias de estas versiones de kernel, las copias antiguas permanecen como resguardo y reaseguro: nunca es una mala política pues ante cualquier eventualidad con una compilación de kernel (que podría fácilmente inutilizar nuestro entorno), podremos recurrir a alguna de las varias versiones anteriores como remedio.

Pues bien señores, el problema de instalar estas ramas de kernels hwe y hwe-edge, radica en el hecho de que si bien son bastante más avanzados que linux-generic, pueden presentar problemas en algunos casos específicos (sobre todo la rama Edge). Por otro lado, una vez que instalamos un kernel de avanzada, no es tan sencillo retornar a una versión anterior ya que normalmente Ubuntu inicia la última versión de Kernel que esté instalada en el sistema. Esto complica la remoción de las versiones más nuevas del kernel del sistema, si por destino, esta fuese la actitud que nos vemos obligados a tomar. Para hacerlo debemos iniciar un kernel de versión anterior.

Iniciar un kernel instalado específico:

Si tenemos varias versiones de kernel instaladas, al presionar la tecla Mayúsculas durante el arranque del sistema, el arrancador Grub nos presentará un menú de inicio donde deberíamos poder seleccionar la opción de arranque deseada. Usualmente, nos dá algunos segundos para elegir una opción del menú y luego escoge automáticamente la primera opción, que es arrancar el sistema operativo Ubuntu cargando en memoria la versión de kernel más moderna disponible.

Si la versión más moderna del kernel falla o tiene algún inconveniente, lo lógico sería escoger la opción "Advanced" o Avanzadas, y elegir una versión de kernel mas antigua desde el submenú de versiones. Si Ubuntu cargó correctamente, procederíamos a desinstalar la imagen antigua y actualizar el Grub con el comando sudo update-grub.

Sin embargo, existen ocasiones donde esto podría no funcionar: si no tenemos teclado en el servidor, o si se trata de una máquina de acceso remoto, ¡no podríamos escoger la opción!. 

Sin embargo, existe un método podremos especificar la versión de arranque "a mano". Esto implica obligatoriamente editar el fichero de configuración del arrancador grub a mano.

Primero hemos de arrancar el sistema y utilizar la terminal (Ctrl+Alt+t o una conexión SSH), y mediante este enlace podremos obtener un listado de los kernels instalados en tal sistema que Grub reconoce. Esto lo haremos mediante el siguiente comando de organización:

grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re "s/(.? )'([^']+)'.*/\1 \2/"

Este nos devolverá como resultado un listado de Kernels instalados, que ilustran sus números de versión y el lugar que ocupan en el menú de Grub, por ejemplo:

menuentry  Ubuntu
submenu  Advanced options for Ubuntu
    menuentry  Ubuntu, with Linux 6.7.0-15-generic
    menuentry  Ubuntu, with Linux 6.7.0-15-generic (recovery mode)

    menuentry  Ubuntu, with Linux 5.15.0-94-generic
    menuentry  Ubuntu, with Linux 5.15.0-94-generic (recovery mode)
    menuentry  Ubuntu, with Linux 5.15.0-92-generic
    menuentry  Ubuntu, with Linux 5.15.0-92-generic (recovery mode)
menuentry  Memory test (memtest86+.elf)
menuentry  Memory test (memtest86+.bin, serial console)
menuentry  MS-DOS 5.x/6.x/Win3.1 (on /dev/sdf1)

Como vemos, esto nos devuelve las opciones del menú de arranque de Grub. Como es consabido, la primera opción suele ser siempre arrancar Ubuntu con el último kernel instalado. Si quisiéramos arrancar una versión específica más antigua de entre los kernels instalados para nuestro Ubuntu (por ejemplo la que dice "Ubuntu, with Linux 5.15.0-94-generic"), en el menú de Grub deberíamos ir a "Advanced" y elegir la tercera opción de la lista, específicamente "Ubuntu, with Linux 5.15.0-94-generic".

Primero lo respaldamos por precaución:

sudo cp /etc/default/grub /etc/default/grub.bak

...y luego lo editamos para arrancar una versión específica:

sudo nano /etc/default/grub

y cambiar la opción por defecto que elije el Ubuntu (la opción "0"), por otra que elija la opción Advanced y elija la tercera opción de la lista. En este caso, se debe indicar de la siguiente manera:

GRUB_DEFAULT="1>3"

Una vez guardado el fichero, actualizamos Grub para que surta efecto:

sudo update-grub

Esto indica "advanced/5ta opción de la lista de kernels". Tengamos en cuenta que si contamos con las opciones de Recovery mode, estas siempre reciben números pares, y las opciones sin recovery mode reciben números impares (como el 3 en este caso).

Luego podremos reiniciar el sistema con:

sudo reboot

y debería ejecutar el kernel solicitado, el 5.15.0-94-generic. Podríamos comprobarlo con el comando:

uname -a

Desinstalar líneas de kernels hwe

Ahora bien, una vez instalado el Kernel antiguo, en este caso podremos desinstalar ya los kernels mas modernos de las ramas hwe o hwe-edge, según nos planteamos. Para ello podríamos indicar:

sudo apt purge linux-generic-hwe-22.04*

...y una vez desinstalados, podremos también remover las imágenes de núcleos Linux modernas que nos nos interesan ya, por ejemplo, en este caso:

sudo apt purge linux-image-6*

(lo cual borrará todos los kernels superiores a 6). 

Ante estos menesteres jamás debemos olvidar volver a actualizamos el Grub, para que deje de hacer caso a kernels que ya han sido desinstalados:

sudo update grub

Si hicimos bien las cosas, no hemos desinstalado aquellos kernels de la rama 5.x (o la que corresponda a nuestra rama linux-generic de la versión de Ubuntu que estemos utilizando). Para asegurarnos de contar al menos con esta rama linux-generic - pues de lo contrario el sistema no arrancaría - ingresamos el comando de instalación que le corresponde:

sudo apt install linux-generic

Este debería indicar que ya está instalado, pues lo hemos hecho para asegurandos, por supuesto.

Finalmente volvemos a editar el fichero /etc/default/grub con

sudo nano /etc/default/grub

...y volvemos a modificar la línea GRUB_DEFAULT a su valor por defecto, para que quede:

GRUB_DEFAULT="0"

Y tras guardar los cambios del fichero de configuración con Ctrl+o y salir del editor GNU Nano con Ctrl+x, actualizamos Grub para que arranque la versión 5.x del kernel:

sudo update-grub

Si todo va bien, podremos reiniciar el sistema con:

sudo reboot

El sistema debería arrancar el último kernel de la línea linux-generic y habernos deshecho de aquellas líneas partidarias no deseadas.

martes, 21 de abril de 2020

Canonical dispone modelo de actualización rodante para el kernel de Ubuntu en la Nube Amazon

Hace años que Canonical dedica esfuerzos a Ubuntu Server para las AMI (Imágenes de Máquina de Amazon) que corren en los entornos AWS (Servicios Web de Amazon) bajo la nube EC2 de Amazon.

Todo estos nombres esconden esencialmente infraestructura computacional ajena y propiedad de Amazon, a la cual se puede acceder mediante un enlace de tipo Secure Shell (SSH). Bajo este esquema se dispone de una sesión remota de una o más imágenes de Ubuntu, el cual pueden ejecutarse y configurarse de forma rápida y eventualmente ampliable.

Estos sistemas o "servicios virtualizados" normalmente ejecutan un kernel especial de tipo Linux de la rama aws, que es diferente a la versión de normal que encontramos en la versión de Ubuntu Desktop (para Escritorio, la cual utiliza un kernel de la rama -generic o genérica).


Pues bien señores, a partir de hoy, este kernel linux-aws 4.15 que Canonical emplea para la nube de Amazon cambiarán su forma de operar, optándose por un modelo de actualización "rolling kernel".
Esto significa que la actualización del núcleo del sistema operativo virtual no se realizará en dichas máquinas remotas por iteraciones o versiones especificadas como sucedía anteriomente, sino que pasará a implementarse de manera corrida.

Canonical aduce que este modelo de operatoria permitirá contar en dichos sistemas remotos con las últimas correcciones de bugs y mejoras de performance en el asignado de las tareas computacionales, así como implementar el uso de visitantes hipervisores, y contenedores para los usuarios. Esto supuestamente manteniendo la misma calidad que las versiones LTS (de soporte a largo término) del sistema operativo a las que estamos acostumbrados en nuestros servidores locales y sistemas de escritorio.

Un modelo de Rolling Kernel implica transicionar el kernel linux-aws por defecto desde una versión base a la siguiente como parte de un ciclo continuado de mejoras. El kernel nuevo será el kernel de la última versión interín (sin soporte a largo plazo) de Ubuntu. Al aplicar este modelo directamente a la versión actual de 18.04, significa que el kernel linux-aws será uno de la versión 4.15 y al lanzarse, se convertirá en el kernel basado en la versión 5.3, la cual es parte fundante de la versión 19.10 de Ubuntu.

Hoy, dicho kernel 5.3 se ha hecho disponible para su evaluación bajo el nombre de kernel "linux-aws-edge". Canonical ha recomendado a todos los usuarios correr este kernel con sus cargas de trabajo normales en ambientes no productivos a fin de evaluarlo. Es importante tener en cuenta que tanto los kernels "-edge" y los kernels de lanzamiento rodante estén completamente testeados antes de que lanzarse definitivamente a los clientes, y asegurar que cumplen exactamente con la misma calidad y durabilidad que todos los kernels deben contar antes de su lanzamiento.

Toda vez que se publique un nuevo kernel de la rama linux-aws, el usuario podrá percibir la actualización del mismo de una de estas dos formas:
  • al lanzar la última Imagen de Máquina de Amazon (AMI) contará con la versión nueva del kernel;
  • Al aplicar las actualizaciones de paquetería o actualizaciones de seguridad automática, recibirán el nuevo kernel.

¿Como me preparo para el kernel rodante?

Para instalar el kernel 5.3 linux-aws-edge disponible para evaluación por parte de los clientes de máquinas virtuales Amazon Machine Images (AMI), deben de introducirse en la terminal remota los siguientes Comandos de Organización:

Primero, revisamos que la instancia en ejecución remota cuente con el kernel linux-aws estándar (versión 4.15.0):

ubuntu@ip-xxx-xxx-xxx-xxx$ uname -r

...a lo cual La nube de Amazon nos debería responder:

4.15.0-xxxx-aws

Acto seguido, instalamos el kernel linux-aws-edge:

ubuntu@ip-xxx-xxx-xxx-xxx$ sudo apt update
ubuntu@ip-xxx-xxx-xxx-xxx$ sudo apt install -y linux-aws-edge

Nota: si se nos consulta acerca de la nueva versión del archivo /boot/grub/menu.lst, seleccionamos la opción por defecto "Mantener la versión local instalada actualmente / keep the local version currently installed".


... y reiniciamos la instancia virtual remota de Ubuntu:

ubuntu@ip-xxx-xxx-xxx-xxx$ sudo reboot

Al regresar a la instancia virtual, nos volvemos a loguear con SSH y confirmamos que la instancia virtual ahora esté utilizando el kernel linux-aws-edge (v5.3.0):

ubuntu@ip-xxx-xxx-xxx-xxx$ uname -r

...a lo cual el sistema remoto de Amazon debería respondernos con:

5.3.0-xxxx-aws

¿Qué hacer si no deseo un rolling kernel en la AMI?

Los trabajadores saben bien que nada de lo que dice el Capital debe ser confiado por los hombres que luchan. Si no abhelamos un kernel rodante y en cambio deseamos seguir con el kernel 4.15 en nuestra máquina virtual remota AMI (la cual continuará recibiendo soporte completo y actualizaciones a lo largo del período de soporte a largo término (LTS), habremos de ingresar los siguientes comandos en el usuario remoto de la nube:

ubuntu@ip-xxx-xxx-xxx-xxx$ sudo apt update
ubuntu@ip-xxx-xxx-xxx-xxx$ sudo apt install linux-aws-lts-18.04

martes, 23 de abril de 2019

Cómo corrijo el parpadeo de pantalla HDMI y el error "drm:intel_pipe_update_end [i915]] *ERROR*" en Ubuntu?

Desde Madrid, Juan Perón direccionaba la política para posicionar al Justicialismo en el puesto de Conducción que le correspondía frente a la ignominia proscriptora de una camarilla sin Patria ni Bandera. En una de sus epístolas expone a la dirigencia Sindical como proceder en la coyuntura y cómo solucionar el parpadeo de las pantallas HDMI en equipos con adaptador Intel Graphics en Ubuntu.


(...)
Me parece magnífico su proceder en esta emergencia política. Nuestros enemigos pierden diariamente prestigio pero eso sería intrascendente si nosotros no supiéramos aprovecharlo con medidas apropiadas. Creo que nuestro proceder debe ajustarse a una conducta prudente hacia los sectores que sean proclives a incorporarse y de lucha efectiva contra los sectores contumaces que sabemos no han de variar.

Desde que caímos en 1955 ha habido varias clases de persona que trabajaron para el peronismo: primero, los peronistas leales y abnegados que siguieron firmes, segundo, los gorilas que con sus desatinos nos favorecieron y, tercero, los independientes a los cuales los convencieron los nuevos hechos en los que florecieron las barbaridades.

De un tiempo a esta parte me han comenzado a llegar insinuaciones y toqueteos por diversos conductos sobre la posibilidad de arreglos que permitan encarar las soluciones de fondo. Esto ha sucedido tanto de parte del gobierno como de algún sector militar de los que están en el candelero. Naturalmente que yo soy 'zorro baleado' y desde lejos la olfateo, de manera que me he limitado a contestar con el memorándum que le adjunto.

Frente a estos intentos será conveniente mantener una conducta muy prudente y si se hace cualquier cosa, ahí será ad referendum mío. Según mis informaciones, el caso de un golpe de Estado azul puede ser posible. Nosotros debemos tener mucho cuidado, pues no debemos engañarnos ni con los azules ni con los demás. Illia no puede gobernar porque le falta el apoyo popular indispensable, pero si los azules dan su golpe, aparte que no creo que sean mejores que Illia, tampoco tendrán el apoyo del pueblo, aparte de que tendrán la oposición de los que están actualmente en el gobierno. Con pies de plomo sonriendo posibilidades pero sin 'efectividades conducentes'.

Si algunos intentan acercamientos, hay que aceptarlos porque en el tomar no hay engaño. Si otros pretenden arreglos, hay 'que traerlos al pie' porque yo sé cómo convencerlos. Muchas veces una buena negociación vale por una guerra y yo estoy en las mejores condiciones para negociar. Pero cualquier negociación ha de ser pública y a los ojos de todo el país. Nada de secretos, porque nuestra actitud y la de ellos no pueden contener nada inconfesable. Si buscamos una solución para el país, el primero en conocer esa solución debe ser el país.

Ahora no es momento de aflojar sino de intensificar la lucha, pero para que esta sea realmente efectiva no necesita ser violenta sino inteligentemente realizada. Estamos llegando a los momentos decisivos de una acción que ya dura diez años y en la que nosotros hemos sido yunque, jamás martillo. Hay que buscar aliados, la política se hace precisamente con los hombres que se desplazan de un lado a otro.


Si usamos nuestro hardware de video Intel en procesadores tipo Skylake, podríamos encontrar ciertos reportes de error en el sistema.  En particular, cuando ingresamos en la terminal el comando:

dmesg | grep 'drm'

...podría ser que encontremos listado estos errores:

[drm:intel_pipe_update_end [i915]] *ERROR* Atomic update failure on pipe A

Este error puede presentarse en portátiles HP Pavilion 15 con tecnología de video híbrida, y similares, al activar su adaptador de video Intel i915 en conjunto con certas pantallas externas HDMI. En tal caso, podríamos notar parpadeo en la pantalla externa HDMI.

Si este parpadeo y errores de video no se solucionan cambiando la velocidad de refresco de las pantallas, podremos rastrearlo a las infames características "DRM".

Afortunadamente podremos solucionar el error cambiando la configuración interna del controlador de video Intel, en particular su variable "Panel Self Refresh" (Autorrefresco del Panel).

Podremos proceder a modificar esta opción desde la terminal de nuestro sistema GNU con Linux por medio del un editor de texto. Para ello ingresamos:

sudo nano /sys/module/i915/parameters/enable_psr

El sistema nos solicitará nuestra contraseña, y abrirá el editor GNU Nano, con cargando en memoria el archivo de configuración específico. Este archivo es ínfimo: sólo contiene un número que define si la opción enable_psr está activada ("1") o si la misma está desactivada ("0"). Normalmente estará activada, por lo cual el archivo debería contener un 1. Lo borramos y modificamos para que diga 0, de la siguiente manera.
Luego guardamos los cambios con Ctrl+o y salimos del editor GNU Nano con Ctrl+x. Esto desactivará la función de autorrefresco del panel.

Para hacer efectivo el cambio, debemos apagar el equipo y volverlo a encender (no sirve solo reiniciarlo). Si deseamos apagar el equipo desde la terminal podremos hacerlo mediante el comando:

sudo poweroff

Al re-encender el equipo, el problema debería estar solucionado.

Si por cualquier motivo tuviésemos que reactivar la opción enable_psr, repetimos los pasos y dentro del fichero enable_psr cambiamos el 0 por el 1.

domingo, 12 de marzo de 2017

Cómo compilo e instalo un kernel en Ubuntu Linux?

Los torneos juveniles Evita sirvieron como propuesta a la juventud con el objetivo de manifestar la solidaridad y respeto a través del deporte, tanto en los individuales como los de equipo Durante el discurso de inauguración de los Torneos de 1948, Juan Perón enseña cómo compilar un kernel Linux en Ubuntu.

¡Queridos niños!

Siento una enorme satisfacción al inaugurar estos Juegos Nacionales Evita, bajo cuya bandera competirá limpiamente la juventud de la Nación. Son ustedes dignos representantes de esta tierra, y la felicidad y bondad rebosa en sus sanos corazones. No hacen más que agraciar a este viejo soldado.

Nuestra República se constituye mediante un acto que engendra Justicia pero también una necesidad nacional: la de formar hombres de mentes sanas en cuerpos sanos. El cuerpo puede ser maleado y tornado, a fin de hacer de él una herramienta de creación. Sin embargo, la mente - que es el sujeto creativo - ha de ser libre, y hemos de proponer para ella toda funciones de aprendizaje. De esta manera - gracias a una cultura autóctona, sana y positiva - los niños de hoy se conviertan en los mejores hombres del mañana; tornarán finalmente en aquellos que puedan llevar al país en la senda de la grandeza.

La Nueva Argentina ha decidido para vosotros tal signo, de carácter eminentemente social. El deporte será aquello que permitirá atresar corazones y mentes.


Pues bien, el corazón de nuestro Movimiento, el Justicialismo, está en Evita, y su músculo son los hombres que trabajan. Por fiel reflejo, nuestro sistema informático consta de un corazón: su Kernel Linux, y su músculo son las aplicaciones GNU. La realidad efectiva es que - en mi carácter de Conductor del Movimiento - os proveo de Kernels que se actualizan automáticamente cada tantos días a través de los repositorios oficiales de Ubuntu. En particular, estos Kernels oficiales representan versiones probadas de hace unos meses atrás, yy como tal son muy adecuadas para Ubuntu.

Sin embargo, nada impedirá a vosotros mismos compilar un Kernel propio, de factura más moderna, afinada y experimental. Y si lo deseamos, también podremos instalarlo en nuestro sistema para evaluarlo.

Tal acción no es simple, pero si vuestra alma es pura y desean la aventura, os instruiré como Conductor didacta para llevarlos a un buen resultado deportivo.

Vean niños, para compilar un Kernel, primero debemos descargar el árbol completo de su código fuente desde la web oficial del Kernel Linux, y luego crear un archivo de configuración para el procedimiento particular que querramos. Confome el procedimiento esté finalizado, podremos instalarlo.

En este caso utilizaré una versión del Kernel Linux estable, la 4.9.11, de muy reciente liberación. Es natural que salgan iteraciones nuevas cada pocos días, de modo que será poco deportivo correr "detrás del último Kernel". Mas bien consideren tal versión como un ejemplo avanzado al momento de este discurso. Pues bien, os enseñaré cómo compilar dicho kernel para Ubuntu, y crear a partir de la compilación un paquete .deb instalable.

¿Porqué compilar un kernel personalizado?

Compilar nuestro propio Kernel tiene sus ventajas y desventajas. Para cambiar el comportamiento del Kernel, uno debe compilarlo y luego reiniciar el equipo para que se cargue esta versión diferente de Linux. Ahora bien, la mayoría de las funcionalidades del Kernel Linux están contenidas en módulos opcionales. Algunos de los beneficios de contar con un Kernel personalizado son:
  1. Soporte de mayor variedad de hardware, incluyendo el de reciente aparición.
  2. Remoción de controladores y módulos no deseados/requeridos del Kernel, para agilizar su operatoria.
  3. Inicio más veloz, debido a tratarse de un Kernel "deportivo".
  4. Seguridad incrementada, debido a características/módulos/controladores adicionales agregadas o removidos.
  5. Aprenderán acerca del Kernel y su uso avanzado.
  6. Siempre correrán un Kernel de última factura.
  7. Menor empleo de memoria RAM.
Nota: Estas instrucciones son a modo de ejemplo, y fueron evaluadas tanto en Ubuntu Linux v14.04.4/16.04.2 LTS.

Requisitos

Daré por sentado que contamos la revisación médica, que vuestros padres poseen el carnet del Partido. Además, necesitaremos unos 10 GB de espacio libre en disco, amén de tiempo (idealmente un par de horas).

Instalar los paquetes requeridos

Abrimos una terminal y ingresamos el siguiente Comando de Organización para instalar las dependencias necesarias para la compilación del kernel:

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc

...el sistema nos devolverá algo como:

Fig.01: Instalando el compilador gcc y sus muchachos peronistas

Acto seguido instalaremos el paquete kernel-package. Tendremos dos opciones, una instalarlo con toda la paquetería requerida (lo que rondará 1 GB de descargas)

sudo apt-get install kernel-package

...pero también podríamos usar el siguiente comando, que prescinde instalar paquetes adicionales relativamente innecesarios en ciertas condiciones. Si tienen dudas, ingresarán el comando anterior.

sudo apt-get --no-install-recommends install kernel-package

...el sistema devolverá algo como:
Fig.02: Instalando las utilidades necesarias para compilar el Kernel Linux.

Descargar el código fuente del kernel Linux

Ingresamos los siguientes comandos para descargarnos tanto el código fuente como las llaves PGP del mismo usaremos el comando wget, de la siguiente manera (naturalmente, modificaremos la URL correspondiente a la versión que deseemos):

cd ~ ;
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.14.tar.sign
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.14.tar.xz

...el sistema nos devolverá algo como:
Fig.03: Usando wget para bajarnos un árbol completo de código fuente de una versión reciente del Kernel Linux, desde la web oficial kernel.org

El acto de descargar el árbol de código fuente termina aquí. Sin embargo, os recomiendo realizar una verificación de autenticidad de la firma del mismo, para asegurarnos que no exista una descarga fallada o - mucho peor - una suplantación de Kernels por uno falso hackeado.

Para ello utilizaremos las herramientas de GnuPG para verificar la autenticidad de la afiliación al Partido Justicialista, es decir, confirmar la validez las firmas del Kernel. Para ello en este caso ingresamos:

unxz linux-4.9.14.tar.xz
gpg --verify linux-4.9.14.tar.sign

Tras unos segundos, Ubuntu verificará y nos devolverá algo como:

gpg: asumiendo que hay datos firmados en «linux-4.9.14.tar»
gpg: Firmado el dom 12 mar 2017 02:42:41 ART usando clave RSA ID 6092693E
gpg: Imposible comprobar la firma: clave pública no encontrada

Normalmente indicará que no podremos comprobar la firma, pues no la tendremos cargada en nuestro criptosistema. Para ver de quién es, debemos obtener las llaves del servidor público de llaves PGP a fin de verificar esta firma (en el ejemplo, la firma RSA key ID 6092693E). Ello lo haremos con:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 6092693E

...y el sistema mostrará en pantalla:

gpg: solicitando clave 6092693E de hkp servidor keys.gnupg.net
gpg: clave 6092693E: clave pública "Greg Kroah-Hartman (Linux kernel stable release signing key) " importada
gpg: clave 6092693E: clave pública "Greg Kroah-Hartman (Linux kernel stable release signing key) " importada
gpg: 3 dudosa(s) necesaria(s), 1 completa(s) necesaria(s),
modelo de confianza PGP
gpg: nivel: 0  validez:   1  firmada:   1  confianza: 0-, 0q, 0n, 0m, 0f, 1u
gpg: nivel: 1  validez:   1  firmada:   0  confianza: 0-, 0q, 0n, 0m, 1f, 0u
gpg: Cantidad total procesada: 2
gpg:               importadas: 2  (RSA: 2)


Ahora que bajamos la firma digital de quien mantiene el Kernel Linux, comprobamos que el árbol comprimido esté firmado y no esté modificado por extraños:

gpg --verify linux-4.9.14.tar.sign

...el sistema nos indicará:

gpg: asumiendo que hay datos firmados en «linux-4.9.14.tar»
gpg: Firmado el dom 12 mar 2017 02:42:41 ART usando clave RSA ID 6092693E
gpg: Firma correcta de «Greg Kroah-Hartman (Linux kernel stable release signing key) »
gpg: AVISO: ¡Esta clave no está certificada por una firma de confianza!
gpg:          No hay indicios de que la firma pertenezca al propietario.
Huellas digitales de la clave primaria: 647F 2865 4894 E3BD 4571  99BE 38DB BDC8 6092 693E

Esto nos indica una firma pública exustente de Greg Kroah-Hartman y nos otorga la verificación por huella digital. Las personas que usualmente publican los Kernels Linux son su creador Linus Torvalds y Greg Kroah-Hartman, En el ejemplo tenemos la firma del segundo, y si bien no tenemos certificada su firma en nuestro propio criptosistema, bien podremos corroborar sus huellas digitales de la clave primaria. Al coincidir con las que ellos proveen públicamente. En este caso es la del compañero Greg, de modo que está todo OK.

Linus TorvaldsABAF 11C6 5A29 70B1 30AB  E3C4 79BE 3E43 0041 1886
Greg Kroah-Hartman 647F 2865 4894 E3BD 4571  99BE 38DB BDC8 6092 693E

En cambio, si recibiésemos la advertencia de “BAD signature” ("firma MALA") por parte del comando “gpg --verify”, y la huella digital no coincidiese con la de estos compañeros, significaría que la copia del árbol del Kernel que hemos descargado fue creada y publicada por otra persona, y podríamos definir que no es auténtica y podría tener infiltrados al Movimiento.

Una vez cumplimentada esta rutina de seguridad, podremos con tranquilidaddescomprimir el árbol del Kernel en nuestro equipo con el programa tar. Acto seguido verificaremos su contenido. Ello lo haremos con los siguientes Comandos de Organización:

cd ~
tar xvf linux-4.9.14.tar ;

cd ~/linux-4.9.14/ ;
ls


...la devolución en pantalla será intensa, pero reflejará algo como:

linux-4.9.14/
linux-4.9.14/.cocciconfig
linux-4.9.14/.get_maintainer.ignore
linux-4.9.14/.gitattributes
linux-4.9.14/.gitignore
linux-4.9.14/.mailmap
linux-4.9.14/COPYING
linux-4.9.14/CREDITS
linux-4.9.14/Documentation/
linux-4.9.14/Documentation/.gitignore
linux-4.9.14/Documentation/00-INDEX
linux-4.9.14/Documentation/ABI/
linux-4.9.14/Documentation/ABI/README
linux-4.9.14/Documentation/ABI/obsolete/
linux-4.9.14/Documentation/ABI/obsolete/proc-sys-vm-nr_pdflush_threads
linux-4.9.14/Documentation/ABI/obsolete/sysfs-block-zram
linux-4.9.14/Documentation/ABI/obsolete/sysfs-bus-usb
linux-4.9.14/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-arvo
linux-4.9.14/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-isku
linux-4.9.14/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus
...etc
...etc
linux-4.9.14/virt/kvm/kvm_main.c
linux-4.9.14/virt/kvm/vfio.c
linux-4.9.14/virt/kvm/vfio.h
linux-4.9.14/virt/lib/
linux-4.9.14/virt/lib/Kconfig
linux-4.9.14/virt/lib/Makefile
linux-4.9.14/virt/lib/irqbypass.c


linux-4.9.14

arch   COPYING Documentation  fs ipc  kernel       Makefile README  scripts   tools
block  CREDITS drivers        include Kbuild  lib       mm REPORTING-BUGS security  usr
certs  crypto firmware       init Kconfig  MAINTAINERS  net samples  sound   virt

Configurar el Kernel Linux

Primero, copiamos el archivo .config existente de nuestro Kernel Linux actual para que el nuevo lo replique:

cd ~/linux-4.9.14
cp -v /boot/config-$(uname -r) .config


...el sistema nos devolverá algo como:

'/boot/config-4.4.0-62-generic' -> '.config'

Esto hará que el Kernel nuevo ya esté configurado como el que tenemos, salvo los componentes nuevos que se le hayan incorporado. Para configurar el Kernel nuevo, ejecutamos el siguiente comando:

make menuconfig

...la devolución en pantalla:
 Fig.04: Iniciando menuconfig
ADVERTENCIA: Si no trabajamos con conocimiento o cuidado, podríamos retirar el controlador o soporte de un dispositivo imprescindible y resultarnos en un Kernel "muerto" o no funcional. Por ejemplo, si se quita soporte EXT4 (el sistema de archivos genérico de Linux) , el sistema directamente podría no arrancar. Si estamos en duda, simplemente dejemos el componente activado como lo está, por defecto.

Nos aseguramos de guardar los cambios antes de salir de menuconfig.

Compilar el Kernel Linux

Necesitamos limpiar el árbol de código fuente y resetear los parámetros de kernel-package, y para ello ingresamos:

make-kpkg clean

Los resultados serán similares a:
Fig.06: Ejecutando el comando make-kpkg

Finalmente podremos compilar el Kernel personalizado. Para ello podríamos ingresar:

fakeroot make-kpkg --initrd --revision=1.0.peronista kernel_image kernel_headers

Para acelerar el proceso de compilación podremos hacer uso de la opción -j  (-j 7 significa que empleamos todos los 8 núcleos de nuestro procesador para la tarea computacional de compilar el Kernel Linux):

fakeroot make-kpkg --initrd --revision=1.0.peronista kernel_image kernel_headers -j 7

Ejemplo de devolución:

Fig.07: Comenzando a compilar el Kernel personalizado.

El programa fakeroot ejecutará el comando llamado make-kpkg en un entorno donde simula tener privilegios de administrador a fin de hacer la manipulación de archivos. Esto es útil pues nos permitir que la masa, en forma de usuarios simples sin privilegios, creen archivos contenedores (tar, ar, .deb etc.) mientras que los archivos contenidos en ellos sean creados con permisos pasavantes de administración. El comando make-kpkg - en tanto - compila paquetes de kernel a partir del código fuente del kernel linux. Las opciones que le hemos provisto son:
  • --initrd : Crea una imagen initrd.
  • --revision=1.0.peronista : Establece una revisión específica que se nos ocurra para nuestro kernel, como por ejemplo 1.0.montoto, etc.
  • kernel_image : Este indicador de destino le ordena producir un empaquetado Debian de la imagen del código fuente del kernel Linux, y cualquier módulo que hayamos configurado previamente en el archivo de configuración del kernel .config.
  • kernel_headers : Este indicador de destino le ordena producir un paquete Debian de la imagen del encabezado del kernel.
Tengamos en cuenta que la compilación del kernel puede llevar un tiempo, dependiendo de la potencia del equipo. Por ejemplo, en un equipo i5 de cuatro núcleos con 4 GB de memoria RAM llevó una hora. Al final, deberíamos ver algo como lo siguiente:

test ! -e debian/control~ || rm -f debian/control~
dpkg-gencontrol -isp -DArchitecture=amd64 -plinux-headers-4.9.14 \
                                          -P/tmp/linux-4.9.14/debian/linux-headers-4.9.14/
dpkg-gencontrol: warning: -isp is deprecated; it is without effect
create_md5sums_fn () { cd $1 ; find . -type f ! -regex './DEBIAN/.*' ! -regex './var/.*'      -printf '%P\0' | xargs -r0 md5sum > DEBIAN/md5sums ; if [ -z "DEBIAN/md5sums" ] ; then rm -f "DEBIAN/md5sums" ; fi ; } ; create_md5sums_fn                   /tmp/linux-4.9.11/debian/linux-headers-4.9.11
chown -R root:root                  /tmp/linux-4.9.14/debian/linux-headers-4.9.14
chmod -R og=rX                      /tmp/linux-4.9.14/debian/linux-headers-4.9.14
dpkg --build                        /tmp/linux-4.9.14/debian/linux-headers-4.9.14 ..
dpkg-deb: building package `linux-headers-4.9.14' in `../linux-headers-4.9.14_1.0.peronista_amd64.deb'.
cp -pf debian/control.dist          debian/control
make[2]: Leaving directory '/tmp/linux-4.9.14'
make[1]: Leaving directory '/tmp/linux-4.9.14'

Finalmente verificamos la exisencia de los archivos .deb de los paquetes del kernel:

ls ../*.deb 

...y debería indicarnos los dos paquetes, el encabezado y la imagen del Kernel peronista:

 
../linux-headers-4.9.14_1.0.peronista_amd64.deb  ../linux-image-4.9.14_1.0.peronista_amd64.deb 

Instalar el kernel personalizado

Una vez que se han generado los paquetes con los encabezados y la imagen del kernel personalizado, podremos instalarlo. Para ello tipeamos el siguiente comando dkpg para instalar el kernel personalizado en nuestro sistema:

cd ..
sudo dpkg -i linux-headers-4.9.14_1.0.peronista_amd64.deb
sudo dpkg -i linux-image-4.9.14_1.0.peronista_amd64.deb


La instalación de ambos debería suceder sin incidentes:

Selecting previously unselected package linux-headers-4.9.14.
(Reading database ... 96175 files and directories currently installed.)
Preparing to unpack linux-headers-4.9.14_1.0.peronista_amd64.deb ...
Unpacking linux-headers-4.9.14 (1.0.peronista) ...
Setting up linux-headers-4.9.14 (1.0.peronista) ...
Examining /etc/kernel/header_postinst.d.
Selecting previously unselected package linux-image-4.9.11.
(Reading database ... 110487 files and directories currently installed.)
Preparing to unpack linux-image-4.9.14_1.0.peronista_amd64.deb ...
Done.
Unpacking linux-image-4.9.14 (1.0.peronista) ...
Setting up linux-image-4.9.14 (1.0.peronista) ...
 
 Hmm. There is a symbolic link /lib/modules/4.9.14/build
 However, I can not read it: No such file or directory
 Therefore, I am deleting /lib/modules/4.9.14/build
 
 
 Hmm. The package shipped with a symbolic link /lib/modules/4.9.14/source
 However, I can not read the target: No such file or directory
 Therefore, I am deleting /lib/modules/4.9.11/source
 
Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.9.11 /boot/vmlinuz-4.9.14
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.9.11 /boot/vmlinuz-4.9.14
update-initramfs: Generating /boot/initrd.img-4.9.14
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.9.14 /boot/vmlinuz-4.9.14
run-parts: executing /etc/kernel/postinst.d/update-notifier 4.9.14 /boot/vmlinuz-4.9.14
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.9.14 /boot/vmlinuz-4.9.14
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.14
Found initrd image: /boot/initrd.img-4.9.14
Found linux image: /boot/vmlinuz-4.4.0-62-generic
Found initrd image: /boot/initrd.img-4.4.0-62-generic
Found linux image: /boot/vmlinuz-4.4.0-21-generic
Found initrd image: /boot/initrd.img-4.4.0-21-generic
done

Reiniciamos el equipo

Ingresamos el siguiente comando:

sudo reboot

Verificamos que todo funcione correctamente

Tipeamos el siguiente comando para verificar que el Kernel nuevo esté cargado y funcionando correctamente. Debería iniciar correctamente, y en tal caso deberíamos probar los siguientes comandos para revisar que no tenga errores indicados.

uname -a
uname -r
uname -mrs

dmesg | more
dmesg | egrep -i --color 'error|critical|failed'


Por ejemplo:

Linux ubuntu-pj 4.9.14 #1 SMP Sun Mar 12 21:10:55 GMT 2017 x86_64 x86_64 x86_64 GNU/Linux

Y aquí lo tenemos, el Linux Kernel en su versión 4.9.14 peronista, instalado y operando correctamente.

Desinstalación de un Kernel Personalizado


Si por algún motivo deseamos desinstalar el Kernel que hemos instalado, sólo hemos de iniciar uno de los anteriores durante el menú de inicio de Ubuntu. En el caso de Grub, podremos iniciar Ubuntu con las opciones avanzadas y escoger arrancar un Kernel anterior. Una vez iniciado el sistema abrimos una terminal con Ctrl+Alt+T e ingresamos:

sudo apt purge linux-image-4.9.14_1.0.peronista_amd64.deb
sudo apt purge linux-headers-4.9.14_1.0.peronista_amd64.deb

sudo update-grub

Naturalmente, también podríamos eliminar el directorio temporal creado con:

sudo rm -r ~/linux-4.9.14/


Finalmente, reiniciamos el sistema:

sudo reboot 

domingo, 23 de marzo de 2014

¿Cómo hago funcionar el adaptador Wifi Realtek RTL8188CE en Ubuntu 12.04LTS o superior?

Juan Perón es recordado por sus encuentros con trabajadores en su despacho de la Secretaría de Trabajo y Previsión, actividad que siguió realizando durante su presidencia. En uno de dichos encuentros ya en la Casa Rosada, Juan Perón explica sobre la lucha por la libertad y sobre cómo hacer funcionar el Realtek RTL8188CE con los kernels más nuevos de Ubuntu.

¡Trabajadores!

La Liberación de la Patria es una tarea que puede parecer sencilla, pero que no lo es si los pueblos no toman conciencia de los sacrificios que hay que hacer por ella. La libertad no se consigue en un kiosco: es necesario luchar y ¡ay! hay veces que es necesario morir por ella.

Para lograr la libertad del software pasa más o menos lo mismo. En un camino ideal, todo debería estar resuelto, pero no son pocas las situaciones en las que habremos de luchar incansablemente en una Terminal para llevar a buen puerto un uso específico de un programa o de un equipamiento. Esta lucha se enaltece más cuando no sólo es un software el que ha de ser liberado, sino el uso de un hardware en especial.
Todos ustedes sabrán que no son pocas las netbooks o notebooks que no pueden conectarse a WiFi como es debido, por algún problema u otro en sus controladores libres. Ello parecería logico, pues el software libre no está escrito por Dioses, sino apenas por Apóstoles que lo emplean. De la práctica y el compromiso se podrá sacar lo mejor de un programa que controle un equipo. Sin embargo, haciendo uso de una Comunidad Organizada para hacer el bien, podremos encontrar muchas veces las soluciones a los problemas informáticos que nos depare nuestra incansable búsqueda de la Libertad.

En este caso, el Justicialismo se ha concentraremos en el chipset Realtek RTL8188CE, ampliamente extendido y de buena funcionalidad, pero del que existen varias implementaciones.

Lamentablemente, con algunas de ellas se hace necesario descargar el controlador específico del fabricante y compilarlo. Normalmente ello tiene éxito, pero existen ocasiones específicas en las cuales  podríamos no tener éxito descargando este controlador oficial, viendonos obligados a luchar colectivamente. En tales casos, podremos recurrir a un proyecto comunitario almacenado en Github que nos facilitará la tarea, pues se trata de un controlador emparchado específicamente para las últimas versiones de Ubuntu que usan los ultimos Kernels.



Vean señores, habrán de conectar su equipo portátil por medio de un cable ethernet a internet y realizar el enlace desde allí. Esto es imprescindible pues si tenemos una conexión deficiente se cortará. Tambiés es ineludible para la descarga local del controlador.

La primera tarea será detectar positivamente si empleamos dicho hardware de comunicación. Para ello abrimos una Terminal e ingresamos el siguiente Comando de Organización:

lspci

El sistema nos listará todos los dispositivos de placas incorporados a nuestro sistema. Para confirmar adecuadamente, deberíamos encontrarnos con esta línea:

Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)

En este caso, significa que tenemos una plaqueta similar a ésta:
También conviene analizar la versión de kernel o núcleo del sistema operativo que usemos, pues este método está pensado especialmente para los  kernels Linux superiores al 2.6.3x. A fin de asegurarnos que tenemos un Kernel superior al 2.6.3x, ingresamos el siguiente Comando de Organización:

uname -r

El sistema nos devolverá la versión. Siempre y cuando el kernel sea superior a 2.6.3x continuaremos utilizando esta solución mediante el proyecto de Gitgub.

Como tercer medida habremos de instalar y comprobar las dependencias previas necesarias para descagar el controlador por medio de Git y compilarlo en un módulo ejectutable. La acción se lleva a cabo con el comando de organización:

sudo apt-get install gcc git build-essential linux-headers-generic linux-headers-$(uname -r)

...Al proporcionar nuestra contraseña de Conductor se descargarán tras un tiempo las aplicaciones imprescindibles. Acto seguido clonaremos el Código Fuente del controlador no oficial Realtek corregido, descargándolo desde su fuente Github hasta nuestro equipo. Será fácil mediante los  comandos:

cd ~
git clone https://github.com/FreedomBen/rtl8188ce-linux-driver.git


Esta acción permitirá descargar la base necesaria para operar el RTL8188CE y también su derivado el RTL8192CE (junto con otros chipsets emparchados). Conforme lo haga, ingresaremos al directorio del controlador y daremos inicio al procedimiento de compilación del controlador en sí, para convertirlo en un módulo ejecutable y funcional para nuestro sistema operativo:

cd ~/rtl8188ce-linux-driver
make
sudo make install


Se procederá a compilar el controlador. Al cabo de unos instantes debería finalizar de manera adecuada creando un módulo, sin presentar errores significativos. Ejecutamos dicho módulo con el siguiente comando:

modprobe rtl8192ce


Si todo ha salido bien, nuestro sistema debería ahora dar ejecución el controlador inalámbrico y poner en funcionamiento la plaqueta WiFi. Para comprobar que funciona positivamente, podremos encenderla (si tiene un botón o combinación te tecla de función para ello), y conectarnos por WiFi. Podremos ahora desconectar de la conexión cableada. Todo debería funcionar adecuadamente, con un registro de potencia de señal adecuado.

Una vez comprobado el funcionamiento adecuado del controlador con el hardware y la estabilidad de la conexión, necesitaremos indicarle al sistema que siempre que se inicie proceda a cargar el módulo automáticamente. Para ello debemoos editar el archivo /etc/modules.

sudo nano /etc/modules


Se abrirá el archivo, que inicialmente será así:



Al final del archivo agregamos el modulo agregándole la línea:

rtl8192ce

...de modo que el texto quedará así:



Guardamos las modificaciones en el archivo con Ctrll+o y salimos del editor con Ctrl+x.

Ahora podremos reiniciar el sistema con:

sudo reboot

A la vuelta, deberíamos poder conectarnos al WiFi automáticamente sin problema alguno. Es importante saber que si actualizamos la versión del kernel mediante las actualizaciones automáticas, habremos de repetir este procedimiento pues el modulo dejará de cargarse solo.

lunes, 21 de enero de 2013

¿Cómo instalo un kernel optimizado para AMD Turion y Phenom en Ubuntu Maverick?

El 7 de junio de 1948, Juan Perón se reune frente a una nutrida comitiva de la Unión Obrera Metalúrgica para exponer sobre los nuevos derechos de Bienestar y sobre cómo instalar en Ubuntu Maverick un kernel precompilado, empaquetado y especialmente optimizado para microprocesadores AMD Turion y Phenom.

Masa: ¡Queremos a Perón! ¡Queremos a Perón!

Perón: ¡Descamisados de la Patria!

Masa: ¡Uaaaaaah!

Perón: Corren tiempos en los cuales, enfrentando a una oligarquía cipaya, realizamos decididos avances en pos del bienestar del Pueblo. A nadie quedan dudas que si no fuese por el Justicialismo, pocos gozarían de todo y muchos no tendrían nada. Por ello, hoy y frente a vosotros, reivindico la inquebrantable lucha que como Hombres de Trabajo hemos emprendido: ¡lograr la anhelada Justicia Social!

Masa: ¡Pe-rón! ¡Pe-rón! ¡Pe-rón!

Cada paso que damos, es un clavo más en el ataúd de un sistema que no ha existido sino para esclavizar al hombre, sometiéndolo al designio espurio de un Capital sin Patria ni Bandera: ¡Micro$oft Window$!. Cada línea de código que por medio de nuestro esfuerzo compilamos, constituye una imperecedera garantía de Liberación, no sólo de nuestro Pueblo, sino de la de todos aquellos que habitan la faz de la tierra.

Masa: ¡Sudor Si! ¡Colonia No! ¡Sudor Si! ¡Colonia No!

Perón: Aún así, nuestra historia como hombres Libres no será jamás completa, si a la libertad política y económica no agregamos la consecuente libertad del software que impulsa nuestro equipo.

Todo trabajador ha comprendido que para obrar es escencial contar con las herramientas adecuadas: la industria requiere de altos hornos, y los mismos necesitan combustibles, materias primas, y fundamentalmente la fuerza del trabajo para su proceso. Un metalmecánico lo será sólo de nombre si no cuenta con su torno de precisión. ¡Y lo mismo sucede en el rubro del software!

Indudablemente Linux - que técnicamente es un kernel encargado de controlar los rudimentos básicos de manejo del hardware - posee una gran cantidad de versiones que lo han perfeccionado con el tiempo. Este Kernel, como todo programa de cómputo de buen corazón, opera asentado en un código fuente libre. el cual precisa verse compilado para lograr su síntesis de lenguaje máquina ejecutable en un microordenador.
 
Pues bien, por orden de los encargados de fábrica, esta compilación será amplia como lo es nuestro Movimiento: suele hacerse de manera que responda a una arquitectura genérica y no específica, de manera de poder trabajar en la mayor cantidad de equipos posibles. Los Kernels distribuidos empaquetados para Ubuntu y la mayoría de las distribuciones responden entonces a las llamadas "Generic".

Sin embargo, esta máxima compatibilidad tan beneficiosa en la flexibilidad que nos provee, puede considerarse - en ciertos casos extremos - como perniciosa.

¿Por qué? Simplemente debido a que se omiten ciertas mejoras u optimizaciones durante su compilación.

Por ejemplo, podríamos especificar compilarlo para una arquitectura o subarquitectura de microprocesador en especial (Atom, IA, Core 2 de Intel, Phenom o Turion de AMD, etc). Estas optimizaciones específicas permitirán al Pueblo hacer empleo efectivo y verdadero de ciertas instrucciones propias de cada microprocesador, lo cual a su vez permitirían agilizar las tareas básicas, acelerar el trabajo en la máquina, procesos y cómputo, etc.

Si bien se puede virtualizar y compilar cruzadamente para un microprocesador específico en un equipo que no esté munido con esa arquitectura, lo ideal es contar con un equipo similar (idealmente, el mismo). Al fin y al cabo, "siempre lo mejor es lo que se hace entre nosotros".


Una de las ventajas intrínsecas del Software Libre consiste en la posibilidad de hacer uso de un kernel optimizado para nuestra arquitectura específica de microprocesador, y que omita funciones que nuestro equipo no tiene.

Compilar nuestro Kernel casero es totalmente factible, pero requerirá ciertos conocimientos para hacerlo, y además se deberá disponer de varias herramientas y compiladores (los cuales, por supuesto, son libres y gratuitos). Finalmente, el proceso de compilado es por demás una tarea de cómputo intenso, y requerirá cierto tiempo para llevarse a cabo.

No obstante, el Justicialismo ha sido creado como una filosofía nueva de la vida, profundamente Cristiana y profundamente humanista. Por ello en esta ocasión, os enseñaré cómo descargar e instalar un Kernel versión 3.0.3 ya precompilado y empaquetado en DEB para procesadores AMD Phenom, Opteron y AMD Turion de 64 bits (lógicamente, de varios núcleos). El procedimiento ha sido evaluado con Ubuntu Maverick 10.10 de 64 bits (que inicialmente usaba el kernel 2.6.35-32-generic), en un sistema Acer Aspire 5542-5241 con procesador AMD Turion II X2 M500.


Tengamos en cuenta que el uso de Kernels no empaquetados oficialmente por Ubuntu es considerado algo experimental, y tal instalación es, lógicamente, reposnsabilidad del Conductor del Sistema. Afortunadamente, el uso es muy sencillo y si algo sale mal es fácil de desinstalar; el accionar podrá deshacerse como se indicará. Asimismo, dependiendo del sistema deberán reinstalar los controladores de video (en mi caso, los ATI Catalyst) para contar con aceleración 3D nuevamente en Ubuntu.

Luego de esta introducción, y si tenemos equipo AMD Turion o Phenom, podremos proceder fácilmente desde la Consola Terminal. Para ello abrimos una con Ctrl+Alt+T.

Como primer medida crearemos una carpeta en nuestro Escritorio y nos colocaremos en ella para trabajar:

mkdir ~/Escritorio/Kernel303Turion
cd ~/Escritorio/Kernel303Turion

Ahora descargaremos los tres ficheros empaquetados y optimizados para los procesadores AMD mencionados. Lo haremos con los siguientes Comandos de Organización:

wget http://dl.dropbox.com/u/22900905/MyKernelBuilds/3.0.3-phenom/linux-headers-3.0.3-030003_3.0.3-030003.201108180913_all.deb

wget http://dl.dropbox.com/u/22900905/MyKernelBuilds/3.0.3-phenom/linux-headers-3.0.3-030003-barcelona_3.0.3-030003.201108180913_amd64.deb

wget http://dl.dropbox.com/u/22900905/MyKernelBuilds/3.0.3-phenom/linux-image-3.0.3-030003-barcelona_3.0.3-030003.201108180913_amd64.deb


Para instalar los tres archivos del Kernel, simplemente debemos indicar:

sudo dpkg -i *.deb

Luego de la instalación propiamente dicha de los tres paquetes, el sistema adaptará el arrancador Grub de manera tal de que figure en el tope de la lista el nuevo Kernel, en este caso llamado "linux-image-3.0.3-030003-barcelona".

Para darle uso, deberemos reiniciar el equipo. Podremos hacerlo desde la consola con:

sudo reboot


Si todo va bien, el equipo debería reiniciar sin problemas con el nuevo kernel (aunque, probablemente, sin aceleración 3D en el modo gráfico). Si arrancó bien y entró a la sesión gráfica, podremos revisar que el Kernel se ha cargado correctamente simplemente abriento una Terminal con Ctrl+Alt+T e ingresando

uname -a

Como han comprendido, deberían reinstalar los controladores de video de manera que sean aceptados por su nuevo Kernel optimizado para AMD Turion y otros.

Una vez comprobado el correcto funcionamietno del Kernel 3.0.3, podrán borrar la carpeta Kernel303Turion del Escritorio, pues ya no la necesitaremos.



DESINSTALACION

Si el Kernel no funciona adecuadamente o por algún motivo deseamos desinstalarlo. deberemos reiniciar Ubuntu y en la ventana de Grub para la instalación del kernel, habrán de elegir alguna versión anterior a la 3.0.3 recientemente instalada (por ejemplo, en mi caso sería la 2.6.35-32). Podremos hacerlo tanto desde el entorno gráfico como desde la consola de texto.


Una vez reiniciado el sistema con el kernel anterior, abrimos una terminal con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:

sudo apt-get purge linux-headers-3.0.3-030003.*

Nos solicitará si estamos seguros de borrar del disco tal paquete. Le indicamos que sí.

sudo apt-get purge linux-image-3.0.3-030003-barcelona

Nos volverá a solicitar autorización. Le indicamos que Sí.

Finalmente y a pesar de que el sistema lo hace automáticamente, no está de mas reactualizar la lista de kernels en el Grub mediante:

sudo update-grub

Y finalmente reiniciamos con:

sudo reboot

martes, 24 de enero de 2012

¿Cómo soluciono un Kernel Panic en Ubuntu?

Frente a la conmoción que presentaron los intentos disolventes del antipueblo, el general Juan Perón pronunció por Cadena Nacional de Radiodifusión un enérgico discurso donde enseñó cómo reparar un Kernel Panic en Ubuntu.

¡Trabajadores!

Un movimiento político como el nuestro no puede verse presa del pánico en las situaciones de conmoción que nos plantea la oligarquía. Ellos quieren cercarnos con el terror asesinando y destruyendo, pero nosotros seremos más poderosos. Esto lo comprenderán mediante la persuasión, y si no, ¡a palos!.
El kernel es el núcleo del sistema operativo, y en el caso de Linux el mismo es del tipo monolítico. Nada debe conmoverlos, pues su misión es la de efectivamente conducir todo un sistema. Linux en general tiene la particularidad de poder contar con varios kernels instalados, motivado esto en la seguridad redundante del movimiento: si un kernel reciente falla, podemos recurrir a una versión anterior y aún arrancar nuestro equipo con funcionalidad.

Usualmente Ubuntu cargará en memoria durante el arranque del sistema la última versión instalada del kernel, y dará inicio al sistema operativo. Periódicamente la versión del kernel irá actualizándose desde los repositorios a través del Gestor de Actualizaciones. El arrancador múltiple para sistemas operativos (llamado Grub) revisará estas nuevas imágenes de Kernel, y las agregará a una lista por si alguno falla. Podrán conocer su versión de kernel actual simplemente tipeando en la Terminal el siguiente comando:

uname -r

Si bien es extremadamente raro, puede suceder que la imagen de nuestro kernel se corrompa por motivo de las oligarquías gorilas. En ese caso, al iniciar nuestra computadora se detendrá y nos indicará "kernel panic".

Ante este imprevisto, debemos no tener pánico nosotros, pues todo puede arreglarse en un Ubuntu Peronista. Apagamos la computadora, y la reiniciamos. En el arranque siguiente el Grub se detendrá y nos permitirá optar por una versión de kernel para arrancar. En la parte superior de la lista se indicará el número de la última versión (que aparentemente está fallando). En lugar de usar esa, habremos de utilizar alguna versión anterior, idealmente la anteúltima. En nuestro ejemplo, supondremos querer arrancar la versión 2.6.35-31-generic pues la versión 2.6.35-32-generic ha fallado.

Si el sistema arranca sin inconvenientes con esta versión de kernel anterior, la solución no es tan difícil. Simplemente hemos de borrar el kernel más nuevo (que ha fallado), y - opcionalmente - reinstalarlo.

Para borrar el kernel defectuoso vamos a Sistema / Administración / Gestor de Paquetes Synaptic. Ingresamos nuestra contraseña y se abrirá el peronista Synaptics, que nos permitirá tomar en nuestras manos estos menesteres. En el cuadro Buscar ponemos la versión que ha fallado. En nuestro ejemplo, ingreso "2.6.35-32".

El Synaptic nos indicará toda una serie de paquetes que comienzan con ese nombre. Específicamente debemos eliminar sólo tres archivos que definen el kernel: linux-headers-x.x.xx-xx, linux-headers-x.x.xx-xx-generic, y linux-image-x.x.xx-xx-generic, siendo x.x.xx-xx la versión fallada. En nuestro ejemplo imaginario, debo desinstalar estos tres paquetes:
  • linux-headers-2.6.35-32
  • linux-headers-2.6.35-32-generic
  • linux-image-2.6.35-32-generic
Para ello buscamos cada uno de estos tres paquetes, y hacemos clic con botón derecho y elegimos "Marcar para desinstalar completamente". Luego presionamos el botón "Aplicar" ("tilde verde"). El sistema borrará completamente el kernel fallado.

Acto seguido debemos actualizar el listado de kernels disponibles para su ejecución en Grub. Vamos a Aplicaciones / Accesorios / Terminal y en la consola ingresamos:

sudo update-grub

Tras indicar nuestra contraseña de Conductor, el sistema actualizará en breves segundos la lista de kernels del archivo grub.cfg, omitiendo por supuesto la versión que hemos acabado de desinstalar. Si no hiciéramos esto, Ubuntu buscaría correr esta versión ahora inexistente y no podría arrancar.

A continuación reiniciamos nuestro equipo. Desde la Terminal podemos hacerlo con:

sudo reboot

En el presente estado de cosas, el sistema arrancará con la anteúltima versión de kernel, y debería hacerlo sin problema alguno.

Si lo deseamos podemos dejar todo aquí. Si optamos por reinstalar la versión más nueva de kernel (para solucionar su problema pero conservar la versión de kernel más actual para nuestra distribución), debemos entrar nuevamente a Synaptic y reinstalar los tres paquetes que eliminamos anteriormente (es necesario estar conectado a internet).

Hacemos el mismo procedimiento anterior, pero al hacer clic sobre los tres paquetes le indicamos "Marcar para Instalar". Tras presionar el botón Aplicar de Synaptic, el kernel que anteriormente estaba defectuoso se descargará del repositorio e instalará nuevamente, esta vez de manera correcta y corregida.

Debemos ir a la Terminal y nuevamente indicar nuevamente que actualice la lista de Kernels en el Grub con sudo update-grub

Luego reiniciamos, y la computadora arrancará correctamente con la última versión de kernel (en nuestro ejemplo la 2.6.35-32-generic). Si queremos comprobarlo, vamos a la consola Terminal y volvemos a ingresar uname -r

Nos debería indicar ése kernel, ¡que ha retornado para hacer feliz a todos los trabajadores!

jueves, 8 de diciembre de 2011

¿Cómo elimino los kernels antiguos en Ubuntu 10.10?

Tras ser ungido por tercera vez Presidente de la Nación, Juan Perón inició una ronda de trabajo que tuvo epicentro en la sede de la Confederación General del Trabajo. Además de hablar sobre el costo de vida y el salario, el General nos cuenta sobre cómo remover las versiones de kernels ya superadas de Ubuntu.


(...)
Un Kernel es el núcleo central del sistema operativo, un componente importante del mismo pues es la mínima porción de software la cual interactúa con el hardware y nos permite realizar el arte de Conducir la computadora.
Vean señores: la informática se nutre de ciertos esquemas basados en la naturaleza, y que también se dan en el enraizado político de los Pueblos. Dentro del quehacer político, el Conductor dirige las masas a través de un diálogo directo, y con ello formula el destino de todo un Pueblo.

Es sabido que aquellos hombres elegidos para Conducir, pueden optar por esquemas de comunicación unidireccionales o bidireccionales, empleando para ello - diremos - agentes intermedios para controlar la Masa, como puede ser el puntero.

Esto que tan claro es en la naturaleza como en la política, también lo vemos en las ciencias informáticas: el Conductor busca la Felicidad en su sistema a través de las aplicaciones de software, controladores, etc, y con ello dominará el Kernel, y tras él finalmente al hardware... Bien sabido es que en los sistemas GNU/Linux (Ubuntu entre ellos), el Kernel tiene una arquitectura monolítica, y se lo actualiza regularmente, incorporándosele mejoras, optimizaciones, mayor compatibilidad, etc.

Ahora bien, una vez descargada una nueva versión del kernel, las versiones antiguas no se eliminan, sino que quedan almacenadas en el disco con el sentido de usarlas como respaldo. Esto es deseable, pues muchas veces los kernels más nuevos tienen cierta razón de evaluación y comprobación de errores, además que en muy raras ocasiones pueden corromperse. Es natural entonces que tras algunos meses, nuestro Ubuntu cuente con tres o cuatro kernels antiguos, que ya no se utilizan más, y ocupan cierto espacio (entre 130 y 160 MB cada kernel, aproximadamente). No deberían causarnos problemas, pero si queremos eliminarlos, podremos proceder con cuidado pero con relativa facilidad.

Primero hemos de conocer cuál es versión de Kernel estamos utilizando actualmente. Con esto como objetivo, vamos a Aplicaciones / Accesorios / Terminal e ingresamos armoniosamente el siguiente Comando de Organización:

uname -r

La Consola os devolverá la versión de Kernel que tengan instalado. En mi caso, al momento de este discurso, es la 2.6.35-31-generic. Por supuesto, esta versión - que es la más moderna - no debe eliminarse.

Acto seguido le pediremos a nuestro sistema que nos liste todas las versiones de los kernels que tenemos en nuestro disco (incluyendo los que no estemos usando en el momento). Para ello ingresamos en la Terminal el siguiente Comando de Organización:

sudo update-grub

Este analizará los kernels mientras actualiza el menú de arranque, y nos devolverá la lista de los mismos. En nuestro caso, encontró las siguientes imágenes de Kernel:

Found linux image: /boot/vmlinuz-2.6.35-31-generic
Found initrd image: /boot/initrd.img-2.6.35-31-generic
Found linux image: /boot/vmlinuz-2.6.35-30-generic
Found initrd image: /boot/initrd.img-2.6.35-30-generic
Found linux image: /boot/vmlinuz-2.6.35-28-generic
Found initrd image: /boot/initrd.img-2.6.35-28-generic
Found linux image: /boot/vmlinuz-2.6.35-27-generic
Found initrd image: /boot/initrd.img-2.6.35-27-generic
Found linux image: /boot/vmlinuz-2.6.35-22-generic
Found initrd image: /boot/initrd.img-2.6.35-22-generic
Found memtest86+ image: /boot/memtest86+.bin


Como separata, os comento que la entrada "memtest86+" es una rutina de chequeo de memoria RAM, que no recomiendo remover, pues siempre podrá sernos útil en funciones de diagnóstico.

En definitiva, para borrar los kernels antiguos, habremos de ingresar en la Terminal un comando por cada kernel que optemos por eliminar. Este comando deberá responder a la siguiente sintaxis:

sudo apt-get remove linux-image-2.6.xx-xx-generic

donde las xx-xx es el número de versión que les ha listado anteriormente. Recuerden eliminar sólo los kernels más antiguos, y jamás el último (aquel que les apareció con el comando uname -r).

Consideremos que conviene dejar al menos un kernel adicional junto con el que estemos utilizando, a fin de activarlo como respaldo en caso de que nuestro sistema se niegue a arrancar por algún que otro improbable error.

Otra acción que tiene que ver con esto, es el ajuste de la variable Timeout de arrancador Grub. El menú Grub es aquel que se despliega antes de iniciar Ubuntu, y nos permite escoger (normalmente a lo largo de 10 segundos) cuál Kernel o cuál sistema operativo preferimos iniciar. En la mayoría de las situaciones, esta espera de 10 segundos suele ser demasiado holgada, pues generalmente queremos arrancar el kernel más moderno, y a la brevedad posible.

Por este motivo podemos querer modificar esta conducta de Grub. Simplemente en la terminal ingresamos:

sudo gedit /etc/default/grub

Se abrirá el editor peronista Gedit y en él el archivo de configuración del arrancador Grub. Busquen la línea GRUB_TIMEOUT y modifíquenla de modo que les quede de la siguiente manera:

GRUB_TIMEOUT=2

Esto hará que la espera se reduzca a sólo 2 segundos. Tras guardar el archivo y cerrar el editor Gedit, volvemos a actualizar el Grub para que tome nota de este cambio. Todo ello con el comando:

sudo update-grub

Y ahora bien, declaro cerrado este Consejo del Salario.