1. Semana da Computação
Mini-curso Linux
Universidade Federal da Paraíba
Centro de Informática
Programa de Educação Tutorial
Ciência da Computação
Fábio Cruz B. de Albuquerque
José Ivan Bezerra V. Filho
2. Sumário
• Introdução
• Distribuições
• Características
• O que é possível fazer
• Ambientes gráficos
• Virtualização
• Terminal
• Gerenciador de pacotes
• Módulos e drivers
• Como e onde obter
4. Introdução - Kernel
• Núcleo do Sistema
o Base para todas as distribuições
o Serve de ponte entre os programas e o hardware
5. Introdução - Software Livre
História do Software Livre
• 1984
o Richard Stallman, Projeto GNU
o Licença GPL, FSF (Free Software Foundation)
• 1991
o Linus Torvalds, primeira versão do Kernel Linux
o Centenas de desenvolvedores em todo mundo juntam-se para integrar o
sistema GNU ao kernel Linux
o GNU/Linux sobre a licença GPL
• 1997
o Termo Open Source (artigo "A Catedral e o bazar" por Eric Raymond)
6. Introdução - Software Livre
O que é o Software Livre
• Software com uma licença livre
o GNU GPL, Licença Apache, Licença MIT, Licença BSD
o Cada uma contém suas particularidades
• Copyleft
o Em oposição ao copyright
o Autor cede alguns direitos
o Um software sob copyleft permenece sob copyleft
• Domínio Público
o Similar às obras de literatura sob domínio público
7. Distribuições
"Sabores" Linux
• Linux + conjuntos de ferramentas para um determinado propósito
• Centenas delas criadas por companhias e comunidades em todo o
mundo
o Canonical
o Red Hat
o Projeto Fedora
o Projeto Debian
o Mandriva
• http://goo.gl/640aW - lista de distribuições
• Você pode fazer sua própria distro
8. Distribuições
• Ubuntu
o "Linux for human beings"
o Debian-based
o Propósito geral, usuários de todos os tipos
o Contém inúmeras ferramentas
o Live-CD
o Indicado para iniciantes
o Sistema de pacotes DEB (apt/aptitude)
10. Distribuições
• Fedora
o Criado pela Red Hat, mantido pelo Fedora Project
o Rápido e estável
o Usuários iniciantes a intermediários
o Live-CD
o Sistemas de pacotes RPM (Yum)
12. Características - Sistema de arquivos
• O que é um sistema de arquivos?
o Forma de organizar os dados em um meio de armazenamento (HD, pendrive,
etc.)
o Grande importância
o Cada um tem suas vantagens e desvantagens
o Exemplos
ext3, ext4, swap (Unix)
ntfs e fat32 (Windows)
hfs (Mac OS)
nfs (network)
13. Características - Sistema de arquivos
• Hierárquico (como uma árvore genealógica)
• Base: diretório raiz (root) representado por /
• Demais diretórios:
o /bin - utilitários principais do Unix/Linux
o /etc - programas e arquivos administrativos
o /lib - bibliotecas de funções, programas e dados
o /tmp - arquivos temporários
o /home - diretório dos usuários
/home/fabio - contém os diretórios do usuário "fabio"
o /usr/bin - utilitários
o ...
o /dev - arquivos especiais de dispositivos (hd, usb, cdrom, etc.)
14. Características - Sistema de arquivos
• Não há conceito de extensão
• A extensão faz parte do nome do arquivo e é indiferente para o
sistema
• "exemplo.txt" é um arquivo de texto, mas podemos salvá-lo como
"exemplo" sem alterar nada
• Comando file
• Comum nomearmos arquivos com "múltiplas extensões"
o compactado.tar.gz
15. Características
• Runlevel
• Multiusuários
• Multitarefas
• Sistema de permissão nativo
• Kernel modular
• Altamente robusto
• Código fonte aberto
• Uma vasta comunidade de usuários
• Alta compatibilidade de hardware
16. Características - Permissões
• chmod
o change mode
o define quem pode fazer o quê
o escrita, leitura e execução para proprietário, grupo de usuários e outros
o números octal (de 0 a 7) e representação binária (0 ou 1 - falso ou
verdadeiro)
read - 0 ou 1
write - 0 ou 1
execution - 0 ou 1
valores de 0 a 7
o exemplo
chmod 755 nome_do_arquivo
17. Características - Permissões
• chown
o change owner
o define quem é o proprietário de um arquivo ou diretório
o exemplo
chown novo_proprietario nome_do_arquivo
• chgrp
o change group
o define a qual grupo o arquivo ou diretório está associado
o exemplo
chgrp novo_grupo nome_do_arquivo1 nome_do_arquivo2 ...
• Todos três comandos acima podem ser usados para arquivos e/ou
diretórios (recursividade)
18. O que é possível fazer
• Programas comuns de uso diário
o Mensageiro: amsn, pidgin
o Navegador: firefox, chrome
o Suíte de Escritório: LibreOffice, BrOffice
o Editor gráfico: gimp
o Player multimídia: vlc
22. Ambientes Gráficos
• X.org
o Sistema de janelas adotado na maioria das distribuições Linux
o Open Source
• Ambientes gráficos
o Gerenciador de janelas
o Controla como as "coisas" se comportam na interface gráfica
o Ele permite a criação de um ambiente desktop
• Gnome
• KDE
• Unity
• Xfce
• Compiz
33. Virtualização
• É possível usar outros sistemas e programas
• Técnica de virtualização
o Emular um computador e instalar outros S.O. (como Windows XP,
Windows 7, Mac OS...)
• VirtualBox
• VMware
• XEN
• Também é possível "traduzir" aplicações para executá-las no seu
sistema
o Wine
o Programas...
o Jogos (Counter-Strike, Half-Life, Fallout, AoE, etc.)
39. Terminal
Shell > Programas e comandos > Kernel > Hardware
• Shell leva este nome porque em inglês, Shell significa concha,
carapaça
• Fica entre o usuário e o sistema operacional, de forma que tudo
que interage com o sistema operacional, tem que passar pelo crivo
do Shell
• Para chegar ao núcleo do Linux, no seu kernel, que é o que nos
interessa, é necessária a filtragem do Shell
• sh (Bourne Shell), o ksh (Korn Shell), bash (Bourne Again Shell) e o
csh (C Shell).
40. Terminal
• Shell é um interpretador de comandos! com uma linguagem e
comandos de alto nível
• É possível programar em Shell (laços, variáveis, tomadas de decisão,
etc.)
• O Shell faz (nessa ordem):
o Exame da Linha de Comandos
o Resolução de Redirecionamentos
o Substituição de Variáveis
o Substituição de Meta Caracteres
o Passa Linha de Comando para o kernel
41. Terminal
• "." , ".." , "~", "-", "/", "*", "?"
• Comandos básicos
o man, apropos e whatis
o pwd
o cd
o ls
o cp
o mv
o ln
o mkdir
o rmdir
o rm
o basename
o dirname
42. Terminal
• Comandos básicos
o cat
o wc
o head, tail, more, less
o find
o locate
o grep
o sort
o mount
o umount
o tar, zip, unzip
43. Terminal
• Outros comandos
o ctrl + z
o ctrl + c
o fg
o bg
o top
o ps
o jobs
44. Terminal
• Comandos de rede
o ifconfig
o route
o ipv6
o ip
o dhcpd
o dhclient
o iwconfig
o iwlist
o ftp
o ssh
o scp
45. Gerenciador de pacotes
• O que são pacotes?
• Gerenciador de pacotes
• Por distribuição e para todos os gostos
• Debian e Ubuntu
o apt (/etc/sources.list)
o aptitude (gráfico e comando)
o synaptic
• Red Hat e Fedora
o rpm
o yum (/etc/yum.conf)
o dpkg
• Comparativo com Windows
46. Módulos e drivers
• O desenvolvimento de uma nova funcionalidade para o kernel do
Linux pode ser implementada diretamente no Kernel ou compilada
como um módulo.
• De modo geral, a escolha tende a ser a compilação como módulo.
Isso se traduz no carregamento dinâmico do código apenas quando
esta funcionalidade for necessária. Além disso, torna o kernel mais
enxuto, leve e, portanto, mais eficiente.
• Diversos componentes do kernel do Linux são implementados
como módulos, por exemplo,
• filesystems, device drivers, e novas camadas de protocolos de
comunicação.
47. Módulos e drivers
• Além dos drivers open-source incluídos no Kernel, existe um
conjunto de drivers proprietários ou semi-proprietários, na maioria
dos casos desenvolvidos pelos próprios fabricantes.
• Muitos fabricantes receiam que abrir as especificações de seus
dispositivos torna mais fácil para os concorrentes fazerem
engenharia reversa e descobrir os segredos.
• Muitos destes drivers precisam também do firmware do dispositivo
para funcionar, responsável pela comunicação entre driver e
hardware (um dos componentes do driver que vem incluído nos
CDS para Windows).
• Por não serem código aberto, estes drivers não são incluídos
diretamente no Kernel e normalmente também não são incluídos
nas distribuições, deixando para o usuário o trabalho de baixar e
instalá-los manualmente.
48. Como e onde obter
• Mídias (Live-CDs, Live-DVDs), Pendrive...
• Onde?
o Internet
o Amigos
o Universidade
o Encomendar da própria distribuição
o etc.
51. Referências
http://aurelio.net/shell/
Programação Shell Linux - Julio Cesar Neves http://jneves.wordpress.com/
Gnome http://gnome.org
KDE http://kde.org
Unity http://unity-linux.org
Xfce http://xfce.org
Compiz http://compiz.org
Instalando drivers adicionais
http://www.hardware.com.br/livros/ferramentas-linux/capitulo-instalando-drivers-adicionais.html
Módulos Linux http://www.sounerd.com.br/index.php/about-joomla.html
Como explicar um Kernel http://www.vivaolinux.com.br/artigo/Como-explicar-o-que-e-kernel-para-um-leigo/
Open Source http://en.wikipedia.org/wiki/Open_source