Instalei o Debian 12 ( amd64
arch desde que o usei debian-12.7.0-amd64-DVD-1.iso
) em um pendrive, usando um computador com uma CPU Intel ( Core i7 3770K ). Configurei o "BIOS" para UEFI-only.
Posso inicializar o Debian neste sistema sem problemas: vejo o GRUB, ele tem um tempo limite antes de iniciar o Debian e então o sistema inicializa.
Mas quando eu conecto essa chave USB em um computador com uma CPU AMD ( Ryzen 7 5800X ), ele nunca inicializa: eu posso selecionar essa instância Debian no menu de inicialização, mas quando eu pressiono Enter, ele retorna para essa tela. Depois de 2 tentativas, ele só mostra uma tela preta. Ele nunca chega à tela do GRUB.
Ambos os sistemas são configurados como somente UEFI e a inicialização segura está desabilitada.
Alguns drivers estão faltando? Até onde sei, Debian (e Linux) são portáteis: podemos mover um armazenamento com um sistema Linux para outro computador e inicializá-lo sem problemas, desde que tenham a mesma arquitetura.
Teste com a CPU Intel
Menu de inicialização:
Armazenamento e partições:
root@serveur:~# fdisk -l
Disk /dev/sda: 7.46 GiB, 8014528512 bytes, 15653376 sectors
Disk model: Freecom Databar
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: F3F8597A-E3A9-4340-B561-976463C941D7
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 13941248 12890625 6.1G Linux filesystem
root@serveur:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.6G 0 7.6G 0% /dev
tmpfs 1.6G 724K 1.6G 1% /run
/dev/sda2 6.0G 2.0G 3.7G 35% /
tmpfs 7.6G 0 7.6G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 511M 5.9M 506M 2% /boot/efi
tmpfs 1.6G 0 1.6G 0% /run/user/1000
root@serveur:~# tree /boot/efi/
/boot/efi/
└── EFI
└── debian
├── BOOTX64.CSV
├── fbx64.efi
├── grub.cfg
├── grubx64.efi
├── mmx64.efi
└── shimx64.efi
3 directories, 6 files
root@serveur:~# ls -lh /boot/efi/EFI/debian/
total 5.9M
-rwx------ 1 root root 108 Oct 16 21:58 BOOTX64.CSV
-rwx------ 1 root root 86K Oct 16 21:58 fbx64.efi
-rwx------ 1 root root 126 Oct 16 21:58 grub.cfg
-rwx------ 1 root root 4.1M Oct 16 21:58 grubx64.efi
-rwx------ 1 root root 831K Oct 16 21:58 mmx64.efi
-rwx------ 1 root root 938K Oct 16 21:58 shimx64.efi
root@serveur:~# efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000
Boot0000* debian HD(1,GPT,84ba4a07-f69b-4768-a2c6-841363bcaa45,0x800,0x100000)/File(\EFI\debian\shimx64.efi)
root@serveur:~$ cat /etc/fstab
[…]
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sdb2 during installation
UUID=ce54e770-e3ba-44a0-8dd1-5b9308e18eac / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sdb1 during installation
UUID=B2A6-2FC0 /boot/efi vfat umask=0077 0 1
root@serveur:~# lsblk -o name,mountpoint,label,size,uuid
NAME MOUNTPOINT LABEL SIZE UUID
sda 7,5G
├─sda1 /boot/efi BOOT 512M B2A6-2FC0
└─sda2 / 6,1G ce54e770-e3ba-44a0-8dd1-5b9308e18eac
Verifique se o modo UEFI é usado:
root@serveur:~# ls -lh /sys/firmware/efi
total 0
-r--r--r-- 1 root root 4.0K Oct 18 19:25 config_table
drwxr-xr-x 2 root root 0 Aug 25 19:35 efivars
-r--r--r-- 1 root root 4.0K Oct 18 19:25 fw_platform_size
-r--r--r-- 1 root root 4.0K Oct 18 19:25 fw_vendor
drwxr-xr-x 2 root root 0 Oct 18 19:25 mok-variables
-r--r--r-- 1 root root 4.0K Oct 18 19:25 runtime
drwxr-xr-x 16 root root 0 Oct 18 19:25 runtime-map
-r-------- 1 root root 4.0K Oct 18 19:25 systab
Teste com a CPU AMD
Menu de inicialização:
Por algum motivo, a entrada do Debian começa com UEFI:
.
A opção de destaque não funciona: ele retorna para aquela tela.
Mas, tem algo interessante: eu executei sudo update-grub
a partir da minha instalação principal (Ubuntu 24.04 que está instalado neste computador, como mostrado acima ele está em um SSD NVMe):
$ sudo update-grub
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.8.0-47-generic
Found initrd image: /boot/initrd.img-6.8.0-47-generic
Found linux image: /boot/vmlinuz-6.8.0-45-generic
Found initrd image: /boot/initrd.img-6.8.0-45-generic
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Found Debian GNU/Linux 12 (bookworm) on /dev/sda2
Adding boot menu entry for UEFI Firmware Settings ...
done
Ele detectou o Debian 12 e adicionou uma entrada ao meu GRUB principal (não aquele no pendrive), e consegui inicializar o Debian 12 sem problemas a partir deste menu do GRUB.
Então parece que o GRUB no pendrive só funciona no computador Intel. E o Debian em si não tem problema quando pode ser inicializado pelo GRUB no SSD.
Por padrão, o instalador do Debian (e provavelmente outros) instala o GRUB sem considerar drives removíveis. Você só precisa reinstalar o GRUB com o
--removable
sinalizador para torná-lo facilmente inicializável em outros PCs.Isso não tem nada a ver com CPUs Intel ou AMD (ambas são x86_64, de qualquer forma).
Quando você instalou o Debian 12 no modo UEFI, o instalador executou
grub-install
o comando que gravou/boot/efi/EFI/debian/grubx64.efi
(e também/boot/efi/EFI/debian/shimx64.efi
se o suporte ao Secure Boot estava instalado) na partição ESP da chave USB.Mas isso não é tudo o que ele fez. Ele também usou o UEFI Runtime Services para armazenar um pouco de informação, chamada de variável de inicialização UEFI , na NVRAM do sistema: o lugar onde as configurações do BIOS também são armazenadas. Você pode visualizar essas variáveis de inicialização UEFI usando o comando
efibootmgr -v
como root ou acessando oefivarfs
sistema de arquivos virtual em/sys/firmware/efi/efivars/
.A variável de inicialização UEFI contém as seguintes informações:
debian
no seu caso era\EFI\debian\shimx64.efi
se o suporte Secure Boot estiver em uso, ou\EFI\debian\grubx64.efi
não)Para discos rígidos e SSDs normais, isso é bom. Mas com mídia removível como sua chave USB, essas informações ficam para trás quando a chave USB é movida de um sistema para outro.
Depois que a chave USB foi conectada ao seu sistema AMD, esse sistema viu que a chave aparentemente continha uma partição ESP válida e, portanto, ela foi exibida
UEFI: <product name of the USB key>, Partition 1
no menu de inicialização. Mas como os dados da variável de inicialização UEFI não foram transferidos do sistema Intel, o sistema não tinha como saber que deveria estar carregandoshimx64.efi
ougrubx64.efi
doEFI/debian
diretório da partição ESP.Para mídia removível (e para situações em que os dados NVRAM foram perdidos), a especificação UEFI define um caminho de inicialização de fallback/mídia removível específico da arquitetura que pode ser usado se o sistema vir uma partição ESP de aparência válida, mas não tiver variáveis de inicialização UEFI referindo-se a ela. Para a arquitetura x86_64, esse caminho de inicialização é
\EFI\boot\bootx64.efi
conforme expresso pelo firmware, ou/boot/efi/EFI/boot/bootx64.efi
como você o veria no Debian.Em outras palavras, para tornar uma mídia removível UEFI-inicializável não apenas no sistema para o qual foi criada, mas em todos os sistemas UEFI em que pode ser conectada, o arquivo bootloader deve ter esse caminho específico. E
grub-install
certamente pode fazer isso... mas somente se você pedir especificamente , usando as opções--removable
ou--force-extra-removable
. A primeira opção colocará o arquivo bootloader somente na mídia removível/caminho fallback; a última configura uma cópia do bootloader da maneira normal e, em seguida, faz outra cópia dela no caminho fallback.Infelizmente, o instalador do Debian 12 detecta automaticamente que o SO está sendo instalado em um disco removível, nem oferece de forma proeminente a opção de instalar o bootloader UEFI na mídia removível/caminho de fallback. Se você estiver instalando o Debian 12 inicializável por UEFI em uma mídia removível, você terá que saber disso e fazer você mesmo depois que a instalação principal for concluída.
Após inicializar com sucesso a partir da sua chave USB no seu sistema Intel, você precisará apenas de um comando para corrigir essa deficiência: