PJI2-2019-2

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Projeto Integrador II

Professora: Juliana Camilo (juliana.camilo@ifsc.edu.br)
Encontros: 3a feira/19:00, 6a feira/19:00
Atendimento paralelo Profa. Juliana: 4a feira das 13:30hs às 14:30hs e 6a feira das 18:00hs às 19:00hs

Endereço encurtado: http://bit.ly/pji2-2020-1

PPC Curso Técnico Subsequente de Telecomunicações

Conhecimentos

Estrutura de computadores; Operação de sistema operacional Linux; Administração básica de sistema operacional Linux; Introdução a redes LAN e WLAN; Arquitetura de redes TCP/IP e a Internet; Redes de acesso ADSL; Introdução a VOIP.

Objetivos

Capacitar o estudante à: conhecer a estrutura básica de um computador; conhecer o sistema operacional Linux; operar o sistema operacional pelas interfaces gráfica e linha de comando; instalar o sistema operacional Linux em um computador ajustada às necessidades de um usuário, e sua configuração para uso da rede e acesso ADSL à Internet; instalar pacotes de software no sistema operacional; gerir o acesso a recursos mantidos pelo sistema operacional por meio de usuários e permissões; configurar o sistema operacional para usar uma rede com acesso a Internet; compreender o endereçamento de dispositivos na Internet; conhecer e instalar os equipamentos de uma rede residencial (rede local e rede sem-fios); implantar um enlace de acesso a Internet para uma rede residencial usando equipamentos apropriados; resolver problemas de conectividade em uma rede local; analisar comunicações envolvendo protocolos de enlace, rede e transporte entre computadores e/ou equipamentos em uma rede; instalar e configurar terminais VoIP, tais como telefones IP, ATA e softphones, para que possam efetuar e receber chamadas de voz; identificar problemas de comunicação em uma rede, por meio de análise de comunicações entre equipamentos e investigação sobre o comportamento dos elementos de rede.

Bibliografia

  • FOROUZAN, Behrouz A.; FEGAN, Sophia Chung. Comunicação de dados e redes de computadores. Tradução de Ariovaldo Griesi. 4. ed. São Paulo: McGraw-Hill, 2008. 1134 p., il. ISBN 9788586804885.
  • KUROSE, J. e ROSS, K. Redes de Computadores e a Internet: Uma abordagem top-down. Tradução da 3a edição, Addison Wesley, 2006.
  • COLCHER, Sérgio. VOIP: voz sobre IP. Rio de Janeiro: Elsevier, 2005.

Material de apoio

31/07/2019: Apresentação da disciplina. Sistema operacional e introdução ao Linux

Aula 1

Arquivo apresentação da disciplina

Apresentação da disciplina 2019-1

O que é GNU/Linux

Linux é o núcleo do sistema operacional, programa responsável pelo funcionamento do computador, que faz a comunicação entre hardware (impressora, monitor, mouse, teclado) e software (aplicativos em geral). O conjunto do kernel e demais programas responsáveis por interagir com este é o que denominamos sistema operacional. O kernel é o coração do sistema.

Os principais programas responsáveis por interagir com o kernel foram criados pela fundação GNU. Por este motivo é mais correto nos referenciarmos ao sistema operacional como GNU/Linux ao invés de apenas Linux.

Uma distribuição nada mais é que o conjunto de kernel, programas de sistema e aplicativos reunidos num único CD-ROM (ou qualquer outro tipo de mídia). Hoje em dia temos milhares de aplicativos para a plataforma GNU/Linux, onde cada empresa responsável por uma distro escolhe os aplicativos que nela deverão ser inclusos.

Software livre

Open Source

Como o kernel trabalha

Assim que o computador é ligado, o kernel é acionado e começa a detectar todo o hardware que ele possui e o que precisa para funcionar. Após o carregamento, o núcleo assume outras funções: gerenciar os processos, os arquivos, a memória e os dispositivos periféricos, fazendo com que ele seja o “organizador” de tudo o que acontece na máquina.

Após realizar todas essas etapas, o sistema operacional está pronto para funcionar. Ele carrega as funções responsáveis por checar o que deve ser inicializado em nível de software e processos, como, por exemplo, o conteúdo do arquivo /etc/init. Geralmente, o que é carregado é a tela de login do usuário.

Com o usuário logado e o sistema operacional trabalhando, o kernel passa a executar suas funções, como a de controlar o uso da memória pelos programas ou a de atender a chamada de uma interrupção de hardware.

É possível baixar o código-fonte e o próprio kernel do Linux a partir do site oficial. Nesse endereço não só é possível ter a última versão como também mais antigas. Além disso, lá o usuário pode obter informações, reportar bugs e participar de listas de discussão.

Kernel2.jpg

Distribuições Linux

O Linux possui vários sabores e estes são denominados distribuições. Uma distribuição nada mais é que um kernel acrescido de programas escolhidos a dedo pela equipe que a desenvolve. Cada distribuição possui suas particularidades, tais como forma de se instalar um pacote (ou software), interface de instalação do sistema operacional em si, interface gráfica, suporte a hardware. Então resta ao usuário definir que distribuição atende melhor suas necessidades.

Lista de distribuições Linux

Distlinux.jpg

Interface gráfica

Uma das coisas que os usuários mais estranham quando migram para o Linux é a existência de diversas interfaces gráficas, coisa que não é comum no Windows nem no Mac OS X, a não ser quando o fabricante decide fazer alguma alteração. Diferente do que acontece nesses outros sistema operacionais, no Linux é possível mudar a interface gráfica do sistema. Mudando a interface gráfica do sistema, a distribuição Linux continua sendo a mesma mas toda a aparência é alterada. Quem não conhece a diferença entre sistema operacional e interface gráfica pode pensar que se trata de outra distribuição ou até mesmo de outro sistema operacional. As interfaces gráficas mais conhecidas são Unity, Gnome, KDE, XFCE, LXDE, Cinnamon e Mate.

Unity

Unity.jpg

KDE

Kde.jpg

Cinnamon

Cinnamon.jpg

Mate

Mate.jpg

Estrutura de diretórios no Linux

O primeiro choque para quem está vindo do Windows é a estrutura de diretórios do Linux, que não lembra em nada o que temos no Windows. Basicamente, no Windows temos os arquivos do sistema concentrados nas pastas Windows e Arquivos de programas e você pode criar e organizar suas pastas da forma que quiser. No Linux é basicamente o contrário. O diretório raiz está tomado pelas pastas do sistema e espera-se que você armazene seus arquivos pessoais dentro da sua pasta no diretório /home.

Mas, as diferenças não param por aí. Para onde vão os programas que são instalados se não existe uma pasta central como a arquivos de programas? E para onde vão os arquivos de configuração se o Linux não possui nada semelhante ao registro do Windows?

A primeira coisa com que você precisa se habituar é que no Linux os discos e partições não aparecem necessariamente como unidades diferentes, como o C:, D:, E: do Windows. Tudo faz parte de um único diretório, chamado diretório raiz.

Dentro deste diretório temos não apenas todas as partições de disco, mas também o CD-ROM, drive de disquete e outros dispositivos.

Entendendo a estrutura de diretórios


Estrutura de diretórios

Dirlinux.jpg

O que é o Sistema Operacional

O sistema operacional funciona com a iniciação de processos que este irá precisar para funcionar corretamente. Esses processos poderão ser arquivos que necessitam de ser frequentemente atualizados, ou arquivos que processam dados úteis para o sistema. Poderemos ter acesso a vários processos do sistema operacional a partir do gerenciador de tarefas, onde se encontram todos os processos que estão em funcionamento desde a inicialização do sistema operacional até a sua utilização atual.

O sistema operacional é uma coleção de programas que:

  • Inicializa o hardware do computador
  • Fornece rotinas básicas para controle de dispositivos
  • Fornece gerência, escalonamento e interação de tarefas
  • Mantém a integridade de sistema


Qual é o papel de um Sistema Operacional

