Saya akan menggunakan istilah BIOS di bawah ini ketika merujuk pada konsep yang sama untuk kedua sistem UEFI yang lebih baru dan sistem BIOS tradisional, karena sementara ini adalah pertanyaan berorientasi UEFI, berbicara tentang jibes "BIOS" yang lebih baik dengan, misalnya, dokumentasi GRUB , dan "BIOS / UEFI" terlalu kikuk. GRUB (sebenarnya, GRUB 2 - ini sering digunakan secara ambigu) adalah bootloader yang diinstal oleh linux dan digunakan untuk dual boot Windows.
Pertama, kata tentang urutan drive dan urutan boot. Urutan drive mengacu pada urutan di mana drive secara fisik terhubung ke bus pada motherboard (drive pertama, drive kedua, dll.); informasi ini dilaporkan oleh BIOS. Urutan bootmengacu pada urutan di mana BIOS memeriksa drive yang dapat di-boot. Ini tidak harus sama dengan urutan drive, dan biasanya dapat dikonfigurasi melalui layar pengaturan BIOS. Urutan drive seharusnya tidak dapat dikonfigurasi atau dipengaruhi oleh urutan boot, karena itu akan menjadi hal yang sangat tidak ramah untuk OS lakukan (tetapi secara teori BIOS tumpul bisa). Juga, jika Anda mencabut drive pertama, drive kedua kemungkinan akan menjadi yang pertama. Kita akan menggunakan UUID dalam mengkonfigurasi boot loader untuk mencoba dan menghindari masalah seperti ini (installer linux kontemporer juga melakukan ini).
Cara ideal untuk mendapatkan apa yang Anda inginkan adalah menginstal linux ke drive kedua dalam hal urutan drive dan kemudian memilihnya terlebih dahulu dalam hal urutan boot menggunakan UEFI set-up. Keuntungan tambahan dari ini adalah Anda kemudian dapat menggunakan urutan boot BIOS / UEFI untuk memilih drive windows dan memotong grub jika Anda mau. Alasan saya merekomendasikan linux pada drive kedua adalah karena GRUB harus "chainload" bootloader asli Windows, dan windows bootloader selalu menganggap itu pada drive pertama. Namun, ada cara untuk mengelabui jika Anda lebih suka atau membutuhkannya sebaliknya.
Mudah-mudahan, Anda bisa melanjutkan dan menggunakan CD langsung atau apa pun dan menyelesaikan ini menggunakan installer GUI. Namun, tidak semua penginstal dibuat sama, dan jika ini dikacaukan dan Anda memiliki masalah seperti:
Saya menginstal linux ke disk pertama dan sekarang saya tidak bisa boot windows, atau
Saya menginstal linux ke disk kedua, tetapi menggunakan disk pertama untuk bootloader, dan sekarang saya tidak bisa boot apa pun!
Terus membaca. Dalam kasus kedua, Anda harus terlebih dahulu mencoba dan menginstal ulang linux ke disk kedua, dan kali ini pastikan ke sanalah bootloader pergi. Cara termudah dan paling mudah untuk melakukan itu adalah dengan menghapus sementara drive Windows dari mesin, karena kita akan menganggap tidak ada tambahan yang diinstal di sana, terlepas dari urutan drive.
Setelah Anda menginstal linux dan memastikannya bisa boot, colokkan drive Windows kembali (jika Anda menghapusnya - dan ingat, kami idealnya menginginkannya terlebih dahulu dalam hal urutan drive, dan drive kedua pertama dalam hal urutan boot) dan lanjutkan ke langkah berikutnya.
Mengakses konfigurasi GRUB
Boot linux, buka terminal, dan
> su root
Anda akan dimintai kata sandi root. Dari titik ini ke depan, Anda adalah pengguna super di terminal itu (untuk memeriksa, mencoba whoami
), jadi jangan melakukan hal bodoh. Namun, Anda masih pengguna biasa di GUI, dan karena kami akan mengedit file teks, jika Anda lebih suka editor GUI kami harus mengubah sementara kepemilikan file itu dan direktori itu di:
> chown -R yourusername /etc/grub.d/
Jika Anda mendapatkan "Operasi tidak diizinkan", Anda tidak melakukannya su
dengan benar. Jika Anda mendapatkannya chown: invalid user: ‘yourusername’
, Anda mengambil perintah terakhir terlalu harfiah.
Anda sekarang dapat menavigasi ke /etc/grub.d
server file Anda dan mencari file bernama 40_custom
. Seharusnya terlihat seperti ini:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
Jika Anda tidak dapat menemukannya, di terminal root masukkan perintah berikut:
> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom
Buka di editor teks Anda, salin tempel bagian di atas (mulai dengan #!/bin/sh
) dan lanjutkan ke langkah berikutnya.
Menambahkan opsi boot Windows
Salin-rekatkan ini dengan editor teks di akhir file:
menuentry "MS Windows" {
insmod part_gpt
insmod search_fs_uuid
insmod ntfs
insmod chain
}
Ini adalah daftar modul yang GRUB perlu untuk menyelesaikan sesuatu ( ntfs
mungkin berlebihan, tetapi tidak harus melukai apa pun juga). Perhatikan bahwa ini adalah entri yang tidak lengkap - kita perlu menambahkan beberapa perintah penting.
Menemukan Bootloader Tahap Kedua Windows
Instalasi linux Anda mungkin telah mengotomatiskan partisi Windows Anda dan Anda harus dapat menemukannya di browser file. Jika tidak, cari tahu cara membuatnya (jika Anda tidak yakin bagaimana caranya, ajukan pertanyaan di situs ini). Setelah selesai, kita perlu mengetahui titik mount - ini harus jelas di browser file, mis /media/ASDF23SF23/
. Untuk menyimpan beberapa pengetikan, kita akan memasukkannya ke variabel shell:
win="/whatever/the/path/is"
Seharusnya tidak ada spasi di kedua sisi tanda sama dengan. Jangan sertakan elemen jalur Windows di sini. Ini harus mengarah ke folder tingkat atas pada partisi Windows. Sekarang:
cd $win
find . -name bootmgfw.efi
Ini bisa memakan waktu beberapa menit jika Anda memiliki partisi besar, tetapi kemungkinan besar hal pertama yang dimuntahkannya adalah apa yang kami cari; mungkin ada referensi lebih lanjut dalam sistem file yang berisi string goobledygook yang panjang - bukan itu. Gunakan Ctrl-c
untuk menghentikan pencarian begitu Anda melihat sesuatu yang pendek dan sederhana seperti ./Windows/Boot/EFI/bootmgfw.efi
atau ./EFI/HP/boot/bootmgfw.efi
.
Kecuali .
pada awalnya, ingatlah jalan ini untuk nanti; Anda dapat menyalinnya ke editor teks Anda pada baris kosong di bagian bawah, karena kami akan menggunakannya di sana. Jika Anda ingin kembali ke direktori Anda sebelumnya sekarang, gunakan cd -
, meskipun tidak masalah di mana Anda berada di shell dari sini maju.
Mengatur Parameter yang Tepat
GRUB harus dapat menemukan dan menyerahkan proses boot ke bootloader Windows tahap kedua. Kami sudah memiliki path di partisi Windows, tetapi kami juga membutuhkan beberapa parameter untuk memberi tahu GRUB di mana partisi itu berada. Seharusnya ada alat yang diinstal pada sistem Anda yang disebut grub-probe
atau (aktif, misalnya, Fedora) grub2-probe
. Ketik grub
lalu tekan Tabdua atau tiga kali; Anda harus melihat daftar termasuk yang satu atau yang lain.
> grub-probe --target=hints_string $win
Anda harus melihat string seperti:
--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1
Kembali ke editor teks dengan konfigurasi GRUB di dalamnya dan tambahkan baris setelah semua insmod
perintah (tetapi sebelum kurung kurawal penutupan) sehingga terlihat seperti:
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
Jangan putus garis itu atau biarkan editor teks Anda melakukannya. Mungkin membungkus di layar - cara mudah untuk mengetahui perbedaannya adalah dengan mengatur penomoran baris. Lanjut:
> grub-probe --target=fs_uuid $win
Ini harus mengembalikan string huruf, angka, dan tanda hubung yang lebih pendek seperti "123A456B789X6X" atau "b942fb5c-2573-4222-acc8-bbb883f19043". Tambahkan ke akhir search --fs-uuid
baris setelah string bios petunjuk, dipisahkan dengan spasi.
Selanjutnya, jika (dan hanya jika) Windows berada di drive kedua dalam hal urutan drive , tambahkan baris setelah search --fs-uuid
baris:
drivemap -s hd0 hd1
Ini "trik" yang disebutkan sebelumnya. Perhatikan itu tidak dijamin untuk bekerja tetapi tidak ada salahnya untuk mencoba.
Akhirnya, baris terakhir seharusnya:
chainloader (${root})[the Windows path to the bootloader]
}
Untuk lebih jelasnya, misalnya:
chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi
Itu dia. Simpan file dan periksa di browser file untuk memastikan itu benar-benar telah disimpan dan terlihat seperti seharusnya.
Tambahkan Opsi Menu Baru ke GRUB
Ini dilakukan dengan alat yang disebut grub-mkconfig
atau grub2-mkconfig
; itu akan ada dalam daftar yang Anda temukan Tabsebelumnya. Anda mungkin juga memiliki perintah aa dipanggil update-grub
. Untuk memeriksanya, cukup ketik di terminal root. Jika Anda mendapatkan "perintah tidak ditemukan", Anda harus menggunakan grub-mkconfig
secara langsung. Jika tidak (termasuk mendapatkan kesalahan yang lebih lama), Anda baru saja mengatur konfigurasi dan dapat membaca sedikit.
Untuk menggunakan grub-mkconfig
secara langsung, pertama-tama kita perlu menemukan grub.cfg
:
> find /boot -name grub.cfg
Ini mungkin akan /boot/grub/grub.cfg
atau /boot/grub2/grub.cfg
.
> grub-mkconfig -o /boot/grub/grub.cfg
update-grub
secara otomatis akan memindai konfigurasi untuk kesalahan. grub-mkconfig
tidak akan, tetapi penting untuk melakukannya karena jauh lebih mudah untuk berurusan dengan mereka sekarang daripada ketika Anda mencoba untuk mem-boot mesin. Untuk ini, gunakan grub-script-check
(atau grub2-script-check
):
> grub-script-check /boot/grub/grub.cfg
Jika ini (atau update-grub
) menghasilkan kesalahan yang menunjukkan nomor baris, itu adalah nomor baris di grub.cfg, tetapi Anda harus memperbaiki bagian yang terkait di dalam /etc/grub.d/40_custom
(file di editor teks Anda). Anda mungkin perlu root hanya untuk melihat file sebelumnya, jadi coba less /boot/grub/grub.cfg
di terminal, tekan :, dan masukkan nomor baris. Anda harus melihat entri menu Anda. Temukan kesalahan ketik, koreksi di editor teks, dan jalankan update-grub
atau grub-mkconfig
lagi.
Setelah selesai, Anda dapat menutup editor teks dan mengetik exit
terminal untuk meninggalkan mode superuser.
Nyalakan kembali!
Saat Anda masuk ke menu grub, gulir ke bawah dengan cepat (sebelum batas waktu berakhir, biasanya 5 detik) ke opsi "Windows" dan mengujinya. Jika Anda mendapatkan pesan kesalahan dari grub, ada yang salah dengan konfigurasi. Jika Anda mendapatkan pesan kesalahan dari Windows , masalah itu ada di antara Anda dan Microsoft. Namun, jangan khawatir, drive Windows Anda belum dimodifikasi dan Anda akan dapat mem-boot langsung ke dalamnya dengan menempatkannya terlebih dahulu (dalam hal urutan boot) melalui pengaturan BIOS.
Ketika Anda kembali ke linux lagi, kembalikan kepemilikan /etc/grub.d
direktori dan isinya ke keadaan semula:
sudo chmod 755 /etc/grub.d/40_custom
Referensi
chainload $({root})
seharusnyachainload (${root})
(saya tidak dapat mengeditnya karena terlalu kecil dari perubahan)./etc/grub.d
dan itu tidak ditambahkan ketika Anda menghasilkan konfigurasi, sesuatu yang aneh sedang terjadi. Jika Anda berjalangrub-mkconfig
tanpa-o
meludah ke standar, itu mungkin membantu mengkonfirmasi atau menolak bahwa penambahan Anda sedang diproses.