Visión de conjunto
Crear un arranque UEFI solo para medios en vivo USB es bastante sencillo. Simplemente copie los archivos en su unidad USB con formato FAT32 . ¡Eso es!
Recuerde que para una instalación o arranque de los medios:
Tabla de contenido
- Copie archivos del método ISO
- Ejemplo a través de terminal
- Ejemplo a través de GUI
- Ejemplo en Windows
- El método ISO loopback (avanzado)
- Creando el binario
- Crear el archivo de configuración
- Agregar persistencia
- Comprobando la integridad
- Arranque seguro UEFI
1. Copie archivos del método ISO
Este método también funciona para otros medios de instalación que contienen cargadores EFI, como Windows, por ejemplo.
1.1. Ejemplo a través de terminal
Puede hacer algo como lo siguiente si 604A-00EA
es su unidad USB y ya ha p7zip
instalado:
$ 7z x ubuntu-12.04-desktop-amd64.iso -o/media/$USER/604A-00EA/
Ya ha terminado si solo tiene una partición en esta unidad USB; de lo contrario, debe marcar la partición como de arranque, por ejemplo, a través de parted
:
# parted /dev/sdX set 1 boot on
¿Dónde /dev/sdX
estaría su unidad USB y 1
el número de partición que debería usarse para arrancar?
1.2. Ejemplo a través de GUI
Monte el archivo .iso y copie el contenido en su unidad USB. Presione Ctrl+ Hen Nautilus para mostrar y copiar archivos ocultos también.
Agregue la bandera de arranque a través de GParted .
1.3. Ejemplo en Windows
- Igual que el anterior, solo copie los archivos.
- Presione Windows/Super+ X, vaya a Administración de discos y verifique si la partición está marcada como activa. En las versiones de Windows anteriores a Windows 8, presiona Windows/Super+ Rpara abrir el menú Ejecutar y abrir
diskmgmt.msc
, eso abriría Administración de discos.
2. El método ISO loopback (avanzado)
En lugar de extraer contenido de una imagen ISO, GRUB y GRUB2 han podido arrancar desde imágenes ISO directamente a través de un dispositivo de bucle invertido. Dado que la imagen ISO es UEFI arrancable, podemos configurar una unidad USB que contenga múltiples ISO con diferentes sistemas operativos sin crear un desastre en la unidad USB.
Si desea iniciar Windows también, es posible que desee ver SARDU . Recuerdo haberlo usado con Windows PE alrededor de 2005 y parece que se actualizó para admitir unidades USB y UEFI, pero recuerde que esta herramienta también admite el arranque heredado.
¿Qué necesitamos?
- Conocimientos muy básicos de los archivos de configuración de GRUB.
- Conocimientos muy básicos de arranque UEFI y GRUB, ya que vamos a generar nuestra propia imagen de cargador de arranque GRUB con muchos módulos incluidos.
- Una imagen ISO de arranque UEFI, una unidad USB con formato FAT y una máquina que ejecuta Linux.
- No, no necesitamos una instalación UEFI de Linux (que puede ser una situación difícil), una máquina virtual Linux tradicional como en VirtualBox está bien.
2.1. Creando el binario
En su máquina Ubuntu o VM, asegúrese de que el paquete grub-efi-amd64-bin esté instalado (grub-efi-ia32-bin también está disponible para arquitecturas Intel de 32 bits en versiones más recientes). El paquete puede tener un nombre diferente en otra distribución, puede comparar la lista de archivos del paquete para encontrar el paquete correcto en su distribución.
El siguiente comando generará la imagen GRUB, en este caso un binario EFI que todas las computadoras con firmware UEFI deberían poder ejecutar:
grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \
fat iso9660 part_gpt part_msdos \
normal boot linux configfile loopback chain \
efifwsetup efi_gop efi_uga \
ls search search_label search_fs_uuid search_fs_file \
gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
exfat ext2 ntfs btrfs hfsplus udf
Cada firmware UEFI estándar debería buscar \EFI\BOOT\
un archivo llamado boot{arch}.efi
, así que cree las carpetas en la unidad USB y copie la imagen que acabamos de crear en esta ubicación. Son posibles otras arquitecturas en lugar de x64, pero seamos simples con x64 / amd64.
2.2. Crear el archivo de configuración
Un ejemplo muy básico para un grub.cfg
archivo de configuración que debería colocarse en el mismo directorio que bootx64.efi
se vería así:
set timeout=3
set color_highlight=black/light-magenta
menuentry 'Boot Ubuntu 14.04.2 LTS from ISO' {
set isofile="/efi/boot/ubuntu-14.04.2-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash persistent --
initrd (loop)/casper/initrd.lz
}
submenu 'Useful snippets' {
menuentry 'Ubuntu' {
chainloader /efi/ubuntu/grubx64.efi
}
menuentry 'Windows' {
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Firmware Setup' {
fwsetup
}
}
Lo importante es el bloque de configuración con el título Boot Ubuntu 14.04.2 LTS from ISO
. Puede cambiar el color y el tiempo de espera según sus preferencias. Elegí, black/light-magenta
ya que todavía se ve un poco Ubuntu-ish pero es fácilmente distinguible al cargar en cadena otras configuraciones. Puede encontrar más ejemplos para otras distribuciones en Arch Wiki y leer el manual de GRUB realmente vale la pena si quiere ir más allá.
Volviendo al bloque de configuración, debería ser obvio que se hace referencia al ISO /efi/boot/ubuntu-14.04.2-desktop-amd64.iso
, así que copie su ISO \EFI\BOOT\
y reemplácelo ubuntu-14.04.2-desktop-amd64.iso
en la configuración con el nombre de archivo real de su ISO.
loopback loop $isofile
es la línea, que cargará nuestro archivo ISO en un dispositivo de bucle invertido desde el cual podemos arrancar el kernel de Linux directamente. Esto es posible porque nuestra imagen EFI GRUB incluye el módulo loopback. (Hubo un poco de prueba y error al determinar qué módulos son razonables de incluir. No debería ver ningún mensaje de error, aún así no es perfecto.) Hablando del núcleo, puede agregar parámetros del núcleo toram
, parámetros para diferentes idiomas. (ejemplo locale=de_DE bootkbd=de
) y como en el ejemplo:persistent
2.3. Agregar persistencia
Puede agregar una partición como se describe en: ¿Cómo consigo un live-USB para usar una partición para persistencia? O puede crear un casper-rw
archivo y colocarlo en la raíz de su unidad USB.
dd if=/dev/zero of=casper-rw bs=1M count=4094
mkfs.ext4 -m 0 casper-rw
No he probado cuál es el máximo absoluto, debería estar entre 4094 y 4096 MB. Use una partición si tiene la intención de usar más espacio. Tenga en cuenta que cada cambio en la (raíz) es una modificación del sistema de archivos superpuestos, incluso eliminando archivos.
2.4. Comprobando la integridad
Debe consultar las respuestas a las siguientes preguntas para verificar que el contenido de Live ISO en la unidad USB esté en perfectas condiciones:
2.5. Arranque seguro UEFI
El arranque seguro será obligatorio con las máquinas con Windows 10, le sugiero que eche un vistazo al Precargador de Linux Foundation para agregar la funcionalidad de arranque seguro a esta configuración. Aquí hay algunas ilustraciones ASCII que ilustran los menús de la HashTool adjunta .
Felicidades, diría que ahora domina el arranque UEFI y ya no debería tener miedo.
Extracto del archivo ISO a FAT32
Extraer el contenido de un archivo ISO de escritorio de 64 bits de Ubuntu a una partición con un sistema de archivos FAT32 y un indicador de arranque hará el trabajo: crear una unidad en vivo, que arranca solo en modo UEFI. Aquí se llama 'Copiar archivos del método ISO' (en la respuesta aceptada).
Prueba si se ejecuta en modo UEFI o BIOS
Pero es fácil probar en un sistema Ubuntu en ejecución (en vivo e instalado), si se inició en modo UEFI o BIOS. Ejecute esta línea de comando,
Esto facilita el uso de sistemas en vivo que se pueden usar en ambos modos de arranque, lo que también puede ser una ventaja.
Consulte también los siguientes enlaces para obtener una explicación más detallada y una descripción del método,
help.ubuntu.com/community/Installation/iso2usb
help.ubuntu.com/community/Installation/iso2usb/diy
fuente
Usar
dd
funcionó para mí, por alguna razón, la versión GUI no funcionó. Entonces, primero, es posible que desee monitorear el progreso de dd , otra opción es usar la opción SIGUSR1 para disparardd
para informar su progreso periódicamente, pero esto es más complicado quepv
.Entonces:
(
/dev/device_you_want_to_use
normalmente será/dev/sdb
, pero consulte condf
!)fuente