PROGRAMAO DE MICROPROCESSADORES
2015 / 2016
Trabalho n 1
Introduo ao Linux Kit de Sobrevivncia
Verso: 3.0
http://tele1.dee.fct.unl.pt/pm
ndice
1
2
3
4
5
6
Objectivos..............................................................................................................................3
Introduo..............................................................................................................................3
Antes do incio: Alguns conceitos teis ................................................................................4
O ambiente de trabalho (desktop) Ubuntu.............................................................................4
Gesto de Programas .............................................................................................................5
Tpicos avanados ..............................................................................................................11
6.1
O terminal .....................................................................................................................11
6.2
O sistema de ficheiros...................................................................................................12
6.2.1
Montar e desmontar dispositivos removveis ........................................................14
6.3
Segurana......................................................................................................................15
6.3.1
Conceitos Bsicos de Segurana ...........................................................................15
6.3.2
Permisses .............................................................................................................15
6.3.3
Utilizadores e grupos .............................................................................................15
6.3.4
Firewall..................................................................................................................16
7
Comandos e Conceitos Bsicos...........................................................................................16
7.1
Pginas de Manual ........................................................................................................18
7.2
Comandos sobre Diretorias ..........................................................................................18
7.3
Comandos sobre Ficheiros............................................................................................20
7.4
Outros comandos ..........................................................................................................25
8
O meu primeiro programa em C .........................................................................................25
8.1
Uso da Memory Stick ....................................................................................................25
8.2
O programa para saudar o Mundo ................................................................................25
Cada vez que este documento tiver uma modificao, a identificao da verso muda. O
critrio de mudana o seguinte:
Verso x.y
Em que
x
1 Objectivos
O objectivo deste trabalho explicar o Linux, e o uso do sistema Xubuntu, em poucas
palavras.
A estrutura do documento a seguinte: Comea com uns conceitos teis seguidos da
descrio do ambiente de trabalho e da gesto de programas. Segue-se depois para tpicos
avanados apresentando-se o terminal, o sistema de ficheiros e alguns aspetos de segurana.
A segunda parte do documento contm uma sequncia de explicaes de comandos de
linha de uso prtico no Linux. Esta segunda parte foi escrita para ser realizada na primeira aula
de Laboratrio da disciplina de Programao de Microprocessadores.
Muita da informao constante neste documento foi retirada da seguinte referncia:
https://ubuntu-manual.org/
Este documento vai ter evolues ao longo do tempo consoante a disponibilidade de tempo
dos seus autores. No ser necessariamente no incio dos semestres. Assim, existe um
identificador da verso na pgina inicial.
A verso 2.0 deste documento (que pode obter no site da disciplina em anos anteriores)
contm uma descrio da verso da poca do Ubuntu.
2 Introduo
O sistema operativo Linux comea a ter uma grande popularidade fruto de diversas razes.
Entre elas est o facto de no existirem direitos de propriedade, ser muito menos atacvel por
vrus e ter o seu cdigo aberto. S estas trs razes j so suficientes para um futuro engenheiro
considerar francamente o seu uso.
A utilizao direta do Linux por alunos do 1 ano pode ser um pouco traumatizante, pois
um computador menos comum pode ter perifricos menos comuns e exigir um esforo muito
considervel na instalao de device drivers. Por exemplo, problemas destes podem ser
comuns: a minha placa grfica ainda no tem o device driver no software que descarreguei.
Como devo proceder? Assim, uma boa alternativa usar mquinas virtuais.
O uso de mquinas virtuais faz com que o sistema Linux fique completamente instalado
de um modo muito fcil pois todos os device drivers so do sistema anfitrio. No
entanto, as mquinas virtuais exigem computadores relativamente potentes.
O sistema operativo Linux tem duas grandes famlias de distribuio: Debian e Red Hat.
Dentro de cada famlia existem depois distribuies. Na Debian existem as distribuies
Ubuntu, Mint, Xandros e CrunchBang. Na famlia Red Hat existem as distribuies Fedora e
Mandriva.
A grande diferena entre estas duas famlias o sistema que usam para instalar e atualizar
programas (software). Estes sistemas so chamados de Package Management Systems, e so o
modo como se pode instalar, apagar e organizar o software instalado nos computadores. A
famlia Debian usa ficheiros deb, enquanto que o Red Hat usa ficheiros rpm. Estes dois
sistemas so incompatveis.
O Ubuntu tem uma interface grfica (o chamado desktop) baseada em unity7.
Anteriormente usava o gnome. O desktop um conjunto de elementos de software (cones,
cores, janelas, temas, menus, etc.) que determinam como interagimos com o computador.
Existem variaes do Ubuntu em que se modificaram o desktop por razes de preferncia ou
por razes de ligeireza para ter sistemas operativos menos exigentes em termos de hardware.
No caso de Programao de Microprocessadores vai-se usar o Xubuntu que usa o ambiente
grfico xfce.
O ambiente de trabalho
Xubuntu baseado no ambiente
grfico xfce. Est mostrado ao
lado e pode-se ver uma barra
horizontal, menu bar, e alguns
itens para identificao rpida.
A parte da esquerda tem um boto que serve para lanar programas que estejam instalados
no computador. A carreg-lo aparece a janela que se encontra mostrada em baixo. Serve
tambm para terminar a sesso, desligar o computador e outras tarefas do gnero.
Esta janela bastante intuitiva no exigindo grande explicaes. Pode carregar no boto
direito do rato sobre um cone para o criar no ambiente de trabalho e ser mais fcil lan-lo no
futuro. O programa que serve para gerir os programas (instalar, apagar, etc) o Ubuntu
Software Center.
5 Gesto de Programas
Como se referiu na Introduo, o Ubuntu (e outras variaes de Linux) usam um conjunto
de ferramentas para gerir os programas, chamado de package management system, ou package
manager. Um sistema de gesto de pacotes tem uma base de dados de programas chamado de
repository, onde os programas individuais esto organizados em conjuntos designados de
packages (contm o software e muita outra informao como o nome, a verso, a descrio,
nome do vendedor, e uma lista de dependncias para a instalao).
O package management system do Ubuntu o Advanced Packaging Tool (APT).
Para se instalar novos programas existem dois modos de pesquisar repositrios:
Ubuntu Software Center
Comando de linha apt get
Aconselha-se o primeiro.
A seco anterior mostra como se comea o programa. A janela tem quatro seces:
1. uma lista de categorias esquerda,
2. um banner em cima;
3. um painel Whats new por baixo do banner com recomendaes de aplicaes
4. um painel de Top Rated.
Ao clicar numa categoria somos levados para uma lista de aplicaes relacionadas. Por
exemplo, a categoria Internet tem a aplicao de navegao na web Firefox.
5
As reas Whats
New e Top Rated
mostram
diferentes
cones de aplicaes.
Ao clicar neles
mostrada
mais
informao sobre a
aplicao ou a sua
instalao. Para ver
todo o software contido
na rea clique no boto
More
no
canto
superior direito do
painel. As trs seces
no topo representam a
sua vista atual do
catlogo do centro.
Clique
no
All
Software para ver
todo o software que
pode ser instalvel; ou clique no boto Installed para ver a lista do software que j est
instalado no seu computador; ou clique em History para ver as instalaes anteriores, e as
que foram apagadas (organizadas por datas).
10
6 Tpicos avanados
6.1 O TERMINAL
O terminal permite fazer tarefas sem usar a parte grfica. Tem um papel equivalente
interface grfica e possui uma interface de comando de linha command-line interface (CLI).
Para se abrir um terminal use a aplicao Terminal Emulator do lanador de aplicaes.
Existe um programa que l o que se escreve no terminal e interpreta o que se escreveu. O nome
desse programa shell. Existem vrias shells diferentes (cada uma com comandos ligeiramente
11
diferentes). A mais popular chama-se bash (basic shell). Quando se abre um terminal aparece
um texto, chamado de prompt, seguido de um bloco a piscar chamado de cursor. O texto do
prompt pode ser parametrizado mas geralmente contm o nome do utilizador, o nome do
computador, e o nome da diretoria onde se est. No caso de se estar na diretoria base do
utilizador (a home, ver em baixo) aparece um til (~).
Escreva o comando pwd (print working directory).
Vai aparecer a diretoria corrente /home/yourusername (/home/student).
Alguns comandos necessitam de mais informao. Esta informao suplementar chama-se
parmetros e um deles, muito til, pedir mais informao sobre o comando help ou help. Quase todos os comandos devolvem algum texto, mas existem alguns que no devolvem
nada e apenas aparece novamente o prompt. Um exemplo de um comando que no devolve
texto o cd.
Nome
Primeiro floppy
Segundo floppy
Primeiro disco (disco todo)
Primeiro disco, partio 1
Primeiro disco, partio 2
Primeiro disco, partio 3
/dev/fd0
/dev/fd1
/dev/hda
/dev/hda1
/dev/hda2
/dev/hda3
/dev/hdb
12
Windows
A:
B:
C:
D:
E:
/dev/hdb1
/dev/hdb2
/dev/hdb3
/dev/sda
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sdb
/dev/sdb1
/dev/sdb2
/dev/sdb3
/dev/scd0
/dev/scd1
ser
nmeros
/dev/sg1
O Ubuntu usa o sistema de ficheiros Linux que baseado numa srie de diretorias a partir
da diretoria raiz (root). Estas diretorias contm ficheiros de sistema que no devem ser
alterados a no ser pelo superutilizador (root), ou pelo uso do comando sudo. Esta condio
existe para nossa segurana. Por exemplo, vrus no podero modificar ficheiros importantes, e
um utilizador normal no consegue tambm modifica-los.
O sistema de ficheiros comea na diretoria raiz (/). Ela contm outras diretorias e ficheiros
de sistema. Existem as seguintes diretorias importantes:
13
/bin e /sbin
/etc
/home
/lib
/media
/root
/usr
/var/log
Cada diretoria tem um caminho (chamado de path). O path o nome completo da diretoria
descreve o modo como se navega para a diretoria de qualquer posio no sistema. Por
exemplo, /home/pm/Desktop contm todos os ficheiros que esto no Desktop do Ubuntu. Podese olhar para este path e dividi-lo em vrias partes:
/
home/
pm/
Desktop/
Cada diretoria do Ubuntu tem um path complete que comea com / e acaba com o nome da
prpria diretoria.
Ficheiros e diretorias que comeam com um ponto (.) esto escondidas. Estas diretorias e
ficheiros s so visveis com um comando especial, ou selecionando-se uma opo especfica.
No gestor de ficheiros Files pode-se ver os ficheiros ocultos selecionando-se a opo no boto
View Options que est colocado na parte superior direita da janela (seleciona-se a Show
Hidden Files). Se estiver a usar um terminal faz-se o comando ls a para ver todos os ficheiros
e diretorias. Existem muitos ficheiros ocultos na diretoria home que so usados para guardar
preferncias de programas. Por exemplo, /home/pm/.thunderbird guarda as preferncias usadas
pela aplicao de correio thunderbird.
14
desligar o dispositivo, ou remov-lo, antes de o desmontar, pode perder dados que ainda no
forma realmente escritos nele.
6.3 SEGURANA
6.3.1 Conceitos Bsicos de Segurana
As seces seguintes descrevem conceitos bsicos de segurana, como permisses de
ficheiros, passwords (palavras chave), e contas de utilizadores.
6.3.2 Permisses
No Ubuntu, ficheiros e diretorias podem ser configurados para que apenas certos
utilizadores os possam ver, modificar, ou correr. Por exemplo, pode querer partilhar um
ficheiro importante com outros utilizadores, mas no quer que esses utilizadores possam editar
o ficheiro. O Ubuntu controla o acesso aos ficheiros no seu computador atravs de um sistema
de permisses. Permisses so disposies (configuraes) que servem para controlar
exatamente o modo como os ficheiros podem ser acedidos e usados.
6.3.4 Firewall
A Firewall uma aplicao que protege o computador contra acessos no autorizados
atravs da rede Internet, ou da rede local. As Firewalls bloqueiam ligaes ao computador que
venham de origens desconhecidas. Deste modo consegue-se prevenir buracos de segurana.
O programa standard do Ubuntu para a firewall chama-se Uncomplicated Firewall
(UFW). Corre a partir da linha de comando, mas um programa chamado Gufw permite
configur-lo atravs de uma interface grfica.
Pode instalar esse programa.
Uma vez instalado, arranque com o Gufw. Para permitir a firewall selecione a opo
Enable. Por omisso, todas as ligaes de entrada so negadas. Esta configurao deve ser a
indicada para muitos dos utilizadores.
Se estiver a correr um servidor no sistema Ubuntu (como um servidor de web, ou um
servidor ftp) ento necessrio abrir portas para serem usadas por esses servios. Se no
necessitar de correr esses servidores, no necessita de abrir portas adicionais.
Para abrir uma porta clique no boto Add. Para a maioria dos propsitos, a opo
Preconfigured a adequada. Selecione Allow da primeira caixa e depois selecione o programa
ou servio que quer.
A opo Simple pode ser usada para permitir acesso a uma nica porta, e a Advanced
pode ser usada para permitir acesso a uma gama de portas.
ls -lah
mv
cp
rm
cat
more
less
Manual
man
Outros
whoami
who
ps
CONTROL C
CONTROL Z
fg
bg
kill
jobs
Comece ento por colocar o seu monitor com cinco janelas como mostra a figura em
baixo. Para simplificar a explicao vo-se dar nmeros de identificao s janelas. A janela
zero a janela do terminal e as outras quatro so do gestor do sistema de ficheiros. Coloque
todas as janelas do gestor do sistema de ficheiros na diretoria /home/Documents, como est
mostrado.
17
Se quiser ver as entradas que existem para o man (isto , a que palavras o man responde)
use a janela 1 para ir ver os ficheiros nas diretorias /usr/share/man/manN em que N a pasta
respetiva (comece por usar a tab Sistema de Ficheiros). No se assuste com o nmero de
entradas!...
Vamos agora comear a criar qualquer coisa. Vamos mudar para a diretoria Documents.
Na janela 0 faa o comando:
18
cd Documents
Isto faz com que agora a diretoria onde estamos a Documents. Repare que no prompt j
no aparece simplesmente o til, mas agora aparece ~/Documents. Vamos copiar um ficheiro
para se ter alguma coisa. O comando seguinte copia o ficheiro que contm as passwords dos
utilizadores do sistema para a diretoria Documents. Repare como ele aparece nas vrias janelas.
cp /etc/passwd .
Para criar uma diretoria nova, chamada primeiro, nesta diretoria Documents, faa
mkdir primeiro
e observe que a pasta aparece nas outras janelas. O comando mkdir (make directory) cria uma
diretoria. Vamos mudar para l na janela do terminal. J no seria preciso dizer, mas faa
cd primeiro
Repare no prompt com a indicao de onde estamos. J estamos dentro da pasta primeiro,
como pode tambm verificar fazendo pwd. Crie agora uma nova pasta a chamada de
segundo. Mude depois para essa pasta e crie uma diretoria chamada de terceiro.
Coloque agora as janelas 1, 2, 3, e 4 do seguinte modo: Janela 1 fica em Documents; janela
2 na diretoria primeiro (tem apenas uma pasta chamada segundo); janela 3 na diretoria
segundo (tem apenas uma pasta chamada terceiro); janela 4 na diretoria terceiro (no tem
nada). A figura abaixo mostra o que se pede.
Como ltima actividade desta seco faa o comando seguinte na janela 0
cd
O que aconteceu? Faa pwd na janela para ver o que aconteceu e depois se tem dvidas
leia a nota de p de pgina1.
Falta testar o comando rmdir que apaga pastas/diretorias. No se faz aqui nenhum
exerccio pois precisamos das diretorias que foram criadas.
O comando cd sem mais nada faz com que a diretoria de trabalho volte a ser a diretoria base. s vezes
importante para se ir diretamente para l.
19
A resposta o ficheiro primeiro que uma pasta, e o ficheiro passwd. Repare nas cores
diferentes em que so apresentados.
O comando ls tem a possibilidade de colocarmos opes e com isso saber mais coisas. Um
modo de se saber as opes possveis usarmos o manual
man ls
20
importante perceber o que est escrito, mas antes veja a figura abaixo para a explicao
de alguns campos.
Vendo agora a janela 0 l de cima repare que existem duas diretorias especiais: uma
chamada de ponto . e outra chamada de ponto-ponto .. J se vem tambm o ficheiros
passwd e a diretoria primeiro.
A diretoria ponto representa a prpria diretoria. Neste caso a diretoria atual (Documents).
A diretoria ponto-ponto representa a diretoria imediatamente acima desta. Se fizer cd pontoponto vai para essa diretoria (/home/pm).
cd ..
21
A figura seguinte mostra o significado das letras que esto esquerda. Elas representam as
permisses que o ficheiro (ou diretoria) tem. Como se pode ver existem trs grupos: dono,
grupo e outros (world). Para cada grupo existem trs campos: leitura, escrita, execuo. Por
exemplo, no caso do ficheiro mostrado o dono tem permisso para ler (ver), para mudar
(escrever ou apagar) e para correr este ficheiro como se fosse um programa. Estamos perante
um ficheiro executvel. Os outros utilizadores que pertencem ao mesmo grupo do dono do
ficheiro podem ver e correr este ficheiro mas no podem mudar (escrever ou apagar). O mesmo
acontece para os outros que so todos os utilizadores que no so o dono nem os do grupo do
dono. Pode-se mudar as permisses de um ficheiro com o comando chmod. Pode-se mudar o
dono de um ficheiro com o comando chown.
Vamos agora criar ficheiros em vrios locais. Como ainda no sabemos realmente escrever
ficheiros que faam sentido vamos usar o ficheiro passwd que j foi copiado. Note que o
propsito perceber os comandos de manipulao de ficheiros, e no propriamente o que os
ficheiros contm.
Relembrando, a janela 0 est na diretoria Documents. Faa ento o seguinte comando
cp passwd banana
Este comando copiou o ficheiro passwd para outro ficheiro com o nome de banana. Se
fizer ls la pode verificar isso, mas tambm pode verificar na janela 1. Os ficheiros so
iguais. Um modo de vermos isso vermos o que o ficheiro contm. Para isso use o seguinte
comando
cat passwd
e depois
cat banana
Deve ter percebido que o ficheiro passou to depressa que no deu para ver o incio. Um
modo de controlar mais as coisas usar more em vez de cat. O more mostra um ecr de cada
vez e quando tocamos na barra de espao passa para o ecr seguinte. Se quisermos ver linha a
linha use o Enter. Quando quiser sair carregue em q de quit.
Outro programa mais potente do que o more o less que faz o mesmo que o more e mais
ainda pois permite andar um ecr para trs quando se prime a tecla b de back. As pginas
do manual usam o less. Faa ento
22
less banana
e verifique na janela 1 a alterao. Agora vamos criar um ficheiro dentro da diretoria primeiro.
Faa o seguinte comando na janela 0 e repare na janela 2.
cp bacano primeiro/tomate
Olhe para as janelas 1 e 2 e veja o que aconteceu. Qual o significado do ponto neste
comando? Se no percebeu pergunte ao docente.
Faa agora a seguinte sequncia de comandos mostrada abaixo na janela 0. J agora saiba
que o Unix e o Linux foram desenhados por pessoal que entendia o esforo mnimo como
um lema de vida. Nos comandos seguintes faa uma coisa quando os est a escrever.
Depois de escrever as primeiras letras dos nomes das diretorias ou dos
ficheiros carregue em Tab (->|) em vez de escrever o resto das letras.
cp tomate primeiro/segundo/limo
cp tomate primeiro/segundo/terceiro/manga
23
Vamos ento aprender a apagar coisas. Mude a diretoria de trabalho na janela 0 para a
diretoria segundo. J agora escreva sempre a primeira letra e Tab. Temos de ser preguiosos
para honrar o esprito do Linux!...
Vamos ento apagar a diretoria terceiro com o comando rmdir. Faa o seguinte comando
rmdir terceiro
O que aconteceu? A diretoria no foi apagada pois no estava vazia. Tinha l um ficheiro
o ficheiro manga. Podemos fazer duas coisas.
1) Forar o comando a apagar diretorias no vazias por meio da escolha de uma opo (vai
ter de aprender qual essa opo com o man);
2) Apagar todos os ficheiros da diretoria antes de a apagar a ela (ficam apenas os ficheiros
ponto e ponto-ponto).
Vamos fazer esta segunda hiptese pois assim vamos usar o comando rm.
A diretoria onde estamos a de cima. Assim podemos apagar o ficheiro manga a partir
daqui (mostrado em baixo esquerda), ou ir para a diretoria de baixo, apagar o ficheiro, e
voltar para cima (mostrado em baixo direita).
cd terceiro
rm manga
cd ..
rm terceiro/manga
Para ver se j domina isto tudo, apague todos os ficheiros e diretorias que acabmos de
criar sempre a partir da janela 0. No final o ecr deve estar assim:
24
Guarde este ficheiro na diretoria Documents com o nome ola.c. Na janela 0 compile
ento o programa. Para isso faa o seguinte comando
gcc o ola ola.c
A opo -o do compilador serve para indicar ao compilador qual o nome que queremos
para o ficheiro de sada o ficheiro executvel. Verifique com o comando ls la que o ficheiro
que queramos foi criado.
Podemos ento correr o programa. Para isso basta chamar o programa como se ele fosse
um comando de linha. Faa ento
ola
25
Como deve ter reparado, NO FUNCIONOU! O problema est que a diretoria onde se
est no pertence ao conjunto de diretorias onde o sistema procura comandos de linha. O
conjunto dessas diretorias designado de $PATH e pode ser visto com o comando
echo $PATH
Como a diretoria onde se est no pertence, temos de forar o correr este programa com o
seguinte comando de linha
./ola
Conseguiu?
J agora. capaz de dizer para que serve o comando seguinte e o que se ganha com isso?
export PATH=.:$PATH
BOM
LINUX
E BOA
PROGRAMAO DE MICROPROCESSADORES
26