sexta-feira, 17 de agosto de 2018

Personalizando o menu do GRUB - 1st time

Quem nunca?

Ligar o computador para uma seção de trabalho ou de lazer pode se tornar uma experiência mais interessante se você personalizar o menu do boot loader!


Se você pesquisar na internet, vai achar milhões de temas prontos para instalar em seu sistema. Um ou dois podem até ter a sua cara. Mas não é muito complicado você mesmo deixar o menu do grub do jeito que você quiser! Em menos de meia hora, dá para deixar ele com um aspecto agradável aos seus olhos. Tudo vai depender do nível de detalhes que você deseja adicionar.

Neste artigo iremos dar algumas dicas de como criar um tema para o menu do GRUB. Como exemplo, iremos mostrar o passo-a-passo de criação do menu mostrado na figura acima.


Na natureza nada se perde, nada se cria, tudo se copia!


Para simplificar as coisas, a gente pode partir de um tema preexistente, copiar ele, e depois fazer as modificações necessárias para deixar ele do nosso jeito.

Instalando um tema: o breeze


No repositório padrão do openSUSE existe um tema bem básico, chamado Breeze. Para instalar o tema Breeze, basta pesquisar por grub2-theme-breeze no Gerenciador de Software e instalar ele, ou simplesmente abrir um terminal e digitar:

sudo zypper in grub2-theme-breeze

Usando o tema breeze


Depois de "instalar" o tema breeze, você precisa configurar o "Carregador de inicialização" para poder utilizá-lo. Observem a figura abaixo, que lá vão algumas dicas!


Na aba "Parâmetros do Kernel" você pode configurar um tema para o menu do GRUB, como mostrado na figura acima.

Grub ou Grub2

Dica 1: ao selecionar o tema breeze, observe a versão do grub que seu sistema está usando. O "tira-teima" é o nome da pasta! No nosso caso, estamos usando a versão dois, pois o caminho para o tema é /boot/grub2/themes/breeze. Elementar!

É importante saber qual versão do grub está sendo usada porque iremos digitar alguns comandos via terminal (CLI, ou Command Line Interface). A sintaxe dos comandos poderá começar com grub ou grub2 (grub-mkfont ou grub2-mkfont, por exemplo), a depender da versão do grub.

Resolução do console

Dica 2: Por maior que seja seu monitor, cuidado com a resolução configurada para o GRUB! Lembrem-se que quando o GRUB entra em ação o Kernel do Linux ainda nem foi carregado, muito menos o X Server. Então não há garantia que altíssimas resoluções serão possíveis. Para garantir, é melhor configurar seu tema para uma resolução VGA típica, como a 1024x768.

Como é o tema breeze


Na figura a seguir podemos ver a "cara" do tema breeze!

O GRUB e o tema breeze!

Podemos ver que o tema breeze é bem básico. Tudo o que iremos fazer é dar uma "repaginada" no tema, modificando os fonts utilizados, e arrumando um pouco o texto do menu.

Variações sobre o tema

De posse das informações que iremos passar, nada impedirá vocês no futuro de fazer o que quiserem, como por exemplo adicionar um "papel de parede" ao menu. Pode ser um bem discreto, como o mostrado na figura a seguir, ou um mais ao seu gosto!



Dica 3: Para adicionar uma imagem no "espaço de trabalho" do menu do grub, basta adicionar a seguinte linha no arquivo theme.txt

desktop-image: "background.png"

Naturalmente, você deverá criar uma boa imagem e salvá-la na pasta do tema, com o nome informado acima (mas pode ser qualquer nome válido, e não apenas o sugerido). Além disso, a imagem precisa estar numa resolução compatível com a resolução selecionada para a tela durante o boot (vide dica 2 mais atrás), senão ela poderá ficar distorcida.

Copiando o tema breeze: MyBreeze!


Agora que já instalamos o breeze, e sabemos onde ele se encontra, podemos copiá-lo simplesmente abrindo um terminal e digitando:

sudo cp -r /boot/grub2/themes/breeze /boot/grub2/themes/MyBreeze

Instalando Fonts "artísticos"


Para prosseguirmos, vamos instalar um pacote de fontes True Type que, apesar de não serem indicadas para escrever uma tese de doutorado, são muito legais se você quiser fazer "decorações" em textos. Para isto, basta digitar o seguinte comando no terminal:

sudo zypper in free-ttf-fonts

A descrição desse pacote diz o seguinte:

"free-ttf-fonts - Free TrueType Art Fonts
More than 300 free fonts in True Type format. Most of them are in the art style and unusable as desktop fonts, but are great for any poster or illustration."

"Most of them are in the art style and unusable as desktop fonts"


Criando nossas Fonts para o GRUB


O GRUB tem uma forma especial de exibir textos, usando um formato próprio de fonts. Obviamente, existe um comando para facilitar a criação de fonts para o grub. Basicamente, é feita uma conversão de fonts True Type para o formato reconhecido pelo grub.

Selecionamos duas fontes básicas para o nosso tema:

Iomanoid - Para o cabeçalho "Selecione o Sistema Operacional"
Cuomotype - Para os demais textos

Dito isto, vamos criar as fontes:

1) primeiramente mudando para o diretório do nosso tema

cd /boot/grub2/themes/MyBreeze


2) depois, digitando os comandos de criação das fonts

sudo grub2-mkfont -v -s 36 -o Iomanoid-regular-36.pf2 /usr/share/fonts/truetype/iomanoid.ttf
sudo grub2-mkfont -v -s 22 -o cuomotype-regular-22.pf2 /usr/share/fonts/truetype/cuomotyp.ttf
sudo grub2-mkfont -v -b -s 22 -o cuomotype-bold-22.pf2 /usr/share/fonts/truetype/cuomotyp.ttf

É fundamental a opção -v (verbose) nos comandos acima, para que possamos saber o "nome real" da font, pois esse nome deverá ser usado no arquivo de configuração theme.txt.

Uma saída típica do comando grub2-mkfont com a opção -v é algo como:

Font name: Cuomotype Regular 22
Max width: 17
Max height: 20
Font ascent: 18
Font descent: 5
Number of glyph: 203

Editando o arquivo theme.txt


O arquivo theme.txt serve para o grub montar o menu de inicialização com uma formatação definida. Assim, vamos fazer algumas modificações no arquivo theme.txt do nosso tema.

Considerando que o terminal continua aberto no diretório /boot/grub2/themes/MyBreeze, basta digitar

sudo nano theme.txt

O editor de textos nano em ação!

Caso você não tenha o nano instalado em seu sistema, basta digitar agora:

sudo zypper in nano

Obviamente, você pode usar qualquer outro editor de textos de sua preferência!

Para simplificar, a seguir mostraremos partes do texto onde foram feitas as alterações. O que realmente foi alterado vai estar em negrito e em azul. Todo o restante será apenas para facilitar a identificação.

O "cabeçalho" do menu de boot


# TODO: file bug report
+ label {
    top = 50%-275 # (150+43+32) menu + height + spacer
    left = 0%
    width = 100%
    text = "Selecione o Sistema Operacional"
    align = "center"
    font = "Iomanoid Regular 36"
    color = "#ffffff"
}

Aqui nós reposicionamos o texto ( top = ), colocando ele um pouco mais acima. Colocamos a mensagem em bom português (em text = ). E finalmente usamos a font bem bacana que nós criamos com esse propósito (font = )!


KnowledgeBase #1: A lição aqui é o "comando" + label. Para inserir um texto em qualquer posição da tela, basta inserir esse comando no arquivo theme.txt, quantos quiser; e informar os parâmetros de posição (top, left); tamanho ou largura (width), como preferir chamar; o texto (text); o alinhamento do texto (align) dentro da "janela" definida por top, left e width; a font a ser usada (font); e a cor (color).


O menu propriamente dito



# Show the boot menu
+ boot_menu {
    left = 50%-400
    width = 800
    # NB: this is scooped upwards from the middle.
    #     effectively 50px are below and the remaining 150 above
    top = 50%-150
    height = 200
    # Icon
    icon_width = 4
    icon_height = 0
    # Item
    item_height = 33
    item_padding = 1
    item_icon_space = 0
    item_spacing = 1
    item_font =  "Cuomotype Regular 22"
    item_color = "#7f8c8d"
    selected_item_font = "Cuomotype Bold 22"
    selected_item_color = "#ffffff"
}


Aqui, nós reposicionamos a "janela" de texto do menu 400 pixels para a esquerda e aumentamos sua largura em mais 400 pixels. Fizemos isso porque aumentamos o tamanho do font de 16 para 22 e, principalmente, para podermos visualizar mais detalhes do item a ser escolhido (versão do kernel, etc). 

A caixa de texto explicativo


+ vbox {
    left = 50%-200 # same as menu
    top = 50%+113 # (50+16+19+28) half menu + spacer + progress + spacer
    width = 400 # same as menu
    + label { width = 400 align = "left" color = "#7f8c8d" font = "Cuomotype Regular 22" text = "[Enter] Boot pelo SO selecionado" }
    + label { width = 400 align = "left" color = "#7f8c8d" font = "Cuomotype Regular 22" text = "[↑ ↓] Navegação" }
    + label { width = 400 align = "left" color = "#7f8c8d" font = "Cuomotype Regular 22" text = "[E] Editar item Selecionado" }
    + label { width = 400 align = "left" color = "#7f8c8d" font = "Cuomotype Regular 22" text = "[C] Linha de comando do GRUB" }
}


Aqui nós colocamos um texto em português, usamos nossa fonte, e mudamos o alinhamento para à esquerda!

A contagem regressiva


# Show text progress bar
+ progress_bar {
    id = "__timeout__"
    left = 50%-400 # same as menu
    top = 50%+66 # (50+16) half menu + spacer
    width = 800 # same as menu
    height = 19 # 14pt
    show_text = true
    font = "Cuomotype Regular 22"
    text_color = "#7f8c8d"
    align = "center"
    text = "@TIMEOUT_NOTIFICATION_MIDDLE@"
    bar_style = "progress_bar2_*.png"
}


Aqui nós reposicionamos a "janela" do texto 400 pixels para a esquerda e aumentamos seu tamanho em mais 400 pixels, para ficar igual ao menu, e porque aumentamos o tamanho do font de 14 para 22.


Salvando tudo e testando


Para salvar as alterações feitas com o nano basta apertar Ctrl + O, apertar Enter. Para sair, apertar Ctrl + X.

Agora que tudo está preparado em nosso tema, basta abrir novamente o "Carregador de inicialização" e configurar o grub para usar nosso tema, do jeito que fizemos anteriormente como o tema breeze.



Agora é só reiniciar o computador para ver como ficou seu tema!

Conclusão!


Como pudemos ver, foram necessárias poucas alterações em theme.txt para deixar o menu do grub com a "nossa cara". Com um pouco de experimentação e observação, dá para descobrir muita coisa interessante do que é possível fazer em theme.txt. Baixar e instalar outros temas, dar uma olhada no arquivo theme.txt de cada um deles pode ser uma boa fonte de aprendizado. Algo a se fazer nas férias, talvez! :-)

Mas se você quiser uma boa fonte de consulta sobre esse assunto, vamos compartilhar um link para um tutorial que descobrimos e que, ao que parece, aborda quase tudo sobre temas para o grub. Apesar de que ele não foi nem 1% necessário para o trabalho que fizemos aqui, ele vai ser importante caso desejem se aprofundar no assunto. Ei-lo!




Até o próximo!

Nenhum comentário:

Postar um comentário