Nah, ketika saya mulai mengembangkan aplikasi EFI, saya menemukan masalah yang sama. Bagaimana cara mengirim file di lingkungan EFI? Untuk saat ini saya tahu cara-cara ini:
1. perangkat penyimpanan USB.
Mungkin cara termudah jika Anda menyalin file tidak terlalu sering. Cukup letakkan file di USB flash drive dan sambungkan ke mesin virtual (VM).
Untuk mengakses file dari lingkungan EFI Anda memerlukan shell EFI atau semacamnya. VMware sudah memiliki shell terintegrasi, sedangkan pada VM lain Anda mungkin perlu mendapatkannya. Untuk melakukan ini, Anda dapat menggunakan Boot Manager yang bagus , yang berisi shell. Buka zipnya, masukkan gambar iso ke dalam CD-ROM VM dan boot darinya. Di menu rEFInd pilih "Mulai EFI Shell". Anda akan melihat command prompt, di mana semua perangkat penyimpanan dipetakan sebagai FS0, FS1, ... Jika Anda hanya melihat FS0 (sistem file rEFInd), maka Anda mungkin lupa menghubungkan drive USB ke VM.
Sekarang untuk mendapatkan file Anda cukup ketik perintah seperti ini:
fs1:
cd directory_with_file
Semua perintah shell dapat ditemukan dengan help
perintah.
2. Transfer via TFTP.
Lebih panjang untuk diatur, lebih cepat digunakan. Bagus jika Anda sering mengirim file, saat mengembangkan aplikasi EFI misalnya. Untuk metode ini, Anda memerlukan server TFTP seperti tftpd-hpa yang berfungsi (bisa juga pada mesin host Anda), klien EFI Shell + TFTP pada VM Anda. Ada banyak informasi tentang memulai server TFTP, sehingga Anda dapat menemukan manualnya sendiri. Juga menyenangkan untuk memiliki server DHCP (ini opsional, tetapi konfigurasi akan jauh lebih mudah dengan DHCP).
Klien TFTP dapat dibangun dari sumber Tianocore atau diunduh sebagai biner prekompilasi x64 dari cloud saya (saya tidak tahu mengapa pengelola Tianocore tidak menyediakannya dalam biner). Letakkan tftp.efi
di VM Anda di suatu tempat Anda dapat mengaksesnya (drive USB atau HDD virtual). Letakkan file Anda di direktori root TFTP (seperti / srv / tftp). Mungkin Anda harus mengubah adapter jaringan VM Anda menjadi mode jembatan, sehingga memiliki ip nyata, jika Anda ingin menggunakan DHCP. Mulai EFI shell VM seperti dijelaskan di atas. Saat Anda melihat prompt perintah, ketik perintah ini.
ifconfig -s eth0 dhcp
fs1:
cd destination_directory
tftp 192.168.3.1 file_to_copy
Dimana:
eth0
adalah adaptor jaringan Anda, Anda dapat menemukannya dengan ifconfig -l
. Anda juga dapat menggunakan ip statis alih-alih dhcp, lihathelp ifconfig
fs1:
dengan sistem file Anda tftp.efi
, itu bisa fs0:
atau tergantung pada perangkat boot Anda
tftp
adalah tftp.efi
aplikasi, 192.168.3.1
adalah alamat ip server TFTP (mesin host atau server sebenarnya)
Anda juga dapat menulis perintah ini di file startup.nsh di root sistem file yang dapat di-boot untuk melakukannya pada pemuatan VM. Atau hanya baris terakhir di file skrip * .nsh lain yang akan diunduh saat EFI berjalan.
3. mesin virtual QEMU
Sangat berguna untuk pengujian sederhana, Anda tidak perlu TFTP, DHCP, drive USB, dll. Jika OK untuk membuat ulang VM setiap kali Anda boot, ada artikel bagus tentang membuat dan men -debug aplikasi EFI dengan QEMU di osdev.org .