Подвійні вікна завантаження на другому жорсткому диску, система UEFI / GPT


15

Я хотів би встановити Linux, але я не хочу ризикувати пошкодженням своєї поточної установки Windows, оскільки я чув багато історій жахів. На щастя, у мене є додатковий жорсткий диск. Чи можу я встановити Linux на це, а потім подвійне завантажувальне вікно, не змінюючи привід Windows?

Також у мене є "BIOS" UEFI, а привід Windows знаходиться у форматі GPT.

Відповіді:


18

Я буду використовувати термін 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. Однак, не всі інсталятори створюються рівними, і якщо це накручується, і у вас залишаються такі проблеми, як:

  1. Я встановив linux на перший диск і тепер не можу завантажувати windows, або

  2. Я встановив 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

Список літератури

  • GRUB 2 Посібник

  • Arch Linux сторінка Wiki GRUB

    В Arch є декілька найкращих документів, і значна частина (включаючи цю сторінку) в основному застосовна для будь-якого дистрибутива GNU / Linux.


2
Технологічно правильний термін, який ви шукаєте, який також не є незграбним, - це прошивка , яка може представити себе як BIOS або як UEFI.
Milind R

На жаль, вбудоване програмне забезпечення також має набагато більш загальне значення, оскільки воно стосується будь-якого програмного забезпечення, вбудованого в апаратне забезпечення.
Килотан

На моєму робочому столі "ланцюжок" є невідомою як команда під час завантаження, але це завантажувач ланцюгів у файлі 40_custom, який мені потрібно написати. дайте мені знати, чи це нормально
FlogFR

Дуже хороша! Однак коли я спробую це, моя установка Windows 8 не з’явиться як запис у grub2. Я виправив усі синтаксичні помилки, і файл grub.cfg створюється без помилок. Також зауважте, що при першому згадуванні завантаження ланцюга є синтаксична помилка: chainload $({root})слід chainload (${root})(я не можу редагувати її, оскільки вона є занадто малою для зміни).
sobek

@sobek Спасибі за це - виправлено. Якщо ви додали щось у файл, /etc/grub.dа він не додається під час створення конфігурації, відбувається щось дивне. Якщо ви запускаєте grub-mkconfigбез -oцього, виплетете стандарт, це може допомогти підтвердити або заперечити, що ваші доповнення обробляються.
золотинок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.