Configurando elilo

ELILO (EFI Linux Loader) un cargador de arranque con soporte EFI para Linux. Es similar a el viejo LILO (Linux Loader). Ambos son utilizados por Slackware, generalmente LILO para la versión de 32 bits (x86) mientras que ELILO es usado por Slackware64 (x86_64). Aunque también se puede usar GRUB2 como una opción.

Por la red hay muy poca documentación para ELILO, sin embargo para su configuración en Slackware se puede consultar la documentación oficial para ciertas cosas muy específicas.

Casi toda la información, en sitios y blogs de la web, que me he encontrado buscando como configurar ELILO hacen referencia a que es prácticamente igual a configurar el viejo LILO. Sin embargo hay cosas que nadie dice y que podrían ser de ayuda.

Los siguientes ejemplos fueron hechos en dos laptops ASUS (X401A y S301L) con Windows 8 (por default) y Slackware Linux (por gusto). El archivo de configuración de ELILO de mi sistema se encuentra en:

/boot/efi/EFI/Slackware/elilo.conf

Hibernación

La hibernación se resuelve exactamente como en LILO o GRUB2, agregando la dirección de la partición swap a la que se guardará la sesión completa al hibernar el equipo y de donde se volverá a cargar una vez que no volvamos a iniciar. Esta partición debe tener como mínimo el espacio equivalente a la cantidad de memoria RAM que tenga el equipo. Así que para restaurar la sesión basta decirle al kernel de donde continuar, por lo que debemos abrir el archivo de configuración de elilo y buscar la línea append, solo hay que agregar (sin borrar) nada la opción resume=/dev/sda# donde sda# es nuestra partición de intercambio o swap.

append="quiet resume=/dev/sda5"

Primero debimos haber creado espacio de intercambio suficiente durante la instalación de Linux, sino se debe crear una partición con alguna herramienta de gestión de particiones, gdisk por ejemplo, o bien usar una herramienta externa como GParted y luego activar la swap en Slackware con mkswap y swapon.

Por otro lado, si ya hay espacio swap suficiente solo debemos localizarlo, yo por ejemplo ejecuté el comando cat en el archivo /etc/fstab y verifiqué que mi partición swap es /dev/sda5, como se muestra.

$ cat /etc/fstab 
/dev/sda5        swap             swap        defaults         0   0
/dev/sda6        /                ext4        defaults         1   1
/dev/sda7        /home            ext4        defaults         1   2
/dev/sda1        /boot/efi        vfat        defaults         1   0
/dev/sda4        /windows         ntfs-3g     fmask=111,dmask=000 1   0
#/dev/cdrom      /mnt/cdrom       auto        noauto,owner,ro,comment=x-gvfs-show 0   0
/dev/fd0         /mnt/floppy      auto        noauto,owner     0   0
devpts           /dev/pts         devpts      gid=5,mode=620   0   0
proc             /proc            proc        defaults         0   0
tmpfs            /dev/shm         tmpfs       defaults         0   0

Brillo

Para el caso de que el brillo de la pantalla no cambie bajo ninguna circunstancia, hay algunas opciones del kernel que se pueden configurar para solucionarlo. Tienen que ver con ACPI. En mi caso la solución fue agregar lo siguiente en la línea append:

append="... acpi_osi="

Dual boot

Cuando adquirí la laptop ésta traía Windows 8 instalado, sin embargo como buen linuxero hice una instalación de mi distro favorita: Slackware. Y pues como ocupo Windows por cuestiones de compatibilidad en mi trabajo y además no iba a tirar a la basura el sistema por el que me vi obligado a pagar una licencia al adquirir el equipo, pues lo conservé.

Slackware permite instalar ELILO durante la instalación como cargador de arranque de manera automática, antes había que hacer alguna configuración “a mano” sin embargo las cosas han mejorado un poco, ya que para agregar la opción de Slackware al menú de selección del sistema operativo solo hay que seguir las instrucciones del programa eliloconfig.

Elilo no es como grub, al iniciar no aparecerá un menú para seleccionar el sistema con el que se desea iniciar, simplemente cargará Slackware. Si lo que deseas es algo como grub pues instala grub. Para seleccionar entre sistemas operativos se debe usar el menú propio del sistema. Por ejemplo, en mi caso que uso laptops ASUS el menú para seleccionar el SO aparece al presionar la tecla ESC al encender el equipo, en las opciones de la pantalla puedo seleccionar Windows o Slackware. Si no presiono la tecla ESC el sistema arrancará con Slackware por default, como si fuera el único SO instalado. Esto es conveniente para mí pues son pocas las veces que inicio con Windows y además me gusta que se inicie Slackware sin ningún tipo de retraso.

eliloconfig

El programa /usr/sbin/eliloconfig es el que se ejecuta durante la instalación de Slackware Linux El sistema reconoce de manera automática si se debe instalar lilo o elilo dependiendo del hardware.

IMPORTANTE: Cuando se haga alguna actualización del kernel es necesario ejecutar este programa para tener una configuración correcta. Para hacerlo solo hay que ejecutar el comando (como root):

# eliloconfig

Aquí un ejemplo de como se ve el programa corriendo…

Instalando ELILO:
eliloconfig-01

Instalando una entrada en el menú:
eliloconfig-02

Quitar las entradas antiguas:
eliloconfig-03

Finalizando:
eliloconfig-04

Estas son algunas de las cosas que he ido descubriendo al paso del tiempo.

Saludos!

Como instalar un sistema operativo a un Raspberry Pi

En el año 2011 me compré un Raspberry Pi (por $35 USD), el proyecto estaba en sus inicios y tuve que mandar pedir la mía desde el Reino Unido, la intención era que llegara para mi cumpleaños pero tardó varios meses más en llegar. Hoy ya es posible conseguirlos en México en tiendas de electrónica.
Cuando finalmente la tuve empecé a jugar un poco con el sistema Linux preinstalado basado en Debian y llamado Raspbian, simplemente la usaba como una computadora más de vez en cuando, no tenía un propósito definido para mi Raspberry.
Hace poco me vi en la necesidad instalar un sistema operativo en una tarjeta SD para una Raspberry nueva. Como tengo un poco de experiencia instalando Linux desde dispositivos USB lo primero que se me ocurrió fue usar el comando dd. Y no andaba tan perdido pues es el método que recomiendan en el sitio oficial.
Así que descargué Raspbian desde el sitio oficial de Raspberry Pi y extraje el archivo comprimido ZIP para quedarme finalmente con un archivo IMG, inserté la tarjeta SD a mi laptop con Slackware y fue reconocida como /dev/mmcblk0p1. Este nombre se puede identificar usando el comando fdisk -l. En el terminal accedí hasta el directorio donde se encontraba el archivo IMG de Raspbian y ejecuté como usuario root:

umount /dev/mmcblk0p1 
dd bs=4M if=2014-09-09-wheezy-raspbian.img of=/dev/mmcblk0
sync

El comando dd termina exitosamente después de un rato, entonces ejecuté sync y extraje la tarjeta. Luego inserté la tarjeta SD en el Raspberry Pi y el sistema arrancó correctamente.
Enjoy!

Usando kbuildsycoca4 para personalizar KDE

Como saben, soy un usuario de Slackware con KDE ya que la mayoría de mi trabajo la hago con aplicaciones de escritorio y algunas pocas con algunas herramientas de línea de comandos. Uso KDE porque es muy práctico y porque sin necesidad de personalizarlo mucho, es agradable a la vista, cosa que no creo de otros entornos de escritorio como Xfce por ejemplo. La configuración de apariencia que hago a mi sistema no es muy detallada, y he visto muchos tutoriales por la web en donde KDE se personaliza a un nivel tan extremo que ni siquiera lo parece, por supuesto la configuración requiere de paquetes específicos y lleva cierto tiempo, sin mencionar que casi ningún tutorial se presenta para personalizar Slackware.

Pues bien hace poco decidí cambiar un poco la apariencia de mi escritorio KDE, puse dos paneles en el escritorio, uno arriba y otro abajo, ambos sin ocupar todo el ancho de la pantalla y con la opción de ocultarse después de cierto tiempo. En el de arriba puse un widget de Ahora suena, la bandeja del sistema, un reloj digital y un par de opciones para Salir de la sesión y Dormir el equipo. En el panel de abajo puse un Gestor de tareas de solo iconos, con lanzadores de los programas que más uso. Como actividad estoy usando una Vista de carpeta para poder usar iconos, directorios y archivos desde el escritorio. Como fondo puse un wallpaper con tema del espacio. También coloqué un widget de SuperKaramba llamado slighty 1.2 para monitorear el sistema, nunca me puede faltar. Como tema de escritorio usé Produkt y como tema de iconos instalé Mak-LionTaste desde las Preferencias del sistema > Apariencia de aplicaciones > Iconos > Instalar nuevos temas (botón).

