9.29.2010

Guía ArchLinux - Instalación en USB


Esta es la primera (de varias espero) guía sobre Arch. Si bien la documentación y las mismas guías de instalación (ver enlaces al final) son sumamente completas, creo que es bueno simplificar un poco las cosas haciendo un paso a paso fluido y directo. Claro que no habría gracia si simplemente enumerara unos cuantos pasos sacados de la wiki.
Lo que voy a explicar en esta guía es cómo instalar Arch en un pendrive usb y dejarlo booteable con algunos ajustes durante la instalación.



En mi caso estoy usando un flash o pendrive de 4Gbs, pero desde los 2Gbs puede alcanzar dependiendo principalmente de si se desea o no usar entorno gráfico y cual, además por supuesto de la cantidad y tipo de programas que vayamos instalando posteriormente.

Así que a instalar!

Como era de esperarse, lo primero que se necesita es el iso de la distro, la cual se puede conseguir de esta página o de esta, la edición core tiene todo lo necesario para tener un sistema base, la principal diferencia con la edición netinstall es que con esta última al instalar desde el internet, tendremos el sistema actualizado a la fecha. Personalmente recomiendo la edición core, ya que si fallara la conexión durante la instalación ya se imaginan que puede pasar; por eso prefiero tener todo lo necesario en el cd y posteriormente actualizar ya que ahí no importa si se cae la conexión, solo ejecutamos el comando de actualización nuevamente y continuará desde el paquete en que se quedó. 

Ahora, con el iso descargado existen tres opciones para elegir cómo instalar: la primera es grabando el iso a un cd; la segunda y más complicada es instalar nativamente desde un linux ya instalado; y la tercera es usar un emulador o virtualizador como qemu o virtualbox e instalar al usb desde ahí. Para la primera forma si ya están en linux pueden grabar rápidamente el iso desde un terminal con el comando:
wodim -v dev=/dev/dispositivo (ej. cdrw) speed=4 /ubicación/imagen.iso
Para la segunda opción, pueden visitar este enlace y les recomiendo leer bastante sobre el tema antes de empezar, si bien es un método un tanto complicado puede llegar a tener muchas ventajas según qué queramos hacer con nuestra instalación (nuestra propia distro basada en arch ¿?)

Y para la tercera opción, si ya tienen un virtualbox que les reconozca su usb como unidad de disco durante el inicio para poder instalar sobre ella, entonces úsenlo, de otra forma con qemu es mucho más sencillo pero con la desventaja que consume más recursos y por es más lento, sin embargo si se tiene un buen procesador (doble núcleo para arriba) es probable la demora no sea tanta como para que resulte molesta. Puede que usando un virtualizador se presente otros inconvenientes, pero eso queda fuera de esta guía, pueden dejar un comentario y con gusto les doy una mano. Con qemu el comando para iniciar con nuestro dispositivo (/dev/sdX) como disco esclavo y el iso como cdrom de arranque es el siguiente:
qemu -cdrom /ruta/a/la/imagen.iso -hdc /dev/sdb
Una vez hayamos iniciado nuestro disco de arch se nos presentará la pantalla de inicio.

Elegimos la primera opción y luego de un momento que se cargue el sistema tendremos un simple login, tecleamos root como nombre de usuario y presionamos enter.

Como nos indica el mensaje del shell al que acabamos de entrar, tenemos el comando km para ajustar la distribución del teclado y la fuente de la consola, así que escribimos ese comando y seleccionamos la distribución de teclado querty/es y de momento la fuente de la consola la dejamos como está presionando TAB para elejir el botón Skip y enter.

Ahora antes de iniciar la instalación, les comento un par de cosas. El sistema viene activado con 6 consolas virtuales (tty1-6) a las cuales se acede mediante ALT+Fn, siendo Fn las teclas de función F1-F6, y en la tty7 (ALT+F7) tenemos la salida del instalador que en este caso se llama ALF (Arch Linux Instaltion Framework) útil en caso de que algo no salga bien y queramos saber qué pasa. Y por último, el sistema en este punto ya es funcional y podemos hacer uso de todo el poder del shell para tareas como recuperación de otro sistema, se puede instalar programas mediante pacman, etc. En definitiva es una especia de "Livecd" pero a lo Arch "sencillo y liviano" ;)

Otra cosa que se puede preparar antes de la instalación es nuestro usb, el instalador usa cfdisk como particionador, pero si no se sienten a gusto y prefieren el clásico fdisk o cualquier otro como parted, se lo puede hacer ahora, para ello conectamos el usb, esperamos un momento y ejecutamos el siguiente comando para verificar que el dispositivo haya sido reconocido:
dmesg | grep sd

