Inicialização dupla (Win7 + Ubuntu14) falha no Win 7 após adicionar SSD com o Ubuntu 16

0

Eu tenho um laptop ASUS com HDD e dual boot via grub2: Windows 7, Ubuntu 14.

Quando depois de 5 anos HDD começou a falhar com bad blocks eu adicionei SSD à porta SATA 2. Eu fiz SSD um Ubuntu de inicialização única 16 com sua própria partição EFI - de modo a remover HDD um dia quando ele falhar completamente e prosseguir com Somente SSD.

Eu particionei o SSD manualmente quando instalei o Ubuntu 16 no Live USB: selecionei "Outra coisa" na caixa de diálogo de instalação, tomei o cuidado de montar /boot/efi , /boot , / e /home em partições SSD I ' Acabei de criar a partir do Live USB e verifiquei que as partições do HDD estão em "Não use esta partição".

Infelizmente, não verifiquei a partição EFI no disco rígido. Portanto, apesar de especificar sdb1 (/ boot / efi de SSD) como Use as: EFI System Partition e apesar de selecionar / dev / sdb (SSD) como Device for boot loader installation , os bootloaders acabaram no HDD, não no SSD como eu planejei. Isso ocorre porque a partição EFI no HDD também foi configurada como Use as: EFI System Partition .

Os 2 problemas resultantes são:

  1. O ESP (EFI) está no disco rígido, não no SSD.

  2. O Windows 7 cai no resgate do grub, enquanto o Ubuntu 16 e o Ubuntu 14 são bem inicializados. Gostaria de saber se os dois problemas estão relacionados.

Para resolver o problema 1, copiei o conteúdo da EFI do HDD para a EFI do SSD e alterei o mapeamento de /boot/efi em /etc/fstab para apontar para a EFI do SSD ( UUID=E2A1-9FFE , /dev/sdb1 ):

# /boot/efi was on /dev/sda1 during installation
#UUID=40BE-2040  /boot/efi       vfat    umask=0077      0       1
# redirecting /boot/efi from /dev/sda1 to /dev/sdb1
UUID=E2A1-9FFE  /boot/efi       vfat    umask=0077      0       1

Agora, a partição EFI correta (no SSD) é montada em /boot/efi quando o Ubuntu inicializa (embora eu não tenha verificado se a EFI correta foi usada durante a inicialização ). Está correto resolver o problema 1 desta maneira: copiando arquivos + alterando o fstab?

E como resolvo o problema 2 ? Ao escolher Windows Boot Manager (on /dev/sda1) no grub, vejo esse erro e essa configuração de set :

error: symbol 'grub_term_highlight_color' not found.
grub rescue> set
lang=
locale_dir=
prefix=(hd0,gpt6)/grub
root=hd0,gpt6
secondary_locale_dir=

Ao escolher Windows Boot Manager (on /dev/sdb1) no grub, vejo esse erro e essa configuração de set :

error: file '/grub/x86_64-efi/normal.mod' not found.
grub rescue> set
prefix=(hd1,gpt6)/grub
root=hd1,gpt6

No BIOS (UEFI), os dispositivos de inicialização são chamados, respectivamente:

Windows Boot Manager (P0: ST1000...)
Windows Boot Manager (P1: Samsung SSD 850 PRO ...)

No entanto, ao ter o Live USB na porta USB, a seleção de dispositivos de inicialização a partir do BIOS (Esc) produz a saída set com hd números deslocados em um:

error: symbol 'grub_term_highlight_color' not found.
grub rescue> set
lang=
locale_dir=
prefix=(hd1,gpt6)/grub
root=hd1,gpt6
secondary_locale_dir=

e

error: file '/grub/x86_64-efi/normal.mod' not found.
grub rescue> set
prefix=(hd2,gpt6)/grub
root=hd2,gpt6

Eu sinto que isso é OK, embora não tenha 100% de certeza de que não é o motivo da falha na inicialização do Win7.

Aqui está a informação do reparo da inicialização: Cole do boot-repair em pastebin .

Eu tenho medo de rodar o boot-repair já que seu reparo sugerido parece estar corrigindo a inicialização do Ubuntu, não do Win. (Ainda estou a aprender o que rename-ms-efi significa.)

Eu também tive a idéia de remover o SSD e tentar inicializar apenas com HDD, mas temo que a partição EFI seja ainda mais complicada (por exemplo, com auto-correção) e eu não conseguirá inicializar o Ubuntu 14 mais. Soa estúpido, provavelmente. Mas afinal de contas, a introdução do Ubuntu 14 ao lado do Win7 original levou o Grub a não conseguir retomar o Win7 da hibernação. Então, tenho medo de fazer um bom trabalho novamente.

Qualquer ajuda seria muito apreciada!

Eu estarei criando backups para as partições SSD enquanto isso.

    
por a0c 24.09.2017 / 22:44

1 resposta

0

Muito obrigado pelas dicas, @oldfred!

Comecei a investigar as entradas em cadeia e descobri que /boot/grub/grub.cfg arquivos diferem em sda e sdb . O grub.cfg original do HDD ( sda ) continha a entrada do menu que usei para inicializar no Win7, enquanto o grub.cfg de sdb não o tinha. Não me lembro se as entradas do menu personalizado foram criadas por mim ou pelo grub ao instalar o Ubuntu 12 ao lado do Win7. Este e isso pode ser útil para outras pessoas criarem manualmente a entrada de menu personalizada.

Aqui estão os 2 passos que fiz para fazer o boot do Win7 novamente:

  1. Copie faltando /etc/grub.d/25_custom para sdb de sda .

O conteúdo de /etc/grub.d/25_custom :

#!/bin/sh
exec tail -n +3 $0

menuentry "Windows UEFI bkpbootmgfw.efi" {
search --fs-uuid --no-floppy --set=root 40BE-2040
chainloader (${root})/EFI/Microsoft/Boot/bkpbootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root 40BE-2040
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "efi/EFI/Boot/bkpbootx64.efi" {
search --fs-uuid --no-floppy --set=root 84ba8463-a7a4-4a32-a429-f28e606435f2
chainloader (${root})/efi/EFI/Boot/bkpbootx64.efi
}

onde 40BE-2040 e 84ba8463-a7a4-4a32-a429-f28e606435f2 são partição EFI e / partição de boot do Ubuntu 14 no HDD, respectivamente:

/dev/sda1: LABEL="SYSTEM" UUID="40BE-2040" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="41d1ad3d-8c17-44cd-9e4f-e6554d3c532b"
/dev/sda6: UUID="84ba8463-a7a4-4a32-a429-f28e606435f2" TYPE="ext4" PARTUUID="7f61e2e3-7b36-49a0-a357-90032497db30"

sudo update-grub atualiza o grub.cfg .

Para inicializar o Win7, estou usando a segunda entrada do menu: Windows Boot UEFI loader .

  1. Se sua partição de troca criptografada foi quebrada, recupere-a seguindo estas etapas: punygeek.blogspot.com.ee/2012/10/ubuntu-1204-how-to-solve-disk-drive-for.html

A troca foi quebrada no meu caso, provavelmente por causa da mudança do nome & amp; rótulo da partição EFI em sdb ao investigar se o nome / rótulo de uma partição não exclusiva poderia ser a causa de o Win7 não inicializar. A partição swap começou a pedir senha na inicialização do Ubuntu 16. Não foi possível corrigi-lo atualizando o UUID em /etc/fstab , /etc/crypttab e /etc/initramfs-tools/conf.d/resume . Apenas o link acima ajudou a consertar a partição de troca criptografada. A execução de sudo ecryptfs-setup-swap falhou, mas após a reinicialização, a troca foi criptografada corretamente:

> lsblk
├─sdb3           8:19   0     8G  0 part  
│ └─cryptswap1 253:0    0     8G  0 crypt [SWAP]

E a saída de swapon -s difere da mostrada no link acima:

Filename                Type        Size    Used    Priority
/dev/dm-0                               partition   8388092 0   -1

Mas parece que é a partição swap correta:

> ls -l /dev/mapper/cryptswap1
lrwxrwxrwx 1 root root 7 sept  25 14:02 /dev/mapper/cryptswap1 -> ../dm-0
    
por a0c 25.09.2017 / 20:52