iconos-nuevos

Me topé con el problema de que al cambiar los iconos, las carpetas y algunos menús contextuales conservaban los iconos del tema anterior. Cerrar sesión y volviendo a entrar no resolvía nada, ¡incluso ni reiniciar!

Así que buscando por la web encontré que esto se podía solucionar con kbuildsycoca4, el cual como parte de las herramientas de la línea de órdenes de KDE asegura el correcto funcionamiento de KDE leyendo en todos los archivos .desktop, .directory, .kimgio y .protocol para construir una base de datos binaria.

KDE accede a esta base de datos durante la operación para proporcionar información de configuración que un programa necesita para ejecutarse.

Esta herramienta es parte de ksyscoca, que se incluye como caché de la configuración del sistema de KDE.

Para reconstruir la caché de configuración del sistema y así solucionar el problema de los iconos basta hacer:

# kbuildsycoca4 --noincremental

La opción –noincremental inhabilita la actualización incremental, es decir, se van a releer todos los archivos del sistema.

Fuente: Manpages Ubuntu

syslogd e irq4/mei_me consumiendo el CPU después de suspensión

Hace tiempo que tenía este problema en mi laptop (Asus X401A), pasaba que al inciar Linux después de una suspensión, aparecían los procesos syslogd e irq4/mei_me consumiendo la totalidad del CPU entre los dos.

Mi sistema está configurado para suspenderse (en RAM) al cerrar la tapa de la laptop, al usar la combinación de teclas Fn+F2 o después de un cierto tiempo de inactividad, lo normal. Sin embargo al iniciar Linux después de la suspensión y pasar un tiempo trabajando normal, se notaba cierta lentitud en el sistema y el ventilador del equipo girando a tope unos minutos más tarde. Me di cuenta de que el problema eran los procesos syslogd e irq4/mei_me, pues tengo un widget de SuperKaramba en mi escritorio para monitorear el sistema y esos dos procesos aparecían comiéndose la totalidad del CPU. Además pude observar que el disco duro raíz (/) se llenaba poco a poco. Incluso una vez tuve que borrar algunos de los archivos del directorio /var/log/ pues un par de ellos llenaba la totalidad del disco duro y no podía iniciar las X (gráficos).

¿Qué causaba el problema?

Pues un par de módulos o controladores llamados mei y mei-me (más información en INTEL_MEI_ME y HECI) para hardware de Intel.
En complemento a su mal funcionamiento en mi sistema, syslogd empezaba a llenar de mensajes ciertos archivos que al ir creciendo terminaban llenando mi partición raíz, de 50 GB. Para saber como funciona syslogd y ver cuales son los archivos que hay que borrar, se debe consultar el archivo syslog.conf. El mío se encuentra en:

$ file /etc/syslog.conf
/etc/syslog.conf: ASCII text

Y su contenido es este:

$ cat /etc/syslog.conf
# /etc/syslog.conf
# For info about the format of this file, see "man syslog.conf"
# and /usr/doc/sysklogd/README.linux.  Note the '-' prefixing some
# of these entries;  this omits syncing the file after every logging.
# In the event of a crash, some log information might be lost, so
# if this is a concern to you then you might want to remove the '-'.
# Be advised this will cause a performation loss if you're using
# programs that do heavy logging.

# Uncomment this to see kernel messages on the console.
#kern.*                                                 /dev/console

# Log anything 'info' or higher, but lower than 'warn'.
# Exclude authpriv, cron, mail, and news.  These are logged elsewhere.
*.info;*.!warn;\
        authpriv.none;cron.none;mail.none;news.none     -/var/log/messages

# Log anything 'warn' or higher.
# Exclude authpriv, cron, mail, and news.  These are logged elsewhere.
*.warn;\
        authpriv.none;cron.none;mail.none;news.none     -/var/log/syslog

# Debugging information is logged here.
*.=debug                                                -/var/log/debug

# Private authentication message logging:
authpriv.*                                              -/var/log/secure

# Cron related logs:
cron.*                                                  -/var/log/cron

# Mail related logs:
mail.*                                                  -/var/log/maillog

# Emergency level messages go to all users:
*.emerg                                                 *

# This log is for news and uucp errors:
uucp,news.crit                                          -/var/log/spooler

# Uncomment these if you'd like INN to keep logs on everything.
# You won't need this if you don't run INN (the InterNetNews daemon).
#news.=crit                                     -/var/log/news/news.crit
#news.=err                                      -/var/log/news/news.err
#news.notice                                    -/var/log/news/news.notice

