TL; DR, ditambahkan di edit:
Pertanyaannya adalah:
Bagaimana saya bisa membuat BIOS lebih memilih GRUB daripada Windows Boot Manager pada partisi boot UEFI yang sama?
Masalahnya bukan dengan Grub; Grub melakukan hal yang benar ketika BIOS memulainya. Masalahnya bukan dengan "disk tidak dapat di-boot," karena kedua bootstrap Windows UEFI dan Grub UEFI bootstrap dapat di-boot. Masalahnya adalah UEFI mana bootstrap yang dipilih BIOS untuk booting.
Saya sedang menyiapkan komputer baru, dan ingin boot secara default ke Ubuntu, tetapi memiliki opsi untuk memilih Windows saat boot. Ini sangat penting jika listrik padam dan kembali; Aku bahkan tidak akan berada di rumah.
Saya mulai dengan menginstal Ubuntu 17.04 pada disk NVMe internal saya, dipartisi dengan GPT untuk menggunakan setengah dari disk, dan partisi boot UEFI terpisah. GRUB melakukan boot dengan baik, dan saya melihat menu boot GRUB saat start-up di mana saya dapat memilih item apa pun yang diketahui GRUB.
Kemudian saya menginstal Windows 10 Pro dari ISO yang baru diunduh. Itu menginstal Windows Boot Manager ke partisi UEFI yang sama, dan meninggalkan Ubuntu utuh (hebat!) Dan boot dengan baik ke Windows 10.
Namun, itu "sesuatu" yang membuat firmware UEFI segera memilih Windows Boot Manager daripada GRUB pada power-up. Satu-satunya cara untuk mem-boot Linux sekarang adalah dengan menggunakan boot manager BIOS (F11 pada BIOS saya) dan pilih boot loader GRUB secara manual. UEFI BIOS tahu bahwa ada beberapa instalasi yang dapat di-boot pada partisi UEFI, karena saya dapat memilih di antaranya di dalam boot manager. Namun, ketika saya berada di menu pengaturan di UEFI BIOS, itu hanya memungkinkan saya memilih "UEFI boot drive internal saya" dalam pemilihan prioritas boot - itu tidak membiarkan saya memilih bootloader tertentu pada partisi yang akan digunakan . Dan, secara default, ia memilih Windows, bukan GRUB.
Internet (dan situs ini) menunjukkan bahwa cara lama untuk memperbaikinya adalah dengan menjalankan update-grub
(sehingga GRUB mengenali Windows) dan kemudian grub-install
(untuk mengembalikan GRUB pada perangkat.) Saya telah melakukan ini, tetapi sayangnya, masih memiliki perilaku seperti dijelaskan di atas, di mana BIOS secara default memilih Windows Boot Manager. ( update-grub
menemukan Windows Boot Manager yang diinstal, dan menambahkannya ke menu, dan item menu itu berfungsi ketika saya secara manual memilih partisi GRUB di boot manager UEFI.)
Apa yang dapat saya lakukan untuk menjadikan GRUB boot "default" di partisi boot UEFI saya?
Menggunakan motherboard MSI X399 Carbon.
Suntingan kedua: Karena jawaban yang benar akhirnya disebutkan dalam komentar untuk tanggapan, saya akan mengulanginya di sini:
"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.
sumber
Jawaban:
Ada beberapa cara berbeda untuk melakukan ini, termasuk:
ubuntu
, mengingat Anda menginstalnya dari distribusi itu.)bcfg
perintah di shell EFI versi 2, seperti yang dijelaskan pada wiki Arch Linux. Jika sistem Anda belum diatur dengan shell yang mudah diakses, pendekatan ini mungkin lebih sulit untuk digunakan daripada yang lain, tetapi itu adalah OS-agnostik.ubuntu
entri dalam daftar EasyUEFI dan memindahkannya ke atas.bcdedit
-bcdedit
Perintah Windows dapat mengubah urutan boot berbasis NVRAM. Secara khusus, membuka jendela Command Prompt Administrator dan mengetikbcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi
(opsional diikuti olehbcdedit /set "{bootmgr}" description "ubuntu"
agar deskripsi tetap masuk akal) harus melakukan trik.efibootmgr
- Alat Linux ini dapat menyesuaikan urutan boot. Mulailah dengan mengetiksudo efibootmgr
sendirian untuk melihat opsi. Catat nomor (Boot####
) yang terkait denganubuntu
entri, dan urutan boot saat ini (diBootOrder
telepon). Anda kemudian dapat memasukkan urutan boot baru denganubuntu
entri di atas dengan menggunakan-o
opsi. Misalnya, jika urutan boot saat ini adalah 0000,0003,0007,0004 danubuntu
0007, Anda akan mengetiksudo efibootmgr -o 0007,0000,0003,0004
untuk menyesuaikan urutan boot.refind-mkdefault
- Skrip ini dilengkapi dengan rEFInd, dan ini adalah cara untuk mengotomatiskan prosedur sebelumnya. Jika Anda tidak menggunakan rEFInd, Anda harus mengunduh skrip di sini dan membuatnya dapat dieksekusi (chmod a+x refind-mkdefault
). Anda kemudian menjalankannya sebagaisudo ./refind-mkdefault -L ubuntu
atausudo ./refind-mkdefault -L shimx64
untuk membuat GRUB entri boot default.Ada potensi masalah dan komplikasi dengan semua opsi ini. Faktor yang paling mungkin menyulitkan adalah jika ada
ubuntu
entri boot lama atau alternatif . Penting bagi Anda untuk memindahkan yang benar ke posisi teratas dalam urutan boot; jika Anda memindahkan yang salah, Anda akan berakhir dengan tidak ada perubahan dalam perilaku atau sesuatu boot non-fungsional, yang akan membuat lebih sulit untuk boot. Jika Anda menggunakanefibootmgr
,BootCurrent
saluran mungkin membantu Anda menentukan opsi mana yang harus Anda tetapkan sebagai default.Ada cara lain untuk melakukannya yang berlebihan. Menginstal ulang GRUB (via Boot Repair atau
grub-install
) harusnya melakukan trik, misalnya. Namun, pendekatan ini berisiko merusak konfigurasi GRUB yang sudah dikenal.Perhatikan juga bahwa beberapa EFI bermasalah dan ada masalah lain yang dapat mempersulit GRUB untuk melakukan booting secara andal. Anda mungkin ingin memeriksa pertanyaan dan jawaban ini di AskUbuntu jika Anda mengalami masalah seperti itu:
sumber
sudo efibootmgr -n 0002
jauh lebih baik daripada memodifikasi pesanan SO saat ini. Itu berubahBootNext: 0001
dan pergiBootCurrent: 0002
untuk waktu berikutnya, membuat entri GRUB Anda saat ini tidak tersentuh. Tambahkan saja bash withchmod +x
dan balutkan perintah itu dengan sepanjang reboot.Saya sudah mengalami masalah yang tepat ini beberapa minggu terakhir. Saya menemukan jawabannya menggunakan opsi ini. Sebelum melakukan hal-hal ini, saya sarankan Anda untuk masuk ke BIOS / UEFI dan memeriksa urutan boot dan memastikan di mana grub diinstal terlebih dahulu.
Jadi bagaimana saya melihatnya adalah Anda memiliki dua opsi.
Pilihan 1
Yang saya sarankan kepada Anda adalah menginstal Windows 10 terlebih dahulu. Kemudian instal ubuntu. Tapi saya tahu itu agak tabu untuk hanya mengatakan "instal ulang perangkat lunak Anda" jadi saya akan menawarkan alternatif juga.
pilihan 2
Dengan pengaturan Anda saat ini, saya akan merekomendasikan Anda untuk boot ke CD / flash drive Ubuntu Live dan menginstal dan menjalankan
boot-repair
. Klik opsi "Perbaikan yang Direkomendasikan" dan ikuti instruksi yang diberikan. Telusuri dengan seksama dan baca semua perintah sebelum menjalankan. Ini akan menimpa instalasi grub saat ini dengan yang baru yang diharapkan akan memperbaikinya.sumber
Saya melihat beberapa solusi:
efibootmgr
. Di Windows saya tidak yakin tapi saya pikir Anda bisa boot ke opsi pemulihan yang memungkinkan Anda mengkonfigurasi UEFI. Atau Anda mungkin lebih suka menginstal sesuatu seperti rEFInd.boot
.sumber
efibootmgr
tidak berfungsi, saya tahu saya tidak akan membeli MSI.Saya baru saja mengganti papan ibu saya di laptop saya dan grub menghilang sepenuhnya.
Saya tahu ini ditandai sebagai tetap tetapi saya pikir ini mungkin berguna bagi Anda.
Untuk membuat grub tampil sebagai opsi boot. Saya perlu menambahkan EFI ke bios.
Saya pergi ke "opsi daftar boot" di bios saya. Klik pada "Tambahkan Opsi Booting" (Saya sadar bahwa ini adalah bios khusus). Ini memberi saya opsi untuk nama file, yang dalam kasus saya adalah
\EFI\ubuntu\grubx64.efi
dan memberinya namagrub
Saya kemudian memindahkan
grub
entri ke bagian atas urutan boot, dan sekarang ini ditampilkan sebagai entri default.Yaitu yang saya katakan adalah Anda mungkin hanya perlu menemukan file EFI yang benar dan memindahkannya ke bagian atas urutan / urutan boot Anda.
sumber
Tidak ada opsi di atas yang berfungsi untuk saya dengan laptop HP 655 lama. Saya menemukan solusinya adalah mengatur windows boot manager tidak aktif:
Ganti 4 dengan jumlah windows boot manager Anda. Jalankan efibootmgr lagi dan Anda akan melihat bintang menghilang untuk menandai tidak aktif.
Setelah komputer saya boot ke menu boot grup dan windows masih dapat dipilih dari itu.
sumber
Solusi yang mungkin adalah mengedit file / etc / default / grub secara manual.
sudo vim /etc/default/grub
Entri default ditentukan oleh
GRUB_DEFAULT=
pengaturan di / etc / default / grub. "Entri menu" pertama memiliki nilai "0". Jika Ubuntu adalah entri kedua di layar boot kemudian atur GRUB_DEFAULT = 1.Setelah itu, Anda perlu menjalankan perintah untuk memperbarui konfigurasi grub:
update-grub
Opsi lain adalah instalasi grub-customizer dan menggunakan GUI untuk mengkonfigurasi prioritas boot.
sumber