cd arrancable fácil de tu lfs

14
CD Arrancable Fácil de tu LFS VERSIÓN LFS: 3.3 AUTOR: Thomas Foecking <[email protected]> Christian Hesse <[email protected]> TRADUCTOR: Proyecto LFS-ES SINOPSIS: Cómo crear un CD Arrancable fácil de tu sistema LFS. RECETA: Versión 0.2c 27/04/2002 Índice -------- 1. ¿Qué necesitas y cuál es la idea? 2. Configura y compila el núcleo (kernel) 3. Mueve /dev /var /tmp /root /home a /falso/necesita_escritura 4. Crea enlaces simbólicos /... -> /falso/necesita_escritura/... 5. Crea un guión de arranque que monte el disco virtual en memoria (ramdisk) 6. Instala el Cargador de Arranque isolinux 7. Crea el disco virtual en memoria (ramdisk) inicial 8. Tuesta el CD Arrancable 9. Reinicia y disfruta 1. ¿Qué necesitas y cuál es la idea? ---------------------------------- ¿Qué necesitas? - El sistema LFS que quieres tostar en CD - Otro sistema linux/unix para crear alguna cosa y tostar el CD - El CD-R(W) para tostar tu sistema LFS y la imagen de arranque en CD - 1 CD-R + 1 CD-RW es muy recomendable para ahorrar dinero - sofware adicional: syslinux: (contiene isolinux para arrancar el núcleo del LFS en CD) http://freshmeat.net/redir/syslinux/10177/url_bz2/syslinux-1.67.tar.bz2 isoinfo: (opcional para detectar el CD LFS sin montarlo) http://www-tet.ee.tu-berlin.de/solyga/linux/isoinfo-0.03.01.tar.gz Antes de nada necesitas un LFS ejecutándose, que quieras tostar en CD. Puede que quieras tener un CD LFS para crear nuevos sistemas en

Upload: miltondega

Post on 11-Nov-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

CD Arrancable Fcil de tu LFS

CD Arrancable Fcil de tu LFS

VERSIN LFS:3.3

AUTOR:

Thomas Foecking

Christian Hesse

TRADUCTOR:Proyecto LFS-ES

SINOPSIS:

Cmo crear un CD Arrancable fcil de tu sistema LFS.

RECETA:

Versin 0.2c

27/04/2002

ndice

--------

1. Qu necesitas y cul es la idea?

2. Configura y compila el ncleo (kernel)

3. Mueve /dev /var /tmp /root /home a /falso/necesita_escritura

4. Crea enlaces simblicos /... -> /falso/necesita_escritura/...

5. Crea un guin de arranque que monte el disco virtual en memoria (ramdisk)

6. Instala el Cargador de Arranque isolinux

7. Crea el disco virtual en memoria (ramdisk) inicial

8. Tuesta el CD Arrancable

9. Reinicia y disfruta

1. Qu necesitas y cul es la idea?

----------------------------------

Qu necesitas?

- El sistema LFS que quieres tostar en CD

- Otro sistema linux/unix para crear alguna cosa y tostar el CD

- El CD-R(W) para tostar tu sistema LFS y la imagen de arranque en CD

- 1 CD-R + 1 CD-RW es muy recomendable para ahorrar dinero

- sofware adicional:

syslinux: (contiene isolinux para arrancar el ncleo del LFS en CD)

http://freshmeat.net/redir/syslinux/10177/url_bz2/syslinux-1.67.tar.bz2

isoinfo: (opcional para detectar el CD LFS sin montarlo)

http://www-tet.ee.tu-berlin.de/solyga/linux/isoinfo-0.03.01.tar.gz

Antes de nada necesitas un LFS ejecutndose, que quieras tostar en

CD. Puede que quieras tener un CD LFS para crear nuevos sistemas en

otras computadoras. Sean cual fuesen tus ideas, primero tendrs que

crear este sistema especial en tu particin LFS.

(Por ejemplo, he creado un sistema LFS con xfree86 y windowmaker;

ahora puedo arrancar desde el CD y crear un nuevo sistema LFS sin

olvidarme de xfree86 ni de windowmaker)

Cul es la idea?

- Crear el ncleo con soporte para disco virtual en memoria (ramdisk) e initrd

- Mueve /dev /var /tmp /root /home a /falso/necesita_escritura

- Haz los enlaces simblicos

/dev -> /falso/necesita_escritura/dev

/var -> /falso/necesita_escritura/var

