lunes, 25 de mayo de 2009

Como hacer un memoria flash buteable con Syslinux

En este manual pretendemos hacer una memoria flash buteable, con el Gestor de Arranque (GDA) Syslinux. Primero haremos una breve referencia de que es Syslinux para que el usuario no se pierda al leer y luego explicaremos los pasos a seguir para que nuestra memoria arranque nuestro sistema operativo. En este articulo es valido decir que el sistema que vamos arrancar fue hecho con la herramienta buildroot, una aplicación para construir sistemas embebidos.

¿Que es Syslinux ?

SYSLINUX no se usa normalmente para arrancar instalaciones de Linux completas ya que Linux no suele instalarse en sistemas de archivos FAT. En cambio, se utiliza con frecuencia para discos flexibles de arranque o de rescate, LiveUSBs, u otros sistemas de arranque ligeros. ISOLINUX se utiliza generalmente para LiveCDs de Linux o CDs de arranque instalables.

Una complicación menor aparece en el arranque desde CD-ROM. El Torito (CD-ROM Standard) permite arrancar en dos modos diferentes;
modo de emulación floppy, donde la información del arranque es almacenada en un archivo de imagen de un disco flexible, que es cargado desde el CD, para luego comportarse como un disco virtual flexible. Este archivo de imagen es efectivamente un sistema de archivos FAT, por lo que SYSLINUX es el cargador de arranque necesario.
modo sin emulación, donde la información de arranque es almacenada directamente en el CD. En este modo se necesita ISOLINUX.

Sin embargo, tener la posibilidad de elegir es útil en ocasiones ya que ISOLINUX es vulnerable a errores de la BIOS, caso en el que es práctico poder arrancar utilizando SYSLINUX. Esto afecta sobre todo a ordenadores construidos aproximadamente antes de 1999, y, de hecho, para ordenadores modernos el modo sin emulación es generalmente el método más fiable.

PXELINUX

PXELINUX se utiliza en conjunción con una imagen adecuada para PXE en una tarjeta de red. El entorno PXE utiliza DHCP o BOOTP para habilitar una conexión TCP/IP básica, y luego descarga un programa de arranque por TFTP. Este programa de arranque carga y configura el kernel de acuerdo a directivas que son obtenidas también desde el servidor TFTP.
Típicamente, PXELINUX se usa para instalaciones de Linux desde un servidor de red central o para arrancar estaciones de trabajo sin disco.

EXTLINUX

EXTLINUX es usado normalmente como un cargador de arranque de propósito general, de forma similar a LILO o GRUB.
¿Como hacer nuestar memoria buteable ?
Para hacer nuestra memoria buteable es necesario saber cual es el sistema de archivos que tenemos instalado en ella, en este caso se utilizo extlinux por que nuestra memoria tiene como sistema de fichero ext2, explicaremos los pasos a seguir detalladamente para que el lector no se pierda.

#cfdisk /dev/sdb

marcar la memoria como buteable o iniciar marca de arranque en la partición donde queramos instalar el GDA.

#mkfs.ext2 /dev/sdb1

formatear ext2 .

#mount /dev/sdb1 /media/usb
#montar la flash
#mkdir /media/usb/boot
#mkdir /media/usb/boot/extlinux
#extlinux -zi /media/usb/boot/extlinux

este comando instala el GDA en el directorio extlinux, aqui se encuentra un archivo con toda la información de nuestra usb el archivo se llama extlinux.sys, para que este pueda arrancar nuestro kernel hace falta un archivo de configuración llamado extlinux.conf este es el encargado de llamar al kernel y el initrd veamos
nota: el archivo de configuración tiene que estar en el mismo directorio que que el archivo creado por extlinux extlinux.sys

#touch extlinux.conf
#nano extlinux.conf
DEFAULT Linux
LABEL Linux
KERNEL /boot/bzImage
APPED initrd=/boot/initramfs
TIMEOUT 100

ahora pasaremos a instalar el máster boot récord al inicio de nuestra usb

#cat /lib/extlinux/mbr.bin > /dev/sdb

listo si todo a esta en forma tenemos lista nuestra usb para ser arrancada por cualquier BIOS, a diferencia de GRUB Syslinux es mas fácil de usar.

miércoles, 13 de mayo de 2009

Como realizar una flash buteable con grub

La cuestión es sencilla en este manual vamos a explicar como hacer nuestra flash buteable para arrancar nuestro linux instalado en ella, lástima que windows no sea tan portable porque sino también lo instalaríamos. Ahora para que el lector no se pierda daremos una explicación de lo que es Master Boot Record (MBR) , los gestores de arranque en nuestro caso Grub y posteriormente los pasos para instalar Grub en nuestro dispositivo.

¿Que es el MBR ?

En la práctica, el MBR casi siempre se refiere al sector de arranque de 512 bytes, o el boot sector de una partición para ordenadores compatibles con IBM. Debido a la amplia implantación de ordenadores PC clónicos, este tipo de MBR se usa mucho, hasta el punto de ser incorporado en otros tipos de ordenador y en nuevos estándares multi-plataforma para el particionado y el arranque.
Algunas veces se emplea para el arranque del sistema operativo con bootstrap, otras veces es usado para almacenar una tabla de particiones y, en ocasiones, se usa sólo para identificar un dispositivo de disco individual, aunque en algunas máquinas esto último no se usa y es ignorado.
El MBR y el particionado de discos
Cuando un dispositivo de almacenamiento de datos se ha particionado con un esquema de tabla de particiones del MBR (por ejemplo el esquema convencional de particionado de IBM PC), el MBR contiene las entradas primarias en la tabla de particiones. Las entradas de particiones secundarias se almacenan en registros de particiones extendidas, etiquetas de disco BSD, y particiones de metadatos del Logical Disk Manager que son descritas por esas entradas de particiones primarias.
Por convención, hay exactamente cuatro entradas de particiones primarias en el esquema de la Tabla de Particiones, aunque en algunos sistemas (pocos) se ha extendido ese número a cinco u ocho.

Cuando un dispositivo de almacenamiento de datos se ha particionado con Tabla de Particiones GUID, el Master Boot Record no contiene la tabla de particiones (aunque contiene modelos de estructuras de datos, una protección del MBR frente a programas que sólo entienden el esquema de la Tabla de Particiones del MBR para que no creen particiones en el disco) y se usa poco debido a lo que puede afectar al particionado de disco.

¿Que es Grub?

En computación, el GRand Unified Bootloader (GRUB) es un gestor de arranque múltiple que se usa comúnmente para iniciar dos o más sistemas operativos instalados en un mismo ordenador.
Técnicamente, un gestor multiarranque es aquel que puede cargar cualquier archivo ejecutable y que contiene un archivo de cabecera multiarranque en los primeros 8 KB del archivo. Tal cabecera consiste en 32 bits de un número “mágico”, 32 de indicadores (flags), otros 32 de un número “mágico”, seguidos de información sobre la imagen ejecutable.
Una de las características más interesantes es que no es necesario instalar una partición nueva o un núcleo nuevo, pudiendo cambiar todos los parámetros en el arranque mediante la Consola de GRUB.
Mientras los gestores de arranque convencionales tienen una tabla de bloques en el disco duro, GRUB es capaz de examinar el sistema de archivos. Actualmente, soporta los siguientes sistemas de archivos:

ext2/ext3 usado por los sistemas UNIX y su variante GNU/Linux
ext4 en versiones de pruebas.
ReiserFS.
XFS de SGI (aunque puede provocar problemas).
UFS.
VFAT, como FAT16 y FAT32 usados por Windows 9.x
NTFS usado por los sistemas Windows NT (a partir de Windows NT v.3.51).
JFS de IBM.

HFS de Apple Inc.

Otros ejemplos de cargadores multiarranque son LILO y SYSLINUX.
GRUB soporta 14 colores de fondo, que normalmente es negro. Algunas distribuciones de sistemas operativos que incluyen GRUB frecuentemente utilizan fondos personalizados con el logotipo de dicha distribución. Los usuarios de GRUB pueden también hacer sus propios fondos.
Proceso de inicio de Grub
1.El BIOS busca un dispositivo de inicio (como el disco duro) y pasa el control al registro maestro de inicio (Master Boot Record, MBR, los primeros 512 bytes del disco duro).
2.El MBR contiene la fase 1 de GRUB. Como el MBR es pequeño (512 bytes), la fase 1 sólo carga la siguiente fase del GRUB (ubicado físicamente en cualquier parte del disco duro). La fase 1 puede cargar ya sea la fase 1.5 o directamente la 2
3.GRUB fase 1.5 está ubicada en los siguientes 30 kilobytes del disco duro. La fase 1.5 carga la fase 2.
4.GRUB fase 2 (cargada por las fases 1 o 1.5) recibe el control, y presenta al usuario el menú de inicio de GRUB.
5.GRUB carga el kernel seleccionado por el usuario en la memoria y le pasa el control.

Instalar Grub en nuestro dispositivo USB.

Para instalar grub en nuestro dispositivo flash, pendriver como le queramos llamar, tenemos que copiar el directorio boot para nuestro dispositivo.

#fdisk -l
Disco /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0xbee5bee5

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 1 122 979933+ 82 Linux swap / Solaris
/dev/sda2 * 123 2554 19535040 83 Linux
/dev/sda3 2555 4986 19535040 83 Linux
/dev/sda4 4987 19457 116238307+ 5 Extendida
/dev/sda5 4987 7418 19535008+ 83 Linux
/dev/sda6 7419 19457 96703236 83 Linux

Disco /dev/sdb: 512 MB, 512483328 bytes
64 heads, 32 sectors/track, 488 cylinders
Units = cilindros of 2048 * 512 = 1048576 bytes
Disk identifier: 0x00000000

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 * 1 488 499696 83 Linux

Nuestra flash se encuentra en /dev/sdb1, montamos la flash en una carpeta en /mnt que se llame flash.

#mkfs.ext# /dev/sdb1 (#=1 o 3)
#mkdir /mnt/flash
#mount /dev/sdb1 /mnt/flash/
#cd /
#cp -r boot /mnt/flash/

Dentro del directorio /boot/grub se encuentra todas las faces de grub para los diferentes sistemas de ficheros y particiones, estas fases son importantes ya que permiten completar el ciclo de transición de control que tenia MBR al grub. Ahora es cuando vamos a hacer buteable la flash con el gestor de arranque grub, es decir instalar grub en el dispositivo.
Simplemente tenemos que asociar nuestro dispositivo en este caso sdb#, a uno que reconozca grub como es hd#

#grub
Tiene que salir la shell de comandos de grub y ejecutamos lo siguiente:

>device (hd2) /dev/sdb
>root (hd2,0)
>setup (hd2)
>quit

Editar el menu.lst y poner los parámetros de arranque para su sistema
#nano /mnt/flash/boot/grub/menu.lst

title linux
kernel /boot/bzImage
initrd /boot/initramfs

#umount /dev/sdb1

Ahora explicare como fue que realizamos nuestra pequeña distribucion con buildroot
simplemetente marcamos los siguentes paquetes busybox, Bash , module-init-tool, nano , udev y grub , ejucutar make para que nuestro cross-compile compile nuestros paquetes si todo ha marchado bien nuestro sistema se encontrara en /buildroot/project_build_arch/arch/root/* copiar todo esto para nuestro dispositivo USB

#cp -r /buildroot/project_build_arch/arch/root/* /mnt/flash/

si marcamos copiar los binarios para nuestro target no es nesesario copiar la imagen del kernel que se encuentra en binaries si no tenemos que copiarla

#cp -r /builroot/binaries/arch/bzImage /mnt/flash/boot/
#cp -r /builroot/binaries/arch/rootfs.arch.cpio.gz /mnt/flash/boot/

despues ejecutamos

#grub

>device (hd2) /dev/sdb
>root (hd2,0)
>setup (hd2)
>quit

Editar el menu.lst o copiamos el de nuestro sistema y lo modificamos

#nano /mnt/flash/boot/grub/menu.lst

title linux
kernel /boot/bzImage
initrd /boot/initramfs

Si todo ha salido bien reinicie su pc y tienes una flash buteando por grub, es válido aclarar que grub fue realizado para disco, puede ser que los BIOS de algunas máquinas no reconozcan el MBR de la flash y no te dejen butear, o simplemente grub de error 21 cargando la fase 1,5. El gestor de arranque que se usa para las memorias flash es syslinux, posteriormente explicaremos en un artículo.