Ubuntu 8.10 en Acer Aspire One
Hace algunos días hablabamos de los ultraportatiles (netbooks), más concretamente del Acer Aspire One, en sus dos modelos: 110 (disco SSD) y 150 (disco duro).
En este manual, vamos a ver como reemplazar el Linpus (linux basado en fedora que trae el AAO) por el nuevo Ubuntu 8.10 (Intrepid Ibex) que acaba de salir recientemente, en nuestro Acer Aspire One. Para adquirir Ubuntu, puedes descargarlo desde Get Ubuntu en formato de imagen ISO.
Ubuntu 8.10 en Aspire One
Podríamos utilizar una versión previa de Ubuntu, sin embargo, recomiendo la versión 8.10, por la versión del kernel de linux que trae. Acer Aspire One utiliza un lector de tarjetas JMicron con chipset jmb38x, el cuál comienza a incorporarse en el kernel de linux a partir de la versión 2.6.25. De hecho, si probamos un Ubuntu 8.04 o anterior, y hacemos un lspci, veremos lo siguiente:
…
04:00.0 System peripheral: JMicron Technologies, Inc. Unknown device 2382
04:00.2 SD Host controller: JMicron Technologies, Inc. Unknown device 2381
04:00.3 System peripheral: JMicron Technologies, Inc. Unknown device 2383
04:00.4 System peripheral: JMicron Technologies, Inc. Unknown device 2384
Sin embargo, con el nuevo Ubuntu 8.10, reconoce correctamente el lector de tarjetas integrado en el AAO:
…
04:00.0 System peripheral: JMicron Technologies, Inc. JMircon SD/MMC OHCI Host Controller
04:00.2 Generic system peripheral [0805]: JMicron Technologies, Inc. JMircon SD Host Controller
04:00.3 System peripheral: JMicron Technologies, Inc. JMircon MS Host Controller
04:00.4 System peripheral: JMicron Technologies, Inc. JMircon xD Host Controller
Una vez, descargado, o adquirido, nos encontramos con el primer problema. ¿Cómo instalamos el Ubuntu si no tiene lector de CDs? Vale, tenemos dos vías (en realidad hay más como el arranque en red vía PXE, pero estas son las más sencillas):
Instalar vía USB: Necesitaremos un pendrive (mínimo 1Gb) y descargarnos el unetbootin. Lo abrimos, marcamos imagen de disco ISO y seleccionamos el ubuntu que descargamos antes. Más abajo seleccionamos Unidad USB y la letra de la Unidad. Listo. Aceptar y esperar a que se genere un Ubuntu USB Live que nos servirá tanto para usarlo desde el pendrive, como para instalarlo posteriormente.
Instalar vía CD externo: El AAO permite arrancar desde un lector de CD externo. No todo el mundo tiene un lector externo de estos, pero lo que si suele ser más común es una caja o carcasa de disco duro (tiene que ser IDE). Basta con conectar el cable IDE y el conector Molex a la unidad de CD, y servirá perfectamente.
Sea cuál sea nuestra elección, arrancamos el ultraportátil, pulsamos F12 y seleccionamos el medio desde donde queremos arrancar.
Realizamos la instalación como en cualquier otro ordenador. Hay que tener en cuenta que debido a la baja velocidad de escritura del disco SSD del módelo 110, la instalación puede tardar un poco más de lo normal. En los comentarios Livez nos recomienda no crear partición swap en los portatiles de disco SSD, ya que perderá rendimiento al usar la swap como escritura.
Configuración de la tarjeta RJ45
La tarjeta de red por cable funciona perfectamente en Ubuntu 8.10, así que no necesitaremos hacer nada. En kernels anteriores, la tarjeta, una Realtek RTL8101E Fast Ethernet no era correctamente detectada con el driver r8169, por lo que había que eliminarlo y compilar y cargar el módulo r8101.
Actualmente, no tendremos ese problema si utilizamos Ubuntu 8.10. Eso si, tendremos que conectarnos por este medio, ya que posteriormente necesitaremos descargar algunos ficheros y realizar algunas operaciones de red.
Configuración de la tarjeta inalámbrica
El primer problema que tendremos, es que Ubuntu no incorpora los drivers para la tarjeta wireless. En linux existen dos formas para hacerla funcionar: utilizar ndiswrapper (vía fácil) o compilandolos nosotros mismos. Nos basaremos en el segundo caso, ya que el primero aunque es muy fácil de instalar, podemos perder funcionalidad y potencia (estamos emulando un driver de windows).
La tarjeta es una Atheros AR5006EG 802.11 b/g Wireless PCI Express, así que utilizaremos MadWifi (Multiband Atheros Driver for WIFI).
En este punto, podemos escribir sudo ifconfig | cut -d" " -f1 | sort | uniq y nos aparecerán las interfaces (tarjetas de red) disponibles en nuestro sistema. Deberían aparecer dos: lo que es el loopback (no es una tarjeta física), y eth0, que es la tarjeta de red por cable. Tras los siguientes pasos, aparecerán ath0 y wifi0, de la red inalámbrica.
sudo apt-get install build-essential linux-headers-$(uname -r)
Obviamente, necesitaremos los fuentes de nuestro kernel para compilar los drivers de red. Accedemos a MadWifi Snapshots y nos descargamos los drivers (en este momento, la versión del HAL 0.10.5.6), desempaquetamos y entramos en la carpeta para ejecutar unos scripts.
wget “http://snapshots.madwifi-project.org/madwifi-hal-0.10.5.6-current.tar.gz”
tar -xzvf madwifi-hal-0.10.5.6-current.tar.gz
cd madwifi-hal-0.10.5.6-r3861-20080903
cd scripts
./madwifi-unload
./find-madwifi-modules.sh $(uname -r)
cd ..
El primer script, madwifi-unload, se encargará de descargar los módulos que estén actualmente activos (si los hay), ya que sino no podrá modificarlos al compilarlos. El segundo, busca los modulos y los elimina. Volvemos a la carpeta anterior. ¡A compilar!
make && make install && modprobe ath_pci
Esto se pegará un ratito. Estaremos compilando los nuevos módulos e instalandolo en sus carpetas correspondientes.
Es conveniente que los usuarios no experimentados realicen por separado las operaciones; primero el make y luego, si no hay errores, el make install y de la misma manera finalmente el modprobe ath_pci; así, si ocurre un problema será más fácil detectarlo y subsanarlo dejando un comentario.
Hemos terminado. Con esto, al volver a hacer sudo ifconfig | cut -d" " -f1 | sort | uniq aparecerá ath0 y wifi0. Si no es así, no te preocupes, en mi caso necesité reiniciar el sistema para hacer efectivos los cambios.
Un detalle importante es que en el fichero /etc/default/linux-restricted-modules-common, habría que añadir el módulo ath_hal en el parámetro DISABLED_MODULES. Así evitaremos problemas de apagado de la wifi.
LED Wireless
Sin embargo, a pesar de que la conexión inalámbrica empezará a funcionar, el led wireless (zona inferior derecha) permanece apagado.
Con los siguientes comandos, utilizando sysctl (utilizado para configuraciones de /proc/ a nivel del kernel) podremos activarla (es recomendable añadirlas en /etc/rc.local):
sysctl -w dev.wifi0.ledpin=3
sysctl -w dev.wifi0.softled=1
Con esto conseguiremos que cuando haya tráfico de red vía conexión inalámbrica, el led parpadee. Lo añadiremos a /etc/sysctl.conf para hacer los cambios permanentes cada vez que reiniciemos. Quedaría incluir las siguientes lineas al principio del fichero /etc/rc.local (arranque de linux), que asocia el funcionamiento de la tecla-switch especial que está debajo del LED:
/usr/bin/setkeycodes e055 159
/usr/bin/setkeycodes e056 158
No estoy completamente seguro de que funcione para todos los casos, pero con el comando showcode, efectivamente, me detecta que los dos códigos que devuelve esa tecla son 158 y 159.
Administrador de conexiones
NetworkManager, el gestor de redes inalámbricas que trae por defecto de Ubuntu, en mi opinión da más problemas de los que resuelve. Puedo recomendar instalar con un apt-get install wicd o wifi-radar. Simples, pero muy funcionales.
Control de ventilador
Ubuntu 8.10 recién instalado no conoce bien las especificaciones del ventilador interno del Aspire One, por lo que está funcionando todo el tiempo. Esto no es un problema a la hora de la ventilación, pero sí que lo es a la hora del ruido y/o el uso constante del mismo.
apt-get install dmidecode
wget http://aceracpi.googlecode.com/svn/trunk/acer_ec/acer_ec.pl
wget http://electronpusher.org/~rachel/acerfand
chmod a+x acerfand
sudo cp acer_ec.pl acerfand /usr/local/bin/
Una vez más, editamos el fichero de arranque /etc/rc.local y añadimos al principio la siguiente linea:
/usr/local/bin/acerfand
Con esto conseguiremos que el control del ventilador se inicie siempre al arrancar el ultraportatil. Pero para mayor dominio crearemos un fichero /etc/acerfand.conf donde colocaremos las siguientes opciones:
INTERVAL=5
FANOFF=50
FANAUTO=55
Lo que significa que cada 5 segundos se comprueba la temperatura interna del portatil. Si supera los 55ºC se activará el ventilador. Si desciende de 50ºC entonces se desactivará. Al parecer, según Intel, los procesadores Atom pueden trabajar hasta los 99ºC.
Webcam
El Acer Aspire One posee una webcam integrada que funciona por USB 2.0 internamente. A pesar de la poca calidad (0.3 megapixels), la webcam tiene una velocidad estupenda y es genial para conferencias vía mensajería instantánea.
sudo apt-get install cheese
Para probarla, se puede utilizar cheese, una simple aplicación para utilizar la webcam que permite guardar imagenes, videos e incluso utilizar efectos gráficos on-the-fly (al vuelo).
También existen otros programas como luvcview u otros.
Apariencia visual
La apariencia lo es todo, y más si queremos presumir de un ultraportatil potente y vistoso. Accedemos al menú Sistema / Preferencias / Apariencia. En esta zona podemos seleccionar distintos aspectos del entorno gráfico.
En Art Gnome puedes encontrar todo tipo de decoraciones (wallpapers, bootlogins, splash screens...) para nuestro sistema Gnome. Por ejemplo, vamos a instalar el tema (borde de ventana) de Correcamins, que es tan fácil como descargarlo y arrastrar el fichero a la ventana tema que teníamos abierta desde antes.
Accedemos entonces a Personalizar... y seleccionamos el tema instalado o cualquiera que nos parezca de la amplia gama para seleccionar.
En el apartado Tipografías, recomiendo seleccionar Suavizado de subpíxel (LCD) para mejorar el renderizado de las fuentes.
Finalmente, y a gusto personal, se puede acceder al menú Efectos visuales y activar la opción Extra, lo que activará Compiz, un conjunto de efectos que convertirán las ventanas del escritorio en elementos más flexibles y visualmente agradables. Puedes ver algunos ejemplos de Compiz aquí.
Tarjeta gráfica
Nuestro Ubuntu 8.10 detectará perfectamente la tarjeta gráfica de nuestro AAO que es una Intel Mobile 945GM/GMS/GME, 943/940GML Express. La resolución recomendada es 1024x600, la que detecta por defecto nuestro sistema. No obstante, podemos hacer algunos retoques para tunear su funcionamiento. Editamos el fichero /etc/X11/xorg.conf y escribimos (en mi caso estaba vacío, si no es así, buscamos la sección y añadimos lo que falte):
Section "Device"
Identifier "Configured Video Device"
Option "MonitorLayout" "LVDS,VGA"
Option "Clone" "True"
Option "AccelMethod" "EXA"
Option "MigrationHeuristic" "greedy"
#VideoRam 229376
Option "CacheLines" "1980"
EndSection
Donde estaremos especificando distintos parámetros:
- Se define un monitor LVDS (propio del portátil) y otro VGA (salida externa a otro monitor).
- Clonación de monitores (proyectores, mon. externo) habilitada
- Método de aceleración EXA (reemplazando el antiguo XAA) con un parámetro heurístico voraz (es posible establecerlo a "always", "greedy" o "smart")
- Asignación de 224Mb de RAM a la tarjeta gráfica (con VideoRAM). Desactivado debido al comentario argumentado de Gonzalo. Comprobado con glxinfo, reduce el rendimiento.
- Rendimiento equilibrado entre el 2D y el 3D de la tarjeta con la opción CacheLines.
Otras fuentes especifican copiar el xorg.conf del Linpus, sin embargo, esta configuración da un mejor rendimiento, sobretodo con el Compiz activado.
Un añadido más, sería editar el fichero /etc/profile y añadir la línea:
INTEL_BATCH=1
Lo que aumentaría el rendimiento del compiz, facilmente comprobable con el glxgears.
Tarjeta de sonido
En Ubuntu 8.10, la tarjeta de sonido se reconoce automáticamente y no hay problema para utilizarla. No obstante, en los comentarios Cesar N. nos comenta algunos detalles para mejorar el soporte de audio (evitar perdidas al suspender, recuperar microfono, etc...).
Arranque del sistema
Por defecto, al arrancar Ubuntu. Cada elemento que se carga en el inicio lo hace secuencialmente, uno después de otro. Sin embargo, podemos obligar a hacerlo en paralelo, simultaneamente, editando el fichero /etc/init.d/rc y escribiendo:
CONCURRENCY=shell
8f6e58ee nos comenta que quizás pueden ocurrir algunos problemas con el HAL al modificar esta linea: bugs 149881. En ese caso, dejarlo por defecto.
Otro punto ideal, es eliminar los servicios o programas de arranque que no vamos a utilizar. El linpus es tan rápido porque apenas carga dispositivos (y los que carga son cuando los necesita). Para ello sería conveniente pulsar ALT+F2 y escribir services-admin.
Con ello podremos desactivar los servicios que no sean necesarios para nosotros, según nuestros requisitos. Para usuarios más avanzados, pueden hacer esto mismo de una forma más técnica. Eso sí, hay que tener cuidado con no desactivar algo que no se sepa lo que es:
sudo apt-get install rcconf
rcconf
Mejorar rendimiento del disco SSD
Uno de los principales problemas, como había comentado anteriormente y en el artículo de presentación del Acer Aspire One es que la velocidad de escritura es muy baja (6MB/s) en comparación con la de lectura (39MB/s). Por lo tanto hay que reducir al máximo los accesos de escritura al disco.
En el fichero /etc/fstab se gestionan las particiones del sistema. Debería aparecer algo similar a esto:
proc /proc proc defaults 0 0
UUID=.... / ext2 relatime, errors=remount-ro 0 1
UUID=.... none swap sw 0 0
Cada linea representa una partición del sistema. Por defecto, linux cuando accede a cualquier fichero, modifica la última fecha de acceso a ese fichero, podemos evitar esto modificando relatime por noatime, ahorrando mucha escritura y maximizando la velocidad y el rendimiento del SSD.
Otra buena idea, es crear varias unidades temporales en memoria RAM (RAMdisk) para lugares donde no se guarda información relevante y puede ser eliminada en cada reinicio (logs del sistema, temporales, etc...). Por ejemplo, añadir las siguientes lineas:
tmpfs /var/log tmpfs defaults,noatime 0 0
tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /var/tmp tmpfs defaults,noatime 0 0
Claro está, que como al reiniciar el portátil, estas carpetas no existen, hay que crearlas. Para ello, editamos el fichero /etc/rc.local y escribimos lo siguiente:
for dir in apparmor apt cups dist-upgrade fsck gdm installer news samba unattended-upgrades ; do
if [ ! -e /var/log/$dir ] ; then
mkdir /var/log/$dir
fi
done
Editando el fichero /boot/grub/menu.lst, encontraremos la lista de sistemas de nuestro portatil. Por defecto, al instalar, sólo aparece Ubuntu, Ubuntu recovery (un modo «a prueba de fallos») y un comprobador de memoria RAM. El primero tendrá el siguiente formato:
title Ubuntu 8.10, kernel ....
uuid ........
kernel /boot/vmlinuz-2.6... ro quiet splash
initrd ......
En el primer de ellos, que es el que iniciamos normalmente, vamos a la linea kernel y al final de ella (justo después de quiet splash) añadimos elevator=noop.
Esta opción, es un sistema de optimización para nuestros discos duros. Cuando necesita acceder a un disco, en lugar de saltar de un lado a otro (lo que dificulta y hace que baje el rendimiento) lo hará en plan ascensor, secuencialmente, organizando en una cola para no producir demasiado movimiento. 8f6e58ee nos comenta en los comentarios que lo ideal es usar esta característica sólo en discos SSD y no en discos duros tradicionales.
Un poco más arriba, encontraremos una linea que esta comentada, defoptions también podemos descomentarla y añadir el elevator=noop para que siempre utilice esta técnica.
En Ubuntu existe ScrollKeeper, un catalogador abierto de documentos que utiliza demasiado la escritura en el SSD cada vez que se instala algo. Para desactivarlo:
sudo mv /usr/bin/scrollkeeper-update /usr/bin/scrollkeeper-update.real
sudo ln -s /bin/true /usr/bin/scrollkeeper-update
sudo find /var/lib/scrollkeeper/ -name *.xml -type f -exec rm -f ’{}’ ;
sudo dpkg-divert —local —divert /usr/bin/scrollkeeper-update.real —add /usr/bin/scrollkeeper-update
Cacheando en Firefox
Una de las ventajas de Ubuntu, es que dispondremos del nuevo Firefox 3. Sin embargo, la carga puede ser lenta si no lo configuramos apropiadamente. Escribimos en la dirección about:config, aceptamos la advertencia y en el filtro ponemos browser.cache.
Con botón derecho, Nuevo / Cadena, escribimos browser.cache.disk.parent_directory que le asignamos la cadena /tmp/firefox. A partir de ahora el caché se guardará en esta carpeta, que anteriormente establecimos en un RAMdisk, mucho más rápido que el SSD. La navegación será más rápida.
También puede modificarse las preferencias browser.cache.disk.enable y browser.cache.disk.capacity para limitar el tamaño del caché del navegador.
Además, en el menú Editar / Preferencias / Seguridad, podemos deshabilitar (¡bajo nuestro riesgo!) las dos opciones de detectar sitios de ataques o engaño (phishing). Esto aligerará mucho nuestro navegador.
Ahorro de energía
En el wiki de Ubuntu para Aspire One, encontramos la recomendación de incluir en el /etc/rc.local las siguientes lineas para mejorar el ahorro de energía del ultraportatil:
sysctl -w vm.swappiness=1
sysctl -w vm.vfs_cache_pressure=50
Con esto, se produce un ahorro de energía con respecto al disco SSD.
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
cat /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate_max > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
echo 20 > /proc/sys/vm/dirty_ratio
echo 10 > /proc/sys/vm/dirty_background_ratio
echo 1 > /sys/devices/system/cpu/sched_smt_power_savings
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
echo 5 > /proc/sys/vm/laptop_mode
Estas lineas, hacen que el sistema según su necesidad de consumo de procesador, ajuste la velocidad del mismo entre 800MHz y 1600MHz, consumiendo menos energía cuando no estamos realizando ninguna tarea pesada, entre otras cosas.
[ -L /sys/bus/usb/devices/1-5/power/level ] && echo auto > /sys/bus/usb/devices/1-5/power/level
[ -L /sys/bus/usb/devices/5-5/power/level ] && echo auto > /sys/bus/usb/devices/5-5/power/level
Idem al anterior, pero con respecto al USB. Efectua un ahorro de energía cuando no se utiliza ningún dispositivo USB.
Lector de tarjetas
AAO tiene dos sistemas de lectura de tarjetas. El primero, el Storage Expansion, que permite insertar una tarjeta SDHC, ampliando la capacidad del disco duro. Este dispositivo se encuentra en /dev/mmcblk0 y es detectado automáticamente por Ubuntu.
Sin embargo, el segundo, un multi-lector de tarjetas, que se encuentra en /dev/mmcblk1 no se carga automáticamente al insertar una. Para ello, vamos a descargarnos un script del Linpus:
wget http://petaramesh.org/public/arc/projects/AcerOne_Ubuntu/jmb38x_d3e.sh
sudo chmod 754 jmb38x_d3e.sh
sudo mv jmb38x_d3e.sh /usr/local/sbin/
Ahora, sólo restará editar el fichero /usr/local/sbin/jmb38x_d3e.sh y cambiar la línea 11 por modprobe pciehp pciehp_force=1. Editamos el fichero /etc/rc.local y añadimos una linea: /usr/local/sbin/jmb38x_d3e.sh.
Esta característica funciona parcialmente, aunque yo he podido cargar perfectamente tarjetas SD en el multi-léctor, he tenido problemas para cargar tarjetas xD (faltan módulos xd_card y jmb38x_xd) o para que las reconozca automáticamente. También se dice que la suspensión puede dar conflictos con estas tarjetas si están insertadas.
Ultimos retoques y notas
También puedes instalar Ubuntu netbook remix, un sistema rápido y sencillo de accesos directos, optimizado para ultraportatiles, muy similar al que incorporaba Linpus. Puedes ver algunas capturas en Flickr sobre netbook remix.
Hay un sistema para construir una especie de caché de los ficheros utilizados al arranque, y así, reducir la velocidad del arranque del sistema operativo, utilizando readahead y creando un profile. Las instrucciones paso a paso puedes encontrarlas en optimizar arranque de ubuntu.
Si acostumbras a hacer un apt-get upgrade o actualizar tu sistema, recuerda que si actualizas la versión del kernel del Ubuntu, tendrás que volver a recompilar algunos drivers como el madwifi (volver a ejecutar el mantra de instalación make clean && make && make install), ya que lo que estamos haciendo en este artículo es preparar nuestro kernel para nuestro portatil. Si actualizamos al un nuevo kernel que no tiene soporte, tendremos que volver a añadirselo.