Os demais comandos que veremos agora não se aplicam para módulos built-in (afinal de contas eles já foram carregados). Os comandos que veremos agora são para manipulação de módulos. Depois que listamos nossos dispositivos com o comando lspci...
O primeiro comando para manipulação de módulos é o lsmod:
# lsmod
ou
# cat /proc/modules
Esse comando tem a função de listar todos os módulos que estão ativos no sistema, mesmo que o módulo não esteja sendo usado no momento.
O próximo comando essencial nessa parte de módulos é o modprobe:
# modprobe nome_módulo
Ele é o responsável por ativar/levantar um módulo.
É através dele que habilitamos um determinado dispositivo, como por exemplo a placa de rede.
Para ver quais os módulos estão compilados (disponíveis para uso):
# modprobe -l
O parâmetro é "l" de limão, e não é o número um.
Os módulos ficam no seguinte diretório:
# cd /lib/modules/$(uname -r)
Para quem não sabe, posso colocar um comando dentro de $() quando quero que essa variável guarde como valor o resultado do comando.
Se temos mais de um kernel compilado na máquina, logicamente teremos mais de um diretório em /lib/modules.
Você pode descobrir quais módulos tem disponíveis da seguinte forma:
# find /lib/modules/$(uname -r) -name '*.ko'
Uma coisa legal no
Linux é que temos várias maneiras de fazer uma coisa só, aí você escolhe a que mais lhe agrada.
Lembrando que você pode ter vários kernels disponíveis, mas só um funcionando ao mesmo tempo, pois isso para termos certeza que estamos entrando no diretório que guarda os módulos do kernel que estou usando no momento, aí eu digito esse comando acima.
O modprobe levanta um módulo com a sua dependência, ou seja, se determinado módulo para ser iniciado precisa que um módulo em específico já esteja no ar, o modprobe faz isso sem lhe perguntar nada! Veja que prático!
Um exemplo prático é a placa de som, que para funcionar, além do módulo da placa em si, precisa do soundcore (módulo de som).
Então, nesse caso o comando modprobe já resolveria essa dependência levantando o módulo da placa e também o soundcore.
Para determinar o número de módulos disponíveis:
# lsmod | grep -v ^"Module" | wc -l
Para determinar o número de módulos carregados:
# modprobe -l | wc -l
No meu caso tenho 1756 módulos disponíveis e 88 módulos carregados na memória.
Agora se eu quero levantar um módulo sem resolver sua dependência, lembrando que nem todos os módulos tem dependências, pois isso depende do seu dispositivo.
Para isso usamos o comando:
# insmod módulo
Se o módulo tiver dependência e você usar o comando insmod ele acusará um erro.
Agora, falando o inverso, se eu quero derrubar um módulo, ou seja, desativá-lo:
# modprobe -r nome_do_módulo
Sem dependência:
# rmmod módulo
Observação: Lembrando que um módulo só pode ser desativado se o mesmo não estiver em uso!
Por exemplo: só posso derrubar o módulo da placa de rede, caso a mesma também esteja derrubada. Ou seja, sem funcionamento!
É válido dizer que quando falo remover estou me referindo a tirar o módulo da memória e não deletá-lo do sistema.
Vamos fazer um exemplo prático:
Determine quais módulos são utilizados pelo dispositivo de cdrom:
# lsmod | grep cdrom
cdrom 32544 1 ide_cd
Essa mensagem significa que o módulo cdrom é usado pelo módulo ide_cd.
32544 é o tamanho do módulo.
1 é quantidade de módulos que usam o módulo listado.
Tente remover o módulo cdrom utilizando o rmmod:
# rmmod cdrom
ERROR: Module cdrom is in use by ide_cd
Não funcionou porque o módulo cdrom está sendo usado pelo ide_cd, e lembrando que só posso tirar um módulo da memória se o mesmo não estiver em uso.
Remova o módulo ide_cd com rmmod já que ele está utilizando o módulo cdrom:
# rmmod ide_cd
O comando não vai retornar nenhuma mensagem, significa que ele tirou o módulo da memória.
Verifique que o módulo ide_cd foi removido mas o cdrom ainda está carregado:
# lsmod | grep ide_cd
Não retornou nada, significa que não está mais na memória.
# lsmod | grep cdrom
cdrom 32544 0
Retornou a linha do módulo cdrom, ele ainda continua na memória.
Já que o módulo cdrom não está mais sendo utilizado podemos removê-lo:
# rmmod cdrom
# lsmod |grep cdrom
Abra a bandeja do cdrom e verifique que o suporte ao CDROM foi carregado novamente:
# eject
# lsmod |grep cdrom
Não foi!
Então, vamos levantar os módulos do cdrom novamente, só que com o comando insmod (para o comando insmod deve ser informado o caminho completo de onde está o módulo). Você pode fazer assim:
# modprobe -l cdrom
/lib/modules/2.6.18-5-686/kernel/drivers/cdrom/cdrom.ko
# insmod /lib/modules/2.6.18-5 686/kernel/drivers/cdrom/cdrom.ko
ou
# insmod $(modprobe -l cdrom)
E depois:
# insmod $(modprobe -l ide_cd)
Verificando se os módulos levantaram:
# lsmod |grep cdrom
cdrom 32544 1 ide_cd
Verifique que agora você consegue usar o cdrom:
# eject
Puxe o cdrom:
# eject -t
Vamos tirar os módulos da memória novamente para ver que o modprobe é bem mais prático para usar:
# modprobe -r ide_cd
Tente ejetar o cd agora, você não vai conseguir.
Levante os módulos agora:
# modprobe ide_cd
Veja que ele levantou o cdrom também:
# lsmod | grep
cdrom 32544 1 ide_cd
Como o modprobe sabe quais módulos dependem de quais módulos?
# cd /lib/modules/$(uname -r)
# ls -l
# vim modules.dep
Esse arquivo é construído com o comando depmod:
# depmod -a
Esses seriam os principais comandos que usamos nessa parte de módulos!