|
3 ماه پیش | |
---|---|---|
.. | ||
ABI.md | 3 ماه پیش | |
README.md | 3 ماه پیش | |
debug.md | 3 ماه پیش | |
menu.cfg | 3 ماه پیش | |
plugins.md | 3 ماه پیش | |
secureboot.md | 3 ماه پیش | |
stivale.md | 3 ماه پیش |
Easyboot é um gestor de arranque completo e criador de imagens de disco de arranque que pode carregar vários kernels de sistema operativo e kernels compatíveis com Multiboot2 em vários formatos.
[[TOC]]
easyboot [-v|-vv] [-s <mb>] [-b <mb>] [-u <guid>] [-p <t> <u> <i>] [-e] [-c] <indir> <outfile|device>
-v, -vv aumentar a verbosidade/validação
-s <mb> defina o tamanho da imagem do disco em Megabytes (o predefinido é 35M)
-b <mb> definir o tamanho da partição de arranque em Megabytes (o predefinido é 33M)
-u <guid> define o identificador único da partição de arranque (o predefinido é aleatório)
-p <t> <u> <i> adicionar uma partição extra (tipo guid, guid exclusivo, ficheiro de imagem)
-e adicionar Catálogo de arranque El Torito (suporte para arranque de CDROM BIOS/EFI)
-c crie sempre um novo ficheiro de imagem, mesmo que exista
<indir> utilizar o conteúdo deste diretório para a partição de arranque
<outfile> imagem de saída ou nome do ficheiro do dispositivo
A ferramenta Easyboot cria uma imagem de disco de arranque denominada (outfile)
utilizando a Tabela de Particionamento GUID
com uma única partição formatada como FAT32 e nomeada como "EFI System Partition" (ESP, em inglês). O conteúdo desta partição é
obtido a partir do (indir)
que fornece. Deve colocar um ficheiro de configuração de texto simples nesse directório chamado
easyboot/menu.cfg
. Com as terminações de linha NL ou CRLF, pode editá-las facilmente com qualquer editor de texto. Dependendo
da sua configuração, também pode precisar de alguns plugins neste directório chamado easyboot/*.plg
.
A imagem também pode ser inicializada no Raspberry Pi e funcionará no qemu; mas para arrancar numa máquina real, serão necessários
mais ficheiros de firmware bootcode.bin
, fixup.dat
, start.elf
e um ficheiro .dtb no directório (indir)
, podem ser
descarregados do repositório oficial do Raspberry Pi.
A ferramenta também possui alguns sinalizadores de linha de comando opcionais: -s(mb)
define o tamanho global da imagem de disco
gerada em Megabytes, enquanto -b(mb)
define o tamanho da partição de arranque em Megabytes. Obviamente, o primeiro deve ser maior
que o segundo. Se não for especificado, o tamanho da partição será calculado a partir do tamanho do directório fornecido (33 Mb no
mínimo, o FAT32 mais pequeno que pode haver) e o tamanho do disco será definido como predefinido, 2 Mb maior que este (devido ao
alinhamento e ao espaço necessário para a tabela de particionamento). Se houver uma diferença de mais de 2 Mb entre estes dois
valores de tamanho, pode utilizar ferramentas de terceiros como o fdisk
para adicionar mais partições à imagem conforme desejar
(ou ver -p
abaixo). Se pretender um esquema previsível, também pode especificar o identificador único da partição de arranque
(UniquePartitionGUID) com o indicador -u <guid>
.
Opcionalmente, também pode adicionar partições extra com o sinalizador -p
. Isto requer 3 argumentos: (PartitionTypeGUID),
(UniquePartitionGUID) e o nome do ficheiro de imagem que contém o conteúdo da partição. Esta bandeira pode ser repetida várias
vezes.
O indicador -e
adiciona o El Torito Boot Catalog à imagem gerada, para que possa ser inicializado não só como uma pen USB, mas
também como um CD-ROM BIOS/EFI.
Se (outfile)
for um ficheiro de dispositivo (por exemplo, /dev/sda
no Linux, /dev/disk0
nos BSDs e \\. \PhysicalDrive0
no
Windows), não cria GPT nem ESP, em vez disso localiza os já existentes no dispositivo. Ainda copia todos os ficheiros em (indir)
para a partição de arranque e instala os carregadores. Isto também funciona se (outfile)
for um ficheiro de imagem que já existe
(nesse caso, utilize o indicador -c
para criar sempre primeiro um novo ficheiro de imagem vazio).
O ficheiro easyboot/menu.cfg
pode conter as seguintes linhas (muito semelhante à sintaxe do grub.cfg, pode encontrar um exemplo
de um ficheiro de configuração aqui):
Todas as linhas que começam por #
são consideradas comentários e são saltadas até ao fim da linha.
Pode definir o nível de verbosidade utilizando uma linha que começa por verbose
.
verbose (0-3)
Isto informa o carregador quanta informação imprimir na consola de inicialização. A verbose 0 significa totalmente silencioso (padrão) e a verbose 3 irá despejar os segmentos do kernel carregados e o código da máquina no ponto de entrada.
Pode solicitar uma resolução de ecrã específica com a linha que começa por framebuffer
. O formato é o seguinte:
framebuffer (largura) (altura) (bits por pixel) [#(cor de primeiro plano)] [#(cor de fundo)] [#(pbarfundo)]
O Easyboot irá configurar um framebuffer para si, mesmo que esta linha não exista (800 x 600 x 32bpp por defeito). Mas se essa linha existir, tentará definir a resolução especificada. Os modos paletados não são suportados, pelo que os bits por pixel devem ser pelo menos 15.
Se for fornecido o quarto parâmetro de cor opcional, este deverá estar em notação HTML, começando com uma marca de hash seguida
de 6 dígitos hexadecimais, RRGGBB. Por exemplo, #ff0000
é um vermelho brilhante e #007f7f
é um ciano mais escuro. Define o
primeiro plano ou, por outras palavras, a cor da fonte. Da mesma forma, se o quinto parâmetro de cor opcional for fornecido,
também terá de estar em notação HTML e definirá a cor de fundo. O último parâmetro de cor opcional é semelhante e define a cor
de fundo da barra de progresso.
Quando as cores não são fornecidas, o padrão são letras brancas sobre fundo preto, e o fundo da barra de progresso é cinzento escuro.
A linha que começa com default
define qual a entrada de menu que deve ser inicializada sem interação do utilizador após o tempo
limite especificado.
default (índice menuentry) (tempo limite mseg)
O índice menuentry é um número entre 1 e 9. O tempo limite é em milissegundos (um milésimo de segundo), pelo que 1000 dá um segundo.
As linhas que começam por menualign
alteram a forma como as opções de arranque são apresentadas.
menualign ("vertical"|"horizontal")
Por predefinição, o menu é horizontal, mas pode alterá-lo para vertical.
Pode especificar até 9 entradas de menu com linhas que começam por menuentry
. O formato é o seguinte:
menuentry (ícone) [rótulo]
Para cada ícone, deve existir um ficheiro easyboot/(ícone).tga
na partição de arranque. A imagem deve estar codificada em
comprimento de execução e mapeada por cores formato Targa, porque esta é a variante mais comprimida (os três
primeiros bytes do ficheiro devem ser 0
, 1
e 9
por esta ordem, ver o Tipo de Dados 9 na especificação). As suas dimensões
devem ser exatamente 64 pixels de altura e 64 pixels de largura.
Para guardar neste formato do GIMP, seleccione primeiro "Image > Mode > Indexed...", na janela pop-up defina "Maximum number of
colors" para 256. De seguida, seleccione "File > Export As...", introduza um nome de ficheiro que termine em . tga
e, na janela
pop-up, marque "RLE compression". Para uma ferramenta de conversão de linha de comandos, pode utilizar o ImageMagick,
convert (qualquer ficheiro de imagem) -colors 256 -compress RLE ícone.tga
.
O parâmetro de rótulo opcional é para exibir informações de versão ou lançamento ASCII no menu, e não para strings arbitrárias;
portanto, para poupar espaço, o UTF-8 não é suportado, a menos que também forneça easyboot/font.sfn
. (Uma fonte UNICODE requer
muito armazenamento, embora a Scalable Screen Font seja muito eficiente, ainda tem
cerca de 820K. Em contraste, o unicode.pf2 do GRUB é muito maior, cerca de 2392K, embora ambas as fontes contenham cerca de 55600
glifos em bitmaps de 8x16 e 16x16. A fonte ASCII incorporada tem bit mapas de 8x16 e apenas 96 glifos.)
Todas as linhas que vêm depois de uma linha menuentry
pertencerão a essa menuentry, excepto quando essa linha for outra linha
de menuentry. Por conveniência, pode utilizar blocos como no GRUB, mas estes são apenas detalhes sintáticos. As chaves são tratadas
como caracteres de espaço em branco. Pode omiti-las e usar tabulações, como num script Python ou Makefile, se preferir.
Por exemplo
menuentry FreeBSD backup
{
kernel bsd.old/boot
}
A linha que começa por partition
selecciona uma partição GPT. Deve ser precedido por uma linha menuentry
.
partition (partição UUID exclusivo)
Esta partição será utilizada como sistema de ficheiros raiz para a opção de arranque. O kernel e os módulos serão carregados a partir desta partição e, dependendo do protocolo de arranque, serão também passados para o kernel. A partição especificada pode residir num disco diferente do disco de arranque; o Easyboot iterará em todos os discos particionados GPT durante o arranque para o localizar.
Por conveniência, a partição é também procurada na linha kernel
(ver abaixo). Se a linha de comando de arranque fornecida
contiver uma string root=(UUID)
ou root=*=(UUID)
, não há necessidade de uma linha partition
separada.
Quando a partição não é especificada explicitamente, o kernel e os módulos são carregados a partir da partição de arranque.
A linha que começa por kernel
informa qual o ficheiro que deve ser inicializado e com que parâmetros. Deve ser precedido por
uma linha menuentry
.
kernel (caminho para o seu ficheiro kernel) (argumentos opcionais da linha de comandos de arranque)
O caminho deve apontar para um ficheiro existente, um binário executável do kernel, e deve ser um caminho UTF-8 absoluto na
partição raiz (ou de arranque). Se o kernel não estiver no directório raiz da partição, o separador de directório será sempre /
,
mesmo em sistemas UEFI. Se o nome contiver um espaço, este terá de ser escapado com \
. O caminho pode ser seguido por argumentos
de linha de comando, separados por um espaço. Para os kernels compatíveis com o Multiboot2, estes argumentos de linha de comando
serão passados na etiqueta linha de comando de arranque (tipo 1). Não serão alterados pelo Easyboot, nem analisados, exceto
pesquisados pelo especificador de partição.
Por predefinição, o Easyboot pode arrancar kernels compatíveis com Multiboot2 nos formatos ELF64 e PE32+/COFF (e em sistemas UEFI, aplicações UEFI também). Normalmente este protocolo não permite kernels da metade superior, mas o Easyboot viola um pouco o protocolo de uma forma que não quebra os kernels normais que não sejam da metade superior. Se quiser arrancar qualquer outro kernel, necessitará de um carregador de kernel plugin.
NOTA: ao contrário do GRUB, onde é necessário utilizar comandos especiais como "linux" ou "multiboot" para seleccionar o protocolo de arranque, aqui existe apenas um comando e o protocolo é detectado automaticamente pelo seu kernel em tempo de execução.
Pode carregar ficheiros arbitrários (ramdisks iniciais, drivers do kernel, etc.) juntamente com o kernel utilizando linhas que
começam por module
. Deve ser precedido por uma linha menuentry
. Note que esta linha pode ser repetida várias vezes em cada
entrada de menu. Se o protocolo de inicialização suportar um initrd, então a primeira linha module
será considerada como o initrd.
module (caminho para um ficheiro) (argumentos de linha de comando do módulo opcional)
O caminho deve apontar para um ficheiro existente e deve ser um caminho UTF-8 absoluto na partição raiz (ou de arranque). Pode ser seguido por argumentos de linha de comando, separados por um espaço. Se o ficheiro estiver comprimido e existir um plugin de descompressão para o mesmo, o módulo será descomprimido de forma transparente. A informação sobre estes módulos carregados (e descomprimidos) será passada para um kernel compatível com Multiboot2 nas tags Módulos (tipo 3).
O caso especial é se o módulo começar com os bytes DSDT
, GUDT
ou 0xD00DFEED
. Nestes casos, o ficheiro não será adicionado às
etiquetas Módulos, mas a tabela ACPI será corrigida para que os seus ponteiros DSDT apontem para o conteúdo deste ficheiro. Com
isto, pode facilmente substituir uma tabela ACPI da BIOS com bugs por uma fornecida pelo utilizador.
Também pode exibir um logótipo no centro do ecrã quando a opção de arranque for selecionada se colocar uma linha começando por
bootsplash
. Deve ser precedido por uma linha menuentry
.
bootsplash [#(cor de fundo)] (caminho para um ficheiro tga)
A cor de fundo é opcional e deve estar em notação HTML, começando com uma marca de hash seguida de 6 dígitos hexadecimais, RRGGBB.
Se o primeiro argumento não começar por #
, então será assumido um argumento de caminho.
O caminho deve apontar para um ficheiro existente e deve ser um caminho UTF-8 absoluto na partição de arranque (NÃO raiz). A imagem deve estar codificada num formato Targa com mapeamento de cores e comprimento de execução, tal como os ícones do menu. As dimensões podem ser qualquer coisa que caiba no ecrã.
Para iniciar o kernel em todos os núcleos do processador de uma só vez, especifique a directiva multicore
(apenas kernels de 64
bits). Deve ser precedido por uma linha menuentry
.
multicore
Se encontrar algum problema, basta executar com o sinalizador easyboot -vv
. Este irá executar a validação e exibir os resultados
detalhadamente no momento da criação da imagem. Caso contrário, adicione verbose 3
a easyboot/menu.cfg
para obter mensagens
detalhadas do tempo de arranque.
Se vir a string PMBR-ERR
no canto superior esquerdo com um fundo vermelho, significa que o seu CPU é demasiado antigo e não
suporta o modo longo de 64 bits ou o sector de arranque não conseguiu arrancar o carregador. Pode ocorrer apenas em máquinas
com BIOS, isso nunca pode acontecer com UEFI ou no RaspberryPi.
Mensagem | Descrição |
---|---|
Booting [X]... |
indica que a opção de inicialização (índice menuentry) X foi escolhida |
Loading 'X' (Y bytes)... |
ficheiro X de comprimento Y está a ser carregado |
Parsing kernel... |
kernel foi encontrado, detetando agora o seu formato |
Starting X boot... |
mostra que o carregador de arranque do sistema X foi detetado |
Starting X kernel... |
mostra que o kernel do sistema X foi detetado |
Transfering X control to Y |
indica que o ponto de entrada do modo X no endereço Y está prestes a ser chamado |
Se encontrar algum problema depois de ver a última mensagem, significa que o problema ocorreu no procedimento de arranque do sistema operativo, e não no carregador do Easyboot, pelo que terá de consultar a documentação do sistema operativo em questão para obter uma resposta. Caso contrário, sinta-se à vontade para abrir um problema no gitlab.
Plugins necessários: grubmb1
Este é o mais flexível, com múltiplas variações suportadas através de plugins:
Note a diferença: Multiboot2 simplificado não requer tags incorporadas, suporta kernels de metade superior, ponto de entrada limpo de 64 bits com parâmetros passados de acordo com o Multiboot2, SysV e ABI fastcall também.
Por outro lado, o Multiboot2 compatível com GRUB necessita
de tags incorporadas, não suporta kernels de metade superior nem de 64 bits, o ponto de entrada é sempre de 32 bits e os parâmetros
são passados apenas em eax
, ebx
.
Não são necessários plugins, mas deve configurar o Inicialização segura.
menuentry win {
kernel EFI/Microsoft/BOOT/BOOTMGRW.EFI
}
Plugins necessários: linux, ext234
Se o kernel não estiver colocado na partição de arranque, pode utilizar a linha de comandos para especificar a partição raiz.
menuentry linux {
kernel vmlinuz-linux root=PARTUUID=01020304-0506-0708-0a0b0c0d0e0f1011
}
Plugins necessários: obsdboot, ufs44
menuentry openbsd {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel boot
}
AVISO! Não utilize o plugin elf32 se estiver a arrancar o OpenBSD! O seu boot
afirma incorretamente
ser um ELF com um ponto de entrada SysV ABI de 32 bits, mas na verdade tem uma entrada de modo real de 16 bits.
Plugins necessários: fbsdboot, ufs2
Em sistemas BIOS legados, especifique o carregador boot
.
menuentry freebsd {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel boot/boot
}
Nas máquinas UEFI, utilize loader.efi
na partição de arranque (não são necessários plugins).
menuentry freebsd {
kernel boot/loader.efi
}
Se o seu sistema de ficheiros raiz for ZFS, copie este ficheiro (boot
na BIOS, loader. efi
no UEFI) para (indir)
e NÃO
especifique uma partição raiz.
Plugins necessários: fdos
Mover os ficheiros do FreeDOS para (indir)
(o FreeDOS utilizará a partição de arranque como partição raiz).
menuentry freedos {
kernel KERNEL.SYS
}
Se o arranque parar após imprimir copyright e - InitDisk
, então o kernel do FreeDOS foi compilado sem suporte para FAT32.
Descarregue um kernel diferente, com f32
no nome.
Plugins necessários: reactos
menuentry reactos {
kernel FREELDR.SYS
}
Plugins necessários: menuet
menuentry menuetos {
kernel KERNEL.MNT
module CONFIG.MNT
module RAMDISK.MNT
}
Para desativar a configuração automática, adicione noauto
à linha de comandos.
Plugins necessários: kolibri
menuentry kolibrios {
kernel KERNEL.MNT syspath=/rd/1/ launcher_start=1
module KOLIBRI.IMG
module DEVICES.DAT
}
O plugin também funciona em máquinas UEFI, mas também pode utilizar o uefi4kos.efi
na partição de arranque (sem necessidade de
plugin).
Plugins necessários: grubmb1
menuentry serenityos {
kernel boot/Prekernel
module boot/Kernel
}
Plugins necessários: grubmb1, befs
menuentry haiku {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel system/packages/haiku_loader-r1~beta4_hrev56578_59-1-x86_64.hpkg
}
Nas máquinas UEFI, utilize haiku_loader.efi
na partição de arranque (não são necessários plugins).
menuentry osz {
kernel ibmpc/core
module ibmpc/initrd
}
Não são necessários plugins.