UEFI/GPT - Configurazione di grub per Windows e Linux

Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito UEFI/GPT - Configurazione di grub per Windows e Linux

    E' passato un pochino di tempo da questo thread e ho un pò di pratica l'ho presa (anche grazie al fatto che ad ogni aggiornamento bios/installazione di Windows le registrazioni in UEFI sono da rifare). Nel thread originale c'è un pò di casino, essendosi sviluppato a forza di "try and fail"... Quindi credo sia il caso di fare un pò d'ordine e ho riassunto in questa discussione i punti salienti, anche per riuscire a ritrovarla quando necessario.

    I punti chiave sono 3:

    1. Preparazione di un media di installazione che supporti UEFI/GPT: Alla data di oggi, i dischi di Windows8/Windows8.1 supportano nativamente UEFI senza necessità di modifica e anche gli ultimi dischi di Windows7 che mi sono capitati per le mani partivano senza problemi in UEFI/GPT quindi questa parte è obsoleta. Ad ogni modo, il metodo più comodo per creare un media di installazione di Windows compatibile con UEFI è prendere una chiavetta USB >/= 4Gb, formattarla in FAT32 e copiarci dentro (semplice copia/incolla) il contenuto del DVD o della iso di Windows. Un bios UEFI dovrebbe riconoscerlo senza problemi come supporto avviabile.
    2. Inserimento/modifica nel firmware UEFI della mobo delle registrazioni per avviare un sistema Linux o riparazione/modifica delle registrazioni relative ad un sistema Windows.
    3. Configurazione di Grub2 per avviare un sistema (anche Windows) in modalità UEFI/GPT.
    4. Configurazione di Grub "version 0.97" per avviare un sistema Windows in modalità UEFI/GPT.


    Dato che il punto 1. è sorpassato (e l'uso del supporto USB senza la necessità di adottare particolari accorgimenti apre la strada ad interessanti personalizzazioni del media di installazione) su questo punto non vale la pena perdere tempo. A voler fare i pignoli i punti sarebbero quattro, se si vuole anche generare un'applicazione EFI personalizzata, ma intanto vediamo il resto...
    Ultima modifica di frakka : 19-01-2014 a 17:21

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  2. #2
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito 2. Inserimento nel firmware UEFI delle registrazioni per avviare il sistema operativo.

    Riassumendo, queste registrazioni servono solo a dire al firmware della mobo dove deve andare a cercare il file ".efi" da utilizzare per avviare un sistema operativo, che sia Windows o Linux. La funzionalità "SecureBoot" è disabilitata per ovvi motivi...

    Situazione: Ho un sistema con mobo ASUS dotato di 3 hdd: il primo con Arch Linux, il secondo con Windows 7 Ultimate ed il terzo con Windows 8.1 Pro tutti installati su dischi partizionati GPT. La procedura prevede di avviare il pc con un disco di avvio di Linux che supporti UEFI/GPT. Può essere il rescue disk della distro oppure una distro completamente diversa, non è un grosso problema...
    La prima cosa da fare, è farsi un'idea chiara dello stato del partizonamento:

    [root@arch-uefi Desktop]# blkid
    /dev/sda1: SEC_TYPE="msdos" LABEL="EFI_SYSTEM" UUID="B8C7-EC41" TYPE="vfat" PARTLABEL="EFI System" PARTUUID="37255442-ea28-4d92-8259-2497a1357753"
    /dev/sda2: LABEL="BOOT" UUID="9562ccab-8434-4151-a2d2-ffad6aabc8b0" TYPE="ext2" PARTLABEL="BOOT" PARTUUID="2765e1b8-2839-403b-a8f5-046ce3d409d1"
    /dev/sda3: LABEL="ROOT" UUID="a10a852b-9464-4789-a883-43dc22ded951" UUID_SUB="50ceca36-0ecb-482a-b009-f90ecf3006a2" TYPE="btrfs" PARTLABEL="ROOT" PARTUUID="89c2512a-7229-4f6a-a7c9-d913643fe1e4"
    /dev/sda4: LABEL="SWAP" UUID="c61331f8-9b92-48c7-a83f-edd30dac13bd" TYPE="swap" PARTLABEL="SWAP" PARTUUID="7b283e08-093a-42e2-a429-48207d4737b1"
    /dev/sda5: LABEL="HOME" UUID="a0b9ca5c-320d-4a10-a0b6-9862b3f69494" TYPE="ext4" PARTLABEL="HOME" PARTUUID="b8f95b4f-208a-4641-8e90-8c6aa011de53"

    /dev/sdb1: UUID="64C2-B4CA" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="702e18df-498d-4546-a5b9-22250e8f644b"
    /dev/sdb2: PARTLABEL="Microsoft reserved partition" PARTUUID="4e378403-4bd4-4800-8c6a-386e4caada6d"
    /dev/sdb3: LABEL="WIN7-UEFI" UUID="0E3AC5293AC50F21" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="281c8cd3-c3c0-443a-9117-f869d2c922af"
    /dev/sdb4: LABEL="DATI-WIN7" UUID="A4DE0B8ADE0B5448" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="5774d5e4-8192-453c-882e-eaefac73ba2c"

    /dev/sdc1: LABEL="Ripristino" UUID="4A06ED7806ED6583" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="9c70a2cf-6b68-4ab6-a549-7e70208429df"
    /dev/sdc2: UUID="36EF-1AED" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="9767862a-78e0-4061-814b-bc76217a9b72"
    /dev/sdc3: PARTLABEL="Microsoft reserved partition" PARTUUID="41c27cbb-db08-452f-ab49-c67476350eda"
    /dev/sdc4: LABEL="WIN8-UEFI" UUID="0A8CF17E8CF1649B" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="943044c8-d83f-4fcb-a430-1d965a66e93a"
    /dev/sdc5: LABEL="DATI-WIN8" UUID="E0AA202DAA1FFEA2" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="f51f8cb8-77d3-48b3-88b1-e619f6c6d7fe"
    Il comando blkid mostra un elenco di tutti i dispositivi a blocchi rilevati nel sistema. In questo elenco potrebbero rientrare anche eventuali dischi esterni e/o supporti USB quindi è necessario identificarli con attenzione per evitare grossi mal di testa... Ho raggruppato per colore le partizioni presenti sui vari dischi in modo da distinguerli meglio.
    Di tutta questa pappardella, ci interessa solo individuare le partizioni EFI di sistema: Sono indicate come "EFI system partition" nei sistemi Windows e/o come "EFI_SYSTEM" su Arch. Inoltre sono sempre formattate in "fat" o "vfat" altrimenti il firmware UEFI non è in grado di utilizzarle. Filtriamo un pochino l'elenco:

    [root@arch-uefi Desktop]# blkid | grep EFI | grep vfat
    /dev/sda1: SEC_TYPE="msdos" LABEL="EFI_SYSTEM" UUID="B8C7-EC41" TYPE="vfat" PARTLABEL="EFI System" PARTUUID="37255442-ea28-4d92-8259-2497a1357753"
    /dev/sdb1: UUID="64C2-B4CA" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="702e18df-498d-4546-a5b9-22250e8f644b"
    /dev/sdc2: UUID="36EF-1AED" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="9767862a-78e0-4061-814b-bc76217a9b72"
    Queste sono quindi le tre partizioni EFI di sistema presenti nel mio computer. UEFI utilizza gli UUID della partizioni per identificarle quindi, una volta create le voci, è possibile spostare i dischi a piacere, o aggiungerne o toglierli senza che questo vada ad incidere sulla funzionalità di boot. Va da sè, che ogni volta che la partizione EFI di sistema viene formattata o ricreata il valore dello UUID cambia e deve essere aggiornato sia nella entry del firmware che in grub.

    Il comando per aggiungere una voce di avvio nel firmware di una scheda madre UEFI (occhio che per i Mac Intel è diverso e si rischia di danneggiare la mobo!!!! Per quelli c'è da fare un discorso a parte.) è "efibootmgr":
    [root@arch-uefi Desktop]# efibootmgr --help
    efibootmgr version 0.6.0
    usage: efibootmgr [options]
    -a | --active sets bootnum active
    -A | --inactive sets bootnum inactive
    -b | --bootnum XXXX modify BootXXXX (hex)
    -B | --delete-bootnum delete bootnum (hex)
    -c | --create create new variable bootnum and add to bootorder
    -d | --disk disk (defaults to /dev/sda) containing loader
    -e | --edd [1|3|-1] force EDD 1.0 or 3.0 creation variables, or guess
    -E | --device num EDD 1.0 device number (defaults to 0x80)
    -g | --gpt force disk with invalid PMBR to be treated as GPT
    -H | --acpi_hid XXXX set the ACPI HID (used with -i)
    -i | --iface name create a netboot entry for the named interface
    -l | --loader name (defaults to \EFI\redhat\grub.efi)
    -L | --label label Boot manager display label (defaults to "Linux")
    -n | --bootnext XXXX set BootNext to XXXX (hex)
    -N | --delete-bootnext delete BootNext
    -o | --bootorder XXXX,YYYY,ZZZZ,... explicitly set BootOrder (hex)
    -O | --delete-bootorder delete BootOrder
    -p | --part part (defaults to 1) containing loader
    -q | --quiet be quiet
    -t | --timeout seconds set boot manager timeout waiting for user input.
    -T | --delete-timeout delete Timeout.
    -u | --unicode | --UCS-2 pass extra args as UCS-2 (default is ASCII)
    -U | --acpi_uid XXXX set the ACPI UID (used with -i)
    -v | --verbose print additional information
    -V | --version return version and exit
    -w | --write-signature write unique sig to MBR if needed
    -@ | --append-binary-args file append extra args from file (use "-" for stdin)
    | --help show help/usage
    Il comando permette di creare nuove voci nel menù di avvio di uefi, cambiare l'ordine di boot, attivare o disattivare quelle presenti così come di eliminare quello che vi si trova scritto. La sintassi da utilizzare è relativamente semplice, una volta capita: Bisogna indicare al comando cosa si vuole fare ("-c" per creare una nuova voce nel menù di boot), dove trovare l'applicazione efi da avviare ("-d" per specificare il disco da utilizzare, se diverso dal valore predefinito "/dev/sda" e "-p" per specificare quale delle partizioni sul disco è la partizione fat che contiene il file da avviare), il nome ed il percorso del file ("-l" Elle come "Livorno" in minuscolo, seguito dal percorso del file relativo alla partizione indicata. Le "" non sono indispensabili ma sono gratis e sono utili nel caso il path contenga degli spazi) ed infine l'eventuale label che si vuole visualizzare nel menù di boot della mobo ("-L" seguito dal nome che si vuole assegnare alla riga. Se si usano le "" il nome può anche contenere spazi e punteggiature).

    Esempio:
    Per scrivere la entry di boot per la mia Arch, installata nel disco rilevato come "sda", con partizione EFI di sistema sda1 e applicazione EFI nel percorso " EFI -> arch_grub -> grubx64.efi" devo utilizzare questa sintassi:
    codice:
    efibootmgr -c -d /dev/sda -l "\EFI\arch_grub\grubx64.efi" -L "Arch Linux"
    C'è da notare l'uso del "\" per indicare la gerarchia del filesystem: UEFI usa "\" come i sistemi Windows invece che "/" come i sistemi Unix-like. Il path deve essere indicato utilizzando "\". Se la partizione è sda1 è possibile omettere l'indicazione della partizione.
    Il percorso dell'applicazione EFI cambia in base alla distro (ad esempio è "/efi/redhat/grub.efi" sulle derivate di RH) e può essere modificato per generare applicazioni personalizzate. Per individuare il file efi è pertanto utile montare la partizione (normalmente non lo è) in un percorso comodo e cercare il file ".efi" d'interesse. La label può essere scelta a piacere.

    Il ragionamento si applica identico anche ai sistemi operativi Windows installati in modalità GPT: Qui la questione è semplificata dal fatto che l'applicazione EFI di default viene sempre salvata nel medesimo percorso ("\EFI\Microsoft\Boot\bootmgfw.efi") quindi per un sistema Windows si tratta solo di individuare il giusto disco e la partizione in cui è conservato il file EFI:
    codice:
    efibootmgr -c -d /dev/sdb -l "\EFI\Microsoft\Boot\bootmgfw.efi" -L "Windows 7 Ultimate"
    Windows 8, diversamente da Windows 7, crea come prima cosa in fase di installazione una partizione denominata "Ripristino" che prende la posizione "1" sul disco. Come si può vedere sopra, infatti, nella mia configurazione la partizione EFI di sistema sul disco sdc contenente Windows 8.1 è la "2":

    /dev/sdc2: UUID="36EF-1AED" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="9767862a-78e0-4061-814b-bc76217a9b72"
    Per ovviare al problema è sufficiente specificare che la partizione in cui la mobo dovrà cercare l'applicazione EFI è la seconda del disco aggiungendo il parametro "-p":
    codice:
    efibootmgr -c -d /dev/sdc -p 2 -l "\EFI\Microsoft\Boot\bootmgfw.efi" -L "Windows 8.1 Pro"
    Il nome del file EFI ed il path relativo è lo stesso di Windows7 ma cambia la partizione indicata quindi sono due entry diverse.

    Nel caso in cui si abbia un sistema basato su UEFI con più sistemi operativi nello stesso hdd la partizione di sistema EFI potrebbe al limite essere comune: Nel caso è consigliabile, come al solito, installare prima il sistema Windows e poi il sistema Linux (per evitare che Windows seghi via tutto quello che non riconosce).
    Nella configurazione delle entry nel firmware della mobo sarà poi possibile indicare la stessa partizione di sistema EFI ma usando i due path diversi.

    Analogamente per far convivere due sistemi Windows sullo stesso disco GPT dovrebbe essere sufficiente eseguire la prima installazione, rinominare il file "\EFI\Microsoft\Boot\bootmgfw.efi" con un nome diverso (ad esempio "\EFI\Microsoft\Boot\bootmgfw_Win7.efi") e poi eseguire l'altra installazione in modo che il file rinominato non venga sovrascritto dalla versione precedente.
    Non ho mai testato personalmente quest'ultima procedura (preferisco tenere sistemi diversi su dischi diversi) ma dovrebbe funzionare. E' anche possibile che Windows riconosca la presenza di una versione precedente e configuri il menù di boot per avviarle entrambe... Ma se non dovesse farlo questa può essere una strada.


    Ed ecco il riepilogo del risultato ottenuto:
    [root@arch-uefi Desktop]# efibootmgr -v
    BootCurrent: 0000
    Timeout: 0 seconds
    BootOrder: 0000,0001,0002
    Boot0000* Arch Linux HD(1,800,32000,37255442-ea28-4d92-8259-2497a1357753)File(\EFI\arch_grub\grubx64.efi)
    Boot0001* Windows 7 Ultimate HD(1,800,32000,702e18df-498d-4546-a5b9-22250e8f644b)File(\EFI\Microsoft\Boot\bootmgfw.efi)
    Boot0002* Windows 8.1 Pro HD(2,96800,32000,9767862a-78e0-4061-814b-bc76217a9b72)File(\EFI\Microsoft\Boot\bootmgfw.efi)
    In caso di errore, per eliminare una entry è sufficiente eseguire il comando seguente in cui "-B" indica l'operazione di eliminazione della riga mentre "-b" indica la riga da eliminare:
    codice:
    [root@arch-uefi Desktop]# efibootmgr -B -b 0001
    Se invece si vuole cambiare l'ordine di avvio delle periferiche, è sufficiente usare il paramentro "-o" seguito dall'ordine delle periferiche da avviare separate da virgola ",". Non è necessario indicare tutti le entry presenti, se ad esempio di vuole escludere una periferica dal boot è sufficiente non inserirla nel comando:

    codice:
    [root@arch-uefi Desktop]# efibootmgr -o 0000,0001,0002
    oppure questo, per configurare nell'ordine di avvio solo la riga che nella mia configurazione è relativa a Windows 7
    codice:
    [root@arch-uefi Desktop]# efibootmgr -o 0001
    E questo è il risultato:
    Ultima modifica di frakka : 18-11-2013 a 02:42

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  3. #3
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito 3. Configurazione di Grub2 per avviare un sistema in modalità UEFI/GPT.

    Riprendendo quando indicato nell'altro thread, che è corretto, devo recuperare le informazioni relative alle partizioni di avvio dei vari sistemi operativi.

    Questo comando serve a recuperare le infomazioni relative agli UUID delle partizoni EFI di sistemi Windows:
    codice:
    [root@arch-uefi Desktop]# blkid | grep "EFI system partition"
    /dev/sdb1: UUID="64C2-B4CA" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="702e18df-498d-4546-a5b9-22250e8f644b" 
    /dev/sdc2: UUID="36EF-1AED" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="9767862a-78e0-4061-814b-bc76217a9b72"
    E questi per ottenere le relative "hints_string" per configurare grub:

    codice:
    [root@arch-uefi Desktop]# grub-probe -d --target=hints_string /dev/sdb1
    --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1 
    [root@arch-uefi Desktop]# grub-probe -d --target=hints_string /dev/sdc2
    --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2
    I risultati inseriti dai due comandi precedenti vanno inseriti nello script che grub2 utilizza per generare il suo file di configurazione:

    codice:
    [root@arch-uefi Desktop]# nano /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.
    
    menuentry "Microsoft Windows7 Ultimate" {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --hint-bios=hd1,gpt1 --hint-efi=hd1,gpt1 --hint-baremetal=ahci1,gpt1 64C2-B4CA
        chainloader /efi/Microsoft/Boot/bootmgfw.efi
    }
    
    menuentry "Microsoft Windows8.1 Pro" {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2 36EF-1AED
        chainloader /efi/Microsoft/Boot/bootmgfw.efi
    }
    
    menuentry "Riavvia il computer." {
       reboot
    }
    
    menuentry "Spegni il computer." {
       halt
    }
    
    menuentry "Esci ed avvia dispositivo successivo nella sequenza di boot." {
        exit
    }
    Infine, aggiornare la configurazione di grub con il comando:

    codice HTML:
     grub-mkconfig -o </destinazione/del/file/grub.cfg>
    che nel mio caso è in "/boot/grub/grub.cfg"
    Ultima modifica di frakka : 19-01-2014 a 14:02

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  4. #4
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito Eccezioni.

    Proprio in questo momento mi è capitata in mano una installazione di "Windows 8 Pro" aggiornata a "Windows 8.1 Pro" tramite store.
    Per qualche strano motivo la "EFI system partition" non ha label o meglio: La label c'è ed è visibile tramite vari tool di partizionamento ma non viene rilevata dal comando blkid su CentoOS 6.5:

    codice:
    [root@vmhost Matteo]# blkid
    /dev/sda1: LABEL="Ripristino" UUID="EAF65FD2F65F9D9F" TYPE="ntfs" 
    /dev/mapper/LVM_1-LVM_partizione1: UUID="a681a062-5b6a-4a85-9171-7f972a1f282f" TYPE="ext4" 
    /dev/sda2: UUID="4260-9B66" TYPE="vfat" 
    /dev/sda4: LABEL="Win8 Sapphire" UUID="4270623B70623637" TYPE="ntfs" 
    /dev/sda5: LABEL="Dati_Sapphire" UUID="A698F7A898F77561" TYPE="ntfs" 
    /dev/sdb1: SEC_TYPE="msdos" UUID="4AA2-B0D6" TYPE="vfat" 
    /dev/sdb2: UUID="f034bfc3-08e0-4068-b28a-e9d48f49b93f" TYPE="ext4" 
    /dev/sdb3: UUID="500abf7d-94ad-4922-a602-ea704941252f" TYPE="ext4" 
    /dev/sdb4: UUID="acef25fb-333e-4e48-abfa-943d0c85d8f0" TYPE="swap" 
    /dev/sdb5: UUID="mdrvBz-Jess-W76B-eTli-0WtO-rSvK-1qDHxD" TYPE="LVM2_member" 
    /dev/sdb6: UUID="seXbc6-URzR-PFrC-gFFb-0bNf-w9ww-c01fky" TYPE="LVM2_member" 
    /dev/sdb7: UUID="If8Riu-fn0q-SmyZ-hhoz-wY23-pSo7-faR0Vm" TYPE="LVM2_member"
    Quindi il comando indicato in precedenza non può dare alcun output utile:

    codice:
    [root@vmhost Matteo]# blkid | grep "EFI system partition"
    [root@vmhost Matteo]#
    Ad ogni modo individuato in "/dev/sda" il disco contenete l'installazione di Windows, la partizione che ci interessa è sicuramente sda2 in quanto è l'unica partizionata in fat/vfat e quindi l'unica che può contenere una applicazione EFI utilizzabile per l'avvio di un sistema operativo.
    Individuata la partizione d'interesse ed il relativo UUID, il resto procede allo stesso modo.

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  5. #5
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito

    Mi stà capitando una cosa strana, che ho qualche difficoltà a capire.

    A quanto ne sò Grub (la v.1) non supporta UEFI/GPT. CentOS prevede però ancora solo questa versione ed effettivamente comunque ad installare ed avviare CentOS 6.x su un sistema UEFI/GPT senza particolari problemi. All'interno della "boot" c'è la solita directory "efi" ed il comando "efibootmgr" vede e gestisce correttamente le registrazioni nel firmware della mobo come in tutte le altre distro che ho provato. Evidentemente il supporto c'è, forse è stato aggiunto nelle ultime revision.


    Ma come accidenti si fà a fare il chainloading di un sistema Windows installato in UEFI/GPT???
    Le ho provate davvero tutte ma per ora l'unico modo che ho trovato per avviare Windows 8 da Grub è impostare il bootmanager di Windows come "secondario" nel firmware e passare il comando "exit" a grub nella menùentry relativa a Windows8...

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  6. #6
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito 4. Configurazione di Grub 0.97 per avviare un sistema Windows in modalità UEFI/GPT.

    Chi la dura la vince, e a forza di accidenti ne sono venuto a capo...

    Sfruttando una imbeccata trovata nella documentazione di Ubuntu, ho impostato la voce di menù da utilizzare su CentOS con Grub 0.97:

    codice:
    title Windows 8.1 Pro UEFI/GPT
            rootnoverify (hd2,1)
            makeactive
            chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    e così funziona!!
    In realtà a una strada di questo tipo ci avevo già pensato ma non ero riuscito ad implementarla: Nel mio caso il problema era la prima riga, quella in cui si specifica quale partizione deve essere considerata come "root".

    La configurazione attuale della macchina prevede due hdd fisici che dovrebbero essere quindi identificati da grub come "hd0" e "hd1":

    codice:
    [root@vmhost boot]# blkid
    /dev/sda1: LABEL="CENTOS_6" UUID="4AA2-B0D6" TYPE="vfat" SEC_TYPE="msdos" 
    /dev/mapper/LVM_1-LVM_partizione1: UUID="a681a062-5b6a-4a85-9171-7f972a1f282f" TYPE="ext4" 
    /dev/sda2: UUID="f034bfc3-08e0-4068-b28a-e9d48f49b93f" TYPE="ext4" 
    /dev/sda3: UUID="500abf7d-94ad-4922-a602-ea704941252f" TYPE="ext4" 
    /dev/sda4: UUID="acef25fb-333e-4e48-abfa-943d0c85d8f0" TYPE="swap" 
    /dev/sda5: UUID="mdrvBz-Jess-W76B-eTli-0WtO-rSvK-1qDHxD" TYPE="LVM2_member" 
    /dev/sda6: UUID="seXbc6-URzR-PFrC-gFFb-0bNf-w9ww-c01fky" TYPE="LVM2_member" 
    /dev/sda7: UUID="If8Riu-fn0q-SmyZ-hhoz-wY23-pSo7-faR0Vm" TYPE="LVM2_member" 
    /dev/sdb1: LABEL="Ripristino" UUID="EAF65FD2F65F9D9F" TYPE="ntfs" 
    /dev/sdb2: LABEL="EFI SYSTEM" UUID="4260-9B66" TYPE="vfat" 
    /dev/sdb4: LABEL="Win8 Sapphire" UUID="4270623B70623637" TYPE="ntfs" 
    /dev/sdb5: LABEL="Dati_Sapphire" UUID="A698F7A898F77561" TYPE="ntfs"
    Per qualche motivo che non ho ancora identificato (forse un bug nel firmware della mobo) in realtà i dischi vengono enumerati come "hd1" e "hd2" e questo mi ha fatto sempre fallire i tentativi di avvio. Infatti usando l'istruzione "rootnoverify (hd1,1)" come sarebbe stato corretto, in realtà grub cercava il file efi nella partizione "/dev/sda2".
    Ci sono arrivato per caso, quando un "Tab" nella command line di Grub ha mostrato tra le possibili scelte "hd0 hd1 hd2" invece che solo "hd0 hd1"...

    Quindi, riferendosi anche a quanto scritto in precedenza, una volta identificato il disco su cui si trova l'installazione di Windows è sufficiente indicare la corretta partizione EFI come root, usando (hdX,0) se si tratta di una installazione di Windows7 o (hdX,1) se si tratta di Windows8 (sempre per la presenza in Windows8 della partizione denominata "Ripristino" nella prima posizione).


    La configurazione sembra funzionare correttamente anche senza l'istruzione "makeactive" ma potrebbero esserci dei problemi con la nomeclatura delle partizioni, nel caso in cui sul pc sia installato anche un disco contenente altre installazione di Windows.

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  7. #7
    pebibyte
    Registrato
    Jun 2005
    Messaggi
    4,371

    Predefinito

    Ha! Hai sgobbato parecchio...ovviamente te la frego tutta sta roba :P

  8. #8
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito

    Tutto a disposizione!!
    Effettivamente ci ho investito parecchio tempo ma finalmente dovrei aver chiuso il cerchio.

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  9. #9
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito

    Uhm... Ora che ci penso il cerchio non è ancora chiuso: Manca la creazione di una voce per avviare Linux nel bootloader di Windows...

    Ora ho un pò da fare ma ci si può provare.

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  10. #10
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    44
    Messaggi
    23,415
    configurazione

    Predefinito

    Verificato: Lo stesso processo funziona anche con Windows 10.

    Il test è stato effettuato su un sistema Windows 8.1 aggiornato a Windows 10 Pro tramite la ISO. L'unica modifica dovrebbe riguardare il path del chainloader (che è ora è in maiuscolo) ma il "case" non dovrebbe costituire un problema per la fat quindi non dovrebbe funzionare anche in minuscolo.
    Verificare sempre quale è la partizione di sistema EFI, in questo caso mi risulta la terza (gpt3).
    codice:
    [root@arch-uefi Desktop]# nano /etc/grub.d/40_custom 
    [...]
        menuentry "Microsoft Windows 10 Pro 64bit" {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --no-floppy --set=root --hint-bios=hd1,gpt3 --hint-efi=hd1,gpt3 --hint-baremetal=ahci1,gpt3 F80E-D9E0
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    }

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 2 utenti che stanno visualizzando questa discussione. (0 utenti e 2 ospiti)

Tags

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2022