Day: July 1, 2008

Erro inserindo module snd-hda-intel

Erro:
# modprobe snd-hda-intel
WARNING: Error inserting snd (/lib/modules/2.6.22-aca/kernel/sound/core/snd.ko): Unknown symbol in module, or unknown parameter (see dmesg)
WARNING: Error inserting snd_timer (/lib/modules/2.6.22-aca/kernel/sound/core/snd-timer.ko): Unknown symbol in module, or unknown parameter (see dmesg)
WARNING: Error inserting snd_pcm (/lib/modules/2.6.22-aca/kernel/sound/core/snd-pcm.ko): Unknown symbol in module, or unknown parameter (see dmesg)
FATAL: Error inserting snd_hda_intel (/lib/modules/2.6.22-aca/kernel/sound/pci/hda/snd-hda-intel.ko): Unknown symbol in module, or unknown parameter (see dmesg)

Solucao:
# depmod -a
# modprobe snd-hda-intel

Estranho, por algum motivo o “make install” não executou o depmod de forma automática.

Ataque marciano?

Estava recebendo a seguinte mensagem de erro:

martian source 255.255.255.255 from 10.29.244.240, on dev eth0

Procurando na Internet achei uma explicacao para o problema:

“Only unicast adresses are allowed for source address. 255.255.255.255 is not a unicast address then it’s considered invalid.”

E:

“Because 0 and 255 are used for unknown and broadcast addresses, normal
hosts should never be given addresses containing 0 or 255. Addresses
should never begin with 0, 127, or any number above 223. Addresses
violating these rules are sometimes referred to as “Martians”, because
of rumors that the Central University of Mars is using network 225.”

Esse marcianos são feras, enquanto só agora descobrimos que no planeta deles tem água e que o solo é semelhante ao da Terra, eles já fazem a festa por aqui, sacaneando as nossas redes e nossos sistemas de comunicacao.

Falando sério agora, para não exibir tais mensagens acrescente no /etc/sysctl.conf:

net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.eth0.log_martians = 0

Em seguida execute:
# sysctl -w

Compilando kernel – the opensuse way

Para compilar o kernel para o OpenSuse você deve iniciar com o processo “padrão”:
1) baixe o kernel desejado;
2) descompacte em /usr/src
3) copie o config de /boot para /usr/src/linux.x.y.z/.config
4) make menuconfig

Agora o que muda é apenas a opcão passada para o comando make:

# make rpm

Ao final da compilacão o pacote rpm criado será copiado para o diretório /usr/src/packages/RPMS/i386/

Erro compilando kernel 2.6.22 no OpenSuse11 (gcc-4.3.1)

Mensagem de erro:

kernel/built-in.o: In function `timespec_add_ns’:
/usr/src/packages/BUILD/kernel-2.6.22aca/include/linux/time.h:177: undefined reference to `__umoddi3′
kernel/built-in.o: In function `do_gettimeofday’:
/usr/src/packages/BUILD/kernel-2.6.22aca/kernel/time/timekeeping.c:121: undefined reference to `__udivdi3′
/usr/src/packages/BUILD/kernel-2.6.22aca/kernel/time/timekeeping.c:122: undefined reference to `__umoddi3′
kernel/built-in.o: In function `timespec_add_ns’:
/usr/src/packages/BUILD/kernel-2.6.22aca/include/linux/time.h:172: undefined reference to `__udivdi3′
/usr/src/packages/BUILD/kernel-2.6.22aca/include/linux/time.h:177: undefined reference to `__umoddi3′
make[2]: *** [.tmp_vmlinux1] Error 1

Solucao: acrescente a linha “asm(..)” no arquivo include/linux/time.h:

static inline void timespec_add_ns(struct timespec *a, u64 ns)
{
        ns += a->tv_nsec;
        while(unlikely(ns >= NSEC_PER_SEC)) {
               /* The following asm() prevents the compiler from
                * optimising this loop into a modulo operation.  */
                asm("" : "+r"(ns));
                ns -= NSEC_PER_SEC;
                a->tv_sec++;
        }
        a->tv_nsec = ns;
}