GRUB2 Cómo (5): Construir una distribución Ubuntu ISO por sí mismo

Cuando se descarga un archivo ISO distribución Ubuntu, lo más probable, si se usa en una máquina virtual, es posible adjuntarlo a su cd-rom virtual directamente. Si desea instalarlo en una máquina física, lo más probable es que usted va a quemar a una memoria USB con la función denominada «Inicie Disk Creator» proporcionada por Ubuntu. Pero el archivo iso se podría utilizar de muchas maneras más flexibles. En este post, lo primero que vamos a través de diferentes patrones de uso de este archivo iso. Luego, basándose en el conocimiento de cómo se reunieron a partir de los mensajes de GRUB anteriores, analizaremos cómo se implementan estas características aparentemente mágicos. Por último, vamos a volver a crear una elaboración casera iso de Ubuntu. Esta re-creación es una buena forma de verificar lo que hemos aprendido acerca de Grub.

1. Ubuntu análisis Oficial Distribución ISO

iso de Ubuntu podría ser utilizado en los modelos 2×2. Bajo BIOS, puede ser arrancado como cd-rom o imagen de disco como: Bajo UEFI, también podría ser arrancado como cd-rom o como una imagen de disco, como se mostró a continuación:

$ qemu-m 512-cdrom ubuntu-13.04-desktop-amd64.iso
$ qemu-m 512-hda ubuntu-13.04-desktop-amd64.iso
$ qemu-m OVMF 512-bios . fd-hda ubuntu-13.04-desktop-amd64.iso
$ qemu-m 512-bios OVMF.fd-cdrom ubuntu-13.04-desktop-amd64.iso

boot «400» BIOS hasta la pantalla

pantalla

arranque UEFI «400» hasta la pantalla

El arranque de la BIOS y UEFI arriba son diferentes. Bajo BIOS, parece ser un arranque isolinux; Bajo UEFI, seguro que es un arranque de GRUB
Desde esta iso se podía iniciar como disco duro, cuando se quiere hacer una memoria USB para la instalación, un simple. «dd» comando podría hacer el truco, en lugar de «inicio hasta el creador del disco»:

dd if = ubuntu-13.04-desktop-amd64.iso of = / dev / sdc

2. Análisis de la estructura ISO

proceso de arranque 2.1 BIOS y UEFI

  • BIOS de disco: BIOS cargará el primer sector de todo el disco en la dirección de memoria 0x7C00, a continuación, saltar a ella;
  • BIOS-cdrom (sin emulación): BIOS Parafraseando el catálogo de arranque y entrada de inicio en el CD-ROM, localice la dirección y la longitud de core.img en cd-rom, a continuación, cargarlo en la memoria mirando desde 0x7C00, luego salta a ella
  • UEFI en disco:. UEFI se encuentra el ESP (partición del sistema EFI) en el disco. Bajo el directorio «/ EFI», elija una aplicación gestor de arranque para poner en marcha. «. / EFI / boot / boot (nombre arch) efi» Si no se especifica, el gestor de arranque bajo se pondrá en marcha
  • UEFI-cdrom (sin emulación):. La imagen de arranque El Torito debe ser una imagen de la partición ESP con un sistema de archivos FAT. Después se montan las imágenes de arranque, el proceso de arranque es el mismo que el arranque desde el disco duro.

2.2 Protective MBR, GPT y MBR híbrido

Al arrancar, el disco duro, para el caso de BIOS, puede generar un MBR de protección en el área de sistema de cd-rom sector 0. No es necesario, ya que la imagen de arranque GRUB se cruzó por iso a partir del sector 0, y ocupan lo que se necesita cada vez el espacio. Cuando la imagen de GRUB se carga en la memoria, con la ayuda del módulo de 9660 incluido, se dará cuenta de que el «disco duro» emulado en realidad es un cd-rom con el sistema de archivos ISO9660. Grub puede acceder a todos los archivos en el CD-ROM a través de 9660. GRUB no se basa en una partición para encontrar sus archivos «/ boot / grub». Podemos incrustar un archivo de configuración de grub en temprano imagen para ayudar a establecer la variable «prefijo», por lo que no tendremos el montaje del sistema de archivos iso9660 correcta problemas y utilizar el directorio «/ boot / grub» allí. Un MBR de protección es en realidad una «protección» contra otra herramienta de particionado, ya que ellos podrían pensar accidentalmente se trata de una imagen de disco vacía y operan en él.

Para el caso UEFI, firmware UEFI debe identificar una partición ESP de mesa GTP en el área de sistema de cd-rom. Esta ESP es el mismo que el que en caso de «UEFI-cdrom» mencionado anteriormente. Por suerte, el espec GTP es compatible con MBR, y preservar un MBR de protección en el sector 0. Así que dos tipos de particiones podría coexistir.

Usted puede incluso hacer una llamada «MBR híbrido» en el cuadro de GTP, donde el MBR tiene otras particiones, además de una partición protectora. Este es un truco útil cuando se desea instalar un sistema operativo en una tabla GPT, pero el sistema operativo no es conforme GPT. Todos los sistemas Windows de 32 bits antes de ganar 8 no se puede arrancar desde la partición GPT. Si desea que Windows XP, Windows 7 (32 bits) co-existir con Ubuntu en un disco GPT, MBR híbrido es la única manera. Para este tema, consulte gdisk página de inicio.

2.3 Múltiples entradas de arranque no-emulación de CD-ROM de arranque

imagen de arranque distinta de la BIOS y UEFI mandatos Desde para el arranque de cd, tenemos que proporcionar dos entradas de arranque de boot cd. Desde la perspectiva de El Torito especificación ‘, aquí está la disposición de los componentes correspondientes:

  • Tendrá un defecto / entrada de arranque inicial para el arranque de la BIOS
  • .

  • Contará con una sección Boot Cabecera con id = plataforma 0xEF (inicio de UEFI)
  • este Boot sección Encabezado contendrá una entrada de inicio para el arranque UEFI.

El arranque del firmware puede elegir con entrada de arranque para arrancar basado en el id de la plataforma.

2.4 Verificación

usamos Ubuntu iso distribución . para verificar nuestra teoría anterior
 $   isoinfo - d-i ubuntu-13.04-desktop-amd64.iso  
CD-ROM está en formato ISO 9660
Identificación del Sistema:
Volumen Identificación: Ubuntu 13.04 amd64 />
Identificación Editorial:
Identificación del preparador de datos: XORRISO-1.2.4 2012.07.20.130001, LIBISOBURN-1.2.4, LIBISOFS-1.2.4, libburn-1.2.4
Identificación Aplicación:
Identificación del Derecho de Autor del archivo:
Identificación archivo Resumen:
Identificación Archivo bibliográfica: Tamaño
conjunto de volúmenes es: 1
Volumen número de secuencia establecido es la siguiente: 1
tamaño de bloque lógico es: 2048 Tamaño
El volumen es: 401 920
El Torito VD versión 1 encontrado, catálogo de arranque se encuentra en el sector 170
Joliet con nivel UCS 3 encontrado
firmas Rock Ridge versión 1 encontrado
encabezado validación Eltorito:

Hid 1 Arch 0 (x86) ID /> Clave 55 AA
Eltorito defaultboot encabezado:
IdInicio 88 (de arranque) de medios de arranque />

tipo Sys 0
NSECT 4
Bootoff 60FAA 397226


$ xorriso-diálogo en
xorriso 1.2.4: RockRidge manipulador del sistema de archivos, el proyecto libburnia.


============================ opción y argumentos introducir :
inDev ubuntu-13.04-desktop-amd64.iso
======================== ======================================
xorriso: NOTA: Cargando árbol de imagen ISO desde LBA 0
xorriso: UPDATE: 467 linfáticos leído en 1 segundo
xorriso: NOTA: Detectado información de inicio El-Torito, que actualmente se fija para ser desechado
unidad actual:-inDev 'ubuntu- 13.04-desktop-amd64.iso '
corriente Medio: archivo stdio, overwriteable
estatus de medio: está escrito, es el registro de arranque />
El Torito , ISOLINUX imagen de arranque capaz de isohybrid
Resumen de Medios: 1 sesión, los bloques de datos 401 920, los datos de 785m, 32,4 g Identificación del libre
Volumen:
=== =========================
opción y los argumentos entre:
toc
================================================== ============
Corriente de impulsión:-inDev 'ubuntu-13.04-desktop-amd64.iso'
Tipo de impulsión: producto del proveedor 'yoyodyne «revisión» WARP Drive' '
actual FX01 'Medio: archivo stdio,
overwriteable estado de los medios de comunicación: está escrito, es
appendable bloques de medios: 401920 legible, escribible 16995938, 17397858 récord global Boot />
imagen de arranque:: '/ isolinux / isolinux imagen de arranque ISOLINUX capaz de isohybrid
catálogo de arranque El Torito, . bin ', boot_info_table = imagen de arranque />
Sesión ISO: 1, 0, 401920s, Ubuntu 13.04 amd64 />
libre de nwa medios:
401920s ===== =======================
opción y los argumentos entre:

final ========= ================================================== ===
============================

Como podemos ver, sólo isoinfo identifica una entrada de inicio a partir de la entrada inicial / Default. Esta es la entrada de inicio de BIOS. xorriso es más competente en este aspecto. Identificó dos entradas de arranque. Se trata de una entrada de inicio del BIOS ISOLINUX (/ isolinux / isolinux.bin), la otra es una entrada de arranque UEFI (/ boot / grub / efi.img, platform_id = 0xEF). En isodump, use la tecla ‘g’ para entrar en el sector (en hexadecimal) que desea examinar, y ‘a’ / ‘b’ para desplazarse hacia atrás y hacia adelante

$ isodump ubuntu-13.04-desktop-amd64.iso
96 [1] 34 18 432 02 / *. [PX = 1, TF] Bandera 0! = 81
96 [1] 14 2048 02 / * .. [PX = 1, TF] Bandera 0 = 81
120 [1] 61123 71280 00 / 16X16.FNT;!! 1 [PX = 1, TF, NM = 16×16.fnt] Bandera 0 = 89
124 [1] 61eda 3404 00 / ACCESS.PCX;! 1 [PX = 1, TF, NM = access.pcx] Bandera 0 = 89
120 [1] a9 0 00 / ADTXT.CFG; 1 [ PX = 1, TF, NM = adtxt.cfg] Bandera 0 = 89
112 [1] 610ab 3170 00 / AM.TR;! 1 [PX = 1, TF, NM = am.tr] Bandera 0! = 89
116 [1] 6160b 7339 00 / AST.HLP;! 1 [PX = 1, TF, NM = ast.hlp] Bandera 0 = 89
116 [1] 610ad 2205 00 / AST . TR; 1 [PX = 1, TF, NM = ast.tr] Bandera 0 = 89
120 [1] 61146 7500 00 / BACK.jpg;! 1 [PX = 1, TF, NM = volver. jpg] Bandera 0 = 89
116 [1] 6160f 11 720 00 / BE.HLP;!! 1 [PX = 1, TF, NM = be.hlp] Bandera 0 = 89
112 [1] 610af 3795 00 / BE.TR; 1 [PX = 1, TF, NM = be.tr] Bandera 0 = 89
116 [1] 61615 11703 00 / BG.HLP;! 1 [PX = 1, TF , NM = bg.hlp] Bandera 0 = 89
112 [1] 610b1 4237 00 / BG.TR;!! 1 [PX = 1, TF, NM = bg.tr] Bandera 0 = 89
120 [1] 61edc 11457 00 / BLANK.PCX; 1 [PX = 1, TF, NM = blank.pcx] Bandera 0 = 89
116 [1] 615d1 15128 00 / BN.HLP;! 1 [ PX = 1, TF, NM = bn.hlp] Bandera 0 = 89
120 [1] aa 2048 00 / BOOT.CAT ;! 1 [PX = 1, TF, NM = boot.cat] Bandera 0 = 89
120 [1] 61074 108 032 00 / bootlogo;!.! 1 [PX = 1, TF, NM = bootlogo] Bandera 0 = 89 />
Zone , zona offset: 34 0000 />

116 [1] 6165f 7086 00 / ID.HLP; 1 [PX = 1, TF, NM = id.hlp] Bandera 0 ! = 89
112 [1] 610d9 1968 00 / ID.TR;! 1 [PX = 1, TF, NM = id.tr] Bandera 0 = 89
116 [1] 61166 7432 00 / IS.HLP; 1 [PX = 1, TF, NM = is.hlp] Bandera 0 = 89
112 [1] 610da 2302 00 / IS.TR;! 1 [PX = 1, TF, NM = es . tr] Bandera 0 = 89
128 [1] 60faa 24576 00 / isolinux.bin ;!! 1 [PX = 1, TF, NM = isolinux.bin] Bandera 0 = 89
128 [1] 61ecc 103 00 / isolinux.cfg;! 1 [PX = 1, TF, NM = isolinux.cfg] Bandera 0 = 89
116 [1] 61627 7132 00 / IT.HLP ; 1 [PX = 1, TF, NM = it.hlp] Bandera 0 = 89
112 [1] 610dc 2196 00 / IT.TR;! 1 [PX = 1, TF, NM = it.tr] Marcar 0 = 89
116 [1] 61674 9409 00 / JA.HLP;!! 1 [PX = 1, TF, NM = ja.hlp] Bandera 0 = 89
112 [1] 610de 3286 00 / JA.TR; 1 [PX = 1, TF, NM = ja.tr] Bandera 0 = 89
116 [1] 61685 12434 00 / KA.HLP;! 1 [PX = 1, TF, NM = ka.hlp] Bandera 0 = 89
112 [1] 610e0 5276 00 / KA.TR;!! 1 [PX = 1, TF, NM = ka.tr] Bandera 0 = 89
116 [1] 61aff 13118 00 / KK.HLP;! 1 [PX = 1, TF, NM = kk.hlp] Bandera 0 = 89
112 [1] 610e3 3923 00 / KK.TR; 1 [PX = 1, TF, NM = kk.tr] Bandera 0 = 89
116 [1] 61663 18660 00 / KM.HLP;!! 1 [PX = 1, TF, NM = km.hlp] Bandera 0 = 89
112 [1] 610e5 5607 00 / KN.TR;! 1 [PX = 1, TF, NM = kn.tr] Bandera 0 = 89
116 [1] 61ea8 8260 00 / KO.HLP ; 1 [PX = 1, TF, NM = ko.hlp] Bandera 0 = 89 />
Zone, zona de desplazamiento: 38 0000

96 [1! ] 18 02 2048 / *. [PX = 1, TF] Bandera 0! = 81
96 [1] 17 2048 02 / * .. [PX = 1, TF] Bandera 0 = 81
116 [1] 6168c 2326528 00 / EFI.IMG ;! 1 [PX = 1, TF, NM = efi.img] Bandera 0 = 89
120 [1] 61afc 4987 00 / FONT.PF2;!! 1 [PX = 1, TF, NM = font.pf2] Bandera 0 = 89
120 [1] 615d9 951 00 / grub.cfg; 1 [PX = 1, TF, NM = grub.cfg] Bandera 0 = 89
128 [1] 61ed1 622 00 / LOOPBACK.CFG;! 1 [PX = 1, TF, NM = loopback.cfg] Bandera 0! = 89
122 [1] 19 26 624 02 / * X86_64_EFI [PX = 1, TF, NM = x86_64-efi] Bandera 0! = 89 />
Zone , zona offset: 18 0000
Desde el volcado crudo, podemos averiguar:

  • / isolinux / boot.cat comienza a 0xaa sector (170d), isoinfo y xorriso partidos entre sí
  • / isolinux / isolinux.bin comienza en 0x60faa sector, coincide de nuevo.
  • / boot / grub / efi.img comienza en 0x6168c sector, la longitud es 2326528 bytes. Esta información no se encuentra en la salida isoinfo. Tenemos que comprobarlo a través de otros medios.
En 9660, el contenido del archivo son tienda en sectores continuos (extents). Podemos volcar un archivo a partir de las empezando sector y una duración de la longitud del archivo. efi.img es 2326528/2048 = 1.136 sectores.
 $  dd if = ubuntu-13.04-desktop-amd64. iso de efi.img = bs = 2048 skip = 398988 count = 1136 

$ file efi.img
efi.img: sector de arranque x86, mkdosfs pantalla de mensajes de arranque del desplazamiento del código 0x3c, OEM -id "mkdosfs", sectores / cluster 4, entradas de raíz 512, sectores 4544 (volúmenes <= 32 MB), descriptor Medios 0xF8, sectores / FAT 4, dirige 64, número de serie 0x5a1dceb6, etiqueta: "", FAT (12 bit)

$ sudo mount efi.img / mnt / loop
$ find / mnt / loop
/ mnt / loop
/ mnt / loop / efi
/ mnt / loop / efi / boot
/ mnt/loop/efi/boot/bootx64.efi
/ mnt/loop/efi/boot/grubx64.efi
/ mnt / loop / NvVars />

Entonces, efi.img es una imagen de partición ESP.

 $  fdisk-l ubuntu-13.04-desktop-amd64.iso /> 



disco ubuntu-13.04-desktop-amd64.iso: 823 MB, 823 132 160 bytes
255 cabezas, 63 sectores / pista, 100 cilindros, el total de 1.607.680 sectores
Unidades = sectores de 1 * 512 = 512 bytes
tamaño Sector (lógico / físico): 512 bytes / 512 bytes
tamaño de E / S (mínimo / óptimo): 512 bytes / 512 bytes
Identificador de disco: 0x71bafca0

Bloques de dispositivos de arranque Start End Id Sistema
ubuntu-13.04-desktop-amd64.iso1 * 0 1.607.679 803.840 0 vacía
ubuntu-13.04- desktop-amd64.iso2 1.595.952 1.600.495 2.272 ef EFI (FAT-12/16/32)

$ gdisk-l ubuntu-13.04-desktop-amd64.iso
fdisk GPT (gdisk) versión 0.8.5 />

MBR: MBR sólo
BSD: Ausente
APM: Ausente
GPT: Ausente />

********************************** *****************************
Encontrado inválida GPT y válida MBR; convertir MBR formato GPT.
******************************************* ******************** /> ​​
disco ubuntu-13.04-desktop-amd64.iso: 1607680 sectores, 785.0 MiB
sector lógico Tamaño: 512 bytes
Disk identifier (GUID): 2ADB802E-C60E-4C68-A9CC-BAEE0632D69D tabla de particiones />
En primer sector utilizable es 34, último sector utilizable es 1607646
Las particiones se alinean en límites de 16 sectores
espacio libre total es de 1.603.069 sectores (782.7 MiB)

Número Start End (sector) (sector) Tamaño Código Nombre
2 1.595.952 1.600.495 2,2 MiB EF00 sistema EFI

Tanto MBR y GPT mostrar una partición ESP. El sector de inicio de esta partición, cuando se mide en 2.048 sector de bytes, es 1595952/4 = 398988d (0x6168C). La longitud de esta partición, cuando se transfieren en bytes, es (1600495-1595952 1) * 512 = 2326528. A partir de este número dos, sabemos que es exactamente el archivo «/ boot / grub / efi.img». Arranque de arranque del disco duro Así UEFI y cd-rom está compartiendo la partición ESP, lo que sin duda no es una sorpresa.

Es una sorpresa que la tabla GPT no es válido o sólo parcialmente correcta según gdisk . No sé por qué sucede tal cosa, porque no sé cómo este «MBR híbrido» es generado por Ubuntu. Supongo que es generar por un util llamado «isohybrid». En teoría tal error no debería ocurrir. Tenemos que asegurarnos de que en nuestra casa elaborada ubuntu iso, tal discrepancia no va a suceder.

3. Home Brewed Ubuntu CD de distribución

El requisito de nuestra casa iso elaborado cerveza son:

  • Debería funcionar como el iso original, salvo algún cambio interfaz de menú;
  • Utilizamos Grub y xorriso sólo, sin isolinux;
  • Todas las imágenes de arranque se volverán a generar; No vuelva a usar las imágenes de arranque en iso original;
