Grub2 com BURG: entradas duplicadas do Windows, como removo uma?

5

Eu tenho um sistema de inicialização dupla com o Ubuntu 12.04 e o Windows 7, usando o GRUB2 (com o Burg) como gerenciador de inicialização.

Por algum motivo, a instalação do Windows aparece duas vezes no menu de inicialização:

Ubuntu GNU/Linux, with Linux 3.2.0-24-generic
Ubuntu GNU/Linux, with Linux 3.2.0-24-generic (recovery mode)
Windows 7 (loader) (on /dev/sda1)
Windows 7 (loader) (on /dev/sda2)

Se eu olhar na minha tabela de partições, /dev/sda2 é C: \ da instalação do Windows e /dev/sda1 é a partição "Reservado pelo Sistema" (que, IIRC, é o próprio gerenciador de inicialização do Windows). Além disso, o gparted mostra /dev/sda2 - mas não outras partições - com um sinal boot :

O que está acontecendo aqui? Eu gostaria de ter apenas as entradas para o Ubuntu e uma entrada para o Windows no meu menu de inicialização - como faço para remover um deles?

    
por Tomas Lycken 03.06.2012 / 07:06

4 respostas

3

Você está certo de que o Windows 7 coloca sua partição "boot" em /dev/sda1 por padrão, mas é possível fazer com que o Win 7 coloque tudo na sua partição "root" também - por exemplo, instalando em uma partição NTFS pré-formatada.

Talvez você tenha mexido com o Windows no passado, de modo que o sinalizador de bootloader / inicializável acesse /dev/sda2 ? Você consegue inicializar com sucesso a partir de ambas entradas do Windows? Se assim for, é seguro excluir um deles.

Como remover as entradas

  

Perigo!

     

Isso pode tornar seu Windows não inicializável; Para seguir os passos abaixo, você terá que inserir sudo , quando apropriado, e certificar-se de que a partição NTFS está montada previamente em leitura / gravação.

cd /mnt/where-o-where-my-ntfs-be
rm -rf bootmgr Boot BOOTSECT.BAK Recovery
cd && umount /mnt/ntfs1
update-grub

Isso deve fazê-lo - obviamente eu não tentei em meu (s) sistema (s) de inicialização dupla. Por favor, deixe-me saber se ele não funciona e eu vou te dar métodos mais perigosos ou talvez olhar na fonte grub para ver como ele detecta as partições do Windows para uma resposta definitiva.

    
por ish 03.06.2012 / 07:15
3

Eu já resolvi persistentemente o suficiente para minhas necessidades. Eu mudei um pouco o script /etc/grub.d/30_os-prober:

inicie na linha 150 (apenas adicione variável e condição para verificar se o windows 7 já foi encontrado):


wubi=

for OS in ${OSPROBED} ; do
  DEVICE="'echo ${OS} | cut -d ':' -f 1'"
  LONGNAME="'echo ${OS} | cut -d ':' -f 2 | tr '^' ' ''"
  LABEL="'echo ${OS} | cut -d ':' -f 3 | tr '^' ' ''"
  BOOT="'echo ${OS} | cut -d ':' -f 4'"

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  echo "Found ${LONGNAME} on ${DEVICE}" >&2

mude para:


wubi=
windows7_found=

for OS in ${OSPROBED} ; do
  DEVICE="'echo ${OS} | cut -d ':' -f 1'"
  LONGNAME="'echo ${OS} | cut -d ':' -f 2 | tr '^' ' ''"
  LABEL="'echo ${OS} | cut -d ':' -f 3 | tr '^' ' ''"
  BOOT="'echo ${OS} | cut -d ':' -f 4'"

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  # Mi-La patch to add Windows 7 only once
  if [ "${LONGNAME}" = "Windows 7 (loader)" ]; then
    if [ "${windows7_found}" = yes ]; then
      echo "Skipping duplicated entry for ${LONGNAME} on ${DEVICE}." >&2
      continue
    else
      windows7_found=yes
    fi
  fi

  echo "Found ${LONGNAME} on ${DEVICE}" >&2

Deve estar funcionando pelo menos até que o grub não seja atualizado. Aproveite.

EDIT: Ubuntu 12.10

30_os-prober mudou um pouco, mas usando o mesmo se após as seguintes linhas:


  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

funciona bem.

    
por Mi-La 09.09.2012 / 16:05
0

Basta editar o arquivo de configuração Burg através do Terminal: 1.) Terminal Aberto 2.) Digite

Sudo gedit /boot/burg/burg.cfg

3.) Encontre o menuentry "Windows ..." e logo após --class os add:

--group group_secondary

Onde "group_secary" é um nome exclusivo para agrupar um grupo de sistemas operacionais. Se você olhar o arquivo, verá que os kernels do Linux possuem:

--group group_main

Agora você deve ter o Windows e o Windows Recovery como:

menuentry "Windows 8 (loader) (on /dev/sdc1)" --class windows --class os --group group_secondary {
    insmod ntfs
    set root='(hd2,1)'
    search --no-floppy --fs-uuid --set b896bf7f96bf3d26
    drivemap -s (hd0) ${root}
    chainloader +1
}
menuentry "Windows 8 (loader) (on /dev/sdc2) (recovery mode)" --class windows --class os --group group_secondary {
    insmod ntfs
    set root='(hd2,2)'
    search --no-floppy --fs-uuid --set c46cc0a06cc08f1c
    drivemap -s (hd0) ${root}
    chainloader +1
}

4.) A PARTE MAIS IMPORTANTE !!! Salve !!! Agora você pode REBOOT ou Iniciar:

sudo burg-emu

5.) Na tela de seleção, pressione "F" para recolher as pastas.

*** NOTA LATERAL: Quando recolhido, o Burg usará a primeira entrada do menu FIRST no arquivo como padrão no modo recolhido.

    
por Robert Cole 25.10.2013 / 12:13
-2

sudo nano /boot/grub/grub.cfg Em seguida, comente a segunda entrada do Windows (sda2), ou seja, coloque um '#' de onde a entrada começa. Ele removerá a entrada sem afetar seus arquivos. O mesmo vale para burg também. Apenas substitua o grub pelo burg no comando.

    
por Akshit Baunthiyal 10.07.2012 / 10:48