lo que nos saldrá algo como esto:
usbcore: registered new interface driver usb-storage
usb-storage: device found at 4
usb-storage: waiting for device to settle before scanning
USB Mass Storage support registered.
scsi 6:0:0:0: Direct-Access Generic STORAGE DEVICE 9407 PQ: 0 ANSI: 0
sd 6:0:0:0: [sdc] 3994624 512-byte hardware sectors (2045 MB)
sd 6:0:0:0: [sdc] Write Protect is off
sd 6:0:0:0: [sdc] Mode Sense: 03 00 00 00
sd 6:0:0:0: [sdc] Assuming drive cache: write through
sd 6:0:0:0: [sdc] 3994624 512-byte hardware sectors (2045 MB)
sd 6:0:0:0: [sdc] Write Protect is off
sd 6:0:0:0: [sdc] Mode Sense: 03 00 00 00
sd 6:0:0:0: [sdc] Assuming drive cache: write through
sdc: sdc1
sd 6:0:0:0: [sdc] Attached SCSI removable disk
sd 6:0:0:0: Attached scsi generic sg3 type 0
usb-storage: device scan complete
Ahora sabemos que nuestro usb es el dispositivo sdc y que tiene una partición sdc1 (linea en negrita). Como les dije antes, podemos particionarlo previamente y darle sistema de archivos si no nos gusta mucho hacerlo con cfdisk durante la instalación (como a mi :D ) Fdisk es un programa bastante sencillo e intuitivo, además de confiable y rápido. Iniciamos el programa indicándole el dispositivo a usar (no la partición!):
fdisk /dev/sdc
Voy a asumir que queremos dejarlo vacío y listo para instalarlo arch en toda su capacidad ;) Presionamos la tecla p para mostrar las particiones actuales ( en mi caso el dispositivo es sda):

Presionamos la tecla d (delete) para borrar las particiones, si tenemos una sola se elegirá automáticamente. Sino elegimos el número correspondiente hasta borrar todas. Ahora la dinámica para crear una partición es la siguiente: n (new) p (primaria) 1 (primera partición) enter (sector inicial) enter (sector final) t (tipo) 83 (Linux). Con esto creamos una partición de inicio a fin del espacio del dispositivo y de tipo Linux como sistema de archivos. Verificamos que la partición se creó y que no da error mediante p nuevamente. Nos falta escribir los datos al dispositivo para terminar, esto lo hacemos con w (write) y enter:

Lo siguiente y último para dejar listo el usb es darle el sistema de archivos, esto lo hacemos con el siguiente comando, donde -L es la etiqueta (label) que queremos darle al dispositivo y /dev/sda1 es la partición a la que queremos dar el sistema de archivos:
mkfs.ext3 -L Archbox /dev/sda1
Ext3 es una buena opción por ser un sistema journaled, lo cual nos da una seguridad extra al poder recuperarse de fallos en el sistema de archivos, si quieren estar más a la última pueden usar ext4 o algún otro pero tengan cuidado de qué eligen ya que no todos son recomendados o funcionan correctamente para el uso que le vamos a dar (linux en usb).


Ya estamos listos para iniciar la instalación. Ejecutamos el comando
/arch/setup 
para y se nos presentará la pantalla de bienvenida, le damos enter y llegamos al menú principal, estamos a 7 pasos de tener nuestro Arch!! :D

Seleccionamos la primera entrada donde eligiremos la fuente, es decir si vamos a instalar desde un CD o desde una red. De momento voy a usar la fuente de CD ya que llevaría mucho tiempo explicar usar la red (otra guía talvez?). Le damos enter en el cuadro de información que nos presenta y debemos estar en el menu principal con el segundo item elegido para configurar el reloj.

Entrando en este submenu debemos elegir la región en la que nos encontramos y la zona de tiempo de la misma (cuidad). Luego el segundo item del submenu es para configurar la hora y fecha del sistema, le damos enter y enter nuevamente en UTC para que se detecte automáticamente la hora/fecha. Comprobamos que sea así y le damos enter para regresar al submenu y enter para nuevamente para regresar al menu principal. 

Ahora entraremos al tercer item que es la preparación del disco duro.


En esta situación en la que vamos a instalar en una memoria usb, no es útil usar la opción de auto-preparado ya que esta creará diferentes particiones como /boot y /home además de un espacio de swap la cual no se recomienda para nada en este tipo de dispositivos ya que el acceso de lectura/escritura puede resultar excesivo resultando en daños físicos al dispositivo. Además como ya particionamos el disco anteriormente, no es necesario tampoco la segunda opción de crear las particiones manualmente. Elegimos por ende la tercera opción para configurar el dispositivo y los puntos de montaje.

Tendremos para elegir entre 3 modos de nombrado de dispositivos, dev, label y uuid. Recomiendo enormemente la última de uuid ya que tiene algo que nos interesa mucho en esta situación: el dispositivo adquirirá un uuid único sin importar que nombre obtenga en /dev cada vez que inicie el sistema en distintas máquinas; es decir, puede que en esta ocasión se haya generado como sdX, pero es muy probable que en otra máquina que ya tiene ocupado ese nombre le de al nuestro el de sdW, pero como está indicado por su uuid nunca habrá problemas por el nombrado en /dev. Así que elegimos uuid en el submenu. Luego nos dará a elegir el dispositivo que tiene o va a tener el sistema de archivos, seleccionamos la partición (sda1) y no el dispositivo entero, le damos enter y nos preguntará si deseamos que el sistema de archivos sea re-creado, podemos decir que sí para tener más seguridad de que el sistema de archivos está creado correctamente.


Acto seguido escogemos el sistema de archivos deseado; como les mencioné anteriormente es recomendado ext3 o ext4 por su capacidad de recuperación de fallos, los otros fs's no nos sirven para esta situación.

Luego nos pregunta que punto de montaje llevará esa partición, elegimos el punto de montaje raíz / y luego escribimos la etiqueta para la partición, por ejemplo archbox ;)


En el siguiente diálogo de opciones adicionales dejamos vacío. Al volver al submenu elegimos DONE y le damos enter.

Nos da la advertencia de que no hay una partición /boot dedicada ni tampoco swap, como no las necesitamos en este caso, elegimos ignore.

Ahora creará la tabla de particiones y el sistema de archivos...
Nos indica que ha terminado con éxito, damos ok y volveremos al submenu de preparación de discos. Elegimos la 5ta opción para volver al menu principal.

Ahora seleccionaremos los paquetes a instalar, primero nos permite elegir dos grupos de paquetes base y base-devel, recomiendo seleccionar base-devel también ya que nos ahorrará el trabajo de instalar posteriormente muchos paquetes que necesitaremos.

Luego nos presentará la lista con todos los paquetes que contienen los grupos anteriores, si sabemos lo que hacemos podemos de-seleccionar los que queramos, así como seleccionar algunos que nos pueden resultar útiles como: xz-utils, tzdata, sudo, hdparm y mkinitcpio.

Al darle en OK regresaremos al menu principal en la opción 5 listo para instalar los paquetes, elegimos esa opción, nos muestra un diálogo y luego de eso empezará a instalar los paquetes.  
Nota: en un par de ocaciones, la instalación empezó automáticamente, en otras tuve que poner Y enter para responder la pregunta que nos hace.

Esperamos un rato mientras instala los paquetes, podemos ir anotando ciertas recomendaciones de dependencias que nos muestra la salida:

Una vez terminando nos muestra una lista de paquetes, presionamos enter para continuar y el instalador generará las locales y en un momento estaremos de vuelta en el menú principal en la opción 6.

Luego de aceptar la opción 6, se nos pregunta qué editor de textos deseamos usar, nano para el nivel de edición que vamos a realizar es más que suficiente, además de ser bien sencillo de usar.

Ahora estamos en el submenu de la configuración de los diferentes archivos importantes para el sistema, una explicación detallada de cada uno de ellos se la puede encontrar aquí (inglés), la wiki en español todavía no incluye la descripción de estos archivos.
 
Los archivos no tienen que ser necesariamente configurados, el sistema funcionará correctamente así como vienen, pero generalmente hay una que otra cosa que es mejor ajustar desde el inicio. Aquí me concentraré en las modificaciones necesarias en lo que respecta a su inicio desde el usb, además de algunas cosas que podemos adelantar, para no tener que editar los archivos varias veces ;)

/etc/rc.conf:
Cambiamos lo siguiente:
LOCALE="en_US.UTF-8" por LOCALE="es_EC.UTF-8" o el código de su país.
HOSTNAME="nombre_de_la_máquina"
Si requerimos de una dirección de red estática, buscamos la línea donde dice eth0="dhcp"
INTERFACES=(eth0)
y cambiamos los datos en el formato que nos indica el mismo archivo. Luego, en la línea donde dice MODULES la dejamos de la siguiente manera:
MODULES=(fuse !snd_pcsp !net-pf-10 !pcspkr)
Esto deshabilita IPv6 y el beep del parlante del cpu.
Nos movemos hasta el final del archivo, hasta la línea DAEMONS e igualmente la dejamos así:
DAEMONS=(hal dbus sys-ng network @netfs crond alsa)
Para guardar los cambios presionamos CTRL+O seguido de enter y para salir del editor presionamos CTRL+X.

