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 / 676485
Accepted
DAB
DAB
Asked: 2021-11-07 19:34:04 +0800 CST2021-11-07 19:34:04 +0800 CST 2021-11-07 19:34:04 +0800 CST

Como uma inicialização dupla com grub deve ser configurada?

  • 772

Eu vi algumas instruções, mas estou realmente tentando entender todo o processo de inicialização. Eu instalei o debian em uma unidade com uma partição para o sistema operacional e outra partição para o usuário. Ele criou automaticamente partições de boot e swap também. Então, usando o gparted, criei uma nova partição clonando a partição original do debian. Eu dei um novo UUID. Atualizei as opções do grup.

Quando inicializo, chego às opções do grub e vejo duas versões do arquivo os. Eu seleciono especificamente o sistema operacional na nova partição. Mas quando ele inicializa e eu faço check-in no terminal, vejo / é montado em /dev/nvme0n1p2vez de/dev/nvme0n1p5

Isso é o que estou confuso: /dev/nvme0n1p1monta /boot/efie /boot/efi/EFI/debian/grub.cfghá um arquivo de configuração:

search.fs_uuid FIRST-DRIVE-UUID root 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

O que isso basicamente significa para mim é que ele vai montar a primeira instalação e, em seguida, carregar o grub.cfg dessa primeira instalação. Agora ele já tem a primeira instalação montada como root, mas para executar a segunda instalação, obviamente precisa montar a segunda unidade como root. Então parece que está carregando o grub de dentro da primeira instalação em vez de carregar o grub ANTES de montar a primeira instalação?

Existe um arquivo de configuração do grub que faz referência a ambas as instalações em /boot/grub/grub.cfg, mas isso faz parte da partição da primeira instalação. Parece que uma vez que este arquivo é lido, a primeira instalação já foi carregada e é tarde demais para selecionar de qual partição inicializar. Este arquivo começa com

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub

Essa configuração de alguma forma precisa ser movida para a partição de inicialização?

Quando executo update-grub ou grub-mkconfig (v2.04-20), recebo esta saída:

$ sudo grub-mkconfig -o grub.cfg 
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-5.10.0-9-amd64
Found initrd image: /boot/initrd.img-5.10.0-9-amd64
Found linux image: /boot/vmlinuz-5.10.0-8-amd64
Found initrd image: /boot/initrd.img-5.10.0-8-amd64
Found Debian GNU/Linux 11 (bullseye) on /dev/nvme0n1p5
Adding boot menu entry for EFI firmware configuration
done

Isso parece fazer referência ao initrd e vmlinuz na primeira instalação. a segunda instalação apenas recebe found.

linux debian
  • 1 1 respostas
  • 471 Views

1 respostas

  • Voted
  1. Best Answer
    telcoM
    2021-11-08T12:58:37+08:002021-11-08T12:58:37+08:00

    "Montar um sistema de arquivos" é um conceito Linux/Unix: ele não existe realmente no GRUB.

    Especificar um $prefixou $rootpara GRUB não é como montar um sistema de arquivos no Linux/Unix. Eles são literalmente apenas prefixos para nomes de caminhos relativos ou absolutos, respectivamente.

    $prefixé usado quando o GRUB está carregando qualquer módulo do GRUB, e também pode ser usado como uma variável conveniente para se referir a qualquer arquivo no diretório (o que será quando o sistema operacional for inicializado) /boot/grubpelo nome de caminho absoluto do GRUB. Quando o comando GRUB insmodé usado, ele assume o valor de $prefixe adiciona um nome de diretório específico da arquitetura e o nome do módulo a ser carregado (com o .modsufixo adicionado).

    O GRUB tem seus próprios drivers de sistema de arquivos (somente leitura) que aceitam nomes de caminho absolutos no formato (partição )/diretório... /nome do arquivo, onde o componente de partição pode ser algo como hd0,gpt1.

    $rootpode ser atribuído e reatribuído várias vezes em um único arquivo de configuração do GRUB; em configurações modernas, o searchcomando geralmente é usado para ele em vez de uma atribuição explícita, para permitir a especificação de um sistema de arquivos por seu UUID.

    Em um sistema Debian 9 (usando inicialização no estilo BIOS), uma vez vi uma configuração do GRUB que inicialmente definia $roote $prefixcarregava alguns módulos GRUB, depois apontava $rootpara uma partição separada /usrpara carregar uma imagem de fundo e um arquivo de fonte de um diretório de tema GRUB em algum lugar /usr/share/.... Para as opções de inicialização reais, ele apontava $rootde volta para o /bootsistema de arquivos para carregar um kernel real ou para uma partição do Windows para carregar em cadeia seu registro de inicialização da partição.

    O GRUB $rootnão tem nada a ver com o sistema de arquivos raiz do Linux. Uma vez que o GRUB tenha carregado o kernel Linux e o arquivo initramfs na RAM, ele passará o controle para o kernel. Nesse ponto, apenas três coisas do GRUB serão preservadas:

    • o kernel na RAM
    • o initramfs na RAM após o kernel
    • as opções de inicialização especificadas na linha de comando do kernel.

    Todas as variáveis ​​do GRUB, incluindo $roote $prefix, são totalmente esquecidas nesse ponto e deixam de ter qualquer significado. À medida que o kernel é inicializado, ele ativará seus próprios drivers de dispositivo de armazenamento e o sistema de arquivos que será montado como o sistema de arquivos raiz do Linux é determinado por:

    • a root=opção de inicialização do kernel, se uma for especificada, ou
    • o conteúdo do arquivo initramfs (pode incluir uma cópia /etc/fstabque especifica o sistema de arquivos raiz ou scripts que determinam o sistema de arquivos a ser usado de alguma outra forma), ou
    • o sistema de arquivos raiz padrão pode ser especificado por parâmetros embutidos na imagem do kernel (especialmente se um kernel personalizado sem initramfs for usado).

    A versão UEFI do GRUB normalmente procurará grub.cfg no mesmo diretório em que grubx64.efiestá localizado em . As três linhas grub.cfg´ you found in /boot/efi/EFI/debian/grub.cfg effectively tells GRUB where the actual GRUB configuration file (and the/boot/grub directory) is, by filesystem UUID. If you wanted, you could replace the UUID with the UUID of the/dev/nvme0n1p5 filesystem, to make GRUB use the/boot` dessa instância do Debian em vez da primeira instalação.


    Se você tiver o os-proberpacote instalado no Debian, ele será executado automaticamente sempre que você executar update-grub, e tentará detectar automaticamente outros sistemas operacionais, incluindo instalações paralelas do Debian, e adicionará suas principais opções de inicialização ao arquivo de configuração do GRUB.

    Você também pode adicionar um item de menu como este ao seu /etc/grub.d/40_customon nvme0n1p2:

    menuentry 'Switch to GRUB configuration of /dev/nvme0n1p5' {
            search --no-floppy --fs-uuid --set=root UUID-OF-nvme0n1p5-FS-HERE
            configfile /boot/grub/grub.cfg
    }
    

    e da mesma forma /etc/grub.d/40_custompara nvme0n1p5voltar para a configuração do GRUB do nvme0n1p2. Lembre-se de correrupdate-grub para permitir que as alterações entrem em vigor.

    Então você pode definir a search.fs_uuidlinha em /boot/efi/EFI/debian/grub.cfg(ou seja, em nvme0n1p1) de acordo com a configuração que você deseja que o GRUB use por padrão. Contanto que ambas as instâncias do Debian continuem usando uma versão semelhante do GRUB o suficiente para aceitar os mesmos arquivos de configuração, você poderá alternar facilmente entre as duas instâncias do SO, e ambas poderão manter seus próprios arquivos de configuração do GRUB independentemente de uns aos outros.

    • 1

relate perguntas

  • 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

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

  • 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