Criar um USB inicializável (UEFI GRUB) para Ubuntu e Windows 7 Instalar


12

Quero criar um EFI USB inicializável para instalar o Ubuntu e o Windows 7 (talvez com utilitários como o PartedMagic ). Eu fiz isso usando o MultiSystem anteriormente. No entanto, estou usando o GPT e a instalação do Windows precisa ser iniciada no modo EFI para instalar no sistema GPT. Suponho que devo usar o GRUB EFI? Se não há um aplicativo como o MultiSystem que cria um USB inicializável GRUB EFI, como posso criar um?

Suponho que formatar meu USB como GPT e instalar o GRUB EFI nele (como?). Então eu preciso configurar o GRUB EFI para carregar a instalação do Ubuntu e Windows 7 no EFI? Como posso fazer isso?

ATUALIZAR

Aqui está o que eu tentei

  • Criar 2 partições no meu USB (GPT, 100 + MB FAT32 (/ dev / sdc1, definir sinalizador de inicialização), o restante FAT32, / dev / sdc2, para instalações)
  • Extraia o iso do Windows 7 e Ubuntu 11.10 para a partição Installer, 2 pastas diferentes
  • Tentei usar sudo elilo -b /dev/sdc1--autoconf --efiboot -v`

jiewmeng@JM:~$ sudo elilo -b /dev/sdc1 --autoconf --efiboot -v
elilo: backing up existing /etc/elilo.conf as /etc/elilo.conf-
Loaded efivars kernel module to enable use of efibootmgr
elilo: Checking filesystem on /dev/sdc1...
elilo: Mounting /dev/sdc1...
e    lilo: 44298KB needed, 78781KB free, 42192KB to reuse
elilo: Installing primary bootstrap /usr/lib/elilo/elilo.efi onto /dev/sdc1...
elilo: Installing /tmp/elilo.k8NWXX on /dev/sdc1...
elilo: Installing /vmlinuz on /dev/sdc1...
elilo: Installing /vmlinuz.old on /dev/sdc1...
elilo: Installing /initrd.img on /dev/sdc1...
elilo: Installing /initrd.img.old on /dev/sdc1...
elilo: Updating EFI boot-device variable...
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: An error occured while updating boot menu, we'll ignore it
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: Installation complete.

Não sudo modprobe efivarsobtive saída, mas recebi o mesmo erro, acho que é porque não estou inicializado no EFI Ubuntu?

Em seguida, tentarei usar o USB Startup Disk Creator para inicializar em um sistema ativo no modo EFI e tentar novamente

ATUALIZAR

Estou tão perdido, o Windows está instalado primeiro a culpa? Formatei e fiz um USB inicializável para o Ubuntu Alternate com UNetBootIn, e ele também falhou com o mesmo erro de nenhum kernel disponível. Se eu criei um Ubuntu Desktop, eu receberei não pode configurar fontes apt

O syslog para instalação na área de trabalho do ubuntu http://pastebin.com/CdbUPXax

Acho melhor não perder tempo e voltar ao MBR em breve ... isso significa que, de alguma forma, tenho que fazer backup de todos os meus dados primeiro ... e é por isso que estou atrasando-os até o último recurso ... alguma idéia?

ATUALIZAR

Tentei inicializar o Ubuntu 11.10 Alternate no modo BIOS (não EFI), instalado corretamente, exceto que não consigo instalar um carregador de inicialização. Diz erro fatal. Eu instalei o GRUB inicializando o USB no modo de recuperação. Funciona, mas não inicializa. Dá uma tela em branco na inicialização. Se eu tentar entrar no modo de recuperação (no disco rígido, onde o ubuntu está instalado), o teclado parece falhar, mas o mouse tem luz.


Você já olhou para isso? unetbootin.sourceforge.net
Dustin L.

Easy2Boot pode ser o que você deseja.
SteveSi

As respostas são melhores quando são mais do que apenas um link ou referência a alguma solução em potencial. As respostas que mostram como fazer algo ou, pelo menos, descrevem a abordagem geral são o que buscamos aqui.
Slm

Respostas:


8

Estou trabalhando em uma atualização para esta pergunta / resposta.
Isso não funciona sem erros, mas, como trabalhei com o @jiewmeng, descobri que o objetivo era usar um USB para instalar o Windows e o Ubuntu em um disco rígido, UEFI.
Demorou um pouco e eu encontrei a solução, mas precisamos limpar a pergunta e a resposta.
Talvez a pergunta original também possa ser respondida, mas como o objetivo era mais do lado da instalação, o UEFI USB de inicialização única parecia menos importante.
Atualmente, estou usando dois pen drives, um para Windows e outro para Ubuntu.
Este é um WIP a ser atualizado o mais rápido possível

Estou trabalhando nisso há alguns dias, horas extras aqui e ali e, finalmente, tenho um único USB, que inicializará e oferecerá a instalação do Windows 7 e do Ubuntu.
Minha configuração é específica de 64 bits, você pode tentar alterar para acomodar um intall de 32 bits, mas há muitas diferenças nos nomes de arquivos. Por favor, acompanhe se você precisar de 32 bits. Dito isto...

Você não pode instalar o Windows 7 a partir de um USB formatado por GPT.
Você pode usar o gdisk, ou parted, e criar um GPT USB, que será inicializado via UEFI.
Você poderá configurar o gerenciador de inicialização UEFI para carregar o instalador do Windows a partir do USB, mas o instalador procurará por arquivos e dados necessários para executar a instalação e não reconhecerá o GPT USB, enquanto encontrará um MBR USB .

No entanto, isso tem pouca importância, já que a UEFI analisa a partição MBR / GPT e EFI. Consulte a entrada da Wikipedia sobre Inicialização UEFI.

Apesar de usar um MBR padrão para o USB, é possível instalar via UEFI em um disco GPT.

O seguinte funcionou usando instalações de 64 bits, no UEFI Asus Sabertooth de 64 bits.
O firmware em cada placa-mãe é muito específico e cada firmware UEFI da placa-mãe procura a inicialização da UEFI de maneira diferente. Você pode ter problemas com a sua placa mãe encontrando dados de inicialização, mas o seguinte funciona no meu ASUS.

Aqui está como eu criei um USB inicializável com uma cópia instalável do DVD do Windows 7 de 64 bits e uma ISO do Ubuntu (neste exemplo, a versão 11.10 de 64 bits da área de trabalho).

Usando um USB 16G, que é tudo o que eu tinha em mãos ...
meu USB instalado como / dev / sdc, altere as referências relevantes para o dispositivo apropriado para o seu USB.
Verifique se você tem o 7zip instalado.

fdisk /dev/sdc
create new MBR, 'o' command
create new partition, part 1, size 8G, type ef, set bootable, write
mkfs.vfat -F32 /dev/sdc1
mkdir /mnt/USB
mount /dev/sdc1 /mnt/USB
insert Windows 7 x64 DVD, again, mine appeared as /media/UDF\ Volume, you need to change references below
# Extract/Copy the entire Windows DVD to the USB
cp -r /media/UDF\ Volume/* /mnt/USB
# I don't know what effect the following rename has, I copied blindly from another webpage.
mv /mnt/USB/sources/ei.cfg /mnt/USB/sources/ei.cfg_
cd /mnt/USB/efi/microsoft/boot/
7z e /mnt/USB/sources/install.wim 1/Windows/Boot/EFI/bootmgfw.efi
cp -r /mnt/USB/efi/microsoft/boot /mnt/USB/efi/
mv /mnt/USB/efi/boot/bootmgfw.efi /mnt/USB/efi/boot/bootx64.efi
# At this point I booted the USB, and installed Windows 7 to a GPT SSD
# Upon reboot I noticed the Windows Boot loader in my UEFI boot list (actually it made itself 1st).
# so, here we have a standalone Windows7 UEFI installer that will function correctly (64bit ASUS, at least).
# Now, on to adding Ubuntu
cd /mnt/USB
7z x /path2iso/ubuntu-11.10-desktop-amd64.iso
# If 7z finds prexisting files with the same name, just allow always overwrite
# (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? A

# At this point I booted the USB, and installed Ubuntu x64 to a GPT SSD
# we have a standalone Ubuntu 64bit installer that install Ubuntu 64

# Now, on to add a boot manager that will allow us to select between Windows 7 and Ubuntu

# Get the target UUID of the USB partition, using either blkid or the following command
grub-probe --target=fs_uuid /mnt/USB/efi/Microsoft/Boot/bootmgfw.efi  
will print YOUR_UUID # Substitute into the following references to YOUR_UUID

# Append the following menuentry to /mnt/USB/boot/grub/x86_64-efi/grub.cfg

menuentry "Microsoft Windows x86_64 UEFI-GPT Setup" {
    insmod usbms  
    insmod part_gpt  
    insmod part_msdos  
    insmod fat  
    insmod search_fs_uuid  
    insmod chain  
    search --fs-uuid --no-floppy --set=root YOUR_UUID # <- CHANGE THIS TO YOUR UUID
    chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi  
}

E pronto! Um pendrive USB funcional que usa o grub como gerenciador de inicialização, permitindo a instalação em discos GPT com instalação UEFI.

Se você tiver algum erro, não hesite em me enviar uma mensagem e eu analisarei isso.


Inicializei com sucesso no Windows Installer no ponto " Nesse momento, inicializei o USB e instalei o Windows 7 ". No entanto, ao tentar grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi 4983-DA78, recebo "Argumento extra desconhecido '4983-DA78'."
Jiew Meng

A execução do grub-probe fornece o uuid a ser usado. É então substituído no texto a seguir.
BSD

o comando é apenas grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi sem argumentos. O valor '4983-DA78' é seu UUID sendo retornado pelo grub-probe, para você usar no texto a seguir como YOUR_UUID
bsd

Windows instalado bem, mas quando eu tentei o Ubuntu diz que não há kernel, alguma idéia?
Jiew Meng

Você instalou o Ubuntu em uma máquina que já tinha o Windows 7 instalado através do pen drive UEFI?
BSD

3

Eu farei o meu melhor para responder à pergunta, espero que eu o leve na direção certa.

Como você já sabe, a instalação do Win7 x64 a partir da GPT só é possível na EFI. Pior ainda, você não pode usar nenhum híbrido, pois o Win7 x64 trata qualquer disco híbrido como MBR herdado. Portanto, você deve redefinir / repartir seu USB como GPT. Esse tipo de configuração não é preferível para um USB, considerando as preocupações de portabilidade. Não estou dizendo para não fazer um, apenas não esperaria que existisse ferramenta automatizada. Na verdade, acredito que você poderá usar vários sistemas depois de formatar sua unidade. Se o Grub2 instalado automaticamente não tiver suporte a EFI / GPT, substitua-o pela versão correta do Grub2.

Portanto, eu suponho que você talvez precise fazer parte da instalação manualmente, que na sua totalidade está além do escopo desta resposta. Embora eu deva ser capaz de começar ...

Usando uma versão atual de parted, re-rotule sua unidade com o GPT. Supondo que o disco esteja localizado em / dev / sdc,

 parted -s /dev/sdc mklabel gpt

Agora você deve particionar a unidade, de preferência um USB deve ser um único primário. Eu sempre uso o FAT32, para os meus USB inicializáveis.

parted -s /dev/sdc mkpart primary fat32 0 -1

parted mkpartnão cria o FS, como mkpartfsfaria. O partedDOC recomenda o uso do suporte adequado mkfs, em oposição ao partedsuporte interno.

mkfs.vfat /dev/sdc1

Agora sua unidade está pronta para lidar com os dados. Neste ponto, espero que você possa usar o multissistema para configurar sua unidade.

Depois que você terminar tudo isso ... Precisamos configurar o Grub2, obviamente pretendemos manter a configuração. O multissistema pode ter a capacidade de inicializar a partir do EFI, mas você precisará mexer na configuração do módulo independentemente.

A configuração do Grub2 está localizada em boot/grub/grub.cfg,. Você deve ver alguns dos módulos comentados. Eu vi um relacionado à GPT, mas não tenho certeza sobre a EFI. Eu procuraria e faria alguns testes. Considere ler alguns dos documentos do Grub2.

Se você ainda tiver algum problema, comente com as perguntas a seguir.


2

Comece com a resposta do bdowning acima e continue aqui para adicionar o Parted Magic.

Existem algumas maneiras de fazer isso, mas o mais simples é copiar o diretório pmagic do Parted Magic ISO para a raiz do seu disco USB e, em seguida, adicionar uma entrada de menu:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
  linux /pmagic/bzImage
  initrd /pmagic/initrd.img
}

(Você pode precisar ler o manual do grub2 para que ele funcione completamente; usei o grub1 quando fiz isso outro dia, e os arquivos de configuração são diferentes.)

A desvantagem aqui é que você está misturando arquivos para Windows, Ubuntu e agora Parted Magic em um único sistema de arquivos. Pior, nós os colocamos diretamente na partição do sistema EFI. Funciona, mas é claro que pode não funcionar para todas as combinações de sistemas operacionais; portanto, o que realmente devemos fazer é criar uma partição separada na unidade para cada sistema operacional. Isso exige que o grub procure o sistema de arquivos certo, o que pode ser feito por guid. Todo sistema de arquivos recebe um guia exclusivo quando é criado, portanto você terá que usar o grub-probe (ou ferramentas semelhantes) para encontrar esse guia. Você o coloca em um comando de pesquisa na sua configuração do grub:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
    search --no-floppy --fs-uuid --set 8d2acb74-5216-4696-90a8-c76f92d5e4ee
    linux /pmagic/bzImage
    initrd /pmagic/initrd.img
}

Espero que isto ajude.


A inicialização múltipla funcionará, mas na resposta do bdowning, quando tento instalar o Ubuntu, obtenho o Kernel não disponível (alternativo) ou não consigo configurar os erros do apt (desktop) (consulte a publicação e os comentários do bdowning), alguma idéia de como isso pode ser corrigido? Também conversamos no chat @ chat.stackexchange.com/rooms/info/2240/…
Jiew Meng

2

Em máquinas que não sejam UEFI, podemos usar o GRUB2 para tornar o pendrive inicializável. Em seguida, podemos usar o comando 'ntldr' no GRUB2 para inicializar o Windows a partir do USB.

menuentry 'Install Windows 8' {
 ntldr /bootmgr
}

Veja a resposta completa no meu blog Criando um USB inicializável do Windows a partir do Linux


1
Embora esse link possa responder à pergunta, é melhor incluir aqui uma descrição mais detalhada da resposta e fornecer o link para referência. As respostas somente para links podem se tornar quase inúteis se o seu link cair.
G-Man diz 'Reinstate Monica'

1

Por que se preocupar com o GRUB2? Isso apenas complica as coisas. Basta usar o método EFI STUB para inicializar o kernel Linux do ESP, adicionando um UEFI Shell ao ESP.


Bom saber. No meu caso específico (antigo macbook pro), não funciona, porque a Apple renomeou essa porcaria proprietária para "EFI" e diz que seu gerenciador de inicialização é um EFI. Mas, na verdade, é um gerenciador de inicialização personalizado, sem documentação e com erros, capaz de inicializar apenas osx e janelas. Assim, instalei o LILO em uma das partições e minto para esse gerenciador de inicialização que é um windows. Então funciona. Portanto, "EFI" inicializa o LILO no modo de emulação do BIOS e o LILO inicializa o kernel.
peterh - Restabelece Monica 30/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.