Saya membeli laptop Sony Vaio S series baru. Ia menggunakan Insyde H2O BIOS EFI, dan mencoba menginstal Linux di atasnya membuatku gila.
root@kubuntu:~# parted /dev/sda print
Model: ATA Hitachi HTS72756 (scsi)
Disk /dev/sda: 640GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 274MB 273MB fat32 EFI system partition hidden
2 274MB 20.8GB 20.6GB ntfs Basic data partition hidden, diag
3 20.8GB 21.1GB 273MB fat32 EFI system partition boot
4 21.1GB 21.3GB 134MB Microsoft reserved partition msftres
5 21.3GB 342GB 320GB ntfs Basic data partition
6 342GB 358GB 16.1GB ext4 Basic data partition
7 358GB 374GB 16.1GB ntfs Basic data partition
8 374GB 640GB 266GB ntfs Basic data partition
Apa yang mengejutkan adalah bahwa ada 2 partisi sistem EFI pada disk. Partisi sda2 adalah partisi pemulihan 20gb yang memuat windows dengan antarmuka pemulihan dasar. Ini dapat diakses dengan menekan tombol "ASSIST" sebagai lawan dari tombol power normal. Saya berasumsi bahwa Partisi Sistem EFI sda1 memuat (ESP) ke dalam pemulihan ini.
Sda3 ESP memiliki entri yang lebih lengkap untuk Microsoft Windows, yang sebenarnya masuk ke Windows 7 (seperti yang dikonfirmasi oleh bcdedit.exe pada Windows). Ubuntu diinstal pada sda6, dan saat instalasi saya memilih sda3 sebagai partisi boot saya. Pemasang dengan benar membuat aplikasi sda3 / EFI / ubuntu / grubx64.efi.
Masalah sebenarnya: seumur hidup saya, saya tidak bisa mengaturnya sebagai default! Saya mencoba membuat sda3 / startup.nsh yang bernama grubx64.efi, tetapi tidak membantu - saat me-reboot, sistem masih menjalankan boot ke windows. Saya mencoba menggunakan efibootmgr, dan itu menunjukkan saat itu berhasil:
root@kubuntu:~# efibootmgr
BootCurrent: 0000
BootOrder: 0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
root@kubuntu:~# efibootmgr --create --gpt --disk /dev/sda --part 3 --write-signature --label "GRUB2" --loader "\\EFI\\ubuntu\\grubx64.efi"
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2
root@kubuntu:~# efibootmgr
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2
Namun, saat reboot, seperti yang Anda duga, mesin reboot langsung kembali ke Windows.
Satu-satunya hal yang dapat saya pikirkan adalah:
- Partisi sda1 entah bagaimana sedang digunakan
- Timpa /EFI/Boot/bootx64.efi dan /EFI/Microsoft/Boot/bootmgfw.efi dengan grubx64.efi [tetapi ini tampaknya sangat radikal].
Bisakah seseorang membantu saya keluar? Terima kasih - bantuan apa pun sangat dihargai, karena masalah ini membuatku gila!
Jawaban:
Saya akhirnya bisa menyelesaikan ini. Saya mengganti EFI / Microsoft / boot / bootmgfw.efi dengan grub64.efi. Saya mengganti nama yang pertama menjadi bootmgfw.efi.old dan menggunakan grub untuk menambahkan opsi menu ke chainload ke dalamnya.
Ini menyiratkan bahwa firmware adalah hardcoded untuk mencari bootloader windows microsoft, dan tidak menghormati pengaturan efibootmgr, atau startup.nsh. Itu sangat mengerikan.
Saya menemukan bagaimana proses boot Sony EFI bekerja:
Di Linux, alat efibootmgr berfungsi, tetapi ia menampilkan banyak omong kosong yang dihasilkan secara otomatis, termasuk drive USB terakhir yang Anda gunakan.
Inilah cara saya mempelajari semua ini:
Satu-satunya cara saya bisa mendapatkan izin untuk melakukan apa yang saya inginkan adalah ini:
Pindahkan fwbootmgr.efi ke direktori induknya; rEFInd masih akan menemukannya, dan Windows tidak akan mengeluh bahwa Anda menamainya kembali.
(Mungkin dimungkinkan untuk menggunakan Windows Boot Manager untuk melakukan semua ini, tetapi dukungan EFI EEasyBCD masih berantakan dalam pengalaman saya. Saya menolak untuk menyentuhnya lagi untuk sementara waktu.)
sumber
Pertama, Anda tidak memiliki dua ESP. ESP adalah partisi dengan kode tipe partisi C12A7328-F81F-11D2-BA4B-00A0C93EC93B, yang dibedakan sebagai partisi dengan set "boot flag" -nya. Output Anda menunjukkan bahwa hanya / dev / sda3 yang memiliki set "boot flag", sehingga Anda hanya memiliki satu ESP - / dev / sda3. Di bawah GPT, partisi dapat memiliki nama, dan Anda memiliki dua partisi dengan nama "partisi sistem EFI," tetapi nama-nama ini digunakan untuk tujuan identifikasi manusia saja. Jadi, tebakan saya adalah bahwa Anda (atau beberapa utilitas otomatis) membuat / dev / hda1 dengan tujuan menjadikannya ESP, tetapi ada kesalahan dalam mengatur kode jenis partisi atau utilitas lain mengubah kode tipenya dari C12A7328-F81F-11D2-BA4B-00A0C93EC93B untuk sesuatu yang lain.
Ada sejumlah cara untuk memperbaikinya. Yang paling sederhana adalah dengan hanya mengubah nama / dev / sda1 untuk menghindari kebingungan. Jika Anda berpikir bahwa / dev / sda1 tidak ada gunanya, Anda dapat mencadangkannya dan menghapusnya. Ini akan menghindarinya dan menghindari kebingungan, tetapi tentu saja Anda akan memiliki 273 MB ruang disk yang tidak digunakan. Atau, Anda bisa mencurahkan ruang untuk tujuan lain, jika perlu mengubah nama dan jenis kode untuk menghindari kebingungan. EFI secara eksplisit memungkinkan beberapa ESP, sehingga Anda dapat mengubah kode jenis (dengan mengatur "boot flag" menggunakan parted, misalnya) dan menggunakan kedua ESP; tapi ini bisa membingungkan.
Kemungkinannya adalah bahwa masalah ini tidak terkait dengan ketidakmampuan Anda untuk mem-boot Linux, karena sepertinya semua file yang relevan ada di / dev / sda3. Beberapa kemungkinan alasan untuk masalah ini terjadi pada saya:
Anda dapat mencoba menyesuaikan perintah efibootmgr Anda, menemukan biner baru, atau yang lainnya untuk menguji kemungkinan ini. Jika semuanya gagal, saya sarankan Anda melakukan hal berikut:
Ini harus membuat boot GRUB menggunakan nama default untuk boot loader (EFI / Boot / bootx64.efi). Satu masalah dengan ini adalah bahwa GRUB mungkin tidak memiliki entri yang berfungsi untuk Windows. Anda mungkin dapat membuatnya secara manual; entri seperti ini seharusnya berfungsi:
Atau, Anda bisa menginstal mereparasi atau refind sebagai EFI / Boot / bootx64.efi. Perhatikan bahwa biner penerima yang tersedia dari situsnya tidak akan berfungsi pada PC berbasis UEFI; Anda harus menggunakan versi di repositori Ubuntu. rEFInd adalah cabang dari rEFIt dengan berbagai perbaikan bug dan pembaruan, termasuk dukungan UEFI yang lebih baik. (Penerima tampaknya telah ditinggalkan sekitar dua tahun yang lalu.) Jadi, saya sarankan menggunakan Penerima dan bukan Penerima - tapi saya pengelola Penerima, jadi saya bukan pengamat independen pada skor ini. Sayangnya, AFAIK rEFInd belum (belum) termasuk dalam repositori Ubuntu, jadi Anda harus mengunduh dan menginstalnya secara manual.
sumber
Posisi awal yang sama di sini pada seri e sony vaio baru. Terima kasih Rod atas jawaban Anda.
Untuk berjaga-jaga seandainya seseorang membutuhkan panduan, inilah yang bekerja untuk saya:
Menginstal ubuntu 12,04 dari USB bersama win7.
mounting / dev / sda3 dari live-session
sekarang boot langsung ke grub2, tetapi tanpa entri win7
setelah memuat ubuntu saya edit
/etc/grub.d/40_custom
menambahkan
dan kemudian
semuanya bekerja dengan baik
sumber
Saya menyarankan dua alternatif berbeda:
Jangan menimpa windows mbr tetapi menggunakannya untuk meluncurkan grub
ubah pengaturan bios ( f2atau f3saat startup) dalam opsi boot dari UEFI ke LEGACY, maka biasanya akan meluncurkan sistem terakhir yang diinstal seperti biasa
sumber
Recommended Repair
tombolnya. (ini akan secara otomatis menginstal parameter yang benar untuk grub-efi, termasuk parameter SecureBoot jika diperlukan, dan mengganti nama file EFI jika seandainya firmware UEFI dikunci ke file Windows). Tunjukkan URL yang akan muncul jika ada masalah.sumber