Comencemos el viaje.
 rm-rf iso /> 
# extracto de iso . al sistema de archivos
xorriso-osirrox-en inDev ubuntu-13.04-desktop-amd64.iso-extract / / iso
# eliminar archivos que no sean necesarios
sudo chown-R luke: iso luke
sudo chmod-R + w iso
sudo rm-rf iso / isolinux iso / EFI iso / boot
mkdir-p iso / boot / grub />

si [x "$ {grub_platform}" = xefi]; entonces
loadfont / boot/grub/fonts/unicode.pf2
conjunto gfxmode = auto
insmod efi_gop

efi_uga insmod insmod gfxterm

terminal_output gfxterm fi

conjunto menu_color_normal = blanco / negro
establecer menu_color_highlight = negro / gris claro />


linux / casper / vmlinuz.efi file = / cdrom / preseed / boot ubuntu.seed = casper quiet splash -
initrd / casper / initrd.lz
}
menuentry "Instalar Ubuntu" {/>
linux / casper / vmlinuz. archivo efi = / cdrom / preseed / boot ubuntu.seed = casper only-ubicuidad quiet splash -
initrd / casper / initrd.lz
}
menuentry "OEM instalar (para los fabricantes)" {set gfxpayload />
archivo linux / casper / vmlinuz.efi = / cdrom / preseed / boot ubuntu.seed = casper only-ubicuidad quiet splash oem-config/enable = true -
initrd / casper /
initrd.lz}
menuentry "Comprobar disco para defectos" {
conjunto gfxpayload = mantener />
initrd / casper / initrd.lz
}


Ahora # ssh en una máquina ubuntu
efi ssh xxx.xxx.xxx . xxx
cat> early.cfg < early.cfg < eltorito.img cp />



# generar el primera versión de la norma ISO, que puede ser de arranque como cdrom de la BIOS y el entorno UEFI


xorriso-opciones-de-archivo option.txt

# ahora esto iso debe ser capaz de se debe arrancar, cd-rom, en biografías y env efi

qemu-cdrom ubuntu.iso
qemu-bios OVMF.fd-cdrom ubuntu.iso


# siguiente, tenemos que hacer una tabla de partición GPT en este iso. Una partición es el ESP, que apunta a la imagen FAT / boot / efi.img; Otra
# uno es una "partición de arranque de la BIOS", utilizado por Grub para flashear el core.img. En la tabla GPT, no hay ninguna brecha entre el sector 0 MBR y
# sector 1 encabezado GPT. Grub no tiene más remedio que instalar core.img a una partición específica con el tipo de "partición de arranque de la BIOS".

# primero necesitamos pad ubuntu.iso a un límite de megabytes, así que podría haber espacio a GPT mesa de pie de página y bios de arranque partición

ll ubuntu.iso. - rw-rw-r -. 1 luke luke 829358080 26 de junio 22:07 ubuntu.iso
sectores # totoal = 829358080/512 = 1619840

# dejarnos pad iso a 800MiB
# 800x (2 ^ 20) = 838.860.800, 838.860.800 hasta 829358080 = 9502720
# nuevos sectores totales = dd /> 838860800/512 = 1638400
gato ubuntu.iso pad.img> ubuntupad.iso
# tenemos que averiguar los sectores de / boot / efi.img en cd-rom (2048 byte sector) y transferirlo en los sectores del disco duro (512 bytes)
$ isodump ubuntupad.iso
96 [1] 35 2048 02 / *. [PX = 1, TF] Bandera 0! = 81
96 [1] 33 2048 02 / * .. [PX = 1, TF] Bandera 0 = 81
120 [1] 8c 2048 00 / BOOT.CAT;!! 1 [PX = 1, TF, NM = boot.cat] Bandera 0 = 89
116 [1] 8d 8388608 00 / EFI.IMG ;! 1 [PX = 1, TF, NM = efi.img] Bandera 0 = 89
128 [1] 157a 32265 00 / ELTORITO.IMG;! 1 [PX = 1, TF, NM = eltorito.img] Bandera 0 = 89
110 [1] 36 2048 02 / * GRUB [PX = 1, TF, NM = larva] Bandera 0 = 89 />
Zone, zona de desplazamiento: 35 0000 />
8MiB # por lo que el primer sector de EFI.IMG se 0x8D (141d) x4 = 564D, y el tamaño es (16,384 sector del disco duro). Ahora sabemos que el
# exacta posición de partición ESP en GPT

