[RISOLTO] Boot Debian e Windows da Grub

Discussioni relative a Debian e Linux

Re: Boot Debian e Windows da Grub

Messaggioda Aki » 28/04/2019, 12:30

carloberd ha scritto:Non appare la voce Windows10.

Questo al momento è il primo inconveniente da superare.
Aki
Global Moderator
Global Moderator
 
Messaggi: 8660
Iscritto il: 27/12/2007, 16:59

Re: Boot Debian e Windows da Grub

Messaggioda carloberd » 29/04/2019, 16:22

UPDATE:

Adesso appare la voce Windows10 su GRUB. Infatti utilizzando Grub Customizer ho scoperto che la voce c'era ma era nascosta nella sottocartella "Opzioni avanzate per Debian".
Ora però se all'avvio scelgo appunto Windows10 mi dice: "errore: partizione inesistente. Premere un tasto per continuare..."
Su Grub Customizer andando su proprietà sulla voce Windows10 c'è una casella di testo denominata Boot sequence e vi si trova

Codice: Seleziona tutto
 insmod part_gpt
 insmod chain
           set root='(hd0,gpt2)'
              chainloader /EFI/Microsoft/Boot/bootmgfw.efi

Adesso rimane da capire perchè non boota Windows. Come si può fare?
carloberd
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 16/05/2017, 18:23

Re: Boot Debian e Windows da Grub

Messaggioda Aki » 29/04/2019, 17:05

Per verificare i nomi dei dischi e delle partizioni, prova ad esplorare il disco dall'interno di grub, usando le istruzioni indicate in https://www.gnu.org/software/grub/manual/grub/html_node/Naming-convention.html e, in particolare:
Of course, to actually access the disks or partitions with GRUB, you need to use the device specification in a command, like ‘set root=(fd0)’ or ‘parttool (hd0,msdos3) hidden-’. To help you find out which number specifies a partition you want, the GRUB command-line (see Command-line interface) options have argument completion. This means that, for example, you only need to type

set root=(

followed by a TAB, and GRUB will display the list of drives, partitions, or file names. So it should be quite easy to determine the name of your target partition, even with minimal knowledge of the syntax.

Note that GRUB does not distinguish IDE from SCSI - it simply counts the drive numbers from zero, regardless of their type. Normally, any IDE drive number is less than any SCSI drive number, although that is not true if you change the boot sequence by swapping IDE and SCSI drives in your BIOS.

Now the question is, how to specify a file? Again, consider an example:

(hd0,msdos1)/vmlinuz

This specifies the file named ‘vmlinuz’, found on the first partition of the first hard disk drive. Note that the argument completion works with file names, too.

Come esempio, puoi anche vedere https://www.youtube.com/watch?v=qngmka6amaw
Aki
Global Moderator
Global Moderator
 
Messaggi: 8660
Iscritto il: 27/12/2007, 16:59

Re: Boot Debian e Windows da Grub

Messaggioda carloberd » 29/04/2019, 18:39

Ho fatto come hai detto Aki, allora: dando set root=( e tab risultano 4 hard disk, in particolare hd0 è quello che ci interessa perchè è dove è installato Windows. In hd0 le partizioni rilevate da GRUB sono 2 ovvero, citando:
- msdos1: File system di tipoi ext* (seguito da altre info come ultima modifica, UUID e dimensione)
- msdos5: Nessun file system conosciuto rilevato
A questo punto non ho fatto altro, ho chiuso il terminale e avviato Debian. Ho poi modificato su Grub Customizer il chainloader:
Codice: Seleziona tutto
        insmod part_gpt
        insmod chain
           set root='(hd0,msdos1)'
              chainloader /EFI/Microsoft/Boot/bootmgfw.efi

sostituendo a gpt1 msdos1.
A questo punto riavviando e avviando Windows l'errore cambia. Infatti appare: "errore: file '/EFI/Microsoft/Boot/bootmgfw.efi' non trovato."
Come procedo?
carloberd
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 16/05/2017, 18:23

Re: Boot Debian e Windows da Grub

Messaggioda s3v » 29/04/2019, 19:25

Mi sa che hd0 non corrisponde a sda ma a sdd.
Se dalla riga di comando di grub esegui:
Codice: Seleziona tutto
ls
riesci a vedere tutti gli hd? e a renderti conto di qual è quello che contiene Windows 10.
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5744
Iscritto il: 31/12/2008, 11:54

Re: Boot Debian e Windows da Grub

Messaggioda carloberd » 29/04/2019, 20:05

Hai ragione. Controllando le dimensioni hd0 è di circa 120GB ovvero la mia ssd con Debian.
Eseguendo ls ottengo:
(proc) (hd0) (hd0,msdos5) (hd0,msdos1) (hd1) (hd2) (hd2,msdos1) (hd3)
hd1 e hd2 ho capito sono entrambi hard disk, rispettivamente "Giochi" e "Documenti". Proc invece non so cosa sia purtroppo. Rimane hd3 ma se faccio
Codice: Seleziona tutto
ls (hd3)

Non risulta alcun file system conosciuto. Si potrebbe provare ad inserire nel chainloader hd3 (dato che per esclusione penso sia quella con Windows) ma nel campo della partizione al posto di msdos1 lascio vuoto? O devo mettere per forza qualcosa?

EDIT: Ho provato con hd3 e siamo tornati all'errore precedente, nessun file system trovato.
carloberd
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 16/05/2017, 18:23

Re: Boot Debian e Windows da Grub

Messaggioda s3v » 29/04/2019, 20:40

Se carichi i seguenti moduli prima del comando non cambia nulla?
Codice: Seleziona tutto
insmod fat
insmod part_gpt
insmod ntfs
insmod chain
ls
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5744
Iscritto il: 31/12/2008, 11:54

Re: Boot Debian e Windows da Grub

Messaggioda carloberd » 30/04/2019, 10:29

Intendi sulla chainloader oppure direttamente da GRUB?
carloberd
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 16/05/2017, 18:23

Re: Boot Debian e Windows da Grub

Messaggioda s3v » 30/04/2019, 11:54

Dalla riga di comando di GRUB.
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5744
Iscritto il: 31/12/2008, 11:54

Re: Boot Debian e Windows da Grub

Messaggioda carloberd » 30/04/2019, 12:51

Appena provato. Mi viene un errore con insmod part_gpt:

"errore: file "/boot/grub/i386-pc/part_gpt_.mod" non trovato."

Gli altri invece vanno bene. Dando ls ricompaiono gli stessi hd* di prima con le stesse partizioni. é invece sparito (proc)
carloberd
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 16/05/2017, 18:23

Re: Boot Debian e Windows da Grub

Messaggioda s3v » 30/04/2019, 18:36

Presupponendo che il tuo sia stato un errore di battitura ("part_gpt_" con underscore finale), sul mio sistema quel file esiste:
Codice: Seleziona tutto
$  locate part_gpt.mod
/boot/grub/i386-pc/part_gpt.mod
/usr/lib/grub/i386-pc/part_gpt.mod
Sulla tua macchina quel file non c'è?
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5744
Iscritto il: 31/12/2008, 11:54

Re: Boot Debian e Windows da Grub

Messaggioda carloberd » 30/04/2019, 19:28

Ops, my bad. Avevi ragione, errore di battitura.
Adesso si sono aggiunte le partizioni del hd3 ovvero l'hard disk con windows. Abbiamo:

-hd3,gpt1: Ripristino ovvero sda1
-hd3,gpt2: EFI system partition ovvero sda2
-hd3,gpt3: Microsoft reserved partition ovvero sda3
-hd3,gpt4: Basic data partition ovvero sda4

Quale di queste 4 partizioni devo usare per far si che Windows sia bootabile?
carloberd
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 16/05/2017, 18:23

Re: Boot Debian e Windows da Grub

Messaggioda s3v » 30/04/2019, 19:37

(hd3,gpt2)
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5744
Iscritto il: 31/12/2008, 11:54

Re: Boot Debian e Windows da Grub

Messaggioda carloberd » 30/04/2019, 19:47

Stavo giusto per aggiornare il mio messaggio precedente, ho appena provato con hd3,gpt2 ma adesso mi viene fuori l'errore invalid signature. Questo è quello che ho inserito nella chainload:

insmod part_gpt
insmod chain
set root='(hd3,gpt2)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi

Dove ho sbagliato?
carloberd
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 16/05/2017, 18:23

Re: Boot Debian e Windows da Grub

Messaggioda Aki » 30/04/2019, 20:21

carloberd ha scritto:[..] ho appena provato con hd3,gpt2 ma adesso mi viene fuori l'errore invalid signature.

L'errore è presentato da grub oppure dal boot loader di Windows ? Puoi fornire una immagine ?

//////////////////////////////////////////////

EDIT:
controllando il codice sorgente di grub [0], è previsto l'errore che descrivi e che può presentarsi in caso di chainloading perché grub controlla, se ho ben compreso, per un retaggio del tradizionale processo di boot "legacy" (non UEFI), che la parte di disco che contiene il boot loader di grub contenga anche i due byte identificativi (0xaa55) specificamente valorizzati e collocati (MBR signature) per distinguere un master boot record (MBR) [1] secondo lo schema di partizionamento tradizionale del MSDOS:
Codice: Seleziona tutto
  /* Check the signature.  */
  signature = *((grub_uint16_t *) (bs + GRUB_DISK_SECTOR_SIZE - 2));
  if (signature != grub_le_to_cpu16 (0xaa55)
      && ! (flags & GRUB_CHAINLOADER_FORCE))
    {
      grub_error (GRUB_ERR_BAD_OS, "invalid signature");
      goto fail;
    }

Dal codice, risulta [2] che il controllo sull'MBR può essere evitato se è passata l'opzione --force oppure sono passate altre opzioni. In tal senso, per superare l'errore, dovrebbe essere possibile impartire i seguenti comandi:
Codice: Seleziona tutto
insmod part_gpt
insmod chain
set root='(hd3,gpt2)'
chainloader --force /EFI/Microsoft/Boot/bootmgfw.efi

//////////////////////////////////////////////

EDIT2:
Riflettendo ulteriormente, dovresti star utilizzando al momento non il programma grub, ma grub-efi, è quindi, in tal caso, l'errore potrebbe essere legato al fatto alla attivazione del secure boot. Per tal motivo, a maggior ragione, è utile poter visionare esattamente cosa compare a schermo.

Aki

[0] https://sources.debian.org/src/grub2/2.02+dfsg1-17/grub-core/loader/i386/pc/chainloader.c/?hl=197#L192
[1] https://it.wikipedia.org/wiki/Master_boot_record
[2] https://www.gnu.org/software/grub/manual/grub/html_node/chainloader.html#chainloader
[3] https://sources.debian.org/src/grub2/2.02+dfsg1-17/grub-core/loader/i386/efi/linux.c/?hl=244#L242
Aki
Global Moderator
Global Moderator
 
Messaggi: 8660
Iscritto il: 27/12/2007, 16:59

PrecedenteProssimo

Torna a Generale

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti