Manual
do
Maker
.
com
Há muitos anos, surgiu um sistema operacional que modificou a forma de usar Linux, e graças a ele o Linux se popularizou muito, porque a partir de então foi possível fazer boot sem instalar nada no HD. O Sistema se chamava Knoppix e utilizava os sistemas cloop e squashfs para alocar o sistema operacional na memória RAM e extender o acesso aos aplicativos que estavam no CD. O que aconteceu a partir daí foram variações desse sistema, nada mais foi novo por muito tempo, mas uma das remasterizações fez bastante sucesso, o saudoso Kurumin, que era uma remasterização do Knoppix com alguns scripts adicionados para cumprir tarefas que os usuários de Windows não teriam a habilidade necessária para fazê-las devido às diferenças dos sistemas operacionais. Bem, hoje temos outras arquiteturas que nos são acessíveis, além da iX86 e AMD64. Além dos MIPS (utilizados principalmente em roteadores WiFi), temos os ARM como o Raspberry, e a construção do sistema é bastante diferente. E mais uma vez, temos uma peça importante na remasterização do sistema, que é um script criado pelo Leonardo Lontra (o mesmo que escreve patches para a mainline do OpenCV), onde com 3 comandos você reconstrói sua própria imagem a partir de uma imagem do Raspbian.
Primeiro de tudo, você tem que estar em um sistema Linux nativo (preferencialmente baseado em Debian ou ele próprio). Se for usuário de Windows, pode tentar fazê-lo em uma máquina virtual, mas não recomendo.
Além de um sistema Linux nativo, será necessário instalar alguns pacotes previamente:
sudo apt-get update
sudo apt-get install qemu qemu-user-static binfmt-support rsync kpartx git
Clone o repositório do projeto com o git:
git clone https://github.com/lhelontra/embedtool.git
Após feito, você terá o diretório embedtool contendo (entre outros) o script embedtool.sh. De permissão de execução ao script antes de iniciar sua utilização:
cd embedtool && chmod 700 *.sh
Vá até o site do Raspberry através desse link e baixe o Raspbian Stretch Lite (ou se tiver uma versão mais atual quando você estiver lendo isso, baixe a mais atual). Poderia ser a versão Desktop, mas todo o processo será mais rápido para uma prova de conceito.
Depois de feito o download, já descomprima a imagem de sistema.
unzip *.zip
No meu sistema as coisas já estão um pouco diferentes, mas eu vou passar o comando do modo que você deverá digitar.
Você tem 2 opções; uma delas é extrair o sistema a partir da imagem que fez download e a outra é extrair o sistema a partir de um SD que você está utilizando para, por exemplo, distribuir a suas personalizações em outros Raspberry Pi. A partir de agora, assume-se que já estamos como root. Para tal, digite:
sudo su
E entre com a senha.
Começando pela imagem previamente obtida, o comando deve ser:
~/embedtool/embedtool.sh -v -t rpi -m 2017-09-07-raspbian-stretch-lite.img /mnt/rpi/
Esse comando dará acesso ao conteúdo das partições existentes na imagem.
Se você pretende remasterizar um sistema já em uso, sem problemas. Apenas atente-se em desligar corretamente o sistema antes de desligar o Raspberry, então coloque o cartão de memória em seu computador e proceda da seguinte maneira (presupondo um dispositivo /dev/sdb):
~/embedtool/embedtool.sh -v -t rpi -m /dev/sdb /mnt/rpi/
O resultado é semelhante à montagem anterior, exceto por não conter as informações de offset porque o SD não é montado como um dispositivo loop, mas como um dispositivo normal.
Agora que os dados do sistema estão disponíveis, é hora de copiar esse sistema para manipulação. O comando para isso é tão simples quanto os demais:
~/embedtool/embedtool.sh -v -t rpi --copy /dev/sdb sdcard
Isso criará um diretório chamado sdcard contendo todo o sistema, que agora estará pronto para ser modificado.
Outra opção é copiá-lo diretamente do dispositivo, substituindo aqui_mesmo por /dev/sdb.
Para personalizar o sistema, o script faz chroot na raiz criada pela extração. O chroot significa "change root", porque a sua raiz de sistema passará a ser o sistema alvo. Isto é, se resolver instalar algum pacote, poderá utilizar o apt-get tranquilamente, tudo será instalado em seu sistema que está sendo modificado, fora do sistema nativo. Mas certifique-se previamente de que executou o seguinte comando:
~/embedtool/embedtool.sh -v -t rpi -c sdcard
Como você pode notar na imagem acima, a primeira coisa que já dá pra ajustar é o locale. Se não sabe como ajustar o idioma do sistema, sugiro que leia esse outro artigo a respeito, deixe ele aberto em uma aba ao lado e continue a leitura aqui.
Estando com esse chroot, você pode fazer qualquer coisa que desejar e depois bastará gerar a imagem do sistema. Por exemplo, se você quiser trocar o logotipo do kernel, pode seguir esse outro tutorial que escrevi a respeito. Se desejar compilar seu próprio kernel, tem esse tutorial aqui, inclusive com outros métodos para essa compilação.
Tendo concluído as modificações, devemos gerar uma nova imagem para gravar no SD card. Para isso, simplesmente saímos do chroot (usando Ctrl+D) e executamos o comando:
~/embedtool/embedtool.sh -v -t rpi -bimg rpi_img rpi_image.img
Acabou, agora basta fazer o que seria feito na imagem original, gravando-a para o dispositivo de destino:
dd if=rpi_image.img of=/dev/sdb
sync
A imagem original continua montada no sistema. Como ela não é mais necessária, basta desmontá-la:
~/embedtool/embedtool.sh -v -t rpi -u aqui_mesmo
Um problema que você pode se deparar é com o boot apenas do kernel. Ou um pouco pior, nenhum boot. Se for o caso (até recomendo que veja isso antes de gerar uma nova imagem), certifique-se de que o cmdline.txt está apontando diretamente para o dispositivo invés de um UUID. Ele deve ficar desse modo:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
No meu caso, como utilizei o SD card diretamente em um slot do meu ultrabook, o dispositivo é diferente (mmcblk0), mas se o seu dispositivo for /dev/sdb, apenas substitua por /dev/sdb1 e /dev/sdb2, respectivamente.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.