HDD antigo não inicializa mais, o novo SSD força o BIOS no loop de inicialização

0

Sitrep:

O laptop é um Asus Aspire V5 431. O BIOS está configurado para inicializar como legado do BIOS, não como UEFI. Tem (tinha) um WD HDD.

Eu raramente inicializo (a última vez, como em agosto, eu acho), mas sempre inicializava bem. No entanto, decidiu arrumar uma semana atrás (kernel panic), e eu tive que reiniciá-lo. Acontece que tudo que eu tenho é uma tela em branco com um cursor no canto superior esquerdo. Eu estava esperando o menu de inicialização do Grub. O HDD tem o estágio 1 do Grub 0.97 no MBR e um GPT. Este é o layout da partição:

# fdisk -l /dev/sdb
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 17E16B0D-9815-4A52-88A8-67DF03C9C6E0

Device        Start       End   Sectors   Size Type
/dev/sdb1      2048    526335    524288   256M Microsoft basic data
/dev/sdb2    526336  42469375  41943040    20G EFI System
/dev/sdb3  42469376  46663679   4194304     2G Linux swap
/dev/sdb4  46663680 976773119 930109440 443.5G Microsoft basic data

# parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: WDC WD50 00LPVT-22G33T0 (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  269MB   268MB   ext3               msftdata
 2      269MB   21.7GB  21.5GB  ext3               boot, esp
 3      21.7GB  23.9GB  2147MB  swsusp
 4      23.9GB  500GB   476GB   ext3               msftdata

Nevermind que diz sdb em vez de sda, atualmente tenho em um dock USB em outro laptop. Agora, o sdb1 não foi usado (deveria ser / boot, mas nunca foi montado), e o sdb2 é montado como / com um diretório / boot contendo o Grub 0.97 (o SO é o Fedora 14).

De acordo com todos os sites de QA e tutorial lá fora, essa configuração não deveria ter funcionado no começo, para um BIOS inicializar no modo herdado, seria necessária uma partição com legacy_boot . No entanto, tenho certeza que nada mudou na tabela de partições. Além disso, eu li que o Grub é capaz de usar os setores não utilizados entre as entradas da partição GPT e a primeira partição para core.img . Ou o Grub 0.97 realmente usa uma partição para o estágio 2, em vez de um core.img em um local fixo ? Isso faria sentido porque existe um /boot/grub/stage2 . Tenho certeza de que eu nunca tive uma partição legacy_boot , pois ela precisaria ser fat32 e 100% nunca criei um sistema de arquivos nessa unidade.

AFAIK, o próprio Grub não se importa com os sinalizadores de partição. Também não sei por que eles têm o sinalizador msftdata definido ou por que o sinalizador boot e esp está definido. Tenho 100% de certeza de que não os defini quando particionei a unidade.

Então, pergunta número um seria : O que falta aqui nesta configuração que não inicializa mais? Um BIOS legado pode ser inicializado em um GPT? Lembro-me de ler que alguns BIOSes com bugs precisam de uma partição ativa, ou seja, neste caso, a pseudo-partição no MBR? Isso poderia causar esse sintoma de uma tela em branco? Eu sei que há um loop infinito no código MBR do Grub. Em que circunstâncias isso foi executado?

Como esse HDD é bastante antigo e os SSDs estão ficando mais baratos, eu consegui um deles. Eu particionei-o no mesmo layout acima (exceto que a última partição é menor):

# fdisk -l /dev/sdc
Disk /dev/sdc: 223.6 GiB, 240057409536 bytes, 468862128 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
Disklabel type: gpt
Disk identifier: 30BD5947-8BC3-4AFE-BC3C-14615E9AF60F

Device        Start       End   Sectors   Size Type
/dev/sdc1      2048    526335    524288   256M Linux filesystem
/dev/sdc2    526336  42469375  41943040    20G Linux filesystem
/dev/sdc3  42469376  46663679   4194304     2G Linux swap
/dev/sdc4  46663680 468862094 422198415 201.3G Linux filesystem
# parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: SanDisk SDSSDA240G (scsi)
Disk /dev/sdc: 240GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name     Flags
 1      1049kB  269MB   268MB   ext3            primary
 2      269MB   21.7GB  21.5GB  ext3            primary
 3      21.7GB  23.9GB  2147MB  linux-swap(v1)  primary
 4      23.9GB  240GB   216GB   ext3            primary

(Novamente, sdc porque fica no dock por enquanto.)

Note que, desta vez, eu não tenho nenhum conjunto de flags (o próprio Grub não se importa). Eu copiei todos os arquivos, partição por partição, preservando os modos, timestamps, propriedade, etc. Eu também fiz exatamente os mesmos sistemas de arquivos, mesmo com os mesmos UUIDs. Eu então montei sdc2 como / mnt / sdc2, montei {dev, sys, proc} em / mnt / sdc2 / {dev, sys, proc}, fiz o chroot em / mnt / sdb2 e executei

# /sbin/grub-install --root-directory=/ /dev/sdc
/dev/sdc does not have any corresponding BIOS drive.

(Observe que isso executa /sbin/grub-install no sdc2, não no sda2, pois o host tem o Grub 2 instalado.)

Então deixo o Grub mudar o device.map:

# /sbin/grub-install --recheck /dev/sdc
Probing devices to guess BIOS drives. This may take a long time.
The file /boot/grub/stage1 not read correctly.

O que essa última sentença significa? /boot/grub/stage1 está lá, mas ela não foi atualizada (nem /boot/grub/stage2 ), mas todos os arquivos *stage1_5 (embora tenham ocore.img) mesmo md5sum como antes). Eu diria que isso copia /boot/grub/stage2 , ou atualiza GRUB Geom Error , e escreve um novo setor de inicialização no MBR de sdc (o que aconteceu, eu confirmei isso, embora não esteja muito claro por que deveria ser diferente daquele em sdb (o HDD antigo) em cada byte único na região de montagem).

Depois disso, conectei-o e, desta vez, o BIOS simplesmente entra em um loop de inicialização: Bipe, logotipo do fabricante do BIOS com POST, espera 2 segundos, reinicialização, beeo, ... O BIOS em si ainda é definido para o modo de inicialização herdado do BIOS e identifica corretamente o SSD (SanDisk).

Pergunta número dois: O que estou perdendo aqui? Fiquei com a impressão de que uma instalação do grub seria suficiente para obter um MBR inicializável e um estágio 2 adequadamente localizado. caso de problemas de estágio 2 ou qualquer problema em / boot para, pelo menos, ver uma mensagem de erro ou algo assim. E se houver um problema no MBR, eu veria %code% ou similar.

(Problema colateral: Eu planejo, no entanto, usar o sdc1 (como sda1 uma vez em sua posição) como / boot, mas o core.img deve estar alheio a isso, certo? Ou seja, se eu fizer o mesmo (grub- instalar etc no sdc1, eu deveria acabar com o mesmo problema.)

    
por Dr. Zoidberg 19.03.2018 / 15:31

0 respostas