Bem, quando comecei a desenvolver aplicativos EFI, encontrei o mesmo problema. Como enviar arquivo no ambiente EFI? Por enquanto eu conheço estas maneiras:
1. dispositivo de armazenamento USB.
Provavelmente a maneira mais fácil se você copiar arquivos não com muita freqüência. Basta colocar arquivos na unidade flash USB e conectá-lo à máquina virtual (VM).
Para acessar o arquivo do ambiente EFI, você precisa do shell EFI ou algo parecido. O VMware já possui shell integrado, enquanto em outras VMs você pode precisar obtê-lo. Para fazer isso você pode usar maravilhosamente rEFInd Boot Manager , que contém shell. Descompacte-o, insira a imagem iso no CD-ROM da VM e inicialize a partir dele. No menu rEFInd escolha "Start EFI Shell". Você verá o prompt de comando, onde todos os dispositivos de armazenamento são mapeados como FS0, FS1, ... Se você vir apenas FS0 (sistema de arquivos rEFInd), provavelmente esqueceu de conectar a unidade USB à VM.
Agora, para obter seu arquivo, basta digitar comandos como este:
fs1:
cd directory_with_file
Todos os comandos shell podem ser encontrados por help
comando.
2. Transferir via TFTP.
Mais tempo para configurar, mais rápido de usar. Bom se você enviar arquivos com freqüência, enquanto desenvolve aplicativos EFI, por exemplo. Para este método você precisa de servidor TFTP como o tftpd-hpa funcionando (ele pode estar na sua máquina host), o cliente EFI Shell + TFTP na sua VM. Há muitas informações sobre como iniciar o servidor TFTP, para que você possa encontrar manualmente o manual. Também é bom ter o servidor DHCP (é opcional, mas a configuração será muito mais fácil com o DHCP).
Cliente TFTP pode ser construído a partir de Fontes Tianocore ou baixado como x64 binário precompilado de minha nuvem (eu não sei porque os mantenedores da Tianocore não fornecem isso em binário). Colocar tftp.efi
na sua VM em algum lugar você pode acessá-lo (drive USB ou HDD virtual). Coloque seu arquivo no diretório raiz do TFTP (como / srv / tftp). Provavelmente você deve transformar o adaptador de rede da sua VM em modo bridge, então ele tem um ip real, se você quiser usar o DHCP. Inicie a VM da shell do EFI conforme descrito acima. Quando você vir o prompt de comando, digite esses comandos.
ifconfig -s eth0 dhcp
fs1:
cd destination_directory
tftp 192.168.3.1 file_to_copy
Onde:
eth0
é o seu adaptador de rede, você pode encontrar um necessário com ifconfig -l
. Também você pode usar ip estático ao invés de dhcp, veja help ifconfig
fs1:
é o seu sistema de arquivos com tftp.efi
, Poderia ser fs0:
ou outro depende do seu dispositivo de inicialização
tftp
é tftp.efi
aplicativo, 192.168.3.1
é o endereço IP do servidor TFTP (máquina host ou servidor real)
Além disso, você pode gravar esses comandos no arquivo startup.nsh na raiz do sistema de arquivos inicializável para fazer isso no carregamento da VM. Ou apenas a última linha em outro arquivo de script * .nsh para fazer o download enquanto o EFI estiver sendo executado.
3. máquina virtual QEMU
É muito útil para testes simples, você não precisa de TFTP, DHCP, unidade USB, etc. Se estiver tudo bem em recriar a VM toda vez que você inicializar, há um artigo maravilhoso sobre como criar e depurar aplicativos EFI com o QEMU on osdev.org .