Autor: Koji
Data: 16/09/2000.

Módulos em FreeBSD


A partir da version 3.0 de FreeBSD se introduz o kld (dynamic kernel linker facility), o novo interface para os módulos, deixando já de lado ao antigo LKM (Loadable Kernel Modules).

Basicamente temos 3 programas que nos servirão para levar todo isto dos módulos em FreeBSD. Os programas são: kldload, kldunload e kldstat.

kldload: Esta é a ordem que executaremos para carregar um modulo em concreto. Pode carregar tanto módulos .out como ELF.

kldunload: Isto nos servirá para descarregar qualquer módulo que tenhamos carregados nesse momento.

kldstat: por ultimo, esta ordem nos mostrasse informação sobre os módulos que temos atualmente carregados.

NOTA: Remetemos-vos às paginas man de cada um destes comandos para obter maior detalhe de todas suas opções disponíveis.

Os módulos que podemos carregar e que temos compilados prontos para ser usados os encontraremos em modules /. Como exemplo vamos carregar o modulo msdos.ko (ko é a extension por defeito dos módulos em FreeBSD ) usando cada um dos comandos explicados anteriormente para ir familiarizandonos com eles.

O primeiro de todo é assegurar-nos se efetivamente existe o modulo msdos.ko em nosso diretório /modules:

# ls /modules/msdos.ko
/modules/msdos.ko


Antes de carregá-lo sacaremos um kldstat para ver que temos atualmente:

# kldstat
Ide Refs Address    Size     Name
 1    3 0xc0100000 3021a8   kernel
 3    1 0xc1279000 10000    linux.ko
 4    1 0xc129d000 3000     daemon_saver.ko


Aqui podemos ver que a maquina tem atualmente 3 módulos em memória. Normalmente estes são os módulos que tereis por defeito carregados. Se por exemplo elegiis na instalação suporte de binários linux em FreeBSD, se vos carregará no arranque o modulo linux.ko. Os outros dois correspondem ao kernel e ao salvador de telas.

Agora passaremos a carregar o modulo msdos.ko que corresponde ao suporte do sistema de arquivos msdos (FAT, FAT32...):

# kldload msdos
#

Parece que tem ido bem. Não faz defeituosa especificar a extensão .ko, é algo optativo. Para assegurar-nos de que todo tem ido bem sacaremos de novo um kldstat:

# kldstat
Ide Refs Address    Size     Name
 1    4 0xc0100000 3021a8   kernel
 3    1 0xc1279000 10000    linux.ko
 4    1 0xc129d000 3000     daemon_saver.ko
 5    1 0xc12fd000 c000     msdos.ko


Efetivamente, vemos o modulo msdos.ko além de todos os outros módulos. A partir de agora teríamos suporte para montar partición FAT por exemplo.

Agora se desejamos descarregá-lo só teremos que utilizar kldunload:

# kldunload msdos
#

E sacámos de novo um kldstat:

# kldstat
Ide Refs Address    Size     Name
 1    3 0xc0100000 3021a8   kernel
 3    1 0xc1279000 10000    linux.ko
 4    1 0xc129d000 3000     daemon_saver.ko


Assim de fácil.

Quiçá mas de um se pergunte as vantagens de usar módulos. A principal vantagem é a de ter um kernel mas pequeno e mas optimizado. Por defeito, o kernel de FreeBSD vem com suporte para muitas coisas. Continuando com nosso exemplo do modulo de msdos, FreeBSD traz suporte para o sistema de arquivos de msdos no próprio kernel. Isto supõe que o kernel tem em memória este suporte em todo momento, e nos momentos que não façamos nenhum tipo de operação com alguma partición msdos estaremos malgastando espaço e memória.

O ideal é carregar o modulo de msdos quando precisemos fazer alguma operação com este tipo de sistema de arquivos, conseguindo assim um kernel mas pequeno e mas rápido.

Se desejamos por exemplo ativar o módulo de msdos, o primeiro que temos que fazer, é assegurar-nos de que nosso kernel não tem suporte para isto. Por defeito FreeBSD traz suporte para sistemas de arquivos msdos, asi que deveremos apagar a linha que põe:

options         MSDOSFS                 #MS DOS File System

NOTA: É muito importante o assegurar-nos de que quando vamos usar um modulo para dar suporte a alguma coisa, não tenhamos já este suporte no kernel, porque se mesmo segue no kernel não teremos ganhado nada.

Uma vez gravado e compilado o novo kernel, temos 3 alternativas para usar os modulos. A primeira é usar 'a mão' o carregado e descarregado dos modulos mediante os comandos que vimos antes.

A segunda é carregar o modulo msdos.ko (seguindo com o exemplo) no arranque Se desejamos fazer isto só temos que o especificar no arquivo /boot/loader.conf. Este arquivo carga múltiples configurações antes de iniciar-se FreeBSD. Poremos algo asi:

msdos_load="YES"

Desta forma se carregaria o módulo só iniciar-se FreeBSD e o teríamos em todo momento em memória.

A outra alternativa é não pôr nem carregar nada. Desta forma ao tentar montar uma partición de msdos, e ao não ter suporte de msdos em nosso kernel, este procurasse em modules / a ver se há algum modulo que faça esta função, e se o encontra o carregará montando posteriormente a partición.

É algo transparente para o usuário. Assim que não teneis que vos preocupar de nada O único que não vi, a sido que uma vez desmontada a partición o modulo segue em memória, assim que seguramente tenhamos que desmontarlo nós a mão uma vez deixemos de usar a partición (se é que nos importa o tê-lo na memória claro).

NOTA: No arquivo /boot/defaults/loader.conf teneis todas as linhas disponíveis que podeis pôr em boot //loader.conf para carregar qualquer módulo disponível em FreeBSD.

 Se deseais obter mas informação sobre os módulos remeter-vos ao manual de kld (man kld) no que também
podreis encontrar informação referente a como programar-vos vosso próprio modulo.

Hosted by www.Geocities.ws

1