Virtualbox VMDK para o stick usb inicializável não funciona

0

Eu usei o VirtualBox para configurar uma pequena máquina x86 Arch Linux de 64 bits. Tudo está funcionando bem instalado no disco rígido virutal de 8GB no formato VMDK.

cfdisk mostra que eu criei duas partições:

  • Tipo: Primário, Tipo: Linux (ext4), Inicializável, Primeira partição, Tamanho: 7.5G
  • Tipo: Primário, Tipo: Trocar, Solaris, Inicializável, Segunda Partição, Tamanho: 0,5G

Eu personalizo o Arch Linux e agora quero criar uma mídia inicializável real.

1. Como eu poderia criar uma mídia inicializável sem o complicado processo de instalação do archiso, mas diretamente usando uma imagem da unidade que eu criei de alguma forma?

Na verdade, já tentei criar minha mídia inicializável. Eu usei o Ubuntu para converter meu os.vmdk para /dev/sdc usando o comando qemu-img convert os.vmdk -O raw /dev/sdc

Depois de concluído, reiniciei o menu de inicialização do PC, mas o pendrive não estava aparecendo. Eu desliguei a inicialização segura e habilitei Legace Boot Support . Nada ajudou. Assim, eu entrei na linha de comando do Grub da minha instalação do Ubuntu e entrei

set root=(hd1,msdos2) # hd1 is my usb stick, msdos1 is swap, msdos2 is bootable
configfile /boot/grub/grub.cfg # in order to load the usb's grub

2. Algumas coisas estranhas aconteceram então

  1. eu coloquei o pau no meu laptop - > Porta USB 2.0 (eu tenho um stick USB 3.0) - > Inicializando ... - > Tela Gráfica Arch Linux Splash - > Shell de emergência indicando algo como Can't run fsck. Error: Can't find drive with UUID=... (No entanto, o UUID está absolutamente correto. Eu mudei isso no Ubuntu e no próprio Arch em / etc / fstab! Quando eu faço blkid no shell de emergência, o drive USB simplesmente não está lá Em vez disso, eu recebo meu SSD interno em / dev / sda.Eu não consigo encontrar nenhum drive USB em / dev / * e o dmesg não indica nada também!)
  2. eu coloquei o pau no meu laptop - > Porta USB 3.0 - > A linha de comando do grub não está detectando a unidade. Há apenas hd0 , mas não hd1 . No entanto, às vezes, inicializo a partir do meu disco rígido externo conectado via usb 3 usando o menu de inicialização do BIOS.
  3. Eu coloco o stick no PC da minha estação de trabalho em uma porta USB 3.0 - > Não no menu de inicialização do BIOS, iniciado via grub e configfile command - > Ele inicializou, enquanto não inicializou na porta USB 3.0 do meu laptop - > e, em seguida, o mesmo shell de emergência como em 1.
  4. Eu coloco o stick no PC da minha estação de trabalho em uma porta USB 2.0 - > Iniciado pelo GRUB - > É inicializado com sucesso sem problemas.

Eu não tenho idéia, o que devo fazer!? Eu basicamente só quero fazer uma imagem do meu Arch Linux virtual existente que eu possa transferir para qualquer dispositivo simplesmente copiando-o sem uma complicada instalação do Arch.

Qualquer ajuda é apreciada.

    
por fameman 17.04.2018 / 18:47

2 respostas

1

1.) Como você já particionou o pendrive, por que não apenas copiar todo o conteúdo do sistema de arquivos real (omitindo tmpfs e outros sistemas de arquivos baseados em RAM ou totalmente virtuais, como /dev , /proc e /sys ) para a partição ext4 no bastão?

Acho que o qemu-img convert que você fez basicamente faz exatamente isso, mas você pode ignorá-lo. Basicamente, não há mágica: se você copiar todos os arquivos necessários do sistema operacional para o bastão em sua hierarquia de diretórios adequada, será um sistema válido, não importa como a cópia foi feita. Um sistema operacional inativo é essencialmente apenas um monte de arquivos, e você pode tratá-lo como isso.

A única parte especial é o carregador de inicialização do BIOS legado: isso requer a gravação de dados em locais de bloco específicos no bastão, para que o carregador de inicialização possa encontrá-los mais tarde. Por outro lado, o carregador de inicialização UEFI é apenas outro arquivo com um nome de caminho específico em uma partição FAT32.

2.1.) Tentando inicializar usando o bootloader da instalação do Ubuntu (que pode ser UEFI) com USB 2: parece que o bootloader carregou com êxito os arquivos kernel e initramfs e iniciou o kernel, mas o arquivo initramfs não tinha todos os drivers necessários para acessar o sistema de arquivos raiz no pendrive. No mínimo, você precisará do driver do controlador USB apropriado, do driver usb-storage e do driver do sistema de arquivos ext4 e suas dependências. Além disso, como o controlador USB é normalmente incluído no chipset, a versão do kernel precisa ser nova o suficiente para reconhecer o chipset, para que ele saiba que uma identificação PCI específica dentro do chipset é, na verdade, um controlador USB.

2.2. O stick USB não foi detectado na porta USB 3.0: talvez o firmware do seu laptop não inclua suporte a USB 3.0, a menos que seja realmente solicitado através do menu de inicialização do BIOS? Ou pode haver algum tipo de switch de handover USB2 / USB3 entre os controladores USB2 e USB3 que precisariam ser virados de alguma forma?

2.3.) Na área de trabalho, o stick foi detectado na porta USB 3.0, mas a inicialização falhou como na versão 2.1: Parece que sua área de trabalho pode ter melhor suporte a USB 3.0, mas você atinge basicamente o mesmo problema como no 2.1: nenhum controlador USB3 e / ou drivers de armazenamento usb no initramfs.

2.4.) Interessante. Seu laptop tem um tipo especial de controlador USB 2.0 e a área de trabalho usa o padrão ehci_hcd ? Parece que o seu initramfs tinha todos os drivers necessários para acessar o USB 2.0 em sua área de trabalho, mas não em seu laptop. Ou talvez o seu laptop tenha um novo chipset e o kernel não tenha encontrado o controlador USB?

Os problemas em 2.1 e 2.3 provavelmente poderiam ser corrigidos adicionando mais drivers de controladores USB no arquivo initramfs, e assegurando que seu kernel seja novo o suficiente para reconhecer completamente o chipset do laptop.

2.2. parece uma possível limitação de firmware. Difícil de oferecer sugestões sem conhecer a marca e o modelo do sistema.

Você pode querer adicionar uma pequena partição FAT32 ao seu pendrive USB e adicionar uma versão UEFI do GRUB a ela como \EFI\BOOT\BOOTx64.efi . Isso tornaria inicializável no sentido UEFI da palavra. Parece que o stick atualmente é inicializável apenas no sentido legado do BIOS. Dessa forma, você pode criar um pendrive USB "híbrido" com carregadores de inicialização herdados e UEFI.

Normalmente, um BIOS legado ocultará completamente qualquer suporte de armazenamento USB no nível do firmware, a menos que seja especificamente ativado nos menus do BIOS, para fornecer compatibilidade legada máxima até o IBM PC / AT original do ano de 1986 (tanto que possível). A UEFI não tem esse ônus e provavelmente fornecerá suporte de armazenamento USB para gerenciadores de inicialização por padrão.

    
por 15.05.2018 / 08:47
1

Provavelmente você está tendo problemas com a inicialização segura e o BIOS UEFI / EFI.

Quando você cria um USB inicializável, precisa se certificar de que ele foi criado para a configuração do BIOS do PC / laptop (pode ser Legacy ou UEFI).

Considerando que você está criando o dispositivo inicializável a partir de uma imagem da VM, provavelmente você não está levando isso em consideração.

De acordo com o wiki do Arch Linux [1], se você estiver usando GPT / UEFI com o GRUB, será necessário:

# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --removable --recheck

Mas não sei se funcionará com sua configuração. Se você estiver disposto a tentar outras opções, eu tentaria converter o VMDK em um ISO e " gravar " o ISO no pendrive USB com um utilitário flash como o Etcher link

Que possa resolver o problema da UEFI.

  1. link
por 15.05.2018 / 07:42