Introdu¸c˜ao ao GNU/Linux
Thiago Teixeira Santos
thiago.tsantos@sp.senac.br
Laborat´orio de Imagens Vis˜ao e Estruturas Espaciais Faculdade SENAC de Ciˆencias Exatas e Tecnologia
http://www.ime.usp.br/∼thsant/pool/linux-intro.pdf
1. HIST ´ ORIA
Unix
• Ritchie, Thompson e Kernighan criam o “Unix” no Bell Labs em 1969. O nome
´e uma brincadeira em cima do Multics, um outro SO da ´epoca.
• Can you send me a tape? O sistema, seu c´odigo fonte e seus manuais eram livremente distribu´ıdos entre as universidades e os centros de pesquisa (quem mais usaria computadores na d´ecada de 60?).
• O sistema era extendido pelos seus usu´arios. Hackers da Universidade da Calif´ornia em Berkeley lan¸cam uma vers˜ao com suas melhorias: o BSD (Berkeley Systems Distribution). Eles o utilizavam em suas pesquisas, incluindo o desenvolvimento do TCP/IP.
• D´ecada de 80 – AT&T transforma o sistema do Bell Labs em um produto comercial: o AT&T UNIX (mai´usculo) e a distribui¸c˜ao das fitas cessa. Venda de c´odigo fechado pelas grandes corpora¸c˜oes torna-se a norma. ;-(
GNU is not UNIX
• If you share with your neighbor, you are a pirate. If you want any changes, beg us to make them.
• Richard Stallman, pesquisador do AI-MIT, acostu- mado com intercˆambio livre de software durante anos, inconforma-se com os sistemas propriet´arios. Cria o Pro- jeto GNU e a Free Software Foundation.
• Free as in freedom
. Vocˆe tem liberdade de executar o programa, para qualquer finalidade.
. Vocˆe tem liberdade para modificar o programa para atender suas necessidades (c´odigo fonte).
. Vocˆe tem liberdade de redistribuir c´opias, gr´atis ou n˜ao.
. Vocˆe tem liberdade de distribuir vers˜oes modificadas do programa, para a comunidade se beneficiar das melhorias.
GNU is not UNIX
• GNU visa ser um sistema free completo: sistema operacional, ferramentas de programa¸c˜ao, ambiente gr´afico, etc.
. GNU/Linux: kernel (sistema operacional) Linux + ferramentas e bibliotecas criadas pelo projeto GNU.
. GNU/Hurd: kernel Hurd (GNU kernel) + ferramentas e bibliotecas GNU.
• Copyleft ´e uma forma legal (um copyright invertido) de garantir que o software livre n˜ao se torne propriet´ario. Um exemplo ´e a GNU General Public License GPL.
• Em 1998, alguns hackers (ex.: Eric Raymond) alegaram que o termo Free Software poderia confundir a ind´ustria (free = gr´atis) e cunharam o termo Open Source (free = livre, aberto).
Linux
• Linus Torvalds desenvolve um kernel de sistema ope- racional, batizado de Linux, e o lan¸ca em 1991 sob a GPL.
• A populariza¸c˜ao da Internet ajuda na forma¸c˜ao de uma comunidade em torno do kernel. Torvalds consegue, com maestria, organizar o trabalho e as contribui¸c˜oes de um ex´ercito de programadores ao redor do mundo.
• O GNU/Linux d´a origem `as distribui¸c˜oes, pacotes organizados de software com sistemas de instala¸c˜ao, gerenciamento e empacotamento pr´oprios:
E muitas outras...
Filosofia Unix
• Se um sistema t˜ao antigo consegue sobreviver de 1969 at´e hoje (e com pleno vigor!) seu sucesso est´a em seu design.
• Ferramentas × Aplica¸c˜ao: um ambiente Unix possui pequenas ferramentas que executam muito bem um pequeno trabalho.
• Colocadas em pipes, a sa´ıda de uma ferramenta se torna a entrada de outra e o conjunto passa a fazer uma tarefa mais complexa. As diversas ferramentas combinadas de formas diferentes geram um n´umero infinito de op¸c˜oes!
• Aplica¸c˜oes s˜ao programas mastodˆonticos (processadores de texto, planilhas, na- vegadores web,...) que cuidam de todo o processo, geralmente abrindo arquivos propriet´arios, realizando uma tarefa complicada e gravando o resultado novamente em arquivos propriet´arios.
• A filosofia Unix se baseia na sinergia das pequenas ferramentas.
• Linux possui o melhor dos dois mundos: ferramentas Unix de alta sinergia e aplica¸c˜oes para tarefas muito elaboradas e especializadas.
2. B ´ ASICO
Knoppix Linux
• Usaremos neste workshop o Knoppix Linux. Trata-se de uma distribui¸c˜ao constitu´ıda de um ´unico CD-ROM, “boot´avel”, que monta os discos da m´aquina somente para leitura (inicialmente) e rapidamente detecta todos o hardware do computador e configura o sistema de acordo.
• O Knoppix n˜ao ´e persistente. Nada ser´a instalado na m´aquina e, ap´os o desligamento da m´aquina e remo¸c˜ao do CD, ela estar´a exatamente em seu estado anterior.
• Ideal para um primeiro contato em Linux e, posteriormente, como um “canivete su´ı¸co” para ter na mala. :-D
• Baseado na Debian. Desenvolvido por Klaus Knopper e promovido pelo Linux Tag (maior conferˆencia sobre Linux da Europa).
• Ponham-no no drive e reiniciem a m´aquina!
Ligar e Desligar
• Sistemas GNU/Linux, ap´os a inicializa¸c˜ao, solicitam o nome de usu´ario e a senha para autentica¸c˜ao. No Knoppix, por´em, s´o existem 2 usu´arios (knoppix e root). O usu´ario knoppix ´e autenticado como o padr˜ao.
• Para desligar o sistema h´a v´arias op¸c˜oes (na shell):
. Reinicializar o sistema (r de reboot):
$ shutdown -r now
. Desligar o sistema (h de halt) :
$ shutdown -h now . Ou simplesmente:
Ctrl+Alt+Del
• Experimente no Knoppix. Aproveite para reler com aten¸c˜ao as mensagens da inicializa¸c˜ao!
Consoles Virtuais
• Um console ´e um lugar onde vocˆe poder´a obter I/O com o sistema.
• Vocˆe poder´a ter v´arias sess˜oes simultˆaneas atrav´es dos consoles virtuais.
• Para sair do ambiente gr´afico. Use Ctrl+Alt+F1.
• Alterne entre os terminais com Alt+F2, Alt+F3, Alt+F4,... ou via Alt+← e Alt+→.
• Rode um comando, experimente:
$ cat /etc/modules.conf
• Muito texto? Vocˆe pode navegar pelo conte´udo exibido na tela com Shift+PgUp e Shift+PgDown.
Arquivos e Diret´ orios
• A raiz de uma ´arvore de diret´orios Unix ´e representada por /. ´E o n´ıvel mais alto da hierarquia.
• Sistemas GNU/Linux diferentes costumam ter pequenas diferen¸cas em suas ´arvores de diret´orios, mas possuem, essencialmente:
. /bin Programas “execut´aveis” essenciais (de binaries).
. /dev Um dos pontos fortes do design Unix ´e a representa¸c˜ao de dispositivos (devices) como arquivos. Veremos posteriormente as facilidades desta representa¸c˜ao.
. /etc O diret´orio de etcetera armazena uma miscelˆanea de arquivos de configura¸c˜ao e inicializa¸c˜ao do sistema.
. /home Aqui ficam os diret´orios pessoais dos usu´arios do sistema
? /home/tts Meu diret´orio pessoal.
? /home/mariazinha Diret´orio pessoal da Mariazinha.
? /home/fhc Diret´orio pessoal do usu´ario FHC.
. /lib Bibliotecas essenciais do sistema.
. /proc N˜ao se trata de arquivos reais, mas abstra¸c˜oes de processos do sistema.
Arquivos e Diret´orios
• Continua¸c˜ao...
. /root Diret´orio do superusu´ario.
. /sbin Ferramentas de administra¸c˜ao do sistema.
. /tmp Arquivos tempor´arios.
. /usr Onde residem arquivos relativos `as ferramentas e aplica¸c˜oes utilizadas pelos usu´arios (users).
. /usr/bin Ferramentas e aplica¸c˜oes.
. /usr/doc Documenta¸c˜ao.
. /usr/lib Bibliotecas utilizadas pelos programas em /usr/bin.
. /usr/local Todos os diret´orios vistos anteriormente podem estar localizados remota- mente em um servidor, se necess´ario. Aqui residem os arquivos obrigatoriamente locais, que dizem respeito s´o `a m´aquina em quest˜ao.
. /var Arquivos de tamanho vari´avel: logs de sistema, spool de e-mail e impress˜ao...
• Conv´em respeitar esta organiza¸c˜ao, para evitar que o sistema vire uma bagun¸ca incompreens´ıvel!
Arquivos e Diret´orios
• Para listar o conte´udo de um diret´orio:
$ ls
. $ ls -a exibe arquivos e diret´orios ocultos.
. $ ls -l exibe informa¸c˜ao detalhada.
. $ ls /home/tts lista o meu diret´orio pessoal.
• Para mudar de diret´orio, use:
$ cd path
. $ cd /
. $ cd /usr/local . $ cd /lib
• Diret´orio corrente ´e representado por ./ enquanto o diret´orio pai o ´e por ../
• Naveguem um pouco pelo Knoppix. Vasculhem a ´arvore de diret´orios. Usem as op¸c˜oes -a e -l. O que elas significam?
Arquivos e Diret´orios
• Para criar um diret´orio:
$ mkdir path
• Para remover um diret´orio:
$ rmdir path ou
$ rm -rf path, caso o diret´orio n˜ao esteja vazio.
• Para remover um arquivo:
$ rm path
. $ rm -i solicita confirma¸c˜ao antes da remo¸c˜ao.
. $ rm -v exibe os arquivos sendo removidos (verbose).
. $ rm -f force: use com cautela, remove tudo sem qualquer prompt ou confirma¸c˜ao!
• Para copiar arquivos:
$ cp original c´opia
. $ cp -R dir original dir c´opia copia um diret´orio inteiro recursivamente.
Arquivos e Diret´orios
• Para mover arquivos:
$ mv origem destino
• Para criar links simb´olicos (“atalhos”):
$ ln -s destino link
• Exerc´ıcio:
. Use:
$ touch path
para criar arquivos vazios.
. Crie diret´orios e arquivos. Mova, copie e crie links.
. Use os caracteres coringa da shell: *, ? e .
. Tente remover um arquivo de propriedade do superusu´ario (root). O que acontece?
Redirecionamentos e Pipes
• No Unix a sa´ıda de uma ferramenta torna-se a entrada de outra.
• Para exibir o arquivo de configura¸c˜ao do X Windows System na tela, podemos utilizar o comando:
$ cat /etc/X11/XF86Config
• Estamos interessados somente em ver as se¸c˜oes existentes. Utilizamos a ferramenta grep para filtrar a sa´ıda de cat:
$ cat /etc/X11/XF86Config | grep ’Section ’
• N˜ao estamos interessados nas se¸c˜oes comentadas (iniciadas por #. Utilizamos o grep novamente:
$ cat /etc/X11/XF86Config | grep ’Section ’ | grep -v ’#’
• Est´a quase bom ;-). Vamos colocar tudo em ordem alfab´etica e inserir em um arquivo:
$ cat /etc/X11/XF86Config | grep ’Section ’ | grep -v ’#’ | sort > foo
Dispositivos
• Dispositivos (discos, CD-ROMs, mouse, portas paralelas, placas de som,...) s˜ao abstra´ıdas como arquivos no Unix.
• As opera¸c˜oes de redirecionamento valem para dispositivos:
. $ cat barulhinho.wav > /dev/dsp
. $ cat /dev/psaux (mova seu mouse PS2 e veja o que acontece)
• Alguns dispositivos que conv´em lembrar:
. /dev/hda ´e o primeiro disco na primeira controladora IDE.
? /dev/hda1 ´e a primeira parti¸c˜ao do 1o disco IDE.
? /dev/hda2 ´e a segunda parti¸c˜ao do 1o disco IDE.
? /dev/hdaN ´e n-´esima parti¸c˜ao do 1o disco IDE.
. /dev/hdb ´e o segundo disco na primeira controladora IDE.
. /dev/hdc ´e o primeiro disco na segunda controladora IDE.
. /dev/hdd ´e o segundo disco na segunda controladora IDE.
Dispositivos
• Continua¸c˜ao...
. /dev/psaux refere-se ao mouse PS2.
. /dev/ttySN s˜ao as portas seriais (modems, mouses, etc...).
. /dev/lpN s˜ao as portas paralelas.
. /dev/sdN s˜ao dispositivos SCSI.
. /dev/dsp de Digital Signal Processing (placa de som).
Dispositivos
Ajuda: man, info e apropos
• O comando apropos localiza as ferramentas cuja descri¸c˜ao possui um dado texto de interesse. Se estou, por exemplo, procurando localizadores de padr˜oes:
$ apropos pattern
• Vocˆe j´a sabe que software utilizar, o grep por exemplo. Para ver seu manual:
$ man grep
• Existe ainda um formato para documenta¸c˜ao chamado Info. Muitas vezes, consiste em livro inteiro! Para ver a documenta¸c˜ao em formato Info do grep:
$ info grep
Dispositivos
Ferramentas MUITO ´ uteis
• cat
• echo
• grep
• find
• tail
• more
• less
3. Cool Stuff
Cool Stuff
• Programa¸c˜ao:
. C/C++, Java, Perl, Python, PHP, Tcl/Tk, Lisp, Prolog, Scheme, Fortran, Pascal, Assemblers,...
. Toolkits gr´aficos: GTK+, Qt . Editores: Emacs, Vi
. IDEs: Netbeans (Java), Anjuta, KDeveloper, GLADE al´em de ferramentas comerciais da Borland (Kylix, ...)
. Bibliotecas para computa¸c˜ao gr´afica (OpenGL), manipula¸c˜ao de v´ıdeo, processamento de imagens, criptografia, controle de robˆos Lego, estruturas de dados, processamento paralelo e distribu´ıdo, grafos,...
• Rede
. Browsers, clientes de e-mail, mensagens instantˆaneas e secure shell.
. Servidores Web, servidores de e-mail, servidores de ftp, ssh, streaming media, DNS.
. NIS, firewalls, roteamento,...
• Jogos, multim´ıdia, bancos de dados,...
Cool Stuff - GIMP
GNU Image Manipulation Program (GIMP) utiliza GTK+.
Cool Stuff - Gnumeric
Gnumeric (GTK+).
Cool Stuff - Anjuta
Anjuta IDE (GTK+): projetos em C/C++ com GTK+ e GNOME.
Cool Stuff - MPlayer
MPlayer: Um dos media players dispon´ıveis para Linux.
Cool Stuff - XMMS
XMMS: Um dos media players dispon´ıveis para Linux.
4. REFERˆ ENCIAS
• Free Software Foundation http://www.gnu.org
• The Linux Documentation Project – LDP http://www.tldp.org
• Projeto de Documenta¸c˜ao do Linux – LDP-BR http://br.tldp.org
• The Linux Cookbook: Tips and Techniques for Everyday Use http://www.tldp.org/LDP/linuxcookbook/linuxcookbook-1.2.pdf
• Knoppix
http://www.knopper.net/knoppix/index-en.html
• Debian
http://www.debian.org
• Red Hat
http://www.redhat.com
• Linux Mall “Paulistana”
http://http://www.linuxmall.com.br