Tag Archives: Linux
Linux – Estrutura de Diretórios Linux
Introdução
A primeira diferença notada pelos usuários ao usar o Linux é a Estrutura de Diretórios por ele adotada. Estamos acostumados no Windows a acessar o Windows Explorer e nos deparar com as pastas Arquivos de Programas onde se encontram as pastas dos programas instalados, Windows onde se encontram os arquivos e programas que se instalam junto com a instalação do windows e também os arquivos de sistemas, os Meus Documentos onde armazenamos nossos documentos tudo denbtro de uma Unidade C.Nem sempre o usuário utiliza os Meus Documentos para guardar seus arquivos. Ele tem a liberdade de criar a pasta em sua unidade raiz (C: por exemplo) e gravar seus arquivos nesta pasta.
Linux – Escolhendo uma Distribuição Linux
Olá caros amigos, após as festas de final de ano, estamos mais uma vez aqui no site para comentar sobre um assunto que gera muita discussão. Tenho vontade de utilizar linux, porém qual distribuição devo usar?
Essa pergunta é muito comum entre os usuários, e gera uma grande preocupação do tipo:
- Como vou fazer para administrar o meu sistema ?
- O linux funciona bem mesmo?
- Mas e os comandos, sou um leigo não quero aprender comandos!
Essas são algumas das milhares de questionamentos que levam um usuário a desconfiar do linux. Inclusive o autor deste blog, já teve muitas dúvidas. Porém aqui vou passar um pouco do meu conhecimento sobre algumas das principais distribuições existentes, pois só vou comentar aquelas que conheço, embora já conheça muitas apenas de discussões no IRC.
Ubuntu Linux
O Ubuntu foi a terceira distribuição a ser utilizada por mim na estrada de meu aprendizado. Ela derivada do Debian. Descobri que essa distribuição é muito boa principalmente para os nossos amigos leigos. Possui um gerenciador de pacotes para instalar os programas de modo viisual. Temos um atalho no menu, cujo o qual se chama Adicionar e Remover programas, o qual nele consta todos os pacotes que seu repositório de downloads aponta (Não vou citar sobre esse tipo de coisa aqui pois eu destinei o portal de artigos para coisas mais técnicas). Além disso, o ubuntu possui um bom gerenciador de atualizações cujo o qual da uma alerta dizendo que existem atualizações a serem instaladas e te permite fazer tudo de modo automático.
O Ubuntu apesar de ser um pouco pesado em relação a outras distribuições, ele é extremamente leve em relação ao windows. Ele pouca recursos de sua máquina e é bem rápido após carregado o seu boot. Além desses poréns, o Ubuntu tem um excelente reconhecimento de hardware. Uma experiencia recente me mostrou isso. Eu estava tentando instalar o Slackware e o Debian em meu Note, porém as mesmas não reconheciam o dispositivo wi-fi de meu note. Fiz o Download do Ubuntu 8.10 e bingo. Sem trabalho algum minha placa wi-fi estava rodando perfeitamente.
Particularmente eu indico esta distribuição para ser a sua primeira distribuição para aqueles que querem aprender o Linux, e que seja sua definitiva para leigos. Além de tudo isso essa distribuição, ao meu ver, é uma das principais responsáveis pelo aumento do uso do linux e do nome Linux cair no conhecimento dos usuários de computador, já que a mesma é mantida por uma empresa e a mesma investe em propaganda e marketing.
Fedora
O Fedora foi uma distribuição que utilizei no trabalho, Fedora versão 5, pois os servidores já estavam instalados e instalei em casa para testar. Foi a primeira distribuição a ser instalada em meu micro. Porém não me aprofundei muito dela pois achei que era muito pesada. Não gostei muito do sistema de atualizar e instalar pacotes. Bom particularmente não gostei desta distribuição e logo retirei ela de meu micro. Posso dizer que a experiencia com ela apesar de tudo foi boa, e tenho a segurança de dizer que é uma distribuição muito estável já que ela roda no servidor da empresa até hoje. Ela é a versão free do Red Hat e pude perceber que todas as distribuições que derivam do Red hat exigem um pouco mais de máquina do que distribuições derivadas do Debian. Hoje diversos comentários de usuários linux dizem que as novas versões estão muito boas, leves e funcionais. Levando em consideração que são usuários que já tem um bom tempo no linux, creio eu que ela tenha melhorado mesmo. Embora eu ainda recomende Ubuntu para iniciantes.
Mandriva
Esta distribuição foi utilizada por mim no curso oficial que fiz e foi a segunda distribuição a ser instalada em meu computador. É uma ótima distribuição, foi criada a partir da junção da distribuição Mandrake e Conectiva. Está distribuição se mostrou boa, com um desempenho bom e com os mesmos problemas que achei na hora de instalar os pacotes. Como já dito na distribuição fedora, eu não gostei muito do gerenciamento de pacotes das distribuições baseadas em Red Hat. Porém essa distribuição levou uma vantagem em termos de desempenho, atualmente usuários dela dizem que o sistema de atualização está funcionando bem, e ela melhorou bastante nos aspectos de facilidade para usuários leigos. Como disse anteriormente, ainda sim prefiro o Ubuntu para iniciantes, nada impedindo que possam também instalar o Mandriva ou mesmo o Fedora.
Debian
A distribuição que mais me agradou. Foi a quarta distribuição a ser instalada. em meu computador Ela é estável, leve e fácil de lidar já que possui o mesmo gerenciador de pacotes que o Ubuntu. Esta distribuição é mantida pelos próprios usuários da comunidade linux. É uma distribuição indicada 100%, lembrando que é uma opinião pessoal, para qualquer finalidade seja ela para desktop de usuário final ou para servidores. Levando em conta também que qualquer distribuição pode ser usada para as duas funções como desktop ou como servidores, a não ser claro para aquelas distribuições mais específicas como a distribuição Coyote.
Embora ela possua os sistemas de atualização iguais ao do Ubuntu, ela possui um sistema de aviso de atualização, porém a maioria dos usuários preferem usar as linhas de comando. Aqui neste ponto já vemos que o Debian para leigos seria um pouco mais difícil pois o usuário teria que aprender a lidar com algumas poucas linhas de comando. Mesmo assim é outra distro que indico para uso doméstico ou profissional.
Slackware
Essa distribuição foi a quinta a ser instalada no meu computador e definitivamente não aconselho para usuários leigos. Ele é bem complexa, as instalações de softwares são feitas através de linha de comando. A distribuição se manteve mais próxima ao BSD. Embora seja simples, não tenha muita firula, ela requer um nível maior de conhecimento para fazer as devidas instalações, requer tempo, pois muitas vezes o usuário não conseguirá configurar logo de cara seus dispositivos ou seus programas. Ele deverá correr na internet para obter ajuda dos mais experientes e de artigos, tutoriais e fóruns.
Embora tenha essa complexidade, o Slackware é a distribuição mais rápida e estável que eu vi rodando. O lançamentos de suas versões se dá de forma calma, com muitos testes para garantir que nada vá dar problema depois de instalado. É indicado para usuários experientes que desejam um bom desempenho e estabilidade, usuários que querem aprender mais sobre o linux já que é necessário conhecer o sistema mais a fundo e para servidores.
Conclusões
Como se pode ver não existe exatamente uma distribuição que seja ruim. Existe sim gosto pessoal, ou uma certa simpatia por determinada distribuição. Todas as distribuições são excelentes. Porém sempre aconselhei a escolherem distribuições base (Debian, Slackware, Red Hat (Fedora, CentOS)), pois elas são a base para outras distribuições. Essas distribuições que são alteradas podem conter algum problema devido essas alterações que comprometa o sistema, e deixe a distribuição instável. Porém todas essas que citei é indicado para uso pessoal e para servidores. Algumas distribuições vocês vão perceber que existem versões para Desktop e versões para Servidores como o Ubuntu.
Apesar de percebermos que existe a possibilidade de trabalhar com linux sem sequer usar linha de comando, o ideal é ter um bom estudo em cima do mesmo. No windows embora seja aparentemente mais fácil de se trabalhar, estudamos, buscamos conhecimento em cursos ou mesmo na internet, apostilas ou livros. O linux funciona da mesma forma, você deve buscar o conhecimento para que o sistema trabalhe para você da forma que você deseja. Então o ponto mais importante de se mudar de Sistemas Windows para Linux é ter a consciência de que você está entrando em um mundo novo e tem que adquirir um mínimo de conhecimento para poder sobreviver nele.
Outro ponto importante é saber qual será a finalidade do Linux. Você possui softwares específicos como Autucad. Então terá problemas pois o Autocad não roda no Linux e o Linux não possui uma versão que o substitua. Então isso deve ser levado em consideração na hora da mudança. Outro ponto é a escolha do hardware. Você deve pesquisar bem o equipamento que você está desejando instalar o seu linux, pois existe fabricantes que não dão atenção ao linux e o seu hardware pode não funcionar no seu linux. Então a pesquisa em cima disso deve ser levada como ponto principal e inicial. Pesquisar em foruns as experiencias com linux de outros usuários também ajuda muito.
Linux – Explicação sobre Firewall – Iptables – Por Fallen (#slackware-br)
Na verdade este não é um artigo, é uma conversa no IRC que tivemos sobre firewall e o fallen nos deu essa excelente explicação no canal IRC #slackware-br da rede Freenode. Eu recomendo muito esta explicação pois foi muito esclarecedora para mim e outros admins que também fazem parte do canal.
<icefusion> fallen, A Chain Forward serve apenas para bloquear ou liberar o roteamento..quem faz o roteamento é o nat?
<fallen> icefusion: essa descricao usa palavras de sentido mto amplo ou ambiguo
<pksato> icefusion: para controlar o fruxo do roteamento.
<fallen> iptables nao eh feito pra roteamento
<fallen> embora ele possa interferir em roteamento
<fallen> vc sabe o q eh nat?
<icefusion> fallen, ele pode bloquear ou liberar acesso
<fallen> vamos por partes
<fallen> vc sabe o q eh nat?
<icefusion> sim
<fallen> icefusion: se sua definicao de nat eh essa, focalinux pra vc
<fallen> vc precisa saber os fundamentos das coisas
<icefusion> fallen, nat server para resscrever os ips de origem de um pacote q passam num roteador ou firewall para q um computador numa rede interna tenha acesso à rede externa
<icefusion> fallen, seria isso correto?
<fallen> ja comecou errado
<icefusion> fallen, hmm..entaum meu conceita está errado
<icefusion> *conceito
<fallen> nat e server eh como comparar laranjas com raiz quadrada
<fallen> nat eh um processo
<fallen> Network Address Translation
<icefusion> deculpe naum eh server eh serve
<fallen> por que se prender a ips de origem?
<fallen> vc nao pode reescrever ips de destino?
<icefusion> fallen, sim
<fallen> abra sua cabecinha e pare de pensar em computadores e rede interna, pensa no sentido amplo
<icefusion> fallen, hmm
<fallen> nat eh o processo de alterar cabecalhos dos pacotes
<icefusion> certo
<fallen> sua pergunta original era sobre pra que serve a chain forward
<icefusion> fallen, exato
<fallen> primeiro refaca-a da forma completa e correta: pra que serve a chain forward da tabela filter
<fallen> a arquitetura do netfilter trabalha com diversas tabelas – que representam as fases pelas quais o pacote passa ao entrar/sair da pilha do kernel
<fallen> a tabela de filter eh a que trabalha com filtragem (meio obvio, nao?)
<icefusion> certo..a mangle, filter e a nat
<fallen> tem as 3 chains basicas: input, output e forward
<fallen> entenda a pilha do kernel como uma caixa preta que manipula os pacotes de rede
<fallen> faz todas as coisas feias que precisa pro tcp/udp/ip/whatever funcionarem
<fallen> tudo o que esta entrando na pilha pra ser tratado – depois que as feiras de transporte de rede ja foram resolvidas – passam pela input
<icefusion> fallen, certo
<fallen> tudo que esta saindo da pilha pra voltar pro dispositivo de rede certo passa pela output
<fallen> e tudo o que passa pela pilha qdo esta esta em modo de gateway, passa pela forward
<fallen> gateway – um pacote que NAO eh pro kernel mas passa atravez dele pra ir pra outro lugar
<icefusion> fallen, certo…compreendi
<fallen> gateway = portal – tem q passar por ele
<icefusion> fallen, ponte para algum lugar
<fallen> a chain forward funciona tratando o trafego de “gateway”
<icefusion> fallen, xo ver se eu entendi…
<icefusion> fallen, ela trata toda a informação q naum eh pro kernel daquele dispositivo q ta tratando a informação
<fallen> quase isso
<fallen> tem q se expressar claramente, senao vc se confunde
<icefusion> hm
<fallen> a chain forward trata tudo que NAO eh diretamente “pra maquina”, mas que tem q passar por ela
<icefusion> entendi
<fallen> note que o kernel do linux NAO faz isso automagicamente: tudo que nao eh pra um endereco IP atribuido a uma placa, eh descartado
<fallen> pra isso tem que ativar ip_forward com aquele echo amigo no /proc ou via sysctl (q eh um jeito mais elegante de fazer a mesma merda)
<icefusion> fallen, vamos dizer q eu tenho um ssh numa máquina 192.168.1.2, porém meu firewall eh o 192.168.1.3, e eu vou acessar de casa, eh a forward q vai tratar isso
<fallen> o forward trata PARTE disso
<fallen> ele faz parte do FILTER
<icefusion> fallen, entendi
<fallen> pacote do 200.200.200.200 pra 192.168.1.2, ok, deixo passar
<fallen> vc vai precisar da ajuda de outra parte do netfilter pra fazer isso acontecer
<icefusion> fallen, ae q entra a tabela nat?
<fallen> se pensarmos nesse exemplo, o pacote nao vai pro 192.168.1.2, ele chega pro ip da placa do fw
<fallen> supondo que seu ip na net seja 200.10.10.10, vai chegar pra ele
<fallen> sim, ai que entra a tabela de nat
<fallen> que TRADUZ/TRANSLITERA os ENDERECOS do pacote
<fallen> address – translation
<fallen> na tabela de NAT do netfilter tem PREROUTING, POSTROUTING e OUTPUT
<fallen> PRE-routing = pre-roteamento – antes do kernel resolver o que vai fazer com o pacote
<icefusion> no caso internamente o nat trocaria o cabeçalho de destino velho pelo novo endereço internoo qual ele vai ser encaminhado
<fallen> nao confunda a palavra ROUTING nessas chains com o roteamento da maquina
<fallen> eh so pra dizer o que acontece antes ou depois do kernel fazer o roteamento
<icefusion> entendi
<fallen> isso
<icefusion> \o/
<icefusion> to fikando menos bobo
<fallen> o pacote chegou, ANTES que eu decida o que fazer com ele, eu consulto a tabela que diz que sob tais condicoes, eh pra eu traduzir o destino pro IP 192.168.1.2
<fallen> icefusion: vc entende o conceito de firewall stateful?
<icefusion> naum
<fallen> um sistema stateful – que entende ESTADOS dos pacotes e das conexoes – vai guardar uma informacao numa tabelinha dizendo que a conexao de ID tal esta sofrendo nat de destino pro IP tal
<fallen> qdo o sistema enxergar pacotes passando com esse id, ele vai cuidar de acertar origem e destino disso
<icefusion> fallen, certo
<fallen> sistema que eh stateless, a cada vez q o pacote passa pelo sistema, ele tem q passar pelas regras tudo de novo. no stateful, ele pula isso tudo qdo ja tem cache na tabelinha dele
<icefusion> certo
<icefusion> fallen, entaum roteadores saum stateful
<fallen> no caso do seu NAT de destino, vc pode REMOVER a regra do netfilter que continua funcionando a conexao ja estabelecida
<fallen> icefusion: defina roteadores
<fallen> vc esta se referindo ao elemento de rede “roteador” ou aos modens adsl chamados de roteadores
<icefusion> fallen, esses roteadores q interliga a internet
<icefusion> fallen, elemento de rede
<fallen> icefusion: de novo, vc precisa de clareza
<fallen> roteador NAO lida com conexao
<fallen> a principio, nao
<icefusion> hmm
<fallen> roteador lida com ROTAS
<fallen> (duh)
<fallen> pacotes pra ESSE ip, eu faco sair por essa rota pro proximo roteador, pacotes pra AQUELE ip, sai pela outra porta pra um outro roteador
<icefusion> fallen, soh tem tabela de roteamento e nada de filtragem nem nada entaum
<fallen> icefusion: o papel do roteador NAO eh filtrar – eh rotear. alguns equipamentos agregam funcoes, mas mantenha o foco em roteadores que so roteiam pra nao confundir as coisas
<icefusion> blz
<icefusion> entendi
<fallen> stateful ou stateless se refere a capacidade de rastrear o estado da conexao
<fallen> se esta aberto, fechado, se ESSA conexao usa alguma outra porta…
<icefusion> fallen, entaum o forward filtra o pacote para saber se ele eh permitido prosseguir, caso seja permitido ele eh tratado pela regra de nat
<fallen> o PRE-routing entra antes
* icefusion espera naum ter falado merda desta vez
<icefusion> lol
<fallen> veja soh
<icefusion> fallen, entendi
<fallen> pacotinho vindo do 200.200.200.200 pra 200.10.10.10
<fallen> o pre-routing traduz que na verdade, eh 200.200.200.200 pra 192.168.1.2
<icefusion> certo
<pksato> nao se esqueca que a comunicacao e bi direcional.
<fallen> ai vc libera ou nao pra atravessar
<icefusion> entendi
<icefusion> se fosse post, entaum ele filtraria primeiro
<icefusion> depois seria tratado pelo nat
<fallen> o post fica DEPOIS de filter
<fallen> pre-routing – filter – post-routing
<fallen> assim fica facil eu saber – no filter – quem esta falando com quem
<fallen> vc viu o caminho do pacotinho chegando
<fallen> agora pensa nele saindo
<fallen> de 192.168.1.2 pra 100.100.100.100 (por ex)
<fallen> como seu ip interno nao funfa na net, vc vai precisar fazer um nat – address translation – pra mexer na origem do pacote pra faze-lo parecer que saiu do fw, o dono do 200.10.10.10
<fallen> senao o camarada do outro lado nao sabe pra quem responder
<fallen> pensa agora q zona ficaria no filter se o POST-routing acontecesse antes dele
<fallen> ele so iria “enxergar” pacotes saindo do firewall e indo pro 100.100.100.100
<icefusion> entedi
<fallen> por isso ele so faz o nat de origem depois que ele ja fez a filtragem – assim vc sabe q eh o 192.168.1.2 tentando falar com o 100.100.100.100
<icefusion>
<icefusion> entendi..to fikando menos burro
<icefusion> haha
<fallen> so pra fazer o nat, a tabela OUTPUT do nat mexe com pacotes gerados pelo proprio kernel/maquina
<fallen> so pra fechar*
<icefusion> fallen, eu ia perguntar isso agora haha
<icefusion> fallen, pra que serve a output da nat
<fallen> a tabela mangle faz quase a mesma coisa que a de nat faz, so que com o resto das informacoes de cabecalho do pacotes fora origem/destino
<icefusion> entendi
<fallen> mangle pode ser traduzido como mutilar
<fallen> cortar, mudar, remexer, refazer o cabecalho do pacote
<icefusion> entendi
<fallen> mangle pode ser traduzido como mutilar
<fallen> cortar, mudar, remexer, refazer o cabecalho do pacote
<fallen> icefusion: agora sobre teoria de tcp/ip: vc sabe que cada pacote gera pelo menos 1 outro, certo?
<icefusion> fallen, nops
<icefusion> fallen, naum sabia até vc me dizer haha
<fallen> pilha tcp: ‘to mandando um pacote.’ —> ‘ok, recebi o pacote’
<icefusion> ah tah
<fallen> ‘quero abrir uma conexao pra porta 85 ai da sua maquina’ ‘ok, aberto’
<fallen> o host tem q responder e confirmar que recebeu e entendeu o pacote
<icefusion> tipo, vc manda um pacote e obtem uma resposta (seria os 2 pacotes no mínimo
<fallen> esse pacotinho de volta eh popularmente conhecido por “ack” de “acknowledge”
<icefusion> isso
<fallen> icefusion: eh a funcao do tcp ip: manter uma conexao e certificar-se que os pacotes chegam integros
<fallen> TRANSFER CONTROL PROTOCOL – protocolo de controle de transferencia
<icefusion> fallen,eh mesmo …eu esqueci das aulas de rede :#
<fallen> por vezes, uma mensagem IP eh quebrada em pedacos – fragmentada – e a pilha do outro lado precisa coloca-los em ordem antes de passar pra frente pros aplicativos lidarem com a informacao
<fallen> nem semrpe eles chegam em ordem
<fallen> nem sempre chegam integros
<fallen> ai q o ack entra na jogada
<icefusion> fallen, por isso tem o ack
<guax> nem sempre chegam
<fallen> entendeu a funcao dele, pelo menos por cima?
<icefusion> fallen, sim sim
<fallen> tambem, nem sempre chegam
<icefusion> e o ack nem sempre chega tb?
<fallen> entao, qdo vc faz regras de iptables/netfilter tem q levar isso em conta
<guax> icefusion, não
<fallen> icefusion: se o ack nao chegar, o host manda de novo
<icefusion> entendi
<fallen> eh a funcao da pilha tcp: cuidar dessa bagunca
<icefusion> fallen, hmmmmmmmmm
<fallen> icefusion: novamente entra a funcao stateful
<fallen> se o iptables NAO fosse stateful, vc precisaria de uma regrinhas liberando o caminho de volta pros ACKs chegarem pra quem mandou
<fallen> como ele EH stateful, basta vc falar pra ele assim oh oh: se vira negao
<icefusion> fallen, ele ja “grava o caminho do pacote para o retorno”
<icefusion> seria isso?
<fallen> olha a magica: -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
<fallen> (tanto INPUT qto forward e output)
<fallen> viu ali “-m state”?
<icefusion> fallen, sim
<fallen> icefusion: eh o modulo “state” do netfilter que cuida disso: ele consulta as tabelas de conntrack – connection tracking
<fallen> aquela linha ta dizendo “se o pacote ja tiver estado no cache, e for ou de uma conexao estabelecida ou relacionada, deixa passar”
<fallen> ai vc pergunta: como pode uma conexao estar RELACIONADA a outra?
<fallen> icefusion: hein hein hein, como uma conexao se relaciona com a outra?
<NoFX_SBC> fallen, quando o servico usa mais de uma porta por exemplo!?!?
<fallen> ouieah!
<fallen> exemplo mais simples do mundo: ftp!
<fallen> qdo vc conecta no ftp, ele abre uma conexao na porta 21 do servidor
<fallen> ate ai, facil facil
<icefusion> fallen, entendo
<fallen> ai qdo vc da um “ls”, a magica acontece: o servidor fala assim: ok, te mando os dados do ls, mas vc vai ter q abrir uma porta pra eu mandar de volta ai
<fallen> em geral, o servidor espera que VOCE abra a porta 20 na sua maquina pra ele conectar e mandar a saida do ls
<fallen> e ai, como fica o firewall na jogada? como ele vai adivinhar que a porta 20 eh pra ser direcionada pra vc?
<fallen> mesmo que vc redirecione a porta 20 no fw pra sua maquina, e ai? ninguem mais usa ftp na rede?
<icefusion> fallen, udontknow
<icefusion> fallen, num sei…fikei em duvida
<fallen> o conntrack eh esperto. ele fica ouvindo conexoes de protocolos que ele conhece – como o ftp – e fica esperando o comando pra abrir a porta no ftp
* estranho has quit (Read error: Connection reset by peer)
<fallen> nesse momento, ele sai da tocaia e pula em cima do pacotinho, e muda a linha pra corresponder ao IP dele
<fallen> ip e porta certa
<icefusion> fallen, ele ja sabe a porta q vai enviar a resposta sabendo a conexão q esta vindo
<fallen> alem de fazer o forward necessario pra aquela conexao especifica
<fallen> sim!
<fallen> ai eh que entra o RELATED: a abertura de conexao nao eh um estado novo no firewall, eh uma conexao relacionada a outra
<icefusion> entendi
<fallen> essa era a boa noticia: a mah noticia eh que o conntrack precisa conhecer E interpretar o protocolo
<icefusion> fallen, hehe
<fallen> se vc olhar nos modulos do iptables/netfilter, tem um modulo pra cada protocolo que o conntrack entende
<fallen> nf_conntrack_ftp.ko por ex
<fallen> esse eh o camaradinha que mantem o estado do firewall atualizado com as reviravoltas da conexao – quem conectou aonde, quem esta esperando uma abertura de porta pra mandar informacao…
<icefusion> fallen, caso eu mude a porta do ftp q eu vou conectar de 21 para seri-la 8888
<fallen> tem um OUTRO camaradinha q eh o irmao gemulo desse: nf_nat_ftp.ko
<icefusion> fallen, mesmo assim ele sabera pois ele conhece o protocolo
<fallen> ele cuida de abrir quaisquer conexoes de volta que o protocolo precisa
<fallen> icefusion: sim, eh especifico pra cada protocolo
<icefusion> q massa
<fallen> se vc mudar a porta do protocolo, precisa informar ao modulo que vc mudou
<fallen> da um modinfo nf_conntrack_ftp
<fallen> q vc vai ver que tem paramentros pra passar pro modulo
Sistemas Operacionais – O Kernel e o Kernel Linux
1 – O que é um Kernel?
O kernel de um sistema operacional é visto como se fosse o núcleo do mesmo. Ele representa a camada de software mais próxima ao hardware. Segundo MAXWELL2000 o kernel é o seu coração, sua mente e seu sistema nervoso.Ele é responsável exclusivamente pelo transporte das de mais baixo nível que tornam todas as outras tarefas possível. fazendo malabarismos com diversos processos que ocorrem simultâneamente, gerenciando sua memória de forma que não interfiram uns nos outros , satisfazendo suas solicitações de acesso a um disco e muito mais [MAXWELL2000].
2 – Funções de um Kernel.
O Kernel é responsável ( Kernel Monolítico) por abstrair a interface de hardware, fazendo com que os processos utilizem os recursos de forma segura e organizada[TANENBAUM1999].
Algumas funções são atribuídas ao kernel como:
- Gerência dos Processso (Criação, Agendamento, Finalização);
- Gerência de Alocação e Liberação de Memória;
- Controle do Sistema de Arquivos;
- Operações de Entrada e Saída;
Para que se possa ter essa estrutura funcional, e possa realizar algum trabalho, uma aplicação tem que ter acesso aos serviços disponibilizados pelo kernel, desta forma uma API(Interface de Programação de Aplicação) é disponibilizada à aplicação. Esta API faz a chamada das funções do kernel através de interrupção, memória compartilhada ou IPC(Inter-Process Communication)[TANENBAUM1999].
3 – Arquitetura do Kernel
Segundo TANENBAUM1999, o kernel pode ser monolítico, em camadas, ou microkernel (também conhecido como modelo cliente-servidor).
3.1 – Sistemas Monolíticos
Estrutura mais utilizada, poderia ser chamada de ” a grande fusão”. Não existe uma estruturação visível na organização monolítica. O Sistema operacional é escrito como um conjunto de procedimentos, sendo que um pode chamar qualquer um dos outros quando necessário. Quando utilizada essa estrutura, cada procedimento deve ter uma interface muito bem definida em termos de parâmetros e resultados [TANENBAUM1999]]

Dentro dessa estrutura existe 2 tipos de chamadas. O modo kernel, onde é permitida a execução de todas as instruções básicas da máquina. No modo usuário, para os programas de usuário, onde certas instruções, como aquelas que controlam entrada / saída, não podem ser executadas.
3.2 – Sistemas em Camadas
Estrutura em que o sistema operacional foi organizado como uma hierarquia de níveis, cada um construído sobre o nível imediatamente abaixo. O primeiro sistema construído desta forma foi o THE projetado no Technische Hogeschool Eindhoven na Holanda por E.W.Dijkstra(1968) [TANENBAUM2000].
3.3 – Microkernel
Sendo mais flexível que o kernel monolítico, o microkernel não fornece o sistema de arquivos, sistema de diretórios, gerência completa de processos e a manipulação da maioria das chamadas de sistema. Todos os serviços prestados pelo microkernel estão lá por serem difíceis de executar em outro local ou inviável financeiramente se oferecidos fora do kernel. O objetivo principal é mantê-lo o menor possível.Todos os outros serviços do sistema operacionais estão disponibilizados em forma de servidores ao nível de usuário. Para se realizar alguma operação, o usuário deve enviar uma mensagem ao servidor apropriado[TANENBAUM1999].
Os serviços prestados pelo microkernel são os seguintes:
- Um mecânismo de comunicação entre processos
- Um mínimo de funções para gerência de memória
- Um mínimo de funções de gerência de processos e de escalonamento
- Funções de entrada / Saída de baixo nível [TANENBAUM1999]
3.4 – Kernel Híbrido
Baseado em microkernel, ele executa operações em modo protegido (modo kernel), através de servidores externos, para a melhoria de desempenho evitando também troca de contextos.
3.5 – NanoKernel
Extremamente simples, ele é a camada mais próxima do hardware. Gerenciando virtualmente os serviços, o nano-kernel faz com que a memória que é utilizada por ele seja menor que a do micro-kernel [WIKIPÉDIA].
3.6 – Exokernel
Nessa estrutura existe apenas um Kernel Simples onde o mesmo faz o controle de recursos do sistema e de um conjunto de bibliotecas que implementam as abstração do sistema operacional. O aplicativo pode acessar direto os recursos do sistema, ou utilizam as bibliotecas. O Programador tem mais liberdade para optar pela abstração de hardware que desejar [WIKIPÉDIA].
3.7 – O Kernel Linux
Criado por hobby, por um estudante chamado Linus Torvalds, que tinha como objetivo criar seu próprio S.O.(Sistema Operacional) Unix-like(Baseado na Estrutura Unix) que rodasse em processadores de arquitetura Intel 80386. Linus estudou o Sistema Minix, de Andrew Tanenbaum e não satisfeito com a arquitetura resolveu criar o seu próprio sistema. O Projeto Linux foi lançado publicamente em 1991.[INFOWESTER]

Kernel monolítico, drivers e extensões do kernel rodam com acesso total ao hardware embora alguns rodem em espaço usuário(modo usuário citado em kernel monolítico). Diferente do padrão de kernels monolíticos, os drivers de dispositivos são configurados como módulos, e carregados e descarregas enquanto o sistema está rodando.Ainda , os drivers de dispositivos podem ser pré-inseridos sob algumas condições.Isto foi feita para a correção de acesso a interrupções de hardware e melhora o multi-processamento simétrico.[INFOWESTER]
O objetivo do Torvalds não era tornar o sistema portável, embora hoje ele seja um dos mais portáveis dentre os existentes. A portabilidade do sistema era dirigida para a parte de inclusão de sistemas, que rodavam em outros S.Os , no linux.[INFOWESTER]
4 – Outras informações
Para maiores informações sobre kernel, indico acessar este link Como Explicar o que é um kernel para leigos
que tem como intenção explicar o que é um kernel para as pessoas que estão iniciando em informática.
Referências Bibliográficas:
- Eduardo Silvestri “www.eduardosilvestri.com.br“
- Andrew S. Tanenbaum – Sistemas Operacionais Modernos. LTC, 1999.
- Scott Maxell - Kernel do Linux. Makron Books, 2000
- Wikipédia – http://pt.wikipedia.org/wiki/Kernel
- Wikipédia – http://pt.wikipedia.org/wiki/N%C3%BAcleo_do_Linux
- Infowester – http://www.infowester.com/linuxkernel.php
História do Gnu/Linux
1 – GNU
Richaard Stallman trabalhava no MIT, e por volta de 1971, após receber sucessivas reclamações de uma impressora doada pela Xerox, tentou alterar o software da impressora, mas o software era fechado. A solução era pedir à empresa (Xerox) que liberassem os fontes para que ele pudesse alterar, porém após conversa com a Xerox, eles falaram que liberariam o código se ele assinasse um termo de compromisso que nunca iria passar para ninguém o código. Sem solução Stallman resolveu largar seu emprego no MIT, e decidiu reescrever muitos aplicativos que eram pagos do 0, em espaço cedido pelo MIT para que ele pudesse levar adiante esse projeto batizado de GNU (Gnu is not UNIX).

Stallman
Este projeto tinha como objetivo liberar o acesso aos códigos fontes dos softwares desenvolvidos para que outras pessoas pudesse utiliza-los, melhora-los ou modifica-los conforme suas necessidades. Foi daí que surgiu a GPL (Gnu Public License). Seguindo a mesma filosofia, Stallman tentou criar um sistema operacional baseado em Unix, pois ele ja possuia os softwares para que pudesse rodar em cima.

Gnu – Fundação Software Livre
2 – Licença GPL
A licença GPL, permite que qualquer um possa usar os programas que estão sob ela, com o compromisso de não tornar os programas fechados e comercializados. Ou seja, você pode alterar qualquer parte do software, modificá-lo e até comercialiazá-lo, mas você não pode fechá-lo (não permitir que outros usuários o modifiquem) e vendê-lo.
Liberdade 1: O direito de executar o programa, para qualquer propósito.
Liberdade 2: O direito de estudar como o programa funciona e adptá-lo para suas necessidades.
Liberdade 3: O direito de redistribuir cópias, permitindo assim que você ajude outras pessoas.
Liberdade 4: O direito de aperfeiçoar o programa, e distribuir seus aperfeiçoamentos para o público, beneficiando assim toda a comunidade.
3 – Linux
Linus Torvalds ainda estudava quando se deparou com o Minix, um Sistema Operacional baseando em Unix, criado por Andrew S. Tanenbaum. Foi a partir daí que ele se inspirou e resolveu criar um Sistema Operacional melhor que o Minix. , ele conseguiu desenvolver o novo Sistema com a ajuda de alguns programadores através da Usenet, após ter trabalhado algum tempo sozinho e botado algumas coisas para rodar como: bash, gcc, gnu-make, compressão, gnu-sed etc. Após concluído a versão 0.02, o seu lançamento foi realizado em 5 de outubro 1991. Vale lembrar que Torvalds apenas criou o Kernel ou Núcleo do Sistema Operacional, os aplicativos foram inseridos pelo Projeto GNU.

Linus Torvalds
Após isso GNU e Linux se uniram, ja que Torvalds decidiu soltar o Linux em cima da GPL. Stallman tinha os Softwares e o Torvalds tinha o Kernel. Após a junção de ambos o Linux passou a ser chamado de GNU/Linux, nome que muitos não o chamam por acharem grande. Após todos esses anos, muitos Gnu / Linux foram criados, são o que chamamos de Distribuições. Estas são suportadas por empresas (Red Hat) ou por comunidades (Debian), cujo o qual entregam um Sistema pronto para ser instalado e executado em seu computador.

Slackware Linux – Gnome Desktop
Bibliografia





