AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 785281
Accepted
A.L
A.L
Asked: 2024-10-18 21:02:22 +0800 CST2024-10-18 21:02:22 +0800 CST 2024-10-18 21:02:22 +0800 CST

Debian 12.7 instalado em uma chave USB funciona em CPU Intel, mas não AMD: o grub nunca é carregado

  • 772

Instalei o Debian 12 ( amd64arch 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:

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

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-gruba 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.

debian
  • 2 2 respostas
  • 68 Views

2 respostas

  • Voted
  1. Best Answer
    td211
    2024-10-23T19:33:35+08:002024-10-23T19:33:35+08:00

    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 --removablesinalizador 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).

    • 2
  2. telcoM
    2024-10-24T14:28:52+08:002024-10-24T14:28:52+08:00

    Quando você instalou o Debian 12 no modo UEFI, o instalador executou grub-installo comando que gravou /boot/efi/EFI/debian/grubx64.efi(e também /boot/efi/EFI/debian/shimx64.efise 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 -vcomo root ou acessando o efivarfssistema de arquivos virtual em /sys/firmware/efi/efivars/.

    A variável de inicialização UEFI contém as seguintes informações:

    • o nome da entrada de inicialização, que debianno seu caso era
    • o PARTUUID da partição do sistema EFI (ESP) que contém o carregador de inicialização UEFI
    • algumas informações redundantes para identificar o ESP (número do disco, deslocamento inicial da partição, comprimento da partição) caso a identificação por PARTUUID não seja bem-sucedida
    • o caminho do arquivo do bootloader no ESP ( \EFI\debian\shimx64.efise o suporte Secure Boot estiver em uso, ou \EFI\debian\grubx64.efinã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 1no 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 carregando shimx64.efiou grubx64.efido EFI/debiandiretó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.eficonforme expresso pelo firmware, ou /boot/efi/EFI/boot/bootx64.eficomo 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-installcertamente pode fazer isso... mas somente se você pedir especificamente , usando as opções --removableou --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:

    grub-install --removable
    
    • 2

relate perguntas

  • Configuração do GRUB para reconhecer diferentes ambientes de desktop (instalações) da mesma distribuição Linux

  • astyle não altera a formatação do arquivo de origem

  • Recebendo e-mail em um novo Debian fresco

  • Debian Stretch: gnome-software segfault em libgs_plugin_systemd-updates.so

  • Como digitar ü no Pinyin IME?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve