Das questões existentes,esseparece mais parecido com o que estou fazendo, só que tento aumentar minha partição e não sei por que existem partições diferentes montadas em /boot/ e /boot/efi e como proceder sem atirar nos pés.
Até agora eu criei uma nova partição, montei-a /newBoot
e fiz isso sudo rsync -a /boot/ /newBoot/
, então presumo que tenho todos os arquivos relevantes na nova partição para alternar.
$ lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint,uuid,partuuid
NAME FSTYPE SIZE FSUSED LABEL PARTLABEL MOUNTPOINT UUID PARTUUID
sda 7.3T
└─sda1 crypto 7.3T 4dffc196-9926-43d9-a7c8-38898681f402 85b3a656-4886-4b37-b9c1-2acb0158587a
...
nvme0n1 931.5G
├─nvme0n1p1 vfat 512M 5.3M EFI System Partition
│ /boot/efi FD0E-EECA 587cf214-f068-4879-a833-9dffa5ec6e3d
├─nvme0n1p2 ext2 488M 313.7M /boot 606a1976-d1c2-4246-a256-a8afddb04f84 2e10e277-560f-4f5e-abce-1dce5187a7f0
...
└─nvme0n1p4 vfat 1.5G NEWBOOT newboot 530D-4828 ea886018-714f-46fb-8f21-785c74543891
$ efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004
Boot0004* ubuntu HD(1,GPT,587cf214-f068-4879-a833-9dffa5ec6e3d,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)
$ sudo efibootmgr -c -L ubuntuNew -l \\EFI\\UBUNTU\\SHIMX64.EFI
$ efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0000,0004
Boot0000* ubuntuNew HD(1,GPT,85b3a656-4886-4b37-b9c1-2acb0158587a,0xffff,0x3a3535ca9)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0004* ubuntu HD(1,GPT,587cf214-f068-4879-a833-9dffa5ec6e3d,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)
então, embora eu não entenda por que há duas partições envolvidas na /boot
pasta atual, acho que uma também deveria funcionar. Pelo menos é o que diz a resposta selecionada das perguntas acima, certo?
Agora, o que está faltando? /etc/fstab
?
$ cat /etc/fstab
...
UUID=606a1976-d1c2-4246-a256-a8afddb04f84 /boot ext2 defaults 0 2
...
UUID=FD0E-EECA /boot/efi vfat umask=0077 0 1
...
Agora, de acordo com lsblk
e efibootmgr -v
(obrigado @oldfred), a nova primeira opção de inicialização gostaria de usar sda1
e não nvme0n1p4
. sda1
é uma unidade externa da qual certamente não quero inicializar. Por que o padrão é isso?
- Que mudança está faltando para inicializar a partir da nova partição?
- Preciso alterar o
UUID
fstab/boot
antes de reiniciar? - Preciso de uma partição separada para
/boot/efi
?
Responder1
Ter ambos /boot
e /boot/efi
sistemas de arquivos separados é um exagero, mas:
- sistemas muito antigos baseados em BIOS podem precisar de uma
/boot
partição separada para evitar limitações do BIOS - qualquer sistema inicializado no estilo UEFI precisará
/boot/efi
de uma partição ESP equivalente, porque é nela que o firmware espera encontrar o arquivo do bootloader. - ter uma criptografia separada
/boot
permitirá o uso de qualquer método de criptografia suportadocryptsetup
no sistema de arquivos raiz, em vez do conjunto mais limitado de criptografias compreendido pelo GRUB.
O particionamento padrão de um Debian/Ubuntu moderno possui partições separadas, portanto a configuração padrão pode cobrir a maior variedade possível de sistemas.
Conforme mencionado nos comentários de oldfred, UEFI identifica a partição ESP a ser usada por um GUID exclusivo da partição na tabela de partição GPT. Esse GUID é conhecido como PARTUUID no Linux. lsblk -o +partuuid
irá exibi-lo.
Seu efibootmgr
comando estava quase correto. Para criar a opção de inicialização ubuntuNew usando o disco correto, você deveria ter usado:
sudo efibootmgr -c -d /dev/nvme0n1 -L ubuntuNew -l \\EFI\\UBUNTU\\SHIMX64.EFI
efibootmgr
irá procurar o PARTUUID por conta própria e usá-lo automaticamente para criar a nova entrada de inicialização. Você só precisará especificar o disco (a menos que o disco tenha várias partições de sistema EFI).
Depois de shimx64.efi
carregado grubx64.efi
, em sistemas configurados no estilo Debian/Ubuntu, ele será lido grub.cfg
no mesmo diretório que o grubx64.efi
. Esse arquivo contém apenas algumas linhas que identificam o UUID do sistema de arquivos que contém o /boot
diretório (seja uma partição separada ou apenas um diretório regular no sistema de arquivos raiz). Como resultado, os sistemas Debian/Ubuntu podemsempretenha o arquivo de configuração GRUB "principal" em /boot/grub/grub.cfg
, não importa se o sistema usa BIOS ou UEFI. Se você tiver um grande número de sistemas de diferentes idades, é conveniente.
Para referência, RedHat 7 e 8 têm a configuração real do GRUB em /boot/grub2/grub.cfg
sistemas estilo BIOS e em /boot/efi/EFI/redhat/grub.cfg
sistemas UEFI.
No entanto, se você deseja mesclar /boot
e /boot/efi
, há algumas coisas a serem observadas:
- O caminho do bootloader fornecido
efibootmgr
é baseado na raiz do sistema de arquivos ESP. Originalmente, esse caminho começa em/boot/efi
, por isso\\EFI\\UBUNTU\\SHIMX64.EFI
é chamado de/boot/efi/EFI/UBUNTU/SHIMX64.EFI
visualizado no Linux. Se você usar apenas/boot
, precisará mover o diretório UBUNTU um nível acima ou especificar o caminho do bootloader como\\EFI\\EFI\\UBUNTU\\SHIMX64.EFI
. /boot
precisa ser algo que o GRUB entenda, para que ele possa carregar o kernel e os arquivos initramfs a partir daí. A versão UEFI do GRUB do Ubuntu definitivamente entenderá ext2 e vfat; portanto, se você mesclar/boot
e/boot/efi
em uma única partição vfat, o GRUB não terá problemas. Você não pode usar o ext2 porque o firmware precisará ler SHIMX64.EFI e GRUBX64.EFI dessa partição, e o firmware UEFI típico não será capaz de entender o ext2.- No momento da inicialização,
/boot
é necessário apenas pelo GRUB, não pelo kernel do Linux: você poderia deixá-/boot
lo desmontado e o sistema ainda inicializaria perfeitamente. Mas você vai querer continuar/boot
montado para que as atualizações do kernel possam acontecer normalmente. (Ou se você realmente quiser ocultá-lo, deixando-o desmontado, poderá adicionar scripts para/etc/kernel/pre*.d/
montá-lo automaticamente antes que as atualizações do kernel sejam instaladas e para/etc/kernel/post*.d
desmontá-lo novamente após a instalação/remoção de um pacote de kernel específico.)
O Bootloader é frequentemente considerado “assustador e perigoso” se você não tiver uma compreensão clara de quais são os requisitos. Por outro lado, geralmente é bastante independente, então problemas relacionados apenas ao gerenciador de inicialização geralmente não são tão difíceis de corrigir... depois de passar o primeiro obstáculo de inicializar o sistema a partir de uma mídia externa, você pode começar a consertar isto. Eu não diria que um sistema com bootloader não funcional é “brinde”: ele só precisa de uma ajudinha externa.
Responder2
O carregador de boot procurará o que você montou atualmente /boot/efi
, então se você não quiser aumentar essa partição, você pode mantê-la como está e apenas fazer uma pequena alteração em um arquivo, conforme descrito abaixo.
Preparando a nova partição de inicialização
- Crie uma nova
ext2
partição com o tamanho desejado. Esta partição não precisa de um sinalizador de inicialização - sua partição efi é o ponto de entrada e será delegada a esta nova partição. - Monte a nova partição em algum lugar.
/newBoot
por exemplo - Copie seus arquivos da partição de inicialização antiga, por exemplo, usando
rsync --recursive --delete --archive /boot/ /newBoot/
- Exclua o conteúdo de
/newBoot/efi/
, aqui era apenas uma pasta:rm -rf /newBoot/efi/EFI/
. Não apaguenewBoot/efi/
. Queremos montar aefi
pasta antiga lá.
Diga efi
para usar a nova partição
Descubra /newBoot
o UUID:
$ lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint,uuid,partuuid
NAME FSTYPE SIZE FSUSED LABEL PARTLABEL MOUNTPOINT UUID PARTUUID
nvme0n1 931.5G
├─nvme0n1p1 vfat 512M 5.3M EFI System Partition /boot/efi FD0E-EECA 587cf214-f068-4879-a833-9dffa5ec6e3d
├─nvme0n1p2 ext2 488M 313.7M /boot 606a1976-d1c2-4246-a256-a8afddb04f84 2e10e277-560f-4f5e-abce-1dce5187a7f0
├─nvme0n1p3 crypto_LUKS 927.7G e7f674b8-4bec-4502-a1e5-0e93aa34786f 2fed2ecb-b548-479b-aa3f-7f1bbfb9981f
│ └─sda3_crypt LVM2_member 927.7G 9tx8Yv-XDCR-RmGf-fmXo-WiX2-SDpG-xH1si4
│ ├─ubuntu--gnome--vg-root ext4 911.6G 734.2G / 1cccfb0a-69da-4246-a071-52f882681418
│ └─ubuntu--gnome--vg-swap_1 swap 15.8G [SWAP] e3facfb8-db2e-426d-aef4-b6c81004fd6f
└─nvme0n1p4 ext2 1.5G newBoot newBoot 5aca79e7-b740-46d3-bc76-aa7e8b8b93da 9e8baf2f-2118-4042-9c47-7ffb824ada52
Edite /boot/efi/EFI/ubuntu/grub.cfg
de acordo, substituindo o antigo UUID atual pelo novo:
# cat /boot/efi/EFI/ubuntu/grub.cfg
# search.fs_uuid 606a1976-d1c2-4246-a256-a8afddb04f84 root
search.fs_uuid 5aca79e7-b740-46d3-bc76-aa7e8b8b93da root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
Terminando
Agora o sistema já deveria inicializar a partir da nova partição, mas /boot/
seria o antigo após inicializar a partir da nova. Edite /etc/fstab
para que as atualizações do sistema encontrem todos os arquivos em seus lugares:
# UUID=606a1976-d1c2-4246-a256-a8afddb04f84 /boot ext2 defaults 0 2
UUID=5aca79e7-b740-46d3-bc76-aa7e8b8b93da /boot ext2 defaults 0 2
A /boot/efi
linha /etc/fstab
permanece como estava:
UUID=FD0E-EECA /boot/efi vfat umask=0077 0 1