Páginas

quarta-feira, 26 de dezembro de 2012

Nagios - Instalação e Configuração Básica

Abaixo uma documentação que eu fiz (claro que está adaptada para um tutorial) sobre instalação e configuração do Nagios Core utilizando o PNP4Nagios para gerar gráficos de performance. Vamos a ela:


INSTALAÇÃO

Para a instalação do Nagios é necessário primeiro baixar as dependências:

apt-get install wget install build-essential apache2 php5-gd wget libgd2-xpm libgd2-xpm-dev
libapache2-mod-php5 sendmail -y

Em seguida deve-se criar o usuário e o grupo que fará a operação dos serviços:

useradd nagios
groupadd nagios
usermod -a -G nagios nagios

A instalação do sistema foi feita através dos códigos-fontes da versão 3.4.3 do Nagios baixada através do endereço http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz . Colocar o arquivo na pasta /opt e descompactar o arquivo com o comando tar xvzf nagios-3.4.3.tar.gz. Dentro da pasta do Nagios, para efetuar a instalação, devemos executar os seguintes comandos:

./configure --with-nagios-group=nagios --with-command-group=nagios --with-mail=/usr/bin/sendmail

make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf

Em seguida criaremos o login padrão para acesso à interface web do Nagios:

htpasswd –c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Para incluir o serviço na inicialização do sistema, execute o seguinte código:

ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

O início manual do serviço é feito através do comando:

service nagios start

Sua reinicialização é feita através do comando:

service nagios restart

Sua paralização é feita através do comando:

service nagios start

ESTRUTURA

A estrutura padrão de diretórios do Nagios é a seguinte:

/usr/local/nagios – Raíz do sistema
/usr/local/nagios/bin - Binários do sistema, incluindo o plugin NRPE
/usr/local/nagios/etc - Arquivos de configuração básica do sistema
/usr/local/nagios/etc/objects – Arquivos de configuração de comandos, templates, contatos,
 grupos de hosts, e modelos de configurações para monitoramento de diferentes tipos de 
hosts.
/usr/local/nagios/include – Arquivos a serem incluídos na configuração do sistema (vazio 
por padrão)
/usr/local/nagios/libexec – Binários dos plugins de checagem de hosts
/usr/local/nagios/sbin – Binários de execução do CGI
/usr/local/nagios/share – Arquivos utilizados para o web front-end do Nagios
/usr/local/nagios/var – Arquivos de log, de bloqueio de inicialização quando o sistema já 
está executando, etc.
 
CONFIGURAÇÕES
 
Todos os arquivos de configuração do Nagios deve conter por padrão a extensão “.cfg”, 
e devem ser discriminados (ou apenas os seus diretórios) no arquivo de configuração 
principal /usr/local/nagios/etc/nagios.cfg.

As configurações principais devem ser feitas no arquivo /usr/local/nagios/etc/nagios.cfg alterando-se 
apenas algumas linhas conforme demonstrado abaixo:

  28 cfg_file=/usr/local/nagios/etc/objects/commands.cfg 
  29 cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg 
  30 cfg_file=/usr/local/nagios/etc/objects/contacts.cfg 
  31 cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg 
  32 cfg_file=/usr/local/nagios/etc/objects/templates.cfg 
  33 cfg_file=/usr/local/nagios/etc/hosts/servers/localhost.cfg

As linhas acima definem quais arquivos de configurções específicos serão utilizados

  39 cfg_dir=/usr/local/nagios/etc/hosts/
  
Essas linhas informam quais diretórios de arquivos de configurações de monitoramento serão utilizados. 
Note a diferença entre as linhas dos arquivos de configurações que começam com “cfg_file=”, essas 
linhas começam com “cfg_dir=”.

117 check_external_commands=1

A linha acima define se o Nagios vai utilizar comandos externos, definidos no arquivo 
“/usr/local/nagios/etc/objects/commands.cfg”. Por padrão o Nagios não verifica comandos externos, o 
número “1” indica que ele passa a verificar.

PLUGINS

Os plugins são os responsáveis por coletar informações de monitoramento dos hosts incluindo o localhost. Eles devem ser baixados na pasta /opt através do endereço http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz/download?use_mirror=ufpr , e descompactado da mesma forma que o Nagios. Em seguida, dentro da pasta descompactada nagios-plugins-1.4.16 executar os comandos abaixo para realizar a instalação:

./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

Cada plugin tem a sua configuração específica, e os argumentos de cada um podem ser visualizados apenas executando-os sem nenhum parâmetro, exemplo:

./plugin
NRPE

O plugin NRPE é o mais importante plugin do Nagios. Ele consegue trabalhar com a arquitetura 
cliente-servidor, e é totalmente customizável nos hosts. 

O plugin NRPE pode ser adquirido através do endereço:

http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz

Deve ser salvo no diretório /opt e então descompactado com o comando:

tar xvzf nrpe-2.13.tar.gz

Dentro do diretório que foi descompactado, deve-se executar os seguintes comandos para compilação e 
instalação do plugin:

./configure
make
make install


Para a utilização do NRPE devemos adicionar as seguintes linhas ao arquivo 
/usr/local/nagios/etc/objects/commands.cfg:

# 'check_nrpe' command definition 
define command{ 
        command_name  check_nrpe 
        command_line     $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
}

Essas linhas permitem ao Nagios executar os comandos do plugin NRPE. 

Para clientes Linux, a instalação é muito similar, o download é o mesmo e deve ser salvo no diretório /opt.
Depois de descompactado, deve-se entrar no diretório descompactado e executar os seguintes comandos:

./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
make
make install

Em seguida deve-se copiar o arquivo de configuração que está em sample-config/nrpe.cfg para o diretório 
do plugin /usr/local/nagios/bin/. As linha abaixo devem ser alterada colocando-se os hosts que tem 
permissão para coletar os dados do plugin:

 81 allowed_hosts=127.0.0.1, ip.do.servidor.nagios
A partir da linha 201 deve-se configurar os comandos utilizados pelo NRPE, por exemplo:

201 command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 
202 command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 
203 command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1 
204 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z 
205 command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

O NRPE utiliza os plugins locais para coletar os dados do host, então basta adicionar a linha de comando 
seguindo o padrão acima e utilizando os plugins locais.

No servidor, para se utilizar o NRPE deve-se criar as linhas (exemplo):

define service{ 
        use                       generic-service 
        host_name                host
        service_description      Processos em Execucao 
        check_command            check_nrpe!check_total_procs 
}

NSCLIENT++

O NSClient++ é um plugin para monitoramento de hosts Windows.

O download do plugin deve ser feito em http://files.nsclient.org/stable/NSCP-0.4.1.73-x64.msi
A instalação no Windows é bem simples, basta avançar até pedir o endereço IP do servidor Nagios, na 
senha deixe em branco, vamos configurá-la mais tarde. Após a instalação, o arquivo c:\Arquivos de 
Programas\NSclient\NSC.ini , as seguintes linhas devem ser descomentadas: 


[modules] 
FileLogger.dll 
CheckSystem.dll 
CheckDisk.dll 
NSClientListener.dll 
SysTray.dll 
CheckEventLog.dll 
CheckHelpers.dll 
CheckWMI.dll 
[Settings] 
use_file=1 
allowed_hosts= 
[NSClient] 
allowed_hosts= 
port=1248 9

E na linha da Password você escolherá uma senha para que o Nagios se conecte ao Nsclient++.

A configuração no Nagios é feita no arquivo /usr/local/nagios/etc/objects/commands.cfg adicionando-se as
seguintes linhas:

define command{ 
        command_name    check_nt 
        command_line     $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s nagios -v $ARG1$ $ARG2$ 
        }

No arquivo de configurações dos hosts os serviços são definidos seguindo os seguintes padrões:

define service{ 
        use                       generic-service 
        host_name                host
        service_description      CPU Load 
        check_command            check_nt!CPULOAD!-l 5,80,90
}

PNP4NAGIOS

O pnp4nagios é um utilitário que gera gráficos através dos dados de performance gerados pelo Nagios.

O utilitário pode ser adquirido através do endereço 
http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.19.tar.gz e salvo no 
diretório /opt do servidor Nagios.

Sua instalação é feita através de códigos-fontes descompactando-se o arquivo baixado e entrando no 
diretório descompactado. Em seguida executar os seguintes comandos:

./configure --with-nagios-user=nagios –with-nagios-group=nagios
make all
make install
make install-webconf
make install-config
make install-init
make fullinstall

Deve-se instalar também o pacote rrdtool:

apt-get install rrdtool

O primeiro passo para a configuração do pnp4nagios é a configuração do arquivo nagios.cfg. Deve-se 
alterar as seguintes linhas:

711 process_performance_data=1

 736 service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata 
 737 service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\t
HOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::
$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$ 
\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::
$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$ 
 738 service_perfdata_file_mode=a 
 739 service_perfdata_file_processing_interval=15 
 740 service_perfdata_file_processing_command=process-service-perfdata-file

 744 host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata 
 745 host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::
$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::
$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOST 
STATETYPE$ 
 746 host_perfdata_file_mode=a 
 747 host_perfdata_file_processing_interval=15 
 748 host_perfdata_file_processing_command=process-host-perfdata-file

Em seguida deve-se alterar o arquivo commands.cfg nas seguintes linhas:
285 define command{ 
286         command_name            process-service-perfdata-file 
287         command_line            /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/
var/spool/service-perfdata.$TIMET$ 
288 } 
289 
290 define command{ 
291         command_name            process-host-perfdata-file 
292         command_line            /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/
var/spool/host-perfdata.$TIMET$ 
293 }

Salve o arquivo, reinicie o nagios e no navegador visite o endereço:

http://nagios/pnp4nagios para que a instalação seja finalizada.

Para que os gráficos sejam gerados, a seguinte linha deve ser adicionada aos serviços configurados nos 
arquivos dos hosts:

action_url              /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$

E a partir de agora os gráficos serão gerados para cada serviço em que a linha acima foi adicionada.


TEMPLATES

Os templates do Nagios definem o modelo de monitoramento do hosts. Esses modelos estão armazenados 
em /usr/local/nagios/etc/objects/templates.cfg e são definidos da seguinte forma:

define host{ 
name                               generic-host     ; Nome do template 
notifications_enabled             1                       ; Notificações de host estão habilitadas 
event_handler_enabled          1                       ; Manipulação de eventos estão habilitadas
flap_detection_enabled           1                       ; Detecção de flaps está habilitada 
failure_prediction_enabled 1                       ; Predição de falhas está habilitada
process_perf_data                 1                       ; Processar dados de performance 
retain_status_information        1                       ; Retém informações de status se o programa reiniciar
retain_nonstatus_information 1                       ; Retém informações non-status se reiniciar 
notification_period   24x7                  ; Envia notificações todo o tempo 
register                          0                        ; Não registrar porque é apenas um template
} 

Os templates específicos herdam várias características dos templates genéricos, mas pode ser totalmente 
customizáveis.

define host{ 
name   linux-server   ; Template de host Linux
use   generic-host   ; Utiliza o template de host genérico
check_period  24x7    ; Checa os hosts todo o tempo
check_interval  5    ; Intervalo de 5 minutos entre as checagens
retry_interval  1    ; Intervalo de 1 minuto caso a checagem dê errado
max_check_attempts 10   ; Máximo de 10 checagens caso dê errado
check_command check-host-alive  ; Comando que verifica se o host está online
notification_period 24x7    ; Notifica todo o tempo
notification_interval 30   ; Intervalo de notificação de um mesmo evento
notification_options d,u,r    ; Eventos notificados (down,unknow,recovery)
contact_groups admins   ; Grupo de contatos a ser notificado
register                       0 
}

define host{ 
name   windows-server
use                              generic-host 
check_period              24x7 
check_interval            5 
retry_interval  1
max_check_attempts 10 
check_command check-host-alive
notification_period 24x7
notification_interval 30 
notification_options d,u,r 
contact_groups admins
hostgroups  windows-servers 
register                        0 
}

define host{ 
name   database-server 
use   generic-host
check_period  24x7 
check_interval  5
retry_interval  1
max_check_attempts 10 
check_command check-host-alive
notification_period 24x7 
notification_interval 30
notification_options d,u,r
contact_groups admins
register  0
}

define host{ 
name   generic-printer 
use   generic-host 
check_period  24x7 
check_interval  5 
retry_interval  1
max_check_attempts 10
check_command check-host-alive 
notification_period workhours 
notification_interval 30
notification_options d,r 
contact_groups admins
register  0 
} 
define host{ 
name   generic-switch
use   generic-host 
check_period  24x7
check_interval  5
retry_interval  1
max_check_attempts 10
check_command check-host-alive
notification_period 24x7
notification_interval 30 
notification_options d,r 
contact_groups admins
register                       0
}

define service{ 
name     generic-service
active_checks_enabled  1 
passive_checks_enabled  1
parallelize_check   1
obsess_over_service   1
check_freshness   0 
notifications_enabled   1
event_handler_enabled  1
flap_detection_enabled  1 
failure_prediction_enabled  1
process_perf_data   1
retain_status_information  1 
retain_nonstatus_information  1 
is_volatile    0 
check_period    24x7
max_check_attempts   3 
normal_check_interval  10 
retry_check_interval   2
contact_groups   admins 
notification_options   w,u,c,r 
notification_interval   60 
notification_period   24x7 
register     0 
}

define service{ 
name     local-service           ; The name of this service template 
use     generic-service         ; Inherit default values from the generic-service definition 
max_check_attempts   4 
normal_check_interval  5 
retry_check_interval   1
register     0 
} 


define contact{ 
name     generic-contact 
service_notification_period  24x7
host_notification_period  24x7
service_notification_options  w,u,c,r,f,s 
host_notification_options  d,u,r,f,s 
service_notification_commands notify-service-by-email
host_notification_commands  notify-host-by-email
register    0 
}

Os contatos e grupos de contatos são definidos no arquivo contacts.cfg.

Os contatos estão definidos da seguinte forma:

define contact{ 
        contact_name  nagiosadmin 
        use   generic-contact 
        alias   Nagios Admin 
        e-mail   nagios@nagios.com.br 
} 

Os grupos estão definidos da seguinte forma:

define contactgroup{ 
        contactgroup_name admins 
        alias   Nagios Administrators 
        members   nagiosadmin 
        } 

EXEMPLO DE HOST

Este é um exemplo básico de um arquivo de configuração de um host, que deve ser salvo como 
hostname.cfg

Ele monitorará apenas o número de usuários logados:

define host{

        use  linux-server
        host_name          hostname
        alias  Server Linux

        icon_image         redhat.jpg

        address  192.168.x.x
}



define hostgroup{

        hostgroup_name redhat-servers
        alias  RedHat Servers

        }



define service{

        use   generic-service

        host_name            hostname

        service_description      Usuarios Logados

        check_command            check_nrpe!check_users

        action_url               /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$

}

sexta-feira, 30 de novembro de 2012

Script para Redundância de Links Dedicados

Olá a todos!!!

Trago a vocês neste post um script que desenvolvi para fazer a redundância de links dedicados. Como sempre, esse script reflete o meu ambiente e talvez cada um deva adaptá-lo às suas próprias necessidades.

O script abaixo testa o gateway primário definido em "GW_PRIMARIO" executando um ping para o endereço definido em "IP_TESTE_PRIMARIO1", e caso o IP não responda, ele confirma o teste executando um ping em  "IP_TESTE_PRIMARIO2". Se o segundo IP também não responder, ele executa a função "GATEWAY", que coleta todas as rotas da tabela e cria um script de adição de rotas tendo como gateway de todas, o gateway secundário.

A mesma função também cria um script de remoção de rotas contendo o gateway primário para que não haja problemas no roteamento. O mesmo algoritmo foi utilizado para testar o gateway secundário

#!/bin/bash
# Script de redundancia de links dedicados
# Desenvolvido por Rodrigo Manzzato Alves Garcia em 08/10/2012

PATH=/sbin:/usr/sbin:/bin:/usr/bin
# Informe abaixo o gateway primario
GW_PRIMARIO=""
# Informe abaixo os IPs de teste do gateway primario
IP_TESTE_PRIMARIO1=""
IP_TESTE_PRIMARIO2=""
# Informe abaixo o gateway secundario
GW_SECUNDARIO=""
# Informe abaixo os IPs de teste do gateway secundario
IP_TESTE_SECUNDARIO1=""
IP_TESTE_SECUNDARIO2=""

# Armazenar gateway padrao na variavel GW_ATUAL
GW_ATUAL=`netstat -nr | awk '$1 ~ /^[0.0.0.0]/ {print $2}'`

# ATENCAO!!! A secao abaixo so deve ser alterada com absoluta certeza de que sabe o que esta fazendo!!!

# Funcao para troca do gateway
function GATEWAY()
{
        netstat -nr | awk -v gw2="$GW2" -v gw="$GW" 'NR > 1 {if ($2 == gw2) print "route add -net " $1 FS "netmask " $3 " gw " gw > "/etc/network/gateway";}'
        netstat -nr | awk -v gw2="$GW2" 'NR > 2 {if ($2 == gw2) print "route del -net " $1 FS "netmask " $3 " gw " gw2 > "/etc/network/gateway_del";}'
    while read ROTA2
        do
                echo -e "`$ROTA2`"
        done < /etc/network/gateway_del
    while read ROTA
        do
                echo -e "`$ROTA`"
        done < /etc/network/gateway
}

# Backup das rotas existentes
echo "#!/bin/bash" > /etc/network/rotas.sh
netstat -nr | awk 'length($2) > 7' | awk 'NR > 2 {print "route add -net " $1 FS "netmask " $3 " gw " $2}' >> /etc/network/rotas.sh

# Teste das redes
if [ $GW_ATUAL = "$GW_PRIMARIO" ]
    then
        ping -c4 $IP_TESTE_PRIMARIO1 >> /dev/null
        if [ $? = "0" ]
            then   
                echo `date` "Rede Primaria OK" >> /etc/network/gateway.log
            else   
                ping -c4 $IP_TESTE_PRIMARIO2 >> /dev/null
                if [ $? = "0" ]
                    then   
                        echo `date` "Rede Primaria OK" >> /etc/network/gateway.log
                    else    # Troca de Gateway   
                        GW=$GW_SECUNDARIO
                        GW2=$GW_PRIMARIO
                        GATEWAY
                        echo `date` "Rede Secundaria Ativada" >> /etc/network/gateway.log
                        exit
                fi
        fi
elif [ $GW_ATUAL = "$GW_SECUNDARIO" ]
    then   
        ping -c4 $IP_TESTE_SECUNDARIO1 >> /dev/null
        if [ $? = "0" ]
            then   
                echo `date` "Rede Secundaria OK" >> /etc/network/gateway.log
            else   
                ping -c4 $IP_TESTE_SECUNDARIO2 >> /dev/null
                if [ $? = "0" ]
                    then   
                        echo `date` "Rede Secundaria OK" >> /etc/network/gateway.log
                    else    # Troca de Gateway
                        GW=$GW_PRIMARIO
                        GW2=$GW_SECUNDARIO
                        GATEWAY
                        echo `date` "Rede Primaria Ativada" >> /etc/network/gateway.log
                        exit
                fi
        fi
fi

Espero que seja útil de alguma forma.

Até a próxima!!!

sexta-feira, 23 de novembro de 2012

Monitoramento Básico de Discos

Olá a todos!!!

Abaixo um pequeno script que eu fiz para que as informações sobre uso de discos rígidos sejam enviadas por e-mail de tempos em tempos. Esse script foi implementado por mim em um HP-UX 11.31 que roda um importante banco de dados. Vamos a ele:

#!/sbin/sh # Esse é o shell do root no HP-UX

# As três linhas abaixo configuram o cabeçalho do e-mail a ser enviado
echo "Subject: Uso dos Discos do Servidor" > message.txt
echo "From: root@servidor" >> message.txt
echo "To: admin@empresa.com.br" >> message.txt


echo "===================================" >> message.txt
echo "Uso dos Discos em `date`" >> message.txt
echo "===================================" >> message.txt
echo "\n" >> message.txt

df -Pk | awk 'NR > 1{ printf "%-20s%-7s%-20s%-20s%-4s\n", "Volume="$1, "\t\tMontagem="$6, "\t\tOcupado(KB)="$3, "\t\tLivre(KB)="$4, "\t\tUso="$5}' >> message.txt

sendmail -t < message.txt

Bom, é isso... Até a próxima!!!

quinta-feira, 22 de novembro de 2012

Java e Tomcat

Olá a todos!!!

Esse documento eu criei quando meu chefe pediu para instalar um servidor web Debian rodando Java e Tomcat. Pensei: "Fácil, apt-get install..." mas ele pediu para instalar as versões mais recentes dos pacotes, então achei melhor baixar dos sites. Abaixo a documentação que eu criei depois de ter terminado toda a configuração.


Instalação de Java e Tomcat no Debian

Java

Baixar o pacote do openjdk no endereço http://www.oracle.com/technetwork/java/javase/downloads

Descompactar o pacote no diretório /opt

Criar as variáveis de ambiente em /etc/profile

JAVA_HOME=/opt/jdk1.7.0_07
JRE_HOME=$JAVA_HOME/jre
export JAVA_HOME
export JRE_HOME

Crie os links para os comandos do Java: update-alternatives --install /usr/bin/java java /opt/jdk1.7.0_07/bin/java 1065 (o mesmo com o javac)

Teste o funcionamento com o comando java -version e javac -version

Tomcat

Baixe o pacote do Tomcat em http://tomcat.apache.org/

Descompacte o pacote em /opt

Mude o nome da pasta criada para “tomcat”

Dê permissão de execução em todos os scripts da pasta /opt/tomcat/bin:

chmod +x /opt/tomcat/bin/*.sh

Crie o usuário e grupo do Tomcat:

groupadd tomcat
useradd -g tomcat -d /opt/tomcat tomcat
usermod -G www-data tomcat
chown tomcat:tomcat /opt/tomcat -R

Crie o script de inicialização do Tomcat

#!/bin/bash

### BEGIN INIT INFO

# Provides: tomcat7

# Required-Start: $remote_fs $syslog

# Required-Stop: $remote_fs $syslog

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Start daemon at boot time

# Description: Enable service provided by daemon.

### END INIT INFO


CATALINA_HOME=/opt/tomcat
export CATALINA_HOME
JAVA_HOME=/opt/jdk1.7.0_07
export JAVA_HOME
TOMCAT_OWNER=tomcat; export TOMCAT_OWNER
JAVA_OPTS=-Xms128M -Xmx128M; export JAVA_OPTS

start() {
echo -n "Starting Tomcat: "
su $TOMCAT_OWNER -c $CATALINA_HOME/bin/startup.sh

}
stop() {
echo -n "Stopping Tomcat: "
su $TOMCAT_OWNER -c $CATALINA_HOME/bin/shutdown.sh
}

##

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: tomcat {start|stop|restart}"
exit
esac

Coloque o comando no diretório /etc/init.d e ative a chamada do comando na inicialização:

update-rc.d tomcat defaults

Teste a instalação visitando no navegador o endereço http://ip_do_servidor:8080



É isso aí pessoal, até a próxima!!!

terça-feira, 20 de novembro de 2012

Script para Instalação do KVM

Olá a todos!!!

Para facilitar a instalação e configuração do KVM, eu criei um script para Debian/Ubuntu que prepara o ambiente, instala e configura os arquivos da libvirt e instala uma interface web de administração. O script é melhor aproveitado em uma máquina com o SO recém instalado.

Detalhes do Script:

- Em meu ambiente eu utilizo VMs com rede em bridge, e isso foi passado para o script (a performance de rede fica muito mais rápida com essa configuração)

- O script cria a bridge utilizando a primeira placa de rede do sistema

- Todos os blocos de comandos foram feitos em forma de funções para que ficasse mais fácil a sua manipulação.

- O script instala a interface web webvirtmgr (www.webvirtmgr.net) que oferece funcionalidades básicas como criação de VMs, manipulação de storages, console em VNC, etc.

- Toda a instalação levou de 30 a 40 minutos (com uma conexão de 10 mbps)

- Curiosamente em algumas instalações eu tive que reiniciar o servidor após a instalação, mas em outras isso não aconteceu.

Abaixo o código:

#!/bin/bash
# Instalador do KVM e Webvirtmgr Para Debian Squeeze+ e Ubuntu
# Desenvolvido por Rodrigo Garcia 20/11/2012

clear

function sources_install()
{
    VERSION=`cat /etc/debian_version`
    if [ $VERSION = "wheezy/sid" ]
    then
        break;
    else
        # Incluir repositorios "Testing" no sources.list (apenas para Debian)
        echo "# Testing" >> /etc/apt/sources.list
        echo "deb http://ftp.debian.org/debian/ testing main contrib non-free" >> /etc/apt/sources.list
        echo "#Testing Security updates" >> /etc/apt/sources.list
        echo "deb http://security.debian.org/ testing/updates main contrib" >> /etc/apt/sources.list
        apt-get update
        # Instalar pacotes necessarios
        apt-get install kvm libvirt-bin git python3.2 python-django virtinst apache2 libapache2-mod-python libapache2-mod-wsgi -y
    fi
}
function bridge()
{
    # Criar bridge br0
    IFACE=`ifconfig | awk 'NR==1 {print $1}'`
    echo "allow-hotplug br0" >> /etc/network/interfaces
    echo "iface br0 inet dhcp" >> /etc/network/interfaces
    echo "   bridge_ports $IFACE" >> /etc/network/interfaces    # Faz uma bridge com a primeira interface de rede do sistema
    echo "   bridge_fd 9" >> /etc/network/interfaces
    echo "   bridge_hello 2" >> /etc/network/interfaces
    echo "   bridge_maxage 12" >> /etc/network/interfaces
    echo "   bridge_stp on" >> /etc/network/interfaces
    ifup br0
}
function configure_daemon()
{
    # Configurar /etc/default/libvirt-bin
    echo "start_libvirtd=\"yes\"" > /etc/default/libvirt-bin
    echo "libvirtd_opts=\"-l -d\"" >> /etc/default/libvirt-bin
    #configurar daemon do libvirt
    sed -i '22 s/#//g' /etc/libvirt/libvirtd.conf
    sed -i '33 s/#//g' /etc/libvirt/libvirtd.conf
    sed -i '98 s/"0770"/"0777"/g' /etc/libvirt/libvirtd.conf
    sed -i '146 s/#//g' /etc/libvirt/libvirtd.conf
    sed -i '146 s/"sasl"/"none"/g' /etc/libvirt/libvirtd.conf
}
function webvirt_install()
{
    # Baixar e instalar webvirtmgr
    mkdir /var/www/webvirtmgr
    git clone git://github.com/retspen/webvirtmgr.git /var/www/webvirtmgr
    # Configurar banco de dados e criar superusuario (este é o único ponto do script em que há interação com o usuário)
    /var/www/webvirtmgr/manage.py syncdb
    chown www-data:www-data /var/www/webvirtmgr -R
    chmod 755 /var/www/webvirtmgr/webvirtmgr.db
    # Configuracao do Apache
    echo "WSGIScriptAlias / /var/www/webvirtmgr/wsgi/django.wsgi" > /etc/apache2/conf.d/webvirtmgr.conf
    echo "Alias /static /var/www/webvirtmgr/static/" >> /etc/apache2/conf.d/webvirtmgr.conf
    echo "Alias /media /var/www/webvirtmgr/media/" >> /etc/apache2/conf.d/webvirtmgr.conf
    echo "<Directory /var/www/webvirtmgr/wsgi>" >> /etc/apache2/conf.d/webvirtmgr.conf
    echo "  Order allow,deny" >> /etc/apache2/conf.d/webvirtmgr.conf
    echo "  Allow from all" >> /etc/apache2/conf.d/webvirtmgr.conf
    echo "</Directory>" >> /etc/apache2/conf.d/webvirtmgr.conf
}
function modules()
{
    # Reiniciar os módulos
    rmmod kvm-intel
    rmmod kvm
    modprobe kvm
    modprobe kvm-intel
}
function services()
{
    # Reiniciar os serviços
    service libvirt-bin restart
    service apache2 restart
}
sources_install
bridge
configure_daemon
webvirt_install
modules
services
exit 0;

Espero que gostem,

Até a próxima!!!

quinta-feira, 15 de novembro de 2012

Virtualização

Olá a todos!!!

O objetivo desse post é falar rapidamente sobre um sistema de virtualização muito bom mas que não é muito conhecido, o KVM. Como eu disse no post anterior, tenho algumas máquinas virtuais bem simples (porém importantes) rodando dentro de alguns servidores Linux. A plataforma utilizada é o VMWare Server 2, que se tornou obsoleta, não tem mais suporte e nem atualizações da VMWare.

Isso pode ser um grande problema, pois qualquer atualização de kernel, pode tornar a plataforma inoperante. Comecei então a pesquisar novas soluções de virtualização que pudesse utilizar em Debian e que tivesse uma performance boa. No meu desktop eu costumo utilizar o Virtual Box, é uma boa solução, mas na minha opinião não possui uma performance muito boa.

Já tinha ouvido falar da solução KVM (Kernel-based Virtual Machine), mas nunca tinha usado. Resolvi experimentar pois dei uma lida sobre ela e achei interessante o fato de que a virtualização se dá diretamente no kernel, o que aumenta em muito a performance.

Vou ensinar aqui a instalar o KVM no sistema Debian e Ubuntu (já que os métodos são idênticos). Vou utilizar o conceito de cliente-servidor para essa solução. Então no servidor é necessário instalar os pacotes kvm, libvirt e libvirt-bin:

# apt-get install kvm libvirt libvirt-bin -y

Para aceitar conexões de um cliente, são necessárias algumas alterações. No arquivo /etc/default/libvirt-bin deve-se acrescentar a opção "-l" na linha:

libvirtd_optd="-d"

Essa opção (-l) quer dizer ao daemon para escutar conexões tcp. A próxima alteração está no arquivo /etc/libvirt/libvirtd.conf. Deve descomentar as linhas:

# listen_tls= 0
# listen_tcp= 1
# auth_tcp= "none"

Essa última opção eu coloquei "none" porque ainda não consegui fazer com que a autenticação via sasl funcionasse, e isso estava prejudicando meus testes. Quando eu conseguir fazer funcionar eu posto explicando como se faz. Um detalhe, para facilitar o gerenciamento dos arquivos utilizados para discos virtuais e imagens de cds, eu criei um link simbólico da pasta onde devem ficar armazenados esses arquivos:

ln -s /var/lib/libvirt/images  ~/virtual

Qualquer imagem de cd que você for utilizar para criar VMs, deve estar nessa pasta.

Depois dessas configurações, vamos reiniciar o libvirt:

# service libvirt-bin restart

Na máquina cliente, vamos instalar o pacote "virt-manager":

# apt-get install virt-manager -y

Essa é a interface de gerenciamento do KVM. Precisamos criar uma conexão com o servidor. Cllicamos em "Arquivo" -> "Adicionar Conexão". A opção "Hypervisor" deve ser "QEMU/KVM", marcar a caixa "Connect to Remote Host", a opção "Method" deve ser "TCP", o "Username" do servidor (pode ser o root) e em "Hostname" pode colocar o IP do servidor. Clique em "Connect" e já poderá criar as suas máquinas virtuais.

Conforme eu for avançando em meus testes até a implamantação, pretendo postar mais tutoriais e artigos referentes ao KVM. Meu próximo post provavelmente será sobre conversão de discos virtuais VMWare e VirtualBox para KVM.

Até a próxima !!!

terça-feira, 13 de novembro de 2012

Limpar Memória

Olá a todos!

Recentemente eu tive um problema com alguns de meus roteadores Linux onde também rodam algumas máquinas virtuais. A memória cache dessas máquinas estava muito alta, e isso causava uma certa lentidão no sistema. A solução é simples, basta executar o seguinte comando:

# echo 3 > /proc/sys/vm/drop_caches

Ou então

# sysctl -w vm.drop_caches=3

Esse comandos limpam todos os caches da memória. É chato porém ter que ficar monitorando o tempo todo e executando comandos, então eu criei um shell script que é agendado no crontab para ser executado a cada 30 minutos (este é o tempo que eu percebi para o crescimento da memória utilizada, pode variar para cada um). O script tem o seguinte conteúdo:

#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin

TMEM=`free -m | awk 'NR == 2 {print $2}'` # Variável para memória total
UMEM=`free -m | awk 'NR == 2 {print $3}'` # Variável para memória usada
PMEM=`echo $((40 * $TMEM / 100))` # Variável para 40% da memória total

if [ $UMEM -ge $PMEM ] # Se a memória usada for maior ou igual a 40%
        then
                echo 3 > /proc/sys/vm/drop_caches # Limpa os caches
        else
                exit;
fi

Agora basta dar permissão de execução (chmod + x cache.sh ou chmod 755 cache.sh) e agendar a sua execução:

crontab -e

30 * * * * sh /opt/cache.sh

Simples e útil!!!

Até a próxima !!!

domingo, 11 de novembro de 2012

VPN

Olá a todos!!!

O assunto desse post é mostrar como se faz a configuração de um cliente VPN no FreeBSD para se autenticar via MSCHAPv2 com MPPE. Depois de muito tentar, pesquisar, eu cheguei a configuração que eu vou demonstrar abaixo.

O primeiro passo é instalar o MPD5, que serve tanto para servidores de VPN quanto clientes. Para instalar o MPD5, digite no terminal:

# pkg_add -r mpd5

Depois da instalação, vá até o diretório do MPD5:

cd /usr/local/etc/mpd5

Crie o arquivo "mpd.conf" com o seguinte conteúdo:

startup:
default:
        load vpn

vpn:
        create bundle static B1
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        set iface route ip.da.rede.remota/24               

        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set mppc yes stateless

        create link static L1 pptp
        set link action bundle B1
        set auth authname "dominio\\usuario"
        set auth password "senha"
        set link max-redial 0
        set link mtu 1460
        set link keep-alive 20 75
        set pptp peer endereço.da.vpn
        set pptp disable windowing
        set link enable incoming
        open

Depois de criar esse arquivo, basta executar o comando:

mpd5

Aparecerão várias linhas com as informações da conexão, agora basta adicionar o ip do servidor remoto como a rota padrão e pronto!

Qualquer atualização das informações sobre esse assunto será postada aqui.

Abraços e até a próxima!!!

quarta-feira, 7 de novembro de 2012

Dicas importantes FreeBSD

Olá a todos!

Esse post tem o objetivo de ensinar algumas coisas que devem ser feitas por quem quer usar o FreeBSD. Os pontos abordados aqui são bem básicos e servem para deixar uma instalação recente funcional para o usuário doméstico.

Configuração de wi-fi:

Uma instalação nova do FreeBSD não tem interface gráfica, e por isso será necessário baixá-la e instalá-la. Para quem usa conexão cabeada é tranquilo, basta espetar o cabo de rede no PC e executar os comandos necessários. Porém quem usa wi-fi pode ficar meio assustado com a idéia de ter que configurar uma conexão no shell. As configurações utilizadas aqui servem para qualquer placa, mas os nomes das interfaces são atribuídos de acordo com o modelo. Por exemplo, a minha placa é uma Atheros, e o nome da interface ficou "ath0". Além disso, essas configurações são aplicadas para quem utiliza redes WPA com DHCP, para WEP é outro procedimento que não vou explicar aqui por enquanto.

Primeiro passo, adicionar as seguintes linhas no arquivo /etc/rc.conf

wlans_ath0="wlan0" 
ifconfig_wlan0="DHCP"

Depois disso, vamos criar o arquivo "/etc/wpa_supplicant.conf" com o seguinte conteúdo:

network={ 
ssid="nome_da_sua_rede_wifi" 
psk="chave_da_sua_rede" 
}

Depois de criar o arquivo, deve-se executar o seguinte comando "/etc/rc.d/netif start" e em seguida o comando "dhclient".

Pronto! Você já está conectado na sua rede wireless e já pode instalar pacotes no seu FreeBSD.

Ambiente Gráfico

Vamos instalar o Xorg, Gnome e GDM no FreeBSD, então para isso execute os seguintes comandos (cada um pode ser executado em um terminal diferente):

pkg_add -r xorg
pkg_add -r gdm
pkg_add -r gnome2

Agora senta e espera, porque vai demorar...

Enquanto isso podemos editar o arquivo "/etc/rc.conf" adicionando as seguintes linhas:

hald_enable="YES"
dbus_enable="YES"
gdm_enable="YES"
gnome_enable="YES"

Essas linhas são necessárias para a utilização do GDM e do Gnome.

Depois de uma hora ou uma hora e meia (com uma conexão de 10 mbps), a instalação dos pacotes já deve ter terminado, então devemos executar o seguinte comando "Xorg -configure". Esse comando vai gerar o arquivo xorg.conf que será utilizado pelas sessões gráficas. Reinicie o sistema e aguarde até aparecer a tela do GDM.

Espero ter contribuído para que você consiga utilizar esse ótimo sistema que é o FreeBSD. Colocarei mais dicas nos próximos posts.

Até mais!!!  

sexta-feira, 2 de novembro de 2012

Experimentando

Olá a todos!

Durante os últimos dias eu andei experimentando vários sistemas Unix, pois enjoei do Linux e quero utilizar um sistema que seja Unix de verdade, pois todos sabem que "GNU is not Unix". Vou descrever as minha impressões sobre cada um dos que eu testei. Todos os sistemas foram testados em máquinas virtuais (VirtualBox) primeiro para depois serem testados no meu notebook.

OpenSolaris:

O OpenSolaris é um descendente do Unix System V4 desenvolvido pela Sun e AT&T no final dos anos 80. Hoje é distribuído pela Oracle e está na sua versão 11.1. Minha experiência com ele não foi muito legal, porque na vm já ficou muito lento. A instalação foi tranquila e relativamente rápida. No primeiro boot já vi uma certa lentidão para carregar os serviços (possivelmente por se tratar de máquina virtual). Devido à lentidão eu não tive muita paciência para fazer as configurações básicas de utilização como desktop e acabei abortando a sua utilização.

OpenIndiana:

Depois da minha frustrada tentativa de utilizar o OpenSolaris, eu fui testar o OpenIndiana que é um fork do sistema da Oracle. O OpenIndiana tem duas versões, server e desktop, e foi muito mais amigável do que o OpenSolaris. A instalação foi tranquila e rápida, e apenas o primeiro boot demorou um pouquinho. O gerenciador de janelas utilizado é o Gnome, que ficou muito bonito no sistema. O sistema possui gerenciadores de pacotes e atualizações no melhor estilo dos outros Unix-like da família GNU/Linux. 

O que me deixou chateado foi o fato de que os pacotes oferecidos nos repositórios (que podem ser do próprio projeto ou do OpenSolaris) serem muito antigos (por exemplo não há a opção de instalação do LibreOffice, apenas do OpenOffice) e  de não estar preparado para computadores utilizados no Brasil (dificuldades com teclado).Por esses fatores eu nem tentei testar o sistema no meu notebook, pois estou buscando um sistema para utilizar no meu dia a dia, e não posso ficar correndo atrás desses probleminhas com teclados, etc. Mas sugiro que caso haja interesse de alguém, que vá além e mande para mim suas experiências para que eu possa atualizar as informações e publicá-las no blog.

PC-BSD:

Fiquei surpreso ao descobrir que havia um projeto que nasceu em 2005 para tornar o FreeBSD mais amigável a ponto de rodar em desktops com todas as comodidades que os sistemas da família GNU/Linux oferecem hoje. Me empolguei de verdade, e fui visitar o site. Achei muito bacana a iniciativa, e o que é muito legal é que o projeto acompanha os releases do FreeBSD, que agora está na versão 9.0 e por isso o release do PC-BSD também está na 9.0.

Quem baixar apenas a imagem de CD, terá o gerenciador de janelas LXDE, que na minha opinião é muito pobre apesar de ser bem leve. Quem baixar a imagem de DVD, terá opções de instalação mais completas como até a possibildiade de instalar o FreeBSD ao invés do PC-BSD. poderá também escolher entre vários desktops como Gnome, KDE, LXDE, XFCE, etc.

Dependendo dos pacotes selecionados, a instalação vai demorar um bocado e no meu caso levou pelo menos umas 2 horas e meia. Mas é bem bacana. na máquina virtual rodou sem problema algum, nos repositórios do gerenciador de pacotes (AppCafe) tem até os adicionais para guest systems do VirtualBox.

Depois de testar na máquina virtual, decidi testar no meu notebook. O processo foi o mesmo, a instalação demorou novamente, mas reconheceu praticamente todo o meu hardware inclusive a placa de vídeo ATI. Só que depois de algum tempo de uso, dava algum pau no driver da placa que fazia desligar o sistema. Infelizmente não é possível utilizar driver VESA e configurar a minha resolução (1280x800). Mas tirando isso e a falta de cuidados com a aparência do sistema, é um bom sistema Unix para desktops.

GhostBSD:

"Gnome meets BSD" é o lema do projeto que nasceu em 2010 que tem o mesmo objetivo do PC-BSD com a diferença de focar na integração do FreeBSD com o Gnome. Baixei o DVD e executei na máquina virtual. Assim como o Ubuntu, o sistema é live com a opção de instalação depois de carregado. Também possui um gerenciador de pacotes e atualizações, instalei os adicionais do VirtualBox, contudo não tem um gerenciador de rede do sistema, e utilizar o network-manager do Gnome não surtiu efeito então tudo eve de ser configurado na mão mesmo.

Quando à aparência nem tenho o que falar. O sistema é muito bonito, caprichado com belos wallpapers e esquema de cores para os ícones. Decidi que era hora de testar no notebook. Infelizmente o sistema não subiu no meu note com o Gnome, e baixei a imagem para pen drive com LXDE. Consegui fazer a instalação mas não queria utilizar essa interface mas sim o Gnome. 

Estava baixando o meu gerenciador de janelas favorito quando deu pau na placa de vídeo como no PC-BSD e o sistema foi resligado. Reiniciei, continuei a instalação e o sistema desligou de novo. Tentei mais umas duas vezes até que a instalação do Gnome foi concluída. instalei também o GDM mas foi inútil configurá-lo para iniciar com o sistema pois não subia.Acabei desistindo por hora do GhostBSD.

FreeBSD:

Hoje eu acordei inspirado e resolvi instalar de vez o FreeBSD. Colhi antes algumas informações na Internet de como se configurava a conexão wireless em modo texto no "Friba" e de como fazia a instalação do Xorg, Gnome e GDM e fui à luta. A instalação do sistema durou 20 minutos no máximo, e então fui instalar a parte gráfica. Demorou pelo menos 1 hora e alguns minutos para instalar o Gnome, mas a vantagem é que diferente de outros sistemas, podemos instalar outros pacotes simultaneamente através do pkg_add.

Depois de umas 2 horas no máximo eu estava com o FreeBSD com Gnome funcionando tranquilamente no meu notebook, e é através dele que vos escrevo agora. Agora vou correr atrás de fazer funcionar a saída HDMI e descobrir como aumento o som¹ que está muito baixo mesmo com o nível no máximo.

Abraços e até a próxima!!!

1 - Consegui resolver a questão do som com o comando "mixer pcm 100".

quinta-feira, 25 de outubro de 2012

História


Olá a todos,

Esse artigo tem o propósito de resumir a história do Unix e mostrar como os sistemas baseados nele se popularizaram e chegaram até nossas empresas e até mesmo em nossas casas. Tudo o que eu fiz foi reunir informações na Internet e concentrá-las aqui.

O UNIX V1 foi lançado em 1971 desenvolvido por Ken Thompson and Dennis Ritchie (ambos da AT&T) como uma evolução do Multics, um projeto dos anos 60 da AT&T, Honeywell, GE e o MIT, que ainda não havia sido terminado. Foi em 1973 que ocorreu a grande evolução do Unix, ele foi reescrito em linguagem C, o que permitiu que ele fosse portado para outro hardware em alguns meses. A partir do UNIX V6, lançado em 1975, o sistema começou a se popularizar nas universidades. A Universidade de Berkeley comprou os códigos-fontes do sistema e começou a fazer modificações nele. Em 1978 então, Berkeley lança o BSD (Berkeley Software Distribution).

Foi no ano de 1979, a partir da versão 7, que o UNIX começou a ser comercializado e usado principalmente pelas universidades.Já contava com o Bourne Shell, interpretador de comandos criado por Stephen Bourne, e que substituiu o original Thompson Shell. Em 1983 foi lançado o 4.2BSD, uma das mais importantes versões do UNIX, pois integrava softwares de conexão TCP/IP e sockets, tornando assim mais fácil a conexão de sistemas UNIX em redes locais.

Foi também nesse mesmo ano (1983) que Richard Stallman, do departamento de inteligência artificial do MIT, anunciou que começaria a desenvolver um sistema operacional baseado no UNIX, mas que não seria UNIX que foi chamado de GNU, sigla recursiva para "GNU is not UNIX" (GNU não é UNIX). Abaixo parte de seu anúncio:

"A partir do próximo Dia de Ação de Graças, vou escrever um software completo compatível com Unix chamado GNU (sigla para Gnu Não é Unix), e o compartilharei livremente com qualquer um que possa usá-lo. Contribuições em termos de tempo, dinheiro, programas e equipamentos são muito bem-vindas.

Para começar, o GNU será um kernel mais todos os utilitários necessários para escrever e rodar programas em C: editores, shell, compilador C, linker, assembler, e algumas outras coisas. Após isso, adicionaremos um formatador de texto, um YACC, um jogo de Empire, software de planilha, e centenas de outras coisas. Nós esperamos, eventualmente, fornecer tudo o que for útil e que normalmente vem com um sistema Unix, e tudo o mais que seja útil, incluindo documentação on-line e impressa.

O GNU rodará programas Unix, mas não será idêntico ao Unix. Nós faremos todas as melhorias que são necessárias, baseados em nossa experiência com outros sistemas operacionais. Em particular, planejamos ter nomes de arquivos longos, números de versão de arquivos, um sistema de arquivos à prova de quebra, talvez um sistema de sugestão de nome de arquivo, um suporte para monitores independente para cada terminal, e eventualmente um sistema de janelas baseado em Lisp por meio do qual vários programas em Lisp e programas Unix comuns possam compartilhar uma tela. Tanto C e Lisp estarão disponíveis como linguagens de programação. Nós teremos um software de controle de rede baseado no protocolo chaosnet do MIT, muito superior ao UUCP. Nós também podemos ter alguma compatibilidade com UUCP.
"

Em 1989, Richard Stallman criaria a GPL - General Public License (Licença Pública Geral) que mantinha livre todos os programas sob ela licenciados. Isso quer dizer que ninguém poderia se apoderar de seus códigos-fonte, ninguém poderia restringir a sua distribuição, sua utilização ou sua modificação, e também mantinha os direitos de autoria. Nesse momento, o GNU já estava totalmente completo com a exceção do kernel (núcleo do sistema). Uma tentativa de escrever o código do núcleo em 1990 foi frustrada.

Em 1991, em Helsinki (Finlândia), um universitário chamado Linus Torvalds começou a escrever um código para integração do hardware que estava utilizando, esse código seria utilizado independente de sistema operacional. Com o passar do tempo, ele percebeu que havia escrito justamente um kernel e postou a seguinte mensagem no newsgroup "comp.os.minix.":

"Olá a todos que estão usando minix -

Eu estou fazendo um sistema operacional livre (é apenas um hobby, não será grande e profissional como o gnu) para os clones AT 386(486). Está sendo desenvolvido desde abril e está quase pronto. Gostaria de receber qualquer feedback sobre o que as pessoas gostam/não gostam no minix, uma vez que o meu SO se parece um pouco com ele (mesmo layout físico de sistema de arquivos (devido a razões práticas) entre outras coisas.

No momento eu o portei para bash(1.08) e gcc(1.40), e as coisas parecem funcionar. Isso implica que irei conseguir algo prático dentro de poucos meses e gostaria de saber quais características a maioria das pessoas gostaria que tivesse. Quaisquer sugestões são bem-vindas, mas não prometo que eu vá implementá-las :-)

Linus (torvalds@kruuna.helsinki.fi)

PS. Não — ele não tem nenhum código minix, e possui um fs multitarefa. Ele NÃO é portável (usa troca de contexto 386, etc), e provavelmente nunca será compatível com nada além de discos rígidos AT, uma vez que isso é tudo o que eu tenho :-(.
—Linus Torvalds
"

Torvalds então passou a utilizar seu kernel juntamente com o sistema GNU, e em 1992 ele foi licenciado sob a GPL e as primeiras distribuições GNU/Linux foram criadas.Começando por uma distribuição chamada MCC Interim Linux do Manchester Computer Centre.

Paralelamente ao projeto GNU/Linux, os sistemas Unix Like continuaram evoluindo. Em 1993, nasceu um sistema livre baseado na família BSD chamado FreeBSD. É um sistema mais próximo do Unix do que seu "companheiro" Linux. O sistema FreeBSD é voltado para servidores, que prima pelo desempenho, estabilidade e segurança, seu lema é "The Power to Serve" (O poder de Servir). Em 1994 surgiu o NetBSD que tem por objetivo ser o sistema mais portável, chegando a rodar até mesmo em celulares e torrareiras. O sistema é capaz de rodar em mais de 50 plataformas de hardware diferentes. Seu lema é "Of Course It Runs NetBSD" (É Claro que Roda NetBSD). 


Em 1995, surgiu do sistema NetBSD o sistema OpenBSD que é focado em segurança, e muito utilizado hoje em dia para a construção de firewalls. O projeto OpenBSD também é responsável pelo OpenSSL. Hoje em dia existem até mesmo sistemas baseados no BSD que foram criados para rodarem como desktops. Seu caso mais famoso é o do MacOS X que utiliza o kernel Darwin dos sistemas BSD e também o PCBSD, um sistema baseado no FreeBSD.


Os sistemas FreeBSD, NetBSD e OpenBSD hoje não podem legalmente serem chamados de Unix pois a marca pertence à The Open Group, a instituição que provê vários testes para garantir que um sistema possa ou não ser chamado de Unix. Todos esses sistemas passariam no teste, mas por problemas financeiros não puderam ainda ser submetidos à essa avaliação.  Abaixo a linha do tempo do Unix e dos sistemas Unix-like. Clique no link abaixo para visualizar a linha do tempo dos sistemas Unix e Unix-like.


http://deepblue.cs.camosun.bc.ca/~deid/comp176/newAT1/Unix-history.svg 


Fontes: Projeto GNU, Projeto OpenBSD, BSD.org, Wikipedia, HotStuffWorks.

terça-feira, 23 de outubro de 2012

Propósito

Olá a todos,

O propósito desse blog não é dar aulas, ou inventar algo novo, mas apenas contribuir com as comunidades Free Software e Open Source através de textos, dicas, tutoriais, e isso não abrange apenas o GNU/Linux, mas também outros sistemas como os *BSD. Já deixo claro também que nem todos os artigos que serão encontrados aqui serão meus, mas também de outras pessoas, de outros sites, nunca esquecendo de colocar os devidos créditos de autoria e fonte. Gostaria também de encontrar vonluntários que estejam dispostos a contribuir com informações para a comunidade, artigos, etc.

As comunidades Free Software e Open Source merece todo o nosso respeito pois se empenham voluntariamente no desenvolvimento de sistemas que beneficiarão a muitas pessoas e também empresas que utilizam esses sistemas como desktops e servidores gratuitamente (Ex: Debian ou FreeBSD), ou fornecendo o código-fonte de seus sistemas que tem valores agregados (como suporte, manuais, etc) quando são pagos (Ex: Red Hat Enterprise Linux) para customizações, melhorias, etc.

Pretendo postar nesse blog como tudo isso começou. Mesmo que já existam vários tipos de mídia (livros, filmes, sites) que já tragam esse tipo de conteúdo, acredito que seja uma questão de honra colocar aqui também a história de sistemas que hoje são referência em segurança, estabilidade e performance. Essas pessoas que abdicaram de seu tempo, de suas comodidades e às vezes até mesmo dedicaram suas vidas inteiras para o avanço de seus ideais.

Para os usuários de outros sistemas, talvez esse blog sirva de incentivo para vocês experimentarem coisas novas nem que seja por pura curiosidade. Sistemas Unix Like* são difíceis? Algumas vezes sim, outras vezes são apenas diferentes. Eu desafio você, usuário de outro sistema a entrar nesse mundo e não se sentir recompensado por ter provado algo diferente até mesmo para fins de comparação.

Seja livre!!!

*Unix Like é a forma que são chamados os sistemas baseados no Unix, um sistema operacional criado em 1969, como GNU/Linux, FreeBSD, OpenBSD, NetBSD, Mac OS, etc.

Apresentação

Olá a todos,

Meu nome é Rodrigo, trabalho com TI há 12 anos, mas especificamente na área de infraestrutura e servidores Linux. Durante esse período eu consegui reunir uma boa experiência em sistemas operacionais e suas ferramentas. Como quase todos os usuários de computadores, comecei utilizando o SO da Microsoft®. Acontece que eu não consigo me conformar com as coisas e ficar acomodado com aquilo que me incomoda, e depois de algum tempo eu decidi experimentar o GNU/Linux.

Além de um inconformado eu sou também cauteloso, e como eu dividia o computador com o restante da minha família, não poderia simplesmente tirar o Windows® e colocar outro sistema, e assim eu instalei o WinLinux que nada mais era do que um aplicativo Windows que iniciava um ambiente "Linux" com KDE e outras coisas mais.

Meu lado inconformado ficou aguçado de novo e eu queria um Linux de verdade!!! Daí eu comprei uma revista que trazia a distribuição "Corel Linux" em CD (eu sei, mas na época eu não tinha conexão banda larga, nem gravador de CDs e nem conhecia alguém que tivesse). Nem preciso dizer que essa experiência foi um desastre!!!

Primeiro que para redimensionar o disco se utilizava o FIPS , um programa que rodava em DOS e que não era nem um pouco amigável. O resultado foi que eu detonei a tabela de partições e a instalação do Corel Linux não pode prosseguir. Minha família quase me baniu do convívio e me proibiram de chegar perto do computador de novo por algum tempo.

Passado algum tempo, depois que eu consegui reinstalar o Windows, saiu outra edição daquela revista mas dessa vez trazendo uma distribuição que eu já tinha ouvido falar, o Slackware Linux 8.1!!! Nem preciso dizer o que aconteceu... Dessa vez porém eu fiz da melhor forma possível. Fiz backup de todos os arquivos que estavam no HD, depois eu recriei a tabela de partições com espaço para o Linux, instalei o Windows, e depois meu Slackware.

A partir de então um novo mundo se abriu diante dos meus olhos e eu pude conhecer o mundo livre, seguro e estável dos sistemas Unix Like. Quase tudo o que eu sei de Linux eu devo ao Slack, pois a sua fama de ser pouco amigável o já o precede. Lembro que na época havia muitas distribuições amigáveis como Red Hat 8, Mandrake 8 e Conectiva 8, mas eu me sentia orgulhoso por ter um Slackware totalmente configurado e funcional (agora já com banda larga utilizando o programa RP-PPPoE).

Fiquei no Slackware durante alguns anos, e decidi experimentar outros sistemas operacionais. Daí eu pulei entre o RH, Mandrake, Conectiva, FreeBSD, depois o Kurumin, e cheguei no Debian. Passei a gostar muito dessa distribuição, pelo ideal, pela estabilidade e facilidade de uso sem perder aquela "cara" de Linux.

Hoje eu uso Ubuntu no meu notebook, minha esposa e minha filha de 8 anos também usam Ubuntu no netbook delas e não querem voltar para o Windows nunca mais. Trabalho como Administrador de Redes Linux e pretendo passar um pouco da minha experiência no blog.