Thursday, April 27, 2006

Deixando o horário do Linux sempre atualizado

O ntp (Network Time Protocol) prove um serviço de sincronismo de hora, isso é extemamente útil para um servidor de arquivos por exemplo, na verdade para qualquer servidor é essencial manter o horário correto (incluindo horário de verão) para mantar a confiabilidade dos logs por exemplo.

A instalação do pacote ntpdate nos possibilita fazer esse sincronismo, então vamos instalá-lo:
Essa instalação foi feita em um Debian Etch.

#aptitude install ntpdate

Depois de instalado, o ntpdate vai entrar no /etc/init.d, sendo assim, ele será inicializada toda vez que der boot no PC e por default estará sincronizando seu horário com o servidor pool.ntp.org. Para sincronizarmos com o nosso horário, incluside de verão, basta trocar o pool.ntp.org por ntp.cais.rnp.br no arquivo /etc/default/ntpdate.

O ntp.cais.rnp.br é o servidor oficial de horas aqui no Brasil, mas você pode usar outros como ntp.usp.br e ntps1.pads.ufrj.br.

Uma coisa muito importante para verificar é se você tem algum firewall que está bloqueando a saída pela porta 123/udp, caso estiver, o ntpdate não funciona.

Dica: Verifique se o timezone da máquina está de acordo com a sua localização, use o comando tzconfig.

Thursday, April 13, 2006

Instalando o JDK 1.5.0 no Debian

A instalação do JDK 1.5.0 foi testada no Debian Etch, mas se você utiliza outra versão, é só desconsiderar essa primeira parte e executar o self-extracting da Sun fazendo as alterações necessárias nas variáveis de ambiente.

Primeiramente vamos baixar o JDK 1.5, entre no site da Sun e baixe: http://java.sun.com/j2se/1.5.0/download.jsp

Se você não tiver o pacote java-package, tem que instalar, pra criar o .deb direto do executável da Sun para a instalação do Java (esse pacote instala o fakeroot caso você não o tenha ainda):

#apt-get install java-package

Depois de instalado, vamos ao diretório onde o JDK foi baixado e execute, como usuário normal:

$fakeroot make-jpkg jdk-1_5_0_06-linux-i586.bin

Pronto, foi gerado o arquivo .deb do JDK, agora pra instalar use:

#dpkg -i sun-j2sdk1.5_1.5.0+update06_i386.deb

O JDK vai ser instalado em /usr/java/jre1.5.0_06, agora é só setar as variáveis de ambiente pro Java, adicione as seguintes linhas no final do arquivo /etc/profile:

############ variáveis do java##############################
JAVA_HOME="/usr/java"
CLASSPATH="$JAVA_HOME:$JAVA_HOME/lib"
MANPATH="$MANPATH:$JAVA_HOME/man"
PATH="$PATH:$JAVA_HOME/bin"
export JAVA_HOME CLASSPATH MANPATH PATH

Para maiores informações procure em http://wiki.serios.net/wiki/Debian_Java_JRE/JDK_installation

Monday, April 10, 2006

Criptografando diretórios inteiros com EncFS

Esses dias eu estava procurando alguma coisa pra criptografar um diretório completo e achei mais que isso, o EncFS é um sistema que criptografa filesystems, ou seja, você pode colocar o que quiser em certo diretórios (préviamente montado) e desmontá-lo depois, sendo assim, ninguém verá o que você tinha. O EncFS tem alguns algoritmos disponíveis como Blowfish, blowfish-compat e AES, no modo expert podemos definí-los. Este artigo foi feito em um sistema Debian Etch.
Para instalarmos o encfs e suas dependências:
#aptitude install encfs

Note que o comando acima instala tudo o que é necessário, mas o binário do módulo que o EncFS usa tem que ser feito, utilize o comando abaixo e depois adicione o módulo recém criado em /etc/modules;
#module-assistant a-i fuse
#echo fuse >> /etc/modules

Na primeira vez, você tem que criar o mount point e o diretório onde os arquivos criptografados vão ficar ,pra isso faça:
#encfs ~/.crypt ~/crypt

Onde o ~/.crypt é onde os arquivos criptografados ficaram e o ~/crypt é somente o ponto de montagem, onde você verá os arquivos quando descriptografá-los.

Como funciona:

Quando você fizer o comando acima pela primeira vez, ele vai perguntar se quer criar os diretórios e pede uma senha, essa senha vai ser pedida toda vez em que for descriptografado o diretório.
Agora, você copia todo conteudo que quer criptografar no diretório ~/crypt, pois ele é o ponto de montagem, então é nele que vão aparecer os arquivos antigos (anteriormente criptografados) e os que você irá colocar.
Copie qualquer arquivo lá, vamos a um exemplo:
#echo 'testando' >> ~/crypt/msg.txt

Agora usamo o comando fusermount -u ~/crypt para desmontar o ponto de montagem ~/crypt e assim, criptografar os arquivos.
#fusermount -u ~/crypt

