Doppio avvio UEFI di Windows 8 e Linux preinstallato su un laptop


10

Sto cercando di configurare Windows 8 e Arch Linux su un nuovo Sony Vaio E14 con Windows 8 preinstallato.

Finora:

  • ho installato W8 sul mio nuovo SSD (cambiato per l'HDD originale) usando Recovery Media
  • ridotta la partizione W8, partizione di ripristino eliminata, scambio disabilitato
  • confermato l'avvio W8 bene

On to Arch:

  • disabilitato Avvio protetto nel BIOS
  • confermato l'avvio W8 bene
  • Avviato Arch dal CD e installa tutto sulla quarta e quinta partizione
  • impostare rEFInd per il bootloader del kernel EFIstub

Dopo ciò è peggiorato. Non ero in grado di avviare nient'altro che Windows 8 (anche se ero contento che almeno continuassero a funzionare bene).

Provato:

  • creando EFI \ refind \ e inserendo lì .efi (come da manuale Arch
  • sovrascrivendo EFI \ boot \ bootx64.efi
  • sovrascrivendo EFI \ Microsoft \ Boot \ bootmgr.efi
  • sovrascrivendo EFI \ Microsoft \ Boot \ bootmgfw.efi --- YAY rEFInd mostrato!

Fin qui tutto bene. Ho mantenuto l'intera directory \ Boot di W8 in EFI \ windows8 e ho impostato un menu di avvio per esso; e si è avviato bene.

Ma, al riavvio, tutto era sbagliato: "Sistema operativo non trovato" invece di qualsiasi bootloader (refind o w8).

È stato riavviato in Arch utilizzando il CD live per scoprire che la partizione EFI aveva una tabella FAT errata. fsck.vfat ha risolto il problema e ho scoperto che EFI \ Microsoft \ Boot era tornato al suo stato originale (tutti i file di refind sono stati eliminati e sostituiti con bootloader W8). Li ho sovrascritti di nuovo e sono tornato a rEFInd mostrandosi correttamente e Arch è perfettamente avviabile.

Dopodiché ho provato a rinominare EFI \ Microsoft \ Boot \ bootmgfw.efi in bootmgfw.001.efi (quindi copiando il file .efi di refind in bootmgfw.efi e mantenendo OGNI ALTRO file com'era), ma con esattamente lo stesso risultato. Ho provato a contrassegnare la partizione EFI GPT come sola lettura, stesso risultato.

Ora sono un po 'sfortunato. Arch si avvia bene, così come W8 ma nel processo distrugge la partizione EFI.

Grazie per qualsiasi idea, Google mi ha portato così lontano e non riesco a trovare di meglio.

PS: Windows 8 FORSE distrugge la partizione allo spegnimento - quando ordino uno spegnimento in W8, ci vuole insolitamente tempo (circa mezzo minuto invece di ~ 5 secondi). Quindi, in teoria, potrei risolverlo ripristinando il laptop invece di un normale spegnimento, ma non è carino.


Temo di non poter aiutare qui, non ho una macchina UEFI per testare cose. Anche se potrebbe non essere il modo più desiderato per farlo, potresti provare ad aggiungere una voce Linux al bootloader di Windows e avviarlo da lì, ma non l'ho provato in un computer UEFI. Vedi qui per la procedura: superuser.com/a/499652/18050 Inoltre, utilizzo sempre Archboot per installare Arch, provalo se stai usando le immagini ufficiali perché l'installazione tiene conto dei sistemi UEFI: bbs.archlinux. org / viewtopic.php? id = 150833
Xandy,

Sembra un conflitto tra Arch Linux e qualcosa che fa Windows 8. Hai provato un'altra distro per dichiarare che non è Arch Linux che ha il problema?
Ramhound,

Grazie per il suggerimento easyBCD, ci proverò sicuramente. Non mi interessa quale boot manager viene utilizzato, quindi se Windows può farlo sarei più che felice. Pubblicherò i risultati domani quando ci sarà di nuovo il tempo libero dal lavoro per rovinare qualcosa :) @Ramhound in questo momento sarebbe un po 'una seccatura e non penso che sia correlato ad Arch - rEFInd è un progetto separato e ho installato tutto a mano (seguendo l'uomo).
prurito355,

Risposte:


5

Potrebbe valere la pena eseguire un arresto a freddo (premere il pulsante di accensione) in Windows per vedere se è possibile avviare in seguito, proprio come un test. Ovviamente non vorrai farlo regolarmente, ma potrebbe essere utile confermare che Windows sta sovrascrivendo i tuoi dati ESP rivisti. Se in realtà sta danneggiando il filesystem allo spegnimento di Windows, questo suona come un bug di Windows che dovrebbe essere segnalato a Microsoft. Se sta semplicemente sostituendo il bootmgfw.efifile, questo è tecnicamente di competenza di Microsoft, quindi non è davvero un bug.

Più in generale, però, hai provato a usare il efibootmgrprogramma linux per registrare rEFInd con EFI con il suo nome (diciamo, EFI/refindsu ESP)? Questo è descritto nella documentazione di rEFInd, nella sezione sull'installazione manuale di Linux. In alternativa, è possibile installare utilizzando lo install.shscript. Entrambi i metodi richiedono un avvio in modalità EFI per avere esito positivo, ma dovresti essere in grado di farlo utilizzando un CD rEFInd o l'avvio da un disco di emergenza in modalità EFI.

Se efibootmgrnon funziona, prova a utilizzarlo bcfgin un programma shell EFI, come descritto in questa pagina wiki Arch.

Se queste procedure non funzionano, provare a utilizzare efibootmgro bcfgper rimuovere la voce bootmgfw.efidalla NVRAM, quindi installare rEFInd as EFI/BOOT/bootx64.efi. In teoria, il computer potrebbe quindi avviare rEFInd, che dovrebbe funzionare normalmente e consentire l'avvio di entrambi i sistemi operativi. Ci sono due possibili trucchi, però: Il firmware potrebbe favorire EFI/Microsoft/boot/bootmgfw.efisopra EFI/BOOT/bootx64.efi; e Windows potrebbe controllare le sue opzioni di avvio e aggiungere il proprio boot loader alla NVRAM all'avvio. Tuttavia, vale la pena provare questo metodo.

Le specifiche EFI richiedono che i computer rispettino le loro impostazioni NVRAM (che sono gestite da efibootmgrLinux, bcfgin una shell EFI o programmi simili), quindi se queste utilità non funzionano, il firmware è rotto e potresti voler considerare di restituire il computer per un altro modello. (Assicurati di dire a Sony perché hai restituito il computer se lo fai, però!) Questo tipo di problema è in realtà abbastanza comune; Ho una scheda Gigabyte con un "EFI ibrido" che continua a dimenticare le sue impostazioni NVRAM, per esempio. Almeno con questa scheda, tuttavia, è possibile aggirare il problema nominando il mio boot manager / caricatore preferito EFI/BOOT/bootx64.efi.

Se non riesci a farlo funzionare e non sei disposto o incapace di sostituire il computer, ho altri due suggerimenti per soluzioni alternative:

  • È possibile tenere a portata di mano un CD di avvio o un'unità flash USB con rEFInd e utilizzarlo quando si desidera avviare Linux. Ciò potrebbe richiedere l'utilizzo di un tasto funzione per indicare al computer di eseguire l'avvio dal supporto rimovibile anziché dal disco rigido ogni volta che si avvia.
  • È possibile cancellare le partizioni dal disco, ripartizionare utilizzando MBR e reinstallare entrambi i sistemi operativi in ​​modalità BIOS anziché in modalità EFI. Ciò rimuoverà qualsiasi debolezza EFI dall'immagine e ti consentirà di utilizzare un GRUB in modalità BIOS come caricatore di avvio. Ciò richiederà probabilmente una copia al dettaglio del programma di installazione di Windows 8; almeno per Windows 7, le copie OEM non erano flessibili sulla modalità di installazione (BIOS vs. EFI). In alternativa, potrebbe essere possibile convertire da un avvio in modalità EFI a un avvio in modalità BIOS senza reinstallare. L'opzione opposta è possibile (stavo per pubblicare un collegamento a un sito in cui è descritto, ma questo sito non mi consente di pubblicare più di due collegamenti; mi dispiace), e mi sembra di ricordare di aver attraversato le descrizioni di fare un EFI- conversione da BIOS a qualche parte, ma non ho un URL a portata di mano. Una ricerca su Google potrebbe far apparire qualcosa.

Mi sono imbattuto in questa pagina dopo aver pubblicato la mia prima risposta e ha un'altra possibile causa per almeno parte del tuo problema: apparentemente Windows 8 utilizza un metodo di spegnimento che è più simile a un'operazione di sospensione su disco. Il risultato è che le partizioni montate possono danneggiarsi se si arresta Windows e si avvia Linux. Sebbene l'ESP non sia normalmente montato su Windows 7, AFAIK, potrebbe essere che Windows 8 faccia le cose diversamente, o forse l'ESP sia montato su Windows 7 e sembra essere nascosto. In ogni caso, è possibile disabilitare questa funzionalità di Windows 8 digitando il comando seguente in una finestra del prompt dei comandi dell'amministratore:

powercfg /h off

In effetti, Windows 8 non rompe nulla durante l'arresto a freddo. Non ho voglia di postare un errore, perché dopo tutto sono io quello che
rovina il

Ho provato a scherzare con efibootmgr; ha mostrato che c'è un numero insolitamente alto di bootmanager (più dei 3 che mi aspetterei), il che mi ha portato a guardare meglio sul mio disco; e ho scoperto che in realtà ho due partizioni EFI: -x Solo la seconda (/ dev / sda2) è stata mostrata come EFI system partitionin GDisk, quindi mi ha fatto pensare che fosse quella corretta. L'altra è solo una partizione FAT (sda1) con le stesse dimensioni e la struttura di file EFI standard.
prurito355

Se cambio l'ordine di avvio per caricare prima rEFInd, poi qualcosa chiamato ,, sony original '' e poi altri, si sovrascrive automaticamente (windows, sony original, altri (refind)) PS; detto tutto ciò considerando che Windows '' è il mio sovrascrittobootmgfw.efi
prurito35

1
Nel frattempo, ho provato powercfg /h offin W8, e QUESTO FISSO W8 RUBA LA PARTE EFI ... questo è il Santo Graal che stavo cercando, a quanto pare :) GRAZIE GRAZIE GRAZIE!
prurito355

Sono felice di sapere che ha powercfg /h offrisolto il tuo problema principale. Potresti essere interessato a sapere che ho trovato informazioni che alcune implementazioni UEFI sembrano codificate per spostare un boot loader chiamato "Windows Boot Manager" nella parte superiore dei loro elenchi. Pertanto, rinominare i caricatori di avvio utilizzando efibootmgrpotrebbe consentire di installare rEFInd (o quello che preferisci) con un nome file più sensato.
Rod Smith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.