GNU/Linux >> Znalost Linux >  >> Linux

Linux – duální spouštění Windows na druhém pevném disku, systém Uefi/gpt?

Chtěl bych nainstalovat linux, ale nechci riskovat poškození mé současné instalace systému Windows, protože jsem slyšel spoustu hororových příběhů. Naštěstí mám pevný disk navíc. Mohu do toho nainstalovat linux a poté duální spouštění oken, aniž bych musel upravovat jednotku Windows?

Také mám UEFI „BIOS“ a disk Windows je ve formátu GPT.

Přijatá odpověď:

Budu používat termín BIOS níže, když se odkazuje na koncepty, které jsou stejné pro novější systémy UEFI i tradiční systémy BIOS, protože i když se jedná o otázku orientovanou na UEFI, mluvit o „BIOS“ je lepší s např. dokumentací GRUB a „BIOS/UEFI“ je příliš neohrabaný. GRUB (ve skutečnosti GRUB 2 – toto se často používá nejednoznačně) je zavaděč nainstalovaný linuxem a používaný k duálnímu spouštění Windows.

Nejprve pár slov o pořadí jednotek a pořadí spouštění. Řízení objednávky odkazuje na pořadí, ve kterém jsou disky fyzicky připojeny ke sběrnici na základní desce (první disk, druhý disk atd.); tyto informace jsou hlášeny systémem BIOS. Pořadí spouštění označuje posloupnost, ve které systém BIOS kontroluje spouštěcí jednotku. Toto nemusí být nutně stejné jako pořadí jednotek a obvykle je konfigurovatelné prostřednictvím obrazovky nastavení systému BIOS. Pořadí jednotek by nemělo být konfigurovatelné nebo by nemělo být ovlivněno pořadím spouštění, protože by to bylo pro OS velmi nepřátelské (ale teoreticky by mohl tupý BIOS). Také pokud odpojíte první disk, druhý disk se pravděpodobně stane prvním. Budeme používat UUID při konfiguraci zavaděče, abychom se vyhnuli problémům, jako je tento (současné linuxové instalátory to také dělají).

Ideální způsob, jak získat to, co chcete, je nainstalovat linux na druhý disk z hlediska pořadí disku a poté jej nejprve vyberte z hlediska pořadí spouštění pomocí nastavení UEFI. Další výhodou je, že pak můžete použít pořadí spouštění systému BIOS/UEFI k výběru jednotky systému Windows a obejít grub, pokud chcete. Důvod, proč doporučuji linux na druhém disku, je ten, že GRUB musí „zřetězit“ nativní bootloader Windows a bootloader Windows vždy předpokládá, že je na prvním disku. Existuje však způsob, jak to oklamat, pokud to preferujete nebo potřebujete naopak.

Doufejme, že můžete pokračovat a použít živé CD nebo cokoli a provést to pomocí instalačního programu GUI. Ne všichni instalátoři jsou si však rovni, a pokud se to zvrtne a zbydou vám problémy jako:

  1. Nainstaloval jsem linux na první disku a nyní nemohu spustit systém Windows nebo

  2. Nainstaloval jsem linux na druhý disk, ale použil jsem první disk pro bootloader a teď nemůžu nic zavést!

Pak pokračujte ve čtení. Ve druhém případě byste se měli nejprve pokusit znovu nainstalovat linux na druhý disk a tentokrát se ujistěte, že tam je zavaděč. Nejjednodušší a nejspolehlivější způsob, jak toho dosáhnout, by bylo dočasně odebrat disk Windows z počítače, protože budeme předpokládat, že na něm není nainstalováno nic navíc, bez ohledu na pořadí disků.

Jakmile máte nainstalovaný linux a ujistíte se, že se může spustit, zapojte disk Windows zpět (pokud jste jej odebrali – a pamatujte, že v ideálním případě chceme, aby byl první z hlediska pořadí jednotek a druhý disk jako první z hlediska spouštění objednávka) a přejděte k dalšímu kroku.

Přístup ke konfiguraci GRUB

Spusťte linux, otevřete terminál a

> su root

Budete požádáni o heslo roota. Od tohoto okamžiku jste superuživatel v tomto terminálu (pro kontrolu zkuste whoami ), tak nedělejte žádnou hloupost. Stále jste však normálním uživatelem grafického uživatelského rozhraní, a protože budeme upravovat textový soubor, pokud dáváte přednost editoru GUI, budeme muset dočasně změnit vlastnictví tohoto souboru a adresáře, ve kterém se nachází:

> chown -R yourusername /etc/grub.d/

Pokud se zobrazí „Operace není povolena“, su jste nezadali správně. Pokud se zobrazí chown: invalid user: ‘yourusername’ , vzal jsi poslední příkaz příliš doslovně.

Nyní můžete přejít na /etc/grub.d v prohlížeči souborů a vyhledejte soubor s názvem 40_custom . Mělo by to vypadat takto:

#!/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.

Pokud jej nemůžete najít, zadejte v kořenovém terminálu následující příkazy:

> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom

Otevřete jej v textovém editoru, zkopírujte a vložte část výše (začínající #!/bin/sh ) a přejděte k dalšímu kroku.

Související:Bash:Shift+šipky vytvoří A,B,C,D?

Přidání možnosti spouštění systému Windows

Zkopírujte a vložte to pomocí textového editoru na konec souboru:

menuentry "MS Windows" {
        insmod part_gpt
        insmod search_fs_uuid
        insmod ntfs
        insmod chain
}

Toto je seznam modulů, které bude GRUB potřebovat k provedení věcí (ntfs může být nadbytečné, ale také by nemělo ničemu ublížit). Upozorňujeme, že toto je neúplný záznam — Potřebujeme přidat několik důležitých příkazů.

Nalezení zavaděče druhé fáze systému Windows

Vaše instalace linuxu pravděpodobně automaticky připojila váš oddíl Windows a měli byste jej najít v prohlížeči souborů. Pokud ne, vymyslete způsob, jak toho dosáhnout (pokud si nejste jisti jak, zeptejte se na této stránce). Jakmile to uděláme, potřebujeme znát bod připojení – to by mělo být zřejmé v prohlížeči souborů, např. /media/ASDF23SF23/ . Abychom si ušetřili psaní, vložíme to do proměnné shellu:

win="/whatever/the/path/is"

Na obou stranách rovnítka by neměly být žádné mezery. Ne sem zahrňte jakékoli prvky cesty Windows. To by mělo ukazovat na složku nejvyšší úrovně na oddílu Windows. Nyní:

cd $win
find . -name bootmgfw.efi

To může trvat několik minut, pokud máte velký oddíl, ale s největší pravděpodobností první věc, kterou to vyplivne, je to, co hledáme; v souborovém systému mohou být další odkazy obsahující dlouhé řetězce goobledygook – to není ono. Použijte Ctrl-c zastavit hledání, jakmile uvidíte něco krátkého a jednoduchého jako ./Windows/Boot/EFI/bootmgfw.efi nebo ./EFI/HP/boot/bootmgfw.efi .

Kromě . na začátku si tuto cestu zapamatujte na později; můžete jej zkopírovat do textového editoru na prázdný řádek ve spodní části, protože jej tam budeme používat. Pokud se nyní chcete vrátit do předchozího adresáře, použijte cd - , i když nezáleží na tom, kde se ve skořápce nacházíte odsud dopředu.

Nastavení správných parametrů

GRUB musí být schopen najít a předat zaváděcí proces druhé fázi zavaděče Windows. Cestu na oddílu Windows již máme, ale potřebujeme také nějaké parametry, abychom GRUBu sdělili, kde se tento oddíl nachází. Na vašem systému by měl být nainstalován nástroj s názvem grub-probe nebo (např. na Fedoře) grub2-probe . Zadejte grub a poté stiskněte Tab dvakrát nebo třikrát; měli byste vidět seznam obsahující jeden nebo druhý.

> grub-probe --target=hints_string $win

Měli byste vidět řetězec jako:

--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1

Vraťte se do textového editoru s konfigurací GRUB a přidejte řádek za všechny insmod příkazy (ale před uzavírací složenou závorkou), takže to vypadá takto:

    insmod chain
    search --fs-uuid --set=root [the complete "hint bios" string]
}

Nepřerušujte tento řádek ani to nedovolte svému textovému editoru. Může se zalomit na displeji – rozdíl lze snadno poznat tak, že zapnete číslování řádků. Další:

> grub-probe --target=fs_uuid $win

To by mělo vrátit kratší řetězec písmen, čísel a možných pomlček, například „123A456B789X6X“ nebo „b942fb5c-2573-4222-acc8-bbb883f19043“. Přidejte to na konec search --fs-uuid řádek za řetězcem bios nápovědy oddělený mezerou.

Další, pokud (a pouze pokud) Windows je z hlediska pořadí jednotek na druhém disku , přidejte řádek za search --fs-uuid řádek:

    drivemap -s hd0 hd1

Toto je „trik“ zmíněný dříve. Všimněte si, že není zaručeno, že to bude fungovat, ale neuškodí to zkusit.

Nakonec by poslední řádek měl být:

    chainloader (${root})[the Windows path to the bootloader]
}

Aby bylo jasno, například:

    chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi

A je to. Uložte soubor a zkontrolujte jej v prohlížeči souborů, abyste se ujistili, že byl skutečně uložen a vypadá tak, jak má.

Přidat možnost Nová nabídka do GRUB

To se provádí pomocí nástroje nazvaného grub-mkconfig nebo grub2-mkconfig; bude v seznamu, který jste našli pomocí Tab dříve. Můžete mít také příkaz nazvaný update-grub . Chcete-li to zkontrolovat, zadejte jej do kořenového terminálu. Pokud se zobrazí „příkaz nenalezen“, musíte použít grub-mkconfig přímo. Pokud tomu tak není (včetně získání delší chyby), právě jste nastavili konfiguraci a můžete trochu přejít.

Chcete-li použít grub-mkconfig přímo, musíme nejprve najít grub.cfg :

> find /boot -name grub.cfg

Pravděpodobně to bude /boot/grub/grub.cfg nebo /boot/grub2/grub.cfg .

> grub-mkconfig -o /boot/grub/grub.cfg

update-grub automaticky vyhledá chyby v konfiguraci. grub-mkconfig nebude, ale je důležité tak učinit, protože je mnohem snazší se s nimi vypořádat nyní, než když se pokoušíte zavést počítač. K tomu použijte grub-script-check (nebo grub2-script-check ):

> grub-script-check /boot/grub/grub.cfg

Pokud toto (nebo update-grub ) vytváří chybu označující číslo řádku, to je číslo řádku v grub.cfg, ale musíte opravit odpovídající část v /etc/grub.d/40_custom (soubor ve vašem textovém editoru). Možná budete muset být root, abyste se podívali na předchozí soubor, takže zkuste less /boot/grub/grub.cfg v terminálu stiskněte : a zadejte číslo řádku. Měli byste vidět položku nabídky. Najděte překlep, opravte jej v textovém editoru a spusťte update-grub nebo grub-mkconfig znovu.

Související:Hybrid v paměti a pevném disku?

Až budete hotovi, můžete zavřít textový editor a napsat exit v terminálu opustit režim superuživatele.

Restartujte!

Když se dostanete do nabídky grub, přejděte rychle dolů (před vypršením časového limitu, obvykle 5 sekund) na možnost „Windows“ a otestujte ji. Pokud od grub dostanete chybovou textovou zprávu, je s konfigurací něco špatně. Pokud se zobrazí chybová zpráva ze systému Windows , ten problém je mezi vámi a Microsoftem. Nemějte však obavy, váš disk Windows nebyl upraven a budete moci zavést přímo do něj tak, že jej dáte jako první (z hlediska pořadí spouštění) prostřednictvím nastavení systému BIOS.

Až se znovu vrátíte do linuxu, vraťte vlastnictví /etc/grub.d adresář a jeho obsah do původního stavu:

sudo chmod 755 /etc/grub.d/40_custom

Odkazy

  • Návod na GRUB 2

  • Stránka Arch Linux Wiki GRUB

    Arch má jedny z nejlepších dokumentů a velká část (včetně této stránky) je většinou použitelná pro jakoukoli distribuci GNU/Linux.


Linux
  1. fsck disk ntfs v Linuxu

  2. Dual boot Windows + Linux se šifrováním

  3. Je možné zavést Linux z disku GPT v systému BIOS?

  1. Nainstalujte Linux Mint s Windows 8 | Duální spouštění Windows 8 a Linux Mint 12

  2. Jak duální bootování Windows 10 a MX Linux

  3. Vytvořte spouštěcí jednotku USB Windows 10 (UEFI) z Linuxu

  1. Duální bootování Windows a Linux pomocí UEFI

  2. Duální spouštění Ubuntu Linux a Windows 7

  3. Jak duální boot Kali Linux a Windows 10