Se dermos uma olhada no diretório ~/.crypt, lá vai estar a lista de todos os arquivos que tinha em ~/crypt mas todos criptografados, com uns nomes estranhos e tal.
Bom, então tudo ótimo já sabemos como criptografar um diretório inteiro, mas agora como ler esses arquivos?
É só usar o mesmo comando feito na primeira vez:
#encfs ~/.crypt ~/crypt

Ele vai te pedir uma senha, que foi a que você digitou da primeira vez e pronto, é só olhar em ~/crypt que seus arquivos estão todos lá, limpinhos.

That's folks!

Friday, April 07, 2006

Ótima dica de livro

Bom, a uns dias atrás estava eu olhando alguns livros no site da Amazon e me deparei com A bíblia do Sarge, na hora eu começei a pesquisar mais sobre tal livro. Infelizmente nenhuma livraria aqui de São Paulo tem esse livro, então importei. Lí o livro, na verdade não se lê esse tipo de livro, é apenas um guia de referência.
É muito bom, com assuntos pertinentes explicando coisas que são necessárias para qualquer um que deseja entender um pouco além do convencional, mas esse livro não detalha muito, ele apenas dá uma apresentação, as opções, características e etc.
Por exemplo, tem um capítulo chamado The Domain Name System, ele te explica alguns conceitos e como utilizar o DNS, mas não entra em detalhes minuciosos.

O livro é muito bom!! Recomendo!!




Para ver mais detalhes, entre no site da Amazon.

Thursday, April 06, 2006

Compilando um kernel novo na unha

Depois de pesquisar e ler algumas documentações sobre o Kernel, juntei as informações e coloquei nesse tutorial. Esse processo serve também para recompilar, e foi testado em um sistema Debian Etch.

Primeiramente devemos baixar o kernel mais atual em http://www.kernel.org , depois de baixá-lo é só descompactar no diretório /usr/src . Caso você tenha baixado o .bz2 utilize o comando abaixo para descompactar:
#tar -jxvf linux-2.x.xx.bz2

Caso tenha baixado o .tar.gz use:
#tar -zxvf linux-2.x.xx.bz2

Depois do diretório criado em /usr/src vamos criar um link simbólico para o novo kernel:
#ln -s /usr/src/linux-2.x.xx/ /usr/src/linux

Agora vamos abrir um menu de configuração do kernel (e então escolher o que deverá existir nele) em modo texto, que na minha opnião é o melhor modo, você precisará do pacote 'libncurses5-dev' e utilizar comando:
#make menuconfig

Para limpar alguns objetos criados, use o comando:
#make clean

Agora iremos criar a imagem do kernel propriamente dita:
#make bzImage

Caso você tenha mandado o kernel utilizar-se de módulos para algumas funcionalidades, temos que compilá-los também.
#make modules

Depois de compilados, ele precisam ser instalados, esse comando instala os módulos em /lib/modules/ :
#make modules_install

Vamos copiar a nova imagem do kernel para o diretório /boot
#cp arch/i386/boot/bzImage /boot/bzImage-

Copiar o System.map para o mesmo diretório, esse arquivo é importante, pois contém os nomes dos símbolos e os endereços dos binários do kernel do linux, depois disso criar um link simbólico do System.map novo em /boot :
#cp System.map /boot/System.map-
#ln -s /boot/System.map-KERNEL_VERSION /boot/System.map

Para gerar a imagem do Initial RamDisk, é nela que contém alguns módulos que têm de ser carregados, para montar a partição do root, caso ela seja 'reiserfs' por exemplo. Você deverá incluir o módulo 'reiserfs' no arquivo '/etc/mkinitrd/modules' e criar a imagem. O motivo disso é que quando o kernel vai montar a partição root, ele tenta carregar o módulo 'reiserfs' neste exemplo, mas esse módulo está na partição root, ou seja, o kernel não tem como montar essa partição, pois não consegue acessar o driver para a mesma.

#mkinitrd -o /root/initrd.img 2.6.16-dutche

O que é esse raio de Bogomips?

A um tempinho atrás eu fui dar uma olhada no arquivo '/proc/cpuinfo' e vi um tal de Bogomips lá, e num sabia o que significava, então decidi ir atrás, o que eu colhi (além de códigos em C e em ASM) foi isso:

O kernel precisa de um 'timing loop' , que tem de ser calibrado certinho pra velocidade do processador da máquina. Daí o kernel mede (em tempo de boot) a rapidez de certos loops-de-trabalho (busy-loops) roda no computador.

MIPS é Milhões de intruções por segundo.
Bogo vem de Bogus que significa falso.

Então Bogomips dá uma indicação da velocidade do processador, mas é um jeito 'não-científico' demais pra ser chamado de outra coisa a não ser Bogomips.

Duas razões pra isso aparecer no boot (se vc der um 'cat' no syslog vai ver bogomips lá):
  1. É levemente útil pra debug e checagem para que o cache e o botão turbo funcionem;
  2. O Linus adora tirar um barato quando vê gente confusa sobre isso.