/... -> /falso/necesita_escritura/...

- Monta /dev/ram0 en /falso/ramdisk

- Copia /falso/necesita_escritura/* a /falso/ramdisk/

- Monta de nuevo /dev/ram0 en /falso/necesita_escritura

Tendremos acceso de lectura-escritura en /dev /var /tmp /root /home

porque apuntan a /falso/necesita_escritura el cual es el disco virtual en

memoria (ramdisk)

Eres capaz de hacer la mayora de las cosas desde los otros sistemas

linux/unix ajustando LFS a tu punto de montaje de LFS. LFS=/path/to/lfs

Por ejemplo:

LFS=/mnt/lfs

No te olvides de ajustar de nuevo tu LFS cuando vaya a reiniciar!!

2. Configura y compila el ncleo

-----------------------------

Arranca tu sistema LFS o chroot en l.

--- opcional ---

Estamos justo aqu en nuestra primera instalacin de isoinfo que usars ms

tarde. Asumo que el paquete isoinfo-0.03.01.tar.gz est emplazado en /usr/src.

Salta este paso si ya tienes instalado cdrtools! Estas cdrtools tambin

contienen un programa llamado isoinfo que usaremos luego.

cd /usr/src

zcat isoinfo-0.03.01.tar.gz | tar x

cd isoinfo

./configure

sed "s/\/usr\/local\//\/usr\//g" Makefile > Makefile.new

mv Makefile.new Makefile

make

make install

--- fin de opcional ---

Bien, configuremos ahora tu ncleo:

cd /usr/src/linux

make mrproper && make menuconfig

Necesitas soporte para el disco virtual en memoria (ramdisk)!

"Block devices --->"

" RAM disk support"

"(4096) Default RAM disk size"

"[*] Initial RAM disk (initrd) support"

Necesitas soporte para el sistema de ficheros ISO 9660 CDROM!

"File systems --->"

" ISO 9660 CDROM file system support"

Deberas pensar tambin en construir algunos controladores en tu

ncleo o como mdulos, lo cual sera mucho mejor.

Si quieres ser capaz de arrancar el CD en muchos PCs con distintas

CPUs (por ejemplo 486, Pentium, PII, PIII, Athlon) tienes que com-

pilar tu ncleo para 486 (entonces se ejecuta en >= 486).

"Processor type and features --->"

"(486) Processor Family"

Guarda la configuracin y compila tu ncleo:

make dep && make bzImage && make modules && make modules_install

Entonces copia el nuevo ncleo construido a /boot:

cp arch/i386/boot/bzImage /boot/lfskernel && cp System.map /boot/

Ejecuta Lilo (o actualiza el cargador de arranque que utilices):

/sbin/lilo

Intenta arrancar el nuevo ncleo para probar el soporte del

disco virtual en memoria (ramdisk):

Si usas devfs debes cambiar: dev_ram=/dev/rd/0

dev_ram=/dev/ram0

mke2fs -m 0 $dev_ram

Si esto falla con

> The device apparently does not exist;

> did you specify it correctly?

t no tienes soporte de disco virtual en memoria en tu ncleo.

Deberas leer este captulo otra vez ;-)

Si no es as, has hecho muy bien tu trabajo!

Comprueba el tamao de tu disco virtual en memoria montndolo en

/mnt y haciendo un "df -h"

mount $dev_ram /mnt

df -h

Ahora puedes arrancar tu otro sistema linux/unix ...

3. Mueve /dev /var /tmp /root /home a /falso/necesita_escritura

------------------------------------------------------------

Movemos todo el conjunto con permisos de escritura a /falso/necesita_escritura.

Primero hemos de crear este directorio

y el punto de montaje para el disco virtual en memoria (ramdisk):

mkdir -p $LFS/falso/{necesita_escritura,ramdisk}

Entonces podemos moverlo all:

cd $LFS/

mv dev/ var/ tmp/ root/ home/ falso/necesita_escritura/

4. Creando enlaces simblicos /... -> /falso/necesita_escritura/...

----------------------------------------------------------------

Hemos movido /dev /var /tmp /root /home a /falso/necesita_escritura.

Ahora debemos ajustar los enlaces simblicos para que todo

parezca estar como antes.

cd $LFS/

ln -s falso/necesita_escritura/dev dev

ln -s falso/necesita_escritura/var var

ln -s falso/necesita_escritura/tmp tmp

ln -s falso/necesita_escritura/root root

ln -s falso/necesita_escritura/home home

"ls -l" dice:

dev -> falso/necesita_escritura/dev

home -> falso/necesita_escritura/home

root -> falso/necesita_escritura/root

tmp -> falso/necesita_escritura/tmp

var -> falso/necesita_escritura/var

Si tambin quieres ser capaz de cambiar los archivos de /etc en tu CD de

arranque, debes repetir el mismo procedimiento para /etc.

cd $LFS/

mv etc/ falso/necesita_escritura/

ln -s falso/necesita_escritura/etc etc

5. Crear el guin de arranque que monte el disco virtual en memoria (ramdisk)

--------------------------------------------------------------------------

Bien,tenemos /dev /var /tmp /root /home enlazado a

/falso/necesita_escritura el cual al principio es de slo-lectura.

Para ser capaces de registrarnos (y ejecutar servicios en los niveles de

ejecucin (runlevels) x los cuales necesitan permisos de escritura para

/dev /var /tmp /root o /home) debemos llamar a un guin desde nuestro di-

rectorio /etc/rc.d/init.d/ que cree un disco virtual en memoria para

/falso/necesita_escritura con permiso de escritura.

El siguiente guin crea un disco virtual en memoria en /falso/ramdisk y copiar

todo de /falso/necesita_escritura a /falso/ramdisk.

Entonces monta de nuevo el disco virtual en memoria a /falso/necesita_escritura.

cat > $LFS/etc/rc.d/init.d/create_ramdisk /dev/null 2>&1

evaluate_retval

sleep 1

echo -n "Montando el disco virtual en memoria en $dir_ramdisk ... "

mount -n $dev_ram $dir_ramdisk

evaluate_retval

sleep 1

echo -n "Copiando archivos al disco virtual en memoria ... "

cp -dpR $dir_needwrite/* $dir_ramdisk > /dev/null 2>&1

evaluate_retval

sleep 1

echo -n "Montando de nuevo el disco virtual en memoria en $dir_needwrite ... "

umount -n $dir_ramdisk > /dev/null 2>&1

sleep 1

mount -n $dev_ram $dir_needwrite

sleep 1

;;

*)

echo "Uso: $0 {start}"

exit 1

;;

esac

EOF

Hzlo ejecutable:

chmod 0755 $LFS/etc/rc.d/init.d/create_ramdisk

create_ramdisk debera ser el primer guin ejecutado por init,

as que ajustamos este enlace:

/etc/rc.d/rcsysinit.d/S00create_ramdisk -> ../init.d/create_ramdisk

cd $LFS/etc/rc.d/rcsysinit.d

ln -s ../init.d/create_ramdisk S00create_ramdisk

6. Instala el Cargador de Arranque isolinux

----------------------------------------

Tambin necesitamos un cargador de arranque en el CD para que arranque

el ncleo y el disco virtual en memoria (ramdisk). lilo y grub son buenos pero perfecto para

un CD es isolinux (viene con syslinux). Asumo que el paquete comprimido syslinux-1.67.tar.bz2

ya est emplazado en $LFS/usr/src.

cd $LFS/usr/src

bzcat syslinux-1.72.tar.bz2 | tar x

mkdir $LFS/isolinux

cp syslinux-1.72/isolinux.bin $LFS/isolinux/

Como todos los archivos asociados con el proceso de arranque tienen que

estar en un mismo directorio, tenemos que mover el ncleo y el resto de

/boot a /isolinux.

mv $LFS/boot/* $LFS/isolinux

Ahora creamos un enlace simblico de boot a isolinux.

cd $LFS/

rmdir boot

ln -s isolinux boot

El ncleo y Ca. pueden ser encontardos en /boot otra vez.

Pero isolinux todava necesita un fichero de configuracin,

por tanto lo crearemos ahora:

cat > $LFS/isolinux/isolinux.cfg $LFS/mnt/linuxrc > $LFS/mnt/linuxrc

cat >> $LFS/mnt/linuxrc /dev/null 2>&1

if [ $? -eq 0 ]; then

if [ -e "/dev/$ide_device" ]; then

CDROM_LIST="$CDROM_LIST /dev/$ide_device"

fi

fi

fi

done

done

for scsi_cdrom in /dev/scd[0-99]

do

if [ -e "$scsi_cdrom" ]; then

CDROM_LIST="$CDROM_LIST $scsi_cdrom"

fi

done

fi

#2. ahora intentamos encontrar el CD de arranque de LFS (usamos el ID como

#identificacin)

LFS_CDROM_DEVICE=""

echo "Usando $CHECK_TYPE"

for cdrom_device in $CDROM_LIST

do

echo -n "Probando $cdrom_device ... "

if [ "$CHECK_TYPE" = "try_mount" ]; then

mount -n -t iso9660 $cdrom_device $TMP_MOUNT > /dev/null 2>&1

media_found=$?

fi

if [ "$CHECK_TYPE" = "isoinfo" ]; then

isoinfo -d -i $cdrom_device > /dev/null 2>&1

media_found=$?

if [ $? -eq 2 ]; then

isoinfo -V $cdrom_device > /dev/null 2>&1

media_found=$?

fi

fi

if [ $media_found -eq 0 ]; then

echo -n "Encontado el medio"

if [ "$CHECK_TYPE" = "try_mount" ]; then

[ -e "$TMP_MOUNT/$ID" ]

media_lfs=$?

fi

if [ "$CHECK_TYPE" = "isoinfo" ]; then

isoinfo -d -i $cdrom_device | grep -i "Volume id:" | grep "$ID" \

> /dev/null 2>&1

media_lfs=$?

if [ $? -eq 2 ]; then

isoinfo -V $cdrom_device | grep "$ID" > /dev/null 2>&1

media_lfs=$?

fi

fi

if [ "$CHECK_TYPE" = "try_mount" ]; then

umount -n $cdrom_device > /dev/null 2>&1

fi

if [ $media_lfs -eq 0 ]; then

echo ", CD de arranque LFS encontrado. Listo!"

LFS_CDROM_DEVICE="$cdrom_device"

break;

else

echo ", ningn CD de arranque LFS."

fi

else

echo "ningn medio "

fi

done

#3. Monta el CD como / (root fs)

if [ "$LFS_CDROM_DEVICE" = "" ]; then

echo "Ningn CD de LFS encontrado!!!"

exit 1

else

echo "Arrancando desde $LFS_CDROM_DEVICE ..."

mount -n -o ro -t iso9660 $LFS_CDROM_DEVICE $TMP_MOUNT

cd $TMP_MOUNT

pivot_root . mnt

umount -n /mnt/proc >/dev/null 2>&1

exec chroot . sh -c 'umount -n /mnt >/dev/null 2>&1;\

exec -a init.new /sbin/init 3'\

dev/console 2>&1

fi

EOF

--------------------------------------

Para hacer que el guin se ejecute

chmod 0755 $LFS/mnt/linuxrc

Bien, de esto se trata. Desmonta la imagen y comprmela.

cd $LFS/

umount $LFS/mnt

gzip $LFS/boot/initrd

8. Tostar el CD de Arranque

------------------------

Si tienes un CD-RW tomaras este para probar. Cuando tu sistema

arranque bastante bien desde el CD puedes tostarlo en un CR-R.

(Te doy este aviso porque consegu este truco despus de tostar

aproximadamente 10 CD-Rs que no funcionaron ;-)

Antes de comenzar a tostar, comprueba el tamao de tu rbol LFS:

du -h $LFS/

Borra todo aquello que no necesites en un CD de Arranque. (por ejemplo /usr/src/*)

Dado que linuxrc debe ser capaz de identificar el CD tienes que crear un

archivo llamado "LFS_YYYYMMDD". (Pero slo si t no usas isoinfo)

touch $LFS/LFS_$(date +%Y%m%d)

Ahora tuesta el sistema LFS en el CD

Nota!

dev=0,0,0 es el nmero del dispositivo de tu grabadora de CD

Comprueba tus dispositivos SCSI con "cdrecord -scanbus"

speed=4 debera cambiarse a la (max) velocidad de tu grabadora de CD.

Si ests usando un CD-RW aade blank=fast al comando cdrecord!

cd $LFS/

mkisofs -R -l -L -D -b isolinux/isolinux.bin -c isolinux/boot.cat \

-no-emul-boot -boot-load-size 4 -boot-info-table -V "LFS_$(date +%Y%m%d)" \

$LFS | \

cdrecord -v -eject dev=0,0,0 speed=4 -

9. Reinicia y disfruta

-------------------

Reinicia y haz que tu Bios arranque desde CD.

Disfruta de los mensajes del ncleo y el smbolo de sistema del login ;-)

------------------------------------------------------------------

Si tienes algunas ideas, sugerencias o encotraste una errata,

envame un correo a:

Thomas Foecking

Christian Hesse

------------------------------------------------------------------