Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo instalar el sistema LINUX en el disco duro móvil

Cómo instalar el sistema LINUX en el disco duro móvil

Aquí hay un muy buen artículo de IBM Developerworks que explica claramente los principios de cómo iniciar el sistema operativo Linux en dispositivos Firewire y USB.

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

URL original /developerwor.....l-fireboot.html

Inicia Linux desde el dispositivo FireWire

Instala el sistema operativo Linux en el disco duro móvil

p>

Nivel de dificultad: Medio

Martyn Honeyford (martynh@uk.ibm.com) Ingeniero de software, IBM UK Labs

Traducido por: Xuan Koda ( austin.dada@gmail.com) webzi@linuxsir

15 de julio de 2004

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

No tengo mucha experiencia en traducción. Si hay algún error, no dude en comunicarse por CORREO ELECTRÓNICO.

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

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

*Aún necesitarás algo de espacio fijo de almacenamiento de archivos. Si sólo está trabajando con una pequeña cantidad de archivos, un disco de 1,44 MB será suficiente, o una memoria USB será suficiente para una cantidad moderada de archivos, pero estos no son lo ideal.

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

* La pérdida de rendimiento al usar un LiveCD es particularmente notable al inicio cuando se detectan todos los dispositivos, pero también durante el uso (todos los archivos cargados desde un CD son generalmente mucho más lentos que los cargados desde el disco duro).

De hecho, hay otras opciones disponibles. Por ejemplo, puede comprar una unidad interna adicional e instalar en ella el sistema operativo Linux. Pero la mayoría de las veces, es posible que no tenga una unidad de expansión libre (este es especialmente el caso de las computadoras portátiles, ya que generalmente solo permiten una unidad interna).

Como alternativa, puedes reemplazar tu disco duro actual por uno más grande para ganar espacio adicional para tu sistema operativo Linux. Sin embargo, este método requiere mucho tiempo y requiere reinstalar su sistema operativo existente en un disco duro nuevo, reinstalar y reconfigurar todas las aplicaciones y recuperar todos los datos.

Una mejor solución es comprar un disco duro externo e instalar en él el sistema operativo Linux. De esta manera, si desea utilizar Linux, puede simplemente conectar el disco duro externo sin tener que lidiar con el hardware y el software existentes.

Dispositivos extraíbles opcionales

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

Es posible instalar Linux en un dispositivo de pequeña capacidad, como un disco de 1,44 MB o una unidad flash USB de 32 MB, pero generalmente están (y deben estar) diseñados para un propósito específico, utilizando archivos desmontados. -Distribuciones inactivas, por ejemplo, para guardar un proceso de instalación interrumpido.

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

Los discos duros externos están disponibles en muchas capacidades diferentes y de muchos proveedores diferentes. (Maxtor, Western Digital, etc.).

Estas unidades también incluyen una carcasa externa que acepta unidades IDE estándar de 3-1/2 pulgadas o 2-1/2 pulgadas. Estas unidades se conectan a la computadora mediante USB o IEEE1394 (FireWire).

USB tiene dos versiones principales, 1.1 y 2.0. La versión 1.1 tiene una velocidad de transferencia de 12 Mbit/s (1 Mbit por segundo), mientras que la versión 2.0 admite velocidades de transferencia de hasta 480 Mbit/s. La mayoría de los discos duros compatibles con 2.0 son compatibles con USB. La mayoría de las unidades compatibles con 2.0 también son compatibles con versiones anteriores de 1.1 y, en general, se recomienda evitar el uso de la interfaz 1.1 a menos que no haya otra opción (porque su baja velocidad no es adecuada para este entorno).

El estándar FireWire también define muchas velocidades diferentes. De hecho, la mayoría de la gente se refiere a FireWire como el estándar "FireWire400", que admite una velocidad de transferencia máxima de 400 Mbit/s. El estándar FireWire400 es un estándar que admite una velocidad de transmisión máxima de 1,5 Mbit/s. El estándar FireWire400 es un estándar que admite una velocidad de transmisión máxima de 1,5 Mbit/s.

