Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Minicurso Linux

Apresentação para minicurso introdutório ao sistema operacional linux lecionando na PUC Minas em abril 2013
by

Giovanni Silva

on 11 April 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Minicurso Linux

Introdução
ao Linux

Evellyn Cavalcante
Giovanni Cândido da Silva
Introdução
Cronologia
1965 - Bell Telephone Labs – Multics
1969 – Multics é descontinuado – (jogo Space Travel) Criaram → Unics → Unix
1971 – Unix foi escrito para computador PDP-11
1973 – Unix foi escrito em C com objetivos educacionais
1977:1982 – Várias versões até chegar ao Unix System III (BSD, System III, etc)
1983 – Unix passa a ser comercial com grande pontencial
1983 – Richard Stallman (MIT) lança projeto GNU – 1984 Lançado o GNU oficialmente
1983 – É criada a Free Software Foudantion (FSF)
1985 - Formulada a GPL (GNU General Public License)
1987 – Andrew Tanenbaum lança o Minux
1991 – Linus Torvalds inicia um projeto de aprimoramento do Minix (LINUS + MINIX = LINUX)
Linux Hoje
Código fonte cresce de alguns arquivos para em 2009 possuir 370 megabytes de fonte.

O custo para produzir o linux 2.6.x novamente foi estimado 3 vezes:
2004 - $612 milhões USD (€467 milhões de euros, 1,145 bilhão de Reais)
2006 - €882 milhões ($1,14 bilhões USD)
2008 - $1.3 bilhão USD parte dos $10.8 bilhões para refazer todo o Fedora 9
Linux Hoje
Dezenas de distribuições
Usado em incontáveis lugares
Em 2012 a Red Hat se torna a primeira empresa de opensource a ter receita de US$1 bilhão no ano
Alguns usos: Servidores, Desktops, Notebooks, Celulares, Tablets, Microcontroladores, Robôs e Droids, Governos, Universidades, Empresas, Pessoas...
Lets start - The boot proccess
A
BIOS do computador
inicia um programa gravado na MBR do disco, o GRUB (Há outros como o LILO).
O
GRUB
é

responsável por carregar o kernel e opcionalmente o initial RAM disk (initramfs) em memória e dar início ao boot.
O
kernel
então faz uma configuração mínima de hardware, inicia a paginação de memória, detecta a CPU, monta o sistema de arquivos real, e inicia o processo init (o primeiro user space proccess tipicamente /sbin/init).
O
processo init
inicializa todos os outros processos do sistema
.
http://distrowatch.com
http://idgnow.uol.com.br/mercado/2012/03/29/red-hat-e-primeira-empresa-de-open-source-a-ter-receita-de-us-1-bilhao/#&panel2-1
http://pt.wikipedia.org/wiki/Linux_(núcleo)
Partições e Sistemas de Arquivos
Para eu colocar o Windows e o Linux no mesmo computador eu preciso de 2 partições. Se eu colocar uma partição para sistema e outra para dados pessoais no Windows ainda está sobrando uma!
http://www.ibm.com/developerworks/library/l-linuxboot/
Solução:
Partições estendidas
1 Partição estendida (extended partition) pode ser subdividida em até 256 partições chamadas secundárias (secundary partition)
Partições e Sistemas de Arquivos
Ext2
- Não use (algumas exceções)
Ext3 (2001)
- Journaling, compatível com Ext2, compressão transparente, confiável, um arquivo pode ter de 16 GB à 2 TB o tamanho total do sistema varia de 2 TB à 32 TB
Ext4 (2008)
- Ext3 com esteroides, Journaling melhorado. Arquivos: 16 GB à 16 TB, Total: 1 EB (exabyte). 1 EB = 1024 PB (petabyte). 1 PB = 1024 TB (terabyte). Diversos melhorametos em performace e estabilidade: multiblock allocation, delayed allocation, journal checksum. fast fsck, etc.
ReiserFs/Reiser3 (concorrente do Ext3)
- Journaling, mais rápido para "muitos pequenos arquivos", executa uma tarefa por vez (não multicore).
Reiser4
- Melhorias no Reiser3, ainda não completo
Todos são POSIX (Padrão de permissões de arquivos do Unix)
Muitos outros sitemas de arquivo (objetivos diferentes): XFS, Btrfs, ZFS ...
Estrutura de Diretórios
c: ? d: ? e: ? f: ... z: ?
Tudo começa no "/" também conhecido com Raiz.
Herdou a organização do Unix.
Cada diretório tem um significado e isso é respeitado pelas distribuições.
Linux VS Windows VS MacOSX

Linux
– Código aberto, gratuito e de multiplataforma
Windows
– Código fechado, pago e multiplataforma
MacOSX
– Código fechado, pago e só “roda em MAC” (hackintosh: não tente isso em casa )
/bin
/boot
/dev
/etc
/home
http://www.thegeekstuff.com/2011/05/ext2-ext3-ext4/
http://www.serverfocus.org/reiserfs-vs-ext4-vs-xfs-vs-zfs-vs-btrfs
/sbin
/tmp
/usr
/usr/local
/usr/src
/var
/lib
/mnt
/opt
/proc
/root
Permissões
Usuario-Grupo-Outros
R: Read
W: Write
X: Execute
Exemplos:
-rw-r--r-- 1 giovanni staff 442 15 Fev 21:40 DSAPublic.key
-rwxr-xr-x 1 root wheel 19488 25 Jul 2012 /bin/cat
drwxr-xr-x 2 root root 4096 Nov 4 19:05 private/
Manipula-se permissões com o comando
chmod
e
chown
.
Entendendo o Sistema
O sistema X Window foi desenvolvido para permitir interfaces gráficas.
Trata-se de um serviço para desenho de janelas e utilização de placas gráficas: O xserver (A organização por trás do xserver é o Xorg)
O xserver por si só é agnóstico, ele não estiliza nenhuma interface, é a base para todas as outras.
X Window e as Interfaces
a Gosto do Cliente
XP?
MacOSX?
Linha de comando: Amor e ódio
Quase tudo o que se pode imaginar é possível na linha de comando.
Você não depende de um programador para criar um botão para você.
Linha de comando: Amor e ódio
Exemplo: Redimensionar todas as imagens do diretório corrente.
$ convert -resize <largura>x<altura> arquivo_original arquivo_novo
$ convert -resize 120x120 imagem.jpg thumbnail_imagem.jpg
#!/bin/bash

for i in *.jpg; do
echo "Gerando thumbnail da imagem $i..."
convert -resize 120x120 $i thumbnail_$i
echo "<a href=\"$i\"> <img src=\"thumbnail_$i\"> </a>" >> index.html
done
Lets Do That
1) Abra seu terminal
2) Crie um diretório
3) Entre no diretório
4) Verifique se o programa
convert
está instalado
4.1) Se não estiver procure na internet baixe e clique em next, next, next até estar instalado (brincadeirinha!)
$ apt-get install convert
5) Crie um arquivo redimensionar.sh
6) Salve
7) Tente rodá-lo:
./redimensionar.sh
8) Dê permissão de execução:
$ chmod +x redimensionar.sh
9) Salve algumas imagens jpg no diretório, 3 imagens já está bom.
Cuidado com o Case Sensitive!
10) Rode novamente
Instalando Programas
Debian: apt-get e apt-cache (arquivos .deb)
Red Hat: yum (arquivos .rpm)
Gentoo: emerge (codigo fonte)
ArchLinux: pacman (.pkg)
BSD: port
MacOSX: MacPorts (port)
Slackware: a "mão"
Windows não tem nada parecido
$ sudo apt-get update
$ sudo apt-get install nomeprograma
$ sudo apt-cache search nomeprograma
Instalando Programas

Crie o arquivo /etc/apt/apt.conf.d/01proxy com o seguinte conteúdo:
Acquire::http::Proxy "http://192.168.0.103:3142";
1) Abra outro terminal e vire o usuário ubuntu:
$ su - ubuntu

Tudo o que utilizar "sudo" faça nesse terminal.

Em casa você não precisa fazer isso mas muita calma nessa hora!
Novamente em casa você não precisa fazer isso
Você está aqui
Sobrevivendo sem interface
Comandos que todos devem saber
man
ls
mkdir
cd
pwd
vim or nano
ps
cat
tab é seu amigo use sempre!
grep e grep -r
find
| > >> <
less or more
ssh
tail
tail -f
diff
Para shell script:
for do done
if then fi
case in
while [$opt] do
sed cut ``
Não vamos nos aprofundar nesse tema!
Lets do That
Suponha que você tenha que ler um arquivo de configuração, mas esse arquivo tem tantas linha de comentário que dificulta a sua leitura.

Como você faria para remover todas as linhas de comentário?
Lets do That
$ cat /etc/apt/sources.list | sed '/^#/ d'
$ cat /etc/apt/sources.list | sed '/^#/ d' | more
$ cat /etc/apt/sources.list | sed '/^#/ d' > sources.list
$ echo "Limpar" >> sources.list
$ echo "Limpar" > sources.list
Shell Scripts, pipelines, meta programação na linha de comando. (como o torneio de programação funciona)
Com o que já vimos podemos imaginar:

Suponha que você tenha que fazer um torneio de programação, você apresenta os problemas e os alunos tem que criar programas em C, C++, Java ou Python.



Como saber que os programas estão corretos?

Lembre-se: São 10.000 competidores e a resposta tem que sair na hora que o programa é submetido!
Uma possível solução
$ gcc solucaofoda.c -o resposta
$ ./resposta > respostaaluno.txt
$ diferenca=`diff respostaaluno.txt respostacorreta.txt `

if [ -z "$diferenca" ]
then
echo "Correto";
else
echo "Errado";
fi
Também é possível usar pipe ( | )
Configurações reveladas por detrás dos panos
O diretório /etc vs Microsoft Windows Registry
No diretório /etc haverá quase todas as configurações do sistema e de programas e serviços.
Se veio com a distribuição ou se foi instalado por seus meios oficiais estará aqui
É um assunto vasto, cada programa e sistema tem sua sintaxe e seu(s) arquivo(s) mas a maioria é padrão entre distribuições

O importante é que tudo é texto, por quê?
Legível por humanos
Menor risco de se corromper
Exemplos:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
search privatedns.com
nameserver 70.38.0.3
nameserver 70.38.0.4
Arquivos de configuração
/etc/hostname
/etc/passwd (não edite esse arquivo diretamente)
/etc/group (nem esse)
/etc/network/interfaces
/etc/apt/sources.list
Arquivos Comuns
/etc/fstab (não edite a não ser que saiba o que
está fazendo)
/etc/apache2/apache2.conf
/etc/php5/apache/php.ini
/etc/profile
/etc/bash.bashrc
O kernel, módulos e customizações
Você só precisa saber que existe!
Um módulo do kernel, é uma extensão tipicamente um driver
O kernel pode ser customizado e compilado, baixe os fontes selecione o que quer e compile
Que doido faz isso? Arduínos, celulares, computadores com hadware antigo, computadores com hadware muito novo, microcontroladores, supercomputadores com milhares de CPUs, droids, enfim todo hardware específico
$ lsmod
$ sudo apt-get install linux-source build-essentials
$ cd /usr/src/linux
$ make menuconfig
De qual serviço você precisa?
Primeiramente uma lista pequena
Apache: Servidor web mais utilizado no mundo.
Squid: Proxy de internet
Cups: Servidor de impressão
Bind: Sua internet não funciona sem ele literalmente, 10 dos 13 DNS Root rodam bind.
Breve História
O serviço X Window
Onde ficam os serviços
Embora a arquitetura varie conforme a distribuição, em sistemas debian like as configurações seguem o padrão System V.
Bem... no ubuntu utiliza-se o upstart, embora ainda seja mantida a compatibilidade.
System V: /etc/init.d links em /etc/rc?.d
Upstart: /etc/init.d scripts de inicialização no diretorio em /etc/init
Iniciando e parando serviços
System V: /etc/init.d/servico (start | stop)
Upstart: initctl (start | stop | status) servico

Porque o ubuntu utiliza o upstart?

Inicialização paralela, eventos, reinicialização de serviços, eventos podem ser disparados de qualquer outro processo, serviços de usuários.
Instalando um servidor WEB com PHP e base de dados
No windows:
Procure na internet cada programa ou instale um pacote com tudo, para arquitetura certa: 32 bits, 64 bits.
Geralmente o método de instalação é next, next, next, next, fail.
No Linux:
$ apt-get install apache2 php5 php5-mysql mysql-server
As páginas web se encontram em /var/www por comodidade altere as permissões para o usuário poder escrever nesse diretório
A melhor sacada do linux é sua licença e filosofia de compartilharmento!

O grande triunfo é ser feito por vocês!
"apt-get install freedom"
É só um cisco no meu olho!
@giovannicandido
Essa lista é muito pequena perto da infinidade de comandos, mas já é um bom começo
Windows Registry
Acho que vocês entenderam
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.103
netmask 255.255.0.0
gateway 192.168.0.254
network 192.168.0.0
Cinnamon Ubuntu
Ubuntu Unity
Fluxbox
Gnome 2
XFCE
KDE4
Seminários
(1991) Linux - Linus Torvalds
(1987) MINIX - Prof. Andrew S. Tanenbaum
(1970) Unix - Ken Thompson e
Dennis Ritchie
Use o melhor:
Linux para servidores, Mac para gráficos, Android ou IOS para mobile e Windows para jogar paciência.
Lembra da MBR?
Lá tem espaço para 4 partições chamadas partições primárias (primary partition) suficientes para todo mundo!
Oh wait!
O sistema de arquivos vem em vários sabores!
Hoje em dia na dúvida use o Ext4!
Nem só de texto vive o homem!
O que nos leva...
3 comandos básicos:
Como estamos no laboratório da PUC temos que configurar um servidor de cache de pacotes para conseguirmos instalar alguma coisa!
$ sudo nano /etc/apt/apt.conf.d/01proxy
É possível programar na linha de comando:
O famoso Shell Script!
Ideal para automatizar tarefas em servidores
Chegaram ao absurdo de portar o Quake II para modo texto!
(Aviso: pode dar dor de cabeça!)
Isso nos leva a...
Avançando um Pouco
Oh wait!
/etc/resolv.conf
/etc/network/interfaces
Se for curioso:
apache, samba, proftpd, sshd, mysql, postgresql, squid, cups, postfix, bind
$ chmod [u | g | o]+[x | w | r] nomearquivo
$ sudo chown usuario.grupo nomearquivo
Full transcript