Apakah Linux USB-Stick hybrid untuk UEFI & legacy BIOS mungkin?

14

ide saya adalah membuat USB-Boot-Stick dengan Lubuntu yang dapat boot pada Laptop BIOS yang lebih lama dan Sistem UEFI yang lebih baru.

Ini akan sangat mudah, ketika Stick akan diatur sebagai perangkat boot lama, tetapi saya ingin itu menjadi perangkat yang dapat UEFI.

  1. Apakah itu masuk akal ?! Atau apakah saya memahami konsep UEFI yang sangat salah?
  2. Jika perlu bisa ada dua instalasi Linux yang berbeda (satu untuk UEFI, satu untuk warisan tetapi keduanya pada drive yang sama)
  3. Boot Perangkat GPT pada warisan Bios - akankah itu berhasil?

Saya tidak dapat melihat dengan jelas, mungkin hanya ide yang lebih baik untuk memiliki boot stick Linux yang terpisah, tetapi saya ingin menjelajahi batasan-batasan :)

Jadi, apakah ide saya tentang linux-uefi-boot-usb-stick hybrid yang dapat bekerja dengan bios lama mungkin?


(3) tampaknya memungkinkan untuk linux dengan grub http://www.rodsbooks.com/gdisk/booting.html

Lebih lanjut, saya memiliki Partisi EF00 yang siap pada stick itu, selain partisi Swap, Fat32 dan dua Ext4.


(1) tampaknya juga mungkin http://www.rodsbooks.com/bios2uefi/

Instruksi ini berasal dari 2012, beberapa waktu berlalu sejak - apakah ada yang punya contoh kerja yang lebih mudah?


Untuk peneliti lain dari topik ini:

Boot Windows 7 dari disk GPT pada motherboard non EFI Apakah ada cara untuk boot Windows 7/8 menggunakan BIOS pada GPT?

http://www.borncity.com/blog/2012/07/25/uefi-emulation-auf-pcs/


MEMPERBARUI:

Saya telah berhasil membuat bagian UEFI termasuk pengaturan Boot aman dengan rEFInd.

Mengikuti saran yang diberikan, saya biasa ddmenyalin gptmbr.binke drive saya, yang sekarang tampaknya melakukan setidaknya sesuatu pada Sistem-BIOS: "Ini bukan disk yang dapat di-boot"

Namun, saya telah mengikuti saran dan mengatur pmbrflag untuk disk dan legacy bootflag gpt - masih mendapatkan kesalahan ini, ada ide?

Partisi ESP saya adalah partisi kedua pada disk dan diatur dengan file efi.

Pengaturan:

  • Ruang 64GB
  • Tabel Partisi GPT
  • Disk telah menetapkan flag pmbr
  • Partisi 1 dimulai pada 16MiB dan sekitar 45GB, sebuah fat32 utama untuk data
  • Partisi 2 dimulai sekitar 45GB dan merupakan Sistem EFI (fat32) dengan pengaturan resi yang berfungsi
  • Partisi ke-3 - ke-5 adalah home (ext4), swap dan root (ext4) dari Lubuntu 14.04.1 yang berfungsi

Menggunakan ddSaya telah menyalin gptmbr.bindari Syslinux 6.02 saya yang dikompilasi ke 440bytes pertama.

Di bawah parted 3.2 saya dapat melihat bahwa partisi 2 saya memiliki bootdan legacy_bootflag.

Selama boot saya tidak menemukan disk bootable ditemukan - jika saya mengatur ke-5 bukannya partisi ke-2, legacy_bootsaya mendapatkan OS Hilang

Ini hidup!

(Saat Pertanyaan lama saya terhapus /ubuntu//q/516730/319747 )


Dugaan saya adalah, bahwa saya harus menyalin beberapa *.c32file dan lainnya ke folder syslinux eighter di EFI saya (di mana ?!) atau di partisi root saya ( /boot/syslinux?!) Untuk membuatnya berfungsi - apakah saya benar? File apa yang penting?

Selanjutnya, saya kira saya akan membutuhkan syslinucx.cfgfile itu juga - kan?


Tujuan saya setidaknya adalah boot langsung dari sistem lubuntu pada partisi root ext4.

Memperbarui:

Meskipun saya tidak tahu mengapa, saya membuatnya bekerja - tetapi tidak dengan instalasi manual.

  • yang pmbrbendera buruk dan dilarang sistem UEFI saya dari booting tongkat sebagai UEFI
  • yang legacy_bootbendera itu diperlukan untuk 5th partisi saya (linux root)
  • Saya harus menggunakan extlinux --install /path/to/root/parition
  • Saya harus membuat syslinux.cfgdi folder syslinux di bawah boot partisi root saya

Saya melakukan semua ini pada tongkat yang lebih kecil kedua, kemudian mencoba menyalin hanya folder syslinux, tetapi tidak berhasil - extlinux --installsepertinya wajib.

Adakah yang tahu apa yang sebenarnya extlinux --installdilakukannya? Bisakah itu dilakukan secara manual atau bagaimana lagi Anda menginstal versi yang lebih baru seperti 6.02 tanpa menginstalnya ke sistem Anda?

Punya tongkat saya bekerja dengan partisi yang disebutkan pada BIOS, UEFI dan UEFI SecureBoot, wah, belajar banyak, hampir membunuh 2TB dengan berpisah, hati-hati dan semoga sukses.

Jook
sumber
tautan Anda rusak .. Anda punya cerita di tempat lain? saya ingin melakukan hal yang sama. Terima kasih.
pvinis
1
@pvinis terima kasih atas informasinya, saya telah menggabungkan pertanyaan / hasil dari askubuntu di sini, karena terhapus
Jook

Jawaban:

11

Itu mungkin, dan sangat sering dilakukan dengan stik USB eksternal dan drive internal.

Mengenai jenis tabel partisi:

  • BIOS biasanya tidak memerlukan tabel partisi. Hanya tertarik pada kode bootstrap yang merupakan 440 byte pertama dari MBR Anda. (Meskipun ada pengecualian. Beberapa implementasi BIOS benar-benar rusak jika mereka tidak dapat menemukan MBR dengan salah satu tipe partisi yang biasa. Mudah-mudahan itu jarang terjadi.)

    Tabel partisi GPT tidak secara fisik menggantikan MBR - selalu dimulai di sektor 1, sedangkan MBR di sektor 0 - jadi mungkin saja disk memiliki keduanya. Bahkan, sebagian besar disk GPT memang memiliki "MBR pelindung" yang hanya berisi satu partisi yang mencakup seluruh disk, untuk mencegah alat partisi MBR yang lebih lama dari kehancuran data secara tidak sengaja.

    Jadi Anda dapat menginstal, misalnya, sektor boot Syslinux ke MBR Anda, dan itu akan boot. (  syslinux-install_updateSkrip akan melakukan ini untuk Anda, tetapi Anda dapat mencari gptmbr.bindi paket syslinux Anda untuk melakukannya secara manual.)

    Sama seperti bendera "aktif" pada partisi MBR, Syslinux akan mencari bendera "legacy BIOS bootable" pada partisi GPT (bit 2 - UEFI spec 2.4 bagian 5.3.3 tabel 20); skrip tersebut juga menetapkan bendera itu secara otomatis jika Anda punyasgdisk (dari gptfdisk).

    GRUB juga bisa digunakan, tetapi juga sedikit lebih menyebalkan. Karena GRUB 2 ingin "menanamkan" bagian-bagian itu sendiri di sektor-sektor yang tidak digunakan secara tradisional 1-62, itu akan menimpa GPT yang disimpan di lokasi yang sama. Jadi, Anda mungkin perlu membuat partisi khusus 2-4 MB dan menandainya sebagai BIOS-bootable, sehingga grub-installakan menemukan tempat penyematan.

  • Di sisi lain, spesifikasi UEFI tidak membutuhkan dukungan untuk jenis partisi MBR (bagian 12.3.1) dan menetapkan jenis partisi MBR 0xEFke partisi sistem EFI (bagian 5.2.2).

    Jadi jika Anda karena suatu alasan tidak bisa membuat disk Anda bekerja dengan GPT, Anda masih dapat membuat partisi sistem EFI pada MBR, dan itu akan digunakan selama ia memiliki sistem file yang benar dan semua file yang diperlukan (bagian 12.3.1.3):

    Untuk perangkat media yang dapat dilepas harus hanya ada satu partisi sistem yang memenuhi UEFI, dan partisi itu harus mengandung direktori yang ditentukan UEFI di direktori root. Direktori akan dinamai EFI. Semua OS loader dan aplikasi akan disimpan dalam subdirektori di bawah EFIdisebut BOOT. Hanya boleh ada satu gambar EFI yang dapat dieksekusi untuk setiap arsitektur prosesor yang didukung dalam BOOTdirektori. Agar media yang dapat dilepas dapat dibooting di bawah EFI, media tersebut harus dibuat sesuai dengan aturan yang ditetapkan dalam Bagian 3.4.1.1.

Mengenai sistem operasi, Linux umumnya tidak peduli sedikit pun tentang apakah itu boot dari BIOS hari ini dan dari UEFI besok. Saya harus me-reboot laptop saya dari mode UEFI ke mode "kompatibilitas BIOS" dan kembali mungkin ratusan kali minggu ini, ketika mencoba menemukan bug di dukungan 3,17 UEFI ...


Perhatikan bahwa artikel "BIOS to UEFI Transformation" adalah tentang hal yang sangat berbeda. Ini menjelaskan cara menginstal UEFI sendiri - implementasi UEFI yang disebut "DUET" - untuk dimulai dari sistem khusus BIOS. Ini tidak ada hubungannya dengan mem-boot sistem operasi langsung dari BIOS.

pengguna1686
sumber
+1 - syslinux_install Saya akan melihatnya, terima kasih atas konfirmasi, jaminan dan masukan baru
Jook
Saya telah mengikuti saran Anda, tetapi saya terjebak dengan pengaturan, mbrsepertinya saya baik-baik saja tetapi tidak menemukan EFI Systempartisi saya . Apakah ini masalah bahwa itu adalah partisi kedua pada disk mulai sekitar 45GB ke dalam disk? Apakah saya harus mengatur bagian spektral pada EFI selain dari pengaturan EFI alreadz yang bekerja di sana?
Jook
Sudah bekerja :) jadi, terima kasih! syslinux cukup bagus dan membawa saya ke gPxe dan plopkexec, yang akan saya periksa lebih lanjut di lain waktu. Untuk peneliti lain: askubuntu.com/q/516730/319747
Jook
2

Ya, ini mungkin.

Ide dasarnya adalah untuk mempartisi GPT stik USB Anda seperti ini:

  1. Partisi boot BIOS (tipe GPT 1686148-6449-6E6F-744E-656564454649) - 1 MIB, tanpa sistem file
  2. Partisi sistem EFI (tipe GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B) - 200 MIB, sistem file VFAT
  3. Partisi boot Linux (tipe GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - 1 GiB, sistem file ext4
  4. Sistem file root / home Linux (tipe GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - ruang yang tersisa, sistem file XFS atau Btrfs

Partisi ini memungkinkan kita untuk boot pada sistem Legacy karena dengan GPT masih ada ruang untuk MBR (untuk alasan kompatibilitas ke belakang) dan Grub2 memiliki cukup ruang untuk menginstal beberapa tahap tengah ke dalam partisi boot BIOS. BIOS Legacy tidak peduli dengan skema partisi dan Grub2 / Linux Kernel tidak memiliki masalah dalam memahami GPT pada sistem Legacy.

Pada sistem UEFI , firmware UEFI mengabaikan MBR dan menggunakan partisi sistem EFI sebagai titik masuk.

Misalnya, dengan Fedora, Anda pada dasarnya harus melakukan hal berikut:

Pastikan sistem file Boot Linux sudah terpasang di bawah /bootdan sistem file partisi sistem EFI dipasang di bawah/boot/efi .

(Re-) Pasang boot loader lama dan UEFI:

grub2-pc grub2-efi-x64 shim-x64 efibootmgr

(Re-) Hasilkan file konfigurasi grub baik untuk boot lama maupun UEFI:

# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

Tergantung apakah sistem Anda boot dalam mode legacy atau UEFI, Anda harus memperbaiki file pertama atau kedua dan menggantinya (linux|initrd)16dengan (linux|initrd)efiatau sebaliknya.

Instal grub ke MBR:

# grub2-install --target=i386-pc /dev/sd_your_usb_stick_device

Voila.

maxschlepzig
sumber
PS: Saya menulis skrip provisi yang mengimplementasikan pendekatan hybrid ini dan dengan demikian dapat digunakan untuk secara otomatis membuat stik USB.
maxschlepzig