![]() |
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| Consejos y tutoriales Artículos útiles de nuestros usuarios. |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| octava-db 031008 (por defecto sucursal) | iBOT | Comunicados de prensa de Software - Noticias RSS | 0 | 03-12-2008 07:00 PM |
| octava-ann 1,0 (por defecto sucursal) | iBOT | Comunicados de prensa de Software - Noticias RSS | 0 | 03-10-2008 06:40 PM |
| Octava-FLTK 0.7.1 (rama por defecto) | iBOT | Comunicados de prensa de Software - Noticias RSS | 0 | 02-05-2008 12:10 AM |
| Octava 3.0.0 (rama por defecto) | iBOT | Comunicados de prensa de Software - Noticias RSS | 0 | 01-10-2008 06:40 PM |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
|||||
|
--- Mi octava óctuplo arranque portátil
Como he prometido en varios hilos, he aquí algunas notas sobre cómo instalar varios sistemas operativos en mi LAPTAP. Les voy a dar enlaces a las herramientas que he obtenido de varias terceras partes. Y voy a incluir el código fuente de algunos guiones que he escrito.
Introducción Hace unos meses la unidad de disco en mi Inspiron 8200 con fritas. He decidido personalizar con nuevos periféricos. Tengo un Seagate de 100 GB y una unidad grabadora de DVD. Unidad de 100 GB que se monta en un soporte. Es una gran cosa para montar la unidad en un soporte, pero eliminar un tornillo y el transportista puede ser retirado. He comprado una segunda compañía aérea y una segunda unidad de 100 GB. Esto me permite cambiar mi disco duro y para que pueda probar los experimentos con poco riesgo. No puedo eliminar una de mis pilas e instalar otra unidad en la ranura de la batería. Tengo una disquetera para instalar allí. Mi BIOS soporta el arranque desde cualquier dispositivo ATA para que pueda arrancar desde el disco duro, la unidad de CD / DVD o en el disquete. He decidido instalar tantos sistemas operativos como pude sobre la nueva configuración. El problema es que, excepto para Linux, todo requiere una partición primaria y sólo hay 4 particiones primarias. Si uno se utiliza como una cadena de particiones lógicas, que no deja a 3 del sistema operativo Linux. He decidido vivir con eso. Hay algunas soluciones extremas que no permiten más el sistema operativo Linux, pero son demasiado extremas. Quería NetBSD, Desktop BSD, Solaris 8 y además de lo que hice instalar. Pero esos 3 sistemas operativos no parece muy por valor de medidas extremas. Por lo tanto, con la herida:
Herramientas He utilizado varias herramientas de software para que me ayude con este proyecto. GRUB En primer lugar, necesitamos un buen gestor de arranque que la entiendo completamente. GRUB es realmente el único juego en la ciudad. Hay algunos productos muy potente gestor de arranque, pero sin acceso al código fuente, hay un límite a lo bien que ellos puedan entender. GRUB es realmente muy fácil de entender, pero se ha documentado poco. Hasta he entendido GRUB, diversos desastres prestados mi sistema que no arranca. En cada caso, pude finalmente encontrar exactamente lo que pasó. Realmente ya no es posible hacer que mi sistema no arranca. Disk Director / True Image Necesitaba un Partition Manager y he utilizado Partition Magic en el pasado. PowerQuest, pero vendió el producto a otra empresa y no parece estar bien apoyado ahora. Decidí intentar Acronis Disk Director, que es menos caro. No es perfecto, pero funcionó bastante bien. Yo también han comprado Acronis True Image. Una vez más no es perfecto, pero puede restaurar completamente el sistema a una nueva unidad de DVD de copia de seguridad. Usted puede crear un CD de arranque que tiene productos en el mismo. Esto permite que las copias de seguridad y restaura de un disco inactivo. Director disco viene con un editor de sector de la GUI que es posiblemente mejor que dskprobe. Asistente de disco / Seatools Seagate ha estas utilidades disponibles para su descarga desde su sitio. Se trata de CD de arranque del que puede realizar diagnósticos y escribir ceros en todo el disco entre otras tareas. Me gusta a cero una unidad antes de hacer una nueva instalación (9 horas para los de 100 GB). Y que puede hacer ensayos no destructivos en la unidad. Otros fabricantes tienen utilidades similares. Sistema de CD de Rescate Cuando yo tenía problemas en el transcurso del proyecto, esta es la herramienta que me sacó de los bosques. Básicamente es un "Live CD" con un montón de herramientas útiles disponibles. Sector de Inspector Esta es una línea de comando XP física basada en el sector de servicios públicos. Que puede hacer un montón de cosas que la GUI del sector basado en los editores no pueden hacer. Este es un programa de Microsoft y es gratis. grub Acronis Disk Director Suite 10.0 Acronis True Image 9.0 Inicio Asistente de disco Seatools SystemRescueCD sector de inspector Me he cambiado de dskprobe al Sector de Acronis Editor. Pero dskprobe es gratuito y viene en el paquete de herramientas de apoyo en el CD de instalación de XP. O puede descargar las herramientas de soporte aquí. dskprobe viene con un archivo llamado dskprtrb.doc doc que me pareció muy útil. Dskprobe también es autónomo, mientras que la utilidad del sector editor de Acronis es una sub-herramienta de Disk Director. Notas sobre la instalación de He aquí algunas notas sobre lo que hice para instalar el os'es. No sólo se reúnen una colección de sistemas operativos y saltar directamente a la masa de la instalación. Lo hice primero las instalaciones de prueba para adquirir experiencia con cada instalador. En todo caso, he utilizado la "costumbre" para maximizar las opciones de mi flexibilidad durante la instalación. Esto significa que tenía que entender cada instalador bastante bien. Recuerde que el Master Boot Record tiene una mesa para 4 entradas de partición. Windows XP He instalado XP en primer lugar en la primera partición primaria que he formateado con un sistema de archivos NTFS. He instalado la consola de recuperación y he añadido una opción para arrancar en modo seguro. Esto significa que el gestor de arranque NT presenta un menú no muy diferente el menú de GRUB. He creado un E: el que utiliza la partición FAT32. Esta es mi primera partición lógica. La segunda entrada en la tabla de particiones es consumido ahora en apoyo de mi cadena de particiones lógicas. Esta partición contiene los archivos de datos de Linux y montarlo como / driveE. Esto me permite mover archivos entre Linux y XP. En tiempo de arranque, el cargador de NT busca un archivo llamado Hiberfil.sys. Si se encuentra, que se carga en la memoria y la ejecución se reanuda. Así es como se ejecuta en modo de hibernación. Al despertar de la hibernación, es fundamental que nada ha cambiado desde que comenzó la hibernación. Desamarre de acoplamiento o incluso un ordenador portátil es suficiente es causar problemas. Voy a ser el arranque a través de grub y no puedo garantizar que otro SO no puede empezar. Puesto que soy el intercambio entre las particiones del sistema operativo esto sería una receta para el desastre. Así que me ha deshabilitado la hibernación. Cada uno de los otros procedimientos de instalación del sistema operativo está preparado para coexistir con un pre-existentes XP ejemplo, en la primera partición primaria. La mayoría de ellos se instale un gestor de arranque que puede arrancar XP o él mismo. Véase el "arranque a prueba de fallos" de artículo siguiente para ver por qué esto no es un problema. Linux Distros Solía LVM para cada distribución de Linux. Incluso / LVM es bajo, pero Linux no puede arrancar desde LVM, por lo que he creado un temporal / partición de arranque durante la instalación. RedHat Tomemos como ejemplo la mañana ... es la primera distro que he instalado. He copiado / boot a / mastergrub / RedHat. Luego me mudé / mastergrub / RedHat / grub a / mastergrub / grub. / mastergrub / RedHat / grub se convirtió en un enlace simbólico a / mastergrub / grub. Y / boot se convierte en un enlace simbólico a / mastergrub / RedHat. Cada distribución tiene su propio subdirectorio bajo / mastergrub y cada uno de estos subdirectorios es un enlace simbólico apuntando a grub / mastergrub / grub. Por lo tanto, todas las distribuciones de viento utilizando el mismo ejemplo de grub. Esa partición / boot es entonces descartado. He utilizado un / tmp y partición de la partición de intercambio putside de LVM. El área de swap es de 2 GB y / tmp es de 1 GB. Cada distribución Linux usa la misma partición. Así, en total, yo uso de 3 GB / tmp y de intercambio en lugar de 15 GB. Estoy en el proceso de modificar los scripts de arranque para la reconstrucción / tmp en el arranque. Esto significa que cualquier sistema operativo puede utilizar el canje o / tmp zona para cualquier propósito. También explica por qué / tmp ext2 en vez de ext3. No tiene sentido en un registro si reconstruir el sistema de archivos en cada arranque. RedHat es bastante antiguo y que está fuera de paso con las otras distribuciones. Pero yo todavía encuentro RedHat desplegado por las empresas a fin de que quería una versión en mi ordenador portátil. RedHat está utilizando la versión de LVM 1 y el uso de otras distribuciones de LVM versión 2. He elegido Fedora, e hizo un "vgscan - makenodes". Esto me dio para todos los ficheros de dispositivo de las otras distribuciones "volúmenes lógicos. No puedo montar las otras distribuciones cuando lo necesito. Voy a usar esto para desarrollar un archivo de copia de seguridad para el nivel de las distribuciones Linux. También he utilizado este para corregir un problema con scripts de arranque. Cada partición de Linux es una partición lógica. Esto incluye el Grub particiones LVM y particiones. Tengo un / UserData partición formateada como ext3 que todas las distribuciones Linux de montaje. Tengo un pequeño / home (en virtud de LVM) en cada distribución para que cada uno puede tener su propia seguridad de los archivos de inicio, etc, pero la mayoría de mis cosas irán en / UserData. De modo que cada distribución tiene su propia partición LVM. Pero entonces no hay intercambio, / tmp, / UserData, y / mastergrub (cada uno en una partición lógica) utilizado por todas las distribuciones en común. Y no hay / driveE que montar también. FreeBSD FreeBSD va en partición primaria 3. Solía Acronis para pre-asignar la partición antes de la instalación. FreeBSD talla la partición INTP piezas confusión que también llamadas particiones. En teoría, Grub puede arrancar directamente de FreeBSD, pero no podía conseguir que funcione. Así que tuve FreeBSD instalar su propio gestor de arranque en la partición, dejando solo el MBR. Entonces modificados grub.conf para chainloader en ella. Me gustaría obtener un trabajo directo de arranque Grub y deseo trabajar en este sentido. Por ahora, es lo suficientemente bueno. Solaris Tengo una partición primaria de la izquierda y que he instalado Solaris 10 en el mismo. Mucho como FreeBSD, Solaris talla hasta la partición. Utiliza "rebanadas" para describir las piezas. Una vez más, preallocated la partición antes de hacer la instalación. En el último momento me di cuenta de que Sun había una nueva versión de Solaris 10 en su sitio. Yo no suelen saltar instantáneamente a cada nueva versión, pero se había pasado de su propio gestor de arranque para el uso de grub. Así que he descargado la última de Solaris 10. Bueno, ninguno de mis versiones de GRUB puede leer las rebanadas Solaris ... Yo incluso descargar la última Grub de la página de Grub y sigue sin ir. Domingo debe tener modificados Grub. Se me permite cambiar a la versión de Sun en algún momento. Pero por ahora, mi Grub es chainloadering Sun Grub. Mi definitiva configuración de GRUB Con cada sistema operativo que utiliza Grub, tomé un vistazo a su grub.conf. Muchas veces he visto una nueva técnica, y, si me gustó, he añadido a mi bolsa de trucos. SuSE muy modificadas Grub y no pude encontrar mucha información sobre sus mods. Existen advertencias de que la SuSE mods presentó un problema de seguridad. Así que no voy a utilizar la versión de SuSE Grub. Pero incluso con SuSE, encontré algunas cosas para su uso. Mi grub.conf: Código:
# # This configuration file is maintained by a series of scripts that support the concept of this # partition being moved or copied. Statements like " r00t (xxxx) " where there is exactly one # space between the word "root" and the opening parenthesis will be replaced with a grub device # that corresponds to the current partition. Put extra spaces after "root" to protect a root entry # from this automatic replacement. default=1 timeout=60 color red/black black/green title Boot Octave from grub.conf on mastergrub root title 1) Windows XP Pro root (hd0,0) makeactive chainloader +1 title 2) RedHat root (hd0,6) kernel /Redhat/vmlinuz-2.4.18-14 ro root=/dev/RedHat00/LogVol00 hdb=ide-scsi initrd /Redhat/initrd-2.4.18-14.img title 3) Fedora Core root (hd0,6) kernel /Fedora/vmlinuz-2.6.15-1.2054_FC5 ro root=/dev/Fedora00/LogVol00 rhgb quiet initrd /Fedora/initrd-2.6.15-1.2054_FC5.img title 4) SuSE root (hd0,6) kernel /SuSE/vmlinuz root=/dev/SuSE00/lvol0 vga=0x31a resume=/dev/hda8 splash=silent showopts initrd /SuSE/initrd title 5) Debian root (hd0,6) kernel /Debian/vmlinuz-2.4.27-2-386 root=/dev/mapper/Debian00-lvol0 ro initrd /Debian/initrd.img-2.4.27-2-386 title 6) Scientific root (hd0,6) kernel /Scientific/vmlinuz-2.6.9-34.EL ro root=/dev/Scientific00/LogVol00 rhgb quiet initrd /Scientific/initrd-2.6.9-34.EL.img title 7) FreeBSD rootnoverify (hd0,2) makeactive chainloader +1 title 8) Solaris rootnoverify (hd0,3) makeactive chainloader +1 title ----UTILITIES---- root title ______reboot reboot title ______off halt title ______halt halt --no-apm title ______floppy chainloader (fd0)+1 |
|
|||||
|
Arranque a prueba de fallos
El / la mastergrub partición de grub software y los granos para cada distribución de Linux instalado. Grub etapa 1 se encuentra en el Master Boot Record (MBR), que es el primer sector del disco. Más a menudo que no, instalar cada sistema operativo se vuelva a escribir el MBR para que apunte a su propia copia del gestor de arranque grub o de otro tipo. Algunas veces yo violín todo el software en grub / mastergrub y romperla. Además de la instalación de la fase 1 de grub en el MBR, la fase 1 se puede instalar en el primer sector de la partición. Y, a continuación, algunos otros pueden chainloader gestor de arranque en él. Escribí mi propia instalación de scripts. Ellos son:
mbrinstall Este script simplemente instala grub etapa 1 en el MBR. localinstall Este script instala grub etapa 1 en el local. (/ mastergrub por ahora.) dd Luego se utiliza para obtener una copia del primer sector de la partición. Esto se pone en un archivo en el directorio / driveE sistema de ficheros. Recordemos que la / diveE es un sistema de archivos FAT32 utiliza para pasar archivos entre Linux y XP. Windows XP obtendrá el sector e incorporar en la secuencia de arranque XP. XP en mi archivo boot.ini es algo como: Código:
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Pro" /fastdetect /NoExecute=OptIn multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Pro (Safe Mode)" /fastdetect /NoExecute=OptIn /safeboot:minimal /sos /bootlog C:\bootsector.mastergrub="MasterGrub Menu" C:\CMDCONS\BOOTSECT.DAT="Microsoft Windows Recovery Console" /cmdcons floppyinstall Arrancar desde XP no funcionará si tengo dañado el software de grub / mastergrub. No tengo espacio en un disquete para los núcleos, pero nunca he roto mi núcleos. Yo fácilmente tener espacio en un disquete de arranque, incluyendo el archivo grub.conf. Este script crea una disquete. Entonces me puede arrancar el disquete de inicio y el sistema de esa manera. cdinstall ¿Qué pasa si estoy totalmente de perder / mastergrub? cdinstall crea un CD que es una copia de seguridad completa de / mastergrub. Además, se trata de un CD de arranque que puede arrancar alguna de las distribuciones sin usar / mastergrub en absoluto. Este script necesita un pedazo de Grub llamado stage2_eltorito que no se suministró con cualquier versión de Grub que tenía. Así que he descargado y compilado el código fuente de la página de Grub. /backupgrub y / testgrub En realidad todos estos scripts Benn han ampliado para apoyar / backupgrub. Esto es simplemente otra partición que es una copia de / mastergrub. De vez en cuando, utilizar rsync para copiar los archivos más. Entonces en cd / backupgrub y ejecute el script localinstall. Cuando uno de estos guiones se ejecuta, lo que las cifras que la partición se está ejecutando in grub.conf El archivo está ajustada para reflejar la actual partición (o en el caso de cdinstall, ajustada para arrancar desde cd). También creó un / testgrub partición de modo que me gustaría dejar de hacerlo peligrosos experimentos en una partición crítica. supermbrbackup Una serie de empresas de servicios públicos existen para la copia de seguridad y restaurar el MBR. Esto incluye el código de inicio y la tabla de particiones. La cosa es sin embargo, que de mi se describen en las particiones de arranque extensión registros dispersos en todo el territorio de mi disco. Quería una utilidad que se recrean todos mis particiones (vacío por supuesto) en un nuevo disco. Y mientras yo estaba en ella, tuve que los sectores de exploración en la parte no utilizada después de la MBR que es donde reside GRUB fase 1.5. Así que esta copia de seguridad de todo, excepto el contenido de las particiones. La copia de seguridad se escriben en un disquete junto con una secuencia de comandos para restaurarlos. Este script puede ser ejecutado después de arrancar el sistema de CD de Rescate. Mi intención era que este sería el primer paso de un metal desnudo restaurar. Pero resulta que yo no lo necesitan. Bare Metal Restaurar Esto es lo que pasaría si yo pierdo todo el disco duro. Este es el último en que yo pueda asegurar el arranque. Solía Acronis True Image para hacer una copia de seguridad completa de mi unidad. No apoya ni LVM Linux FreeBSD y Solaris rodajas. Pero que puede hacer un sector por sector de copia de seguridad de las particiones. Después de terminada la copia de seguridad, he sustituido mi unidad de disco duro y utilizado mi disco de arranque Seatools a cero a cabo (9 horas con un disco de 100 GB). Luego me arrancó de mi disco de arranque de Acronis y alimentados que la copia de seguridad de DVD's. Es mi recreado todo el sistema. He utilizado una utilidad de Seagate para escribir ceros a todo el disco antes de empezar. Esto significa que el LVM Linux y FreeBSD / Solaris particiones probablemente había un montón de sectores a cero en el espacio no utilizado. Esto ayuda a la compresión en la rutina de Acronis, sector por sector de copia de seguridad de hacer un buen trabajo. Todavía necesitamos un nivel de copia de seguridad de archivos para Linux / FreeBSD / Solaris. Voy a trabajar en eso. |
|
|||||
|
Aquí está el código fuente de las secuencias de comandos antes mencionados.
Código:
#! /bin/bash
#
# mbrinstall --- install grub from this partition on to the MBR of the
# current disk. When the BIOS subsequently boots this disk, it will run
# grub from this partition.
if [[ $(pwd) != */scripts || $0 != ./* ]] ; then
echo error you must cd to the scripts directory and invoke this script with "./name"
exit 1
fi
#
# Extract device file name and mount point from the output of "df" command
set $(df -k . | awk 'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}
#
# Build grub style device name
devicefile=$(df -k . | awk 'NR == 2 { print $1}')
string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
hda) grubdrive="hd0" ;;
hdb) grubdrive="hd1" ;;
hdc) grubdrive="hd2" ;;
hdd) grubdrive="hd3" ;;
*)
echo localinstall cannot handle device $drive
exit 1
;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice
#
# rewrite grub.conf to reflect the local partition
cp ../grub/grub.conf ../grub/grub.conf.old
sed < ../grub/grub.conf.old > ../grub/grub.conf \
's/.*root (.*/ root '${grubdevice}'/
s/.*title Boot Octave from.*/ title Boot Octave from '${name}'/'
#
# Use grub to install itself on the drive
set -x
${mountpoint}/bin/grub --batch --verbose --device-map=${mountpoint}/grub/device.map << End
root $grubdevice
setup (${grubdrive})
End
set +x
exit 0
Código:
#! /bin/bash
#
# localinstall -- install grub in the first sector of the current partition.
# This will make the current partition bootable.
dir=$(pwd)
if [[ $dir != */scripts || $0 != ./* ]] ; then
echo error you must cd to the scripts directory and invoke this script with "./name"
exit 1
fi
exit 0
#
# Extract device file name and mount point from the output of "df" command
set $(df -k . | awk 'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}
#
# Build grub style device name
string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
hda) grubdrive="hd0" ;;
hdb) grubdrive="hd1" ;;
hdc) grubdrive="hd2" ;;
hdd) grubdrive="hd3" ;;
*)
echo localinstall cannot handle device $drive
exit 1
;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice
#
# rewrite grub.conf to reflect the local partition
cp ../grub/grub.conf ../grub/grub.conf.old
sed < ../grub/grub.conf.old > ../grub/grub.conf \
's/.*root (.*/ root '${grubdevice}'/
s/.*title Boot Octave from.*/ title Boot Octave from '${name}'/'
set -x
#
# We are going to write on the raw device so
# make sure that the filesystem does not also
# do any writing.
mount -o remount -o ro $mountpoint
sync
#
# Use grub to install itself on the device
${mountpoint}/bin/grub --batch --verbose --device-map=${mountpoint}/grub/device.map << End
root $grubdevice
setup $grubdevice
End
#
# Now we need a new copy of bootsector to give to XP
[[ ! -d /driveE/bootsectors ]] && mkdir /driveE/bootsectors
dd if=${fulldevice} bs=512 count=1 of=/driveE/bootsectors/bootsector.$name
set +x
#
# Restore read-write access to mountpoint
mount -o remount -o rw $mountpoint
exit 0
Código:
#! /bin/bash
#
# floppyinstall -- install the grub software including the configuration file
# from this partition on to a floppy. This will create a bootable floppy that
# will boot the kernels from this partition.
#
if [[ $(pwd) != */scripts || $0 != ./* ]] ; then
echo error you must cd to the scripts directory and invoke this script with "./name"
exit 1
fi
#
# Extract device file name and mount point from the output of "df" command
set $(df -k . | awk 'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}
#
# Build grub style device name
string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
hda) grubdrive="hd0" ;;
hdb) grubdrive="hd1" ;;
hdc) grubdrive="hd2" ;;
hdd) grubdrive="hd3" ;;
*)
echo localinstall cannot handle device $drive
exit 1
;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice
#
# set up the floppy
set -x
mkdosfs -F 32 -c /dev/fd0
[[ ! -d /media/floppy ]] && mkdir -p /media/floppy
mount -t vfat -o shortname=winnt /dev/fd0 /media/floppy
mkdir -p /media/floppy/boot/grub
cd /media/floppy/boot/grub
cp ${mountpoint}/grub/stage1 .
cp ${mountpoint}/grub/stage2 .
cd ${mountpoint}
#
# rewrite grub.conf to reflect the local partition
sed < ${mountpoint}/grub/grub.conf > /media/floppy/boot/grub/grub.conf \
's/.*root (.*/ root '${grubdevice}'/
s/.*title Boot Octave from.*/ title Boot Octave from '${name}' via floppy built '"$(date +'%B %e, %Y')"'/'
umount /dev/fd0
#
# Use grub to install itself on floppy
set -x
${mountpoint}/bin/grub --batch --verbose --device-map=${mountpoint}/grub/device.map << End
root (fd0)
setup (fd0)
End
exit 0
Código:
#! /bin/bash
#
# cdinstall -- install the grub software including the configuration file
# from this partition on to a cd. This will create a bootable cd that
# can boot the kernels from the cd itself.
#
if [[ $(pwd) != */scripts || $0 != ./* ]] ; then
echo error you must cd to the scripts directory and invoke this script with "./name"
exit 1
fi
#
# Extract device file name and mount point from the output of "df" command
set $(df -k . | awk 'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}
#
# Build grub style device name
string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
hda) grubdrive="hd0" ;;
hdb) grubdrive="hd1" ;;
hdc) grubdrive="hd2" ;;
hdd) grubdrive="hd3" ;;
*)
echo localinstall cannot handle device $drive
exit 1
;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
grubdevice="(cd)"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice
set -x
mkdir /tmp/iso
mkdir /tmp/iso/backup
cp -R $mountpoint /tmp/iso/backup
mkdir -p /tmp/iso/boot/grub
cp /mastergrub/src/grub-0.97/stage2/stage2_eltorito /tmp/iso/boot/grub
#cp /mastergrub/grub/grub.conf /tmp/iso/boot/grub
# rewrite grub.conf to reflect the local partition
sed < ${mountpoint}/grub/grub.conf > /tmp/iso/boot/grub/menu.lst \
's/.*root (.*/ root '${grubdevice}'/
s/.*title Boot Octave from.*/ title Boot Octave from cd built '"$(date +'%B %e, %Y')"'/'
#cp /mastergrub/grub/grub.conf /tmp/iso/boot/grub/menu.lst
cp -R /mastergrub/Redhat /tmp/iso
cp -R /mastergrub/Fedora /tmp/iso
cp -R /mastergrub/SuSE /tmp/iso
cp -R /mastergrub/Debian /tmp/iso
cp -R /mastergrub/Scientific /tmp/iso
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o /driveE/grub.iso /tmp/iso
exit 0
Código:
#! /bin/bash
#
# supermbrbackup -- save disk infrastructure
# This script backs up the partition structure on hd0. It also scans the hidden sectors and backs up any
# non-zero data. In my case, this is grub stage 1.5. And naturally, the boot code in the mbr is included.
# Without this stuff, the disk won't be bootable. The data is saved on a floppy disk. Also a shell script
# to restore the data is included on the floppy. That script can be run from a bootable cd such as the
# System Rescue CD. So this is intended as the first step of a bare metal restore.
#
#
# We need some info about the disk (psuedo) geometry
SECT_NUM=63 #### Sectors per cylinder
SECT_LNG=512 ### Bytes per sector
#
# This was originally a ksh script which was converted to bash. The original ksh code is still here,
# prefixed with "##".
##integer bytes
##set -A bytes abytes
declare -a bytes abytes
typeset -i bytes
#
# Build a filesystem on the floppy
mkfs -t ext2 -b 1024 -i 1024 -O sparse_super /dev/fd0 2>/dev/null
mkdir -p /media/fd0
mount -t ext2 /dev/fd0 /media/fd0
#
# The variable called "restore" will contain the entire restore script. The script will be written out
# once it is complete. I wanted to prevent excess i/o on the floppy drive and I expect the script to
# be short... so I decided to build it in-core.
total_saved=0
restore="#! /bin/bash"
#
# Read a specified sector and set up the arrays abytes and bytes with the contents of each byte
function read_sector
{
skip=$1
## dd if=/dev/hda bs=$SECT_LNG skip=$skip count=1 2>/dev/null| od -An -t x1 -w32 -v
abytes=( $(dd if=/dev/hda bs=$SECT_LNG skip=$skip count=1 2>/dev/null| od -An -t x1 -w32 -v ))
for((ibyte=0; ibyte < ${#abytes[*]}; ibyte++)) ; do
bytes[ibyte]="16#${abytes[ibyte]}"
done
return 0
}
#
# Write the sector onto the floppy disk (also update the restore script)
function save_sector
{
((total_saved++))
dd if=/dev/hda bs=$SECT_LNG skip=$1 count=1 2>/dev/null of=/media/fd0/sec${1}
restore="$restore
dd if=sec${1} bs=$SECT_LNG seek=$1 count=1 of=/dev/hda"
return 0
}
#
# Nothing to check.... sector zero is always saved.
echo sector 0 is the MBR
save_sector 0
#
# Now scan the hidden sectors. Back them up only if the sectors contains some non-zero data
for((sec=1; sec < $SECT_NUM; sec++)) ; do
read_sector $sec
nonzero=0
for((ibyte=0; ibyte < ${#bytes[*]}; ibyte++)) ; do
((${bytes[ibyte]})) && nonzero=1
done
if ((nonzero)) ; then
echo sector $sec has non-zero data
save_sector $sec
fi
done
##typeset -R2 partition
##typeset -i bytes
##typeset -R11 next
read_sector 0
exstart=0
#
# Scan the partition table looking for an extended partition.
for ((partition=1; partition < 5; partition++)) ; do
((s=430 + (partition * 16)))
status=${abytes[s]}
type=${abytes[s+4]}
(( fval=(( (${bytes[s+11]}*256+${bytes[s+10]})*256 + ${bytes[s+9]})*256)+${bytes[s+8]} ))
(( length=(((${bytes[s+15]}*256+${bytes[s+14]})*256+${bytes[s+13]})*256)+${bytes[s+12]} ))
((lval=fval+length-1))
((lval == -1)) && ((lval=0))
if [[ $type = 0f ]] ; then
exstart=$fval
fi
done
#
# If we found an extended partition, step though the logical's and back up each MBR of each logical
# drive.
if ((exstart)) ; then
next=$exstart
while ((next)) ; do
read_sector $next
((s=430 + (1 * 16)))
type=${abytes[s+4]}
(( fval=(( (${bytes[s+11]}*256+${bytes[s+10]})*256 + ${bytes[s+9]})*256)+${bytes[s+8]} ))
(( length=(((${bytes[s+15]}*256+${bytes[s+14]})*256+${bytes[s+13]})*256)+${bytes[s+12]} ))
((lval=fval+length-1))
((lval == -1)) && ((lval=0))
((pstart=fval + next))
((pstop=lval + next))
((s=430 + (2 * 16)))
type=${abytes[s+4]}
(( fval=(( (${bytes[s+11]}*256+${bytes[s+10]})*256 + ${bytes[s+9]})*256)+${bytes[s+8]} ))
(( length=(((${bytes[s+15]}*256+${bytes[s+14]})*256+${bytes[s+13]})*256)+${bytes[s+12]} ))
((lval=fval+length-1))
((lval == -1)) && ((lval=0))
if ((length)) ; then
((nextnext=fval+exstart))
else
((nextnext=0))
fi
echo "sector $next describes logical partition $partition ($pstart - $pstop)"
save_sector $next
((partition=partition+1))
((next=nextnext))
done
fi
#
# Write out the restore script and finish up
echo "$restore" > /media/fd0/restore
chmod 755 /media/fd0/restore
umount /dev/fd0
exit 0
|
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|