Ahora entramos en la edición de /etc/fstab donde solamente descomentamos las líneas de cdrom y dvd eliminando las almohadillas (#) de las dos líneas, guardamos y salimos.


El siguiente archivo es el mkinitcpio.conf, nos dirigimos hasta la línea de HOOKS y la dejamos de la siguiente manera:
HOOKS="base udev autodetect ide usb pata scsi sata filesystems keymap usbinput"
Los más importantes aquí son usb, keymap y usbinput. El primero es el que nos permitirá que el kernel haga una precarga con soporte usb (que es donde está el sistema), el segundo es el que nos da soporte para teclados que no son US y el último da soporte para teclados usb.

Y finalmente descomentamos la línea de COMPRESSION="gzip" para habilitar la compresión de la imagen del kernel. Guardamos y salimos.

Ahora entramos al archivo locale.gen y buscamos las líneas correspondientes a nuestro idioma, en mi caso es es_EC por lo que descomento sus dos líneas. Las locales en_US también es recomendable dejar por cuestiones de compatibilidad. Como era de esperarse, guardamos y salimos :)

Es el turno del archivo mirrorlist. El gestor de paquetes Pacman tiene un funcionamiento muy eficiente al poder manejar hasta 6 mirrors diferentes, hace una prueba para ver cual es el que le dio mejor respuesta y obtiene los paquetes de ahí. Entonces un día podemos tener mayor velocidad de los de Chile y al otro de los de Brasil por poner un ejemplo. Así que elegimos  hasta 6 mirrors y los descomentamos, pero casi como obligado el mirror Any.

Finalmente elegimos la opción Root-password e ingresamos la clave de root que deseemos y la confirmamos.

Elegimos la opción Done y el instalador reconstruirá las imágenes del inicio del kernel.

El último paso en el proceso de instalación será instalar el gestor de arranque, que en este caso será grub (ahora grub-legacy). Seleccionamos la opción y despues seleccionamos grub como gestor de arranque.


Nos dirá que primero verifiquemos la correcta configuración del archivo del grub (menu.lst), le damos ok y nos lo abrirá:

Como se ve en la imagen, la parte importante para modificar ahora será añadir la opción vga=773 esta opción determina la resolución de pantalla con la que se cargará el sistema, no tiene que ser la misma que la del entorno gráfico como veremos posteriormente. Para decirlo de otra manera, es la resolución con la que veremos la inicialización del sistema, como se trata de un arch portable, sería bueno dejarla en una resolución estándar (773 = 1024x768) la para compatibilidad como todos los monitores. Al inicio del archivo está la tabla de estos valores.

Al guardar y salir del archivo, nos mostrará una lista con los dispositivos reconocidos por el sistema. Debemos elegir en cual de ellos queremos instalar el grub, por supuesto en esta situación tiene que ser el mismo donde instalamos el sistema (sda en mi ejemplo, no la partición!):

Al cabo de un instante habrá acabado y estaremos nuevamente en el menú principal. Elegimos la opción 8 para salir de la instalación y volver al prompt. Ejecutamos el comando reboot y retiramos el disco si fuese necesario.

Al iniciar la máquina veremos el grub con las entradas de Arch:


Al terminar la carga del sistema veremos un login en modo texto, debemos escribir root como nombre de usuario y como clave la que hayamos escrito durante la instalación.

NOTA: talvez alcancen a ver que hay un par de archivos no encontrados o un par de advertencias, no se preocupen es porque todavía no hemos instalado algunos programas necesarios.

Felicidades!! Tenemos un flamante sistema ArchLinux instalado!


Para profundizar en el tema de la distribución Arch y algunos temas de insterés, les dejo esta lista de enlaces útiles:

- Guía oficial de instalación: ingles, español.
- ArchWiki: ingles, español.
- Algunos posts interesantes ;) enlace, enlace, enlace.

En las siguientes guías de Arch veremos como configurar una serie de cosas como el internet, usuarios, interfaz gráfica, entre otros, así que no se ausenten demasiado! :D


Enlaces a las guías de instalación:


Espero que sea de utilidad y no duden en comentar y compartir sus experiencias!

Saludos.