¿Cómo solucionarlo?

Lo primero que hacía era reiniciar el equipo, para evitar el sobrecalentamiento del mismo y la molestia de tener que usarlo con lentitud y ruido. Luego antes de iniciar las X borraba los archivos generados por syslogd para liberar espacio, por el contenido de syslog.conf se que los indicados son:

/var/log/messages
/var/log/syslog

Y todos los demás archivos en /var/log que aparezcan con la terminación *.1, *.2, etc.

Para localizar los controladores hice:

# locate mei
# ls -l /lib/modules/3.10.17/kernel/drivers/misc/mei | grep mei
-rw-r--r-- 1 root root 21018 oct 23 16:30 mei-me.ko
-rw-r--r-- 1 root root 77477 oct 23 16:30 mei.ko

Y luego de leer un poco por la web encontré algunos threads de Arch Linux (1, 2 y 3), donde leí que la solución podría ser poner los controladores mei en blacklist.

Así que creé un archivo de blacklist:

# vim /etc/modprobe.d/blacklist.conf

Y agregué las siguientes líneas:

blacklist mei
blacklist mei-me

INTEL_MEI_ME

Reincié el equipo y listo. Hasta ahora ya no he tenido ese problema de nuevo y puedo suspender a RAM mi laptop sin problemas.

Instalar y configurar GRUB2 en Slackware 14.0 (EFI)

En una publicación anterior he descrito como instalé Slackware en mi laptop con el asqueroso Windows 8 (hardware UEFI). En este proceso utilicé el GRUB de Ubuntu (por flojera) para decidir con cual sistema operativo iniciar, pero como casi no uso esta distro decidí buscar como instalar GRUB en Slackware y usarlo para este propósito, de esta manera sería independiente de Ubuntu.

Como usuario de Slackware estoy familiarizado con LILO y mi primera experiencia usando y configurando GRUB fue en los pocos días que usé Ubuntu, no es complicado pero tampoco es tan simple como con LILO a mi parecer. Pero en fin es a lo que me vi obligado con el nuevo hardware UEFI.

Mi desición más obvia con gusto sería dejar solo Slackware en el equipo, pero como tengo que sacar para la comida usando ArcGIS, Office, AutoCAD y demás cosas, decidí dejar el Windows 8 instalado en el equipo. Además pagué por la licencia cuando comp

Instalando GRUB2

La instalación de grub la hice de la siguiente manera: usé sbopkg para instalar todas las dependencias y luego instalé grub con el SlackBuild de la manera tradicional. Las dependencias quedaron con solo hacer:

# sbopkg -i "gnu-unifont os-prober locale-gettext help2man"

Y luego descargué el SlackBuild de grub y lo edité para agregar:

--with-platform=efi \

en la parte de ./configure.

Preparando todo

Para continuar seguí las instrucciones de instalación y configuración de grub publicadas en la documentación de Slackware aquí. Estas instrucciones son para instalar grub como cargador de arranque en hardware UEFI, que es precisamente lo que quiero hacer. Consisten básicamente en lo siguiente:

  • Instalar Grub2-efi en una memoria USB
  • Una vez que funcione el arranque desde la memoria USB instalar Grub2-efi en el disco duro
  • Modificar el menú de arranque UEFI

Instalar Grub2-efi en una memoria USB

Una vez instalado el paquete de grub en Slackware 14.0, hay que montar la memoria USB en el directorio /boot/efi (si es necesario hay que crearlo primero), luego ejecutar:

# mount /dev/sdb1 -t vfat /boot/efi (donde sdb1 es mi USB, se puede identificar con fdisk -l)
# modprobe dm-mod
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug
# mkdir -p /boot/grub/locale
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

Luego configurar grub.cfg haciendo:

# grub-mkconfig -o /boot/grub/grub.cfg

Este proceso debió haber creado un archivo en la memoria con la siguiente ruta:

/EFI/grub/grubx64.efi.

Instalar Grub2-efi en el disco duro

La partición efi, sda1 en mi caso, debe montarse en el disco duro (yo hice un directorio llamado ~/efi y la monté aquí para no desmontar la memoria USB todavía). La partición tendrá una estructura como esta:

/EFI/Boot/bootx64.efi

En la mía también hay /EFI/Microsoft/Boot y el archivo efi de arranque de Windows es bootmgr.efi. Elegí la manera segura que es crear un directorio llamado /EFI/Linux/ y copiar aquí el archivo llamado grubx64.EFI desde la memoria USB.

