Não é o kernel do Linux que faz a resolução do DNS, mas sim a biblioteca C. Qual biblioteca C o seu sistema LTIB está usando? Por padrão, o Buildroot está usando o uClibc, que não possui um arquivo de configuração nssswitch.conf
.
Eu tenho 2 dispositivos Linux diferentes, o kernel de um é feito usando ltib ( L a partir de agora), e o outro é por buildroot ( B a partir de agora).
Consigo adicionar um resolvedor de DNS a B usando:
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
e, em seguida, ping google.com
funciona bem.
Por outro lado, em L , o mesmo schtik não funcionou, e embora o ping 8.8.8.8 esteja correto, ping google, google.com ou www.google.com sempre falha.
O que eu quero fazer é de alguma forma comparar os dois kernels para entender o que está dentro de B que está faltando em L e habilita a resolução de DNS.
Onde e o que devo procurar?
Eu usei este guia e com isso eu entendo que desde que meu /etc/nsswitch.conf
seja assim:
cat /etc/nsswitch.conf
passwd: files rf
shadow: files
group: files
hosts: files dns
services: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files
automount: files
aliases: files
bootparams: [NOTFOUND=return] files
então o comando ping deve olhar para /etc/resolv.conf
, que inclui a linha nameserver 8.8.8.8
:
cat /etc/resolv.conf
nameserver 8.8.8.8
então eu realmente não vejo porque meu ping falha.
Eu tentei editar o /etc/nsswitch.conf
para remover o files
da entrada hosts
(fez com que parecesse com hosts: dns
), mas isso não ajudou.
Não é o kernel do Linux que faz a resolução do DNS, mas sim a biblioteca C. Qual biblioteca C o seu sistema LTIB está usando? Por padrão, o Buildroot está usando o uClibc, que não possui um arquivo de configuração nssswitch.conf
.
Tags dns resolv.conf buildroot