domingo, 30 de dezembro de 2007

LILO com Imagem

Hoje foi um dia bem produtivo. Para meu PC claro. Aproveitei o dia para fazer uma limpeza no PC, reinstalar os sistemas operacionais, baixar atualizações, entre outras coisas.

Os mais expressivos de hoje foram a instalação do Gnome.SlackBuild, compilação do Gnome 2.20.2 para o Slackware 12; O kernel 2.6.23.12 com minhas configurações pessoais (não, não programo em C a esse ponto, só mexendo nos que seria compilado como built-in, como módulo ou ficaria de fora) e a configuração do Lilo para minhas necessidades específicas.

Tudo foi como o de sempre, até que tive a idéia de "enfeitar" o sistema, e colocar uma telinha de boot mais arrumadinha. Então, procurei, procurei e achei esse tutorial do PiterPunk que posto aqui para vocês. Espero que gostem, foi muito intuitivo pra mim.

LILO com Imagem no Boot

O LILO possui diversos recursos (muitos deles pouco conhecidos) e, um deles, é a capacidade de se colocar uma imagem bitmap no boot com menus, contagem regressiva, etc...

1. Introdução

Neste artigo vamos deixar o boot do Linux um pouco mais simpático, utilizando apenas ferramentas disponíveis na própria distro, sem patches e sem downloads estranhos. Escrevi este artigo utilizando o Slackware 8.1, se você estiver utilizando algo diferente, talvez tenha que adaptar algumas coisas.

2. O boot loader correto

Se dentro do seu /boot houver um arquivo boot.b você deve trocar o boot loader. Se não houver esse arquivo, pode ignorar essa seção e ir para a seção 3.

Uma das primeiras coisas a se fazer é escolher um boot loader que suporte mostrar imagens. O pacote do lilo já disponibiliza três deles (um para texto simples, um para menus e um terceiro com suporte a imagens), e está padronizado para utilizar o boot-menu.b, mudar isso é muito fácil:

# rm /boot/boot.b
# ln -s /boot/boot-bmp.b /boot/boot.b

A primeira linha apaga o link simbólico (que indicava o boot-menu.b) e a segunda cria um novo link, utilizando o boot-bmp.b.

3. Escolhendo uma imagem

A imagem para ser colocada na tela, deve ter 640 pontos na horizontal, 480 na vertical e no máximo 16 cores (4 bits). Você pode compactar a imagem utilizando RLE (vale a pena). O próprio pacote do lilo disponibiliza algumas imagens, e você pode também criar a sua própria com o GIMP. Você pode ver as imagens em: /usr/doc/lilo-22.2/sample.

Se você quiser desenhar a sua própria imagem, esteja atento no tamanho e no número de cores. Tente fazer seu desenho com o menor número de cores possível, para não ser surpreendido durante a conversão. Depois de editar o seu desenho, clique com o botão direito na imagem e selecione: Image->Mode->Indexed. Selecione o número de cores para 16 e clique no OK.

Pronto. Agora você deve salvar a sua imagem como BMP (use o RLE, a imagem fica bem menor), com isso você já terá uma imagem pronta. Antes de fechar o GIMP, entre em: Dialog -> Indexed Palette... irá aparecer uma lista com vários quadradinhos coloridos, estas são as cores que sua imagem usa.

Elas são numeradas de 0 a 15 (se houverem menos, isso quer dizer que você pode adicionar algumas cores a mais, até o máximo de 16 cores). Anote em um papel o número das cores que você gostaria de usar nos textos da sua tela de entrada. Por exemplo, você quer escrever em branco em um fundo preto, com um sombreado cinza, procure na paleta de cores o preto, o cinza e o branco e anote o número de cada uma delas em um papel.

Por último, copie a imagem que você criou para o diretório /boot. Ela não precisa ficar nesse diretório, mas melhora bastante a organização colocar o que for relacionado ao boot nele.

4. Configurando o lilo.conf

Esta é uma das partes mais elaboradas, você terá de colocar parâmetros para que o lilo saiba qual imagem deve carregar, quais as cores dos textos que irão aparecer e onde os textos irão aparecer...

Para isso, abra o lilo.conf e comece comentando (colocando um # na frente da linha) uma linha como esta:

message = /boot/boot_message.txt

Logo abaixo dela, você vai incluir os seus novos parâmetros para incluir a imagem e toda apresentação. Os parâmetros estão listados logo abaixo, com uma breve explicação do que eles fazem e do que deve ser feito com eles.
bitmap = imagem

Este é bem simples, onde está imagem, substitua pela figura que você fez/baixou/escolheu, no meu caso é /boot/slack.bmp (é, você tem que colocar o caminho inteiro, se a figura estivesse dentro do /usr/local teria que colocar /usr/local/slack.bmp)
bmp-colors = fg,bg,sh,h-fg,h-bg,h-sh

Aqui você escolhe as cores dos textos nos menus. Você anotou os números das cores que te interessavem naquela paleta, não anotou? Se anotou, agora é a hora de usar:

* fg - Cor de frente (das letras própriamente ditas)
* bg - Cor de fundo (se você colocar nada, fica transparente)
* sh - Cor da "sombra" das letras (pode deixar sem)
* h-fg - Cor de frente do texto selecionado
* h-bg - Cor de fundo do texto selecionado
* h-sh - Cor da sombra do texto selecionado

Algumas dessas opções podem ser omitidas, por exemplo se você colocar:

bmp-colors = 9,,,0,9

Você está escolhendo 9 como cor de frente, transparente como cor de fundo, sem sombra, 0 como cor de frente do texto selecionado, 9 como fundo do texto selecionado e o texto selecionado também está sem sombra.
bmp-table = x,y,colunas,linhas,espaço

Aqui você determina a posição em que vão começar a aparecer os itens dos menus e o formato deles. Os itens do menu, aparecem ordenados verticalmente, em colunas e quantidade de colunas pode variar de 1 a 4.

A tela é subdividida em 80 posições na horizontal e 30 na vertical. Você também pode utilizar diretamente o endereçamento em "pixels", só que para isso precisa colocar um p depois do número (por exemplo: 320p, 24p, etc...)

* x - Coordenada horizontal da primeira coluna.
* y - Coordenada da parte superior dos menus.
* colunas - Quantidade de colunas (1 a 4)
* linhas - Quantidade de linhas em cada coluna.
* espaço - Espaçamento entre as colunas. Este número é contado a partir do início da coluna anterior. Cada coluna tem um mínimo de 17 espaços, se você quiser deixar um espaço de 2 caracteres entre uma coluna e outra, este valor deve ser de 19 (os 17 da coluna anterior, mais 2 espaços).

Se você possuir apenas uma coluna, pode omitir o último valor (que seria o espaço entre as colunas). Muito cuidado com as posições, uma boa apresentação depende muito da localização dos menus.
bmp-timer = x,y,fg,bg,sh

Este parâmetro é optativo, ele é responsável por um cronômetro que conta o tempo restante para que o sistema inicie o boot automaticamente. Ele é bem semelhante aos anteriores

* x - Coordenada horizontal do relógio.
* y - Coordenada da parte superior do relógio.
* fg - Cor de frente dos números do relógio
* bg - Cor de fundo (se você colocar nada, fica transparente)
* sh - Cor da "sombra" dos números (pode deixar sem)

As posições x e y obedecem os mesmos critérios que no bmp-table e as cores os mesmos que vimos no bmp-colors.
5. Botando para funcionar

Agora, digite:

# lilo

Reboote a sua máquina e espere aparecer a maravilhosa tela de abertura. Existem exemplos prontos de lilo.conf usando imagens na documentação do LILO.

Apêndice

lilo.conf

Abaixo eu coloco meu lilo.conf, para você poder ver as alterações. A imagem original você pode baixar aqui:
boot = /dev/sda1
#message = /boot/boot_message.txt
lba32
prompt
timeout = 150
verbose = 1

bitmap=/boot/boot.b
bmp-colors = 7,,,8,,
bmp-table = 60,220p,1,4
bmp-timer = 65,19,8,,

change-rules
reset

vga = normal

default = 2.6.23.12

other = /dev/sda4
label = Windows
table = /dev/sda

image = /boot/2.6.23.12-caeryn/bzImage
root = /dev/sda1
label = 2.6.23.12
read-only

image = /boot/2.6.23.1/vmlinuz
root = /dev/sda1
label = 2.6.23.1
read-only

image = /boot/2.6.22-ck1/vmlinuz
root = /dev/sda1
label = 2.6.22-ck1
read-only


Fonte: Site Pessoal do PiterPunk: http://piterpunk.info02.com.br