Manual

do

Maker

.

com

Como trocar o logo do kernel Linux

Como trocar o logo do kernel Linux

Você pode escrever drivers, aplicar patches, DEPURAR I/O, fazer cross-compilling, mas nada vai impressionar seus amigo tanto quanto saber como trocar o logo do kernel Linux no seu Raspberry. Esse processo serve também para qualquer Linux, portanto, se você não tem um Raspberry mas quer seus amigos (de humanas) pagando um pau e te chamando de 'hacker', você também pode desfrutar desse recurso, que é bico, muito bico.

Esse post já estava planejado a vários dias, por isso escrevi os dois posts que o antecedem, tratando-se da virtualização de um Raspbian e o post da compilação do kernel para Raspberry.

Mãos à obra

Primeiro, permita-me desabilitar a droga do touchpad do notebook (utilizo mouse). Se o seu touchpad também te incomoda e você tem um mouse, basta executar o comando:

xinput list

Na lista que aparece, você deve identificar o id do touchpad. Após isso, execute o comando para desabilitá-lo:

xinput set-prop 13 "Device Enabled" 0

Como você pode reparar na imagem a seguir, o ID do meu touchpad era o 13:

xinput-touchpad.webp

Agora que o problema já está sanado, hora da diversão.

Como trocar o logo do kernel

Não será qualquer imagem que ficará boa, principalmente porque ela só pode possuir uma baixa quantidade de cores. O tamanho pode variar bastante, mas também existe um limite. Basicamente o que faço é editar a imagem original para utilizar suas dimensões como base para a nova imagem, apenas isso. Para tal, abro-a no Gimp.

Como você pretende trocar a imagem original, necessariamente deverá compilar um novo kernel, e para isso deverá seguir o processo de preparação descrito nos links do início desse artigo. Logo após ter os fontes do kernel do Raspberry e antes de iniciar qualquer compilação, você poderá editar a imagem conforme eu faço. Estando no mesmo nível de diretório em que se encontra os fontes do kernel, faça isso:

gimp linux/drivers/video/logo/logo_linux_clut224.ppm

Eu fiz uma imagem do meu logo em 80x80, mas você pode variar esse tamanho. Então mude a imagem para Indexed com profundidade de 224 cores (menu Image->Mode->Indexed) e salve. Se necessário for, ajuste as cores da imagem escolhida.

indexed-colors.webp

Depois, faça as conversões no console e copie-o em substituição ao original (ou faça backup dele primeiro, mas eu não me importo com isso):

sudo apt-get install netpbm
convert DobitAoByte_kernel_logo.png logo_passo1.ppm
ppmquant 224 logo_passo1.ppm > logo_passo2.ppm
pnmnoraw logo_passo2.ppm > logo_linux_clut224.ppm
cp logo_linux_clut224.ppm linux/drivers/video/logo/

Cross-compilling

Essa é a hora mais importante, onde você vai gerar o kernel e todas suas dependências, tudo por causa de um logo! Mas o prazer de ver o sistema dando boot com sua personalização é indiscritível. Fiz isso por muitos anos no Phantom e fiz pela primeira vez no Raspberry e o prazer foi igual!

diretorios.webp

Você pode opcionalmente compilar em uma máquina virtual, porém acredito que para essa tarefa seja mais complicado. Por isso, veja como fazer a compilação cruzada para o Raspberry nesse outro post que escrevi recentemente. Nesse post anterior, tenho o kernel em um nível de diretório igual ao toolchain. Faça o mesmo:
Entre no diretório do kernel e digite:

PATH=$PATH:../tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/

De resto, siga o processo do post supracitado.

Copiar o kernel para o cartão

Se o kernel tiver diferenças significativas (principalmente relacionada à versão), as coisas podem deixar de funcionar no sistema, por isso o ideal é recompilar tudo como fiz no artigo citado mais acima, e então copiar para o cartão. Claro, você pode experimentar um boot apenas copiando o kernel e, se o boot não funcionar, fazer posteriormente a cópia completa. Só o kernel não funcionou para mim, mas o Raspberry ligou e ficou na tela colorida inicial. Voltei ao notebook e fiz o processo de cópia completa e sem maiores problemas o boot sucedeu sem problemas.

Se você já está com o sistema no cartão, o processo é mais simples. No caso de você estar modificando uma imagem para posteriormente gravá-la no sdcard, você precisará montar a partição como dispositivo de loop antes de copiar. Para entender os detalhes, sugiro a leitura desse outro post onde trato disso. Estou deixando abaixo um exemplo apenas da cópia do kernel através da montagem de uma partição da imagem. Lembre-se que para a cópia completa relatada no artigo de compilação do kernel, você deverá disponibilizar também a segunda partição da imagem raw.

sudo su
mount -o loop,offset=$[8192*512] 2016-03-18-raspbian-jessie.img /mnt
cp /mnt/kernel7.img /tmp/kernel7.img-bkp
cp linux/arch/arm/boot/zImage /mnt/kernel7.img
sync
umount /mnt

Transfira a imagem para o cartão e experimente. Se isso não funcionar (ou se preferir fazer diretamente do jeito certo), faça a cópia conforme descrito nesse artigo, na parte "Copiar as coisas para o cartão". Você pode montar a imagem do cartão como no exemplo acima, mas nesse caso você precisa ler esse artigo pra entender como montar a partição de dentro de um arquivo raw. O resto é igual ao do post de compilação do kernel.

No boot você deverá ver uma belezinha como essa, se tudo der certo:

kernellogo-bb-300x219.webp

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.