Я буду використовувати термін BIOS нижче, коли посилаюся на поняття, однакові як для нових систем UEFI, так і для традиційних систем BIOS, оскільки, хоча це питання, орієнтоване на UEFI, краще говорити про рубежі "BIOS", наприклад, з документацією GRUB , а "BIOS / UEFI" занадто незграбний. GRUB (насправді GRUB 2 - це часто використовується неоднозначно) - це завантажувач, встановлений Linux і використовується для подвійного завантаження Windows.
По-перше, слово про порядок приводу та порядок завантаження. Порядок приводу означає порядок, в якому накопичувачі фізично підключені до шини на материнській платі (перший привід, другий привід тощо); про цю інформацію повідомляє BIOS. Порядок завантаженнявідноситься до послідовності, в якій BIOS перевіряє наявність завантажувального накопичувача. Це не обов'язково збігається з порядком приводу, і зазвичай його можна налаштувати за допомогою екрана налаштування BIOS. Порядок накопичувача не повинен налаштовуватися або впливати на порядок завантаження, оскільки це було б дуже непривабливо для ОС (але теоретично в'ялий BIOS міг би). Крім того, якщо ви відключите перший привід, другий накопичувач, швидше за все, стане першим. Ми будемо використовувати UUID під час налаштування завантажувача, щоб спробувати уникнути таких проблем (як це роблять і сучасні інсталятори Linux).
Ідеальний спосіб отримати те, що ви хочете, - встановити Linux на другий привід з точки зору порядку диска, а потім вибрати його спочатку з точки зору порядку завантаження, використовуючи налаштування UEFI. Додатковою перевагою цього є те, що потім ви можете скористатися порядком завантаження BIOS / UEFI, щоб вибрати диск Windows і обійти grub, якщо хочете. Причина, яку я рекомендую linux на другому диску, полягає в тому, що GRUB повинен "завантажувати ланцюжок" нативної завантажувача Windows, а завантажувач Windows завжди передбачає, що він знаходиться на першому диску. Однак є спосіб її обдурити, якщо ви віддаєте перевагу або потребуєте навпаки.
Будемо сподіватися, що ви можете просто йти вперед і використовувати живий компакт-диск або що завгодно, і зробити це за допомогою інсталятора GUI. Однак, не всі інсталятори створюються рівними, і якщо це накручується, і у вас залишаються такі проблеми, як:
Я встановив linux на перший диск і тепер не можу завантажувати windows, або
Я встановив linux на другий диск, але використовуючи перший диск для завантажувача, і тепер я нічого не можу завантажувати!
Тоді продовжуйте читати. У другому випадку спершу слід спробувати перевстановити linux на другий диск, і цього разу переконайтесь, що куди йде завантажувач. Найпростіший і нерозумний спосіб зробити це - тимчасово вийняти накопичувач Windows з машини, оскільки ми будемо вважати, що на ньому нічого додаткового не встановлено, незалежно від порядку приводу.
Після того, як ви встановили Linux і переконалися, що він може завантажитися, підключіть дисковод Windows назад (якщо ви його вилучили - і пам’ятайте, що в ідеалі ми хочемо, щоб він був першим з точки зору порядку диска, а другий диск першого - з точки зору порядок завантаження) та переходимо до наступного кроку.
Доступ до конфігурації GRUB
Завантажте Linux, відкрийте термінал і
> su root
Вам буде запропоновано пароль root. З цього моменту ви є суперпользователем в цьому терміналі (щоб перевірити, спробувати whoami
), тому не робіть нічого дурного. Однак ви все ще є звичайним користувачем у графічному інтерфейсі, і оскільки ми будемо редагувати текстовий файл, якщо ви віддаєте перевагу редактору графічного інтерфейсу, нам доведеться тимчасово змінити право власності на цей файл та на каталог, у якому він знаходиться:
> chown -R yourusername /etc/grub.d/
Якщо ви отримаєте "Операція не дозволена", ви не виконали su
належну інформацію. Якщо ви отримаєте chown: invalid user: ‘yourusername’
, ви прийняли останню команду занадто буквально.
Тепер ви можете перейти до /etc/grub.d
файлового браузера і шукати файл, який називається 40_custom
. Це повинно виглядати так:
#!/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.
Якщо ви не можете його знайти, в кореневий термінал введіть такі команди:
> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom
Відкрийте його у текстовому редакторі, скопіюйте частину вище (починаючи з / #!/bin/sh
) та перейдіть до наступного кроку.
Додавання параметра завантаження Windows
Скопіюйте та вставте це текстовим редактором у кінці файлу:
menuentry "MS Windows" {
insmod part_gpt
insmod search_fs_uuid
insmod ntfs
insmod chain
}
У цьому списку модулів GRUB потрібно буде виконати справи ( ntfs
може бути зайвим, але і нічого не завадить). Зауважте, що це неповний запис - нам потрібно додати кілька важливих команд.
Пошук завантажувача другого ступеня Windows
Ваша інсталяція Linux, ймовірно, автоматизувала ваш розділ Windows, і ви повинні мати можливість знайти його у файловому браузері. Якщо ні, то придумайте спосіб зробити так (якщо ви не впевнені, як, задайте питання на цьому веб-сайті). Після цього нам потрібно знати точку монтажу - це повинно бути очевидно в браузері файлів, наприклад /media/ASDF23SF23/
. Щоб зберегти певний текст, ми поставимо його в змінну оболонки:
win="/whatever/the/path/is"
Не повинно бути пробілів по обидва боки від знака рівності. Не включайте сюди жодних елементів шляху Windows. Це має вказувати на папку верхнього рівня на розділі Windows. Зараз:
cd $win
find . -name bootmgfw.efi
Це може зайняти кілька хвилин, якщо у вас є велика перегородка, але, швидше за все, перше, що вона виплює, - це те, що ми шукаємо; У файловій системі можуть бути додаткові посилання, що містять довгі рядки goobledygook - це не так. Використовуйте Ctrl-c
для зупинки пошуку, коли ви побачите щось коротке і просте, як ./Windows/Boot/EFI/bootmgfw.efi
або ./EFI/HP/boot/bootmgfw.efi
.
За винятком .
початку, пам’ятайте про цей шлях на потім; ви можете скопіювати його у свій текстовий редактор у порожньому рядку внизу, оскільки ми будемо використовувати його там. Якщо ви хочете повернутися до попереднього каталогу зараз, використовуйте cd -
, хоча це не має значення, де ви знаходитесь в оболонці звідси вперед.
Встановлення правильних параметрів
GRUB повинен мати можливість знаходити і передавати процес завантаження другому етапу завантажувача Windows. У нас вже є шлях до розділу Windows, але нам також потрібні деякі параметри, щоб повідомити GRUB, де цей розділ. У вашій системі повинен бути встановлений інструмент, який називається grub-probe
або (наприклад, Fedora) grub2-probe
. Наберіть, grub
а потім натисніть Tabдва-три рази; ви повинні побачити список, включаючи той чи інший.
> grub-probe --target=hints_string $win
Ви повинні побачити рядок, такий як:
--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1
Поверніться до текстового редактора з конфігурацією GRUB у ньому та додайте рядок після всіх insmod
команд (але перед закриттям фігурної дужки), щоб вона виглядала так:
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
Не переривайте цей рядок і не дозволяйте текстовому редактору робити це. Він може загорнутися на дисплеї - простий спосіб визначити різницю - встановити нумерацію рядків. Далі:
> grub-probe --target=fs_uuid $win
Це має повернути коротший рядок літер, цифр та можливих тире, таких як "123A456B789X6X" або "b942fb5c-2573-4222-acc8-bbb883f19043". Додайте це до кінця search --fs-uuid
рядка після рядка біос підказки, розділеного пробілом.
Далі, якщо (і лише якщо) Windows знаходиться на другому диску в порядку порядку диска , додайте рядок після search --fs-uuid
рядка:
drivemap -s hd0 hd1
Про цю "хитрість" згадували раніше. Зауважте, що це не гарантовано працює, але намагатись не завадить.
Нарешті, останнім рядком має бути:
chainloader (${root})[the Windows path to the bootloader]
}
Щоб було зрозуміло, наприклад:
chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi
Це воно. Збережіть файл і перевірте у браузері файлів, щоб переконатися, що він дійсно був збережений і виглядає так, як слід.
Додайте нову опцію меню до GRUB
Це робиться за допомогою інструменту під назвою grub-mkconfig
або grub2-mkconfig
; це було в тому списку, який ви знайшли Tabраніше. Ви також можете викликати команду aa update-grub
. Щоб перевірити це, просто введіть його в кореневий термінал. Якщо ви отримаєте "команду не знайдено", вам потрібно скористатися grub-mkconfig
безпосередньо. Якщо ні (включаючи отримання більш тривалої помилки), ви просто встановили конфігурацію і можете трохи знехтувати.
Для grub-mkconfig
прямого використання нам спочатку потрібно знайти grub.cfg
:
> find /boot -name grub.cfg
Це, мабуть, буде /boot/grub/grub.cfg
або /boot/grub2/grub.cfg
.
> grub-mkconfig -o /boot/grub/grub.cfg
update-grub
автоматично сканує конфігурацію на наявність помилок. grub-mkconfig
не буде, але це важливо зробити, тому що зараз з ними набагато простіше впоратися, ніж коли ти намагаєшся завантажити машину. Для цього використовуйте grub-script-check
(або grub2-script-check
):
> grub-script-check /boot/grub/grub.cfg
Якщо це (або update-grub
) видає помилку із зазначенням номера рядка, це номер рядка в grub.cfg, але вам потрібно виправити відповідну частину /etc/grub.d/40_custom
(файл у вашому текстовому редакторі). Можливо, вам потрібно буде мати root, лише щоб подивитися на колишній файл, тому спробуйте less /boot/grub/grub.cfg
в терміналі, натисніть :і введіть номер рядка. Ви повинні побачити запис у меню. Знайдіть помилку друку, виправте її в текстовому редакторі та запустіть update-grub
або grub-mkconfig
знову.
Закінчивши, ви можете закрити текстовий редактор і набрати exit
термінал, щоб вийти з режиму суперпользователя.
Перезавантажте!
Діставшись до меню груб, швидко прокрутіть вниз (до закінчення часу, як правило, 5 секунд) до опції "Windows" і протестуйте її. Якщо ви отримуєте помилку в текстовому повідомленні від grub, з конфігурацією щось не так. Якщо ви отримаєте повідомлення про помилку від Windows , ця проблема між вами та Microsoft. Не хвилюйтеся, однак ваш диск Windows не був змінений, і ви зможете завантажуватися безпосередньо на нього, поставивши його першим (з точки зору порядку завантаження) через налаштування BIOS.
Коли ви знову повернетесь до linux, поверніть право власності на /etc/grub.d
каталог та його вміст у початковий стан:
sudo chmod 755 /etc/grub.d/40_custom
Список літератури