Menu do Linux
 O que é o Linux    Ambiente de Rede 
 GNU e GPL  Arq.Conf.Redes  
 Open Source   DNS Introdução
 Processo de Boot     
 inittab     

 O que é o Linux
 Linux é um sistema operacional que roda em várias plataformas e é similar ao
 sistema Operacional UNIX.
 O Linux usa sua arquitetura baseada no Posix 9IEEE 1003.1:1990.
 Mas o sistema operacional Linux foi montado sem a utilização de nenhum destes
 componentes, assim o sistema pode ser distribuido livrimente.

 O que o Linux suporta :
 
 O movimento GNU foi criado em 1984 por Richard Stallman do grupo de Inteligência Artificial do MIT. 
 Os preceitos básicos visam garantir que o software seja livre: Executar o software para qualquer proposito. Modificar o software para se adaptar às suas necessidades. Redistribuir o software gratuitamente ou não. Distribuir versões modificadas. O movimento GNU é custeado pela FSF(FREE SOFTWARE FOUNDATION) fundada por Richard Stallman. O movimento GNU vei trazer o conceito de copyleft com as regras dominantes do copyright (direitos autorais), ele é um método de publicar o software de forma a garantir que ele continue livre.
 A licença GLP A GPL (GNU Public License) foi elaborada com suporte de advogados, de modo a garantir os preceitos básicos, utilizada a lei de copyright para garantir que um sofware, uma vez livre, não pode se tornar proprietário novamente.

        Movimento Open Source
Com o Linux, o paradigma de programação mudou de um grupo de especialistas desenvolvedores, para uma "anarquia controlada", onde o software não tem restrição para ver e/ou modificar seu código fonte. Os voluntários contribuem com seu tempo e conhecimento para o desenvolvimento do Linux por meio da Internet.

  Vantagens do desenvolvimento baseado em software livre
   
  
 
        Conceitos Básicos do Linux

O processo de boot

 Quando iniciamos uma máquina com Linux os seguintes processos ocorrem:
 
 
 
 Do ligamento da máquina até a carga completa do sistema, acontecem vários processos distintos
 em que tanto o hardware quanto o software são testados e inicializados. Quando o sistema está
 funcionando, esse processo passa despercebido, na figura acima temos os processos de  boot no
 Linux e abaixo temos uma tabela explicativa de cada processo:
 
 1  Ligar o PC  O usuário liga o botão do PC. 
 2  POST  Inicialização do hardware, feita pela BIOS do sistema. 
 3  Gerenciador de boot  Programa que é responsável pela escolha do sistema operacional a ser carregado. 
 4  Kernel  Etapa onde o Kernel do S.O é carregado e assume o controle da máquina. 
 5  init  Primeiro programa a ser carregado, responsável pela inicialização e carregamento dos outros programas. 
 6  Script de inicialização  Scripts localizados em /etc/rc.d que são responsáveis pela inicialização de serviços e configurações iniciais. 

POST
  Quando o computador é ligado pelo usuário, o POST é executado, isto é quando
  a BIOS (Basic Input/Output System, ou Sistema Básico de Entrada
  e saída) faz uma série de testes iniciais na máquina, tais como:
  
  1. Identificação do Hardware.
  2. Verificação do Hardware.
  3. Contagem de memória.
  4. Checagem de funcionamento de dispositivos.ex: CD-ROM, FLOPPY etc.

Gerenciador de Boot
 Quando não ocorreu nenhum erro, o POST chama um pequeno programa, chamado de Gerenciador de
 Boot (Boot Manager) .  Este  programa  fica no  primeiro setor do  disco rígido, chamado de
 Registro Mestre de Inicialização ou MBR (Master Boot Record). Assim que é executado,
 este programa carrega um Kernel de algum sistema operacional, que pode estar em 
 qualquer partição do disco rígido. Caso a máquina possua mais de um sistema operacional o
 gerenciador apresentará um menu para que o usuário possa escolher o sistema a ser usado.
 Os gerenciadores mais usados no Linux são o Grub e o Lilo.
 

Carregamento do Kernel
Uma vez o sistema escolhido a ser carregado, todo o controle da inicialização é passado ao
Kernel desse sistema. A partir deste ponto, o Kernel faz sua própria detecção de dispositivos
e inicia a carga do sistema. É quando aparecem em tela várias mensagens informando detalhes
dos equipamentos, assim que estes são detectados.
Terminada toda a detecção, o Kernel monta a partição raiz (parâmetro "root=" passado
na respectiva linha do gerenciador de boot) e chama aquele que é o primeiro processo a ser
executado no sistema: o processo "init".

