Script de instalación para systemRescueCd en unidad usb

octubre 11, 2010 at 09:33 Deja un comentario

He aquí un script para instalar automáticamente un systemRescueCd en una unidad usb, está aún verde pero funciona.

Algunas consideraciones a tomar en cuenta:

  • La unidad usb usada en este ejemplo tiene un tamaño de 7.35G.
  • Dentro de dicha unidad se crean dos particiones, la primera es una unidad fat32 para poder ser vista desde cualquier sistema (por ejemplo windows) , la segunda partición es de tipo ext3 (puede usarse ext4 si se desea) y es booteable, es allí dónde residirá el systemRescueCd.
  • El tamaño de las particiones que se le pasan al comando sfdisk están en cilindros, esto debe ajustarse manualmente para su caso particular.


#!/bin/bash
#Copyright (c) 2010 Victor Castro Mattei
#All rights reserved.

#Redistribution and use in source and binary forms, with or without
#modification, are permitted provided that the following conditions
#are met:
#1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#3. Neither the name of copyright holders nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.

#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
#TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
#PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS
#BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#POSSIBILITY OF SUCH DAMAGE.

# Script para crear un System Rescue CD en una unidad usb
# utilizando el sistema de archivos FS_TYPE

# Variables
# Número de dispotivo para la unidad usb
DEVNUM_USB="/dev/sdb"

# Primera partición
DEVNUM_PART1="/dev/sdb1"
# Segunda partición
DEVNUM_PART2="/dev/sdb2"

# Punto de montaje para $DEVNUM_PART2
MOUNT_POINT="/media/usb"

# Etiqueta de la primera partición
LABEL1="amanita"
# Etiqueta de la segunda partición
LABEL2="ghost"

# Tipo de sistema de archivos a utilizar
FS_TYPE="ext3"

# Se asegura que el dispositivo no está montado
echo "Desmontando el dispositivo $DEVNUM_USB"
fuser -ck $DEVNUM_USB
umount -f $DEVNUM_USB


# Llenar la unidad usb de ceros
# MUY lento
echo "Borrando el dispositivo $DEVNUM_USB"
tr '00' '\377'< /dev/zero | dd bs=4096 | pv -s 8G |dd bs=4096 of=$DEVNUM_USB

# Crear una nueva tabla de particiones
# con dos particiones, la primera de tamaño cercano a los 7G (6.84G)
# y la segunda con un tamaño de unos 670M
# MUY lento
echo "Creando una nueva tabla de particiones"
sfdisk --no-reread $DEVNUM_USB -uC << EOF
0,929,77
929,,69,*
;
EOF


# Crear los sistemas de archivos
echo "Creando las particiones"
echo "Creando el sistema vfat en $DEVNUM_PART1"
mkfs.vfat -n $LABEL1 $DEVNUM_PART1

echo "Desmontando el dispositivo $DEVNUM_PART2"
fuser -ck $DEVNUM_PART2
umount -f $DEVNUM_PART2

# Crear la partición en dónde residirá el systemRescueCd de tipo $FS_TYPE
echo "Creando el sistema $FS_TYPE sin journaling en $DEVNUM_PART2"
mkfs.$FS_TYPE -L $LABEL2 -O ^has_journal $DEVNUM_PART2

# Copiar archivos del cd de systemRescueCd a la unidad usb
umount /media/cdrom
mount -t $FS_TYPE $DEVNUM_PART2 $MOUNT_POINT
mount -o loop,exec ./systemrescuecd-x86-1.6.1.iso /media/cdrom
cp -a /media/cdrom/* $MOUNT_POINT
umount /media/cdrom


# Crear la carpeta para el grub en $MOUNT_POINT
echo "Copiando el grub"
mkdir -p $MOUNT_POINT/boot/grub

# Copiar todo el contenido del grub existente (del host OS)
# a la carpeta recién creada
#cp -a /boot/grub/* $MOUNT_POINT/boot/grub

# Instalar el grub
#echo "Instalando el grub"
#grub-install --root-directory=$MOUNT_POINT $DEVNUM_USB

# Crear el menu.lst dentro del directorio grub en la unidad usb
#echo "Creando el menu.lst"
#echo "timeout 10

#title SystemRescueCD 32bit
#kernel (hd0,1)/isolinux/rescuecd
#initrd (hd0,1)/isolinux/initram.igz

#title SystemRescueCD 64bit
#kernel (hd0,1)/isolinux/rescue64
#initrd (hd0,1)/isolinux/initram.igz" > /media/usb/boot/grub/menu.lst

exit 0

La última parte del script que es la que se instala el gestor de arranque GRUB en la unidad usb está comentada porque no me funcionó de esa manera, lo que hice fue instalar el GRUB 1 (actualmente se usa GRUB 2) en la unidad usb desde un lenny virtualizado con qemu, para ello levanto el lenny con soporte para dispositivos usb y luego realizo las siguientes operaciones en consola:


grub
grub> find /boot/grub/menu.lst (verifica la ubicación correcta)
grub> root (hd0,1) (especificar adónde reside la partición)
grub> setup (hd0,1) (instalar el GRUB en la memoria usb)
grub> quit

Listo listo

setas
Enjoy!

Referencias:

Entry filed under: bash scripting, linux, programación, sistemas operativos, sysresccd. Tags: , .

Debian squeeze netinstall usando preseed desde una unidad usb Configurar un guru server plus como router

Dejáte un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Digo yo

Que dura está la vida

Dice Jhon Lennon

La vida es lo que pasa mientras haces planes

Digo yo

Dónde haya un computín esté dónde esté algo comenzará en cero

Acerca de Mi:


Hell-Out world!!

Dice Einstein

Dios no juega a los dados

Dice Niels Bohr

Einstein no le diga a Dios lo que tiene que hacer

Dice el Che:

Seamos realistas y hagamos lo imposible.

Dice Goethe:

Lo que no comprendemos no lo poseemos.

Digo yo:

Hay que tratar de travesear todo

Dice Oscar Wilde:

Cualquier hombre puede llegar a ser feliz con una mujer, con tal de que no la ame.

Digo yo:

De fijo dijo eso porque era homosexual.

Artículos

octubre 2010
L M X J V S D
« Sep   Oct »
 123
45678910
11121314151617
18192021222324
25262728293031

A %d blogueros les gusta esto: