AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1168036
Accepted
Baa
Baa
Asked: 2019-08-24 13:50:09 +0800 CST2019-08-24 13:50:09 +0800 CST 2019-08-24 13:50:09 +0800 CST

Criando o live-usb inicializável UEFI usando ISO personalizado

  • 772

Eu tenho um dispositivo com uma CPU AMD64, mas um bootloader UEFI que suporta apenas i386.

Eu fiz um instalador ISO personalizado do Ubuntu 19.04 usando o Cubic e o atualizei para um USB usando usb-creator-gtk (Startup Disk Creator).

Isso cria duas partições no USB:

Partições USB

A primeira partição formatada como ISO9660 e contém o conteúdo ISO, a segunda é uma partição FAT32 que contém apenas os arquivos de inicialização .EFI.

A segunda partição é a partir da qual o tablet será inicializado. Seu conteúdo vem de um arquivo efi.img armazenado em /boot/grub na ISO. Este originalmente continha apenas arquivos AMD64 EFI.:

Arquivos de inicialização AMD64

Eu criei meu próprio arquivo img.efi de substituição e inseri um arquivo bootia32.efi usando estes comandos:

dd if=/dev/zero of=efi.img bs=1M count=5
mkfs.fat efi.img
sudo mount -o loop,rw efi.img /media/efi
sudo cp -r <files> /media/efi

Isso cria com sucesso um USB inicializável, mas não carrega o instalador Grub, apenas carrega uma linha de comando do Grub.

Eu usei este bootia32.efiarquivo para carregar o grub com sucesso antes, se eu formatar manualmente o USB como FAT32, copiar os arquivos ISO e colocar o arquivo EFI personalizado dentro de /EFI/BOOT, o dispositivo inicializará no Grub como eu esperaria .

Mas eu gostaria de fazer um ISO que possa ser exibido normalmente e inicializar bem.

Minha pergunta é: qual é o objetivo de criar uma partição separada para manter os arquivos EFI de inicialização como o usb-creator-gtk faz? Como faço para que essa partição carregue a configuração do Grub do instalador em vez de apenas a linha de comando do Grub?

obrigada

grub2 boot live-usb custom-installer uefi
  • 1 1 respostas
  • 5024 Views

