quinta-feira, 24 de junho de 2010

module-init-tools-3.2 - Utilities for manipulating kernel modules

The module-init-tools from kernel.org: modprobe, insmod, rmmod and lsmod. We have chosen to use these because we can compile modutils/modprobe to support compressed (.gz) modules to save space. To do this we use the option --enable-zlib, we then clean and copy the binaries. We do not take everything that has been created, only what we need: depmod, insmod, modinfo, modprobe and rmmod in /sbin and lsmod in /bin:

 # cd ..
 # wget http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2
 # tar xjf module-init-tools-3.2.tar.bz2
 # cd module-init-tools-3.2
 # ./configure --enable-zlib --prefix=/usr --sbindir=/sbin --bindir=/bin \
   --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip -v _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod}
 # strip -v _pkg/bin/lsmod
 # cp -i _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod} $fs/sbin
 # cp -i _pkg/bin/lsmod $fs/bin
 # cd ..


Copy kernel modules

Copy files from linux-2.6.20/_pkg:

 # cp -a linux-2.6.20/_pkg/lib/* $fs/lib

Compress kernel modules

Compress modules, this step will gain us back around 50% of available space. We begin by moving into the rootfs, then we search for all files with the .ko extension, and compress them. 

 # cd lib/modules/2.6.20-slitaz
 # find . -name "*.ko" -exec gzip '{}' \;
 # sed 's/\.ko/.ko.gz/g' modules.dep > tmp.dep
 # rm modules.dep
 # mv tmp.dep modules.dep

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.
Serve para controlarmos as alterações/ficheiros no nosso sistema, através da análise do “antes” e “depois”.

Aqui vai:
2) make
3) find / > /root/pre-program
4) make install
5) find / > /root/post-program
6) diff pre-program post-program > install-program
7) nano install-program (and remove things like the /proc entries)

Assim passamos a ter uma lista de tudo que foi instalado durante o “make install”.

É uma questão de utilizarmos esta lista em conjunto com um script para podermos até criar um pacote de um programa.

Linux, soluções simples para grandes problemas.

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.

segunda-feira, 21 de junho de 2010

Instalar um Servidor Debian dentro de um Ambiente CHROOT

Deixo-vos ficar aqui um documento pdf com o artigo obtido a partir deste link com o manual de como criar um servidor Debian dentro de um ambiente chroot.

A partir daqui é só dar uso à imaginação e criar uma distro ao nosso gosto.

sexta-feira, 18 de junho de 2010

10 coisas para fazer depois de instalar o Ubuntu 10.04 Lucid

Um artigo muito bom do site OMG! Ubuntu, acerca de coisas importantes depois de fazer uma instalação do Ubuntu.

10 things to do after installing Ubuntu 10.04 Lucid | OMG! Ubuntu!:

Destaco as seguintes três:

- Instalar os CODECS para MP3, MP4 e outros: CLICAR AQUI

- Instalar mais TEMAS: CLICAR AQUI

- Instalar a FONTE DroidSan: CLICAR AQUI (esta fonte no tamanho 8 é excelente para definir como fonte geral do sistema)

Instalar o driver wireless RTL8191/8192SE no Ubuntu

Após ter instalar o Ubuntu 10.04 no meu Toshiba Satellite Pro L500-1W2 verifiquei que placa wireless fazia a ligação ao meu router (com WPA) mas depois ficava pendurada, desligava, tentava voltar a ligar mas sem sucesso. Ou seja o módulo do kernel do driver tem um bug qualquer.

Depois de executar o comando "lspci" e o "lsmod" lá descobri que tinha uma placa da Realtek 8191. (rtl8192se_pci)

Pelos vistos, muito mais gente tem este problema, por isso aqui fica a solução (testado e a funcionar no meu portátil):

1. Fazer o download da source (mais actual) do driver do rtl8191se neste link
2. Descompactar o ficheiro (tar -xzvf rtl8192se-dkms_2.6.0015.0127.2010.tar.gz)
3. Ir para a sub-pasta "rtl8192se-2.6.0015.0127.2010" e abrir uma consola
4. Passar a superuser com o comando: sudo su
5. Executar o comando: make
6. Executar o comando: make install
7. Reiniciar o computador

e pronto...problema resolvido.

Se mesmo tiverem problemas, leiam o ficheiro readme.txt para solução alternativa.

http://tugalinux.110mb.com/tugalinuxfiles/SCRIPTS/rtl8192se-dkms_2.6.0015.0127.2010.tar.gz

quinta-feira, 17 de junho de 2010

Script Python para descobrir chave WPA dos Routers Thomson

Os routers da Thomson (os que a MEO utiliza) vêm de fábrica configurados com um chave WPA para aceder via wireless. Se não se alterar essa chave, é possível com o programa stkeys descobrir essa chave.

Podem descarregar o script Python da versão do stkeys.c (Kevin Devine) aqui.

Basta correr o seguinte comando na consola:

python ssid2key.py 55928C

onde 55928C é a parte hexadecimal do ssid to router (exemplo: Thomson55928C).

Esperar até aparecerem as chaves possíveis e testar a ligação ao router com cada uma delas.

(no script ssid2key.py acrescentei os anos de 2009, 2010, 2011 e 2012 na linha year_list = [2005,2006,2007,2008,2009,2010,2011,2012]).