terça-feira, agosto 22, 2006

Liberada a versão Slackware 11.0 Release Candidate 2

Lançada oficialmente a versão do Slackware 11.0 Release Candidate 2. Esta é última release antes do lançamento oficial do Slackware 11.0.Muitos bugs foram corrigidos e muitas atualizações foram feitas nesta na nova versão. Mudanças recentes incluem atualização para o kernel 2.4.33 (em vez do kernel 2.4.31), atualização para o recente kernel 2.6.19, atualizações de muitos binários no instalador e correções de alguns bugs e falhas de segurança.Slackware Linux é o nome de uma das mais antigas e conhecidas distribuições (sistema operacional e conjunto de aplicativos) do Linux. Criada em 1993 e mantida por Patrick Volkerding, a Slackware (ou simplesmente "Slack") tem como objetivo manter-se fiel aos padrões UNIX, rejeitando também ferramentas de configuração que escondam do usuário o real funcionamento do sistema.

Download aqui

sexta-feira, julho 28, 2006

Slackware 11" esta perto

Estamos chegando perto do 11.0 amigos. Espero ter um changeset maior logo, mas por enquanto isto deve ser legal para 'brincar', enquanto trabalho na lista de afazeres; atualizando, compilando e com testes iniciais.", diz Patrick Volkerding no changelog do 'current'. O Slackware 11.0 considerará a série 2.6.16.x do kernel como suportada, mas Patrick informa que deverá manter o bare.i do kernel 2.4.32 como default (ou talvez sata.i) pela ótima performance e provavelmente melhor segurança devido ao design mais simples e mais testado.
Patrick finaliza agradecendo à esposa por ter compilado os pacotes desta última atualização.

Maiores informações em:
http://www.noticiaslinux.com.br/nl1153107394.html
Fonte Original (inglês): http://www.slackware.org/changelog/current.php?cpu=i386
Leia mais em http://www.underlinux.com.br/content/view/6135/59/

quinta-feira, julho 13, 2006

Instalando e Configurando Modem Motorola SM56 - Adaptado

Instalando e Configurando Modem Motorola SM56 Imprimir
24 de março de 2005
Este documento tem como objetivo, auxiliar os usuarios do Modem sm56 da Motorola a instalarem esse modem no Linux.
1.0 - SOBRE ESTE DOCUMENTO
2.0 - INTRODUÇÃO
3.0 - O QUE É NECESSÁRIO?
4.0 - INSTALANDO.
5.0 - SE SEU KERNEL É MAIOR QUE 2.4.5
6.0 - POSSÍVEIS PROBLEMAS
7.0 - CONCLUSÃO


1.0 - SOBRE ESTE DOCUMENTO
Este documento é distribuí­do gratuitamente, seguindo
o FDL, e pode
ser distribuí­do e alterado, desde que você cite a
fonte. Você é bem vindo se quiser colaborar.

2.0 - INTRODUÇÃO

A mais ou menos um ano e meio atrás, foi criado um
artigo, e divulgado amplamente, sobre como
instalar e configurar o Modem sm56 da Motorola.
Na época, o kernel 2.4.0 havia acabado de ser
lançado, e a Motorola lancou o driver para tal modem,
sendo que foi unica e exclusivamente testado com o Red
Hat Linux 7.1.
Acontece que, como é costume no mundo do Software
Livre, as coisas andam depressa, e a cada semana e
a cada mês, surgem atualizações e correções.
Infelizmente, a Motorola nao conseguiu seguir o mesmo
ritmo, seja por falta de interesse ou por
qualquer outro motivo.
O que importa realmente, é que vários usuários
ficaram sem suporte,quando viram que o driver não
funcionava nas versões de kernel mais novas e acima do
2.4.5.
Na época, recebi vários e-mail's e continuo a
recebê-los, pedindo maiores detalhes sobre como
instalar e fazer funcionar tal modem.
Agora, com a ajuda de alguns amigos, finalmente é
possível configurar o modem para que ele funcione
em um kernel diferente do 2.4.5.
Agradecimentos a todos aqueles que me enviaram e-mail
e ao meu amigo Massimiliano Mirra.
Agradecimento especial a minha esposa Brenna. Ela é
minha revisora oficial ;^).

3.0 - O QUE É NECESSÁRIO?

Inicialmente, a primeira coisa a fazer, é ver sob
qual kernel seu sistema estatrabalhando.
Use o comando uname -r. Se este comando retornar um
kernel menor ou igual ao 2.4.5, vai até
a página da Motorola (www.Motorola.com) e pegue o
driver para o modem.
Caso o kernel seja maior do que o mencionado acima,
vá para seção
"5.0 - SE SEU KERNEL É MAIOR QUE 2.4.5".
Outra coisa que você deverá observar, é ter um
ambiente de desenvolvimento GNU instalado em seu
sistema, já que precisaremos dele para compilar o
driver corretamente.
Verifique, com o comando rpm -qa | grep gcc, se o
compilador GNU C está instalado.
Faça o mesmo para o cpp: rpm -qa | grep cpp.
Se você possuir um kernel acima do 2.4.5, você deverá
ter as fontesdo kernel do seu sistema insta-
lado, bem como o make, o automake, o autoconf, o tcl,
e o ncurses, pois teremos que recompilar o kernel.

4.0 - INSTALANDO

Esta parte diz respeito aqueles que tem um kernel
menor ou igual ao 2.4.5.
Uma vez efetuado o download e, como root, instale-o
com rpm -ivh sm56xxxx-i386.rpm.
Após, digite man sm56 e procure por qual código o seu
País se encaixa.
A lista é um pouco extensa:

1 = USA
2 = Canada
27 = South Africa
30 = Greece
31 = Netherlands
32 = Belgium
33 = France
34 = Spain
39 = Italy
41 = Switzerland
42 = Czech Republic
43 = Austria
44 = United Kingdom
45 = Denmark
46 = Sweden
47 = Norway
49 = Germany
52 = Mexico
54 = Argentina
55 = Brazil
57 = Columbia
58 = Venezuela
60 = Malaysia
61 = Australia
64 = New Zealand
65 = Singapore
66 = Thailand
81 = Japan
82 = Korea
84 = Vietnam
86 = China
90 = Turkey
351 = Portugal
352 = Luxembourg
353 = Ireland
354 = Iceland
358 = Finland
852 = Hong Kong
886 = Taiwan
962 = Jordan
972 = Israel

Depois que você instalar o driver, digite sm56setup,
seguido do
código do seu País.
Naturalmente para nós que moramos no Brasil, o código
escolhido será o 55.
Se este código for omitido será atribuí­do o código
padrão: 1 (USA).
O comando sm56setup compila o módulo que controla o
modem, adequado para seu kernel, que será
instalado em /lib/modules/[seu
kernel]/kernel/drivers/char.
O comando também adequa o seu /etc/modules.conf, que
ficará assim:

.......
.......
alias char-major-24 sm56
options sm56 country=1 ---> aqui poderá ser colocado o
código apropriado.

Ele também cria um dispositivo em /dev, chamando
sm56, criando um link para o /dev/modem, que aponta
para este dispositivo, bem como seta as permissões
adequadas.
Digite modprone sm56 e pronto, seu modem está
instalado!
Se seu kernel é superior ao 2.4.5, passe ao próximo
tópico.

5.0 - SE O KERNEL É MAIOR DE 2.4.5.

Primeiramente, quero agradecer ao meu amigo
Massimiliano Mirra, que me enviou esta dica.
Se você está usando uma distribuição moderna, como
Conectiva Linux8.0, Red Hat Linux 8.0,
Mandrake Linux 9.0 ou Slackware Linux 8.1, saiba que o
modem sm56 pode funcionar sob um kernel mais recente.
Estas distribuições citadas, a exceção do Mandrake
Linux 9.0, trazem um kernel 2.4.18.
Para este documento, eu utilizei o Mandrake 9.0, com
kernel 2.4.19.
Como comentado acima, será necessário fazer algumas
alteraçõesnas fontes do kernel e recompilá-lo
para que o modem funcione corretamente.
Vá até onde as fontes do kernel estão instaladas
(geralmente /usr/src/linux-2.4.X).
Entre no diretório mm.
Neste diretório estão as fontes para o tratamento da
memória.
Procure por um arquivo chamado slab.c.
Este arquivo deve ser alterado.
Abra-o com seu editor de texto.
Não darei explicações do por que ele deverá ser
alterado, pois nãosou um craque em programação C,
mas acho que deve ter algo com relação com a alocação
da memória pelo driver do Motorola.
Se alguém tiver alguma explicação e quiser
enviar, será prontamenteincluí­da nesta
documentação.
Vá até a linha 1116, e comente-a:

Ela está assim:
if (flags & ~(SLAB_DAM|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG();
E deve ficar assim:
/* if (flags &
~(SLAB_DAM|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG(); */

Depois disso, grave o arquivo e vamos compilar o
kernel.
Digite make menuconfig.
Perceba que se você não tiver o ncurses instalado,
este comando irá falhar.
Irá aparecer, depois de alguns momentos, um menu
baseado em ncurses,com botões, caixas e diálogos,
para que possamos escolher as opçÕes do kernel.
Recomendo fortemente que você deixe o seu kernel o
mais enxuto possí­vel.
Por exemplo, escolha um processador de acordo com a
sua máquina:se você tem um AMD, não faz
sentido escolher um Pentium MMX, pois alguns
parâmetros do processador poderá fazer diferença.
Tire tudo o que não for necessário para sua máquina:
bluetooth, PCMCIA, USB, entre outros, anão ser
que tais suportes sejam requeridos pelo seu sistema.
Outra idéia: se você não tem nenhuma placa de rádio e
não planeja adquirir uma, não há
necessidade de compilar um módulo para suportar tal
placa.
Outro suporte desnecessário em máquinas caseiras, é
suporte a ATM, a FDDI (fibra óptica), WAN,
APPLETALK, IPX, DECNET, etc., quando não é um
requisito essencial.
Retire tudo o que não seja estritamente necessário.
Depois de escolhidas as opções, tecle TAB, até cair
na opção Exit.
Tecle ENTER e será perguntado se você quer salvar as
alteraçÕes. Escolha SIM.
Agora digite make dep para criar as dependências
necessárias para compilar o kernel.
Depois que o comando se completar, digite make
bzImage, para construir a imagem do kernel.
Depois, digite make modules e make modules_install,
para construir e instalar os módulos
do novo kernel.
Pode sair para um cafezinho agora, pois este
comando poderá demorar, dependendo do porte de sua
máquina.
Terminado o comando anterior, o seu kernel estará em
/usr/src/linux-2.4.X/arch/i386/boot, com o nome
de bzImage.
Copie-o para o diretório /boot, dando-lhe outro nome,
como vmlinuz-custom.
Copie também o System.map, que está em
/usr/src/linux-2.4.X/System.map, para o diretório
/boot,
com um nome diferente, como System.map-custom.
No mesmo diretório, há um arquivo oculto chamando
.config.
Digite ls -a, para visualizá-lo.
Copie-o também para o diretório /boot, com um nome
diferente, como config-custom.
Entre no diretório
/usr/src/linux-2.4.X/include/linux.
Copie o arquivo kernel.h, para o diretório /boot, com
um nome diferente, algo como kernel.h-custom.
Agora, vá para o diretório /boot, e faça as
alterações necessárias.
Apague os links seguintes:
rm -rf config, rm -rf System.map, rm -rf vmlinuz e rm
-rf kernel.h
Crie agora os links para os arquivos novos:
ln -s config-custom config
ln -s System.map-custom System.map
ln -s vmlinuz-custom vmlinuz e por último
ln -s kernel.h-custom kernel.h

Agora, temos que alterar o arquivo /etc/lilo.conf, se
você estiver usando o LILO, como gerenciador
de inicalização.
Ele deve se parecer com isso:

boot=/dev/hda
map=/boot/map
vga=normal
default=linux
keytable=/boot/us-latin1.klt
prompt
nowarn
#vga = 791
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz ---------------------------
label=linux |
root=/dev/hda1 |
# initrd=/boot/initrd.img | -> É aqui que devemos
fazer a alteração,
append="devfs=mount" | colocando o nome do kernel
(vmlinuz).
vga=791 | Comente a linha initrd, pois ela diz

read-only ------------------------------ respeito
somente ao kernel velho.

image=/boot/vmlinuz-seu-kernel-original-------------------
label=linux-nonfb |
root=/dev/hda1 | -> Mantenha esta linha,
alterando
initrd=/boot/initrd.img | apenas o vmlinuz, para
o nome com-
append="devfs=mount" | pleto do
seu kernel velho.
read-only-----------------------------------------
other=/dev/hdb2
label=windows
table=/dev/hdb
map-drive=0x80
to=0x81
map-drive=0x81
to=0x80
other=/dev/fd0
label=floppy
unsafe

Se você estiver usando o GRUB, altere as linhas
correspondentes.
Digite lilo, para que as alterações tenham efeitos.
É importante manter uma imagem do seu kernel
anterior, pois se alguma coisa não der certo,
você terá como inicializar seu sistema.
Reinicie a sua máquina, e espere ela inicializar com
o kernel novo.
Se tudo der certo, você deverá estar com seu kernel
recém compilado.
Para ter certeza, digite :
cat /proc/version.
Deve aparecer algo do tipo:

Linux version 2.4.19-16mdkcustom ( root@scoob.doo.comEste endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo )

(gcc version 2.96 20000731 (Mandrake Linux 9.0
2.96-0.80mdk)) #1 Seg Dez 16 18:02:34 BRST 2002

Agora proceda da mesma maneira que no item 4.0.
Perceba que após o modprobe sm56, o driver não ficará
mais com aquela mensagem de initializing.
Verifique isto com lsmod.

Pronto! Seu modem está funcionando.
NOTA: Recebi informaçÕes que no kernel 2.4.20 e
superiores, não é necessário editar o arquivo
/usr/src/linux-2.4.20/mm/slab.c. Eu nãoo testei com
este kernel ainda. Assim que testá-lo, estarei
repassando,
ou alguém pode fazé-lo, certo?

6.0 - POSSÍVEIS PROBLEMAS.

I - Ao inicilizar, meu kernel diz "kernel panic .....
". O que é isso?

Esta mensagem aparece se seu kernel foi compilado sem
suporte ao seu sistema de arquivos do raí­z.
Por exemplo, se sua raí­z é XFS, e no kernel o
suporte ao XFS é via módulo, compile seu
kernel como suporte XFS intrínseco. O padrão do kernel
é assim:

SGI XFS filesystem support

[*] Enable XFS Realtime support

[*] Enable XFS Quota

Enable XFS DMAPI


Mude para:
SGI XFS filesystem support

[*] Enable XFS Realtime support

[*] Enable XFS Quota

Enable XFS DMAPI


Isto fará que o suporte ao XFS seja parte integrante
do kernel, não precisando de nenhum módulo
ser carregado.

II - Minha máquina trava quanto executo o minicom
ou outro aplicativo de dial-up. Por que?

Por motivos que desconheço, o modem Motorola não
gosta de ter outra porta serial habilitada.
Entre no setup da sua máquina, e deixe somente uma
porta serial habilitada, aquela correspondente
a seu mouse. Isso deverá resolver o problema.

III - Quando digito minicom ou uso o kppp, ele diz que
o /dev/modem não existe. E agora?

Se o /dev/modem não existir, pode ter ocorrido alguma
falha com o comando sm56setup.
Para não ter que executá-lo de novo, vá até o
diretório /dev , e crie o links para o dispositivo
/dev/sm56: ln -s sm56 modem.
Caso tal dispositivo não exista, crie com o comando
mknod /dev/sm56 c 24 0, e mude o dono/grupo e
as permissões, com o comando chown uucp.root /dev/sm56
e chmod a+rw /dev/sm56, respectivamente.


7.0 - CONCLUSÃO.

Bom eu acho que é isso.
Eu consegui fazer este modem funcionar em um Mandrake
Linux 9.0, recompilando o kernel 2.4.19.
Acredito que você também pode fazê-lo. Obrigado a
todos e continuem me mandando e-mail, pois farei
o possível para ler e responder a todos. Até +.

Gilberto Nunes
gilbertonunes@yahoo.com.brEste endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo
Comentarios

sexta-feira, junho 16, 2006

Stelth Linux

Stelth Linux -

http://stelth.no-ip.org

Muito mais do que apenas um repositório do conhecimento!

Bandwidth Limiting HOWTO - Inglês

Pessoal, estou trabalhando num projeto de documentação que trata especificamente sobre Controle de Banda, e encontrei um tutorial, um pouco antigo, sobre o assunto. Portanto vou disponibilizá-lo aqui, em inglês, para todos terem acesso!

-------------------------------------------------------------------------------------------------------------------------------------------

Bandwidth Limiting HOWTO
Tomasz Chmielewski

tch@writemail.com
Revision History
Revision 0.1 2001-05-02 Revised by: tc
Initial release.

This document describes how to set up your Linux server to limit download bandwidth or incoming traffic and how to use your internet link more efficiently.

Table of Contents
1. Introduction

1.1. New versions of this document
1.2. Disclaimer
1.3. Copyright and License
1.4. Feedback and corrections

2. Before We Start

2.1. What do we need
2.2. How does it work?

3. Installing and Configuring Necessary Software

3.1. Installing Squid with the delay pools feature
3.2. Configuring Squid to use the delay pools feature
3.3. Solving remaining problems

3.3.1. Linux 2.2.x kernels (ipchains)
3.3.2. Linux 2.4.x kernels (iptables)

4. Dealing with Other Bandwidth-consuming Protocols Using CBQ

4.1. FTP
4.2. Napster, Realaudio, Windows Media and other issues

5. Frequently Asked Questions

5.1. Is it possible to limit bandwidth on a per-user basis with delay pools?
5.2. Is it possible to limit bandwidth on a per-user basis with cbq.init script?
5.3. Delay pools are stupid; why can't I download something at full speed when the network is used only by me?
5.4. CBQ is stupi; why can't I download something at full speed when the network is used only be me?

6. Miscellaneous

6.1. Useful resources

1. Introduction

The purpose of this guide is to provide an easy solution for limiting incoming traffic, thus preventing our LAN users from consuming all the bandwidth of our internet link.

This is useful when our internet link is slow or our LAN users download tons of mp3s and the newest Linux distro's *.iso files.
1.1. New versions of this document

You can always view the latest version of this document on the World Wide Web at the URL http://www.linuxdoc.org.

New versions of this document will also be uploaded to various Linux WWW and FTP sites, including the LDP home page at http://www.linuxdoc.org.
1.2. Disclaimer

Neither the author nor the distributors, or any other contributor of this HOWTO are in any way responsible for physical, financial, moral or any other type of damage incurred by following the suggestions in this text.
1.3. Copyright and License

This document is copyright 2001 by Tomasz Chmielewski, and is released under the terms of the GNU Free Documentation License, which is hereby incorporated by reference.
1.4. Feedback and corrections

If you have questions or comments about this document, please feel free to mail Tomasz Chmielewski at tch@writemail.com. I welcome any suggestions or criticisms. If you find a mistake or a typo in this document (and you will find a lot of them, as English is not my native language), please let me know so I can correct it in the next version. Thanks.

2. Before We Start

Let's imagine the following situation:

*

We have 115,2 kbits/s ppp (modem) internet link (115,2/10 = 11,5 kbytes/s); yes, there are such types of connection! With eth connections (network card) we divide 115,2 by 8; with ppp we divide by 10, because of start/stop bits (8 + 1 + 1 = 10).
*

We have some LAN stations and their users are doing bulk downloads all the time.
*

We want web pages to open fast, no matter how many dowloads are happening.
*

Our internet interface is ppp0.
*

Our LAN interface is eth0.
*

Our network is 192.168.1.0/24

2.1. What do we need

Believe it or not, shaping the incoming traffic is an easy task and you don't have to read tons of books about routing or queuing algorithms.

To make it work, we need at least Squid proxy; if we want to fine tune it, we will have to get familiar with ipchains or iptables and CBQ.

To test our efforts, we can install IPTraf.
2.2. How does it work?

Squid is probably the most advanced HTTP proxy server available for Linux. It can help us save bandwidth in two ways:

*

The first is a main characteristic of proxy servers -- they keep downloaded web pages, pictures, and other objects in memory or on a disk. So, if two people are requesting the same web page, it isn't downloaded from the internet, but from the local proxy.
*

Apart from normal caching, Squid has a special feature called delay pools. Thanks to delay pools, it is possible to limit internet traffic in a reasonable way, depending on so-called 'magic words', existing in any given URL. For example, a magic word could be '.mp3', '.exe' or '.avi', etc. Any distinct part of a URL (such as .avi) can be defined as a magic word.

With that, we can tell the Squid to download these kinds of files at a specified speed (in our example, it will be about 5 kbytes/s). If our LAN users download files at the same time, they will be downloaded at about 5 kbytes/s altogether, leaving remaining bandwidth for web pages, e-mail, news, irc, etc.

Of course, the Internet is not only used for downloading files via web pages (http or ftp). Later on, we will deal with limiting bandwidth for Napster, Realaudio, and other possibilities.

3. Installing and Configuring Necessary Software

Here, I will explain how to install the necessary software so that we can limit and test the bandwidth usage.
3.1. Installing Squid with the delay pools feature

As I mentioned before, Squid has a feature called delay pools, which allows us to control download bandwidth. Unfortunately, in most distributions, Squid is shipped without that feature.

So if you have Squid already installed, I must disappoint you -- you need to uninstall it and do it once again with delay pools enabled in the way I explain below.

1.

To get maximum performance from our Squid proxy, it's best to create a separate partition for its cache, called /cache/. Its size should be about 300 megabytes, depending on our needs.

If you don't know how to make a separate partition, you can create the /cache/ directory on a main partition, but Squid performance can suffer a bit.
2.

We add a safe 'squid' user:

# useradd -d /cache/ -r -s /dev/null squid >/dev/null 2>&1

No one can log in as squid, including root.
3.

We download Squid sources from http://www.squid-cache.org

When I was writing this HOWTO, the latest version was Squid 2.4 stable 1:

http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE1-src.tar.gz
4.

We unpack everything to /var/tmp:
5.

# tar xzpf squid-2.4.STABLE1-src.tar.gz
6.

We compile and install Squid (everthing is in one line):

# ./configure --prefix=/opt/squid --exec-prefix=/opt/squid --enable-delay-pools --enable-cache-digests --enable-poll --disable-ident-lookups --enable-truncate --enable-removal-policies

# make all

# make install

3.2. Configuring Squid to use the delay pools feature

1.

Configure our squid.conf file (located under /opt/squid/etc/squid.conf):

#squid.conf
#Every option in this file is very well documented in the original squid.conf file
#and on http://www.visolve.com/squidman/Configuration%20Guide.html

#
#The ports our Squid will listen on
http_port 8080
icp_port 3130
#cgi-bins will not be cached
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
#Memory the Squid will use. Well, Squid will use far more than that.
cache_mem 16 MB
#250 means that Squid will use 250 megabytes of disk space
cache_dir ufs /proxy 250 16 256
redirect_rewrites_host_header off
cache_replacement_policy GDSF
acl localnet src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl Safe_ports port 80 443 210 119 70 21 1025-65535
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
maximum_object_size 3000 KB
store_avg_object_size 50 KB

#all our LAN users will be seen by external servers
#as if they all use Mozilla on Linux :)
anonymize_headers deny User-Agent
fake_user_agent Mozilla/5.0 (X11; U; Linux 2.4.4 i686)

#To make our connection even faster, we put a line similar
#to the one below. Don't forget to change the server to your closest!
#Measure pings, traceroutes and so on.
#Make sure that http and icp ports are correct
#cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default

#This is useful when we want to use the Cache Manager
#copy cachemgr.cgi to cgi-bin of your www server
cache_mgr your@email
cachemgr_passwd secret_password all

#This is a name of a user our Squid will work as
cache_effective_user squid
cache_effective_group squid

log_icp_queries off
buffered_logs on


#####DELAY POOLS
#This is the most important part for shaping incoming traffic with Squid
#For detailed description see squid.conf file or docs at http://www.squid-cache.org

#We don't want to limit downloads on our local network
acl magic_words1 url_regex -i 192.168

#We want to limit downloads of these type of files
#Put this all in one line
acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt
.ram .rm .iso .raw .wav
#We don't block .html, .gif, .jpg and similar files, because they
#generally don't consume much bandwidth

#We have two different delay_pools
delay_pools 2

#First delay pool
#W don't want to delay our local traffic
#There are three pool classes; here we will deal only with the second
delay_class 1 2

#-1/-1 mean that there are no limits
delay_parameters 1 -1/-1 -1/-1

#magic_words1: 192.168
delay_access 1 allow magic_words1

#Second delay pool
#we want to delay downloading files mentioned in magic_words2
delay_class 2 2

#The numbers here are values in bytes;
#we must remember that Squid doesn't consider start/stop bits
#6000/150000 are values for the whole network
#5000/150000 are values for the single IP
#after downloaded files exceed about 150000 bytes,
#they will continue to download at about 5000 bytes/s

delay_parameters 2 6000/150000 5000/150000
delay_access 2 allow magic_words2

#EOF

OK, when we have configured everything, we must make sure everything under /opt/squid and /cache directories belongs to user 'squid'.

# chown -R squid:squid /opt/squid/

# chown -R squid:squid /cache/

or

# chown -R squid.squid /opt/squid/

# chown -R squid.squid /cache/

Now everything is ready to run Squid. When we do it for the first time, we have to create its cache directories:

# /opt/squid/usr/bin/squid -z

We run Squid and check if everything is working. A good tool to do that is IPTraf; you can find it on http://freshmeat.net. Make sure you have set the appropriate proxy in your web browsers (192.168.1.1, port 8080 in our example):

# /opt/squid/usr/bin/squid

If everything is working, we add /opt/squid/usr/bin/squid line to the end of our initializing scripts. Usually, it can be /etc/rc.d/rc.local.

Other helpful options in Squid may be:

# /opt/squid/usr/bin/squid -k reconfigure (it reconfigures Squid if we made any changes in its squid.conf file)

# /opt/squid/usr/bin/squid -help :) self-explanatory

You can also copy cachemgr.cgi to the cgi-bin directory of your WWW server.

3.3. Solving remaining problems

OK, we have installed Squid and configured it to use delay pools. I bet nobody wants to be restricted, especially our clever LAN users. They will likely try to avoid our limitations, just to download their favourite mp3s a little faster (and thus causing your headache).

I assume that you use IP-masquerade on your LAN so that your users can use IRC, ICQ, e-mail, etc. That's OK, but we must make sure that our LAN users will use our delay pooled Squid to access web pages and use ftp.

We can solve most of these problems by using ipchains (Linux 2.2.x kernels) or iptables (Linux 2.4.x kernels).
3.3.1. Linux 2.2.x kernels (ipchains)

We must make sure that nobody will try to cheat and use a proxy server other than ours. Public proxies usually run on 3128 and 8080 ports:

/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 3128 -p TCP -j REJECT

/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 8080 -p TCP -j REJECT

We must also make sure that nobody will try to cheat and connect to the internet directly (IP-masquerade) to download web pages:

/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 http -p TCP -j REDIRECT 8080

/sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 https -p TCP -j REDIRECT 8080

If everything is working, we add these lines to the end of our initializing scripts. Usually, it can be /etc/rc.d/rc.local.

We might think to block ftp traffic (ports 20 and 21) to force our LAN users to use Squid, but it's not a good idea for at least two reasons:

*

Squid is a http proxy with ftp support, not a real ftp proxy. It can download from ftp, it can also upload to some ftp, but it can't delete/change name of files on remote ftp servers.

When we block ports 20 and 21, we won't be able to delete/change name of files on remote ftp servers.
*

IE5.5 has a bug (at least mine has) -- it doesn't use a proxy to retrieve the ftp directory. Instead it connects directly via IP-masquerade.

When we block ports 20 and 21, we won't be able to browse through ftp directories, using IE5.5.

So, we will block excessive ftp downloads using other methods. We will deal with it in chapter 4.
3.3.2. Linux 2.4.x kernels (iptables)

FIXME: Unfortunately, I don't know much about IP-tables, please help :(((

4. Dealing with Other Bandwidth-consuming Protocols Using CBQ

We must remember that our LAN users can spoil our efforts from chapter 3, if they use Napster or Realaudio. We must also remember that we didn't block ftp traffic in section 3.3.

We will achieve it in a different way -- not by limiting downloading directly, but rather, indirectly. If our internet device is ppp0 and LAN device is eth0, we will limit outgoing traffic on interface eth0, and thus, limit incoming traffic to ppp0.

To do it, we will get familiar with CBQ and cbq.init script. You can obtain it from ftp://ftp.equinox.gu.net/pub/linux/cbq/. Download cbq.init-v0.6.2 and put it in /etc/rc.d/.

You will also need iproute2 installed. It comes with every Linux distribution.

Now look in your /etc/sysconfig/cbq/ directory. There, you should have an example file, which should work with cbq.init. If it isn't there, you probably don't have it compiled in your kernel.
4.1. FTP

In chapter 3, we didn't block ftp for two reasons -- so that we could do uploads, and so that users with buggy IE5.5 could browse through ftp directories. In all, our web browsers and ftp programs should make downloads via our Squid proxy and ftp uploads/renaming/deleting should be made via IP-masquerade.

We create a file called cbq-10.ftp-network in the /etc/sysconfig/cbq/ directory:

# touch /etc/sysconfig/cbq/cbq-10.ftp-network

We insert the following lines into it:

DEVICE=eth0,10Mbit,1Mbit
RATE=10Kbit
WEIGHT=1Kbit
PRIO=5
RULE=:20,192.168.1.0/24
RULE=:21,192.168.1.0/24

You will find the description of thses lines in cbq.init-v0.6.2 file.

When you start /etc/rc.d/cbq.init-v.0.6.2 script, it will read your configuration, which is in /etc/sysconfig/cbq/:

# /etc/rc.d/cbq.init-v.0.6.2 start

If everything is working, we add /etc/rc.d/cbq.init-v.0.6.2 start to the end of your initializing scripts. Usually, it can be /etc/rc.d/rc.local.

Thanks to this command, your server will not send ftp data through eth0 faster than 10kbits/s, and thus will not download ftp data faster than 10kbits/s. Your LAN users will see that it's more efficient to use Squid proxy for doing ftp downloads. They will be also able to browse ftp directories using their buggy IE5.5.

There is also another bug in IE5.5 - when you right click on a file in a ftp directory then select 'Copy To Folder', the file is downloaded not through proxy, but directly through IP-masquerade, thus omitting Squid with delay pools.
4.2. Napster, Realaudio, Windows Media and other issues

Here, the idea is the same as with ftp; we just add another port and set a different speed.

We create file called cbq-50.napster-network in the /etc/sysconfig/cbq/ directory:

# touch /etc/sysconfig/cbq/cbq-50.napsterandlive

Put these lines into that file:

DEVICE=eth0,10Mbit,1Mbit
RATE=50Kbit
WEIGHT=5Kbit
PRIO=5
#Windows Media Player
RULE=:1755,192.168.1.0/24
#Real Player uses TCP port 554 or UDP ports near 3369, I don't know exactly
RULE=:554,192.168.1.0/24
RULE=:3360,192.169.1.0/24:3380
#Napster uses ports 6699 and 6700, maybe some other?
RULE=:6699,192.168.1.0/24:6799
#Add any other ports you want; you can easily check
#ports that programs use with IPTraf
#RULE=:from_port,192.168.1.0/24:to_port

5. Frequently Asked Questions
5.1. Is it possible to limit bandwidth on a per-user basis with delay pools?

Yes. Look inside the original squid.conf file and check the Squid documentation on http://www.squid-cache.org
5.2. Is it possible to limit bandwidth on a per-user basis with cbq.init script?

Yes. Look inside this script; there are some examples.
5.3. Delay pools are stupid; why can't I download something at full speed when the network is used only by me?

Unfortunately, you can't do much about it.

The only thing you can do is to use cron and reconfigure it, for example, at 1.00 am, so that Squid won't use delay pools, then reconfigure it again, let's say at 7.30 am, to use delay pools.
5.4. CBQ is stupi; why can't I download something at full speed when the network is used only be me?

Lucky you, it's possible!

There are to ways to achieve it.

The first is the easy one, similar to the solution we made with Squid. To do that, just look inside the cbq.init script.

The second way is harder, but more intelligent. You can read about it in the Linux 2.4 Advanced Routing HOWTO.

6. Miscellaneous
6.1. Useful resources

Squid Web Proxy Cache

http://www.squid-cache.org

Squid 2.4 Stable 1 Configuration manual

http://www.visolve.com/squidman/Configuration%20Guide.html

http://www.visolve.com/squidman/Delaypool%20parameters.htm

Squid FAQ

http://www.squid-cache.org/Doc/FAQ/FAQ-19.html#ss19.8

cbq-init script

ftp://ftp.equinox.gu.net/pub/linux/cbq/

Linux 2.4 Advanced Routing HOWTO

http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html

Traffic control (in Polish)

http://ceti.pl/~kravietz/cbq/

Securing and Optimizing Linux Red Hat Edition - A Hands on Guide

http://www.linuxdoc.org/guides.html

IPTraf

http://cebu.mozcom.com/riker/iptraf/

IPCHAINS

http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html

sexta-feira, junho 09, 2006

O Linux é o melhor para você - Adaptado

Vamos começar politicamente correto. Nesta postagem eu digo 'Linux', mas estou querendo dizer GNU/Linux. Por favor, vá até http://www.gnu.org/gnu/linux-and-gnu.html para ver por quê.

Você deseja mudar do DOS/Windows para o Linux? Boa idéia: Linux é tecnicamente superiro ao DOS, Windows 9x e até mesmo o Windows NT. Mas cuidado! Ele pode não ser muito útil para você. Estas são as principais diferenças entre DOS/Windows e Linux:
Windows roda Microsoft Office e todos os jogos; é fácil de configurar e instalar; é conhecidamente instável; performance baixa; frequentemente trava.
Linux roda Star Office*; alguns jogos; pode ser complicado de instalar e configurar; é muito estável; performance impecável; travamentos são raros.

Portanto, se for pensar em estabilidade, escalabilidade, portabilidade, eficiência, segurança, e muito mais, pense no GNU/Linux.

Acredite nessa idéia!

Ajude a recriar a Informática que foi obscurecida pelos sistemas operacionais cuja a idéia foi a inclusão em detrimento de todas as qualidades dos verdadeiros Sistemas Operacionais!

quinta-feira, junho 01, 2006

Artigo Científico

Estou escrevendo um artigo científico para faculdade, mas por enquanto estou em dúvida a respeito de qual assunto tratar. Entre as possíveis idéias, o Gnu/Linux é a minha preferida, entretanto me ocorreu a idéia de fazer um artigo sobre Psicotrônica ou Psicotécnica.
Faço parte também de outro Blog cujo o assunto é voltado ao holístico, auto-ajuda, espiritualismo, etc. Visite lá para vocês verem EVOLUÇÃO.
Quanto ao meu artigo, prefiro pensar melhor e assim que tiver idéias, ou se alguém poder me clarificar, agradeço!

Daniel

segunda-feira, maio 15, 2006

USB Sem mistérios...

Pessoal, não só de perguntas vive um fórum, mas também das dicas que ele proporciona. Tenho tido tempo ultimamente e, portanto, resolvi fazer umas atualizações tanto no meu Blog, quanto no FórumGDH do qual participo desde 2001 (to ficando velho...) e o Portal Viva O LinUx.
A dica que vou dar é sobre um assunto um tanto quanto rebuscado: USB no LinUx.
--------------------------------------------------------------------------------------
O USB, como muitos já sabem, foi criado com o objetivo de facilitar a conexão de periféricos existentes para o computador: teclados, mouse, impressoras, etc. Todo os conectores de os dispositivos possuem dois tipos de conectores, sendo assim, não permitindo o encaixe inadequado deles, o que os torna simples de usar. Outra caracterísca marcante é o compartilhamento de banda entre os dispositivos.
-------------------------------------------------------------------------------------
Vamos ao que interessa!
Configurar uma controladora USB é bastante simples no LinUx. Primeiramente você tem de ter em mente basicamente os seguinte comandos: lspci e modprobe*.
*juntamente com esse comando importante de administração do sistema, você deve ter o conhecimento do rc.modules*(Slackware e BSD Like), ou /etc/modules.conf*(Distros SysVINIT)

Onde está e quem é a sua controladora?

daniel@stelth:~# lspci -vv |grep -i usb

A saída desse comando "vareia" de máquina pra máquina...

Nota::. Basicamente há dois tipos de controladora USB: Universal e Open. As controladoras Universal são identificadas como sendo USB-UHCI e as Open são identificadas como sendo USB-OHCI. Existem as USB-EHCI que usam o padrão 2.0, isto é, USB2.0. Maiores informações, Google

Indentificado o tipo de controladora, passemos para etapa seguinte.

Agora que eu sei quem é, como configurar?

Primeiro habilitar o módulo que trabalho com input de dados.
Para teclados e mouses...
daniel@stelth:~# modprobe hid
daniel@stelth:~# modprobe keybdev
daniel@stelth:~# modprobe mousedev

Dica::. caso não funcione o mouse no modo texto:
daniel@stelth:~# gpm -k ; gpm -t ps2 -m /dev/usbmouse0

Para WebCam...
Carregar o ov511.o...
daniel@stelth:~# modprobe ov511

Para impressoras...
daniel@stelth:~# modprobe printer

Importante::.. "Apontar" a impressora para o device /dev/usb/lp0

Espero ter contribuído de maneira significante.
Abraços!

sexta-feira, maio 05, 2006

Configurando Mysql no Slackware

Bem pessoal o grande propósito desse material é como configurar o mysql a distro utilizada foi o Slackware, mas estas configurações se aplicam em qualquer uma das demais distribuições. Não vou entrar em muitos detalhes de como instalar pois o propósito é ensinar como configurá-lo.

Se acaso você nao selecionou o mysql na hora da instalaçao você pode baixalo em:

MySQL: http://www.mysql.com/downloads/

Provavelmente se você selecionou o pacote do mysql na hora da instalação e ativou ele pra iniciar no boot você ira se deparar com a seguinte mensagem:

Starting mysqld daemon with databases from /var/lib/mysql
Welcome to Linux 2.4.22 (tty1)
postfix login: 040625 09:04:55 mysqld ended

Welcome to Linux 2.4.22 (tty1)

slackware login:


Logo que a gente de vê da até um negócio né mas vamos aprender agora como resolver esse pequeno problema !!!

Isso acontece por que o mysql ta procurando pelas GrantTables que na verdade ainda nao existem, nosso primeiro trabalho será cria-las vamos la então:

1 - Logue-se com o user mysql e siga os comandos a baixo:

su mysql

$ mysql_install_db
Preparing db table
Preparing host table
Preparing user table
Praparing func table
Praparing tables_priv table
Praparing columns_priv table
Installing all prepared tables
040625 12:23:26 /usr/libexec/mysqld: Shutdown Complete . . .

$ exit
# mysqld_safe --user=mysql&
# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL

MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH
STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): [ENTER]

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation.

Set root password? [Y/n] [Y] Y
New password: ( Digite aqui aquela que sera a sua senha )
Re-enter new password: ( Redigite a senha )
Password updated successfully!

Remove anonymous users? [Y/n] [Y]
Disallow root login remotely? [Y/n] [Y]

Remove test database and access to it? [Y/n] [Y]

Reload privilege tables now? [Y/n] [Y]
... Success!

Cleaning up...

O nosso próximo passo será alterar os arquivos de log do mysql aconselho indicar o dir padrão de todos os outros logs, no caso o /var/log/mysql/mysql.log

Mas pra que isso aconteça precisamos criar um arquivo dentro de /etc digite vi ou joe my.cnf e dentro dele insira o seguinte conteúdo:

[mysql.server]
datadir=/var/lib/mysql
socket=/var/run/mysql/mysql.sock

[mysqladmin]
socket=/var/run/mysql/mysql.sock

[mysqld]
datadir=/var/lib/mysql
socket=/var/run/mysql/mysql.sock
language=/usr/share/mysql/english/
log=/var/log/mysql/mysqld.log

[mysql]
socket=/var/run/mysql/mysql.sock

Agora vamos criar o arquivo de log e mudar a permissão:
# mkdir /var/log/mysql
# chown mysql:mysql /var/log/mysql
# chown mysql:mysql /var/lib/mysql

Feito isso vamos parar, dar um start e verificar os logs no mysql, para isso digite os seguintes comandos:

# killall mysqld
# /etc/rc.d/rc.mysqld start
# tail /var/log/mysql/mysqld.log

Prontinho pessoal seu mysql esta configurdo e pronto pra usar, pra acessar o mysql digite:

mysql -p senha_do_root

Lembrando que essa senha do root foi aquela que você alterou em um dos passos anteriores :

# mysql_secure_installation (lembram)

Valeu pessoal espero ter ajudado !!!!

Até a próxima !!!

terça-feira, maio 02, 2006

DICA - Criando vários arquivos...

Pessoal, essa dica vai para aqueles que necessitam, seja lá o porque, criarem vários arquivos de uma só vez. Eu postei a mesma dica no Viva o Linux e no Fórum GDH. Contudo, alguns amigos da comunidade livre postaram outras maneiras de se executar essa dica. Então aqui vai:
Eu escrevi...
Pessoal, aqui vai uma dica que demorei para descobrir como executar. É o seguinte: Volta e meia, preciso criar vários arquivos de uma só vez. Última vez, estava criando uma rotina para fazer o download do FC5 automático e em dado momento do script resolvi criar vários arquivos de uma só vez. Aí surgiu a questão... Como fazer isso?! "Dar" vários 'touch'?! Não... tentar criar de uma só vez usando o 'vi' ou qualquer outro editor?! Também não! Simples! Vou mostrar duas maneiras de efetuar o processo. A primeira, mais "fácil", porém trabalhosa, consiste em criar um .txt qualquer com o nome de todos os arquivos que você deseja criar:
1) crie o arquivo no 'vi' com seguinte conteúdo:
arquivo-1.txt
arquivo-2.txt
arquivo-3.txt
arquivo-4.txt
arquivo-5.txt
arquivo-6.txt
arquivo-7.txt
arquivo-8.txt
2) define a seguinte variável: VAR=`cat arquivo`
3) "dê" um 'touch' na variável $VAR: touch $VAR
Obs.: há outras possibilidades! Vai depender da sua criatividade! Por ex.: touch `cat arquivo`. Estimule a criatividade! Experimente fazer rotinas com laços usando 'for' ou o 'while'

Peczenyj escreveu...

Tem muitas formas de fazer isso
cat arquivo xargs touch
touch arquivo-{1,2,3,4,5,6,7,8}.txt
for((i=1;i<=8;i++)) ; do touch arquivo-${i}.txt ; done
Basta inventar uma...

Profeta_Livre escreveu...

#!/bin/bash
#
# bem simples vc da a quantidade de arquivo que quer
# criar, e ele atribui o nome do arquivo (
# este nome vc tambe fornece) com uma numeracao
# como vc mesmo propos
#
# as definicoe scomecam com 0,1,2 etc...
#
echo -e "Digite o nome da seguencia de arquivos: \n"
read arquivo
echo -e "Quantos arquivos devem ser criados? \n"
read quantidade
echo -e "Criando os arquivos...\n";
variavel="0"
while [ $variavel -lt $quantidade ]; do
arq=$arquivo$variavel
touch $arq.txt
echo -e "$arq.txt criado \n"
let variavel=variavel+1
done

Peczenyj escreveu...

$ set - `cat txt` && while [ "${1}" ] ; do touch ${1} ; shift ; done

Meu amigo JQueiroz escreveu...

for n in 1 2 3 4 5 6 7 8 9 10; do touch arquivo-$n.txt ; done

sábado, abril 22, 2006

FISL 7.0


Nessa postagem vou me atentar para o Fórum Internacional do Software Livre, que está acontecendo até o dia de hoje, 22 de abril, em Porto Alegre RS. Várias palestras estão acontecendo sobre os mais variados temas: VOIP, Administração do Sistema, Banco de Dados, Desenvolvimento, Redes, Linux, etc. Há também, para aqueles menos técnicos, temas a respeito da atuação do Governo Federal na escalado contínua do SL.
A minha humilde participação no FISL é como ouvinte dos diversos cursos e palestras nos quais tive a oportunidade de conhecer e me ambientar a temas sobre desenvolvimento, banco de dados e administração linux em geral.
A parte mais interessante, que está sendo grande "bum" do momento, foi o VOIP. Houve uma palestra sobre implantação de sistema de telefonia PBX via rede de dados com Asterisk, uma poderosa ferramenta que provê inúmeras formas de interligação telefonica via IP.
Deixo o meu grande abraço aos colegas da UERGS - Universidade Estadual do Rio Grande do Sul -, o Pessoal da UNICAMP, que desenvolveu uma distribuição baseada no Gentoo, Tuttoo, que já está disponível para downloads em seus ftps. Não posso deixar de parabenizer o trabalho de desenvolvimentos e tradução do sistema Debian para o Português brasileiro atravé do pessoal da Debian Brasil, mais precisamente, Guaraldo, ex-colega de trabalho que participou do projeto e expos o trabalho no Fórum.
A foto acima, não muito nítida, é do Mr. Stalman e eu obviamente a esquerda. Mr. Stalman é o grande pensador por trás da licença GPL FSF - Free Software Foundation. Uma pessoa bastante ímpar e que está também ministrando palestras do FISL 7.0.
Bom, por ora é só!
Grande Abraços!

segunda-feira, março 20, 2006

O que é Software Livre

O Que é?
Nós mantemos esta definição do Software Livre para mostrar claramente o que deve ser verdadeiro à respeito de um dado programa de software para que ele seja considerado software livre.

"Software Livre" é uma questão de liberdade, não de preço. Para entender o conceito, você deve pensar em "liberdade de expressão", não em "cerveja grátis".

"Software livre" se refere à liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro liberdades, para os usuários do software:

  • A liberdade de executar o programa, para qualquer propósito (liberdade no. 0);
  • A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade no. 1). Aceso ao código-fonte é um pré-requisito para esta liberdade;
  • A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade no. 2);
  • A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade no. 3). Acesso ao código-fonte é um pré-requisito para esta liberdade.

Um programa é software livre se os usuários tem todas estas liberdades. Portanto, você deve ser livre para redistribuir cópias, seja com ou sem modificações, seja de graça ou cobrando uma taxa pela distribuição, para qualquer um em qualquer lugar. Ser livre para fazer essas coisas significa (entre outras coisas) que você não tem que pedir ou pagar pela permissão.

Você deve também ter a liberdade de fazer modifcações e usá-las privativamente no seu trabalho ou lazer, sem nem mesmo mencionar que elas existem. Se você publicar as modificações, você não deve ser obrigado a avisar a ninguém em particular, ou de nenhum modo em especial.

A liberdade de utilizar um programa significa a liberdade para qualquer tipo de pessoa física ou jurídica utilizar o software em qualquer tipo de sistema computacional, para qualquer tipo de trabalho ou atividade, sem que seja necessário comunicar ao desenvolvedor ou a qualquer outra entidade em especial.

A liberdade de redistribuir cópias deve incluir formas binárias ou executáveis do programa, assim como o código-fonte, tanto para as versões originais quanto para as modificadas. Está ok se não for possível produzir uma forma binária ou executável (pois algumas linguagens de programação não suportam este recurso), mas deve ser concedida a liberdade de redistribuir essas formas caso seja desenvolvido um meio de criá-las.

De modo que a liberdade de fazer modificações, e de publicar versões aperfeiçoadas, tenha algum significado, deve-se ter acesso ao código-fonte do programa. Portanto, acesso ao código-fonte é uma condição necessária ao software livre.

Para que essas liberdades sejam reais, elas tem que ser irrevogáveis desde que você não faça nada errado; caso o desenvolvedor do software tenha o poder de revogar a licença, mesmo que você não tenha dado motivo, o software não é livre.

Entretanto, certos tipos de regras sobre a maneira de distribuir software livre são aceitáveis, quando elas não entram em conflito com as liberdades principais. Por exemplo,copyleft (apresentado de forma bem simples) é a regra de que, quando redistribuindo um programa, você não pode adicionar restrições para negar para outras pessoas as liberdades principais. Esta regra não entra em conflito com as liberdades; na verdade, ela as protege.

Portanto, você pode ter pago para receber cópias do software GNU, ou você pode ter obtido cópias sem nenhum custo. Mas independente de como você obteve a sua cópia, você sempre tem a liberdade de copiar e modificar o software, ou mesmo de vender cópias.

"Software Livre" Não significa "não-comercial". Um programa livre deve estar disponível para uso comercial, desenvolvimento comercial, e distribuição comercial. O desenvolvimento comercial de software livre não é incomum; tais softwares livres comerciais são muito importantes.

Regras sobre como empacotar uma versão modificada são aceitáveis, se elas não acabam bloqueando a sua liberdade de liberar versões modificadas. Regras como "se você tornou o programa disponível deste modo, você também tem que torná-lo disponível deste outro modo" também podem ser aceitas, da mesma forma. (Note que tal regra ainda deixa para você a escolha de tornar o programa disponível ou não.) Também é aceitável uma licença que exija que, caso você tenha distribuído uma versão modificada e um desenvolvedor anterior peça por uma cópia dele, você deva enviar uma.

No projeto GNU, nós usamos "copyleft" para proteger estas liberdades legalmente para todos. Mas também existe software livre que não é copyleft. Nós acreditamos que hajam razões importantes pelas quais é melhor usar o copyleft, mas se o seu programa é free-software mas não é copyleft, nós ainda podemos utilizá-lo.

Às vezes regras de controle de exportação e sansões de comércio podem limitar a sua liberdade de distribuir cópias de programas internacionalmente. Desenvolvedores de software não tem o poder para eliminar ou sobrepor estas restrições, mas o que eles podem e devem fazer é se recusar a impô-las como condições para o uso dos seus programas. Deste modo, as restrições não afetam as atividades e as pessoas fora da jurisdição destes governos.

Quando falando sobre o software livre, é melhor evitar o uso de termos como "dado" ou "de graça", porque estes termos implicam que a questão é de preço, não de liberdade.

Finalmente, note que critérios como os estabelecidos nesta definição do software livre requerem cuidadosa deliberação quanto à sua interpretação. Para decidir se uma licença se qualifica como de software livre, nós a julgamos baseados nestes critérios para determinar se ela se segue o nosso espírito assim como as palavras exatas. Se uma licença inclui restrições impensadas, nós a rejeitamos, mesmo que nós não tenhamos antecipado a questão nestes critérios. Às vezes um requerimento de alguma licença levanta uma questão que requer excessiva deliberação, incluindo discussões com advogados, antes que nós possamos decidir se o requerimento é aceitável. Quando nós chegamos a uma conclusão sobre uma nova questão, nós frequentemente atualizamos estes critérios para tornar mais fácil determinar porque certas licenças se qualificam ou não.

Para maiores informações, visite o site de filosofia do projeto GNU.

fonte: http://www.softwarelivre.org/whatisit.php

sexta-feira, março 17, 2006

Instalando SUDO no GNU Linux

Introdução:
Sudo (Superuser do) permite administradores de sistemas linux dar, a certos usuários (ou grupo de usuários), a capacidade de "rodar" alguns ou todos os comandos de um console como usuário root ou qualquer outro tipo de usuário.

Instalação:

Não vamos fugir da boa e velha compilação ou instalação usando os fontes. Você pode encontrá-los em http://www.gratisoft.us/sudo/sudo.html. A versão tratada aqui é a sudo 1.6.8p12.

Para a maioria dos sistemas...

Baixe o "source" do sudo:

wget ftp://ftp.sudo.ws/pub/sudo/sudo-1.6.8p12.tar.gz
/* se der problemas com esse mirror, consulte outros aqui */

tar xvzf sudo-1.6.8p12.tar.gz -C /usr/local/src

cd /usr/local/src/sudo-1.6.8p12

./configure
make
make install

Após essas rotinas, edite o arquivo sudousers com o 'visudo'

Simples né!? Pois bem, pode parecer simples mas só o INSTALL do sudo há várias opções para as mais diversas necessidades. Nunca deixe de olhar o INSTALL e o README antes de compilar.

Bom, alguns esclarecimentos sobre a postagem:

Sim, foi rápida e objetiva. Tentei abordar de forma simples a instalação do sudo, o qual pode ser compilado qualquer sistema GNU Llinux. Essa talvez seja o método mais "fácil" de se compilar o programa, mas, como já disse, há várias opções possíveis para concretizar a instalação.

EFI - Em Inglês

The EFI specification defines a new model for the interface between operating systems and platform firmware. The interface consists of data tables that contain platform-related information, plus boot and runtime service calls that are available to the operating system and its loader. Together, these provide a standard environment for booting an operating system and running pre-boot applications.

The EFI specification is primarily intended for the next generation of IA architecture-based computers, and is an outgrowth of the "Intel® Boot Initiative" (IBI) program that began in 1998.

In 2005 the Unified EFI Forum was formed. Using the EFI 1.10 specification as the staring point, this industry group is responsible for developing, managing and promoting the UEFI specification. Please refer to the UEFI site for more information on UEFI and for accessing UEFI specifications.

For more information about EFI, see EFI presentations.

quinta-feira, março 16, 2006

Tempos antigos...

Internet Archive:
web.archive.org
Eeste site permite ver como eram os layouts antigos de uma infinidade de sites. Como exemplo, você pode ver o design de 1997 do site do UOL e até como era o InfoWester em seu lançamento como site .com em 2003. Para isso, basta digitar o endereço do site no campo de busca do Internet Archive e clicar em "Take me Back". Em seguida, uma lista de versões do site sugerido será mostrado. Em inglês.


Fonte

segunda-feira, março 13, 2006

Engenharia em Sistemas Digitais

Descrição:

Formação de profissionais capacitados a efetuar diagnósticos, formular soluções e gerir a implantação de inovações em processos e produtos envolvendo tecnologias digitais. A sua sólida formação básica em engenharia permitirá uma permanente atualização profissional e uma compreensão adequada mesmo dos problemas não intrinsecamente digitais, dando a eles soluções avançadas que possam incluir as possibilidades do estado da arte da microeletrônica.

Perfil do Profissional:

Um profissional com um sólida base científica e bons conhecimentos dos sistemas produtivos, capaz de assimilar e avaliar inovações bem como ter flexibilidade de atualizar-se e capacitar-se face a problemas novos. Essa capacitação é fundamental para dar suporte ao desenvolvimento de aumento de competitividade da pequena e média empresa de base tecnológica, em atividades que venham a exigir a combinação de tecnologias digitais e sistemas de hardware e software. Em particular, uma forte conexão com o CEITEC proporcionará aos graduados uma adequada capacidade de julgamento sobre a transição de tecnologias convencionais para as de alta integração com a microeletrônica.

Fonte: site da uergs

domingo, março 12, 2006

Compilei o kernel 2.6.15

Olha pessoal, esse poste simples, embora não seja nenhuma dica, é para apenas vos informar que estou usando agora, sem maiores problemas, por enquanto, o kernel 2.6.15. Bom, um grande abraço a todos!

terça-feira, março 07, 2006

Google?!

A escolha do nome

O nome Google foi escolhido por causa da expressão googol, que representa o número 1 seguido de 100 zeros, para demonstrar assim a imensidão da Web.

A expressão googol surgiu de um fato um tanto curioso, o matemático Edward Kasner questionou o seu sobrinho de 8 anos sobre a forma como ele descreveria um número grande - um número realmente grande: o maior número que ele imaginasse. O pequeno Milton Sirotta emitiu um som de resposta que Kasner traduziu por "google". Mais tarde Kasner definiu um número ainda maior: o googolplex.

Veja os derivados do nome googol:

  • Googolplex: é o nome do conjunto de construções de trabalho e moradia do Google, em Mountain View - Califórnia. Este termo também vem da matemática e é algo como 10^{10^{100}}, que seria 10 elevado a (10 elevado a 100) ou 10 elevado a googol.
  • Googolduplex: como quando alguém se refere a um dos complexos de moradia do Google; Este termo, voltando à matemática, se refere a 10^{10^{10^{100}}}, ou 10 elevado a (10 elevado a (10 elevado 100)), ou mesmo 10 elevado a googolplex.
fonte:

segunda-feira, março 06, 2006

Boot Splash com Slackware - Por Bruno R. da Silva

Esse texto escrito por Bruno R. da Silva mostra como usar o Bootsplash no Slackware.
Bootsplash no Slackware

Usando Bootsplash no Slackware por Blood_Brother

1.0 Pré-requisitos
1.1 Aplicando o patch ao kernel
1.2 Compilando o splash
1.3 Criando o /etc/bootsplash
1.4 Criando o /boot/initrd com a bootsplash
1.5 Editando o /etc/lilo.conf
1.6 Criando o /etc/rc.d/rc.bootsplash
1.7 Editando alguns arquivos no /etc/rc.d/
1.8 Últimos ajustes
2.0 Contatos e dúvidas
2.1 Créditos

3.0 Dados do autor

1.0 Pré-requisitos

A primeira ação a ser feita é o download do patch referente à sua versão de kernel, o mesmo pode ser encontrado em http://www.plumlocosoft.com/kernel/patches/2.4/ Somente precisa ser baixado o patch com bootsplash ou bs no nome, que pode ser encontrado em subpastas split ou components. (Ao entrar no link você perceberá do que estou falando)

Após a obtenção do patch é necessário o download de um theme (o qual vai ser sua bootsplash), que pode ser obtido em http://www.bootsplash.org (recomendo que use o theme Default Linux, que é o que foi testado neste artigo).

Faz-se necessário também o pacote de fontes a seguir:
ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/bootsplash-3.0.7.tar.bz2 Este pacote possui os fontes do utilitário splash, que será usado mais adiante.

Um outro pré-requisito muito importante é saber compilar o kernel. (Sem este pré-requisito não continue)

1.1 Aplicando o patch ao kernel

O patch pode ser aplicado facilmente da seguinte maneira:

~# bunzip2 arquivo-do-patch.bz2
~# cd /usr/src/linux (ou onde estiver o fonte do seu kernel)
~# patch -p1 < /onde-está-seu-patch/arquivo-do-patch
Se você receber alguma mensagem de erro o patch é incompatível com sua versão de kernel, então baixe a versão certa.

Na config do seu kernel assegure-se de ter marcado a opção "Console drivers -> Frame-Buffer support -> VESA VGA graphics console" (ou outro framebuffer apropriado), e a opção "Use splash screen instead of boot logo".

Feito isto, compile seu kernel e passe para o passo seguinte

. 1.2 Compilando o splash

Basta descompactar o bootsplash-3.0.7.tar.bz2, entrar no diretorio criado com o nome de bootsplash-3.0.7, executar os 2 passos seguintes:

~# make splash
~# cp splash /sbin

1.3 Criando o /etc/bootsplash

Esta parte é importante, pois é a pasta onde serão armazenados seus themes. Então, crie a pasta /etc/bootsplash e dentro dela crie outra chamada themes. Dentro então de /etc/bootsplash/themes descompacte o theme que você obteve no passo 1.0.

1.4 Criando o /boot/initrd com a bootsplash

Este passo é bem simples, basta executar o comando: splash -s -f /etc/bootsplash/themes/Linux/config/bootsplash-1024x768.cfg > /boot/initrd

Repare que usei /etc/bootsplash/themes/Linux/config/bootsplash-1024x768.cfg porque é referente ao theme Default Linux que foi usado neste artigo, se você baixou outro theme adeque o caminho ao mesmo.

1.5 Editando o /etc/lilo.conf

Existem 2 linhas fundamentais para o funcionamento correto do bootsplash, são as que seguem:

initrd = /boot/initrd
append = "splash=silent"

As linhas podem ser colocadas logo abaixo desta:

root = /dev/hda1

Ficando então seu lilo.conf mais ou menos desta maneira:

image = /boot/vmlinuz
root = /dev/hda1
initrd = /boot/initrd
label = Linux
read-only

1.6 Criando o /etc/rc.d/rc.bootsplash

O /etc/rc.d/rc.bootsplash deve ser da seguinte maneira (sem as linhas que começam com --):

-- INICIO DO ARQUIVO -- #! /bin/sh
#
function progressbar()
{
if [ $# != 1 ]
then
echo "Usage: progressbar {progress}"
exit 1
fi
echo "show $(( 65534 * $1 / 100 ))" >
/proc/splash
}
-- FIM DO ARQUIVO --

Ps.: não se esqueça que o /etc/rc.d/rc.bootsplash precisa ser executável, para isso: chmod +x /etc/rc.d/rc.bootsplash

1.7 Editando alguns arquivos no /etc/rc.d/

Dois arquivos importantes serão editados para que controlem a barra que indica o carregamento do sistema no bootsplash, são eles: rc.M e rc.S

No início dos respectivos arquivos você precisa inserir esta linha: . /etc/rc.d/rc.bootsplash (a linha precisa estar logo abaixo do #! /bin/sh)

Após feito isso é você quem vai decidir a porcentagem em que o sistema está carregado em tal ponto, você deve então chamar a função progressbar seguida de um número que vai de 0 (zero) a 100 (cem).

Uma nota importante é que o rc.S é iniciado primeiro na hora do boot, então é interessante que logo após a primeira função que ele executar você já coloque progressbar 10 (posicionar a barra de carregamento do boot splash em 10%), e por ai vai. É interessante também que ao final do rc.S termine em mais ou menos 50% e a partir do início do rc.M você coloque progressbar 60, e ao final progressbar 100. Segue um exemplo para que você possa entender melhor:

#!/bin/sh
# rc.S exemplo
. /etc/rc.d/rc.bootsplash
echo "Progress bar em 10%"
progressbar 10
echo "Progress bar em 20%"
progressbar 20
echo "Progress bar em 35%"
progressbar 35
echo "Progress bar em 50%"
progressbar 50
# Fim do rc.S

#!/bin/sh
# rc.M exemplo
. /etc/rc.d/rc.bootsplash

echo "Progress bar em 60%"
progressbar 60
echo "Progress bar em 70%"
progressbar 70
echo "Progress bar em 85%"
progressbar 85
echo "Progress bar em 100%"
progressbar 100
# Fim do rc.M

Penso que assim fica melhor entendido.

1.8 Últimos ajustes

Feito todos os passos anteriores agora só falta você copiar a sua imagem do kernel com o patch aplicado para /boot/vmlinuz ou criar um link para ele. Executar: lilo (para que o lilo seja reinstalado). E finalmente! Reiniciar a máquina e rezar pra que tudo tenha funcionado, hehehe, brincadeira, se você seguiu os passos certinho tudo deve funcionar.

2.0 Contatos e dúvidas

Se alguém quiser manter contato ou tirar alguma dúvida (pequena!) basta me enviar um e-mail.

Ps.: Se tiver algum erro no texto também ficaria grato que me enviassem um e-mail relatando-o, para que eu possa corrigir.

2.1 Créditos

Gostaria de agradecer àqueles que acreditam em mim, e ao pessoal do #LinuxHelp da rede VirtuaLife que sempre dão uma força!

Slackware r0x!

3.0 Dados do autor

Nome: Bruno R. da Silva
Nickname: Blood_Brother ou Blutsbruder
Nascido em: 14/04/1985
Cidade: Florianópolis
Site pessoal: http://www.bloodcorp.tk
E-Mail:
Ocupação: Estudante de Ciências da Computação na Universidade Federal de Santa Catarina (UFSC)
Experiencia Profissional: Administração de redes Windows e Linux, implementação de proxys e serviços de ftp, http, sshd e vnc.

FISL 7.0 Em Porto Alegre

7º Fórum Internacional Software Livre
19, 20, 21 e 22 de Abril de 2006
Porto Alegre, RS, Brasil

A sétima edição do FISL será mais uma vez em Porto Alegre RS. Nossa "querência" sediará esse evento que vem se tornando cada vez maior em todo Brasil e no mundo. O evento contará com presença do guru Richard Stalman, uma das grandes personalidades mundiais do software livre.

sábado, março 04, 2006

Compilando Kernel 2.4.x

Em minha primeira postagem, gostaria de estar colocando algo bastante interessante e que fascina a todos, que é a COMPILAÇÃO do Kernel. Esse texto é uma tradução adaptada de um trecho que trata sobre compilação em sistemas linux de o "The Revised Slackware Book Project" cuja a autoria é Alan Hicks, Chris Lumens, David Cantrell e Logan Johnson.
Com singelas adaptações minhas...

A questão "Devo compilar um kernel para meu sistema?" é geralmente a perguntada por usuários novos. A resposta é definitivamente tavez. Há poucos exemplos onde você precisará compilar um kernel específico para o seu sistema. Muitos usuário podem usar um kernel precompilado e seus respectivos módulos para ativar um sistema - no caso do Slackware Linux. Isto é, num sistema com SMP você definitivamente vai querer compilar um kernel com suporte a SMP. Também, muitos usuários acreditam que um kernel customizado "roda" mais rápido em suas máquinas. Você pode achar útil compilar um kernel otimizado para seu processador especificamente falando.
Construiu seu próprio kernel não é uma tarefa difícil. O primeiro passo é se certificar de que os fontes instalados em seu sistema. Certifique-se de que você tem instalado em seu sistema um compilador C, GNU make e o GNU binutils. Geralmente, e para evitar qualquer problema, uma boa idéia ter todo o pacote de desenvolvimento. Você pode fazer o download da última versão do kernel de http://www.kernel.org/mirrors

Compilação do Kernel versão 2.4.x

% su -
Password:
# cd /usr/src/linux

O primeiro passo é trazer a fonte do kernel para dentro de sua base. Emitimos esse comando para fazer isso (Nota, você deve fazer um backup do seu .config atual, pois será removido sem haviso prévio).

# make mrproper

Agora você pode configurar o kernel para o seu sistema. As três maneiras de se fazer isso é: a primeira é baseado em texto com perguntas e resposta, muito demorado. Fará várias perguntas e depois criará um arquivo de configuração. O problema, além de ser lento, é que se houver algum erro, tem de começar tudo denovo. O método que a maioria das pessoas preferem é o menu. Por último, há um método baseado numa ferramena de configuração do X. Escolha a que melhor convir:

# make config (text-based Q&A version)
# make menuconfig (menu driven, text-based version)
# make xconfig (X-based version, make sure you are in X first)

Usuários novos poderão achar o menuconfig provavelmente o mais fácil de usar. Telas de ajuda provêem explicações sobre as várias partes da compilação do kernel. Depois de configurar seu kernel, saia do programa de configuração. Ele definir os arquivos configuração necessários. Agora nós podemos preparar a árvore de fontes para a construção.

# make dep
# make clean

O próximo passo é compilar o kernel.

# make bzImage

Isso pode demorar um pouco dependendo da velocidade do seu CPU. Durante o processo, você verá inúmeras mensagens do compilador. Depois de compilar a imagem do kernel, você irá compilar as várias partes do kernel que você definiu como modulares.
# make modules

Nós agora podemos instalar o kernel e os módulos que foram compilados. Para instalar o kernel num Linux, por exemplo, no Slackware, serão necessários estes comandos:

# mv /boot/vmlinuz /boot/vmlinuz.old
# cat arch/i386/boot/bzImage > /vmlinuz *(ou /boot/vmlinuz, não importa)
# mv /boot/System.map /boot/System.map.old
# cp System.map /boot/System.map
# make modules_install

Após você deverá editar o seu Boot Loader favorito para que ele "carregue" o sistema