Como mover o bootloader de um disco rígido para um pendrive

3

Eu decidi mover meu gerenciador de inicialização do Debian e /boot do disco rígido para um pendrive. Eu estou usando o LUKS para en / descriptografar meu disco rígido e o bootloader é a única partição não criptografada.

Como posso fazer isso facilmente? Eu quero removê-lo de no disco rígido, redimensione qualquer uma das partições ( / , /var , /tmp ) para obter o espaço livre depois que eu deletei /boot e coloquei um novo bootloader no pendrive. O Bootloader em uso é o GRUB e está em /dev/sda1 .

    
por mrmr 17.05.2015 / 10:22

2 respostas

0

Parafuse grub . É provavelmente alguma complexidade introduzida que leva você a acreditar que este é um problema difícil de resolver. Se o seu computador tiver menos de 5 anos, provavelmente você está inicializando a partir de um firmware UEFI, caso em que seu kernel Linux já em Debian já é um gerenciador de inicialização.

  1. Particione o disco:

    printf %c\n o y n 1 '' '' ef00 w y |
    gdisk /dev/usb-stick/or-whatever-path    
    
    • Esse é um atalho de script para as opções que você deseja alimentar o programa de forma interativa. Ele criará uma tabela de partição GUID e uma partição do tipo sistema EFI que abrange todo o disco.

    • No entanto, o programa gdisk é fácil de usar - e, portanto, é melhor você interagir de forma interativa. O disco de destino não deve ser montado quando for executado e você provavelmente precisará dos direitos de root para w rite as alterações. Como regra geral, você pode fazer praticamente o que quiser nesse programa sem nenhum efeito até você w rite - portanto, tenha certeza de quando o faz.

  2. Formate o stick fat32:

    mkfs.vfat -nLABEL /dev/usb-stick/or-whatever-path
    
    • LABEL é o que você quer que seja. Você deve LABEL todos discos, em minha opinião.
  3. Instale um gerenciador de menu de inicialização, se desejado. Eu gosto rEFInd :

    dpkg -i refind_0.8.7-1_amd64.deb
    
    • Isso provavelmente não será instalado automaticamente no USB, portanto, depois você pode querer fazer ...

      /path/to/refinds/install/dir/install.sh  --usedefault /dev/usbstick
      
    • Se você usar o rEFInd, você vai querer fazer algo assim depois:

      mount /dev/usbstick /mnt
      mkdir -p /mnt/EFI/debian /esp
      cp -ar /boot/* /mnt/EFI/debian
      cat <<\TWONEWLINES >>/etc/fstab
          LABEL=LABEL      /esp  vfat  defaults      0 2
          /esp/EFI/debian  /boot none  bind,defaults 0 0
      TWONEWLINES
      cat <<\ONESIMPLECONFIG >/mnt/EFI/debian/refind_linux.conf
          "Debian Menu Entry" root=LABEL=rootlabel other_kernel_params
      ONESIMPLECONFIG
      
    • Mas você pode pular o rEFInd e usar apenas o menu de inicialização do firmware:

       efibootmgr -c -d /dev/rootdevice       \
                  -p 1 -L "Debian"            \
                  -l '\EFI\debian\kernelfile' \
                  -u root=/dev/sda3 kparams   \
                  initrd=EFI/debian/initramfs_image_file
      

E isso é muito bonito. Praticamente para sempre - sem mais problemas. O firmware carrega o kernel da partição do sistema EFI que você formata no seu pendrive. O kernel carrega sua raiz inicial no arquivo initramfs. Se você já está inicializando com êxito o LUKS, então você já deve ter providenciado para que ele acesse sua chave de alguma forma - sua chave provavelmente já está na imagem initramfs. Se não, bem, você vai querer colocá-lo lá - ou no USB.

A partição de inicialização é uma montagem em um sistema UEFI - não há absolutamente nenhuma necessidade de todos os inconvenientes antigos que envolvem carregadores de inicialização e MBRs e o restante. Você acabou de montar o boot a partir do firmware, carregar um executável do kernel e seguir seu caminho alegre.

O fstab stuff apenas --bind monta um diretório no seu pendrive sobre /boot - então todas as atualizações do kernel acontecerão como sempre. Se você gosta de si mesmo, você vai desinstalar grub inteiramente, no entanto. Seu processo arcano de atualização - um monte de scripts que lêem e / ou geram outros scripts em uma cadeia malvada - é mais do que um pouco ridículo e o tipo de pesadelo que você pode facilmente passar sem isso.

Se você seguir meu conselho, você usará o rEFInd. Tem menus bonitos, e você nunca precisa se preocupar com isso - os efeitos do script install.sh acima podem ser facilmente reproduzidos (e está acima, em grande parte) com um único comando cp . É apenas um diretório estático chamado /EFI/BOOT na partição do sistema EFI que contém um pequeno arquivo executável da EFI que informa ao firmware onde encontrar o kernel. O kernel é o bootloader real - como deveria ser.

Com a configuração acima, você pode inicializar quantos executáveis EFI desejar - basta colocar o conteúdo de /boot (ou qualquer que seja a partição de inicialização deles) no dispositivo USB em /EFI em algum lugar e rEFInd provavelmente irá encontrá-los automaticamente e apresentá-los como uma opção para você no menu do firmware - para incluir sistemas da Microsoft. Para sempre.

    
por 17.05.2015 / 13:20
1

Para começar, você pode

  • particionar e formatar e montar o pendrive
  • copie todos os arquivos do seu antigo /boot para o pendrive
  • altere seu /etc/fstab para tornar o sistema de arquivos do pendrive USB o novo /boot
  • umount /boot , mount /boot para torná-lo oficial
  • instale um gerenciador de inicialização no bastão ( grub-install /dev/sdx ou qualquer outro)
  • reinicialize e veja se funciona

Quanto a recuperar o espaço do antigo /boot para o seu sistema já criptografado. Dependendo do tamanho de sua partição de inicialização antiga, pode não valer a pena o esforço, pois provavelmente envolveria a movimentação de todos os outros dados (ou um contêiner LUKS adicional além de toda a complexidade que vem com o uso de vários deles). Você poderia usá-lo como uma partição crypto-swap em vez disso, se você não tiver um desses.

    
por 17.05.2015 / 12:06