Modificar el menú de arranque UEFI

Modificar el menú de arranque nos permite conservar Windows 8. El primer paso es descargar efibootmgr desde http://linux.dell.com/efibootmgr/.

Descomprimirlo, entrar al directorio creado y ejecutar make:

# make

Copiar src/efibootmgr/efibootmgr en /usr/sbin y cambiar el propietario (con chown) a root.

# chown root /usr/bin/efibootmgr

Desmontar la memoria y montar la partición efi (la mia es sda1) del disco duro en /boot/efi:

# mount /dev/sda1 -t vfat /boot/efi 
# modprobe efivars
# efibootmgr -c -g -d /dev/sda -p 1 -w -L "Linux" -l '\EFI\Linux\grubx64.EFI' 

Al reinicar apareció e grub de Slackware y no el de Ubuntu.

Pequeño inconveniente

Resta decir que al parecer Ubuntu reemplazó el archivo EFI de Windows (bootmgr.efi) por el suyo por que cuando seleccioné la opción para iniciar Windows en el menú grub de Slackware, me apareció el menú de grub de Ubuntu. Sin embargo existe un respaldo llamado bkpbootmgfw.efi que es el arrancador EFI de Windows real. Para solucionar esto, primero encontré el UUID de la partición FAT32 donde se encuentra este archivo UEFI:

# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bkpbootmgfw.efi 
6C27-EC36
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bkpbootmgfw.efi 
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1

Y edité el archivo /etc/grub.d/40_custom para agregar:

menuentry "Microsoft Windows 8 x86_64 UEFI-GPT" {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 6C27-EC36
        chainloader /efi/Microsoft/Boot/bkpbootmgfw.efi
}

Finalmente actualizar el archivo /boot/grub/grub.cfg:

# grub-mkconfig -o /boot/grub/grub.cfg

Hibernación

Para habilitar el inicio desde hibernación edité el archivo /boot/grub/grub.cfg, colocando en la entrada del menú de Slackware:

linux /boot/vmlinuz... root=... resume=/dev/sda9 quiet ro

Donde sda9 es mi partición SWAP de 8 GB, el doble que la RAM. Todo funciona perfecto ahora.

¡Saludos!

Fuentes:

SlackBuilds.org
SlackDocs
Arch Wiki

Slackware: Continuar sesión después de hibernar el equipo usando GRUB

En mi equipo con Windows 8, Ubuntu 13.04 y Slackware 14.0, uso GRUB como gestor de arranque pues no he podido configurarlo para usar elilo, por ahora. Y es que elilo me gusta por que me parece muy sencillo de usar y muy similar al clásico LILO al que estoy acostumbrado en Slackware, pero que por desgracia no funciona con hardware basado en EFI (como mi laptop).

La mayor parte del tiempo que uso la computadora uso Slackware y hasta ahora solo he usado Ubuntu para configuración del arranque pues me resulta más fácil. Windows ha estado inactivo por un buen rato.

Pues bien como tengo Ubuntu el gestor de arranque que me instaló y me ha estado funcionando es GRUB… pero tenía un pequeño problema con él: no podía continuar una sesión al hibernar el equipo. Así cada vez que cerraba la tapa de la laptop y el equipo se ponía en hibernación (configurado desde el panel de KDE) al abrirlo de nuevo y seleccionar Slackware, este iniciaba una sesión nueva y no con la configuración anterior como es deseable.

Después de algunos días de búsqueda por la web encontré la solución, o parte de ella. Lo que tuve que hacer fue lo siguiente:

Iniciar Ubuntu y abrir el siguiente archivo:

sudo nano /etc/default/grub

Editar la siguiente línea para que quede así:

GRUB_CMDLINE_LINUX="resume=/dev/sda9"

Donde sda9 es mi partición swap que pensando en esto hice de 8GB desde un inicio, ya que la RAM de mi equipo es de 4GB.

Finalmente ejecuté en el terminal lo siguiente:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Este comando genera un nuevo archivo y reemplaza el que originalmente está en /boot. Lo abrí con un editor, busqué la entrada del menú para Ubuntu y la comparé con la de Slackware, encontré una línea interesante:

Para Ubuntu:

linux   /boot/vmlinuz-3.8.0-19-generic root=UUID=8dc436fa-d205-4c9e-987d-ad97753e6b62 ro resume=/dev/sda9  quiet splash $vt_handoff

Para Slackware:

linux /boot/vmlinuz root=/dev/sda10

Así que lo único que hice fue modicar la línea de Slackware para que quedara así:

linux /boot/vmlinuz root=/dev/sda10 resume=/dev/sda9 quiet

No es la gran ciencia y el cambio no es permanente pues al actualizar el archivo de nuevo esto se borrará, o al menos es lo que dicen en los foros.

Fuentes:


superuser.com

Portátil Nuevo: EFI, Windows 8, Ubuntu y Slackware

Por un lado contento de mi nueva portátil, una ASUS-X401A y por otro la pesadilla de todo un fin de semana. Esta nueva laptop que ahora tengo en mis manos me ha traído muchos problemas a la hora de querer instalar mi distribución de Linux favorita: Slackware 14.0.

Y no tanto el portátil como tal ha sido el causante de mis dolores de cabeza, sino el ya por muchos conocido EFI y el arranque controlado seguro del nuevo Windows 8 de Microsoft. Así que me he puesto a investigar acerca de EFI, UEFI y algunas cosas de como afecta esto al arranque en distribuciones de Linux.

Antes de comenzar a escribir la manera en la que instalé esta distribución quiero aclarar que Slackware es capaz de instalarse y correr en hardware basado en UEFI sin problemas desde hace algún tiempo.

Cabe señalar también que yo no había tenido experiencias con EFI, grub, elilo ni Ubuntu antes por lo tanto no esperes ver algo muy avanzado en esto.

Configurar el arranque e instalar Ubuntu

Lo primero que necesité fue tener otra distribución de Linux y decidí instalar y probar Ubuntu, así que instalé la versión 12.04 sin problemas (ya se que hay una nueva versión pero esto fue antes de que se liberara). Para instalar Ubuntu descargué la imagen ISO desde el sitio oficial y la metí a una memoria USB de 4G con Universal USB Installer, para la instalación en el equipo hace falta hacer ninguna maniobra especial, solo tuve que hacer que la maquina arranque desde la memoria USB en la que tenía instalado el sistema.

Para ello hay que entrar en la configuración del arranque y por lo menos en este modelo de portátil se entra de manera especial indicándole a Windows que uno desea reiniciar y configurar el arranque. Para ello hay que entrar a la Charm bar o barra de botones de acceso de Windows 8 (la que aparece al colocar el puntero del ratón en el lado derecho de la pantalla) e ir a Configuración luego a General y Configurar arranque.

El equipo se reiniciará y entraremos en la configuración del arranque. Ya estando aquí desactivamos el arranque seguro y el arranque rápido.

Elegimos iniciar desde la memoria USB y entraremos a Ubuntu, lo instalamos sin problema. Para ello hay muchas guias por la web y no pretendo hacer otra.

Problema de Arranque de Windows 8

Una vez instalado Ubuntu todo marchaba bien, al encender el equipo se mostraba la típica pantalla de GRUB en el que mostraban las siguientes opciones:

Ubuntu
Opciones avanzadas para Ubuntu
Windows Recovery Environment (loader) (en /dev/sda2)
Windows 8 (loader) (en /dev/sda4)
System setup

Al iniciar Ubuntu todo bien, pero al iniciar Windows 8 (en /dev/sda4) se mostraba en la pantalla el siguiente error:

error: no se encuentra la orden <drivemap>
error: invalid EFI file path.

Pulse una tecla para continuar...

Después de intentar algunas cosas sin éxito alguno y hacer una búsqueda por la web encontré la respuesta en el foro de Ubuntu-es. La solución es muy sencilla y sin complicaciones, solo basta con abrir un terminal y ejecutar:

# sudo su
# add-apt-repository ppa:yannubuntu/boot-repair
# apt-get update
# apt-get install -y boot-repair
# boot-repair

Una vez iniciada la aplicación pulsar en el botón “Recommended repair” ó “Reparación recomendada”. Terminado su trabajo, cerrar la aplicación y reiniciar:

# reboot

Esto agregará dos entradas más al menú de GRUB. Para entrar sin problema a Windows 8 yo selecciono la primera opción:

Windows UEFI bkpbootmgfw.efi
Windows Boot UEFI loader

Estas fueron unas horas más a las pocas de mi vida en la que he usado Ubuntu. Agregaré que me parece una distribución sin complicaciones y fácil de utilizar, tal vez hasta la deje instalada en mi equipo pues me gustó bastante que reconociera y funcionarán sin más el Touchpad del equipo y las funciones de la tecla “Fn”, cosas que en Slackware aún ando viendo como configurar bien. Ahora comprendo mejor porqué tiene tanta fama y mucha gente la prefiere.

