![[MAC0470#02] - Reiniciando o Setup](/kernel-dev.jpg)
[MAC0470#02] - Reiniciando o Setup
Tentando novamente configurar o setup
mac0470
No post anterior, tudo ia muito bem até que tudo deu errado. Então, em casa, com calma, recomecei os tutoriais com mais atenção (e agora um pouco mais de experiência com os problemas que eu poderia encontrar).
Virt-Resize
Já no início, esbarrei com um problema ao executar o virt-resize
para redimensionar a imagem que estavamos usando. Durante as aulas, a solução que encontrei foi usar sudo
. Isso acarretou em todos comandos que envolviam o uso das imagens da máquina virtual também necessitavam de sudo
. Pesquisando on-line, acabei encontrando o motivo. Por alguma razão, o kernel instalado na máquina host não possui permissão de leitura, então duas soluções me foram oferecidas:
- Baixar um kernel alternativo e informar a sua existência para o
libguestfs
usando uma variável de ambiente - Dar a permissão de leitura para o kernel instalado na minha máquina usando
sudo chmod +r /boot/vmlinuz*
A segunda opção, apesar de me parecer a menos segura, foi a que acabou funcionando comigo. Não explorei os eventuais problemas de segurança que minha ação possa trazer. Caso esteja lendo isso, execute o comando chmod
informado por sua própria conta e risco.
SSHD
Superada a primeira barreira, consegui iniciar a máquina virtual. Dessa vez, o problema com o ssh foi simples de ser resolvido. Bastou seguir o tutorial e, após reiniciar a máquina virtual, rodar novamente o comando dpkg-reconfigure
. Com isso, o deamon de ssh funcionou perfeitamente e pude obter a lista de módulos (etapa listada como opcional, mas que, na minha visão, foi crucial para a compilação do kernel posteriormente).
Compilando
Com tudo configurado, agora era hora de compilar o kernel pela primeira vez. A compilação foi muito mais rápida e sem surpresas. Dessa vez, usei a lista de módulos que coletei da máquina virtual e ativei o “modo performance” da minha máquina (opção de economia de energia do Ubuntu). Agora a compilação foi feita em “apenas” 7 minutos (antes levava 20).
Enquanto terminava o terceiro tutorial, já adicionando um módulo, notei que esqueci de fazer uma modificação sugerida no simple_mod.c
para usar o simple_mod_part.c
. Isso me levou a minha primeira experiência de compilação sem estar seguindo o passo a passo. Foi bastante simples, bastou executar o make M=drivers/misc/
, copiar o .ko
para a localização correta dentro da máquina virtual, usar o modprobe
para instalar e remover o módulo e ver o log do dmesg
para ver a execução correta da versão modificada do simple_mod.c
Conclusão
Toda a confusão que tive enquanto tentei realizar o setup pela primeira vez foi resolvida apenas lendo os textos com mais atenção e pesquisando melhor na internet. Na maioria das vezes, ao invés de consertar uma gambiarra com outra, é muito mais eficaz se desfazer de tudo e recomeçar usando a experiência que você adquiriu.
Um dos problemas que ainda me restam é a confusão com tantos comandos de compilação disponíveis. Temos:
make M=
make modules_prepare
make Image.gz modules
make modules_install
(precisa definirINSTALL_MOD_PATH
)make menuconfig
Claro, sempre definindo ARCH=arm64
e CROSS_COMPILE=aarch64-linux-gnu-