Estou tentando remover a /boot
partição dedicada e mesclá-la na partição raiz /
. Já encontrei https://askubuntu.com/questions/741672/how-do-i-merge-my-boot-partition-to-be-a-part-of-the-partition , mas isso não parece ajuda.
Qual é a situação:
# uname -a
Linux c02 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) x86_64 GNU/Linux
# fdisk -l /dev/sda
Disk /dev/sda: 4 TiB, 4398046511104 bytes, 8589934592 sectors
Disk model: QEMU HARDDISK
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: 1673AA12-2A54-4718-AF1E-58FE670A87E3
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2007039 2002944 978M Linux filesystem
/dev/sda3 2007040 10008575 8001536 3.8G Linux swap
/dev/sda4 10008576 8589932543 8579923968 4T Linux filesystem
O seguinte funciona e deixe-me reiniciar a máquina com sucesso:
# copy content of boot partition to root
cp -a /boot /boot.bak
umount /boot
rm -rf /boot
mv /boot.bak /boot
# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.1.0-12-amd64
Found initrd image: /boot/initrd.img-6.1.0-12-amd64
Found linux image: /boot/vmlinuz-6.1.0-10-amd64
Found initrd image: /boot/initrd.img-6.1.0-10-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done
Mas ao excluir adicionalmente a partição física de inicialização, a reinicialização falha:
# fdisk /dev/sda
Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.
Command (m for help): d
Partition number (1-4, default 4): 2
Partition 2 has been deleted.
Command (m for help): w
The partition table has been altered.
Syncing disks.
O que resulta em um erro do grub:
error: no such partition.
grub rescue>
Ao reinstalar grub
via, apt-get install --reinstall grub-pc
recebo o seguinte erro do grub:
error: attempt to read or write outside of disk `hd0`.
grub rescue>
O que há de errado aqui?
update-grub
na verdade, atualizará apenas o arquivo de configuração do GRUB em/boot/grub/grub.cfg
.A imagem principal do GRUB (que está principalmente na partição de inicialização do BIOS) contém um número de partição e um nome de caminho. Eles dizem ao GRUB como encontrar o
/boot/grub
diretório e, portanto, o arquivo de configuração do GRUB e os módulos do GRUB comonormal.mod
.A desmontagem da
/boot
partição não teve efeito no GRUB, pois o GRUB faz seu trabalho antes mesmo de o kernel do Linux iniciar. Como você não atualizou as informações codificadas na imagem principal do GRUB (executando novamentegrub-install /dev/sda
após desmontar o sistema de arquivos antigo/boot
e colocá-lo/boot.bak
em seu lugar), o GRUB simplesmente continuou usando a/boot
partição antiga até que você a removesse. Se você tivesse feito alguma alteração na configuração do GRUB antes de executarupdate-grub
seu procedimento, teria notado que as alterações não entraram em vigor.Então, o que fazer depois
mv /boot.bak /boot
não deveria serupdate-grub
, mas:Você conseguiu efetivamente o mesmo executando
apt-get install --reinstall grub-pc
. Mas agora a mensagem de erro éattempt to read or write outside of disk 'hd0'
. Isso me diz que o GRUB está usando rotinas de BIOS para acessar o disco e, aparentemente, as rotinas de emulação de BIOS do QEMU não foram atualizadas para lidar com discos> 2 TB, então você está atingindo o limite de 2 TB.(E sim, analisei uma
grub-pc
instalação vanilla do Debian 12. Os únicos módulos incorporados na imagem principal do GRUB em uma instalação simples como esta sãofshelp.mod
, o módulo de driver do sistema de arquivos apropriado (por exemploext2.mod)
, o módulo de tipo de tabela de partição apropriado (por exemplo,part_msdos.mod
oupart_gpt.mod
) e Emborabiosdisk.mod
haja um BIOS independenteahci.mod
ouata.mod
disponível, eles não são usados pela instalação padrão. )Infelizmente, quando o tamanho do seu sistema de arquivos raiz é de aproximadamente 4 TB, você realmente deve mudar para a inicialização no modo UEFI. Para fazer isso com o QEMU do Debian (sem suporte para inicialização segura), você precisará ter o
ovmf
pacote instalado e alterar a<os>
seção do arquivo de configuração XML da sua VM para algo como:Então você poderia
/boot
partições anteriores para criar uma partição de sistema EFI,/etc/fstab
linha para montá-lo/boot/efi
,grub-pc
egrub-pc-bin
pacotes porgrub-efi-amd64
egrub-efi-amd64-bin
,grub-install --target=x86_64-efi --force-extra-removable /dev/sda
e uma vez inicializado com sucesso no modo UEFI, execute
grub-install /dev/sda
novamente para garantir que a variável de inicialização UEFI NVRAM esteja definida corretamente. Em seguida, instale e aprenda a usarefibootmgr
para gerenciar suas configurações de inicialização de um sistema operacional em execução de maneira padronizada.Se você ainda não estiver executando no modo UEFI durante a execução
grub-install --target=x86_64-efi
, ele--force-extra-removable
instalará uma segunda cópia do UEFI GRUB em/boot/efi/EFI/boot/bootx64.efi
: a mídia removível/local de fallback.Caso você também queira inicialização segura, substitua
OVMF_CODE_4M.fd
porOVMF_CODE_4M.ms.fd
e o modelo NVRAMOVMF_VARS_4M.fd
porOVMF_VARS_4M.ms.fd
. Adicione os pacotesgrub-efi-amd64-signed
eshim-signed
e execute novamente ogrub-install --target=x86_64-efi --force-extra-removable /dev/sda
.