Instalando Slackware

Para instalar Slackware 14.0 (64 bits) seguí la guia llamada Installing Slackware of UEFI-based hardware y decidí crear un medio de instalación con una memoria USB, en primera por que el equipo no cuenta con un lector de CD o DVD y en segunda por que me facilitaría crear una esquema de particiones tipo GPT (GUID Partition Table) para poner el bootader requerido (compatible con hardware UEFI).

En mi caso usé una memoria USB de 16G, en la que hice una partición de 50M para colocar el bootloader y los archivos necesarios (se explica más adelante) y el resto para colocar los archivos del ISO del DVD de Slackware, usando simplemente descomprimir y copiar. Precisamente para hacer todo este proceso instalé Ubuntu en la laptop. OK usando entonces Ubuntu hacemos lo siguiente:

Primero con fdisk identificar el disco duro del equipo y la memoria USB, en este caso sda resultó ser el disco duro y sdb la USB, todo como era de esperarse.

$ sudo su
# fdisk -l

Aparecerá un mensaje diciendo que fdisk no soporta GPT y que usemos GNU Parted.

AVISO: GPT (Tabla de partición GUID) detectado en '/dev/sda'! La utilidad fdisk no soporta GPT. Use GNU Parted.

Bien, lo importante sería algo como esto:

Disco /dev/sda: 500.1 GB, 500107862016 bytes
...
más cosas
...
Disco /dev/sdb: 15.6 GB, 15606349824 bytes
...

Bien ahora usamos gdisk para particionar la USB:

# gdisk /dev/sdb

Me apareció lo siguiente:

GPT fdisk (gdisk) version 0.8.5

Partition table scan:
..MBR: MBR only
..BSD: not present
..APM: not present
..GPT: not present

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
you don't want to convert your MBR partitions to GPT format!
***************************************************************

Warning! Secondary partition table overlaps the last partition by 33 blocks!
You will need to delete this partition or resize it in another utility.

Una vez que hemos leido la agradable bienvenida nos pedirá un comando, solo para estar seguros de lo que hacemos veremos la ayuda ingresando un signo de interrogación:

Command (? for help): ?

Bien esta es la ayuda:

b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

Ahora borraremos la partición de la memoria USB para crear otras dos, primero vemos la tabla de particiones existente.

Command (? for help): p
Disk /dev/sdb: 30481152 sectors, 14.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F50E7F58-6AD1-4CFB-9E7D-2A62CBFF20F4
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 30481118
Partitions will be aligned on 128-sector boundaries
Total free space is 8030 sectors (3.9 MiB)
Number  Start (sector)    End (sector)  Size       Code  Name
   1            8064        30481151   14.5 GiB    0700  Microsoft basic data

Ahora si borramos las particiones que existan, como solo hay una no nos preguntara cual y usará 1 por defecto:

Command (? for help): d
Using 1

Para crear una nueva partición usamos el comando “n”, damos [Enter] para aceptar el número de partición y el primer sector, luego escribimos “+50M” para crear una partición. Si deseas más espacio este es el número a modificar. Finalmente cuando nos pida un código colocamos ef00, esto es lo más importante. He aquí lo que yo hice:

Command (? for help): n
Partition number (1-128, default 1):
First sector (34-30481118, default = 128) or {+-}size{KMGTP}:
Last sector (128-30481118, default = 30481118) or {+-}size{KMGTP}: +50M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI System'

Creamos una nueva partición con todo el espacio restante, dando [Enter] a todo y al final colocamos el código 0700 para seleccionar ‘Microsoft basic data’.

Command (? for help): n
Partition number (2-128, default 2):
First sector (34-30481118, default = 102528) or {+-}size{KMGTP}:
Last sector (102528-30481118, default = 30481118) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700
Changed type of partition to 'Microsoft basic data'

Mi memoria USB quedó particionada así:

Number  Start (sector)    End (sector)  Size       Code  Name
   1             128          102527   50.0 MiB    EF00  EFI System
   2          102528        30481118   14.5 GiB    0700  Microsoft basic data

Ahora toca formatear las particiones creadas en la memoria USB con mkfs. La primera con código ef00 se formateará en FAT32 y se colocará en ella el bootloader elilo así como los archivos bzImage e initrd.img del kernel huge obtenidos directamente del DVD de instalación de Slackware. Esto se hace de la siguiente manera:

Primero formatear en FAT32 (obligatorio):

# mkfs.vfat -F32 /dev/sdb1

Montar la partición y crear los directorios apropiados:

# mount -t vfat /dev/sdb1 /home/ecoslacker/efi/
# cd efi/
# mkdir ./EFI
# mkdir EFI/BOOT

Yo decidí montar la partición en mi directorio personal por comodidad, sin embargo se puede hacer en cualquier lugar. Dejo las rutas completas esperando que sea de ayuda y suponiendo que sabrás como hacerlo en tu sistema.

Luego colocar elilo, bzImage e initrd.img:

# cp /home/ecoslacker/Descargas/elilo-3.14-all/elilo-3.14-x86_64.efi /home/ecoslacker/efi/EFI/BOOT/BOOTX64.EFI
# cp /media/ecoslacker/Data/slackware64-14.0-install-dvd/kernels/huge.s/bzImage /home/ecoslacker/efi/EFI/BOOT/
# cp /media/ecoslacker/Data/slackware64-14.0-install-dvd/isolinux/initrd.img /home/ecoslacker/efi/EFI/BOOT/

Hay que crear un archivo llamado elilo.conf en la partición de la memoria USB:

/home/ecoslacker/efi/EFI/BOOT/
nano elilo.conf

Y colocar el siguiente contenido:

prompt
timeout=50
default=install

image=bzImage
  label=install
  initrd=initrd.img
  append="load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s"

Una vez hecho esto dar formato de EXT3 a la otra partición de la memoria USB (/dev/sdb2 en mi caso) y copiar los archivos de la ISO del DVD de instalación de Slackware (descomprimir y copiar). Lo que más importa del formato de la partición es que sea reconocido por el kernel así que puede ser otro, yo elegí este formato y para ello usé GParted, que por cierto tardó un poco.

Reiniciar y bootear desde la memoria USB. Para ello usé la última opción del menú de GRUB (System setup), entré a la configuración y seleccioné la memoria USB para iniciar.

Veremos una pantalla familiar…

Ahora iniciar y cuando el instalador nos pida un medio de instalación seleccionamos la opción de usar una partición del sistema, en mi caso es /dev/sdb2 y luego pedirá un directorio, en el que hay que introducir slackware64. Con esto podemos hacer la instalación como normalmente la hacemos. Eso si hay que estar concientes de saltarse la instalación de LILO, pues no lo estaremos usando.

Una vez instalado Slackware restan un par de cosas por hacer antes de reiniciar. Hay que montar la partición local donde se encuentra la configuración de EFI y configurar el arranque de Slackware:

# mkdir /mnt/sda1
# mount -t vfat /dev/sda1 /mnt/sda1
# mkdir /mnt/sda1/EFI/slackware

Montar también la partición con la configuración EFI de la memoria USB que usamos para bootear Slackware, si es que no la hemos montado:

# mkdir /root/sdb1
# mount -t vfat /dev/sdb1 /root/sdb1

Copiar los archivos de la memoria a la partición local:

# cp /root/sdb1/EFI/BOOT/BOOTX64.EFI /mnt/sda1/EFI/slackware
# cp /root/sdb1/EFI/BOOT/bzimage /mnt/sda1/EFI/slackware
# cp /root/sdb1/EFI/BOOT/elilo.conf /mnt/sda1/EFI/slackware
# cp /root/sdb1/EFI/BOOT/initrd.img /mnt/sda1/EFI/slackware

Resta modificar el archivo elilo.conf…

# nano /mnt/sda1/EFI/slackware/elilo.conf

…para que contenga lo siguiente:

prompt
timeout=50
default=huge

image=bzImage
  label=huge
  read-only
  root=/dev/sda10

Al reiniciar, el sistema me seguía reconociendo GRUB en vez de elilo. Por pereza y falta de tiempo decidí dejar GRUB, así que para agregar la entrada de Slackware simplemente hice lo mismo que describí más arriba: entrar a Ubuntu y ejecutar boot-repair.

Ahora mi portátil tiene tres sistemas para iniciar: Windows 8, Ubuntu y Slackware, aunque lo que uso la mayoría del tiempo es Slackware obviamente.

¡Larga vida a Slackware!

Fuentes:

Installing Slackware of UEFI-based hardware
Ubuntu-es
elilo
Arch Wiki: UEFI
Gentoo Wiki: UEFI