Constellation Knowledge Network - Preguntas y respuestas sobre Bagua - El sorteo de Samba te espera.

El sorteo de Samba te espera.

Este es un muy buen artículo de IBM Developerworks que explica claramente los principios de cómo iniciar un sistema operativo Linux con dispositivos FireWire y USB.

Espero que esto sea útil para aquellos que estén interesados ​​en instalar el sistema operativo Linux en dispositivos externos.

URL original/desarrollador o...l-fireboot.html

Inicia Linux desde un dispositivo FireWire

Instala el sistema operativo Linux en una unidad extraíble.

Dificultad: Moderada

Martin Honeyford (martynh@uk.ibm.com) Ingeniero de software, Laboratorio IBM Reino Unido.

Traducido por Xuan Keda·(austin.dada@gmail.com) webzi@linuxsir.

15 de julio de 2004

La traducción comenzó el 26 de julio de 2005 y finalizó el 28 de julio.

No tengo mucha experiencia en traducción. Si tiene alguna pregunta, envíenos un correo electrónico.

Usar un disco externo es una excelente manera de darle nueva vida a su antiguo hardware y permitirle usar Linux en computadoras donde no puede (o no quiere) reemplazar el disco duro interno.

Supongamos que desea utilizar Linux en un entorno de arranque dual, pero el disco duro de su computadora no tiene espacio libre. Una solución es utilizar una distribución de Linux "en vivo" como Knoppix, que puede arrancar directamente desde el CD. Para uso ocasional, este es un enfoque viable, pero tiene varias desventajas:

*Aún necesitarás algo de almacenamiento de archivos fijo. Si solo opera con una pequeña cantidad de archivos, un disco de 1,44 MB está bien o una unidad flash USB es adecuada para archivos medianos, pero no son ideales.

*Lo más difícil, peor y más imposible de hacer cuando se utiliza un LiveCD es instalar tus propias aplicaciones o personalizar las existentes.

*La pérdida de rendimiento al usar un LiveCD fue particularmente notable al comienzo de la prueba en todos los dispositivos, pero también ocurrió durante el uso (todos los archivos fueron generalmente más lentos para cargar desde el CD que desde el disco duro) .

De hecho, existen otras opciones. Por ejemplo, puede comprar una unidad interna adicional e instalar en ella el sistema operativo Linux. Pero a menudo es posible que no tenga un montículo de sobra para la expansión. (Esto sucede especialmente en las computadoras portátiles, que generalmente solo permiten un disco duro interno).

Como alternativa, puedes reemplazar tu disco duro actual por uno más grande para ganar espacio adicional para instalar el sistema operativo Linux. Sin embargo, esta es una solución que requiere mucho tiempo y requiere reinstalar su sistema operativo existente en un nuevo disco duro, reinstalar y configurar todas sus aplicaciones y restaurar todos los datos.

Una mejor solución es comprar un disco duro externo e instalar el sistema operativo Linux. De esta manera, puede utilizar el sistema Linux sin involucrar el software ni el hardware existente, y solo necesita conectar el controlador externo.

Dispositivos extraíbles opcionales

Los dispositivos que se pueden utilizar para instalar el sistema operativo Linux incluyen unidades de disco, dispositivos de memoria flash USB, discos duros conectados mediante USB/Firewire, etc.

Es factible instalar Linux en un dispositivo de pequeña capacidad, como un disco de 1,44 MB o una unidad flash USB de 32 MB. Generalmente están (y deben estar) personalizados para un propósito específico y cuentan con una distribución simplificada, por ejemplo, para ahorrar un proceso de instalación interrumpido.

Los discos duros externos proporcionan la máxima flexibilidad para utilizar sistemas Linux de uso general a un coste razonable.

Las unidades externas están disponibles en una variedad de capacidades de muchos fabricantes diferentes. (Maxtor, Xixi Data, etc.). Estas unidades también incluirán una carcasa exterior para alojar un disco duro IDE estándar de 3-1/2 pulgadas o 2-1/2 pulgadas. Luego, estas unidades se conectan a la computadora mediante USB o IEEE1394 (Firewire).

El USB se ve afectado por dos versiones principales, las velocidades 1.1 y 2.0. La versión 1.1 es de 12 Mbit/s (1 Mbit por segundo), mientras que la versión 2.0 admite una velocidad de transmisión máxima de 480 Mbit/s. La mayoría de las unidades compatibles con 2.0 también son compatibles con versiones anteriores de 1.1, por lo que generalmente se recomienda no utilizar la. Interfaz 1.1 a menos que no haya otras opciones (no adecuada para este entorno debido a su baja velocidad). )

El estándar FireWire también define varias velocidades diferentes. De hecho, lo que la mayoría de la gente llama firewire es el estándar "FireWire400", que admite una velocidad de transmisión máxima de 400 Mbit/s.

USB2.0 y FireWire están empatados en velocidad: aunque la velocidad de transmisión de USB 2.0 es relativamente alta, de hecho la velocidad de los dos es muy similar debido a los diferentes protocolos. Si tu computadora tiene dos interfaces, es mejor usar USB en lugar de firewire (por razones que explicaré más adelante), pero si solo hay una interfaz firewire, por supuesto que la eliges tú.

Para obtener la máxima flexibilidad, puede elegir entre uno de los muchos controladores compatibles con USB 2.0 y FireWire. Como lo usaré más adelante en este artículo. )

Para las personas que no tienen las interfaces necesarias, las tarjetas de expansión PCI (para computadoras de escritorio) y PCMCIA (para computadoras portátiles), FireWire y USB 2.0 no son demasiado caras ahora: por ejemplo, discutiré Más adelante en el artículo Como se mencionó, una tarjeta de expansión PCMCIA FireWire cuesta alrededor de £10 (menos de $20).

Para los fines de este artículo, compré una carcasa para disco duro externo de 5-1/4 pulgadas. Se trata de una carcasa para disco duro muy flexible que no viene con unidad y puede contener cualquier dispositivo IDE estándar, incluidas unidades de 3-1/2 pulgadas y dispositivos IDE de 5-1/4 pulgadas como CD-RW/DVD-RW. . La caja del disco duro tiene interfaces USB 2.0 y Firewire.

Para conectar la carcasa del disco duro a mi portátil IBM Thinkpad T30, también compré una tarjeta adaptadora PCMCIA FireWire. (Porque la interfaz USB incorporada sólo admite USB 1.1)

La caja del disco duro y el adaptador Firewire son relativamente baratos. (Aproximadamente 50 kilogramos y 10 kilogramos respectivamente.)

Durante la prueba, coloqué un disco duro IDE de 3-1/2 pulgadas de 13 GB sin usar en la caja del disco duro; en la vida real, lo compraré. uno más caro. Ahora es bastante barato comprar un disco duro de gran capacidad (¡alrededor de 50 libras cada uno!)

Soporte de Linux

Como es de esperar, Linux realmente los admite. discos duros. Cualquier dispositivo de almacenamiento de gran tamaño que cumpla con el estándar SBP (Serial Bus Protocol) es muy sencillo de utilizar en Linux.

En general, para permitirle admitir estos dispositivos será necesario admitir ciertas opciones en su núcleo (compilación directa o paso de módulos). )

Para USB y Firewire, los dispositivos SBP se implementan mediante emulación SCSI; es decir, Linux los trata como discos duros SCSI. Esta es una forma común de utilizar dispositivos de almacenamiento en el mundo Linux. (Por ejemplo, los dispositivos IDE CD/DVD normalmente se conectan mediante emulación SCSI). Por los motivos anteriores, el kernel debe admitir las siguientes opciones:

* Compatibilidad con SCSI

* Emulación SCSI

* Compatibilidad con disco SCSI

Además, los diferentes métodos de conexión requieren el siguiente soporte del kernel:

*Para FireWire:

* soporte IEEE1394

* soporte OHCI1394

* Compatibilidad con RAW1394

* Compatibilidad con el nuevo protocolo SBP

*Para USB:

*(lado del host) Compatibilidad con USB

* Compatibilidad con OHCI

p>

* Compatibilidad con UHCI

* Compatibilidad con almacenamiento masivo USB

Obviamente, también tendrás que compilar regularmente para admitir otro hardware (como gráficos tarjetas, etc.), y es posible que necesite algunos módulos adicionales, dependiendo de su hardware específico.

Por ejemplo, estoy usando un adaptador Firewire PCMCIA (cardbus), por lo que necesito agregar:

* compatibilidad con PCMCIA

* compatibilidad con cardbus

Solucionado

Ahora que tenemos un disco externo perfecto, comenzaremos a instalar Linux en él.

La forma más fácil de instalar Linux (solo una opinión personal, por supuesto) es conectar todo el hardware (en mi caso, conectar el adaptador FireWire, conectar el controlador de la caja de conexiones y luego encender; en el controlador) e inicie su computadora desde el CD de instalación de distribución de su elección.

La distribución que estoy usando es Gentoo (consulte Recursos para obtener un enlace), por lo que estoy usando el último LiveCD x86 "universal". (2004.1) Los pasos necesarios para otras distribuciones son en términos generales similares.

Una vez que comienzas a usar el CD de instalación, lograr que reconozca tu unidad es un poco complicado. El disco debería aparecer en /dev/sdx, donde x es una letra minúscula que comienza con "a". En mi sistema, el disco duro externo se ve como /dev/sda, pero si tiene otros discos duros SCSI, este número cambiará en cuyo caso puede ser /dev/sdb o alguna otra letra; Si su unidad no se puede detectar automáticamente, deberá tomar medidas adicionales; por ejemplo, es posible que deba activar las opciones de inicio para usar la interfaz FireWire o PCMCIA, o que necesite cargar manualmente algunos módulos del kernel u otras opciones. . (Consulte el enlace de la Guía de mantenimiento y solución de problemas para obtener recursos detallados).

Una vez que se reconoce la unidad, el proceso de instalación funciona como un disco duro interno. Luego puede particionarlo e instalar Linux de la forma habitual.

Hay una advertencia importante.

Tenga cuidado al elegir dónde instalar sus cargadores de arranque (generalmente GRUB y LILO): le recomiendo que no los instale en el Master Boot Record (MBR) (generalmente el predeterminado), sino en la raíz de la partición del disco externo ( o partición /boot si separa una).

Ahora que tenemos Linux instalado en este dispositivo, queremos iniciarlo desde él. Las cosas se complican un poco.

Primeros pasos

Antes de explicar cómo arrancar en una nueva unidad, quiero explicar algunas cosas sobre el cargador de arranque.

El gestor de arranque suele instalarse en el MBR del primer disco duro del ordenador. Cuando se llama al cargador de arranque (el BIOS ejecuta automáticamente el código en el MBR), generalmente se muestra un menú para iniciar el sistema operativo. Para seleccionar un sistema operativo determinado, inicie la computadora.

En este capítulo cabe destacar dos detalles:

* El menú de selección del sistema operativo se carga (normalmente) desde el disco.

*Para iniciar el sistema operativo correspondiente, el cargador de arranque necesita leer el kernel correspondiente del disco.

Los pasos anteriores se realizaron antes de cargar el sistema operativo, lo que significa que todas las lecturas del disco se realizan cuando se llama al BIOS. Este es un requisito previo necesario, es decir, para iniciar el disco directamente, su BIOS debe admitir discos conectados mediante Firewire o USB. Por lo general, puedes ver la opción para iniciar desde estos dispositivos en el BIOS. La compatibilidad con Firewire BIOS es muy escasa ahora, pero la compatibilidad con USB se está volviendo bastante común. Entonces, si está utilizando una interfaz USB en una computadora relativamente nueva, debería poder iniciar el controlador directamente en Linux.

Cuando lo conecto vía USB, puedo arrancar directamente después de instalar las larvas del MBR con el controlador externo. Al iniciar con un disco conectado, simplemente ingrese a la Utilidad de dispositivo BIOS. El disco externo aparecerá como un disco duro normal: muévalo para que esté antes que el disco interno en el orden de inicio.

También puedo instalar un gestor de arranque en el MBR del disco duro interno y usarlo para arrancar un disco duro USB (llamado hd1 en GRUB). Si está utilizando FireWire, es posible que su BIOS no pueda iniciar el disco duro directamente y deba realizar algunos pasos más.

Afortunadamente, debido a la diversidad de Linux, esto es fácil de resolver si no puedes iniciar directamente (¡este es mi caso, usando una tarjeta adaptadora PCMCIA! Puedes ejecutar el inicio inicial). pasos desde un dispositivo compatible, como una unidad de disquete, CD-ROM, memoria USB o una pequeña partición en el disco duro principal, luego continúe con otros pasos usando una unidad externa

Crear un paquete de imagen de arranque

Tenemos dos formas de iniciar:

*Inicio de orden única

El kernel se inicia, monta el sistema de archivos de la partición raíz y luego llama al libro de texto de inicialización para continuar. inicialización (generalmente /sbin/init).

*El comienzo del arranque de dos pasos (initrd)

El kernel se inicia, monta un disco ram inicial (initrd), se ejecuta más inicialización personalizada y luego monta el sistema de archivos de la partición raíz para continuar con la inicialización (de manera similar, generalmente llamado /sbin/init)

Cada método tiene sus propias ventajas y desventajas

Arranque en un solo paso

Para utilizar un arranque de un solo nivel, cree un kernel que contenga todos los controladores necesarios para montar el sistema de archivos de la partición raíz. Cualquier otro controlador se puede compilar en un módulo e inicializar normalmente cuando la partición raíz esté activa. cargado)

Si intentamos arrancar desde un dispositivo muy pequeño (como un disquete), la mejor manera es crear un kernel adecuado, compilar todos los controladores necesarios para instalar el sistema de partición externa raíz. y compilar otros módulos. Por ejemplo, mi kernel está compilado con soporte SCSI, soporte PCMCIA, IEEE 1394, SBP y otros soportes similares, pero otros (incluidos soporte para tarjetas gráficas, soporte para dispositivos de red, etc.) se compilan en módulos y se almacenan en la partición raíz ( en una unidad externa) en lugar de un disquete.

El principal problema con este enfoque es que necesitamos parchear el código fuente del kernel, lo cual es lo peor (cuando se lanza un nuevo kernel), y el verdadero problema es si los parches no se mantienen. no puede mantenerse al día con los cambios del kernel.

Puedes pensar que si la BIOS del ordenador admite arranque directo USB y firewire, podemos evitar los dos problemas anteriores. Desafortunadamente, ese no es el caso: este enfoque usa el BIOS para llamar al disco en el arranque, y una vez que el kernel comienza a inicializarse, el BIOS pierde su función y usa el controlador del kernel para llamar al disco, por lo que aún terminas con el mismo problema.

Arranque de segundo nivel

El kernel 2.0.

En resumen, el kernel siempre arranca; se monta el sistema de archivos de partición mini-raíz creado en la memoria, en lugar del sistema de partición raíz "real".

Antes de montar el sistema de partición raíz "real", todos los comandos se ejecutan en este entorno inicial hasta que cambiemos al sistema de archivos de partición raíz real y destruyamos el disco RAM inicial.

Esto es útil en una variedad de entornos, pero nuestro objetivo es simplemente usar nuestro pequeño entorno para volver a escanear el bus SCSI, esperar a que el disco externo lo reconozca y luego usarlo para cambiar a nuestro entorno real. directorio raíz y Continuar con la guía.

Usando este método, necesitamos crear dos archivos, un kernel y un archivo de imagen inicial.

El kernel es solo una imagen de arranque incorporada (initrd) que admite el kernel normal. La imagen initrd es una imagen circular del sistema de archivos que incluye nuestro sistema de partición mini-raíz. (Las imágenes pueden utilizar opcionalmente la compresión gzip para reducir su tamaño).

Puedes encontrar más información sobre cómo crear y personalizar tus propias imágenes iniciales en la sección Recursos.

En el archivo de imagen, hay un archivo linuxrc. El archivo se ejecutará automáticamente cuando se cargue la imagen, ¡así que asegúrese de que tenga permiso para ejecutarse! Para conseguir nuestros objetivos el archivo linuxrc es muy sencillo:

Enumeración 1. initrd linuxrc

#!/bin/sh

REAL_ROOT=/dev/sda1

#Montar el sistema de archivos /proc

montar -t procesar ninguno/proceso

#Para simulación scsi (simulación SCSI)

# modprobe sd_mod

#Para PCMCIA (tarjeta PCMCIA)

# modprobe pcmcia_core

#Para FireWire

# modprobe ieee1394

# modprobe ohci1394

# modprobe raw1394

# modprobe sbp2

#Para USB (Universal Serial Bus)

# modprobe núcleo USB

# modprobe ohci-hcd

# modprobe uhci-hcd

# almacenamiento usb modprobe

#Ciclo volver a escanear el bus scsi + volver a ejecutar devfsd

Número de reintentos=5

i=1

Hasta [ -e $REAL_ROOT ]

Hacer

if [$ I-gt $retries]

Entonces

echo "No se puede montar la raíz real ($REAL_ROOT) - ¡ríndete!"

/bin/ash

Salir

El el barco no corre con los costos de carga

echo "No se encontró la raíz real ($REAL_ROOT), reintentando ($i)"

Dormir 1

echo "scsi agregar-dispositivo-único 0 0 0 " >/proc/scsi/scsi

echo " SCSI agregar-dispositivo-único 100 " >/proc/scsi/scsi

echo "scsi agregar-dispositivo-único 2 0 0 " >/proc/scsi/scsi

/bin/devfsd /dev -np

i=$ ((i+1))

Complete

#umount /proc ya que será remontado por el proceso de inicio normal

Cuándo se remontará la partición /proc Al montar el proceso de inicio normal , desmóntalo.

Desinstalar/Procesar

#Ahora simplemente podemos salir y el proceso de inicio normal debería continuar.

Ahora podemos salir y el proceso de inicio normal debería continuar.

Salir 0

Estamos cargando los módulos adecuados para admitir unidades externas: consulte las líneas adecuadas según sea necesario. Tengo todo el soporte necesario compilado en el kernel, por lo que no necesito módulos. Luego escanea el bus SCSI en un bucle (en respuesta al comando de un archivo especial en el sistema de archivos virtual /proc, llamando al programa devfsd) hasta que aparece el dispositivo de partición raíz (en mi caso /dev/sda1). En mi caso, el bus SCSI analógico FireWire conectado es 1000, pero eso no afecta el hecho de probar otros buses; si sabes cuál usarás, puedes cancelar este tutorial. Además, si tiene otros dispositivos SCSI (o dispositivos SCSI simulados), la unidad puede tener una letra diferente. (por ejemplo, /dev/sdb1) Si no está utilizando la primera partición en el disco externo, necesitará usar un número diferente.

(por ejemplo, /dev/sda2)

Ahora todo lo que tenemos que hacer es copiar los archivos relevantes en la imagen initrd. (Puede montar una imagen sin comprimir usando el comando mount -o loop). En particular, debemos asegurarnos de tener el archivo linuxrc y todos los comandos utilizados y las bibliotecas que dependen de él. Esta imagen (desmontada) puede tener compresión plegable opcional.

Copie el kernel (bzImage) y la imagen initrd (initrd.gz) al disco.

El último paso es instalar un gestor de arranque en el disco e iniciar el kernel con las siguientes opciones: imagen del kernel root =/dev/sda 1 initrd = initrd.gz. .

Ahora deberías poder arrancar usando ese disco: cargará el kernel desde el disquete, cargará la imagen initrd en la memoria y continuará arrancando normalmente desde allí. Luego se puede retirar el disco.

Si el disco no es adecuado (por ejemplo, el ordenador no tiene unidad de disquete), puedes utilizar cualquier dispositivo de la BIOS que sirva para el arranque. Yo personalmente uso una pequeña unidad flash USB de 32 MB para lograr este propósito.

Materiales de referencia:

http://www.linuxsir.org/bbs/showthread.php?t=211021

上篇: Elecciones de Feng Shui para tres casas rurales (bungalows) 下篇: Los nombres de los dos protagonistas masculinos en su MV "Not Your Friend".
Artículos populares