Copiando arquivos para o Efi Shell através da rede


2

Eu tenho uma pergunta, é possível copiar o arquivo para efi usando algum tipo de protocolo?

Exemplo Estou tendo computador e máquina virtual, a máquina virtual inicializa para o efi e eu preciso copiar o arquivo nele e depois executá-lo no ambiente efi.

É possível?


1
Em teoria, sim. Na prática, você precisará de uma pilha TCP / IP completa, com tudo, desde drivers de placa de rede até um cliente ou servidor para FTP, SSH ou algum outro protocolo que possa ser usado para transferir arquivos. A maioria (talvez todas) das partes existe, mas não necessariamente para todos os sistemas - você pode ser frustrado pela falta de um driver para o seu hardware de rede, por exemplo. Além disso, você precisará rastrear cada peça, e eu não posso fornecer ponteiros para nada disso, pelo menos não em formato binário pronto para uso. ( TianoCore fornece peças na forma de código-fonte.)
Rod Smith

Respostas:


0

Se você quiser apenas executar um binário EFI remoto, procure o comando "rload" se estiver disponível no seu shell EFI.

Isso usa TFTP. E isso suponha que seu EFI tenha drivers de rede e tudo mais.

No meu shell, não encontrei um comando para realmente copiar o arquivo remoto para o sistema de arquivos, o que é meio chato.


0

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 .

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.