Oct 182011
 

Ho finalmente terminato il mio aggiornamento a Xubuntu 11.10, con i soliti piccoli problemi, nulla di troppo preoccupante.
Ma ora, quando faccio boot non vedo più la voce “Windows” nel menu di avvio, creato con grub2, ho anche installato os-prober che dovrebbe aiutare a trovare voci aggiuntive per il menù di grub2 scansionando i dischi rigidi, ma anche questo non ha risolto il problema.

In alternativa si potrebbe avere la vostra voce Windows, ma quando si seleziona si ottiene un errore del tipo:

  • you need to load kernel first
  • chainloader: no such command.
  • no such partition

Quindi questa è una piccola guida per ripristinare la voce di Windows nel vostro sistema con Grub2.

Grub2 howto super breve

Questa parte viene dal tutorial completo su grub2 del sito Dedoimedo , mentre ero alla ricerca di un aiuto ho letto la sua guida completa su grub2 e vi consiglio di prendervi il tempo di leggerlo per averne una panoramica completa.

GRUB 2 ha 3 parti principali:

  1. /etc/default/grub – Il file contenente le opzioni del menu di GRUB 2.
  2. /etc/grub.d/ – la directory contenente gli script per creare il menu di GRUB 2.
  3. /boot/grub/grub.cfg – il file di configurazione di GRUB 2, non editabile.

Il comando update-grub legge la directory /etc/grub.d e cerca gli script eseguibili contenuti all’interno di essa. Gli script sono letti, nel loro ordine numerico, e scritti nel file grub.cfg, insieme alle configurazioni del menu lette dal file /etc/default/grub.

Le voci con cui fare boot provengono da diverse fonti – le voci di default vengono dalla distribuzione, altri sistemi operativi, presenti sui dischi e scoperti con osprober, e script personalizzati dall’utente, tutti seguono una rigida sintassi. Gli script sono scritti in shell (sh)

Passo 1, conoscere il vostro hard disk

La prima cosa che dovete sapere è la mappatura esatta del vostro hard-disk, per questo useremo il comando fdisk , vecchio ma sempre buono, con l’opzione -l, questo è il disco fisso della mia macchina Xubuntu

linuxaria@xubuntu-home:~$ sudo fdisk -l
[sudo] password for linuxaria: 
 
Disk /dev/sda: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders, total 78140160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcccdcccd
 
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63    36817199    18408568+   7  HPFS/NTFS/exFAT
/dev/sda2        36817200    42698879     2940840    c  W95 FAT32 (LBA)
/dev/sda3        42700798    78139391    17719297    5  Extended
/dev/sda5        42700800    43698175      498688   82  Linux swap / Solaris
/dev/sda6        43700224    59322367     7811072   83  Linux
/dev/sda7        59324416    78139391     9407488   83  Linux

Quindi, per farla breve :

/dev/sda1 = Windows
/dev/sda2 = partizione extra formattata con fat32
/dev/sda5 = Linux swap
/dev/sda6 = Xubuntu partizione /
/dev/sda7 = Xubuntu partizione /home

La mia partizione windows è /dev/sda1 che in Grub2 è mappata come (hd0.1), notare che questo è diverso da grub (non 2) in cui la prima partizione del primo disco era (hd0, 0).

Passo 2 creare uno script personalizzato per Grub 2

Create il file /etc/grub.d/15_Windows, e metteteci le seguenti linee di codice:

 #! /bin/sh -e
echo "Adding Windows" >&2
cat < < EOF
menuentry "Windows" {
set root=(hd0,1)
chainloader +1
}
EOF

E ora fate questo script eseguibile con il comando:

chmod +x /etc/grub.d/15_Windows

Passo 3 aggiornare la configurazione di grub 2

Ora, dobbiamo dire a grub 2 a ricreare il suo file di configurazione, per farlo eseguire, come root, il comando update-grub2

root@xubuntu-home:/etc/grub.d# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.0.0-12-generic
Found initrd image: /boot/initrd.img-3.0.0-12-generic
Adding Windows
Found memtest86+ image: /boot/memtest86+.bin
done

Adesso il vostro script personalizzato è incluso nel file /boot/grub/grub.cfg

Dovete solo riavviare il sistema e godervi (?) la vostra partizione Windows.

Popular Posts:

flattr this!

  12 Responses to “Voce Windows scomparsa nel menu di Grub2”

  1. nice; I’ve been adding it manually every update …

  2. why not just run update-grub?

    • Done it, it doesn’t see my windows partition, otherwise it would be much easier

      root@xubuntu-home:/etc/grub.d# ls
      00_header 05_debian_theme 10_linux 15_windows 20_linux_xen 20_memtest86+ 30_os-prober 40_custom 41_custom README
      r
      oot@xubuntu-home:/etc/grub.d# mv 15_windows /tmp/

      root@xubuntu-home:/etc/grub.d# update-grub
      Generating grub.cfg ...
      Found linux image: /boot/vmlinuz-3.0.0-12-generic
      Found initrd image: /boot/initrd.img-3.0.0-12-generic
      Found memtest86+ image: /boot/memtest86+.bin
      done

      No windows entry with a simple update-grub.
      There is something wrong in my Xubuntu 11.10 ?
      It’s a fresh install with all the defaults.. so it took less time to add the windows entry manually than finding than problem.

  3. Quicker way:
    Boot the Live disc

    Mount the Ubuntu partition: sudo mount /dev/sdaX /mnt

    Run grub-install: sudo grub-install –root -directory=/mnt/ /dev/sda

    Reboot, then run sudo update-grub

    This gives you a newly installed grub2, which recognizes Windows

    • Thanks for the feedback Emery,
      i tried that but it didn’t work, check my answer to the other comment.

      Best Regards

  4. I have always this f*#§ing error…
    Generating grub.cfg …
    Found linux image: /boot/vmlinuz-3.0.0-12-generic
    Found initrd image: /boot/initrd.img-3.0.0-12-generic
    Found memtest86+ image: /boot/memtest86+.bin
    errore: syntax error.
    errore: Incorrect command.
    errore: syntax error.
    error: line no: 98
    Syntax errors are detected in generated GRUB config file.
    Ensure that there are no errors in /etc/default/grub
    and /etc/grub.d/* files or please file a bug report with
    /boot/grub/grub.cfg.new file attached.

    What is, by the way?

    • Hello,

      Have you add something on grub.cfg on the directoy /etc/grub.d/ ?
      It seem to be a syntax error somewhere.

  5. what is the script if my windows partition is in /dev/sda3 ??

  6. Works for me, just be carefull with the spaces when you cut & paste the 15_Windows script from this page.
    The shebang (# on the first line) should start the line without a space and the redirection >> should be two right angled brackets with no space in between.

  7. Thanks for your script, it saved my day !

    Quick remark for Fedora users : the “< <" characters give an error due to the space in between. "<<" is ok.
    Also, don't use update-grub but grub2-install /dev/sda && grub2-mkconfig -o /boot/grub2/grub.cfg

    @ Bill John : /dev/sda3 would be (hd0,3) in grub2.

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>