Você provavelmente não precisa de grub
. A coisa é - seu firmware UEFI é seu bootloader - ele já é. Quando você inicializa através de grub
você realmente carrega chainload - isto é redundância desnecessária. Eu uso rEFInd
- é apenas um gerenciador de inicialização - ele apenas permite que você escolha o que inicializar, então retransmite isso de volta para o firmware e o firmware faz a inicialização. Não é muito mais que um cardápio.
Isso é bom porque o kernel do linux é um binário executável da própria EFI - você pode inicializar o linux sem nenhum gerenciador de inicialização / carregador, apenas executando-o a partir do firmware. Eu recomendaria essa opção também, mas não é tão flexível quanto um gerenciador de menu interveniente como rEFInd
porque você tem que confiar nos desenvolvedores de firmware para fornecer essa interface - e isso pode ser duvidoso. Mas se você estiver interessado, procure na interface efibootmgr
- isso exigirá a configuração de variáveis de firmware persistentes.
O seguinte é um tutorial sobre como usar primeiro dd
then gdisk
para garantir que você tenha uma partição do sistema EFI inicializável.
Só para garantir que a tabela de partições esteja completamente limpa antes de começar, você deve escrever sobre alguns dos primeiros blocos do disco:
dd ibs=4M count=1 if=/dev/zero of=/dev/${USB_DISK}
Agora entramos em gdisk
. Substitua qualquer arquivo de dispositivo /dev/...
em que seu disco usb esteja em /dev/${USB_DISK}
:
gdisk /dev/${USB_DISK}
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): ?
Use ?
para o menu para visualizar todas as opções primeiro, mas a primeira em que você precisa escrever uma tabela de partição limpa da GPT é o
:
...
Proceed? (Y/N): y
Em seguida, você precisará de uma partição do sistema EFI. Use o comando n
para criar uma partição n
ew. Nos prompts abaixo, em que você não vê a chave digitada, é porque acabei de acessar ENTER
para concordar com o padrão:
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-1331166, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-1331166, default = 1331166) or {+-}size{KMGTP}: 500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00
Se você pressionar L
no último prompt acima, você obterá uma lista de todos os tipos de partição disponíveis, mas o que você precisa é digitar ef00
para a partição do sistema efi. Do n
quantas vezes você precisar para criar qualquer outra partição que você possa precisar para /
ou swap ou qualquer outra coisa. Mais uma vez, use L
para ver os diferentes tipos, mas o defaul 8300 deve funcionar para todos menos para swap.
Dê uma olhada na sua nova tabela de partições com p
e siga-a com w
se você gostar dela para escrever suas alterações pendentes:
...
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
Agora crie um sistema de arquivos fat
em sua partição do sistema EFI. -n
nomeia a partição. Eu gosto de usar ESP
:
mkfs.vfat -n ESP /dev/${USB_DISK}1
mkfs.fat 3.0.26 (2014-03-07)
Use mkfs.${desired_file_system} /dev/${USB_DISK}[num]
para todas as outras partições que você possa exigir. Seria melhor se você usasse o --help
do sistema de arquivos para descobrir como especificar um rótulo GPT para a partição também.
Pegue o refind.bin.*.zip
e encontre aqui e descompacte-o no disco e depois vamos instalar o seu bootloader:
mkdir /tmp/refind
unzip ~/Downloads/refind-bin-0.7.9.zip -d $_
...
$_/ref*/install.sh --usedefault /dev/${USB_DISK}
Not running as root; attempting to elevate privileges via sudo....
Installing rEFInd on Linux....
UnmountEsp = 1
Copied rEFInd binary files
Copying sample configuration file as refind.conf; edit this file to configure
...
Então agora você tem um gerenciador de inicialização. Depois de instalar o seu sistema Linux no disco, você precisará fazer o seguinte:
mkdir -p /mnt/bootdisk/
mount /dev/${USB_DISK}1 /mnt/bootdisk
mkdir -p /mnt/bootdisk/EFI/kali_linux/
cp ${kali_root}/boot/vmlinuz-* \
/mnt/bootdisk/EFI/kali_linux/
cp ${kali_root}/boot/initrd-* \
/mnt/bootdisk/EFI/kali_linux/
printf %s\n "LABEL=${GPT_LABEL} /esp vfat defaults 0 1" \
"/esp/EFI/kali_linux /boot none bind,defaults 0 0" \
| sudo tee -a /etc/fstab
mkdir /esp
mount -a
Isso quase faz isso. Você precisará configurar rEFInd
um pouco. Substitua o rótulo GPT do sistema de arquivos raiz por ${GPT_LABEL}
abaixo:
echo '"Kali" "root=LABEL=${GPT_LABEL} rootwait"'\
>/mnt/bootdisk/EFI/kali_linux/refind_linux.conf
Isso deve fornecer um sistema inicializável. Por favor, olhe através do principal refind.conf
in ../BOOT
- é muito bem comentado e praticamente se documenta. Você também vai querer ir para rodsbooks.com e ler os documentos lá.