কিউইএমইউ (কেভিএম) ব্যবহার করে কীভাবে EFI কার্নেলটি বুট করবেন?


21

আমি কিউএমইউ (কিমিভি) ব্যবহার করে একটি EFI পরিবেশ অনুকরণ করার চেষ্টা করছি; ভার্চুয়ালবক্সটি আর্চবুট ব্যবহার করে EFI মোডে বুট করতে 15 মিনিট সময় নেয়।

লেগ্যাসি BIOS মোড ব্যবহার করে, আমি এই আদেশটি ব্যবহার করে বুট করতে পারি:

root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -kernel  ../bzImage -initrd ../rootfs.gz -append "rw root=/dev/ram0  ramdisk_size=40960"

এবং এটি আমার কাস্টম কার্নেল এবং ফাইল সিস্টেমের সাথে কাজ করে।

file ../bzImage 
../bzImage: Linux kernel x86 boot executable bzImage, version 3.6.1 (root@citsnmaiko-deb) #4 , RO-rootFS, swap_dev 0x3, Normal VGA

এটিতে EFI সমর্থনও রয়েছে।

আমি এখান থেকে ডাউনলোড করা EFI ফাইলগুলির সাথে একই করার চেষ্টা করছি

wget http://ufpr.dl.sourceforge.net/project/edk2/OVMF/OVMF-X64-r11337-alpha.zip -P ovmf
cd ovmf/
unzip -x OVMF-X64-r11337-alpha.zip
# rename the files for QEMU find them
mv OVMF.fd bios.bin
mv CirrusLogic5446.rom vgabios-cirrus.bin
# start QEMU
root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -L .  -kernel  ../bzImage -initrd ../rootfs.gz -append "rw root=/dev/ram0  ramdisk_size=40960" 
Could not open option rom 'linuxboot.bin': No such file or directory
pci_add_option_rom: failed to find romfile "pxe-e1000.bin"

এবং আমি একটি EFI শেল ফেলেছি, বুট সক্ষম না।

কিউমু + ইএফআই + লিনাক্স কার্নেল + বিক্রয় করুন

যদি আমি একই EFI পরিবেশ ব্যবহার করে সর্বশেষতম উবুন্টু প্রকাশটি ব্যবহার করি

root@citsnmaiko-deb:/home/maiko/uefi/ovmf# qemu-system-x86_64 -L . -boot d -cdrom ../ubuntu-12.10-desktop-amd64.iso
pci_add_option_rom: failed to find romfile "pxe-e1000.bin"

... বুট প্রক্রিয়াটি ভাল কাজ করে।

এখানে চিত্র বর্ণনা লিখুন

আমি আমার সাথে উবুন্টু বুট ফাইলগুলি প্রতিস্থাপন করার চেষ্টা করেছি তবে সম্ভবত আমি এর কার্যকারিতা পুরোপুরি বুঝতে পারি না। আমি যখন আইএসও মাউন্ট করার পরে কেবল ফাইলগুলি প্রতিস্থাপন করব:

mkdir tmp
bsdtar xf ubuntu-12.10-desktop-amd64.iso -C tmp
cp bzImage tmp/casper/vmlinuz
cp rootfs.gz tmp/casper/initrd.lz 
genisoimage -o customUbuntu.iso tmp/
qemu-system-x86_64 -L . -boot d -cdrom customUbuntu.iso 

একই EFI শেল প্রদর্শিত হবে। ঠিক আছে? initrd.lz এবং rootfs.gz কি বিনিময়যোগ্য? বিজিএমেজ এবং ভিএমলিনুজ সম্পর্কে কীভাবে?

আমি কী মিস করছি?

উত্তর:


21

OVMF সমর্থন -bootযেহেতু r13683 , এবং সমর্থন -kernel -append -initrdযেহেতু r13923

  1. ডাউনলোড OVMF-0.1+r14071-1.1.x86_64.rpm বা আরও নতুন সংস্করণ।
  2. bios.binআরপিএম থেকে এক্সট্রাক্ট করুন :rpm2cpio OVMF-0.1+r14071-1.1.x86_64.rpm | cpio -idmv
  3. কিউইএমইউর জন্য ফার্মওয়্যার প্যারামিটার নির্দিষ্ট করুন: qemu-kvm -bios ./usr/share/qemu-ovmf/bios/bios.bin -m 1G -cdrom boot.iso(ফেডোরার বুট.আইএসো দিয়ে বিশেষ ব্যবস্থা সহ তৈরি করা হয়েছে )

আমি qemu -kernel -append -initrdকার্নেলটি 3.5, 3.6 এবং 3.8 দিয়েও পরীক্ষা করেছি ।


EFI ফার্মওয়্যারটির ISO ইমেজটি বুটেবল ( 1 ), এবং ডিস্কগুলির জন্য অন্য হতে ফাইলের স্তরক্রমের প্রয়োজনীয়তা রয়েছে । আপনার পরিবর্তিত আইএসও চিত্রটি সম্ভবত প্রয়োজনীয়তাগুলি মেটেনি তাই ফার্মওয়্যারটি এটি স্বীকৃত হয়নি। EFI ফার্মওয়্যারের বাইনারি কার্যকর করার জন্য বিন্যাসের প্রয়োজনীয়তাও রয়েছে, সুতরাং আপনার bzImage বা যে কোনও কার্নেল চিত্রটি EFISTUB দিয়ে তৈরি করা দরকার।

