Eu tenho uma máquina que possui partições de inicialização múltipla. Eu tenho o Ubuntu 14.04 em uma partição, o Ubuntu 15.04 na segunda e o Ubuntu 16.04 na terceira. Existe uma maneira de saber, a partir da linha de comando, em qual partição eu inicializei, para encontrar em qual partição é a /boot/grub/grub.cfg
qual foi usada para o processo de inicialização? Eu tenho /boot/grub/grub.cfg
em cada uma das três partições.
12
/boot/grub/grub.cfg
arquivo usado para a inicialização pode ter sido excluído, a partição pode ter sido excluída da tabela de partições e o disco removido fisicamente do sistema.Respostas:
Depois que o GRUB transferiu a inicialização para o kernel, o kernel não tem idéia do que o iniciou e
/boot
pode não ser o que o GRUB usou. Você pode verificar os tempos de acessoboot/grub/grub.cfg
em cada uma das partições para ver qual delas foi acessada mais recentemente. Isso pode indicar qual arquivo de configuração da partição o GRUB usou.Se os tempos de acesso não forem atualizados, você deverá procurar diferenças nos parâmetros do kernel usados pelos vários arquivos de configuração do GRUB. Se você puder alterá-los, por exemplo, adicionar
foo=1
,foo=2
etc. paraGRUB_CMDLINE_LINUX
em cada um deles, executarsudo update-grub2
e reiniciar, poderá verificar/proc/cmdline
para ver quais desses valores foram usados.fonte
/boot
está localizada, mas pode não ser o que o grub usou, e você e Katu estão descobrindo que a partição montada/
está montada, mas, como Ravexina observou, isso provavelmente tem ainda menos de uma conexão/
, com certeza. Encontrando a configuração GRUB de qual partição foi usada durante a inicialização? Não vejo como isso se relaciona.Como você sabe, o arquivo que você está procurando está localizado no
/boot
diretório do seu sistema em execução. ou/boot
é uma partição separada ou não é; Se você/boot
é uma partição separada, procure por isso:Significa
grub.cfg
que o que foi usado está localizadosda2
.Caso contrário, você deve procurar
root
:desta vez está localizado em
sda1
.Ou mesmo por diversão , podemos verificar os parâmetros de tempo de inicialização:
então use
UUID
para descobrir qual partição é sua raiz.O que significa de
sda1
.Você também pode verificar esses parâmetros de inicialização para ver qual dos seus
grub.cfg
arquivos os contém; isso só funciona quando os parâmetros de inicializaçãogrub.cfg
são diferentes.fonte
readlink -f /dev/disk/by-uuid/<UUID>
.Para exibir o dispositivo que contém o sistema de arquivos raiz atualmente montado:
Para exibir a versão do Ubuntu atualmente em execução:
fonte
lsb_release -rs
sempre usa . KISSPoderíamos adicionar uma entrada de menu personalizada simples em cada sistema operacional e veríamos no menu Grub a partir do qual o OS Grub carregou seu arquivo de configuração.
Exemplo:
Inicializamos no 16.04 e editamos o arquivo
/etc/grub.d/40_custom
para adicionar uma entrada de menu.Garantimos que o arquivo é executável e executado
sudo update-grub
.Em seguida, fazemos as mesmas alterações nos outros sistemas operacionais, apenas usamos nomes diferentes para a entrada do menu, mas mudamos
16.04
para15.04
e assim por diante.Se selecionarmos essa entrada de menu no menu Grub durante a inicialização, a máquina será reiniciada, criamos para não inicializar nenhum sistema operacional, mas para ver qual sistema operacional é realmente usado para carregar
grub.conf
.Informação adicional
Esse tipo de confusão aparece quando instalamos vários sistemas operacionais que usam Grub e durante a instalação de um sistema operacional escolhemos o mesmo local do carregador de inicialização. Na verdade, precisamos apenas de um sistema operacional que instale o Grub, o Grub pode inicializar em qualquer distribuição Linux; portanto, se tivermos uma distribuição instalada (incluindo o Grub), poderemos instalar sistemas operacionais adicionais sem instalar o Grub.
Nas instalações herdadas, é muito fácil manipular o local da instalação do carregador de inicialização, pois podemos escolher o registro de inicialização da partição como local, mas precisamos ter o cuidado de escolher a partição correta. Portanto, um sistema operacional instala o carregador de inicialização no MBR e outros sistemas operacionais instalam o carregador de inicialização no PBR da partição do sistema operacional. Essa possibilidade só temos quando usamos a
Something else
opção-durante a instalação.Nas instalações UEFI, é um pouco mais estranho, o carregador de inicialização será instalado em uma pasta na EFI System Partition (ESP) e vários carregadores de inicialização podem coexistir facilmente. O problema aqui é que todos os sabores do Ubuntu e também algumas outras distribuições Linux instalam o Grub na mesma pasta no ESP e não temos escolha. Portanto, a instalação de uma distribuição Linux adicional substituirá nosso gerenciador de inicialização já existente. A única maneira de evitar isso é inicializar em uma sessão ao vivo e iniciar o instalador
sudo ubiquity -b
.Outra solução simples
Vamos supor que temos três distribuições Linux instaladas nas partições
sda1
,sda2
esda3
. Agora vamos dar uma olhada nas entradas do menu de inicialização do Grub. Durante a inicialização, veremos algo como isto:As duas primeiras entradas são as entradas para o sistema operacional que gerou o
grub.conf
arquivo -que realmente usamos. As entradas # 3 e # 4 não são interessantes no momento. As entradas 5, 6, 7 e 8 são as entradas que foram geradas com o prober do SO e vemos em quais partições os SOs dessas entradas residem. Portanto, no caso deste pequeno exemplo, podemos concluir que ogrub.config
arquivo -que realmente usamos não pertence ao sistema operacionalsda2
ousda3
ao sistema operacionalsda1
. No caso de um ou mais sistemas operacionais serem instalados com uma/boot
partição separada, teremos que verificar qual/boot
partição pertence a qual sistema operacional, mas isso é facilmente feito executando ofindmnt
comando-em cada sistema operacional.fonte
E verifique em que disco está montado
/
. Por favor, leia os comentários abaixo ou a resposta da Ravexina, se você tiver/boot
seus pontos montados.Se você não tiver certeza, verifique o UUID
fonte
/boot
for uma partição separada? então/boot/grub/grub.cfg
não está localizado na/
partição./
partição não conta?/boot
primeiro separadamente .Para saber em qual partição o usuário inicializou, consulte o menu do carregador de inicialização antes de inicializar qualquer um dos sistemas instalados. É difícil dizer sem ver o menu do gerenciador de inicialização.
Para onde olhar
Nas capturas de tela combinadas a seguir, identifiquei três dicas que podemos saber em qual partição o usuário inicializou.
A dica mais aparente é a etiqueta (3), que é alterar a imagem de plano de fundo do GNU GRUB no sistema que tem controle do menu do gerenciador de inicialização. É o mais fácil de dizer, desde que o usuário o configure com antecedência.
Etiqueta (1) explicada
Procure a partição que não está listada nas entradas de menu abaixo da primeira entrada. Na captura de tela, existem apenas dois sistemas operacionais sendo instalados, por exemplo, "Ubuntu" e "Ubuntu 14.04.5 LTS".
O último mencionou
(on /dev/sda3)
, o que significa que o primeiro pode estar localizado em/dev/sda2
ou/dev/sda1
. Para ter certeza, depois de inicializar o sistema, por exemplo, "Ubuntu", execute o comando relevante para listar as partições disponíveis (lsblk
parece ser o mais direto).Somente após a comparação com a saída de
lsblk
, sabemos que o sistema, por exemplo, "Ubuntu", é encontrado em/dev/sda2
(que não estava listado nas entradas do menu) a partir do qual o menu do gerenciador de inicialização é gerenciado.Etiqueta (2) explicada
Procure a versão GRUB impressa na parte superior do menu do gerenciador de inicialização. Observe essa versão e compare com a versão GRUB encontrada no sistema inicializado, ou seja, "Ubuntu".
Na captura de tela (metade inferior):
GNU GRUB version 2.02~beta2-9
Após inicializar o sistema, por exemplo, "Ubuntu", execute o comando relevante para verificar a versão do pacote GRUB (
grub-install --version
é relevante e mais direto).Como isso é relevante? Porque
grub-install
eupdate-grub
comandos são fornecidos pelo mesmo pacotegrub2-common
. Como o menu do carregador de inicialização é criado e atualizado usando ferramentas do mesmo pacote, a versão impressa na parte superior do menu do carregador de inicialização será a mesma.Etiqueta (3) explicada
Essa dica precisa ser configurada manualmente, pois a imagem de plano de fundo padrão do menu do carregador de inicialização não é nenhuma (apenas preto). A imagem de fundo deve ter profundidade de 8 bits.
Se o
desktop-base
pacote estiver instalado no seu sistema, essas imagens de plano de fundo criadas especialmente para o GRUB serão prontamente encontradas com o sufixo do nome do arquivo*grub.png
no diretório de destino.Para configurar a imagem de fundo:
Abra o
/etc/default/grub
arquivo como superusuário e adicione a linhaGRUB_BACKGROUND=
com o caminho completo à imagem escolhida e citada.Em seguida, execute
sudo update-grub
a atualização/boot/grub/grub.cfg
que inclui o menu do carregador de inicialização. O usuário verá uma saída semelhante à seguinte.Reinicie a máquina e veja se o menu do carregador de inicialização teve alguma alteração visível feita pelo comando update do sistema.
Senão, repita as etapas para outros sistemas, um de cada vez. As etapas repetidas seriam desnecessárias, caso o usuário estivesse ciente de qual sistema tinha controle sobre o menu do carregador de inicialização (novamente, isso depende de como a instalação foi feita).
aviso Legal
Esta resposta explica os critérios comprovados e bem testados para o sistema BIOS com configuração de inicialização múltipla usando a versão GNU GRUB PC / BIOS. As seguintes exceções serão aplicadas.
Para homólogo sistema UEFI usando a versão GNU GRUB EFI, é não garantido ou não sabe se os critérios que parece ser o mesmo como descrito acima.
Ênfase é dada à aparência do menu do gerenciador de inicialização (como pode parecer diferente, por exemplo, a metade superior da captura de tela), em vez de demonstrar como o carregamento em cadeia funciona. Como tal, o "como a inicialização múltipla foi configurada como visto na captura de tela" não seria explicado nesta resposta.
Se a configuração de inicialização múltipla for feita exatamente das mesmas cópias de um sistema operacional semelhante, por exemplo, Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04, etc., a única maneira confiável de saber em qual partição o usuário inicializou é o label (3).
O rótulo (3) pode funcionar melhor usando a imagem de plano de fundo personalizada que grava explicitamente a partir da qual é inicializada, ou seja, "Este menu de inicialização é gerenciado a partir de / dev / sda1". Da mesma forma, sobre "como criar uma imagem de plano de fundo personalizada para o GRUB" não seria explicado nesta resposta.
TL; DR Veja o menu do carregador de inicialização antes de inicializar qualquer um dos sistemas instalados. A maneira mais fácil e confiável de saber é o label (3), que é configurar a imagem de plano de fundo do GRUB manualmente.
fonte