USB 2.0 y FireWire son comparables en términos de velocidad: aunque USB 2.0 tiene velocidades de transferencia más altas, en realidad los dos tienen velocidades muy similares debido a los diferentes protocolos. Si tu computadora tiene dos puertos, es mejor usar USB que FireWire (por razones que explicaré más adelante), pero si solo tienes FireWire, por supuesto elegirás USB. Para obtener la máxima flexibilidad, elija una unidad que admita USB 2.0 y FireWire. (

Para aquellos que no tienen las interfaces PCI (escritorio) y PCMCIA (portátil) necesarias, las tarjetas de expansión FireWire y USB 2.0 ahora no están fuera de su alcance: por ejemplo, las cubriré en este artículo. La tarjeta de expansión PCMCIA FireWire mencionada cuesta alrededor de £10 (menos de $20)

Para los propósitos de este artículo, compré una carcasa para disco duro externo de 5-1/4 pulgadas. Una carcasa muy flexible que no viene incluida. con una unidad y puede acomodar 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). El gabinete cuenta con USB 2.0 y FireWire. interfaces

Para conectar la carcasa del disco duro a mi computadora portátil IBM Thinkpad T30, también compré un adaptador PCMCIA FireWire (ya que el puerto USB incorporado solo admite USB 1.1)

Duro. Los gabinetes para unidades de disco y los adaptadores FireWire son relativamente económicos (

Durante las pruebas, coloqué un disco duro IDE cercano de 13 GB y 3-1/2 pulgadas en el gabinete; de ​​ser así, en la vida real definitivamente compraría un disco duro más grande, y conseguir otro es bastante barato hoy en día (¡alrededor de £ 50 cada uno!)

Soporte para Linux

Como en. Como era de esperar, el soporte para Linux para estos gabinetes es realmente excelente. Cualquier dispositivo de almacenamiento grande que cumpla con el estándar SBP (Serial Bus Protocol) es muy sencillo de usar en Linux.

, para admitir estos dispositivos es necesario admitir ciertas opciones en el kernel (ya sea). compilado directamente o mediante módulos)

Para USB y FireWire, los dispositivos SBP se implementan mediante emulación SCSI, lo que significa que Linux se tratará como discos duros SCSI. Esta es la forma común en que se utilizan los dispositivos de almacenamiento. el mundo Linux (por ejemplo, los dispositivos IDE CD/DVD generalmente se conectan mediante emulación SCSI).

Por lo tanto, el kernel debe admitir las siguientes opciones:

* Compatibilidad con SCSI

* Emulación SCSI

* Compatibilidad con disco SCSI

Entre Entre otras cosas, los diferentes métodos de conexión también requieren el siguiente soporte del kernel:

* FireWire:

* Soporte IEEE1394

* FireWire.

* Compatible con IEEE1394

* Compatible con OHCI1394

* Compatible con RAW1394

* Compatible con SBP-2

* Para USB:

* (lado host) Compatibilidad con USB

* Compatibilidad con OHCI

* Compatibilidad con UHCI

* Compatibilidad con almacenamiento masivo USB

Obviamente también tendrás que compilar soporte general para otro hardware (como tarjetas gráficas, etc.). Obviamente, también necesitarás compilar soporte general para otro hardware (como tarjetas gráficas, etc.), y es posible que también necesites algunos módulos adicionales, dependiendo de tu hardware específico.

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

* compatibilidad con PCMCIA

* compatibilidad con cardbus

Instalación

Ahora que tenemos el disco duro externo perfecto, comenzaremos el maravilloso viaje de instalar Linux en él.

La forma más sencilla de instalar Linux con diferencia (por supuesto, esto es sólo una opinión personal) es conectar todo el hardware (en mi caso, insertar la tarjeta adaptadora FireWire, conectar la unidad de la caja adaptadora y encienda la unidad), luego inicie su computadora desde el CD de instalación para la distribución elegida.