1 respostas

  • Voted
  1. Best Answer
    Baa
    2019-08-27T09:47:20+08:002019-08-27T09:47:20+08:00

    Obrigado a @oldfred por explicar que as partições separadas devem superar o limite de tamanho de arquivo de 4 GB para FAT32.

    Consegui criar o ISO inicializável colocando a bootpasta e as EFIpastas do ISO na partição FAT32 (efi.img).

    Modifiquei o grub.cfg para iniciar a partir de uma partição diferente daquela em que está.

    Isso não me parece certo porque o arquivo efi.img original tinha apenas três arquivos:

    BOOTx64.EFI
    grubx64.efi
    mmx64.efi
    

    Mas, funciona, então estou feliz.

    A estrutura exata do meu arquivo efi.img é esta:

    .
    ├── boot
    │   └── grub
    │       ├── font.pf2
    │       ├── grub.cfg
    │       ├── loopback.cfg
    │       └── x86_64-efi
    │           ├── acpi.mod
    │           ├── adler32.mod
    │           ├── ahci.mod
    │           ├── all_video.mod
    │           ├── aout.mod
    │           ├── appleldr.mod
    │           ├── archelp.mod
    │           ├── ata.mod
    │           ├── at_keyboard.mod
    │           ├── backtrace.mod
    │           ├── bfs.mod
    │           ├── bitmap.mod
    │           ├── bitmap_scale.mod
    │           ├── blocklist.mod
    │           ├── boot.mod
    │           ├── bsd.mod
    │           ├── bswap_test.mod
    │           ├── btrfs.mod
    │           ├── bufio.mod
    │           ├── cat.mod
    │           ├── cbfs.mod
    │           ├── cbls.mod
    │           ├── cbmemc.mod
    │           ├── cbtable.mod
    │           ├── cbtime.mod
    │           ├── chain.mod
    │           ├── cmdline_cat_test.mod
    │           ├── cmp.mod
    │           ├── cmp_test.mod
    │           ├── command.lst
    │           ├── cpio_be.mod
    │           ├── cpio.mod
    │           ├── cpuid.mod
    │           ├── crc64.mod
    │           ├── cryptodisk.mod
    │           ├── crypto.lst
    │           ├── crypto.mod
    │           ├── cs5536.mod
    │           ├── ctz_test.mod
    │           ├── datehook.mod
    │           ├── date.mod
    │           ├── datetime.mod
    │           ├── diskfilter.mod
    │           ├── disk.mod
    │           ├── div.mod
    │           ├── div_test.mod
    │           ├── dm_nv.mod
    │           ├── echo.mod
    │           ├── efifwsetup.mod
    │           ├── efi_gop.mod
    │           ├── efinet.mod
    │           ├── efi_uga.mod
    │           ├── ehci.mod
    │           ├── elf.mod
    │           ├── eval.mod
    │           ├── exfat.mod
    │           ├── exfctest.mod
    │           ├── ext2.mod
    │           ├── fat.mod
    │           ├── file.mod
    │           ├── fixvideo.mod
    │           ├── font.mod
    │           ├── fs.lst
    │           ├── gcry_arcfour.mod
    │           ├── gcry_blowfish.mod
    │           ├── gcry_camellia.mod
    │           ├── gcry_cast5.mod
    │           ├── gcry_crc.mod
    │           ├── gcry_des.mod
    │           ├── gcry_dsa.mod
    │           ├── gcry_idea.mod
    │           ├── gcry_md4.mod
    │           ├── gcry_md5.mod
    │           ├── gcry_rfc2268.mod
    │           ├── gcry_rijndael.mod
    │           ├── gcry_rmd160.mod
    │           ├── gcry_rsa.mod
    │           ├── gcry_seed.mod
    │           ├── gcry_serpent.mod
    │           ├── gcry_sha1.mod
    │           ├── gcry_sha256.mod
    │           ├── gcry_sha512.mod
    │           ├── gcry_tiger.mod
    │           ├── gcry_twofish.mod
    │           ├── gcry_whirlpool.mod
    │           ├── geli.mod
    │           ├── gettext.mod
    │           ├── gfxmenu.mod
    │           ├── gfxterm_background.mod
    │           ├── gfxterm_menu.mod
    │           ├── gfxterm.mod
    │           ├── gptsync.mod
    │           ├── grub.cfg
    │           ├── gzio.mod
    │           ├── halt.mod
    │           ├── hashsum.mod
    │           ├── hdparm.mod
    │           ├── help.mod
    │           ├── hexdump.mod
    │           ├── hfs.mod
    │           ├── hfspluscomp.mod
    │           ├── hfsplus.mod
    │           ├── http.mod
    │           ├── iorw.mod
    │           ├── jfs.mod
    │           ├── jpeg.mod
    │           ├── keylayouts.mod
    │           ├── keystatus.mod
    │           ├── ldm.mod
    │           ├── legacycfg.mod
    │           ├── legacy_password_test.mod
    │           ├── linux16.mod
    │           ├── linuxefi.mod
    │           ├── linux.mod
    │           ├── loadbios.mod
    │           ├── loadenv.mod
    │           ├── loopback.mod
    │           ├── lsacpi.mod
    │           ├── lsefimmap.mod
    │           ├── lsefi.mod
    │           ├── lsefisystab.mod
    │           ├── lsmmap.mod
    │           ├── ls.mod
    │           ├── lspci.mod
    │           ├── lssal.mod
    │           ├── luks.mod
    │           ├── lvm.mod
    │           ├── lzopio.mod
    │           ├── macbless.mod
    │           ├── macho.mod
    │           ├── mdraid09_be.mod
    │           ├── mdraid09.mod
    │           ├── mdraid1x.mod
    │           ├── memrw.mod
    │           ├── minicmd.mod
    │           ├── minix2_be.mod
    │           ├── minix2.mod
    │           ├── minix3_be.mod
    │           ├── minix3.mod
    │           ├── minix_be.mod
    │           ├── mmap.mod
    │           ├── moddep.lst
    │           ├── morse.mod
    │           ├── mpi.mod
    │           ├── msdospart.mod
    │           ├── mul_test.mod
    │           ├── multiboot2.mod
    │           ├── multiboot.mod
    │           ├── nativedisk.mod
    │           ├── net.mod
    │           ├── newc.mod
    │           ├── ntfscomp.mod
    │           ├── ntfs.mod
    │           ├── odc.mod
    │           ├── offsetio.mod
    │           ├── ohci.mod
    │           ├── part_acorn.mod
    │           ├── part_amiga.mod
    │           ├── part_apple.mod
    │           ├── part_bsd.mod
    │           ├── part_dfly.mod
    │           ├── part_dvh.mod
    │           ├── part_gpt.mod
    │           ├── partmap.lst
    │           ├── part_msdos.mod
    │           ├── part_plan.mod
    │           ├── part_sun.mod
    │           ├── part_sunpc.mod
    │           ├── parttool.lst
    │           ├── parttool.mod
    │           ├── password.mod
    │           ├── password_pbkdf2.mod
    │           ├── pata.mod
    │           ├── pbkdf2.mod
    │           ├── pbkdf2_test.mod
    │           ├── pcidump.mod
    │           ├── play.mod
    │           ├── png.mod
    │           ├── priority_queue.mod
    │           ├── probe.mod
    │           ├── procfs.mod
    │           ├── progress.mod
    │           ├── raid5rec.mod
    │           ├── raid6rec.mod
    │           ├── random.mod
    │           ├── read.mod
    │           ├── reboot.mod
    │           ├── regexp.mod
    │           ├── reiserfs.mod
    │           ├── relocator.mod
    │           ├── romfs.mod
    │           ├── scsi.mod
    │           ├── serial.mod
    │           ├── setjmp.mod
    │           ├── setjmp_test.mod
    │           ├── setpci.mod
    │           ├── shift_test.mod
    │           ├── signature_test.mod
    │           ├── sleep.mod
    │           ├── sleep_test.mod
    │           ├── spkmodem.mod
    │           ├── squash4.mod
    │           ├── syslinuxcfg.mod
    │           ├── terminal.lst
    │           ├── terminal.mod
    │           ├── terminfo.mod
    │           ├── test_blockarg.mod
    │           ├── testload.mod
    │           ├── test.mod
    │           ├── testspeed.mod
    │           ├── tftp.mod
    │           ├── tga.mod
    │           ├── time.mod
    │           ├── trig.mod
    │           ├── tr.mod
    │           ├── true.mod
    │           ├── udf.mod
    │           ├── ufs1_be.mod
    │           ├── ufs1.mod
    │           ├── ufs2.mod
    │           ├── uhci.mod
    │           ├── usb_keyboard.mod
    │           ├── usb.mod
    │           ├── usbms.mod
    │           ├── usbserial_common.mod
    │           ├── usbserial_ftdi.mod
    │           ├── usbserial_pl2303.mod
    │           ├── usbserial_usbdebug.mod
    │           ├── usbtest.mod
    │           ├── verify.mod
    │           ├── video_bochs.mod
    │           ├── video_cirrus.mod
    │           ├── video_colors.mod
    │           ├── video_fb.mod
    │           ├── videoinfo.mod
    │           ├── video.lst
    │           ├── video.mod
    │           ├── videotest_checksum.mod
    │           ├── videotest.mod
    │           ├── xfs.mod
    │           ├── xnu.mod
    │           ├── xnu_uuid.mod
    │           ├── xnu_uuid_test.mod
    │           ├── xzio.mod
    │           └── zfscrypt.mod
    └── efi
        └── boot
            ├── bootia32.efi
            ├── BOOTx64.EFI
            ├── grubx64.efi
            └── mmx64.efi
    

    Alguns deles provavelmente não são necessários, mas não estou preocupado com os 10 MB extras de espaço que ele usa.

    Este é o meu grub.cfg dentro do arquivo img.efi, observe o set root=(hd0):

    if loadfont /boot/grub/font.pf2 ; then
        set gfxmode=auto
        insmod efi_gop
        insmod efi_uga
        insmod gfxterm
        terminal_output gfxterm
    fi
    
    set menu_color_normal=white/black
    set menu_color_highlight=black/light-gray
    
    set timeout=5
    menuentry "Install Ubuntu Server" {
        set root=(hd0)
        set gfxpayload=keep
        linux   /casper/vmlinuz  boot=casper only-ubiquity quiet splash ---
        initrd  /casper/initrd
    }
    menuentry "Run from internal disk" {
        linux    (hd1,gpt2)/boot/vmlinuz root=/dev/mmcblk1p2 intel_idle.max_cstate=0 quiet splash $vt_handoff
        initrd   (hd1,gpt2)/boot/initrd
    }
    

    Se alguém puder esclarecer mais sobre o que deve estar dentro do arquivo efi.img, por favor me avise.

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve