Mudar instalação de UEFI para Legacy/MBR/CSM

Peguei um notebook antigo e fiz a instalação do Debian em modo UEFI uns dias atrás. Mas hoje vendo alguns “firmware bug” resolvi atualizar a firmware dele. Foi de uma de 2013 para a última disponível, de 2015. Eis que veio a surpresa ao reiniciar: A nova firmware não suporta UEFI!

Pois bem, vamos lá… Sei que possível transformar uma instalação em outra então aproveitei o próprio pendrive de inicialização do Debian e iniciei no modo de resgate (Rescue Mode). Segui nesse modo e montei a raiz do sistema instalado. O próprio instalador já me auxiliou e fez um chroot no sistema do disco. A ideia era reinstalar o grub, mas em modo legacy. Para tal, instalei o pacote grub-pc que automaticamente desinstalou o grub-efi. Ao rodar grub-install /dev/sda:

# grub-install /dev/sda
Instalando para a plataforma i386-pc.
grub-install: aviso: este rótulo de partição GPT não contém uma BIOS Boot Partition; a integração não será possível.
grub-install: aviso: Integração impossível. O GRUB só pode ser instalado nesta configuração usando listas de blocos. Contudo, as listas de blocos são instáveis e a sua utilização é desaconselhada..
grub-install: erro: não se continuará com as listas de blocos.

Só que eu sei que dá sim para colocar, basicamente eu precisava de uma partição bios_grub de 1MB. Só que o disco já estava totalmente preenchido pelas partições:

root@gp60:~# fdisk -l /dev/sda
Disco /dev/sda: 447,13 GiB, 480103981056 bytes, 937703088 setores
Modelo de disco: CT480BX500SSD1  
Unidades: setor de 1 * 512 = 512 bytes
Tamanho de setor (lógico/físico): 512 bytes / 512 bytes
Tamanho E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de rótulo do disco: gpt
Identificador do disco: D7911C59-EBA2-4C81-A7E7-4B333988F1F5

Dispositivo    Início       Fim   Setores Tamanho Tipo
/dev/sda1        2048    585727    583680    285M Sistema EFI
/dev/sda2      585728 234960895 234375168  111,8G Linux sistema de arquivos
/dev/sda3   234960896 937701375 702740480  335,1G Linux sistema de arquivos

Ia dar um trabalho reduzir alguma partição, então pensei em usar exatamente o espaço inicial (aquele reserva que tem antes do bloco 2048 que alinha as partições) pro bios_grub. Tentei via fdisk mas ele não deixava (ao menos sem estar no modo expert). Procurei na net e tinha uma dica de fazer usando o parted, dizendo que ele “reclama mas faz”.

Reiniciei o computador, novamente entrei no modo de resgate, mas não montei nenhuma partição do disco, para poder fazer as alterações. Abri um shell do instalador e usei o parted:

# parted /dev/sda
GNU Parted 3.6
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mkpart grub 34s 2047s
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? Ignore
(parted) print free
Model: ATA CT480BX500SSD1 (scsi)
Disk /dev/sda: 480GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 4      17,4kB  1049kB  1031kB               grub
 1      1049kB  300MB   299MB   fat32              boot, legacy_boot, esp
 2      300MB   120GB   120GB   ext4
 3      120GB   480GB   360GB
        480GB   480GB   860kB   Free Space

(parted) set 4 bios_grub on
(parted) print
Model: ATA CT480BX500SSD1 (scsi)
Disk /dev/sda: 480GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 4      17,4kB  1049kB  1031kB               grub  bios_grub
 1      1049kB  300MB   299MB   fat32              boot, legacy_boot, esp
 2      300MB   120GB   120GB   ext4
 3      120GB   480GB   360GB

(parted) quit

Isso criou a partição 4 (fora de ordem) como partição do setor 34 até 2047. Saí do shell e usei o modo de resgate para novamente detectar o particionamento, montar a partição raiz e abrir um shell no sistema instalado. Aí foi só dar um grub-install /dev/sda e foi instalado com sucesso! Reiniciei o computador e o sistema iniciou no modo Legacy sem problemas!!!

Só para constar, ficou assim o particionamento do disco agora:

root@gp60:~# fdisk -l /dev/sda
Disco /dev/sda: 447,13 GiB, 480103981056 bytes, 937703088 setores
Modelo de disco: CT480BX500SSD1  
Unidades: setor de 1 * 512 = 512 bytes
Tamanho de setor (lógico/físico): 512 bytes / 512 bytes
Tamanho E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de rótulo do disco: gpt
Identificador do disco: D7911C59-EBA2-4C81-A7E7-4B333988F1F5

Dispositivo    Início       Fim   Setores Tamanho Tipo
/dev/sda1        2048    585727    583680    285M Sistema EFI
/dev/sda2      585728 234960895 234375168  111,8G Linux sistema de arquivos
/dev/sda3   234960896 937701375 702740480  335,1G Linux sistema de arquivos
/dev/sda4          34      2047      2014   1007K BIOS inicialização

Partições lógicas fora da ordem do disco.
2 curtidas