La distribución que estoy usando es Gentoo (ver enlace para obtener detalles del recurso), por lo que estoy usando el último LiveCD x86 "genérico". (Los pasos de instalación para otras distribuciones son más o menos los mismos.

Después de iniciar desde el CD de instalación, necesita un poco de suerte para que reconozca su disco duro. El disco debería aparecer como /dev/sdX, donde X es una letra minúscula que comienza con "a". En mi sistema, el disco duro externo se considera /dev/sda, pero si tiene otros discos duros SCSI, este número cambiará (o discos duros SCSI simulados) en este; case , que puede ser /dev/sdb u otras letras. Si el disco duro no se detecta automáticamente, es posible que se requieran pasos adicionales, por ejemplo, es posible que sea necesario activar las opciones de inicio para usar las interfaces FireWire o PCMCIA, o algunas. Es posible que sea necesario cargar manualmente los módulos del kernel u opciones adicionales (consulte el enlace Guía de solución de problemas y reparación para obtener recursos)

Una vez que se reconoce la unidad, el proceso de instalación es el mismo que para una unidad interna.

p>

Una nota importante es que, tenga cuidado donde elige instalar su cargador de arranque (generalmente GRUB y LILO), recomiendo no instalarlo en el Master Boot Record (MBR) (generalmente el predeterminado), sino en el Master Boot Record (MBR) (generalmente el predeterminado). la partición raíz de su disco duro externo

Ahora que tenemos Linux instalado en el dispositivo, queremos iniciar Linux desde él

Arranque

Antes. Al analizar cómo arrancar en un nuevo disco duro, necesito explicar el cargador de arranque.

El cargador de arranque generalmente se instala en el MBR del primer disco duro de la computadora cuando el BIOS ejecuta el código automáticamente. en el MBR, generalmente muestra un menú de sistemas operativos de arranque para que pueda seleccionar un sistema operativo específico para iniciar la computadora.

Nota en esta sección:

*. 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 desde el disco. Los pasos anteriores se completan antes de cargar el sistema operativo, lo que significa que todas las lecturas del disco se realizan cuando se llama al BIOS. Para arrancar directamente desde el disco, el BIOS debe admitir discos conectados a través de 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 realmente rara hoy en día, pero la compatibilidad con USB se ha vuelto bastante común. Entonces, si está utilizando un puerto USB en una computadora relativamente nueva, debería poder iniciar el disco duro directamente en Linux.

Cuando me conecto vía USB, puedo arrancar directamente después de instalar la larva MBR del disco duro externo. Al arrancar desde un disquete conectado, simplemente ingresa a la utilidad de instalación del BIOS. El disquete externo aparecerá como un disco duro normal: muévalo para que quede antes del disco duro interno en la secuencia de inicio.

También puedo instalar un gestor de arranque en el MBR del disco duro interno y usarlo para arrancar el disco duro USB (llamado hd1 en GRUB). Si estás usando FireWire, existe la posibilidad de que tu BIOS no inicie la unidad directamente y tendrás que seguir algunos pasos más.

Afortunadamente, debido a la versatilidad de Linux, si no arranca directamente, es fácil de arreglar (¡eso me pasó a mí, usando un adaptador PCMCIA!). Puede ejecutar los pasos de inicio iniciales desde un dispositivo compatible (como una unidad de disquete, un CD-ROM, una unidad flash USB o una pequeña partición en su disco duro principal) y luego continuar con otros pasos utilizando un disco duro externo.

Crear una imagen de arranque

Tenemos 2 métodos de arranque:

*Arranque de un solo nivel

Arranque del kernel, montar la partición raíz sistema de archivos y luego llame al tutorial de inicialización para continuar con la inicialización (generalmente /sbin/init)

*Inicio de arranque de doble nivel (initrd)

Inicio del kernel. Monte el disco ram inicial (initrd), ejecute una inicialización personalizada adicional y luego monte el sistema de archivos de la partición raíz para continuar con la inicialización (nuevamente, generalmente llamando a /sbin/init)

Cada método tiene sus propios pros y contras .

Arranque de un solo nivel

Para utilizar el arranque de un solo nivel, necesitamos crear un kernel que contenga todos los controladores necesarios para montar el sistema de archivos de la partición raíz. (Cualquier otro controlador puede compilarse como un módulo e inicializarse de forma rutinaria cuando se carga la partición raíz).

Si intentamos arrancar desde un dispositivo muy pequeño como un disquete, el mejor enfoque es crear un kernel adecuado, compilar todos los controladores necesarios para cargar el sistema de archivos de la partición raíz y compilar el resto. de los controladores como módulo. Por ejemplo, mi kernel compila soporte SCSI, soporte PCMCIA, IEE1394, SBP y otros soportes similares, pero compila el resto (incluido el soporte para tarjetas de video, soporte para dispositivos de red, etc.) como módulos y los almacena en la partición raíz (unidad externa). en lugar de un disquete.

El principal problema con este enfoque es que requiere que parcheemos el código fuente del kernel, lo cual es una molestia en el peor de los casos (cuando se lanza un nuevo kernel), y el verdadero problema es si el parche Sin mantenimiento, no pueden mantenerse al día con los cambios del kernel.

Se podría pensar que si la BIOS del ordenador admite arranque directo USB y FireWire, podemos evitar los dos problemas anteriores. Desafortunadamente, este no es el caso: este sistema 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 todavía tienes el mismo problema.

Arranque de segundo orden

La versión 2.0.X del kernel agregó una característica interesante al kernel, el uso de un "disco RAM inicial" (o initrd) para el arranque de segundo orden.

En resumen, el kernel arranca de la misma manera que antes; no monta la partición raíz "real", sino un sistema de archivos creado en la memoria como una partición mini-raíz. Cualquier comando que monte el sistema de partición raíz "real" se ejecutará 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 el mini entorno para volver a escanear el bus SCSI, esperar a que la unidad externa lo reconozca y luego usarlo para cambiar al real. partición raíz y continúe arrancando.

Utilizando este método, necesitamos crear dos archivos: kernel e imagen inicial.

El kernel es solo una imagen de arranque incorporada (initrd) que admite el kernel normal. La imagen initrd es una imagen del sistema de archivos loopback que envuelve nuestro sistema de partición mini-raíz. (Opcionalmente, comprima la imagen usando gzip para reducir su tamaño).

Puedes encontrar más información sobre cómo crear y personalizar tu propia imagen inicial en la sección Recursos.

Hay un archivo linuxrc en el archivo de imagen.

Este archivo se ejecutará automáticamente cuando se cargue la imagen, ¡así que asegúrese de que tenga permiso para ejecutarse! Para nosotros, el archivo linuxrc es muy simple:

Lista 1. initrd linuxrc

#! /bin/sh

REAL_ROOT=/dev/sda1

# montar el sistema de archivos /proc

mount -t proc none /proc

#para scsiemulación

# para emulación SCSI

# modprobe sd_mod

# para pcmcia (tarjeta PCNCIA)

# modprobe pcmcia_core

# para FireWire

# modprobe ieee1394

# modprobe ohci1394

# para FireWire.modprobe ohci1394

# modprobe raw1394

# modprobe sbp2

#para USB (USB)

# modprobe usbcore

# modprobe ohci-hcd

# modprobe ohci-hcd

# para FireWire

#para FireWire

# modprobe ohci-hcd

# modprobe uhcihcd

# modprobe usb-storage

# Bucle para volver a escanear el bus scsi + volver a ejecutar devfsd

retries=5

i=1

Hasta [ -e $REAL_ROOT ]

hacer

si [ $i -gt $retries ]

entonces

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

/bin /ash

exit

fi

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

suspensión 1

echo "scsi add-single-device 0 0 0" & gt ;/proc/scsi/scsi

echo "scsi agregar-dispositivo único 1 0 0" & gt; /proc/scsi/scsi

echo "scsi agregar-dispositivo único" 2 0 0" & gt;/proc/scsi/scsi

/bin/devfsd /dev -np

i=$((i+1))

hecho

#umount /proc, porque será remontada por el proceso de inicio normal

(desmontar /proc) partición, porque será remontada por el proceso de inicio normal)

umount /proc

#Ahora solo necesitamos salir,

(Ahora podemos salir y el proceso de arranque normal continuará)

exit 0

Lo que tenemos que hacer es cargar los módulos correspondientes para soportar discos duros externos: tenga en cuenta las líneas correspondientes según sea necesario. (He compilado todo el soporte necesario en el kernel, por lo que no se necesitan módulos).

Luego, el kernel escanea el bus SCSI en un bucle (enviando comandos a archivos especiales bajo el sistema de archivos virtual /proc y llamando al programa devfsd) hasta que aparece el dispositivo de partición raíz (/dev/sda1 en mi caso). En mi caso, el bus SCSI emulado FireWire al que se accede es 1 0 0, pero no está de más probar otros buses; si sabes qué bus usarás, puedes eliminar este libro de texto. Además, si tiene otros dispositivos SCSI (o dispositivos SCSI emulados), las unidades pueden tener letras diferentes. (Por ejemplo, /dev/sdb1) Si no está utilizando la primera partición del disco duro externo, necesitará utilizar 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 un archivo de imagen sin comprimir usando el comando mount -o loop). En particular, debemos asegurarnos de tener el archivo linuxrc, todos los comandos utilizados y las bibliotecas de las que depende. Este archivo de imagen (desmontado) se puede comprimir opcionalmente.

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

El último paso es instalar el cargador de arranque en el disco e iniciar el kernel con las siguientes opciones: kernel bzImage root=/dev/sda1 initrd=initrd.gz.

Ahora debería poder arrancar desde el disco: cargará el kernel desde el disquete, cargará la imagen initrd en la memoria y luego continuará arrancando normalmente. Después de eso, se puede quitar el disco.

Si un disco no es adecuado (por ejemplo, el ordenador no tiene unidad de disquete), puedes utilizar cualquier dispositivo desde el que la BIOS pueda arrancar. Personalmente, utilizo una pequeña memoria USB de 32 MB para este propósito.