mytuxnotepad
sexta-feira, 2 de julho de 2010
quinta-feira, 24 de junho de 2010
module-init-tools-3.2 - Utilities for manipulating kernel modules
Compilar o FUSE
Estou a construir um Linux de raíz. Estou a usar o manual do Slitaz (poder ver em: http://www.slitaz.org/en/doc/scratchbook/index.html) e entretanto comecei a divergir em determinada parte, porque não quero uma “cópia” do Slitaz mas sim o meu próprio linux.
Mais lá para a frente vou disponibilizar o meu script de construção do meu linux, que batizei com o MiniTux, para vocês poderem também aprender um pouco.
Mas o propósito deste meu post não é falar para já do MiniTux, mas sim de uma questão que me atrasou o projecto e que se prende com a possibilidade de leitura e escrita em discos e particções formatadas em NTFS. A leitura é fácil (fica disponível pelo próprio Kernel), mas a escrita só é possível recorrendo ao NTFS-3G. Mas este pacote depende do FUSE, e este sim deu-me cabo da cabeça.
Eu estou a utilizar o SLAX para compilar e construir o MiniTux, e quando eu compilava o FUSE ele configurava-se para o Kernel do Slax em vez do Kernel que estava a utilizar no Minitux…resultado…quando tentava montar uma partição NTFS no MiniTux dava erro.
Depois de muita pequisa finalmente consegui descobrir como compilar o FUSE para o Kernel diferente do que está a ser utilizado no SLAX (host&build machine). Óbviamente que o Kernel tem de já estar compilado no computador Host que está a ser utilizado para compilar.
Para aqueles que se deparem com o mesmo problema, a seguir indico a receita de compilação do FUSE:
./configure --prefix=/usr --infodir=/usr/shre/info --with-kernel=/home/luis/mtsrcpkg/linux-2.6.31.6 --mandir=/usr/share/man $CONFIGURE_ARGS
make
make DESTDIR=$PWD/_pkg install
Neste caso eu tinha compilado o kernel na pasta /home/luis/mtsrcpkg/linux-2.6.31.6, por isso tive que utilizar a opção –with-kernel=(……).
Depois de compilar o FUSE, basta entrar dentro da pasta _pkg do FUSE para ir buscar o FUSE e copiar para o meu MiniTux.
NOTA: a opção –with-kernel parece só funcionar para a versão 2.7.4 do FUSE.
Abraços e até já.
Reduzir o tamanho do /bin e /lib
Só para não me esquecer de como se faz o STRIP de ficheiros binários e libs em Linux:
strip -s $fs/sbin/*
strip -s $fs/usr/bin/*
strip –strip-unneeded $fs/usr/lib/*.so*
“watch” what gets installed by using find
Esta é uma dica muito útil que poderá ser utilizada em muitas situações.
Comando TREE para Linux
Quick, what does the following Unix/Linux command do?
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
If you said, “Well, that’s obvious; it shows a graphical representation of the current sub-directories.“, you’d be correct.
Here’s the command ready-to-go in a shell script: tree.sh
Encontrar o ficheiro .ko do módulo
Quando executamos o comando lsmod, obtemos uma lista de todos os módulos de kernel que estão carregados (se eles dependerem de outros módulos, está indicado os nomes no final de cada linha do módulo).
Para refinar a pesquisa, podemos utilizar o comando:
lsmod | grep r8187
e mostra-nos se o módulo r8187 está carregado.
Se executamos o comando:
modprobe -l | grep r8187
ele vai-nos mostrar a pasta onde está o ficheiro .ko respeitante ao módulo:
/lib/modules/2.6.20.15-generic/kernal/drivers/net/wireless/rtl8187/r8187.ko
Às vezes também dá jeito recorrer ao comando “lspci” para conseguirmos encontrar alguma identificação do nome que nos possa levar ao módulo que andamos à procura. Mas se utilizarmos o parametro -k esta tarefa ainda se mostra mais fácil, pois este parametro quando utilizado com o comando “lspci” mostra-nos o nome do módulo:
lspci -k
Espero que estas dicas vos ajudem.