Apresentando GRUB, o GRUB 2.
Saiba como escolher e configurar um gerenciador de boot para seu sistema Linux®. Você pode usar o material neste tutorial para estudar para o exame LPI 101 para certificação de administrador de sistema Linux, ou para aprender para se divertir.
Visão geral
Neste tutorial, aprenda a escolher, instalar e configurar um gerenciador de inicialização para um sistema Linux. Aprenda a:
- Fornecer locais de arranque alternativas e opções de inicialização de backup
- Instalar e configurar um gerenciador de inicialização como o GRUB Legacy
- Realizar mudanças de configuração básica para o GRUB 2
- Interagir com o gerenciador de inicialização
Gestores de arranque
Um carregador de inicialização ou gerenciador de inicialização é a peça intermediária de código que ajuda o hardware e firmware de seu sistema de carregar um sistema operacional para você. Este tutorial discute o processo de inicialização do PC e os três principais gerenciadores de inicialização que são usados em Linux: o GRUB, o GRUB 2, e LILO com discos MBR formatado. O GRUB original, agora chamado GRUB-Legacy, não está mais em desenvolvimento ativo e tem sido amplamente substituído pelo GRUB 2. Mesmo distribuições comerciais, como Red Hat Enterprise Linux e SUSE Linux Enterprise Server mudou para GRUB 2 em 2014. Desenvolvimento de Lilo está programado para cessar no final de 2015.
Este tutorial ajuda você a preparar para o Objetivo 102.2 no Tópico 102 do Linux Professional Server exame (LPIC-1) 101. O objetivo tem um peso de 2. LILO não é mais necessário para LPIC-1. Ele é incluído aqui para que você saiba algo sobre isso.
Pré-requisitos
Para obter o máximo a partir dos tutoriais nesta série, você deve ter um conhecimento básico de Linux e um sistema Linux funcional em que seja possível praticar os comandos abordados. Você também deve estar familiarizado com layout de disco rígido conforme discutido no tutorial “Aprenda Linux 101:. Layout do disco rígido” Às vezes, versões diferentes de determinado programa formatem a saída de modo diferente, para que seus resultados nem sempre exatamente iguais às listas e figuras exibidas aqui.
Note: As imagens neste tutorial são capturas de tela tomadas desde o início do processo de inicialização. Se você está lendo este tutorial usando um leitor de tela, você pode achar que é vantajoso ter os arquivos de configuração correspondentes disponíveis para referência; baixá-los a partir da seção Download, mais adiante neste tutorial.
Visão geral do processo de inicialização
Antes de eu entrar em carregadores de inicialização específicos, vamos rever como um PC tradicional começa ou botas. Código chamado de BIOS (Basic Input Serviço para Output) é armazenado na memória não-volátil, como uma ROM, EEPROM, ou memória flash. Quando o PC é ligado ou reiniciado, esse código é executado. Normalmente, ele executa um auto-teste power-on (POST) para verificar a máquina. Finalmente, ele carrega o primeiro setor a partir do registro mestre de inicialização (MBR) na unidade de inicialização.
Conforme discutido no tutorial “Aprenda Linux 101: Layout do disco rígido“, o MBR também contém a tabela de partição, por isso a quantidade de código executável no MBR é menor que 512 bytes, que não é muito código. Cada disco, até um disquete, contém código executável em seu MBR, mesmo que o código é apenas o suficiente para colocar para fora uma mensagem como “disco não-inicializável na unidade A:”. Este código que é carregado pelo BIOS a partir deste primeiro setor é chamado o primeiro carregador de inicialização estágio ou o estágio 1 carregador de boot.
O MBR disco rígido padrão utilizado pelo MS DOS, PC DOS e Windows sistemas operacionais verifica a tabela de partição para encontrar uma partição primária na unidade de inicialização que está marcado como ativo, carrega o primeiro setor a partir dessa partição, e passa o controle para o início do código carregado. Este novo pedaço de código também é conhecido como o registro de inicialização de partição. O registro de inicialização de partição é, na verdade, mais uma etapa 1 carregador de inicialização, mas esta tem inteligência suficiente para carregar um conjunto de blocos a partir da partição. O código neste novo conjunto de blocos é chamado o estágio 2 do carregador de inicialização. Como usado pelo MS-DOS e PC-DOS, o carregador de fase 2 procede diretamente para carregar o resto do sistema operacional. Esta é a forma como o seu sistema operacional puxa-se para cima por suas bootstraps até que ele esteja pronto e funcionando.
Isso funciona bem para um sistema com um único sistema operacional. O que acontece se você quiser vários sistemas operacionais, dizer / 2, Windows XP e três distribuições Linux diferentes sistemas operacionais? Você pode usar algum programa (como o programa DOS FDISK) para alterar a partição ativa e reinicie. Isto é complicado. Além disso, um disco pode ter apenas quatro partições primárias, eo padrão MBR pode ter apenas uma partição primária ativa; ele não pode iniciar a partir de uma partição lógica. Mas o nosso exemplo hipotético citou cinco sistemas operacionais, cada uma das quais precisa de uma partição. Ops!
A solução reside na utilização de um código especial que permite ao usuário escolher qual sistema operacional para arrancar. Os exemplos incluem:
- Loadlin
- Um programa executável DOS que é chamado a partir de um sistema DOS correndo para inicializar uma partição Linux. Este era popular quando a criação de um sistema de inicialização múltipla foi um processo complexo e arriscado.
- OS/2 Boot Manager
- Um programa que é instalado em uma pequena partição dedicada. A partição é marcada como ativa, eo processo de boot padrão MBR inicia o Gerenciador de OS / 2 Boot, que apresenta um menu onde você pode escolher qual sistema operacional para inicializar.
- Um carregador de inicialização inteligente
- Um programa que pode residir em uma partição do sistema operacional e é invocado quer pelo registro de inicialização de partição de uma partição ativa ou pelo registro mestre de inicialização. Os exemplos incluem:
- BootMagic, parte de Norton PartitionMagic
- LILO, o LInux LOader
- GRUB, o Grand Unified Boot Loader (agora referido como GRUB Legacy)
- GRUB 2, um carregador de inicialização mais recente que agora é usado em muitas distribuições comuns
- Syslinux, um grupo de carregadores leves de boot para sistemas de arquivos MS-DOS FAT (SYSLINUX), inicialização via rede (PXELINUX), arranque “El Torito” CD-ROMs (Isolinux), e Linux ext2 / ext3 / ext4 ou btrfs sistemas de arquivos (EXTLINUX)
Evidentemente, se você pode passar o controle do sistema de algum programa que tenha mais de 512 bytes de código para realizar sua tarefa, então não é muito difícil para permitir a inicialização a partir de partições lógicas, ou arrancar a partir de partições que não estão na inicialização conduzir. Todas essas soluções permitem que essas possibilidades, seja porque eles podem carregar um registro de inicialização de uma partição arbitrária, ou porque eles têm alguma compreensão do que arquivo ou arquivos para carregar para iniciar o processo de inicialização.
Corrente de carga
Quando um gerenciador de inicialização obtém controle, uma coisa que ele pode carregar é outro gerenciador de boot. Isso é chamado de carregamento em cadeia, e mais frequentemente ocorre quando o gerenciador de inicialização que está localizado no registro mestre de inicialização (MBR) carrega o carregador de inicialização que está em um registro de inicialização de partição. Isso é quase sempre feito quando um carregador de boot do Linux é convidado a iniciar uma partição de Windows ou DOS, mas também pode ser feito quando o carregador de boot do Linux para um sistema Linux (dizer Fedora) é configurado para carregar o gerenciador de inicialização para outro sistema Linux (dizer Ubuntu). Por exemplo, você pode usar o GRUB em uma partição para iniciar o GRUB no registo de arranque de outra partição para iniciar o sistema Linux nessa partição. Este não é comum, mas que ilustra as possibilidades.
Carregadores de inicialização do Linux
Este tutorial se concentra em GRUB, o GRUB 2, e LILO, porque estes são o boot carregadeiras incluído na maioria das distribuições Linux. LILO tem sido em torno de algum tempo. GRUB é mais recente. O original do GRUB, tornou-se agora o GRUB Legacy e GRUB 2 está sendo desenvolvido sob os auspícios da Fundação do Software Livre (consulte Recursos para obter detalhes). Este tutorial discute o GRUB em primeiro lugar, e, em seguida, o GRUB 2, de modo que você tem alguma idéia das principais diferenças e como GRUB e GRUB 2 podem coexistir. Para o restante deste tutorial, assumimos GRUB significa GRUB Legacy, a menos que o contexto implica especificamente GRUB 2. Uma nova versão do LILO chamado ELILO (que é projetado para sistemas que usam da Intel Extensible Firmware Interface, ou EFI boot, ao invés de BIOS) é também disponível. Consulte Recursos para obter informações adicionais sobre ELILO.
Como observado anteriormente, GRUB Legacy não está mais em desenvolvimento ativo e desenvolvimento LILO está programado para terminar no final de 2015. A maioria dos sistemas Linux em 2015 estão enviando com GRUB 2 como padrão, ou por vezes, apenas carregador de boot.
O processo de instalação para a sua distribuição pode dar-lhe uma escolha de qual carregador de inicialização para configurar. GRUB, o GRUB 2, e LILO todos os trabalhos com a maioria dos discos modernos, apesar de algumas distribuições, nomeadamente Fedora, não mais enviar o LILO ou GRUB Legacy. Lembre-se que a tecnologia de disco tem avançado rapidamente, assim que você deve sempre se certificar de que o seu carregador de inicialização escolhido, bem como a sua distribuição Linux escolhido (ou outro sistema operacional), bem como o BIOS do sistema, irá trabalhar com o seu novo disco brilhante. Não fazer isso pode resultar em perda de dados. Da mesma forma, se você está adicionando uma nova distribuição para um sistema existente, você pode precisar para se certificar de que você tem a última LILO, GRUB, ou GRUB 2 no seu MBR. Você também precisa de uma versão relativamente recente de seu gerenciador de inicialização se você pretende iniciar a partir de um disco LVM e RAID.
Com o estágio 2 carregadoras usados em LILO e o GRUB, você pode escolher entre vários sistemas operacionais ou versões para carregar. No entanto, o LILO e o GRUB diferem significativamente em que uma mudança para o sistema exige que você use um comando para recriar a configuração de inicialização do LILO sempre que você atualizar um kernel ou fazer algumas outras mudanças no seu sistema, enquanto o GRUB pode fazer isso através de um arquivo de texto de configuração que você pode editar. GRUB 2 também requer uma reconstrução a partir de um arquivo de configuração que é normalmente armazenado em / etc.
GRUB
GRUB, ou o Grand Unified Boot Loader, foi durante muito tempo um dos carregadores de inicialização mais comuns do Linux. Você pode instalar o GRUB no MBR de seu disco de boot ou no registro de inicialização de partição de uma partição. Você também pode instalá-lo em dispositivos removíveis, como disquetes, CDs ou chaves USB. É uma boa ideia para a prática em uma chave USB de disquete ou disco se você não estiver familiarizado com o GRUB. Os exemplos neste tutorial mostrar-lhe como.
Nota: A maioria dos exemplos do GRUB neste tutorial usa CentOS 6.
Durante a instalação do Linux, muitas vezes você especificar sua escolha de gerenciador de inicialização. Se você escolher o LILO, então você não pode ter o GRUB instalado. Se você não tem o GRUB instalado e está disponível para a sua distribuição, então você precisa instalar o pacote para ele. Este tutorial assume que você já tem o pacote GRUB instalado. Veja o roteiro da série para os tutoriais sobre gerenciamento de pacotes, se você precisar de ajuda com isso.
GRUB (Legado) tem um arquivo de configuração que normalmente é armazenado em /boot/grub/grub.conf. Se o seu sistema de arquivos suporta links simbólicos, como a maioria dos sistemas de arquivos Linux faz, você provavelmente já /boot/grub/menu.lst como um link simbólico para /boot/grub/grub.conf.
O comando grub
(/ sbin / grub, ou, em alguns sistemas, / usr / sbin / grub) é uma concha pequena, mas razoavelmente poderoso que aceita vários comandos para instalar o GRUB, sistemas de inicialização, localizar e visualizar arquivos de configuração e tarefas semelhantes. Este partes do escudo muito código com a segunda fase GRUB boot loader, por isso é útil para aprender sobre o GRUB, sem ter que arrancar para um ambiente segunda etapa GRUB. O estágio GRUB 2 é executado em modo de menu, de modo que você pode escolher um sistema operacional a partir de um menu, ou no modo de comando, onde você especificar comandos individuais para carregar um sistema. Há também vários outros comandos, como o grub-install
que usam o shell grub e ajudam a automatizar tarefas como instalação de GRUB.
A Listagem 1 mostra um arquivo de configuração do GRUB bastante complexo. Como você olhar através dele, lembro de uma coisa importante: o GRUB, pelo menos GRUB Legacy, conta discos, partições e as coisas que precisam ser contadas, começando em 0 em vez de 1. A segunda entrada para o CentOS tem uma linha kernel que é muito grandes. A Listagem 1 mostra-o com uma barra invertida (\) que indica onde ele foi quebrado para publicação.
Listagem 1. /boot/grub/menu.lst exemplo de configuração do GRUB
# grub.conf generated by anaconda # # You do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # all kernel and initrd paths are relative to /, eg. # root (hd0,5) # kernel /boot/vmlinuz-version ro root=/dev/hda6 # initrd /boot/initrd-version.img #boot=/dev/hda default=0 timeout=60 splashimage=(hd0,0)/boot/grub/splash.xpm.gz #password --md5 $1$y.uQRs1W$Sqs30hDB3GtE957PoiDWO. title Fedora 22 64-bit (sda5) root (hd0,4) kernel /boot/grub2/i386-pc/core.img title Fedora 18 64-bit (sda7) root (hd0,6) kernel /boot/grub2/i386-pc/core.img title CentOS 6 64-bit (sda11) root (hd0,10) configfile /boot/grub/menu.lst title CentOS (2.6.32-504.23.4.el6.x86_64) root (hd0,10) kernel /boot/vmlinuz-2.6.32-504.23.4.el6.x86_64 ro \ root=UUID=2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2 rd_NO_LUKS rd_NO_LVM \ LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M \ KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /boot/initramfs-2.6.32-504.23.4.el6.x86_64.img title Fedora 20 64-bit (sda10) root (hd0,9) configfile /boot/grub/menu.lst title Ubuntu 12.04-LTS 64-bit (sda9) root (hd0,8) kernel /boot/grub/core.img title Ubuntu 14.04 32-bit (sda12) root (hd0,11) kernel /boot/grub/core.img title Slackware 13.37 64-bit (sda6) root (hd0,5) chainloader +1 boot title Open SUSE 11.4 64-bit (sda8) root (hd0,7) configfile /boot/grub/menu.lst title Windows Example rootnoverify (hd0,0) chainloader +1 #####
O primeiro conjunto de opções na Listagem 1 de controle como o GRUB funciona. Para GRUB, estes são chamados de comandos de menu, e eles devem aparecer antes de outros comandos. As restantes secções dar opções por imagem para os sistemas operacionais que você deseja permitir o GRUB para inicializar. “Título” é considerado um comando de menu. Cada instância do título é seguida por um ou mais comandos gerais ou do menu de entrada.
Os comandos de menu que se aplicam a todas as outras seções na Listagem 1 são:
- #
- Qualquer linha que começa com uma
- default
- Especifica que o sistema para carregar se o usuário não faz uma escolha dentro de um tempo limite. Na Listagem 1, padrão = 0 significa para carregar a primeira entrada. Lembre-se que a contagem do GRUB a partir de 0 ao invés de 1. Se não for especificado, o padrão é para arrancar a primeira entrada, entrada de número 0.
- timeout
- Especifica um tempo limite em segundos antes de inicializar a entrada padrão. Note-se que o LILO usa décimos de segundo para o tempo limite, enquanto o GRUB utiliza segundos inteiros.
- splashimage
- Especifica o fundo, ou respingo, imagem a ser exibida com o menu de inicialização. GRUB Legacy refere-se ao primeiro disco rígido como (hd0) ea primeira partição neste disco como (hd0,0), de modo a especificação de splashimage = (hd0,0) /boot/grub/splash.xpm.gz significa usar /boot/grub/splash.xpm.gz o arquivo localizado na partição 1 do primeiro disco rígido. Lembre-se de contar a partir de 0. A imagem é um arquivo XPM compactado com gzip. Suporte para splashimage é um patch que pode ou não ser incluído na sua distribuição.
- password
- Especifica uma senha que você deve digitar antes que você possa desbloquear o menu e quer editar uma linha de configuração ou entrar comandos do GRUB. A senha pode ser em texto claro. GRUB também permite que as senhas sejam armazenadas como um MD5, como no exemplo comentado na Listagem 1. Isso é um pouco mais seguro, ea maioria dos administradores de definir uma senha. Sem uma senha, você tem acesso completo à linha de comando do GRUB.
A Listagem 1 mostra um kernel CentOS, /boot/vmlinuz-2.6.32-504.23.4.el6.x86_64, em / dev / sda11 (hd0,10), além de vários sistemas que estão configurados para carga cadeia. Listagem 1 também tem exemplos de carregamento GRUB 2 via /boot/grub2/i386-pc/core.img e um exemplo de uma entrada de corrente de carregamento típico Windows XP, embora este sistema realmente não têm o Windows instalado. Os comandos usados nestas seções são:
- title
- É um título descritivo que é apresentado como o item de menu quando o GRUB. Você usa as teclas de setas para mover para cima e para baixo através da lista de títulos e, em seguida, pressione Enter para selecionar uma entrada específica.
- root
- Especifica a partição que será inicializada. Tal como acontece com splashimage, lembre-se que a contagem começa em 0, de modo que o primeiro sistema Red Hat que é especificado como root (hd0,6) é, na verdade, na partição 7 da primeira unidade de disco rígido (/ dev / hda7 neste caso), enquanto o primeiro sistema Ubuntu, que é especificado como root (hd1,10), está no segundo disco rígido (/ dev / hdb11). GRUB tenta montar esta partição para verificá-lo e fornecer valores para o sistema operacional inicializado em alguns casos.
- kernel
- Especifica a imagem do kernel a ser carregado e todos os parâmetros do kernel necessários. Um valor do kernel como /boot/grub2/i386-pc/core.img geralmente significa carregar um carregador de boot GRUB 2 a partir da partição raiz nomeado.
- initrd
- É o nome do disco RAM inicial, que contém módulos necessários ao kernel antes de seus sistemas de arquivos são montados.
- savedefault
- Não é utilizado neste exemplo. Se o comando de menu
default=saved
é especificado e o comandosavedefault
é especificado para um sistema operacional, em seguida, que a inicialização do sistema operacional faz com que ele se torne o padrão até que outro sistema operacional comsavedefault
especificado é inicializado. Na Listagem 1, a especificação do defaut=0 substitui qualquer salvou padrão. - boot
- É um parâmetro opcional que instrui o GRUB para inicializar o sistema operacional selecionado. Esta é a ação padrão quando todos os comandos para uma seleção foram processadas.
- lock
- Não é usado na Listagem 1. Isso não inicializa a entrada especificada até que uma senha seja digitada. Se você usar isso, então você também deve especificar uma senha nas opções iniciais; Caso contrário, um usuário pode editar a sua opção de bloqueio e inicializar o sistema ou adicionar “single” para uma das outras entradas. É possível especificar uma senha diferente para entradas individuais, se quiser.
- rootnoverify
- É semelhante a raiz, exceto que o GRUB não tenta montar o sistema de arquivos ou verificar seus parâmetros. Isso geralmente é usado para sistemas de arquivos, como NTFS que não são suportados pelo GRUB. Você também pode usar este se você quer o GRUB para carregar o registro mestre de inicialização em um disco rígido (por exemplo, para acessar um arquivo de configuração diferente ou para recarregar seu carregador de inicialização anterior).
- chainloader
- Especifica que outro arquivo será carregado como um arquivo de estágio 1. O valor “1” é equivalente a 1 0, o que significa que para carregar um sector inicial no setor 0; ou seja, carregar o primeiro setor do dispositivo especificado pela raiz ou rootnoverify.
- configfile
- Especifica que a cópia em execução do GRUB substitui seu arquivo de configuração com um carregado a partir do local de destino. Para que isso funcione, é aconselhável que a versão do GRUB que está carregando o novo configfile é tão atual quanto a versão que o construiu.
Agora você tem alguma ideia do que você pode encontrar em um arquivo /boot/grub/grub.conf típico (ou /boot/grub/menu.lst). Há muitos outros comandos do GRUB para fornecer amplo controle sobre o processo de inicialização, bem como ajudar com a instalação do GRUB e outras tarefas. Você pode aprender mais sobre estes no manual do GRUB, que deverá estar disponível no seu sistema através do comando info grub
.
Antes de aprender a lidar com tal um grande arquivo de configuração do GRUB, vamos cair de volta para um exemplo menor e mais simples. Eu uso o arquivo que CentOS 6 construído para mim quando eu instalei ele em / dev / sda11. Isso é mostrado na Listagem 2. Mais uma vez, temos usado uma barra invertida (\) para mostrar onde nós quebramos fileiras de grãos longos para a publicação.
Listagem 2. configuração do GRUB básico construído pela CentOS 6
# grub.conf generated by anaconda # # You do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # all kernel and initrd paths are relative to /, eg. # root (hd0,10) # kernel /boot/vmlinuz-version ro root=/dev/sdd11 # initrd /boot/initrd-[generic-]version.img #boot=/dev/sdd11 default=0 timeout=5 splashimage=(hd0,10)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32-504.23.4.el6.x86_64) root (hd0,10) kernel /boot/vmlinuz-2.6.32-504.23.4.el6.x86_64 ro \ root=UUID=2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2 rd_NO_LUKS rd_NO_LVM \ LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M \ KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /boot/initramfs-2.6.32-504.23.4.el6.x86_64.img title CentOS 6 (2.6.32-504.el6.x86_64) root (hd0,10) kernel /boot/vmlinuz-2.6.32-504.el6.x86_64 ro \ root=UUID=2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2 rd_NO_LUKS rd_NO_LVM \ LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M \ KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /boot/initramfs-2.6.32-504.el6.x86_64.img title Other rootnoverify (hd0,0) chainloader +1
Observe o comando hiddenmenu
que você não viu antes. Isso faz com que o GRUB para não exibir um menu, mas sim inicializar a entrada padrão assim que o tempo limite expirar. No nosso caso, isso significa que a primeira entrada (default = 0) será inicializado em 5 segundos (tempo limite = 5). Se você pressionar Enter durante este tempo, o menu será exibido.
Uma vez que você tem um arquivo de configuração do GRUB, você precisa instalá-lo, ou, de preferência testá-lo. Eu vou mostrar-lhe como fazer a instalação primeiro e depois mostrar-lhe como testá-lo usando uma unidade de disquete (se você ainda tem um) ou um CD.
Vou instalar o GRUB no registo de arranque da partição contendo o meu distribuição CentOS. Eu uso o comando grub-install
e especificar o dispositivo onde o 512-byte stage1 do carregador de inicialização deve ir. No meu exemplo, isso é / dev / sda11 ou (hd0,10) utilizando a notação GRUB. Consulte a Listagem 3. Você precisa ter autoridade root para gravar o registro de inicialização de partição. Se você tiver adicionado ou suprimido dispositivos que você pode ter que remover seu arquivo /boot/grub/device.map e permitir que o grub-install
para reconstruir é como mostrado em nosso exemplo. Isso não vai acontecer muitas vezes, mas se o grub-install
joga algum erro estranho que você não entende, você pode encontrar o arquivo device.map exclusão útil.
Listagem 3. Instale GRUB Legacy em um registro de inicialização de partição
[root@attic4-cent ~]# rm /boot/grub/device.map rm: remove regular file `/boot/grub/device.map'? y [root@attic4-cent ~]# grub-install /dev/sda11 Probing devices to guess BIOS drives. This might take a long time. Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (fd0) /dev/fd0 (hd0) /dev/sda (hd1) /dev/sdb (hd2) /dev/sdc (hd3) /dev/sdd
Como você já aprendeu o padrão MBR DOS não pode inicializar uma partição lógica, então você precisa de algo mais para obter este sistema inicializado. Uma opção seria a de instalar o GRUB no MBR, fazendo o grub-install /dev/sda
, o que também instalar o GRUB no MBR do nosso disco (/ dev / sda). Eu também vou mostrar-lhe como fazê-lo com o GRUB 2 em um momento, mas antes de se comprometer com qualquer passo abordagem, você pode querer testar a sua instalação usando um CD de boot GRUB.
Construindo um CD de recuperação inicializável GRUB
Antes de reiniciar seu novo sistema brilhante, pode ser uma boa ideia para construir um CD de boot GRUB. Primeiro, você preparar uma imagem de CD no seu disco rígido. Você precisa de um diretório temporário, dizer grubcd, com subdiretórios de inicialização e boot / grub. Em seguida, você precisa copiar o arquivo stage2_eltorito de seus arquivos de distribuição do GRUB para o subdiretório grub que você acabou de criar. Em seguida, use genisoimage para criar um arquivo de imagem .iso inicializável que você pode gravar em CD com a sua ferramenta de gravação favorita. A Listagem 4 mostra como criar a imagem CD como grubcd.iso. Você não precisa de autoridade root para fazer isso. Nossa stage2_eltorito está em / usr / share / grub / x86_64-redhat. Este local pode ser diferente em outros sistemas, em particular um sistema de 32 bits. Ou, você pode encontrá-lo em / usr / lib / grub. Você pode ser capaz de localizá-lo usando o comando localizar, também ilustrado na Listagem 4.
Listagem 4. Criando uma imagem do CD de boot GRUB
[ian@attic4-cent ~]$ mkdir mkdir -p grubcd/boot/grub [ian@attic4-cent ~]$ ls /usr/share/grub/ x86_64-redhat [ian@attic4-cent ~]$ ls /usr/share/grub/x86_64-redhat/stage2_eltorito /usr/share/grub/x86_64-redhat/stage2_eltorito [ian@attic4-cent ~]$ locate stage2_eltorito /usr/share/grub/x86_64-redhat/stage2_eltorito [ian@attic4-cent ~]$ cp /usr/share/grub/x86_64-redhat/stage2_eltorito grubcd/boot/grub [ian@attic4-cent ~]$ genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot \ > -boot-load-size 4 -boot-info-table -o grubcd.iso grubcd I: -input-charset not specified, using utf-8 (detected in locale settings) Size of boot image is 4 sectors -> No emulation Total translation table size: 2048 Total rockridge attributes bytes: 760 Total directory bytes: 4576 Path table size(bytes): 34 Max brk space used 22000 241 extents written (0 MB)
Você pode iniciar este CD em um PC arbitrária; ele não tem que ser um com um sistema Linux nele. Se você inicializar o CD, ele irá carregar o shell do GRUB a partir do CD. Quando você inicializa, você recebe um aviso de boot GRUB. Pressione a tecla Tab ou usar o comando help para ver uma lista de comandos disponíveis para você. Tente help commandname
para obter ajuda sobre o comando chamado commandname
.
Uma última coisa antes de reiniciar com o CD: Você pode praticar alguns dos comandos do GRUB que estão disponíveis no shell do GRUB a partir de sua linha de comando do Linux. A Listagem 5 ilustra o comando grub e alguns dos comandos disponíveis, incluindo a capacidade de exibir o menu e ver que é o que você quer. Alguns comandos, como encontrar, precisa de autoridade raiz, por isso o meu exemplo usa isso. Observe também que quando você tentar carregar a primeira entrada de configuração pressionando Enter, falhas do GRUB com uma falha de segmentação. Lembre-se que você pode praticar alguns dos comandos shell do GRUB a partir da linha de comando Bash, mas não todos. Cima e para baixo teclas de seta pode não funcionar. Mais uma vez, uma linha kernel longo é dividido usando \.
Listagem 5. A linha de comando do GRUB
[root@attic4-cent ~]# grub Probing devices to guess BIOS drives. This might take a long time. GNU GRUB version 0.97 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.] grub> help rootnoverify help rootnoverify rootnoverify: rootnoverify [DEVICE [HDBIAS]] Similar to `root', but don't attempt to mount the partition. This is useful for when an OS is outside of the area of the disk that GRUB can read, but setting the correct root device is still desired. The items mentioned in `root' which derived from attempting the mount will NOT work correctly. grub> find /boot/grub/menu.lst find /boot/grub/menu.lst (hd0,0) (hd0,7) (hd0,10) grub> configfile (hd0,10)/boot/grub/menu.lst configfile (hd0,10)/boot/grub/menu.lst Press any key to enter the menu GNU GRUB version 0.97 (640K lower / 3072K upper memory) ------------------------------------------------------------------- 0: CentOS (2.6.32-504.23.4.el6.x86_64) 1: CentOS 6 (2.6.32-504.el6.x86_64) 2: Other ------------------------------------------------------------------- Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, 'a' to modify the kernel arguments before booting, or 'c' for a command-line. The selected entry is 0 Highlighted entry is 0: Booting 'CentOS (2.6.32-504.23.4.el6.x86_64)' root (hd0,10) Filesystem type is ext2fs, partition type 0x83 kernel /boot/vmlinuz-2.6.32-504.23.4.el6.x86_64 ro \ root=UUID=2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2 rd_NO_LUKS rd_NO_LVM \ LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M \ KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet [Linux-bzImage, setup=0x3400, size=0x3f2790] Segmentation fault (core dumped)
Neste exemplo, existem arquivos de configuração do GRUB em três partições diferentes no primeiro disco rígido, incluindo o que se construiu para CentOS em (hd0,10) ou / dev / sda11. Listagem 5 cargas O menu GRUB a partir de (hd0,10) usando o comando configfile
.
Você pode explorar esses comandos grub no manual do GRUB. Tente digitar info grub
em uma janela de terminal Linux para abrir o manual.
Se você ainda tiver um disquete, você pode instalar o GRUB em um disquete usando um comando como:
grub-install /dev/fd0
onde / dev / fd0 corresponde à sua unidade de disquete. Você deve desmontar o disquete antes de instalar o GRUB nele.
Inicializando com o GRUB legacy
Agora você está pronto para reiniciar o sistema usando o CD GRUB que você acabou de construir. Se o seu BIOS não está configurado para arrancar automaticamente a partir de um CD ou DVD se estiver presente, então você pode precisar pressionar alguns chave específica do sistema (F8 na minha BIOS) para escolher um dispositivo de arranque que não seja a sua unidade de disco rígido. As botas CD para um prompt do GRUB como mostrado na Figura 1.
Figura 1. Iniciando seu CD GRUB
Neste exemplo, eu usei o comando find
para encontrar arquivos de configuração do GRUB chamado menu.lst e encontrou 3, incluindo o meu arquivo de configuração do GRUB CentOS no dispositivo (hd0,10) ou / dev / sda11. Então, usei o comando de root
para definir) hd0,10) como a raiz para outras operações de arquivo. Eu instalei o GRUB no registo de arranque de partição (hd0,10), então eu uso o comando chainloader
para dizer o que quer grub para inicializar carregador de inicialização está no primeiro setor (hd0,10). Finalmente, use o boot
comando para inicializar esse novo loader (GRUB novamente no nosso caso). O resultado é mostrado na Figura 2
Figura 2. O menu CentOS Grub
Neste caso pressione Enter para ver o menu. Caso contrário, a opção hiddenmenu
simplesmente exibe a linha que está sendo inicializado e um temporizador de contagem regressiva.
Edição no shell do GRUB
Agora, eu mostrar-lhe como usar o shell do GRUB para editar a configuração. Para este efeito, você irá arrancar em modo de usuário único, mas você pode alterar qualquer uma das linhas ou até mesmo adicionar ou excluir linhas inteiras de configuração se necessário. Por exemplo, você pode adicionar uma linha completa de raiz se você tinha esquecido. Você pressiona e para editar a configuração, em seguida, usar a seta para baixo para destacar a linha kernel. O resultado é mostrado na Figura 3.
Figura 3. Edição da linha kernel
Prima e novamente e digite a palavra single
no final da linha, como mostrado na Figura 4.
Figura 4. Edição da linha kernel
Por fim, pressione Enter para voltar à tela que você viu na Figura 2, em seguida b para inicializar CentOS em modo de usuário único. Quando o sistema é inicializado, você terá um prompt de root. Você pode usar este modo para fazer reparos de emergência para um sistema que não inicializa normalmente.
Neste ponto, você pode repetir o processo anterior para inicializar no modo gráfico normal ou modo de tudo o que você tinha configurar o seu sistema para inicializar. Se você queria GRUB para controlar toda a inicialização do sistema, você deve fazer agora
grub-install /dev/sda
para instalar o GRUB no MBR de / dev / sda. Você vai ver outras formas de gerir o seu arranque como prosseguir com este tutorial.
GRUB 2
GRUB 2 é o sucessor do GRUB. Ele foi reescrito do zero para torná-lo muito mais modular e portátil. Destina-se às diferentes arquiteturas e métodos de arranque e tem muitas novas funcionalidades, incluindo a capacidade de lidar com firmware UEFI e discos GPT formatado. Consulte Recursos para obter links para mais informações. Se você estiver familiarizado com o GRUB e começar a usar o GRUB 2, você vai achar que é completamente diferente e você provavelmente terá muitas surpresas.
Nota: A maioria do GRUB 2 exemplos deste tutorial usar o Fedora 22 ou 15 Ubuntu.
A primeira coisa que você pode notar sobre o GRUB 2 é que ele não instala como um gerenciador de inicialização partição. Se você disser a um instalador Linux para instalar o GRUB em uma partição, essa partição não é inicializável por carregamento em cadeia. GRUB 2 deve ser reconstruído quando você atualizar seu sistema. A maioria dos processos de atualização do sistema lidar com isso para você, mas se você tiver vários sistemas operacionais em um sistema, você provavelmente tem que fazer algum trabalho sozinho. Agora, eu mostrar-lhe como usar o GRUB 2, isoladamente ou em conjunto com o GRUB Legacy.
Os GRUB 2 pacotes contêm vários programas, normalmente em / usr / bin ou / usr / sbin. O nome do pacote real mudou ao longo do tempo e não é o mesmo para todas as distribuições. Os binários também têm nomes que normalmente começam com grub- ou grub2-. Por exemplo, no Ubuntu 14, você vai encontrar-grub-image
fornecida pelo pacote grub-comum, enquanto no Fedora 22, você vai encontrar-grub2-mkimage
fornecida pelo pacote grub2-tools. Veja Aprenda Linux, 101: gerenciamento de pacotes Debian e Aprenda Linux, 101: RPM e gerenciamento de pacotes YUM para ajuda em descobrir qual pacote contém um comando particular. A Listagem 6 mostra os binários GRUB em um sistema Ubuntu 14.04. Como de costume, consultar as páginas man ou tente executar os programas com a opção --help
para obter mais informações. Você pode precisar pesquisar na Internet para obter ajuda adicional. Esteja preparado para inconsistência na documentação quando as coisas mudam tão rápido.
Listagem 6. GRUB 2 executáveis em / usr / bin e / usr / sbin
ian@attic-u14:~$ which grub-image /usr/bin/grub-image ian@attic-u14:~$ dpkg -S /usr/bin/grub-image grub-common: /usr/bin/grub-image ian@attic-u14:~$ dpkg -L grub-common | grep "bin/" /usr/sbin/grub-mkdevicemap /usr/sbin/grub-mkconfig /usr/sbin/grub-probe /usr/sbin/grub-macbless /usr/bin/grub-glue-efi /usr/bin/grub-mkfont /usr/bin/grub-script-check /usr/bin/grub-fstest /usr/bin/grub-mkstandalone /usr/bin/grub-image /usr/bin/grub-mklayout /usr/bin/grub-mkrescue /usr/bin/grub-mkrelpath /usr/bin/grub-kbdcomp /usr/bin/grub-render-label /usr/bin/grub-mount /usr/bin/grub-file /usr/bin/grub-menulst2cfg /usr/bin/grub-editenv /usr/bin/grub-syslinux2cfg /usr/bin/grub-mkpasswd-pbkdf2 /usr/bin/grub-mknetdir
O coração do GRUB 2 é um kernel de inicialização múltipla (/boot/grub/core.img), juntamente com um arquivo de configuração (/boot/grub/grub.cfg). Eles serão gerados por você, se você executar o grub-install e definir o destino como seu MBR (por exemplo: grub-install /dev/sda
). Execute o grub-install --help
como mostrado na Listagem 7 para ter uma idéia dos programas que são chamados a fazer todo o trabalho. Algumas coisas são semelhantes aos Grub Legacy, mas há uma série de novos itens, como --modules
, --grub-setup
, --grub-image
, e assim por diante.
Listagem 7. GRUB 2 ajuda para o grub-install
ian@attic-u14:~$ grub-install --help Usage: grub-install [OPTION...] [OPTION] [INSTALL_DEVICE] Install GRUB on your drive. --compress[=no,xz,gz,lzo] compress GRUB files [optional] -d, --directory=DIR use images and modules under DIR [default=/usr/lib/grub/<platform>] --fonts=FONTS install FONTS [default=unicode] --install-modules=MODULES install only MODULES and their dependencies [default=all] -k, --pubkey=FILE embed FILE as public key for signature checking --locale-directory=DIR use translations under DIR [default=/usr/share/locale] --locales=LOCALES install only LOCALES [default=all] --modules=MODULES pre-load specified modules MODULES --themes=THEMES install THEMES [default=starfield] -v, --verbose print verbose messages. --allow-floppy make the drive also bootable as floppy (default for fdX devices). May break on some BIOSes. --boot-directory=DIR install GRUB images under the directory DIR/grub instead of the boot/grub directory --bootloader-id=ID the ID of bootloader. This option is only available on EFI and Macs. --core-compress=xz|none|auto choose the compression to use for core image --disk-module=MODULE disk module to use (biosdisk or native). This option is only available on BIOS target. --efi-directory=DIR use DIR as the EFI System Partition root. --force install even if problems are detected --force-file-id use identifier file even if UUID is available --label-bgcolor=COLOR use COLOR for label background --label-color=COLOR use COLOR for label --label-font=FILE use FILE as font for label --macppc-directory=DIR use DIR for PPC MAC install. --no-bootsector do not install bootsector --no-nvram don't update the `boot-device'/`Boot*' NVRAM variables. This option is only available on EFI and IEEE1275 targets. --no-rs-codes Do not apply any reed-solomon codes when embedding core.img. This option is only available on x86 BIOS targets. --no-uefi-secure-boot do not install an image usable with UEFI Secure Boot, even if the system was currently started using it. This option is only available on EFI. --product-version=STRING use STRING as product version --recheck delete device map if it already exists --removable the installation device is removable. This option is only available on EFI. -s, --skip-fs-probe do not probe for filesystems in DEVICE --target=TARGET install GRUB for TARGET platform [default=i386-pc] --uefi-secure-boot install an image usable with UEFI Secure Boot. This option is only available on EFI and if the grub-efi-amd64-signed package is installed. -?, --help give this help list --usage give a short usage message -V, --version print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. INSTALL_DEVICE must be system device filename. grub-install copies GRUB images into boot/grub. On some platforms, it may also install GRUB into the boot sector. Report bugs to <bug-grub@gnu.org>.
Se você executar o grub-install /dev/sda
, o processo cria um arquivo de imagem de núcleo para você, constrói um arquivo de configuração, e instala o GRUB 2 no seu MBR. Se você não está pronto para se comprometer com GRUB 2 para toda a sua configuração, você pode construir estas peças si mesmo e, em seguida, iniciar a imagem do GRUB 2 núcleo de GRUB Legacy ou LILO.
Construindo o arquivo de configuração do GRUB 2
O arquivo de configuração do GRUB 2 é normalmente /boot/grub/grub.cfg. Ao contrário de GRUB Legacy, você normalmente não deve editar esse arquivo você mesmo, pois ele será substituído na próxima vez que sua instalação GRUB 2 é atualizado. Você deve construí-lo usando grub-mkconfig
. Em alguns sistemas, como o Ubuntu, o comando update-grub
é um front-end para o grub-mkconfig
que salva sua saída em /boot/grub/grub.cfg. Estes comandos olhar para as configurações gerais (como o fundo ou o tempo limite) em / etc / default / grub e, em seguida, executar arquivos executáveis de /etc/grub.d/ para construir várias partes do arquivo de configuração, tais como o cabeçalho, uma seção para o atual distribuição Linux, seções para outros sistemas operacionais, e suas próprias adições feitas sob encomenda. Se você precisa de personalizar o menu GRUB 2, você adicionar as alterações em um arquivo no /etc/grub.d/ como 40_custom, ou adicione seu próprio arquivo. Lembre-se que ele precisa ser executável. Eu mostrar-lhe um exemplo de personalização tarde quando eu mostrar-lhe como carga cadeia GRUB legado do GRUB 2.
Executar grub-mkconfig
(ou update-grub
se disponível) para gerar um novo arquivo /boot/grub/grub.cfg como mostrado na Listagem 8.
Listagem 8. Construindo um arquivo de configuração do GRUB 2 com grub-mkconfig
ian@attic-u14:~$ sudo grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.16.0-43-generic Found initrd image: /boot/initrd.img-3.16.0-43-generic Found linux image: /boot/vmlinuz-3.16.0-30-generic Found initrd image: /boot/initrd.img-3.16.0-30-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin Found Fedora release 20 (Heisenbug) on /dev/sda10 Found CentOS release 6.6 (Final) on /dev/sda11 Found Fedora release 22 (Twenty Two) on /dev/sda5 Found Slackware Linux (Slackware 13.37.0) on /dev/sda6 Found Fedora release 18 (Spherical Cow) on /dev/sda7 Found openSUSE 11.4 (x86_64) on /dev/sda8 Found Ubuntu 12.04 LTS (12.04) on /dev/sda9 done
A Listagem 9 mostra a parte do cabeçalho do arquivo de configuração resultante, e Listagem 10 mostra as primeiras entradas do menu. Indiquei linhas longas que eu quebrei para publicação usando uma barra invertida (\). Observe que as estrofes menuentry olhar mais como shell scripts do que os comandos simples sem lógica do GRUB Legacy. Outra mudança importante do GRUB Legacy é que a numeração de partição agora começa em 1, embora a numeração de disco ainda começa em 0. Então / dev / sda7 é (hd0,7) no GRUB 2, onde seria (hd0,6) no GRUB Legacy. GRUB 2 também pode usar um nome de partição opcional, bem como um número. Então, (hd0,7) também pode ser referido como (hd0, MSDOS7) para deixar claro que ele está em um disco MBR formatado. Em um disco GPT formatado, você usaria (hd0, gpt7).
Listagem 9. GRUB 2 cabeçalho do arquivo de configuração
# # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then set have_grubenv=true load_env fi if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="0" fi if [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id" else menuentry_id_option="" fi export menuentry_id_option if [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi } function recordfail { set recordfail=1 if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi } function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi } if [ x$feature_default_font_path = xy ] ; then font=unicode else insmod part_msdos insmod ext2 set root='hd0,msdos12' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos12 --hint-efi=hd0,msdos12 \ --hint-baremetal=ahci0,msdos12 943524cc-19a9-4237-ac9e-5c1a61a131e3 else search --no-floppy --fs-uuid --set=root 943524cc-19a9-4237-ac9e-5c1a61a131e3 fi font="/usr/share/grub/unicode.pf2" fi if loadfont $font ; then set gfxmode=auto load_video insmod gfxterm set locale_dir=$prefix/locale set lang=en_US insmod gettext fi terminal_output gfxterm if [ "${recordfail}" = 1 ] ; then set timeout=30 else if [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=60 # Fallback normal timeout code in case the timeout_style feature is # unavailable. else set timeout=60 fi fi ### END /etc/grub.d/00_header ###
Listagem 10. Alguns GRUB 2 entradas do menu de configuração do arquivo
### BEGIN /etc/grub.d/10_linux ### function gfxmode { set gfxpayload="${1}" if [ "${1}" = "keep" ]; then set vt_handoff=vt.handoff=7 else set vt_handoff= fi } if [ "${recordfail}" != 1 ]; then if [ -e ${prefix}/gfxblacklist.txt ]; then if hwmatch ${prefix}/gfxblacklist.txt 3; then if [ ${match} = 0 ]; then set linux_gfx_mode=keep else set linux_gfx_mode=text fi else set linux_gfx_mode=text fi else set linux_gfx_mode=keep fi else set linux_gfx_mode=text fi export linux_gfx_mode menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu \ --class os $menuentry_id_option \ 'gnulinux-simple-943524cc-19a9-4237-ac9e-5c1a61a131e3' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos12' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos12 \ --hint-efi=hd0,msdos12 --hint-baremetal=ahci0,msdos12 ] 943524cc-19a9-4237-ac9e-5c1a61a131e3 else search --no-floppy --fs-uuid --set=root 943524cc-19a9-4237-ac9e-5c1a61a131e3 fi linux /boot/vmlinuz-3.16.0-43-generic root=UUID=943524cc-19a9-4237-ac9e-5c1a61a131e3 \ ro quiet splash $vt_handoff initrd /boot/initrd.img-3.16.0-43-generic } submenu 'Advanced options for Ubuntu' $menuentry_id_option \ 'gnulinux-advanced-943524cc-19a9-4237-ac9e-5c1a61a131e3' { menuentry 'Ubuntu, with Linux 3.16.0-43-generic' --class ubuntu \ --class gnu-linux --class gnu --class os $menuentry_id_option \ 'gnulinux-3.16.0-43-generic-advanced-943524cc-19a9-4237-ac9e-5c1a61a131e3' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos12' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos12 \ --hint-efi=hd0,msdos12 --hint-baremetal=ahci0,msdos12 \ 943524cc-19a9-4237-ac9e-5c1a61a131e3 else search --no-floppy --fs-uuid --set=root 943524cc-19a9-4237-ac9e-5c1a61a131e3 fi echo 'Loading Linux 3.16.0-43-generic ...' linux /boot/vmlinuz-3.16.0-43-generic \ root=UUID=943524cc-19a9-4237-ac9e-5c1a61a131e3 ro quiet splash $vt_handoff echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.16.0-43-generic } menuentry 'Ubuntu, with Linux 3.16.0-43-generic (recovery mode)' --class ubuntu \ --class gnu-linux --class gnu --class os $menuentry_id_option \ 'gnulinux-3.16.0-43-generic-recovery-943524cc-19a9-4237-ac9e-5c1a61a131e3' { recordfail load_video insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos12' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos12 \ --hinter=hd0,msdos12--bargain-basement=ahci0,msdos12 \ 943524cc-19a9-4237-ac9e-5c1a61a131e3 else search--no-floppy--fluidised--set=root 943524cc-19a9-4237-ac9e-5c1a61a131e3 phi echo 'Loading Linux 3.16.0-43-generic..' Linux /boot/vmlinuz-3.16.0-43-generic \ root=UUID=943524cc-19a9-4237-ac9e-5c1a61a131e3 or \ recovery Modesto echo 'Loading initial ram disk..' initrd /boot/initrd.img-3.16.0-43-generic } menu entry 'Ubuntu, with Linux 3.16.0-30-generic'--class Ubuntu \ --class Linux--class gnu--class OS $menu entry_id_option \ 'gnulinux-3.16.0-30-generic-advanced-943524cc-19a9-4237-ac9e-5c1a61a131e3' { record fail load_video modem $Linux_GIF_mode ins mod Zion ins mod part_ms dos ins mod ext2 set root='hd0,msdos12' if [ x$feature_platform_search_hint = x ]; then search--no-floppy--fluidised--set=root--hint-bios=hd0,msdos12 \ --hinter=hd0,msdos12--bargain-basement=ahci0,msdos12 \ 943524cc-19a9-4237-ac9e-5c1a61a131e3 else search--no-floppy--fluidised--set=root 943524cc-19a9-4237-ac9e-5c1a61a131e3 phi echo 'Loading Linux 3.16.0-30-generic..' Linux /boot/vmlinuz-3.16.0-30-generic \ root=UUID=943524cc-19a9-4237-ac9e-5c1a61a131e3 \ or quiet splash $VT_hand off echo 'Loading initial ram disk..' initrd /boot/initrd.img-3.16.0-30-generic } menu entry 'Ubuntu, with Linux 3.16.0-30-generic (recovery mode)'--class Ubuntu \ --class Linux--class gnu--class OS $menu entry_id_option \ 'gnulinux-3.16.0-30-generic-recovery-943524cc-19a9-4237-ac9e-5c1a61a131e3' { record fail load_video ins mod Zion ins mod part_ms dos ins mod ext2 set root='hd0,msdos12' if [ x$feature_platform_search_hint = x ]; then search--no-floppy--fluidised--set=root--hint-bios=hd0,msdos12 \ --hinter=hd0,msdos12--bargain-basement=ahci0,msdos12 \ 943524cc-19a9-4237-ac9e-5c1a61a131e3 else search--no-floppy--fluidised--set=root 943524cc-19a9-4237-ac9e-5c1a61a131e3 phi echo 'Loading Linux 3.16.0-30-generic..' Linux /boot/vmlinuz-3.16.0-30-generic \ root=UUID=943524cc-19a9-4237-ac9e-5c1a61a131e3 \ or recovery Modesto echo 'Loading initial ram disk..' initrd /boot/initrd.img-3.16.0-30-generic } } ### END /etc/grub.d/10_Linux ###
Construir a imagem do núcleo 2 do GRUB
A maneira mais fácil de construir um novo arquivo de imagem principal é executar o grub-install (ou grub2-instalar de acordo com seu sistema), mas não atualizar o MBR. Algumas versões do programa de instalação o setor de inicialização usando a opção -grub-setup
para indicar qual o programa que faz a verdadeira configuração. Definir isso para / bin / true para não fazer nada e, assim, evitar a atualização do setor de inicialização. Outras versões não têm uma opção -grub-setup
, mas tem a opção non-sectária em vez disso. Verifique as páginas man. Eu mostrar dois exemplos diferentes em Listagem 11. I primeiro remover o core.img existente para mostrar que o arquivo é na verdade gerado.
Listagem 11. Construindo a imagem GRUB 2 núcleo com o grub-install ou grub2-install
[root@atticf20 ~]# # Build a core.img file on Fedora 22 [root@atticf20 ~]# grub2-install --recheck --grub-setup=/bin/true /dev/sda Installing for i386-pc platform. Installation finished. No error reported. [root@atticf20 ~]# ls -l /boot/grub2/i386-pc/core.img -rw-r--r--. 1 root root 25887 Jul 12 22:56 /boot/grub2/i386-pc/core.img ian@attic-u14:~$ # Build a core.img file on Ubuntu 14 ian@attic-u14:~$ sudo grub-install --non-sectarian /dev/sda [sudo] password for ian: Installing for i386-pc platform. Installation finished. No error reported. ian@attic-u14:~$ ls -l /boot/grub/i386-pc/core.img -rw-r--r-- 1 root root 25363 Jul 12 23:15 /boot/grub/i386-pc/core.img
Construir uma GRUB 2 CD de recuperação inicializável
GRUB 2 vem com um grub-mkrescue
ou comando grub2-mkrescue
para ajudá-lo a criar uma imagem de CD de recuperação. As versões recentes do grub-mkrescue
usar o pacote xorriso ao invés do pacote mkisofs ou pacote genisoimage para criar a imagem ISO, por isso você precisa instalar, se sua primeira tentativa falhar com uma mensagem de erro indicando que Xorriso não for encontrado ou estiver no nível errado . Listagem 12 mostra como criar uma imagem de GRUB 2 salvamento em arquivo rescue.iso. Você não tem que ser root para criar o ISO de resgate.
Listagem 12. Criando uma imagem de resgate um GRUB 2
[root@echidna ~]# /usr/bin/grub2-mkrescue -o rescue.iso Enabling BIOS support ... xorriso 1.2.4 : RockRidge filesystem manipulator, libburnia project. Drive current: -outdev 'stdio:rescue.iso' Media current: stdio file, overwriteable Media status : is blank Media summary: 0 sessions, 0 data blocks, 0 data, 7177m free Added to ISO image: directory '/'='/tmp/tmp.Dw4KSbpoIx' xorriso : UPDATE : 196 files added in 1 seconds xorriso : UPDATE : 196 files added in 1 seconds xorriso : NOTE : Copying to System Area: 29191 bytes from file '/tmp/tmp.LepCeiJPZM' ISO image produced: 1094 sectors Written to medium : 1094 sectors at LBA 0 Writing to 'stdio:rescue.iso' completed successfully.
Depois de ter criado a imagem ISO, você pode gravá-lo em um CD (ou DVD), utilizando sua ferramenta de gravação favorita. Se preferir, você também pode copiá-lo para uma unidade flash USB e boot isto supondo que sua BIOS suporta arrancar a partir desses dispositivos. A Listagem 13 mostra como usar o comando dd para copiar a imagem ISO para a unidade flash USB / dev / sde.
Aviso: Certifique-se de que você copiar a imagem para o dispositivo correto. Copiá-lo para o dispositivo incorreto pode destruir um monte de seus dados.
Listagem 13. Escrevendo uma imagem de resgate GRUB 2 para uma unidade flash USB
ian@attic-u14:~$ # Burn .iso image to USB stick /dev/sde ian@attic-u14:~$ sudo dd if=rescue.iso of=/dev/sde 9864+0 records in 9864+0 records out 5050368 bytes (5.1 MB) copied, 3.95946 s, 1.3 MB/s
Agora você deve ter um CD ou uma unidade flash USB inicializável que irá arrancar para uma linha de GRUB 2.
Inicializando com o GRUB 2
Você vai arrancar a unidade flash USB para ver como ele funciona. Tal como acontece com o legado GRUB, este botas do disco de recuperação para um prompt do GRUB onde você digita comandos. Eu mostrar-lhe algumas que você pode usar para iniciar o sistema Ubuntu 14 cujo arquivo de configuração que eu construí mais cedo. A Figura 5 mostra a tela após iniciar e digite alguns comandos.
Figura 5. Iniciar a unidade flash 2 resgate GRUB
Os comandos introduzidos foram os seguintes:
ls
Sem argumentos, lista os dispositivos que foram encontrados. Isso pode levar algum tempo para ser executado. Drives flash não são normalmente unidades de BIOS, mas se você inicializar a partir de um, ele provavelmente mostra-se como hd0 e desloca outras unidades, causando-lhes para não ser numerados conforme o esperado. Usando um CD ou DVD evita esse problema.
set
Sets variable values. In this case, you set the root variable. Compare with the GRUB legacy root
command. You use hd1 instead of hd0, because the previous command told you that hd0 is now the USB flash drive from which you booted.
ls
Com um caminho, exibe arquivos ou diretórios. Use Bash-como a conclusão de tabulação, quer completar o componente de caminho que você está digitando ou para obter uma lista de possíveis conclusões de como você vê aqui (eu pressionei tab depois de entrar / boot / grub / GRU).
configfile
Tal como acontece com GRUB legacy, você pode carregar um arquivo de configuração usando o comando configfile
. Você carrega o que você construiu earlier.Once você carregar o arquivo de configuração, o ecrã parece com a Figura 6.
Figure 6. Ubuntu 14 configuration file for GRUB2
Tal como acontece com GRUB legacy, você pode editar entradas de configuração ou digite os comandos antes de inicializar um sistema.
Você pode explorar os muitos GRUB 2 comandos mais no manual do GRUB. Tente digitar info grub
ou info grub2
em uma janela de terminal Linux para abrir o manual.
Iniciando GRUB 2 do GRUB Legacy e vice-versa
Eu mencionei que você não pode corrente de carga GRUB 2 a partir de um registro de inicialização de partição. Uma vez que você construir sua imagem de núcleo e arquivo de configuração, adicione uma entrada para o seu grub.conf GRUB Legacy ou arquivo menu.lst para arrancar a imagem do núcleo GRUB 2, que, em seguida, exibe o menu GRUB 2 que você construiu. A Listagem 14 mostra a entrada que para a instalação do Ubuntu 14 em / dev / sda12 que eu também usei para trás na Listagem 1. Uma vez que este arquivo de configuração é para o GRUB Legacy, especifica a entrada raiz (hd0,11) para / dev / sda12.
Listagem 14. Grub entrada de configuração legado imagem 2 núcleo GRUB para inicializar
title Ubuntu 14.04 32-bit (sda12) root (hd0,11) kernel /boot/grub/core.img
Da mesma forma, você pode adicionar uma entrada ao seu arquivo de configuração do GRUB 2 a corrente do carregador de boot GRUB Legacy. Atualize o arquivo de modelo, /etc/grub.d/40_custom, em vez de editar o arquivo de configuração diretamente. A Listagem 15 mostra uma entrada típica para fazer isso. Este é de minha instalação do Fedora 22. Ele define a raiz de (hd0,1), que no meu sistema é uma partição de boot especial que eu vou discutir em breve.
Listagem 15. Cadeia de carregamento GRUB GRUB 2 usando /etc/grub.d/40_custom
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "GRUB-Legacy /dev/sda1" { insmod chain insmod ext2 set root=(hd0,1) chainloader +1 }
Depois de executar o grub-mkconfig
novamente, desta entrada é adicionada à cauda de seu arquivo de configuração e mostra-se pela última vez.
Você verá isso em prática na no Utilizando uma sessão partição de inicialização mais adiante neste tutorial.
Atualizações do sistema
A maioria das distribuições oferecem ferramentas para a atualização do sistema. Estas ferramentas são geralmente cientes do carregador de boot em uso e, muitas vezes atualizar seu arquivo de configuração automaticamente. Se você construir o seu próprio kernel personalizado, ou preferem usar um arquivo de configuração com um nome não-padrão ou localização, então você pode precisar atualizar a configuração do arquivo você mesmo.
- Se você usar o GRUB, você pode editar o arquivo /boot/grub/grub.conf para fazer suas alterações, eo carregador de estágio GRUB 2 lê o arquivo quando você reiniciar. Você normalmente não precisa reinstalar o GRUB só porque você adicionar um novo kernel. No entanto, se você mover uma partição, ou adicionar unidades, pode ser necessário reinstalar o GRUB. Lembre-se do estágio 1 carregador é muito pequena, por isso tem uma lista de endereços de blocos para o estágio 2 do carregador. Mover a partição e os endereços de mudar, de modo que a fase 1 já não pode localizar fase 2. Eu vou cobrir algumas estratégias de recuperação e também discutir estágio 1,5 carregadores do GRUB seguinte.
- Se você usar o GRUB 2, você reconstruir a configuração do GRUB 2, conforme descrito em Construindo o arquivo de configuração do GRUB 2.
- Se você usar LILO, então você deve executar o comando lilo sempre que você atualizar seu arquivo de configuração ou fazer alterações, como adicionar um disco rígido ou apagar uma partição.
- Se você executar mais de um sistema Linux em diferentes partições, considere o uso de uma partição de boot.
Recuperação
Agora, vamos olhar algumas coisas que podem dar errado com sua configuração de inicialização cuidadosamente preparado, especialmente quando você instalar e inicializar vários sistemas operacionais. A primeira coisa a lembrar é a de resistir à sua tentação inicial a entrar em pânico. A recuperação é geralmente apenas a poucos passos de distância. Estas estratégias podem ajudá-lo através de muitos tipos de crises.
Qualquer pessoa com acesso físico a uma máquina tem um monte de energia. Da mesma forma, qualquer pessoa com acesso a uma linha de comando do GRUB também tem acesso a arquivos em seu sistema sem o benefício de qualquer propriedade ou outras disposições de segurança fornecidos por um sistema em execução.
Manter estes pontos em mente quando você seleciona o seu gerenciador de inicialização. A escolha entre o LILO, GRUB, ou GRUB 2 é em grande parte uma questão de preferência pessoal, embora o GRUB 2 está se tornando dominante. Escolha o carregador que melhor se adapte às suas necessidades e estilo de trabalho específicas.
Outra instalar destrói seu MBR
Yno a instalar outro sistema operacional e, inadvertidamente, substituir sua MBR. Alguns sistemas, como o DOS e Windows, sempre instalar seu próprio MBR. É geralmente fácil de se recuperar dessa situação. Se você desenvolver um hábito de criar um disquete de recuperação, unidade flash USB, CD ou toda vez que você executar o lilo, reinstalar o GRUB, ou atualizar GRUB 2, você está em casa gratuitamente. Inicie seu novo sistema Linux a partir do disquete e lilo
reprise, o grub-install
ou grub2-install
conforme o caso.
Se você não acontecer de ter sua própria mídia de recuperação, mas você ainda tem praticamente qualquer distribuição Linux ao vivo ou mídia de instalação disponível, você pode usar o modo de recuperação dos meios de distribuição ou a mídia ao vivo para reparar o MBR seja quebrado ou construir media de recuperação como você tem feito neste tutorial.
Você moveu uma partição
Se você moveu uma partição e esqueceu-se sobre a sua configuração de inicialização, você tem um problema temporário. Normalmente, o LILO ou GRUB se recusam a carregar. LILO provavelmente irá imprimir um ‘L’, indicando que a fase 1 foi carregado e, em seguida, parar. GRUB lhe dará uma mensagem de erro. O que aconteceu aqui é que o estágio 1 carregador, que tinha uma lista de setores para carregar para chegar ao carregador de fase 2, talvez possa carregar os sectores a partir dos endereços que ele tem, mas os setores já não têm a assinatura estágio 2. Quanto ao caso da MBR destruído, você precisa reinstalar o boot loader, por isso ou usar o seu CD de recuperação ou uma distribuição Linux como eu descrevi.
Você deve ter notado que os exemplos de configuração utilizados alguns IDs universalmente exclusivo (UUID) para partições (por exemplo, o trecho mostrado na Listagem 17 que você viu na Listagem 1.
Listagem 17. Usando um UUID
title CentOS (2.6.32-504.23.4.el6.x86_64) root (hd0,10) kernel /boot/vmlinuz-2.6.32-504.23.4.el6.x86_64 ro \ root=UUID=2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2 rd_NO_LUKS rd_NO_LVM \ LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M \ KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /boot/initramfs-2.6.32-504.23.4.el6.x86_64.img
Antes do advento da UUIDs, partições MBR também poderia ter um rótulo atribuído usando o comando e2label
ou uma ferramenta de particionamento, como o GParted. Estes também fornecer um nível de independência de movimentos de partição.
Costumo usar UUIDs como este para ajudar a evitar problemas quando eu mover partições. Você ainda precisará atualizar o arquivo de configuração do LILO ou GRUB e LILO reprise, mas você não tem que atualizar o / etc / fstab também. Isto é particularmente útil se você criar uma imagem de partição em um sistema e restaurá-lo em um local diferente em outro sistema. Também é útil se você inicializar a partir de uma unidade, como uma unidade USB, que não pode sempre ser anexado no mesmo local.
Você pode usar o comando blkid
para exibir os rótulos (se houver) e UUIDs para seus discos como mostrado na Listagem 18. Como você pode ver, algumas das minhas partições utilize etiquetas e outros não.
Listagem 18. Exibindo rótulos e UUIDs para partições
ian@attic-u14:~$ sudo blkid /dev/sda1: LABEL="/grubfile" UUID="3c3de27e-779a-44d5-ad7a-61c5fd03d9e7" TYPE="ext3" /dev/sda2: UUID="158d605e-2591-4749-bf59-5e92e1b1c01d" TYPE="swap" /dev/sda3: UUID="ff0b87d2-6929-45df-88e1-d6d3e5cf3d6f" TYPE="ext4" /dev/sda5: LABEL="FEDORA22" UUID="7aefe7a0-97d5-45ec-a92e-00a6363fb1e4" TYPE="ext4" /dev/sda6: UUID="78a8c7de-cb86-45fe-ac04-be67ef52cb12" TYPE="ext4" /dev/sda7: LABEL="FEDORA 18" UUID="1b441a69-63e3-4771-a06b-5efecd1df07e" TYPE="ext4" /dev/sda8: LABEL="SUSE13-2" UUID="49d87897-791e-4e48-9efb-704eac447e43" SEC_TYPE="ext2" TYPE="ext3" /dev/sda9: UUID="10e82894-186f-4223-95c8-3468eb9b085d" SEC_TYPE="ext2" TYPE="ext3" /dev/sda10: LABEL="FEDORA20-64" UUID="8e6e2ebd-20b9-46e8-865f-893dd88c3206" TYPE="ext4" /dev/sda11: UUID="2f60a3b4-ef6c-4d4c-9ef4-50d7f75124a2" SEC_TYPE="ext2" TYPE="ext3" /dev/sda12: LABEL="UBUNTU-1404" UUID="943524cc-19a9-4237-ac9e-5c1a61a131e3" TYPE="ext4" /dev/sdb1: LABEL="GRUB-DATA" UUID="a36a3539-8393-4940-a893-472e9e1c868e" SEC_TYPE="ext2" TYPE="ext3" /dev/sdb2: LABEL="DATA-IAN" UUID="4c962b67-c646-467f-96fb-cbbd6de40140" TYPE="ext4" /dev/sdb3: LABEL="RESEARCH" UUID="0998d33c-3398-463d-b0e3-7c13ca0c675f" TYPE="ext3" /dev/sdb4: UUID="86ad1df3-fea4-47e5-bfdd-fb09f6c2e64a" TYPE="ext4" /dev/sdc1: LABEL="PICTURES" UUID="e3be4658-b79b-470d-82fe-bb434bcdcc2f" TYPE="ext4" /dev/sr0: LABEL="ISOIMAGE" TYPE="iso9660"
GRUB 2 hoje em dia gera arquivos de configuração que usam os nomes antigos dispositivo como sugestões, mas a raiz é realmente definido com base no UUID (ou rótulo). Consulte o manual do GRUB 2 para mais detalhes. Um trecho de exemplo para o sistema Ubuntu 14 que eu construí uma configuração para anterior é mostrado na Listagem 19. Depois de inicialmente definir a raiz para “hd0, msdos12 ‘, a lógica a seguir usa o comando de pesquisa com algumas dicas para localizar o local real do dispositivo raiz (/ dev / sda12 se nada tivesse mudado).
Listagem 19. Localizando o dispositivo raiz por UUID usando GRUB2
set root='hd0,msdos12' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos12 --hint-efi=hd0,msdos12 \ --hint-baremetal=ahci0,msdos12 943524cc-19a9-4237-ac9e-5c1a61a131e3 else search --no-floppy --fs-uuid --set=root 943524cc-19a9-4237-ac9e-5c1a61a131e3 fi
Você viu isto em uso quando você iniciou a partir da unidade flash de recuperação mais cedo. Lembre-se que a unidade flash tornou-se (hd0) ea primeira unidade de disco rígido tornou-se (hd1) .Além disso aos métodos e ferramentas mencionadas aqui, existem várias recuperação e inicialização pacotes disponíveis na Internet. Estes geralmente incluem algum nível de sistema de arranque juntamente com uma série de ferramentas de recuperação úteis. Os exemplos incluem pacotes, como o Knoppix eo CD Rescue System (consulte Recursos para obter links, ou pesquisar na Internet por um dos vários excelentes comentários de tais pacotes.
Usando uma partição de boot
Outra abordagem para a recuperação, ou talvez evitá-lo, é usar uma partição separada para a inicialização. Como você acabou de ver, o GRUB 2 tornou-se muito mais resistente a mudanças no sistema. No entanto, para GRUB Legacy e LILO, uma partição de boot pode ser particularmente útil se você tiver um sistema de teste com várias distribuições nele que você pode reconstruir com freqüência. A partição de inicialização não precisa ser muito grande, talvez 100MB ou mais. Coloque esta partição em algum lugar onde é improvável para ser transferida e onde é improvável que tenha o seu número de partição movidos pela adição ou remoção de outra partição. Em um ambiente misto de Windows e Linux, / dev / sda2 (ou / dev / hda2 dependendo de como os discos são rotulados) é frequentemente uma boa escolha para a sua partição de boot. Na verdade, a Listagem 1 que você viu anteriormente mostra as entradas na pequena partição de boot (/ dev / sda1) que eu uso no meu sistema.
Embora eu adicionei uma entrada para o propósito deste tutorial para inicialização diretamente em CentOS, minha estratégia usual é a de manter as entradas simples e usá-los para carga cadeia outro carregador de boot, ou carregar o arquivo core.img GRUB 2. Os exemplos que você viu na seção Inicialização GRUB 2 do GRUB Legacy e utilização vice-versa esta estratégia simples. Se você usar entradas que iniciar diretamente em um kernel especial que você precisa atualizá-los manualmente sempre que você atualizar o sistema de destino. Evite o trabalho extra quando você puder. A figura 8 mostra o meu menu GRUB simples.
Figura 8. Um menu de boot GRUB simples partição
Para esta partição, eu uso uma imagem de abertura personalizada que eu fiz de uma foto eu recolhi o parque nacional de Great Sand Dunes em Colorado. Consulte as páginas do manual ou pesquisa on-line para obter mais informações sobre como fazer suas próprias imagens respingo. A Figura 9 mostra a entrada que foi adicionada ao final do meu menu Fedora 22 GRUB 2 usando o arquivo /etc/grub.d/40_custom.
Figura 9. Cadeia entrada loader de GRUB de GRUB 2
Outra razão para ter uma partição de boot surge quando sua partição raiz usa um sistema de arquivos não é suportado pelo seu gerenciador de inicialização. Por exemplo, é comum ter um arranque partição formatada ext2 ou ext3 / quando a partição raiz (/) usa LVM, que não é suportado pelo GRUB Legacy.
Se você tiver várias distribuições em seu sistema, não compartilham a partição / boot entre eles. Lembre-se de configurar o LILO ou GRUB para inicializar a partir da partição que, mais tarde, ser montado como / boot. Lembre-se também que os programas de atualização para uma distribuição normalmente atualizar o GRUB ou LILO configuração para esse sistema. Em um ambiente com vários sistemas, você pode querer manter um com sua própria partição / boot como o principal e atualizar manualmente o arquivo de configuração sempre que uma atualização de um dos seus sistemas exige. Outra abordagem é fazer com que cada sistema instalar um carregador de inicialização em seu próprio registro de inicialização de partição e ter o seu sistema principal simplesmente corrente de carga dos registros de inicialização de partição para os sistemas individuais, dando-lhe um processo de dois estágios de menu como o que eu uso.
Considerações UEFI e GPT
Embora este tutorial se concentra em unidades MBR formatado, muitos dos conceitos ainda se aplicam para GPT discos formatados. Firmware UEFI é bastante diferente do BIOS e muito mais capaz. Isso, é claro, traz novos desafios. Um dos novos recursos é a noção de inicialização segura(Secure boot), que só permite que os binários para arrancar assinado. Muitos sistemas UEFI ainda suportar o arranque modo de legado(Legacy mode), que permite que sistemas mais antigos para inicializar o hardware. Windows 8 exige UEFI e inicialização segura(Secure boot), juntamente com discos GPT formatado, por isso, se você deseja instalar junto com o Windows 8 ou mais tarde, você precisa saber algo sobre UEFI e inicialização segura.
Nota: Secure Boot é uma tecnologia em que os controles de firmware do sistema que o carregador de inicialização do sistema é assinado com uma chave de criptografia autorizado pela base de dados contidos no firmware. Com a verificação adequada assinatura na próxima fase loader (s) de inicialização, kernel, e, potencialmente, o espaço do usuário, é possível impedir a execução de código não assinado.
Algumas distribuições Linux no LiveDVD, como Ubuntu e Fedora, e seus derivados suportam inicialização em um sistema UEFI com inicialização segura(secure boot) habilitado. Os métodos de determinação da cadeia de confiança ter sido um tanto controverso na comunidade de desenvolvimento do kernel Linux. Será mostrado como desembalar a imagem ISO da distribuição Ubuntu 15.04 em uma unidade flash USB para que você possa explorar a configuração.
Para este exercício, foi usado o sistema Ubuntu 14 para formatar um pequeno flash drive USB como GPT e depois criou uma partição de 2 GB como mostrado na Listagem 20. Foi formatado a partição como FAT32 porque o firmware UEFI precisa de alguns arquivos em uma partição FAT32. Tenha cuidado ao usar o dispositivo correto, seu provavelmente não será /dev / SDF.
Listagem 20. Preparar uma unidade flash USB GPT formatado
ian@attic-u14:~$ sudo parted /dev/sdf GNU Parted 2.3 Using /dev/sdf Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel gpt Warning: The existing disk label on /dev/sdf will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes (parted) mkpart primary fat32 1MB 2048MB (parted) toggle 1 boot (parted) print Model: USB DISK 2.0 (scsi) Disk /dev/sdf: 15.5GB Sector size (logical/physical): 512B/512B Partition Table : gpt Number Start End Size File system Name Flags 1 1049kB 2048MB 2047MB fat32 primary boot (parted) quit Information: You may need to update /etc/fstab. ian@attic-u14:~$ sudo mkfs.fat -F 32 /dev/sdf1 mkfs.fat 3.0.26 (2014-03-07)
Uma vez que a unidade flash está preparado, você precisa para montá-lo. Então, você precisa para descompactar a imagem ISO do Ubuntu 15 a ele. Listagem 21 mostra uma das muitas maneiras possíveis que você pode fazer isso.
Listagem 21. Desembalagem Ubuntu 15 para uma imagem de USB ao vivo
ian@attic-u14:~$ sudo mkdir /mnt/u15iso /mnt/flashdrive ian@attic-u14:~$ sudo mount ~/Downloads/ubuntu-15.04-desktop-amd64.iso /mnt/u15iso/ -o ro,loop=/dev/loop1 ian@attic-u14:~$ sudo mount /dev/sdf1 /mnt/flashdrive/ ian@attic-u14:~$ sudo rsync -a -H /mnt/u15iso/ /mnt/flashdrive rsync: symlink "/mnt/flashdrive/ubuntu" -> "." failed: Operation not permitted (1) rsync: symlink "/mnt/flashdrive/dists/stable" -> "vivid" failed: Operation not permitted (1) rsync: symlink "/mnt/flashdrive/dists/unstable" -> "vivid" failed: Operation not permitted (1) rsync error: some files/attrs were not transferred (see previous errors) (code 23) at \ main.c(1183) [sender=3.1.0] ian@attic-u14:~$ diff -rq /mnt/u15iso/ /mnt/flashdrive Only in /mnt/u15iso/dists: stable Only in /mnt/u15iso/dists: unstable Only in /mnt/u15iso/: ubuntu i
Antes de desmontar a unidade flash, olhar alguns arquivos nele. Se você listar o diretório raiz, você vê dois diretórios, EFI e boot, entre outros arquivos e diretórios. O diretório de boot é o seu diretório de boot GRUB 2, enquanto o diretório EFI é um diretório que as pesquisas de firmware UEFI para binários assinados para arrancar. Este é o diretório que deve ter um sistema de arquivos FAT (ou ISO 9660 sistema de arquivos em CD). É por isso que foi formatado a partição como FAT32. Listagem 22 ilustra esses arquivos. Agora você pode desmontar e ejetar a unidade flash e tentar arrancar-lo em um sistema que tem tanto inicialização segura (secure boot ) habilitado e inicialização legado (legacy boot) desativado.
Listagem 22. Examinando o diretório raiz da nossa unidade flash
ian@attic-u14:~$ ls /mnt/flashdrive/ autorun.inf casper EFI isolinux pics preseed wubi.exe boot dists install md5sum.txt pool README.diskdefines ian@attic-u14:~$ ls /mnt/flashdrive/EFI BOOT ian@attic-u14:~$ ls /mnt/flashdrive/EFI/BOOT/ BOOTx64.EFI grubx64.efi ian@attic-u14:~$ umount /mnt/flashdrive umount: /mnt/flashdrive is not in the fstab (and you are not root) ian@attic-u14:~$ sudo umount /mnt/flashdrive ian@attic-u14:~$ sudo eject /dev/sdf i
Para inicializar em um sistema Windows 8 com inicialização segura (secure boot) e inicialização UEFI(UEFI boot) habilitado, talvez seja necessário desativar a inicialização rápida (fast boot), pois isso faz com que a reinicialização de um modo semi-hibernat3ed. Você também precisa saber como iniciar a partir de um dispositivo, como uma unidade flash USB. Uma maneira de fazer ambas as tarefas é usar o Ambiente de Recuperação do Windows (consulte Recursos). Uma maneira de acessar esta é para iniciar a sequência de desligamento em seu sistema Windows 8 em execução e, em seguida, segure a tecla Shift ao clicar em Reiniciar (Restart). A Figura 10 mostra a tela de um notebook Lenovo Yoga 2.
Figura 10. Reiniciar para uma unidade flash USB no Windows 8.1
Depois que eu selecione Usar um dispositivo (Use a device) no sistema, o próximo prompt permite-me a escolher um dispositivo USB EFI. A partir de um prompt como que você pode inicializar a unidade flash que você acabou de construir.
Após iniciar o seu sistema Ubuntu, você pode montar a partição EFI do seu sistema Windows 8 e inspecioná-lo. No meu caso, é / dev / sda2. Listagem 23 mostra o diretório EFI nesta partição.
Listagem 23. O diretório do Windows 8.1 EFI em / dev / sda2
ubuntu@ubuntu:~$ sudo mkdir /mnt/sda2 ubuntu@ubuntu:~$ sudo mount /dev/sda2 /mnt/sda2/ ubuntu@ubuntu:~$ ls /mnt/sda2 BOM.BAT BOOT EFI ubuntu@ubuntu:~$ ls /mnt/sda2/EFI/ Boot Microsoft ubuntu@ubuntu:~$ ls /mnt/sda2/EFI/Boot/ bootx64.efi
Mais uma vez, você encontrar um executável BOOTX64.EFI onde o firmware UEFI sabe de olhar para ele.
Fonte: IBM developerWorks