# make partición GPT en ubuntupad.iso
$ gdisk-l ubuntupad.iso
Número inicial ( sector) End (sector) Tamaño Código Nombre
1 564 16 947 8.0 Sistema EFI MiB EF00
2 1.622.016 1.638.366 8,0 MiB EF02 BIOS partición de arranque />
# en este momento, ubuntupad.iso se puede arrancar como un disco duro en UEFI

qemu-bios OVMF.fd-hda ubuntupad.iso

# próximo usamos grub-bios-setup parpadeando boot.img y core.img a un archivo de disco GPT que tiene el mismo tamaño / diseño con ubuntupad.iso,
# pero está vacía al principio. En primer lugar, creamos la misma mesa gpt para este archivo de disco, entonces usamos grub-bios-setup a parpadear boot.img y
core.img en ella. A continuación copiamos el MBR y bios-boot-partición de nuevo a ubuntupad.iso.
# la razón para utilizar un archivo de disco gpt actuando como intermediario es, grub-bios-setup es confundido por el diseño híbrido de ubuntupad.iso.
# Este iso cuenta con sistema iso9660 archivo, partición GPT y MBR de protección sobre ella, y grub-bios-setup simplemente no puede encontrar una
correcta # solución a parpadear boot.img y core.img en ella. Hacemos grub-bios-setup un favor dándole un archivo de disco gpt simple,
# entonces grub-bios-setup es feliz de hacer su trabajo. Luego copiamos los archivos que han sido retocadas grub-bios-setup de nuevo a ubuntupad.iso.
# Cada uno es feliz ahora.

sgdisk-b gpt.bak ubuntupad.iso
fallocate-l 838860800 gpt.disk
sgdisk-l gpt.bak gpt.disk
gpt losetup-f. disco
sudo partprobe / dev/loop0
sudo mkfs.vfat-I / dev/loop0p1 sudo />
sudo cp core.img / mnt / loop
sudo cp / usr/lib/grub/i386-pc/boot.img / mnt / loop />


dd if = / = dev/loop0p2 de ubuntupad.iso bs = 512 seek = 1622016 conv = notrunc



# ahora todo escenario de arranque 4 debería funcionar ahora
qemu-cdrom ubuntupad.iso
qemu-hda ubuntupad.iso
qemu-hda ubuntupad.iso-bios OVMF.fd
qemu-cdrom OVMF.fd

La opción ubuntupad.iso-bios . txt utilizado por xorriso está aquí:

 outdev ubuntu.iso 
blanco
as_needed VOLID "Ubuntu 13.04 amd64"

Mapa. ​​/ iso / /

# agregar una imagen de arranque de la BIOS cd.
boot_image cualquier bin_path = / boot / eltorito.img
boot_image cualquier emul_type = no_emulation
boot_image cualquier boot_info_table = />
cualquier platform_id = 0x00
boot_image cualquier lado

# añade efi entrada de arranque de cd rom
boot_image cualquier bin_path = / boot / efi.img
boot_image cualquier emul_type = no_emulation
boot_image cualquier load_size = 4194304
boot_image cualquier platform_id = 0xEF



# generar un boot_image catálogo de arranque archivo
cualquier cat_path = / boot / boot.cat />

commit final

El arranque instantánea es la misma para los cuatro de configuración. Ya que estamos usando la misma grub.cfg

Arranca la pantalla

4. Resumen

Creación de un hogar elaboradas Ubuntu iso distribución es un largo viaje. Durante este proceso, se utiliza casi todos los conocimientos obtenidos de las entradas anteriores y, finalmente, hacer que funcione. SyntaxHighlighter.highlight ();

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *