Después de que migrase el site a WordPress, no había publicado este contenido que antes tenía en formato wiki. En este post intentaré detallar todos los pasos para la instalación y configuración de Linux en un Linksys NSLU2.
En primer lugar, es necesario seguir las instrucciones indicadas en el manual de usuario incluido en el paquete del NSLU2. Utilizando el CD de instalación, es posible configurar la red en este dispositivo. Este paso es necesario para posteriormente instalar Linux.
Instalación de Linux
Para la instalación de Linux, he seguido la guía disponible en NSLU2-Linux, tomando como referencia la instalación de la distribución DebianSlug.
Introducción
En primer lugar, es necesario descargar la distribución a instalar. La dirección de descarga es SlugOS Downloads. De esta página, he descargado el firmware DebianSlug-3.10-beta-firmware.zip.
Una vez descargado, mediante el interface web que ofrece el dispositivo, se actualizará el firmware con este nuevo. En este interface web, se le indicará la ruta al archivo, en este caso, “debianslug-3.10-beta.bin”. Se pulsará el botón de actualización y ya estará disponible este nuevo firmware.
A continuación, se procederá con los siguientes pasos.
Particionado del disco duro
Una vez reiniciado el dispositivo (con el disco duro conectado en el puerto 1), podremos acceder a éste mediante una conexión ssh. El usuario / contraseña a utilizar será: root / opeNSLUg.
La herramienta para el particionado es ‘fdisk’. Así, ejecutaremos el siguiente comando:
fdisk /dev/sda Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
Podemos ver una ayuda de los comandos disponibles ejecutando el comando ‘m’.
En el caso en que el disco duro tuviera alguna partición, la eliminaríamos mediante el comando ‘d’. Una vez eliminadas todas las particiones disponibles, seguiremos con la creación de las nuevas.
Aunque cada uno puede crear todas las particiones que considere oportuno, en mi caso y teniendo en cuenta la utilización que se dará al dispositivo, crearé únicamente tres:
- Partición swap, para el intercambio entre memoria y disco.
- Partición root (/), para el software.
- Partición home, para la información de los usuarios y de determinadas herramientas (como pudiera ser mldonkey / aMule).
En el ejemplo, el disco duro externo utilizado es de 250 Gb. (30401 cilindros).
Así, los comandos serán los siguientes:
fdisk /dev/sda
Command (m for help):n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-30401, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-30401, default 30401): +512M
Command (m for help):n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (64-30401, default 64): Using default value 64 Last cylinder or +size or +sizeM or +sizeK (64-30401, default 30401): +3G
Command (m for help):n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (3104-30401, default 3104): Using default value 3104 Last cylinder or +size or +sizeM or +sizeK (3104-30401, default 30401): Using default value 30401
Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): 82 Changed system type of partition 1 to 82 (Linux swap / Solaris)
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.m
Con esto, hemos creado tres particiones, de 512 Mb. para swap, 3 Gb. para root y el resto para home. Además, hemos cambiado el tipo de partición a ’swap’ para la partición primaria número 1.
Ahora, es necesario formatearlos (para las particiones de datos, utilizaremos ext3):
mkfs.ext3 /dev/sda2 mkfs.ext3 /dev/sda3 mkswap /dev/sda1 sync; sync; sync swapon /dev/sda1
Y montamos los sistemas de archivos:
mkdir /mnt/debinst
mount /dev/sda2 /mnt/debinst
mkdir /mnt/debinst/work
cd /mnt/debinst/work
Descarga de Debian “Sid” (unstable) Bootstrap
En mi caso, tengo un dispositivo que actúa de servidor DHCP, por lo que no me ha sido necesario realizar la configuración de red. Si no se tiene disponible ningún dispositivo que actúe de este modo, es necesario realizar estos pasos:
- Añadir una puerta de enlace (gateway) por defecto:
route add default gw aaa.bbb.ccc.ddd
- Añadir la configuración DNS (servidores DNS), editando el archivo /etc/resolv.conf y añadiendo:
nameserver eee.fff.ggg.hhh
Estando en el directorio /mnt/debinst/work, ejecutar el siguiente comando:
wget ftp://ftp.nl.debian.org/debian/pool/main/d/debootstrap/debootstrap-udeb_0.3.3_arm.udeb
Extraer el archivo udeb:
ar -x debootstrap-udeb_0.3.3_arm.udeb
tar xzvf data.tar.gz
Ejecutar debootstrap:
export DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap ./usr/sbin/debootstrap --arch arm sid /mnt/debinst http://ftp.debian.org/debian
o
./usr/sbin/debootstrap --arch arm sid /mnt/debinst http://ftp.nl.debian.org/debian
(en este paso, también sería posible utilizar http://ftp.es.debian.org/ en lugar de http://ftp.debian.org/) Este paso requiere de, dependiendo del tipo de conexión, al menos 50 minutos (se descargan bastantes paquetes).
NOTA: Este paso no estará realizado correctamente hasta que la última línea sea la siguiente:
I: Base system installed successfully.
Configuración final
A continuación copiamos algunos archivos importantes:
cd ..
cp /etc/resolv.conf etc/resolv.conf
cp /etc/hosts etc/hosts
cp /etc/hostname etc/hostname
mkdir -p etc/network
cp /etc/network/interfaces etc/network/interfaces
Copiamos los módulos del kernel a partir de la flash:
mkdir -p lib/modules cp -a /lib/modules/* lib/modules
Montamos el sistema de archivos ‘proc’:
mkdir /mnt/debinst/proc mount -t proc proc /mnt/debinst/proc
Ahora, hacemos ‘chroot’ al nuevo entorno para realizar los últimos pasos:
cd /
chroot /mnt/debinst
Configuramos el archivo /etc/fstab escribiendo: vi /etc/fstab, añadiendo el siguiente contenido:
proc /proc proc defaults 0 0 /dev/sda1 swap swap defaults 0 0 /dev/sda2 / ext3 defaults 1 1 /dev/sda3 /home ext3 defaults 1 1
Editamos el archivo /etc/inittab. Deshabilitamos las entradas de terminal tty[1-6] poniendo un carácter “#” al principio de la línea y añadimos la siguiente entrada:
S0:2345:respawn:/sbin/getty 115200 ttyS0
Añadimos el driver de la tarjeta de red explícitamente en el archivo “/etc/modules”, de forma que tengamos red después de reiniciar:
echo "ixp400_eth dev_max_count=1" >> /etc/modules
El sistema Debian actual no tiene fuentes de descarga de apt por lo que añadimos las siguientes en el archivo /etc/apt/sources.list:
deb http://ftp.debian.org/debian stable main non-free contrib deb http://ftp.es.debian.org/debian sid main contrib deb http://ftp.de.debian.org/debian unstable main non-free contrib
Actualizamos la distribución Debian e instalamos ciertos paquetes:
apt-get update apt-get -y dist-upgrade apt-get -y install anacron popularity-contest nslu2-utils
Ahora configuramos el paquete ‘passwd’, establecemos la contraseña al usuario ‘root’ e instalamos openssh-server:
dpkg-reconfigure passwd apt-get -y install openssh-server
Para evitar errores LC_ALL, LANG,…, instalamos el paquete ‘locales’:
apt-get install locales dpkg-reconfigure locales
Seleccionamos la zona horaria adecuada:
tzconfig
Finalmente, salimos del ‘chroot’ pulsando ^D (control-D).
Desmontamos los sistemas de ficheros:
umount /mnt/debinst/proc killall syslogd anacron umount /mnt/debinst
Configuramos como dispositivo de arranque el disco externo con Debian:
turnup disk /dev/sda2 -t ext3
Reiniciamos tecleando “reboot”.
Etiquetas: Debian, Linksys, NSLU2








5 de Mayo de 2007 a las 00:41
Estupenda guía. Llevo una buena ristra de documentos para tratar de instalar DebianSlug, y esta es la única que más o menos tira.
sólo un comentario. En la parte del mkfs.ext3 y mkswap, indicar que si mkfs.ext3 da algún error (aparecerá Killed), que ejecuten primero el mkswap y swapon
13 de Julio de 2007 a las 09:27
Bien hecho. Cuenta conmigo !
Salu2