Problemas (y solución) para instalar GNU/Linux en una ACER Aspire 3
Los compas de Radio Tierra Campesina organizaron, hace unas semanas, una feria de instalación de software libre junto a la “Comunidad del Anillo” un grupo de reflexión en torno a las tecnologías libres de Mendoza, Argentina.
En todas las computadoras pudimos instalar diferentes distribuciones GNU/Linux: Debian 13, EterTICs y Ubuntu Mate. Excepto en una, que nos lo puso bien-bien difícil. Era una ACER Aspire 3 N19C1.
El problema
La computadora tenía Windows 10 instalado. Intentamos con diferentes distribuciones, pero no reconocía el disco duro SATA al instalar, solo aparecía el USB donde estaba el live.
Sacamos el disco duro, lo conectamos con una caja externa USB (carry disk) en otra computadora y logramos instalar el SO libre. Pero al conectar dentro de la computadora no lo reconocía.
Leyendo en diferentes foros sugerían cambiar la configuración del disco duro en la BIOS y pasar de la opción RAID a AHCI. Supuestamente, esa opción estaba en la pestaña Main de la BIOS pero para que aparezca hay que pulsar Control + S. Tras hacer este cambio, seguía sin reconocer el disco.

En otros foros, leímos que había que actualizar la BIOS, tenía la versión 1.20 de InsydeH2O y la última era la 1.27. Para eso tuvimos que instalar de nuevo Windows ya que ACER ofrece solo un archivo .exe para actualizarla 😛 De nada sirvió, pero no nos rendimos.
La solución
Por fin, en un foro, descubrimos que esa BIOS tiene un bug y con los sistemas GNU/Linux no reconoce el disco inicialmente. Para eso hay que suspender y cuando regresa ya aparece. Técnicamente: “Durante el arranque, el cargador puede ver el almacenamiento interno, pero no el ramdisk no por este bug”.
Volvimos a intentar la instalación, en esta ocasión con un live de Ubuntu Mate por si ayudaba algún controlador del firmware. No aparecía el disco. Cerramos la tapa, y la computadora se suspendió. Al volver abrirla, ya aparecía el disco duro para ser seleccionado e instalar el Sistema Operativo. Continuamos la instalación sin problemas, ¡un éxito! Sin embargo… al prender la computadora, nos decía que no existía disco duro ya que se mantenía el problema de ramdisk.
Tal como sugerían en el foro donde encontramos la información del bug, la solución es crear un script en bash que, al arrancar la computadora la ponga automáticamente en suspensión y luego la levante de nuevo. El foro era de Arch Linux, así que tuvimos que adaptarlo para arquitecturas basadas en debian/devuan.
Para ello, en la computadora con el SO GNU/Linux instalado, es necesario:
• arrancar de nuevo con el live;
• suspender y levantar de nuevo, cerrando la tapa funcionaría o desde el menú de apagado;
• montar el disco SATA (sudo mount /dev/sdb/ /media/nombre-distro/uuid-del-disco/);
• crear los scripts en el disco duro, los describimos a continuación.
Con este primer comando creamos un archivo editable, se abrirá el editor nano en nuestro caso, pueden sustituir por vim. Es importante situarse en el directorio del disco duro SATA en la termina, donde lo tengas montado
cd /media/nombre-distro/uuid-del-disco/etc
sudo nano initramfs-tools/hooks/suspend-to-ram
En el archivo que se abrirá en blanco, pegamos lo siguiente
#!/bin/sh
PREREQ=""
prereqs() { echo "$PREREQ"; }
case $1 in
prereqs) prereqs; exit 0 ;;
esac
. /usr/share/initramfs-tools/hook-functions
# This will be run during the initramfs creation
Le damos permisos de ejecución con el siguiente comando.
sudo chmod +x initramfs-tools/hooks/suspend-to-ram
Creamos otro archivo con el hook.
sudo nano initramfs-tools/scripts/init-premount/suspend-to-ram
Pega el siguiente texto en el nuevo archivo.
#!/bin/sh
FILE='/sys/class/rtc/rtc0/wakealarm'
if [ ! -e "$FILE" ]; then
echo "No wakealarm; skipping suspend-to-ram." >&2
exit 0
fi
EPOCH_TIME="$(date '+%s')"
echo 0 > "$FILE"
echo "$((EPOCH_TIME + 2))" > "$FILE"
echo mem > /sys/power/state
Otorga también permisos de ejecución al archivo:
sudo chmod +x initramfs-tools/scripts/init-premount/suspend-to-ram
Montamos también el sistema de archivos:
sudo mount --bind /dev /media/nombre-distro/uuid-del-disco/dev
sudo mount --bind /proc /media/nombre-distro/uuid-del-disco/proc
sudo mount --bind /sys /media/nombre-distro/uuid-del-disco/sys
Accedemos a la instalación y actualizamos el initramfs
sudo chroot /media/nombre-distro/uuid-del-disco/
sudo update-initramfs -u
No te preocupes si al hacerlo aparece el siguiente error:
update-initramfs is disabled since running on read-only media
Es porque los scripts de initramfs no se están ejecutando sobre el sistema real, sino sobre un entorno chroot temporal, pero se ejecutarán correctamente en el boot real, cuando el kernel haya montado los sistemas de archivos dev, proc y sys.
Ahora reinicia la computadora. Comprobarás que al iniciar, la computadora iniciar pero luego se suspende/apaga por dos segundos y vuelve a levantar. Si todo está correcto ya iniciaría tu sistema operativo GNU/Linux.
¡Otra computadora liberada!