As funções do sistema operacional são inúmeras:

  • Gestão do processador: o sistema operacional se encarrega de gerenciar o subsídio do processador entre os diversos programas, graças a um algoritmo de escalonamento. O tipo de programador é totalmente dependente do sistema operacional em função do objetivo visado.
  • Gestão da memória RAM: o sistema operacional se encarrega de gerenciar o espaço de memória atribuído a cada aplicativo e, se for o caso, a cada usuário. No caso de insuficiência de memória física, o sistema operacional pode criar uma área de memória no disco rígido, chamada de memória virtual. Ela faz funcionar aplicativos que necessitam de mais memória do que a memória RAM tem disponível no sistema. Por outro lado, esta memória é muito mais lenta.
  • Gestão das entradas/saídas: o sistema operacional unifica e controla o acesso dos programas aos recursos materiais através dos drivers (também chamados de gerenciadores de periféricos ou gerenciadores de entrada/saída).
  • Gestão da execução dos aplicativos: o sistema operacional é responsável pela boa execução dos aplicativos, atribuindo-lhes os recursos necessários ao seu funcionamento. Desta maneira, ele também permite eliminar um aplicativo que não responda corretamente.
  • Gestão dos direitos: o sistema operacional é responsável pela segurança ligada à execução dos programas, garantindo que os recursos sejam utilizados apenas pelos programas e usuários que possuam direitos para tanto.
  • Gestão dos arquivos: o sistema operacional gerencia a leitura e a redação no sistema de arquivos e os direitos de acesso aos arquivos pelos usuários e aplicativos.
  • Gestão das informações: o sistema operacional fornece diversos indicadores para diagnosticar o bom funcionamento da máquina.


Quais são os componentes do sistema operacional

O sistema operacional é composto por um conjunto de softwares que permitem administrar as interações com o hardware. Neste conjunto de softwares distinguem-se os seguintes elementos: o núcleo (kernel), que representa as funções fundamentais do sistema operacional tais como gestão da memória, processos, arquivos, entradas/saídas e das funcionalidades de comunicação; o Intérprete de comandos (shell), ou seja, a camada externa, por oposição ao núcleo, que permite a comunicação com o sistema operacional por meio de uma linguagem de comandos para o usuário pilotar os periféricos ignorando muitas das características do hardware como, por exemplo, a gestão dos endereços físicos; e o sistema de arquivos (file system), que permite registrar os arquivos em arborescência.


Como funcionam os sistemas multitarefas

Um sistema operacional é multitarefas quando várias tarefas (também chamadas de processos) podem ser executadas simultaneamente.

Os aplicativos são compostos por uma sequência de instruções chamados processos rápidos (threads). Estes threads serão alternadamente ativos, no modo de espera, suspensos ou destruídos, de acordo com a prioridade que lhes é associada ou executados sequencialmente.

Um sistema é preemptivo quando possui um programador que reparte, de acordo com critérios de prioridade, o tempo da máquina nos diversos processos que fazem os pedidos.

O sistema é de tempo compartilhado quando uma cota de tempo é atribuída a cada processo pelo programador. Este é o caso principalmente dos sistemas multiusuários, que permitem que vários deles utilizem simultaneamente um mesmo computador e vários aplicativos, diferentes ou similares.

Por fim, o sistema é considerado transacional quando o sistema atribui a cada usuário uma fração de tempo.


Área de trabalho ou Desktop

É a área de exibição quando você liga o computador e faz o logon no sistema operacional. Quando você abre programas ou pastas, eles são exibidos sobre a área de trabalho, Nela também é possível colocar itens, como arquivos e pastas, e organizá-los como quiser. Ela é composta de:

  • Menu iniciar
  • Barra de tarefas
  • Área de notificação
  • Ícones, pastas e atalhos
  • Papel de parede ou plano de fundo.
Desktopwindows.jpg
Área de trabalho Windows


Desktopubuntumate.jpg
Área de trabalho Ubuntu



Explorador de arquivos Caja

O explorador de arquivos exibe a pasta pessoal do usuário, que seria o mesmo que a pasta Meus Documentos do Windows. Porém há uma diferença do Windows, dentro desta pasta é o único local que o usuário pode criar novas pastas ou arquivos.

Cajalinux.jpg

Instalando e desinstalando programas

O Linux está repleto de softwares, mas o que devemos saber é que ele possui u ma Central de programas que permite instalar diversos outros softwares, para diversas áreas.

Houve uma época em que a instalação de pacotes precisava ser feita exclusivamente por comandos no console, o que consumia tempo e exigia um certo trabalho. Era necessário, por exemplo, lidar manualmente com todas as dependências necessárias para a instalação de um software, obedecendo, inclusive, a ordem de instalação desses pacotes. Mas, felizmente, isso ficou no passado.

Hoje existe maneiras bem mais práticas e simples de se instalar e remover programas do Ubuntu. A principal delas é por meio da Central de Programas, que pode ser executada pelo Launcher localizado no lado esquerdo da tela.

Para usar a Central sem problemas é necessário ter uma conexão ativa com a Internet. Afinal, todos os programas estão armazenados em espaços virtuais remotos conhecidos como repositórios.

Centraldeprogramas.jpg


Para instalar uma aplicação, você pode começar navegando pelas categorias posicionadas na lateral esquerda da Central de Programas do Ubuntu. Ao encontrar o programa desejado, clique sobre ele e, em seguida, no botão "Instalar". Por medidas de segurança, é necessário informar a senha do seu usuário para que o software seja instalado com sucesso.

Para remover um programa instalado anteriormente, voltaremos à Central de Programas. Lá, clique no botão "Instalados" para listar todo os softwares presentes no sistema. Depois disso, o procedimento é bastante similar ao de instalação. Basta navegar pelas categorias, selecionar o programa desejado e, em seguida, clicar no botão "Remover". A senha do usuário também será solicitada para que a ação seja efetivamente realizada.


Usando a Central de Programas do Ubuntu

Existem inúmeras maneiras de instalar um software em um sistema operacional. No Ubuntu Mate, a maneira mais rápida e fácil de encontrar e instalar novos aplicativos é através da Central de programas do Ubuntu.

Para acessar, você deve ir em Sistema, Administração e Central de Programas do Ubuntu.


Centralubuntu.jpg

A Central de programas do Ubuntu pode ser usado para instalar aplicativos disponíveis nos repositórios oficiais do Ubuntu. A janela da Central de programas do Ubuntu se divide em seções:

  • Uma lista de categorias, à esquerda;
  • Um banner na parte superior;
  • Um painel "Novidades" logo abaixo do banner superior;
  • Em seguida, um painel "Recomendado para você ";
  • E finalmente, um painel de "Mais bem avaliados" na parte inferior.

Ao clicar em uma categoria você será levado a uma lista de aplicações relacionadas. Por exemplo, a categoria de Internet contém aplicativos como o navegador Firefox.

Cada áreas em destaque como "Novidades" e "Mais bem avaliados", apresenta ícones de aplicação diferentes. Basta clicar em um ícone para obter mais informações sobre a aplicação ou para instalá-lo. Para ver todos os softwares contidos na área, clique no botão "Mais" no canto superior direito de cada painel.

As três seções no topo da Cetral de programas do Ubuntu representam uma visão atual do seu catálogo de Softwares. Clique no botão "Todos aplicativos" para ver todo os aplicativos instalados, clique no botão "Instalados" para ver uma lista de aplicativos já instalados no seu computador e clique em "Histórico" para ver as instalações e exclusões anteriores organizados por data.

Pesquisando aplicativos

A Central de programas do Ubuntu exibe diferentes fontes na seção "Todos os aplicativos". Clicando na seta ao lado de "Todos os aplicativos" irá mostrar uma lista de seções individuais, selecionando "Fornecido pelo Ubuntu" irá mostrar os aplicativos livres oficiais. "Para Compra" mostrará os aplicativos disponíveis para compra, e "Parceiros da Canonical" mostrará os aplicativos de parceiros da Canonical, como a Adobe.

Se você estiver procurando por um aplicativo, você já deve saber seu nome específico (por exemplo, o VLC Media Player), ou você pode apenas ter uma categoria geral em mente (por exemplo, a categoria som som e vídeo inclui uma série de aplicações diferentes, tais como conversores de vídeo, editores de áudio e players de música).

Para ajudar você a encontrar o aplicativo certo, você pode navegar pelo catálogo da Central de programas do Ubuntu clicando na categoria do software que você procura. Ao selecionar uma categoria, será mostrado uma lista de aplicativos, algumas categorias têm subcategorias, por exemplo, a categoria de jogos tem subcategorias para simulação e jogos de cartas. Para mover através de categorias, use o botões "Voltar" e "Avançar" no topo da janela.

Como você vê uma categoria de software, você verá uma caixa de pesquisa no canto superior direito da janela. Esta caixa de pesquisa pode ser utilizada para especificar nomes ou pesquisas de palavras-chave dentro desta categoria.


Centralubuntu2.jpg


Depois de ter encontrado um aplicativo que você gostaria de experimentar, a instalação exigirá apenas um clique.

Para instalar um aplicativo:

  1. Clique no botão "Instalar" à direita do pacote selecionado, se você gostaria de ler mais sobre o pacote de software antes de instalá-lo, em primeiro lugar clique no botão "Mais Informações", logo abaixo do software selecionado. Isso vai lhe dar uma breve descrição do aplicativo, bem como uma imagem e links da web, quando disponível. Pacotes adicionais relacionados serão listados abaixo na descrição do aplicativo. Você pode clique em "Instalar" a partir desta tela também.
  2. Após clicar em "Instalar", digite sua senha na janela de autenticação, esta é a mesma senha que você usa para fazer login na sua conta. Você é obrigado a digitar sua senha sempre que instalar ou remover software, a fim de evitar que alguém sem acesso de administrador faça alterações não autorizadas ao seu computador. Se você receber uma mensagem de falha de autenticação depois de digitar sua senha, verifique se você digitou corretamente e tente novamente.
  3. Aguarde até que o Ubuntu termine a instalação, durante a instalação (ou remoção) de programas, você verá um ícone animado de rotação à direita do botão Histórico na parte superior da tela. Este ícone animado é rotulado de "Progresso". A qualquer momento, clicando no botão de "Progresso" na parte superior irá levá-lo a um resumo de todas as operações que estão sendo processadas no momento. Você também pode clicar no "X" para cancelar quaisquer operações listadas.


Uma vez que a Central de programas do Ubuntu terminou de instalar um aplicativo, ele está pronto para ser utilizado. Você pode iniciar o aplicativo recém instalado, indo para o Painel Inicial e digitar o nome do aplicativo na barra de pesquisa.


Centralubuntu3.jpg


Remover aplicativos

Remover aplicativos é muito semelhante à instalação de aplicativos. Primeiro, encontre o aplicativo instalado na Central de programas do Ubuntu, você pode clicar no Botão "Instalados" para ver todos os aplicativos instalados listados por categorias. Vá até o aplicativo que você deseja remover, se você clicar na seta ao lado ao botão "Instalados", você vai encontrar uma lista de fornecedores de aplicativos, que pode ajudá-lo a refinar a sua pesquisa. Você também pode digitar palavras-chave na busca campo para encontrar rapidamente aplicativos instalados, ou você pode pesquisar por data na Guia "Histórico".

Para remover um aplicativo:

  1. Clique no botão "Remover" na direira do aplicativo selecionado.
  2. Digite sua senha na janela de autenticação, semelhante à instalação de aplicativos a remoção de aplicativos requer sua senha para ajudar a proteger o seu computador contra alterações não autorizadas. O pacote será então colocado em fila para a remoção e aparecerá na seção progresso até que ele termine de remover.


Centralubuntu4.jpg


Histórico de aplicativos

A central de programas do Ubuntu mantém o controle dos aplicativos já instalados na seção Histórico. Isso é útil se você quiser reinstalar um aplicativo previamente removido e não se lembra o nome do aplicativo. Há quatro botões na seção: "Todas as alterações", "Instalações", "Atualizações" e "Remoções". Se você clicar na seta ao lado de um dia, uma lista de pacotes individuais serão exibidos, juntamente com o que foi feito com eles e a hora.


Centralubuntu5.jpg


Exercícios

1 - Explique o que é:

  • Kernel;
  • Sistema Operacional;
  • Interface gráfica;

2 - Qual a diferença entre os sistemas de arquivos do Windows e Linux?

3 - Mude a proteção de tela para Cosmos com tempo de espera de 10 minutos.

4 - Através da Central de programas do Ubuntu Mate, instale os seguintes programas:

  • Tux paint;
  • Gnucash;
  • SuperTux Kart.

5 - Crie um diretório dentro da pasta pessoal do aluno com o nome exercicios.












25/09/2019: Configuração de rede: subredes (continuação)

Aula 17

27/09/2019: Configuração de rede - Subredes (exercícios)

Aula 18

Exercícios

Considerando o IP 200.168.10.66/26, responda:

  1. Qual o endereço de rede?
  2. Qual o endereço de Broadcast?
  3. Qual a máscara de sub-redes?
  4. Quantos hosts há nessa rede?
  5. Qual o intervalo válido de IPs para essa rede?


Dividir a seguinte rede classe C: 229.45.32.0/255.255.255.0. São necessárias, pelo menos, 10 sub-redes. Determinar o seguinte:

  1. Quantos bits serão necessários para fazer a divisão e obter pelo menos 10 sub-redes?
  2. Quantos números IP (hosts) estarão disponíveis em cada sub-rede?
  3. Qual a nova máscara de sub-rede?
  4. Listar a faixa de endereços de cada sub-rede.


Dividir a seguinte rede classe B: 150.100.0.0/255.255.0.0. São necessárias, pelo menos, 20 sub-redes. Determinar o seguinte:

  1. Quantos bits serão necessários para fazer a divisão e obter pelo menos 20 sub-redes?
  2. Quantos números IP (hosts) estarão disponíveis em cada sub-rede?
  3. Qual a nova máscara de sub-rede?
  4. Listar a faixa de endereços de cada sub-rede.

28/09/2019: Configuração de rede - Subredes (aula extra - exercícios)

Aula 19

Reposição de aula

Exercícios extras no SIGAA. Enviar as resoluções dos exercícios ao finalizar a tarefa.

02/10/2019: Acrescentando discos ao computador

Aula 20


Curiosidades:

Particionamento do disco

Deve-se instalar o sistema operacional com particionamento manual do disco. As partições devem ser:

  • /: a partição raiz, onde fica o sistema operacional e seus arquivos de configuração e também arquivos de log e temporários.
  • /home: a partição dos usuários, onde ficam seus diretórios pessoais.
  • swap: a partição de memória virtual, cujo tamanho deve ser ao menos igual ao da memória RAM instalada (na verdade, isso é discutível ... há muitas possibilidades para o tamanho da área de swap, e ela pode inclusive não existir).
Pji1-Hd-estrutura.jpg
A estrutura física de um disco rígido
Pji1-Particoes1.jpeg
O espaço de armazenamento de um
disco dividido em partições


O particionamento acima corresponde a uma instalação típica muito simples. A principal ideia por trás dessa escolha foi possibilitar que o sistema operacional fosse reinstalado sem que se percam os arquivos de usuários (e sem necessidade fazer backup para essa finalidade). Mas há outras possibilidades para particionamento do disco, dependendo do propósito para que o sistema operacional deve ser instalado.

Partições e sistemas de arquivos


Imagine que um novo disco rígido foi instalado no seu computador. O que é necessário fazer para usá-lo ? O mesmo vale para o uso de um pendrive, ou a leitura de um DVD ou CD. Essas midias armazenam arquivos, e, desta forma, possuem um sistema de arquivos. Mas como integrá-lo ao sistema operacional ?


Primeiro de tudo, essa nova unidade de armazenamento deve ser formatada. Isso significa que deve ser preparada para que arquivos e diretórios possam ser armazenados. A formatação implica escolher um tipo de sistema de arquivos, e existem vários deles disponíveis. Essa escolha pode ser bastante técnica, dependendo do que se precisa guardar na midia. Mas, para os nossos propósitos, vamos nos restringir aos sistemas de arquivos mais populares:

Sistemas de arquivos Tipo de midia
ext4fs, ext3fs, xfs, btrfs, jfs discos rígidos
vfat, fat32 pendrives
iso9660 e variações CD, DVD


Pji-Filesystem-tree-mountpoints.png
Uma árvore de diretórios com três sistemas de arquivos nos pontos de montagem /, /home e /usr


EXT2


O sistema de arquivos ext2 é conhecido como "Second Extended FileSystem". Foi desenvolvido para ser mais "eficiente" que o sistema de arquivos "Minix", seu antecessor. 

O Minix era muito utilizado nas primeiras versões do Linux, e foi utilizado por muitos anos. 

O sistema de arquivos ext2 não possui journaling e foi substituído pelo ext3. 

Segundo, a midia formatada deve ser integrada à árvore de diretórios. Essa integração, chamada de montagem, implica ela ser associada a um subdiretório (chamado de ponto de montagem, ou mount point) na árvore de diretórios. Feito isso, a midia pode ser utilizada para guardar ou acessar novos arquivos.

EXT3



O sistema de arquivos ext3 é uma versão do ext2 com suporte a journaling. Portanto, o ext3 tem as mesmas características do ext2, mas com suporte journaling. 

Essa característica foi uma evolução e tornou o ext3 um sistema de arquivos muito estável e robusto. 

Como no ext3 só foi adicionado o suporte a journaling, podemos converter um sistema de arquivos ext2 para ext3, adicionado suporte a journaling, e também podemos converter um sistema de arquivos ext3 para ext2, removendo o suporte a journaling. 


REISERFS



O sistema de arquivos ReiserFS foi criado recentemente. Mas atualmente quase todas as distribuições Linux o suportam. 

Sua performance é muito boa, principalmente para um número muito grande de arquivos pequenos. 

ReiserFS também possui suporte a journaling. 


XFS



O sistema de arquivos XFS também possui suporte a journaling. Foi desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código fonte. O XFS é considerado um dos melhores sistemas de arquivos para banco de dados, pois é muito rápido na gravação. 

XFS utiliza muitos recursos de cache com memória RAM, e para utilizar XFS é recomendado utilizar sistemas que possuem redundância de energia. 


SWAP



SWAP é um espaço reservado para troca de dados com a memória RAM. 

Em alguns lugares ele não é mencionado como um Sistema de Arquivos. 

VFAT


O sistema de arquivos VFAT é também conhecido como FAT32 (M$ Windows). 

O sistema de arquivos VFAT não possui suporte a journaling. É utilizado normalmente para transferir dados entre sistemas M$ Windows e o Linux instalados no mesmo disco, pois pode ser lido e escrito por ambos os sistemas operacionais. 

O sistema de arquivos VFAT está longe de ser um sistema de arquivos utilizado para Sistemas Linux, exceto para compartilhamento/compatibilidade entre o M$ Windows e Linux. 

Se você utilizar VFAT no Linux, esteja certo de perder alguns atributos, tais como: permissão de execução, links simbólicos, entre outras coisas.

Ambos os sistemas de arquivos ext3 e ReiserFS são maduros o bastante para serem utilizados como padrão no Linux. Esses dois são os mais utilizados pelas distribuições Linux. 

Tipos de partições

Partições primarias


Quando vamos particionar um HD, podemos ter no máximo 4 partições primárias. Sistemas baseados em Windows só aceitam ser instalados em partições primárias, e sistemas baseados em Linux ou Mac OS aceitam dar boot em partições lógicas.


Partições estendidas


Um tipo especial de partição primária que foi desenvolvido para superar o limite de quatro partições. A partição estendida é um container no interior do qual você pode criar partições lógicas. A própria partição estendida não contém nenhum dado, nem é atribuída a ela uma letra da unidade. Mas as partições lógicas dentro da partição estendida podem conter aplicativos e dados e ter letras da unidade atribuídas a elas.

Uma parte de um disco básico que pode conter unidades lógicas. Um partição estendida é usada para ter mais de quatro volumes em um disco básico. Um disco básico pode conter até quatro partições primária ou três partições primária mais uma partição estendida, por exemplo. A partição estendida pode ainda ser dividida em até 255 unidades lógicas.


Partições lógicas


São partições criadas dentro de uma partição estendida, utilizada quando necessitamos de mais partições que as 4 primárias.


Guia rápido sobre criação de partições


O particionamento de disco APÓS a instalação do sistema operacional pode ser necessária em algum momento. O procedimento a ser visto em boa parte pode ser aplicado também ao caso da instalação de um segundo (ou terceiro ...) disco ao computador. Basicamente deve-se fazer o seguinte:

Usar um programa de particionamento para editar a tabela de partições do disco: no modo texto pode-ser usar os programas fdisk ou parted, e no modo gráfico o gparted.
fdisk /dev/sda

Formatar a nova partição, o que serve para criar um sistema de arquivos dentro da partição: isso depende do tipo de sistema de arquivos a ser criado. Para simplificar, vamos usar o tipo mais comum em sistemas Linux atualmente, que é o ext4. O programa de formatação no modo texto se chama mke2fs. No modo gráfico isso pode ser feito com o próprio gparted.

OBS: substitua /dev/sda7 pelo caminho da partição que você criou !!!

mke2fs -j /dev/sda7

Outra forma de formatar, também bastante usada é através do comando mkfs. Ele permite escolher o sistema de arquivos a ser utilizado na partição.

OBS: substitua /dev/sda7 pelo caminho da partição que você criou !!!

mkfs.<sistema_arquivo> /dev/sda7

Para saber os sistemas de arquivos suportados pelo mkfs, digite o seguinte comando:

ls /sbin/mkfs*

a saída deve ser parecida com a imagem abaixo:

Mkfssaida.jpg

Montar o novo sistema de arquivos em algum diretório, para que possa ser utilizado: isso deve ser feito no modo texto, usando-se o comando mount.

OBS: substitua /dev/sda7 pelo caminho da partição que você criou, e /mnt pelo diretório onde quer montá-la !!!

mount /dev/sda7 /mnt

Exercícios

Crie um disco adicional na máquina virtual com 20 Gb e crie as seguintes partições:


  1. Partição primária de 5 Gb do tipo Fat32
  2. Partição primária de 5 Gb do tipo Ext3
  3. Partição lógica de 4 Gb do tipo Ext3
  4. Partição lógica de 6 Gb do tipo Linux swap

Formate as partições e monte no diretório /mnt, cada uma em um diretório diferente.

Liste as partições montadas, com seus respectivos pontos de montagem, tamanhos e tipo de arquivo.

Exercício Extra (Desafio)

Um Analista de Sistemas Linux recebe uma proposta de consultoria para verificar uma possível causa de lentidão em um servidor de uma determinada empresa. Tendo em vista que esse servidor é antigo com um hardware modesto de 1 GB de RAM, processador Pentium 4 e HD de 160 GB.

Percebe-se que quando este servidor foi instalado, não foi configurado uma partição de swap e que a aplicação de gestão que roda no mesmo, tem deixado um grande gargalo na memória RAM. O cliente dispõem de um disco extra de 10GB. Configure uma partição de swap de 3GB afim de evitar uma parada total do sistema por falta de espaço na memória RAM.

Comandos que podem ser úteis:

  1. arquivo de configuração /etc/fstab
mkswap -f <dispositivo>
blkid
swapon <dispositivo>


04/10/2019: Acrescentando discos ao computador (exercícios)

Aula 21

09/10/2019: Servidor FTP

Aula 22

O que é um servidor FTP

Chama-se servidor FTP um servidor que permite, através de uma rede de computadores, um serviço de acesso para usuários a um disco rígido ou servidor de arquivos através do protocolo de transferência de arquivos: File Transfer Protocol. Seu acesso pode ser feito por qualquer usuário da rede ou reservado (com pedido de login e senha). O servidor FTP utiliza o protocolo FTP via navegador ou via cliente ftp dedicado.

A diferença de servidor FTP para FTP é que o servidor é um software produzido para promover o gerenciamento FTP e o FTP já é um protocolo de transporte adquirido através do servidor para acesso a certos dados.

Exemplos de servidores FTP para Linux/Unix/BSD são :

  • ftpd
  • glftpd
  • ProFTPd
  • Pure-FTPd
  • FTPdds


Quando você deseja copiar arquivos entre dois computadores que estão na mesma rede local, você pode simplesmente "compartilhar" uma unidade ou pasta e copiar os arquivos da mesma forma que copiaria arquivos de um lugar para outro no seu próprio PC.

E se você quiser copiar arquivos de um computador para outro que está do outro lado do mundo? Você provavelmente usaria sua conexão com a Internet. No entanto, por motivos de segurança, é muito incomum compartilhar pastas pela Internet. As transferências de arquivos pela Internet usam técnicas especiais, das quais uma das mais antigas e mais usadas é o FTP. FTP, abreviação de "File Transfer Protocol", pode transferir arquivos entre qualquer computador que tenha uma conexão com a Internet e também funciona entre computadores usando sistemas operacionais totalmente diferentes.

A transferência de arquivos de um computador cliente para um computador servidor é chamada de "upload" e a transferência de um servidor para um cliente é "download".

Ftp1.jpg


Requisitos para usar o FTP


Um cliente de FTP como o GFTP/FILEZILLA instalado no seu computador

Determinadas informações sobre o servidor FTP ao qual você deseja se conectar:

O endereço do servidor FTP. Isso se parece muito com os endereços que você digita para navegar em sites.

Exemplo: o endereço do servidor é "ftp.videodesk.net".

Às vezes, o endereço do servidor será fornecido como um endereço numérico, como "64.185.225.87".

Um nome de usuário e senha. Alguns servidores FTP permitem que você se conecte a eles anonimamente.

Para conexões anônimas, você não precisa de um nome de usuário e senha.

Para transferir arquivos, forneça seu software cliente (GFTP/FILEZILLA) com o endereço do servidor, nome de usuário e senha. Após conectar-se ao servidor FTP, você pode usar o Gerenciador de arquivos GFTP/FILEZILLA para fazer o upload, download e excluir arquivos. Usando o Gerenciador de Arquivos é muito parecido com o trabalho com o Windows Explorer.


FTP e Conexões com a Internet


O FTP usa uma conexão para comandos e a outra para enviar e receber dados. O FTP tem um número de porta padrão no qual o servidor FTP "escuta" conexões. Uma porta é um "ponto de conexão lógica" para comunicação usando o Protocolo da Internet (IP). O número de porta padrão usado pelos servidores FTP é 21 e é usado apenas para enviar comandos. Como a porta 21 é usada exclusivamente para enviar comandos, essa porta é chamada de porta de comando. Por exemplo, para obter uma lista de pastas e arquivos presentes no servidor FTP, o Cliente FTP emite um comando "LIST". O servidor FTP, em seguida, envia uma lista de todas as pastas e arquivos de volta para o cliente FTP. Então, o que acontece com a conexão de internet usada para enviar e receber dados? A porta usada para transferir dados é chamada de porta de dados. O número da porta de dados irá variar dependendo do "modo" da conexão. (Veja abaixo os modos ativo e passivo).

Modo de conexão ativa e passiva


O servidor FTP pode suportar conexões ativas ou passivas ou ambas. Em uma conexão FTP ativa, o cliente abre uma porta e escuta e o servidor se conecta ativamente a ela. Em uma conexão FTP passiva, o servidor abre uma porta e escuta (passivamente) e o cliente se conecta a ela. Você deve conceder acesso do GFTP/FILEZILLA à Internet e escolher o tipo correto de modo de conexão FTP.

A maioria dos programas cliente de FTP seleciona o modo de conexão passiva por padrão porque os administradores do servidor preferem isso como uma medida de segurança. Os firewalls geralmente bloqueiam conexões "iniciadas" de fora. Usando o modo passivo, o cliente FTP (como o GFTP/FILEZILLA) está "chegando" ao servidor para fazer a conexão. O firewall permitirá essas conexões de saída, o que significa que não são necessários ajustes especiais nas configurações do firewall.

Se você estiver se conectando ao servidor FTP usando o modo Ativo de conexão, deverá configurar seu firewall para aceitar conexões com a porta que seu cliente FTP abrirá. No entanto, muitos provedores de serviços de Internet bloqueiam conexões de entrada para todas as portas acima de 1024. Os servidores FTP ativos geralmente usam a porta 20 como porta de dados.

Ftp2.jpg


É uma boa ideia usar o modo Passivo para se conectar a um servidor FTP. A maioria dos servidores FTP suporta o modo Passivo. Para que a conexão Passive FTP seja bem-sucedida, o administrador do servidor FTP deve definir seu firewall para aceitar todas as conexões com quaisquer portas que o servidor FTP possa abrir. No entanto, esse é o problema do administrador do servidor (e prática padrão para servidores). Você pode ir em frente, fazer e usar conexões FTP.

Ftp3.jpg


Depois que o Cliente FTP consegue abrir as conexões de internet, uma para o comando e outra para os dados, ela começa a se comunicar com o servidor FTP. Agora você está pronto para transferir seus arquivos e pastas entre os dois computadores conectados com o GFTP/FILEZILLA.

Instalação

Usaremos o ProFTP como servidor, que é uma das aplicações mais usadas do mundo.


# apt-get install proftpd


Na hora da instalação você será questionado sobre qual modo de instalação do ProFTPD, selecione o modo Standalone, é o mais adequado. Depois de instalar o ProFTPD, iremos para seu arquivo de configuração, que fica em /etc/proftpd/proftpd.conf.

A primeira coisa a fazer é modificar a linha "UseIPv6", deixando-a como "off", desabilitando o uso do endereço IPv6.

A próxima linha a ser modificada é a do "ServerName", coloque o nome do seu servidor entre as aspas PJI2.

Podemos adicionar a opção "AllowForeignAddress", esta linha é a responsável por autorizar as conexões externas. Se estamos usando um FTP, lógico que a intenção não é usá-lo internamente, então, essa linha deve estar presente no arquivo:


AllowForeignAddress on


O "DefaultRoot" é o responsável por limitar o usuário à sua pasta HOME, ou seja, ele fica preso dentro do seu próprio HOME, não sendo capaz de navegar pelos diretórios no sistema, caso a opção esteja ~, senão podemos indicar um diretório específico.

Outra opção é a "RequireValidShell", deixando ela como "off", o ProFTPD irá aceitar conexões de usuários que não possuem shell válida no sistema, consequentemente, usuários sem shell não podem utilizar o SSH.

Mais uma opção é a "MaxInstances", que define a quantidade de conexões simultâneas que o servidor aceitará.

Basicamente, a configuração é essa aí. Reinicie o ProFTPD:

# /etc/init.d/proftpd restart 


Agora pode tentar logar com algum usuário válido no sistema via browser:

FTP://ip.do.servidor

Caso não tenha um interface gráfica, podemos acessar via terminal com o comando ftp ip_do_servidor

Será solicitado um usuário com permissão de acessar o servidor, e posteriormente a senha.

Os comando para utilização do ftp no terminal são:

  • get :: permite baixar os arquivos.
  • put :: permite enviar arquivos.
  • lid :: especifica o diretório local o qual deseja trabalhar.
  • cd :: utiliza-se para se mover através dos diretórios.
  • delete :: elimina um arquivo do servidor remoto.
  • oppend :: permite recompor um download que tenha sido interrompido.
  • open :: abre uma sessão no FTP.
  • close :: termina a sessão com o FTP.
  • bye :: fecha a sessão e sai do programa de forma que todas as sessões abertas se fechem.
  • ls :: mostra o conteúdo do servidor remoto.
  • mput :: sobe vários arquivos ao servidor.
  • mget :: baixa vários arquivos ao computador local.
  • user :: serve para mudar o usuário com o qual nos conectamos ao FTP.
  • bynary :: modo binário.
  • ascii :: modo de arquivos de texto.

Também podemos utilizar um cliente gráfico de FTP. Existem vários no mercado, a grande maioria gratuita. Nós vamos usar o gftp.

Para instalar basta executar o comando:

# apt-get install gftp

Após a instalação, pode abrir o programa e preencher com as informações pedidas:

  • IP do computador
  • Porta a ser usada
  • Usuário
  • Senha


Exercícios


1. Crie um servidor FTP sem acesso anônimo e com as seguintes características:


  • O diretório de acesso de todos os usuários deve ser /srv/ftp/dados
  • O grupo de acesso dos usuários do servidor FTP deve ser ftpgroup
  • Deve ser criado um usuário chamado ftp, sem acesso ao terminal, e acesso somente ao diretório /srv/ftp/dados, para o acesso ao servidor FTP
  • O usuário aluno também deve ter acesso ao servidor FTP no diretório /srv/ftp/dados.


2. No gFTP, vamos fazer um acesso anônimo ao servidor público FTP da Unicamp.

  • Crie uma pasta FTP dentro do seu diretório /home/aluno.
  • No campo máquina, coloque o seguinte endereço:
ftp ftp.unicamp.br
  • Navegue até a pasta pub/eclipse/eclipse.
  • Faça o download do arquivo default_style.c.
  • Faça o download dos arquivos terminados em html.
  • Confira se os downloads foram bem sucedidos.
  • Encerre a conexão FTP.


Leituras úteis:


Como criar um servidor FTP no Linux

Adicionando ou excluindo um usuário de um grupo

11/10/2019: Servidor FTP (exercícios)

Aula 23

16/10/2019: Processos e Servidor SSH

Aula 24


Nas aulas anteriores vimos como usuários e grupos podem ser usados para organizar e proteger o acesso a recursos mantidos pelo sistema operacional (arquivos, programas, dispositivos de entrada e saída, ...). Hoje estudaremos o que são processos, como obter informações sobre eles e como terminá-los. Além disso, veremos também como processos podem usar suas entrada e saída padrão para receber dado para processar e apresentar resultados, e também para se comunicarem.


Processos

Já vimos que sistemas operacionais modernos, como Linux, FreeBSD, Windows, e Android, são capazes de executar múltiplos programas ao mesmo tempo. No caso dos sistemas operacionais Unix, e o Linux pertence a essa família, processos são programas em execução. Um programa contém instruções e dados armazenados em um arquivo. Ao ser executado um arquivo, cria-se um processo. O sistema operacional carrega as instruções e dados em memória RAM, e faz o processador executá-las. Múltiplos processos podem ser criados a partir do mesmo arquivo de programa, sendo executados de forma independente. Os detalhes de como manter todos os processos em memória, e revezar suas execuções de forma a parecer que são simultâneos, são responsabilidade do sistema operacional.


Vários utilitários (programas auxiliares) existem para obter informações do sistema operacional sobre processos e memória. Alguns trabalham em modo texto, como:

  • ps: lista os processos existentes
  • pstree: lista os processos existentes mas de forma hierárquica
  • top: lista os processos mais ativos, junto com informações globais sobre uso dos recursos no sistema operacional (memória, processador, memória virtual, quantidade de processos, carga de trabalho)
  • atop: o mesmo que top, mas com maior detalhamento do uso de recursos mantidos pelo sistema operacional
  • mpstat: mostra estatísticas de uso do processador
  • free: mostra o uso de memória
  • vmstat: mostra o uso de memória, discos e processador no último intervalo de tempo.


Pji-procs.png
Alguns processos mostrados com o comando ps au


Existem também utilitários no modo gráfico. Por exemplo, no Ubuntu há o "Monitor do sistema". No Debian existe também esse aplicativo se o ambiente gráfico em uso for o Gnome.


Para nosso propósito, é importante saber que:

  • Cada processo possui um usuário e grupo dono, que são obtidos do usuário que o criou. Essas duas informações são usadas para fazer o controle de acesso a arquivos e diretórios, comparando-os com suas permissões.
  • Cada processo possui um número chamado de PID (Process IDentifier) que o identifica no sistema.
  • A memória RAM utilizada por um processo é deu uso exclusivo: nenhum processo consegue acessar (ler ou modificar) a memória de outro processo.
  • Processos podem ser pausados ou mesmo terminados. Há dois programas para terminar processos:
    • kill: termina um ou mais processos informados por seus PID. Uso básico:
      # Solicita ao processo com PID 1234 que termine (esse processo pode ignorar e continuar executando)
      kill 1234
      
      # Mata sumariamente o processo 1234
      kill -9 1234
      
    • killall: termina um ou mais processos informados por seus nomes, por seus usuários donos, entre outras possibilidades. Uso básico:
      # Solicita ao processo chamado firefox que termine (ele pode ignorar)
      killall firefox
      
      # Mata sumariamente o processo firefox
      killall -9 firefox
      

Atividade

  1. Experimente matar alguns processos, seja pelo PID ou pelos seus nomes, e ver o que acontece ... Lembre que para isso se usam os programas kill ou killall.
  2. (RaspberryPI) Copie este programa para seu computador. Em seguida execute-o:
    ./teimoso
    
    ... e tente matá-lo.
    • (PC ou Virtualbox) Copie este programa para seu computador. Em seguida compile-o:
      gcc -o teimoso teimoso.c
      
      ... e então execute-o:
      ./teimoso
      
      Tente em seguida matá-lo !


Servidor SSH

SSH: significa Secure Shell

Trata-se de um conjunto de padrões que permite estabelecer um canal seguro entre duas máquinas.

É considerado seguro, pois utiliza chave criptográfica pública para identificar um computador remoto.

Ou seja, além da criptografia de envio de dados padrão, há também o sistema de criptografia pública e privada para identificar um computador na rede.


Instalando e configurando o SSH


Para instalarmos o SSH no Ubuntu é muito simples. Basta, estando no shell como root, digitarmos:


# apt-get install openssh-server 


E esperar que ele realize o download e instalação automática. O SSH, após instalado, gera alguns arquivos de configuração e o principal deles é o /etc/ssh/sshd_config - arquivo de configuração do servidor SSH.

Primeiro passo: vamos começar editando o principal arquivo de configuração, o sshd_config encontrado em: /etc/ssh/sshd_config. Para tal, estando no shell como root, digite:


# vim sshd_config 


E realize as seguintes alterações dentro do arquivo:

Em port coloque o padrão 22 ou uma de sua escolha. Esse campo diz ao SSH que ele estará escutando as requisições vindas de outros computadores por esta porta ficando assim:

port 22

Na linha #AllowUsers, que pode existir ou não (se não existir crie-a), você pode deixá-la comentada para que todos os usuários possam acessar o servidor ou retirar o comentário ("#") e especificar um usuário. A linha pode ficar assim, caso deseje especificar um usuário único em poder de acesso ao servidor remotamente:


# AllowUsers usuario_ssh


Na linha "#PermitRootLogin yes" (caso não exista, crie-a) você pode remover o comentário se desejar que o root possa se logar remotamente, caso não deseje remova o comentário ("#") e troque o yes por no.

Obs. 1: Se você deseja que o root se conecte, não coloque a linha AllowUsers.

Obs. 2: Se você deseja que o seu usuário comum conecte-se e não o root, você deverá coloca as duas linhas, então só seu usuário irá conectar, mas ele não poderá virar root.

Feito essas configurações, salve o arquivo.

Segundo passo: agora precisamos parar e iniciar o serviço fazendo com que nossas configurações entrem em vigor. Para isso, ainda estando como root, digite:


# /etc/init.d/ssh stop 


# /etc/init.d/ssh start 


Agora nós já temos o servidor SSH em pleno funcionamento pronto para as requisições de administração remota.


Utilizando o scp (cópia remota segura de arquivos em servidores SSH)

O comando scp permite a cópia de arquivos entre duas máquinas utilizando­se os recursos de criptografia do SSH e pode ser uma alternativa ao uso do FTP. Sua forma básica é:

# scp arquivo­origem arquivo­destino

A origem e o destino podem se localizar na máquina cliente ou na máquina servidor, sendo necessário fornecer senha de login para a operação ser realizada. Por exemplo, para copiar um arquivo da máquina local para o servidor você poderá usar o scp assim:

# scp arquivo usuario@servidor:
# scp usuario@servidor:/caminho/arquivo .      (Copia do servidor para a máquina local).


Caso queira copiar diretórios, deve-se colocar o parâmetro -r;

# scp -r diretório usuario@servidor:

Exercícios


1. Conecte-se via ssh a máquina de algum colega.

2. Com o auxílio do scp, faça a cópia de um arquivo qualquer da máquina servidora (máquina do colega) para a sua máquina e que esta cópia fique no diretório /home/aluno/arquivos_transferidos.

3. Copie agora um diretório da máquina servidora para a sua máquina, e este também deverá estar em /home/aluno/arquivos_transferidos.

4. Instale o programa PuTTy SSH Client e acesse a máquina do colega através dele.


18/10/2019: Processos e Servidor SSH (exercícios)

Aula 25


25/10/2019: Correção da Avaliação 2. Utilizando o Raspberry Pi

Aula 27

Uso de RaspberryPi como computador

RaspberryPi é um projeto com o propósito de disponibilizar computadores de baixo custo e alto desempenho para que pessoas possam aprender, resolver problemas e se divertirem. O computador RaspberryPi, chamado daqui em diante de Rpi, tem tamanho de um cartão de crédito, bastando teclado e mouse USB, monitor com entrada HDMI e fonte de alimentação para ser utilizado. Ele possui 1 GB RAM e processador ARM de quatro núcleos com clock de 1.2 GHz. Para acesso à rede ele possui interfaces de rede ethernet e Wifi, além de Bluetooth.


PJI2-Raspberry-Pi-3.jpg
Raspbere utilizando Raspberry PiryPi 3


O Rpi pode executar vários sistemas operacionais, porém o foco está no Linux. A distribuição oficial mantida pelo projeto se chama Raspbian, sendo baseada em Debian. Outras distribuições Linux, como Ubuntu MATE, e mesmo o sistema operacional Windows 10, podem ser vistas no sítio de downloads:


Devido à maior simplicidade na montagem e uso, além do menor custo, serão usados computadores Rpi para as etapas seguintes da disciplina de Projeto 2. Porém isso implica obter o Rpi, instalar o sistema operacional e, por fim, experimentá-lo com monitor, mouse e teclado. Usaremos o sistema operacional Ubuntu MATE.