আপনি ম্যানুয়ালি নির্দিষ্ট করে দেওয়া পরামিতিগুলির সাথে EFI শেল থেকে কার্নেল বুট করতে পারেন। উদাহরণ: 2 । আপনি startup.nshএকটু টাইপ করে সেভ করতে একটি তৈরি করতে পারেন । আপনি আরও সম্পূর্ণ পরিচালনা করতে বুটলোডার ব্যবহার করতে পারেন। আপনার এগুলি শিখতে হবে: 2

EFI ফার্মওয়্যার এনভিআরএমে বুট বিকল্পগুলি সংরক্ষণ করে। কিউইএমইউ বর্তমানে এনভিআরএএম সংরক্ষণ করে না, সুতরাং আপনি কিউইইউএম বন্ধ করার পরে বুট অপশনগুলি হারাবে। বুট বিকল্পগুলি ছাড়া, ফার্মার \EFI\BOOT\BOOTX64.EFIমৃত্যুদন্ড কার্যকর করার সন্ধান করার চেষ্টা করে কিন্তু এটি এখানে নেই, তাই বুট করা কী তা জানেন না এবং আপনার নিয়ন্ত্রণ নিয়ন্ত্রণ রাখে। EFI শেলের মধ্যে কার্নেলটি বুট করতে আপনাকে যা করতে হবে তা হ'ল কেবল একটি ফাইল সিস্টেম প্রবেশ করা, একটি সঠিক পথে নেভিগেট করা এবং বাইনারি চালানো।

fs0:
    cd EFI\fedora
    grub.efi

অথবা

vmlinuz.efi ...

EDK2 r13867 সাল থেকে OVMF ভাইরাস -স্ক্সি সমর্থন করে ।


ওভিএফএম লিঙ্কটি মারা গেছে।
jcoffland

@ jcoffland এটি সত্যিই মারা যায় নি, ডিরেক্টরিগুলি ব্রাউজযোগ্য কেবল সেকেলে প্রকাশের ফোল্ডারটি সরিয়ে ফেলা হয়েছে। যান download.opensuse.org/repositories/home:/jejb1:/UEFI এবং সর্বশেষ রিলিজ আপনি যে মূল লিংক থেকে ধরণের সাথে মেলা জানতে পারেন বাছাই।
LiveWireBT

1
আধুনিক উবুন্টুতে আপনি কেবল apt install ovmfএবং তারপরেই পারেনkvm -bios OVMF.fd ...
টোবিয়া


1

সরাসরি উত্তর নয় তবে এই জরিসিস বাগেরপোর্টে আপনার আগ্রহী নাও হতে পারে - আমি সেখানেও মন্তব্য করতে যাচ্ছি তবে সংক্ষেপে, এক্সস্টরিজ -১.২.৪ প্রবাহিত পুনর্বিবেচনার সাথে আমার পক্ষে 1032 কাজ করে এবং আমার হার্ডওয়্যার স্ট্যান্ড করে ঠিক এই স্ক্রিপ্ট (এটি একটি রাশিয়ান কথ্য উইকি তবে স্ক্রিপ্ট অংশটি যথেষ্ট সুস্পষ্ট হওয়া উচিত; মনোযোগ দিন efiboot.img)।

নোটটি যে /usr/lib/syslinux/isohdpfx.binসিসলিনাক্স থেকে এসেছে এবং এটি সর্বশেষতম 4.06 এর মতো EFI বিভাগে প্রাসঙ্গিক পরিবর্তন রয়েছে বলে মনে হচ্ছে।

এখানে (ইউ) ইএফআই সম্পর্কে দরকারী জ্ঞানের আরও একটি ভাল উপায় রয়েছে , এবং প্রশ্নটির লিপিটির জন্যও আপনাকে ধন্যবাদ :)


1

এই স্ক্রিপ্টটি ব্যবহার করে , cdকার্নেল উত্স ট্রি এবং চালানো:

runlinux -- -bios ~/path/to/OVMF.fd

https://sourceforge.net/projects/edk2/files/OVMF/OVMF-X64-r15214.zip/downloadOVMF.fd থেকে কোথায় নেওয়া হয়েছিল

স্ক্রিপ্টটি ব্যাসিবক্সের সাথে একটি ন্যূনতম ফাইল সিস্টেম তৈরি করে, কার্নেলটি সংকলন করে এবং কিউইএমইউতে এটি দিয়ে চালায়:

qemu-system-x86_64 -enable-kvm -kernel bzImage \
                   -initrd ../rootfs.gz -bios ~/path/to/OVMF.fd

আমরা এখন যাচাই করতে পারি যে ইউইএফআই QEMU এর ভিতরে থেকে এই পোস্টে উল্লিখিত ছিল :

ls /sys/firmware/efi

0
qemu-system-x86_64  -kernel xxx.elf -serial /dev/stdout -monitor stdio

4
হাই এবং সাইটে আপনাকে স্বাগতম। আপনার উত্তরে কিছু বিশদ যুক্ত করুন। এই আদেশ কি? কোথায় চালানো উচিত? এটি সম্ভবত বুটলডার কনফিগারেশনে যুক্ত করা উচিত? কিভাবে? কোথায়? এটি কী তা আপনি যদি না ব্যাখ্যা করেন তবে আমি ভয় করি যে এটি কোনও কার্যকর উত্তর নয়।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.