Processo init
O processo init é o primeiro processo a ser executado no sistema, logo após a carga completa
do Kernel. Uma vez disparado, o init lê seu arquivo de configuração (/etc/inittab) e
passa a chamar uma série de scripts hierarquizados no diretório  /etc/rc.d ou 
/etc/rc* , dependendo da distribuição do Linux, conforme um padrão conhecido como
"System V Init". Estes scripts, entre outras tarefas, verificam e montam sistemas de arquivos,
configuram teclado e disparam servidores.
O processo de boot na maior parte das distribuições de Linux segue o padrão System V e portanto
segue o mesmo tipo de configuração, feita através do arquivo /etc/inittab.

Níveis na inicialização System V é o Runlevel (nível de execução)
No Linux temos vários níveis de execução, cada um definindo diferentes comportamentos do sistema
em relação a que programas daemons são carregados e que ações são tomadas.
Na inicialização, assim que o Kernel é carregado, o processo INIT é chamado e entra no 
nível de execução configurado como padrão,  disparando  os  scripts  relacionados. Estes são os 
chamados runlevels comumente utilizados no Linux.
 Nível Descrição
 0   Para desativar (desligar) o sistema.  
 1   Modo mono-usuário.  
 2   Modo multi-usuário sem suporte ao servidor.  
 3   Modo multi-usuário com CUI (Common User Interface).  
 4   Não definido.  
 5   Modo multi-usuário com GUI (Grafical User Interface).  
 6   Modo de reinicialização.  


Assim para desligar o sistema, podemos utilizar dois comandos: shutdown e init.
O comando shutdown tem duas opções para se desligar o sistema; o -h (halt, ou seja, desligar o sistema) e
 -r (restart, ou seja, reinicializar o sistema). Esse comando envia uma mensagem a todos os usuários
 atualmente logados avisando que o sistema será desligado. Exemplo:
 
 # shutdown -h 30
 
 Com o comando acima, o sistema será desligado em 30 segundos. Mas podemos tambem usar o comando init 0
 inidicando qual dos níveis de execução exibidos na tabela se deseja utilizar, para se desligar o
 sistema podemos usar o seguinte comando:
 
 # init 0
 
 Também podemos desligar o sistema de uma só vez usando o comando aseguir:
 
 # shutdow -h now
 
 Ou rebutar o sistema:
 
 # shutdown -r now
 
 Para você saber em qual nível de execução que o sistema se encontra, execute o seguite seguinte comando
 # runlevel.Para alterar o nível a qualquer momento, use o comando # telinit passado como 
 argumento o número do nível desejado.

Por dentro do arquivo inittab
A configuração do init é feita através do arquivo /etc/inittab. Neste arquivo estão definições dos
primeiros programas a serem executados como ja falamos:
Geralmente são scripts que executam toda uma hierarquia de outros scripts e programas e também outras 
definições do init.
Configiração da linha do inittab
Cada linha é composta de vários "campos" separados por um caracter de dois pontos ":" com a seguinte
sintaxe:
ID:runlevel:palavra_chave:linha de comando , onde :
CampoDescrição
ID Identificador de cada tarefa. Deve ser único e composto por no máximo 4 letras. Algumas tarefas padrão requerem identificadores padrão, que não devem ser alterados.
runlevels Níveis de execução onde a tarefa deve ser executada. Pro exemplo 123 vale para os runlevels 1,2 e 3.
palavra chave Informa como e quando o comando vai ser executado. A lista de palavras_chave esta na tabela a seguir.
linha de comando O comando a ser executado. Pode conter espaços.

Palavras chave Usadas no Terceiro Campo do inittab
Palavra chaveDescrição
 respawn   O processo será executado assim que iniciar o runlevel informando, e quando terminar, será reiniciado automaticamente.  
 wait   O processo será executado assim que se iniciar o runlevel informando, e o init aguardará pela sua finalização.  
 once   O processo será executado uma única vez assim que se iniciar o runlevel informado.  
 boot   O processo será executado durante o boot do sistema. O campo runlevel é ignorado.  
 bootwait   O processo será executado durante o boot do sistema e o init aguardará pela sua finalização. O campo runlevel é ignorado.  
 off   O processo não será executado.  
 initdefault   Especifica qual o runlevel padrão após o boot da máquina Se não especificado, será perguntado ao operador.  
 sysinit   O processo será executado durante o boot do sistema, antes dos processos boot e bootwait. O campo runlevel é ignorado.  
 powerfail   O processo será executado quando faltar energia na máquina (se conectada a um dispositivo de no-break).  
 powerwait   O processo será executado quando faltar energia na máquina (se conectada a um dispositivo de no-break), e o init aguardará pela sua finalização.  
 powerkwait   O processo será executado assim que a energia da máquina for restaurada.  
 powerfailnow   O processo será executado quando faltar energia na máquina e a bateria interna do no-break estiver chegando ao fim.  
 ctrladel   O processo será executado quando as tecla CTRL-ALT-DEL forem pressionadas. Geralmente usado para fazer o shutdown ou reboot da máquina. 

Após editar o inittab, execute o comando "# init q" para qua as alterações sejam efetivadas
imediatamente, sem a nescessidade de rebutar o sistema.

Temos abaixo o exemplo de um arquivo inittab do Conectiva 10





  A configuração básica do ambiente de rede

 Os protocolos
    São um conjunto de protocolos de comunicação que definem como tipos
diferentes de computadores podem conversar entre sí.
    TPC/IP
    Estes são os protocolos mais comuns usados:
    TCP(Protocolo de transmissão de controle).
    IP (Protocolo de Internet).
  
    O protocolo de internet, transmite os dados na forma de datagrama 
(divide os dados em pacotes) que são enviados para os computadores via
rede.
    O Protocolo de transmissão e controle assegura que os datagramas que
estão faltando serão reenviados até que sejam corretamente recebidos.
 
 Outros protocolos que fazem parte do TCP/IP

 ARP   Protocolo de resolução de endereço,traduz endereços Internet para endereços locais de hardware.  
 ICMP   Protocolo de Internet de controle de mensagens.  
 PPP   Protocolo ponto a ponto, proporciona conexões de redes síncronas e assíncronas.  
 RARP   Protocolo de resolução de endereço reverso, ou seja, traduz endereços locais para endereços de Internet.  
 SLIP   Protocolo de Internet de linha serial , habilitando o IP em linhas seriáis.  
 SMTP   Protocolo simples de transporte de correio, e é usado pelo sendmail e pelo postfix para enviar mensagens de correio eletrônico via TCP/IP.  
 SNMP   Procolo simples de gerenciamento de rede, realizando funções distribuidas de gerenciamento de rede via TCP/IP.  
 UDP   Protocolo de diagrama de usuário.  