Instalação do sistema operacional no Rpi

A instalação do sistema operacional segue praticamente o mesmo procedimento da aula anterior. Porém desta vez será necessário gravar a imagem do sistema operacional em um cartão de memória microSD, que funcionará como o disco rígido do Rpi.

De acordo com as instruções contidas no site do Rpi, a instalação deve ser feita assim:

  1. Insira o cartão microSD no adaptador USB
  2. Conecte o adaptador USB ao computador
  3. Configure sua máquina virtual para usar esse dispositivo USB (USB Mass Storage)
  4. Inicie sua máquina virtual. Os comandos a seguir devem ser feitos nessa máquina virtual.
  5. Na área de trabalho devem aparecer dois discos USB: ejete-os clicando sobre cada um deles co o botão direito do mouse e selecionando Ejetar
  6. Obter a imagem do sistema operacional (link alternativo 1) (Link alternativo 2).
  7. Descompactar a imagem (note que ela possui a extensão .xz ... na dúvida, ver a aula sobre compactadores)
  8. Abra um terminal e nele execute:
    sudo dd if=ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img of=/dev/sda bs=65536
    
  9. Ao final, encerre a máquina virtual. Seu cartão microSD está preparado.

Exercício


Monte 4 equipes e utilize o Raspberry Pi para efetuar as seguintes configurações:

  • Instalar o Ubuntu Mate;
  • Definir o nome do computador como PJI2-Grupo(numero), substituindo o (numero) pelo número do seu grupo;
  • Configurar o IP manualmente de acordo com as informações fornecidas na aula;
  • Criar o usuário principal com o nome de PJI2 e senha pji2;
  • Criar os seguintes grupos: academicos e docentes;
  • Crie em /home dois diretórios: academicos e docentes;
  • Criar os seguintes usuários: alunos, professores e monitores. O usuário alunos deverá ter o seu diretório padrão em /home/academicos e os usuários professores e monitores devem ter seu diretório padrão em /home/docentes;
  • Dê as permissões de leitura e gravação para os usuários de cada grupo e nenhuma permissão para os demais usuários destes diretórios;
  • Configure um servidor FTP com as seguintes definições:
    • O diretório de acesso de todos os usuários deve ser /srv/ftp/media
    • O grupo de acesso dos usuários do servidor FTP deve ser ftpgroup
    • Deve ser criado um usuário chamado userftp, sem acesso ao terminal, e acesso somente ao diretório /srv/ftp/media, para o acesso ao servidor FTP
    • Os usuários professores e monitores também devem ter acesso ao servidor FTP no diretório /srv/ftp/media.
  • Configure também um servidor SSH onde o root não pode ter acesso.
  • Use o comando scp para copiar arquivos de outros Raspberrys da rede.


Leituras úteis:


29/10/2019: Utilizando o Raspberry Pi (continuação)

Aula 28


30/10/2019: Utilizando o Raspberry Pi (exercícios)

Aula 29


01/11/2019: Rotas

Aula 30

Como visto anteriormente, cada dispositivo em uma rede precisa ter um endereço IP para que possa se comunicar com outros dispositivos. Porém isso não é suficiente: os dispositivos devem saber que direção devem enviar mensagens para que cheguem até cada outro dispositivo. Se o dispositivo de destino estiver na mesma rede, então basta transmitir o pacote a ele diretamente. Mas e se ele estiver em outra rede ? Por exemplo, e se um computador no laboratório de Redes 1 quiser se comunicar com outro que está na reitoria do IFSC ? Como esse pacote deve ser transmitido nesse caso?


Pji-projeto2-rotas.png


Antes de prosseguir na investigação desse assunto, é necessário uma visão geral sobre redes de computadores e a Internet. Isso deve ajudar a entender como as comunicações acontecem nessa grande rede.


No diagrama que mostra simplificadamente a rede do projeto 2, a rede externa é representada como uma nuvem. Isso significa que sua estrutura interna é desconhecida, ou não é relevante mostrá-la. No caso da Internet, na verdade seria impossível apresentar toda sua estrutura, pois essa rede hoje em dia é gigantesca, além de estar sempre em mutação. Mas ao menos um esboço da rede do Ifsc pode ser apresentado, como se pode ver a seguir. Ao visualizá-la, deve-se novamente imaginar como é possível encaminhar pacotes através dela, de forma que cheguem a seus destinos.


Ifsc.png
Uma visão geral da rede do Ifsc (e bem simplificada !)


Em primeiro lugar, deve-se imaginar como a Internet está implantada (ao menos do ponto de vista das subredes). A palavra internet significa rede composta por redes, e, no caso da Internet, cada uma das redes que a constitui é chamada de subrede. Se alguém pudesse ver o mapa da Internet, pareceria uma grande malha, com milhares de fios (enlaces) se entrelaçando. Nas junções desses fios estão equipamentos que roteiam (direcionam) pacotes a seus destinos. Os equipamentos finais, que são usados por pessoas para rodas os aplicativos de rede, estão na borda de toda essa malha ... nas pontas dos fios. No fim, isso parece um grande mapa, e como tal ele pode ser percorrido por um ou mais caminhos para se ir de um ponto a outro.


Um mapa da Internet (bem abstrato ...) Rede Ipê: a Rede Nacional de Pesquisa que originou a Internet no Brasil
Internet-map.png Rede-ipe-2014.jpg


Essa analogia do mapa pode ser experimentada usando o Google Maps. Experimente traçar caminhos entre o IFSC-SJ e vários destinos (mesmo em outras cidades), e visualize como ele descobre o caminho. Observe também que critério é usado para escolher o caminho ... pois é normal que exista mais de uma opção.

Mas o que isso tem a ver com redes ? Muita coisa: a forma com que o Google Maps descobre caminhos se baseia nos mesmos conceitos usados para descobrir rotas entre dispositivos na Internet. E voltando a redes de computadores, também é possível descobrir que caminho os pacotes percorrem para ir de um ponto a outro na Internet.

Experimento:: use o programa traceroute para descobrir os caminhos percorridos por seus pacotes. Teste-o com vários possíveis destinos:

  • www.ufsc.br
  • www.unicamp.br
  • www.brasil.gov.br
  • www.nasa.gov
  • english.pravda.ru
  • www.china.org.cn
  • finland.fi

O que significam as informações mostradas por esse programa ?


Estes outros aplicativos descobrem rotas e as mostram sobre um mapa mundial.

Rotas no Linux

Cada computador ligado a Internet possui uma tabela de rotas. É por meio de tal tabela que ele sabe como transmitir os pacotes para cada destino. Em seu computador, você pode visualizar essa tabela da seguinte forma:

# Isto funciona em qualquer *nix que se preze ...
netstat -rn


Ao se configurar uma interface de rede, cria-se uma rota automática para a subrede diretamente acessível via aquela interface. Isto se chama roteamento mínimo. Por exemplo, se uma interface de rede foi configurada com o endereço IP 192.168.10.1/16, sua tabela de rotas pode se apresentar assim:

aluno@M1:~> ifconfig eth1 192.168.10.1 netmask 255.255.0.0
aluno@M1::~> netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo


Usualmente, é suficiente definir uma única rota adicional para um computador, chamada de rota default (ou rota padrão). Essa rota tem o seguinte significado: se o destino não estiver em minha própria subrede, e nenhuma outra rota específica existir para a subrede onde se encontra, então repasse o pacote para o roteador indicado. Em um computador Linux isso pode ser feito assim:

# adiciona a rota default, que passa pelo roteador 192.168.10.100
route add default gw 192.168.10.100


Outra forma de adicionar essa rota é:

# este comando tem o mesmo efeito que o anterior ...
route add -net 0.0.0.0/0 gw 192.168.10.100


Por fim, uma rota para um destino qualquer pode ser feita assim (supondo que a rede de destino seja 191.36.9.0/24):

# este comando define que para chegar à rede 191.36.9.0/24 
# deve-se usar o gateway 192.168.1.1
route add -net 191.36.9.0/24 gw 192.168.1.1


Isso não parece complicado, e à primeira vista realmente não é :-) Ao se instalar um novo equipamento em uma rede, seja um computador, tablet, ponto de acesso ou smart TV, basta configurá-lo com a rota default para que possa se comunicar com a Internet. Na verdade, nem isso normalmente é necessário, pois esses equipamentos são capazes de se autoconfigurarem como mágica (mais tarde veremos como !). Porém existe uma matemática interessante por trás de como essas rotas funcionam, e vale dar uma olhada.

Rotas, prefixos de rede e máscaras

Uma rota serve para informar como se chega a um determinado destino. Um destino pode ser um único endereço IP, ou uma subrede (que contém um conjunto de endereços IP). Para que um pacote IP chegue a um destino, deve-se transmiti-lo para o próximo roteador em direção a esse destino. Esse próximo roteador também deve conhecer uma rota para tal destino, repetindo o mesmo processo (reveja o experimento com 'traceroute). Ao menos duas informações compõem cada rota:

  • O próximo roteador, expressado por um endereço IP: o endereço IP do próximo roteador (também chamado de gateway, que significa portal em inglês), o qual deve pertencer à mesma subrede do equipamento que o especifica em uma rota.
  • O destino, que é expressado como uma subrede: Uma subrede é representada por um prefixo de rede e uma máscara. O prefixo são os N bits mais significativos comuns a todos os endereços IP contidos em uma subrede (lembre que um endereço IP tem 32 bits). A máscara informa quantos bits tem o prefixo. A combinação de prefixo de rede e máscara funciona da seguinte forma:

Imagine que exista uma subrede contendo os endereços de 192.168.2.0 até 192.168.2.255. Se representarmos esses endereços em binário, podemos ver que os 24 bits mais significativos são os mesmos para todos os endereços:


Pji-prefixo1.png


A máscara de rede tem a forma de um endereço IP, porém com bits 1 na parte correspondente ao prefixo, e 0 no resto. Assim, para o exemplo acima a máscara de rede é 255.255.255.0. Outra forma de representar a máscara é simplesmente informar o tamanho em bits do prefixo, e no exemplo a máscara seria 24. Juntando o prefixo e a máscara, a subrede pode ser representada de uma destas duas formas:

  • 192.168.2.0/255.255.255.0
  • 192.168.2.0/24


Agora imagine que o prefixo tenha 28 bits, como mostrado nesta figura:


Pji-prefixo2.png


Por ter um prefixo mais longo, o tamanho dessa subrede é menor. Isso significa que ela contém menos endereços IP, tanto que o primeiro endereço é 192.168.2.0 e o último é 192.168.2.15. Essa subrede poderia ser representada por:

  • 192.168.2.0/255.255.255.240
  • 192.168.2.0/28


Aproveitando esse exemplo, pode-se mostrar uma outra subrede que, apesar de não parecer, é diferente da anterior:


Pji-prefixo3.png


Essa outra subrede contém endereços entre 192.168.2.16 e 192.168.2.31. Essa subrede poderia ser representada por:

  • 192.168.2.16/255.255.255.240
  • 192.168.2.16/28

O que todo host deve possuir

Com o que se fez até o momento, pode-se concluir que todo host (computador, tablet, smartphone, ..., qualquer dispositivo que rode aplicações da Internet) precisa de:

  • Endereço IP e máscara de rede: um host precisa de um endereço para que possa se comunicar com outros hosts. A máscara de rede informa o tamanho da subrede IP em que ele se encontra.
  • Rota default (padrão): para se comunicar com hosts de outras subredes, é preciso enviar os pacotes para um roteador que saiba encaminhá-los a seus destinos. O roteador default (ou padrão) é um roteador para quem se destinam todos esses pacotes. Tecnicamente ele corresponde à rota para o destino 0.0.0.0/0.
  • Endereço IP do servidor DNS: usuários costumam endereçar hosts e servidores por seus nomes de domínio, e não por seus endereços IP. Isso é muito mais fácil de memorizar do que os endereços numéricos. Como explicado em aula, nomes de domínio são análogos a nomes de assinantes em um catálogo telefônico. No entanto, as aplicações precisam dos endereços IP para se comunicarem. O servidor DNS faz a tradução de nome de domínio para endereço IP, e é usado pelas aplicações transparentemente (isso é, você não percebe que isso ocorre). O endereço desse servidor deve ser configurado em cada host, para que se possam traduzir nomes de domínio.

Exercícios

  1. Para os cenários a seguir, especifique o passo a passo para que todos os PCs se comuniquem entre si.
PJI2-rotas-Rede1.jpg
Rede 1
PJI2-rotas-Rede2.jpg
Rede 2
PJI2-rotas-Rede3.jpg
Rede 3
PJI2-rotas-Rede4.jpg
Rede 4

OBS: Os experimentos de Rotas serão feito na ferramenta Netkit2 na máquina real, e os arquivos para os experimentos estão disponíveis em www.docente.ifsc.edu.br/juliana.camilo/PJI2

06/11/2019: Rotas (continuação). Recuperação Av2

Aula 31

08/11/2019: Definição e Início do Projeto Final

Aula 32

IMPORTANTE


08/11/2019 - Início do desenvolvimento do projeto final.

11/12/2019 - Última data para apresentação do projeto final.

13/12/2019 - Recuperação Final.


Todas as configurações/orientações abaixo deverão ser efetuadas no computador de cada integrante do grupo.


1. Instalação de uma nova máquina virtual - Efetuar a instalação do ubuntu Mate 18.04 na máquina virtual Gráfico 2. O nome do computador deve ser pji2-avaliacao-nome_aluno (substitua o nome_aluno pelo seu primeiro nome).

2. Após instalar o sistema operacional, instale o adicional de convidados do VirtualBox e todas as dependências necessárias.

3. Configure o IP fixo em sua placa de rede (as informações serão fornecidas pelos professores) mas deixe-as comentadas para não dar conflito com a rede do laboratório. Essa atividade não poderá ser testada, será só uma simulação de como seria em uma máquina real.

4. Crie 5 usuários usando o comando adduser.

5. Defina a senha de cada um dos usuários.

6. Crie o grupo Projeto.

7. Adicione os usuários criados a este grupo.

8. Acrescente, por comandos, ao perfil do usuário seu nome completo e endereço.

9. Adicione o repositório do Google Chrome e do Libreoffice 6 e instale este aplicativos.

10. Instale o editor de texto VIM, Zoiper, K3B e VLCMediaPlayer.

11. Crie 2 partições primárias, 1 estendida e 3 lógicas no disco virtual adicional (disco que não foi utilizado para a instalação do sistema operacional) no VirtualBox. Formate as partições com diferentes sistemas de arquivo. Monte cada uma delas em um diretório diferente.

12. Crie um servidor FTP sem acesso anônimo e com as seguintes características:

1. O diretório de acesso de todos os usuários deve ser /srv/ftp/projeto
2. O grupo de acesso dos usuários do servidor FTP deve ser ftpprojeto
3. Deve ser criado um usuário chamado ftp, sem acesso ao terminal, e acesso somente ao diretório /srv/ftp/projeto, para o acesso ao servidor FTP
4. Os usuários criados também deverão ter acesso ao servidor FTP no diretório /srv/ftp/projeto.

13. Instale um servidor SSH e faça com que o usuário root não tenha acesso via SSH. Também mude a porta padrão para 2222.

14. Faça a configuração das rotas estáticas para a rede no arquivo rede.conf disponível em: http://docente.ifsc.edu.br/juliana.camilo/PJI2/Projeto_final/ de modo que todos os Pcs consigam se comunicar. OBS: As subredes disponíveis para endereçamento são 10.0.1.0/24, 172.20.20.16/30, 192.168.12.0/24, 10.10.0.0/29, 192.168.18.0/24, 172.30.30.0/30 e 10.20.0.0/24. Como as configurações do Netkit são apagadas cada vez que iniciamos o software, apresentem essa atividade para as professoras assim que conseguirem finalizá-la.

As configurações/orientações 15 e 16 abaixo deverão ser efetuadas pela dupla.

15. Instalação do sistema operacional no Raspberry Pi3 - Efetuar a instalação do ubuntu Mate. O nome do computador deve ser Projeto(nº do seu grupo). Deve existir um usuário pji2 com a senha pji22019, também crie os mesmos usuários que foram criados na máquina virtual. Repita as etapas de 3 a 13 (sendo que o Zoiper não precisa ser instalado), e não faça o item 11.

16. Efetue o backup utilizando a ferramenta TAR com a extensão tar.gz dos seguintes diretórios (No Virtual Box):

1. /srv/ftp
2. /home

Cálculo nota final do projeto:

NPF--> Nota do projeto final NI--> Nota Individual NG--> Nota do Grupo

NPF = NI x 0.7 + NG x 0.3

onde NG = (NI_integrante1 + NI_integrante2)/2.