Menyalin file ke jaringan Efi Shell melalui jaringan

2

Saya punya pertanyaan, Apakah mungkin menyalin file ke efi menggunakan semacam protokol?

Contoh saya memiliki komputer dan mesin virtual, mesin virtual melakukan booting ke efi dan saya perlu menyalin file di atasnya dan kemudian menjalankannya di lingkungan efi.

Apa itu mungkin?

Wojciech Szabowicz
sumber
1
Secara teori, ya. Dalam praktiknya, Anda akan memerlukan tumpukan TCP / IP lengkap, dengan semuanya mulai dari driver kartu jaringan hingga klien atau server untuk FTP, SSH, atau beberapa protokol lain yang dapat digunakan untuk mentransfer file. Sebagian besar (mungkin semua) bagian ada, tetapi tidak harus untuk setiap sistem - Anda mungkin digagalkan oleh kurangnya driver untuk perangkat keras jaringan Anda, misalnya. Selain itu, Anda harus melacak setiap bagian, dan saya khawatir saya tidak dapat memberikan petunjuk untuk semua itu, setidaknya tidak dalam bentuk biner yang siap digunakan. ( TianoCore menyediakan bagian-bagian dalam bentuk kode sumber.)
Rod Smith

Jawaban:

0

Jika Anda hanya ingin menjalankan biner EFI jarak jauh, cari perintah "rload" jika tersedia di shell EFI Anda.

Ini menggunakan TFTP. Dan ini mengasumsikan EFI Anda memiliki driver jaringan dan semuanya.

Dalam shell saya, belum menemukan perintah untuk benar-benar menyalin file jarak jauh ke sistem file, yang agak menjengkelkan.

pengguna438311
sumber
0

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 helpperintah.

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.efidi 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:

  • eth0adalah 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
  • tftpadalah tftp.efiaplikasi, 192.168.3.1adalah 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 .

Dmitry
sumber