O conjunto de protocolos TCP/IP possui quatro camadas: 1- Camada de aplicação, que permite o desenvolvimento e a utilização pelo usuário, possuindo n protocolos, tais como: SMTP, TELNET, FTP, DNS, TFTP, NFS, SNMP, HTTP etc... 2- Camada de transporte, que é a responsável por receber os dados enviados pela camada de aplicação, e dividi-los em pacotes, que serão enviados para a camada de Internet. É onde estão localizados os protocolos TCP, respon- sável pelo transporte seguro e a entrega garantida de informação enttre o nó de origem e o nó de destino. Também nesta camada temos o UDP que é responsável pelo transporte inseguro de entrega não garantida de informação, estabelecendo assim conexões virtuáis em que aplicações não precisam de gerenciar a retrans- missão e o controle de sequência. 3- Camada de Internet, que é responsável por receber os dados enviados pela camada de transporte e dividí-los em datagramas que serão enviados para a camada de rede, e é onde se localiza os protocolos IP ( que são responsáveis pelo roteamento e retransmissão de pacotes para a rede, até a mensagem chegar ao destino. 4- Camada de rede, que é responsável por enviar os datagramas pela rede, vide tabela abaixo:
 Aplicação 
 Transporte 
 InternetAplicação 
 Rede 
Onde se encontram os arquivos de configuração de Rede no Conectiva
Item Arquivo
Nome do host /etc/sysconfig/network
Endereço IP /etc/sysconfig/network-scripts/ifcfg-[nome_interface]
Máscara de rede /etc/sysconfig/network-scripts/ifcfg-[nome_interface]
Rota default /etc/sysconfig/network


O arquivo de configuração network

 - É um arquivo para a configuração do nome do host e default gateway para
 a interface de rede.
 
 * NETWORKING= yes | no   -> para habilitar ou não o serviço de rede. 
 * HOSTNAME=nome          -> Nome do host.
 * GATEWAY= IP do gateway -> Endereço IP do gateway.
 * GATEWAYDEV= device     -> Interface de rede usada para chegar ao 
                                default Gateway.
 * FORWARD_IPV4= yes | no -> Se a função de envio de pacotes IP está ou
                                não habilitada.    

O arquivo de configuração ifcfg-eth0

 - Itens básicos do arquivo de configuração das interfaces de rede:

 * DEVICE = nome_interface -> Nome do dispositivo físico para a
                                 interface de rede.  
 * IPADDR = IP             -> Endereço IP da interface de rede. 
 * NETMASK= mascara        -> Mascara de sub-rede.  
 * NETWORK=IP  de rede     -> Endereço IP da rede ao qual o host 
                                 pertence.
 * BROADCAST=IP            -> Endereço IP do broadcast da rede.
 * ONBOOT= yes | no        -> Habilita a interface de rede no boot do
                                 sistema.
 * BOOTPROTO=dhcp|bootp|static -> Define se a interface de rede será 
                                     configurada por dhcp, boottp ou
                                     estaticamente.

 comandos básicos de rede
 Exibir o nome do host de uma máquina:
 # hostname
 
 ifconfig é  usado  para configurar (e posteriormente manter) as interfaces de rede.
É usado durante o boot para configurar a  maioria
delas para  um  estado usável. Depois disto, é normalmente somente
necessário durante depurações ou quando for necessária uma configuração
fina  do sistema.
 Se nenhum argumento for informado ifconfig somente mostra o estado
das interfaces correntemente  definidas. Se um argumento for informado ele
mostra somente o estado da interface informada. De outra forma ele assumeque os parâmetros
devem ser configurados.
 # ifconfig -i eth0

 - Outros comandos:
 
 * netstat      -> Exibe o status da rede.
 * ping         -> Indica se um computadore remoto pode ser alcançado.       
 * nslookup     -> Questiona o serviço de nome de domínio DNS. 
 * traceroute   -> Traça a rota percorrida por pacotes até o computador
                   de destino.  
 * route        -> Exibe ou manipula a tabela de roteamento IP. 



DNS - INTRUDUÇÃO

DNS é a abreviatura de Domain Name System. O DNS é um serviço de resolução de nomes. Toda comunicação entre os computadores e demais equipamentos de uma rede baseada no protocolo TCP/IP (e qual rede não é baseada em TCP/IP?) é feita através do número IP. Número IP do computador de origem e número IP do computador de destino. Porém não seria nada produtivo se os usuários tivessem que decorar, ou mais realisticamente, consultar uma tabela de números IP toda vez que tivessem que acessar um recurso da rede. Por exemplo, você digita www.microsoft.com/brasil, para acessar o site da Microsoft no Brasil, sem ter que se preocupar e nem saber qual o número IP do servidor onde está hospedado o site da Microsoft Brasil. Mas alguém tem que fazer este serviço, pois quando você digita www.microsoft.com/brasil, o protocolo TCP/IP precisa "descobrir" (o termo técnico é resolver o nome) qual o número IP está associado com o nome digitado. Se não for possível "descobrir" o número IP associado ao nome, não será possível acessar o recurso desejado. Para que seu DNS funcione é imperativo que esteja instalado em seu linux o pacote do bind, você pode consultar se ele esltá ou não instalado através do comando: # rpm -q bind Se tudo estiver em ordem você receberá uma mensagem como esta: bind-8.1.0-6cl Caso o pacote não esteja instalado, instale-o a partir do CD do conectiva linux que contenha o pacote rpm do bind como comando: # rpm -ivh bind*.rpm ou através do synaptic.
Abaixo temos os arquivos necessários para a configuração do seu servidor DNS :
  /var/named/named.ca     Este arquivo contém os servidores DNS raízes deste planeta, não edite este arquivo! 
 /etc/resolv.conf    Guarda o nome do seu domínio e os servidires DNS em cadeia hierárquica  
 /etc/hosts    Simples tabela com nomes de máquinas e endereços IP  
 /etc/hosts.conf    Define a ordem de pesquisa (Hosts, Bind)  
 /etc/named.conf    Guarda todos os parâmetros usados pelo named, daemon que controla o serviço DNS.  
Configurando os arquivos: /etc/resolv.conf search meudominio.com.br localhost nameserver 10.25.12.1 nameserver 200.155.64.2 nameserver 200.155.64.1 Obs:
 Observe que depois do IP do DNS de nossa rede, existem outros dois servidores DNS com IPs reais para a Internet,estes são em ordem, o DNS primário e secundário de nosso provedor hipotético, que resolverão nomes caso o 10.25.12.1 não conseguir. Isto é fundamental porque nossa rede está ligada a Internet e precisa resolver nomes da internet que nosso DNS local não consegue. Assim, as consultas DNS irão primeiro para 10.25.12.1, se este não resolver, 200.155.64.2 assumirá e assim por diante.
/etc/hosts 127.0.0.1 localhost.localdomain localhost 10.25.12.1 www.meudominio.com.br www - Neste caso nossa rede não terá um servidor de e-mail, apenas um servidor web (www), caso fosse necessário, seria colocado aqui também o endereço IP, nome de domínio totalmente qualificado e o alias. O endereço 127.0.0.1 é conhecido como loopback, usado apenas para identificar o host local. /etc/hosts.conf order hosts,bind multi on
Aqui apenas definimos a ordem de pesquisa para a resolução de nomes, primeiro o sistema consulta o arquivo hosts e depois o bind, a opção multi on permite que a mesma máquina possa ter múltiplos endereços IP. /etc/named.conf (As alterações estão em marrom) options { directory "/var/named"; dump-file "/var/named/dump/dump.db"; statistics-file ?/var/named/dump/named.stats?; memstatatistics-file "/var/named/dump/named.memstats"; //listen-on {127.0.0.1/32; }; //Comente esta linha para seu servidor aceitar solicitações de DNS de qualquer // Interface. Caso contrário ele só aceita solicitações do localhost. }; //Configuração do servidor primário zone "." { type hint; file "named.ca"; }; zone "0.0.127.in-addr.arpa" { type master; file "named.local"; }; key key_rndc { algorithm "hmac-md5" secret "vjFG1QesBKud5cuJrDyw4A=="; }; controls { inet 127.0.0.1 allow {localhost; } keys {key_rndc; }; }; //Aqui começa a nossa zona zone "meudominio.com.br" { type master; file "meudominio.hosts"; }; zone "12.25.10.in-addr.arpa" { type master; file "12.25.10.reverse"; }; Agora só faltam os arquivos criados para guardar os parâmetros de sua zona de domínio. /var/named/meudominio.hosts $TTL 43200 @ IN SOA www.meudominio.com.br. root.meudominio.com.br. ( 2004030502 ; serial; 3600 ; refresh 900 ; retry 1209600 ; expire 43200 ; default_ttl ) @ IN NS www.meudominio.com.br. www IN A 10.25.12.1 Comentários sobre o arquivo: $TTL 43200 - Tempo em segundos que uma consulta permanece no cache. IN - Que o host usa TCP/IP NS - Name Server - O host é o servidor DNS. MX - Mail Exchange - O Host é servidor de e-mail. A - O Host tem endereço IP 2004030502 ; serial - Data da atualização dos dados do servidor (Serve para o DNS secundário saber se um ou outro é o mais atual) A data é ao reverso. 3600 ; refresh - Atualização em segundos de sei lá o que... 900 ; retry - Tempo em segundos que o servidor secundário tenta novamente uma consulta no caso de falha da verificação da data de atualização. 43200 ; default_ttl - Tempo de permanência de uma consulta no cache. /var/named/12.25.10.reverse $TTL 43200 @ IN SOA www.meudominio.com.br. root.meudominio.com.br. ( 2004030502 ; serial; 3600 ; refresh 900 ; retry 1209600 ; expire 43200 ; default_ttl ) @ IN NS www.meudominio.com.br. 1 IN PTR www.meudominio.com.br Note que este arquivo é análogo ao anterior, com a diferença do ip reverso de 10.25.12.1, e por causa de nossa máscara de sub-rede (255.255.255.0) o número 1 aparece, porque só ele identifica o host. Também é importante lembrar de que nosso servidor web (www.meudominio.com.br) é a mesma máquina que atuará como servidor DNS primário. Por isto o nome www, mesmo com o identificador NS (name server) INICIALIZANDO O SERVIDOR DNS No conectiva linux digite: # cds # ./named start Assim se não houver nada de errado você verá a mensagem de inicialização seguida do típico [OK], seu servidor está rodando. Recomendo adicionar a seguinte linha de comando ao final do script de inicialização /etc/rc.local : /etc/rc.d/init.d/./named start Assim seu DNS estará no ar sempre que o computador for ligado. CONFIGURANDO OS CLIENTES Linux Win98 Agora basta inserir nos micros clientes o IP de seu servidor DNS (10.25.12.1) No Window$ 98 abra o painel de controle / rede / TCP/IP e peça propriedades. Na aba DNS peça para ativar dns e preencha os campos: Nome do host: qqcoisa1 Domínio: meudominio.com.br Ordem de pesquisa DNS: 10.25.12.1 O resto deixe em branco. Pronto, agora reinicie a estação e tente abrir a página inicial de sua intranet (www.meudominio.com.br) e depois qualquer outra da internet.