Aaron Newcomb
Novatec
Authorized Portuguese translation of the English edition of Linux for Makers ISBN 9781680451832 © 2017 Maker Media Inc. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to sell the same. Tradução em português autorizada da edição em inglês da obra da Linux for Makers ISBN 9781680451832 © 2017 Maker Media Inc. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., que detém ou controla todos os direitos para publicação e venda desta obra. © Novatec Editora Ltda. 2018. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates ST20180423 Tradução: Lúcia A. Kinoshita Editoração eletrônica: Carolina Kuwabata Revisão gramatical: Marta Almeida de Sá ISBN: 978-85-7522-673-5 Histórico de impressões: Abril/2018
Primeira edição
Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
capítulo 1
Introdução
O Raspberry Pi é um SBC (Single-Board Computer – ou computador de placa única); isso significa que – conforme sugere o nome – é um sistema de computador completo, montado em uma única PCI (placa de circuito impresso). Assim como muitos SBCs, esse sistema não vem pronto para ser ligado e utilizado. O Raspberry Pi tem os mesmos componentes básicos de qualquer outro computador incluídos na placa: uma CPU (Central Processing Unit, ou unidade central de processamento), memória, processador de vídeo, áudio e rede. O único componente que esse sistema não tem pronto é um dispositivo de armazenagem. Em um computador ou um notebook, a maioria das pessoas usa um disco rígido que contém o sistema operacional e todos os seus arquivos. Em um Raspberry Pi, usamos um cartão SD como o principal dispositivo de armazenagem. Assim, antes de lidar com as peculiaridades da execução de tarefas com o Linux, precisamos carregar o sistema operacional que você queira usar com o Raspberry Pi no cartão SD. Para obter os melhores resultados possíveis, use um cartão SD que tenha pelo menos 8 GB de capacidade disponível. O que é uma imagem de disco? Uma imagem de disco é um arquivo único que representa uma cópia de um dispositivo de armazenagem completo em um instante no tempo. Assim como uma fotografia é uma imagem que pode conter pessoas ou objetos distintos, uma imagem de disco pode conter várias partições, diretórios e arquivos diferentes.
15
16
Linux para Makers
Esse processo pode ser confuso para algumas pessoas, portanto vamos dividi-lo em passos individuais e executá-los um de cada vez. Os passos incluem fazer download de uma imagem de disco compactada da internet, descompactar essa imagem em seu computador local, gravá-la em seu cartão SD e, por fim, fazer o boot de seu Raspberry Pi. Você verá que esses passos se aplicam a outros SBCs também, embora o arquivo de imagem exato a ser usado mude, porque o sistema operacional deve ser construído especificamente para a placa que você estiver usando. Neste capítulo, mencionarei alguns conceitos que talvez sejam novidade para você, como sistemas de arquivos, emuladores de terminal e linha de comando. Não se preocupe. Discutiremos esses tópicos com detalhes no Capítulo 2. Por enquanto, basta que deixemos o Raspberry Pi funcionando para que você possa utilizá-lo à medida que avançar no livro. Para começar, você deverá ter acesso a um desktop ou um notebook, além de uma conexão com a internet.
Escolhendo e fazendo o download de uma imagem de disco O melhor lugar para encontrar as imagens de disco mais recentes para o Raspberry Pi é no site da Raspberry Pi Foundation, em http://raspberrypi.org/downloads. Ao acessar esse site, você verá que há uma série de imagens de disco para escolher. As duas que contam com o suporte oficial da Raspberry Pi Foundation são o NOOBS e o Raspbian. O NOOBS é, essencialmente, um instalador para o Raspbian bem como para vários outros sistemas operacionais que podem ser executados no Raspberry Pi. Ele automatiza diversas tarefas descritas neste capítulo, mas não é o sistema operacional propriamente dito que você usará no final. Na verdade, o sistema operacional é baixado como parte do processo de instalação. Por outro lado, o Raspbian contém o próprio sistema operacional, e o método de instalação exige que você grave manualmente a imagem de disco em um cartão SD. Eu recomendo selecionar a imagem do Raspbian por uma série de motivos. Em primeiro lugar, embora instalar o NOOBS possa parecer menos complicado, depois que você conhecer o procedimento-padrão de
Capítulo 1 ■ Introdução
17
instalação, usar o Raspbian, na verdade, será mais fácil e mais rápido que usar o NOOBS. Em segundo lugar, ao conhecer o processo de instalação do Raspbian, você aprenderá a carregar qualquer imagem de disco que possa querer experimentar no futuro, e saber como executar tarefas é o principal objetivo deste livro. Em terceiro lugar, como carregar o Raspbian usando esse processo resulta em um layout de disco e uma estrutura mais padronizados no cartão SD, fazer um backup de segurança de sua imagem será um pouco mais simples. Isso é algo que, definitivamente, você deve fazer para proteger o seu trabalho e evitar uma perda de dados caso inutilize o seu cartão SD ou danifique o seu Raspberry Pi. Clique no link do Raspbian e faça o download do arquivo Raspbian Jessie. No futuro, se decidir que não quer mais usar o desktop (veja o Capítulo 3), você poderá selecionar o arquivo Raspbian Jessie Lite, que é menor, porém não tem um ambiente de desktop incluído. Salve o arquivo ZIP em um local em que você possa encontrá-lo facilmente mais tarde; por exemplo, na pasta de Downloads. Na época em que este livro foi escrito, o nome do arquivo tinha o seguinte aspecto: 2017-01-11-raspbian-jessie.zip.
Descompactando a imagem de disco As imagens de disco são compactadas para que se tornem menores para download. A compactação de um arquivo basicamente usa um algoritmo para remover todos os espaços vazios e as informações duplicadas. Por exemplo, pense na remoção de todos os espaços entre as palavras de um ensaio ou de um texto para um amigo. Isso deixará o arquivo muito menor, mas também muito mais difícil de ler. Assim, para fazer uso da imagem de disco, será necessário descompactá-la antes. É preciso ter um software para isso, e na maioria dos casos esse software já está disponível em seu desktop ou notebook.
Windows Em versões recentes do Windows, o software necessário para descompactação já está incluído no Explorador de Arquivos. Basta abri-lo e acessar a pasta em que você salvou o arquivo ZIP. Clique duas vezes no arquivo
18
Linux para Makers
para abri-lo. Clicar no botão Extract (extrair) salvará a imagem de disco em um local escolhido por você que possa ser facilmente encontrado depois. Poderia ser na mesma pasta em que você salvou o arquivo ZIP originalmente (veja a Figura 1.1, que mostra como seria um exemplo disso).
Figura 1.1 – Extraindo a imagem de disco usando o Windows.
macOS Ao fazer o download do arquivo ZIP com uma versão recente do Safari, esse arquivo será automaticamente descompactado e salvo em sua pasta Downloads, por padrão. Se você estiver usando uma versão mais antiga, o macOS tem uma ferramenta embutida chamada Archive Utility (utilitário de compactação) para descompactar arquivos. Basta dar um clique duplo no arquivo ZIP que você baixou, e o Archive Utility o descompactará para você (veja a Figura 1.2). Quando o processo estiver concluído, você verá o arquivo .img extraído aparecer em seu desktop, ou no lugar em que você salvou o seu arquivo ZIP.
Capítulo 1 ■ Introdução
19
Figura 1.2 – Archive Utility executando no macOS.
Linux A maioria das distribuições de Linux também inclui programas para extrair arquivos compactados. No desktop, você pode abrir o navegador de arquivos e dar um clique duplo no arquivo ZIP baixado. O Archive Manager (gerenciador de arquivos) será aberto, permitindo que você extraia o arquivo de imagem (veja a Figura 1.3). Isso pode ser feito de modo igualmente fácil a partir da linha de comando. Abra um emulador de terminal e digite o seguinte: cd Downloads unzip 2017-01-11-raspbian-jessie.zip
Estamos supondo que você tenha salvado o arquivo ZIP em seu local de download default e que o nome do arquivo esteja correto. Tenha paciência. É um arquivo grande, e demorará um pouco para que seja descompactado. Veja a Figura 1.4, que mostra como seria essa execução. Confusão na linha de comando Você ainda não se sente à vontade em usar a linha de comando? Essa é uma parte significativa do que é tratado neste livro. Você conhecerá melhor esse assunto nos próximos capítulos.
20
Linux para Makers
Figura 1.3 – Extraindo a imagem de disco usando o Linux.
Figura 1.4 – Extraindo a imagem de disco usando a linha de comando do Linux.
Gravando a imagem de disco no cartão SD Saiba que, depois desse passo, qualquer arquivo que você pudesse ter em seu cartão SD será apagado.
Capítulo 1 ■ Introdução
21
Windows O Windows atualmente é o sistema operacional mais fácil de usar para gravar uma imagem de disco em um cartão. No entanto, de modo diferente do macOS e do Linux, ele exige que você faça download de outros softwares antes. Abra o seu navegador e faça download da aplicação Win32 Disk Imager (https://sourceforge.net/projects/win32diskimager/). Instale a aplicação dando um clique duplo no arquivo que você acabou de baixar. Depois de tê-la instalado com sucesso, conecte o seu cartão SD ao seu computador e tome nota da letra do drive que o Windows lhe atribuiu. Agora abra a aplicação. O primeiro ponto a ser verificado é se a letra do drive selecionada pela aplicação é realmente a letra do drive que corresponde ao seu cartão SD. O Win32 Disk Imager é muito bom em selecionar apenas os cartões SD, mas sempre confira atentamente essa informação, pois você está prestes a apagar o drive e, certamente, não vai querer apagar o seu drive C: no Windows. Agora clique no ícone com a pasta azul para selecionar o arquivo de imagem que você extraiu no passo anterior. Veja a Figura 1.5, que mostra um exemplo de como seria essa execução.
Figura 1.5 – Interface do programa Win32 Disk Imager.
Após selecionar o arquivo correto, você poderá clicar no botão Write (Escrever). Todos os dados do cartão SD serão sobrescritos. Quando o processo estiver concluído, feche a aplicação Win32 Disk Imager. Abra o Explorador de Arquivos, clique com o botão direito do mouse na letra do drive do cartão SD e selecione Eject (Ejetar). Sempre faça isso antes de remover o seu cartão SD para garantir que o computador termine de gravar os arquivos em segundo plano.
22
Linux para Makers
macOS Assim como o Linux, o macOS já tem todo o software necessário para gravar a imagem em um cartão SD. É necessário, porém, utilizar a linha de comando. Abra o Finder e selecione Applications→Utilities→Terminal (Aplicativos→Utilitários→Terminal – veja a Figura 1.6).
Figura 1.6 – Localizando o programa Terminal no macOS.
Insira o cartão SD e espere um pouco para que o macOS possa reconhecê-lo. Utilize o comando diskutil list na janela do terminal para exibir uma lista de todos os discos conectados ao seu Mac: diskutil list
Identifique o disco (não a partição) que representa o seu cartão SD (por exemplo, disk1, não disk1s1), conforme mostra a Figura 1.7. Nesse caso, tenho um cartão SD de 64 GB, que o macOS reconhece como disk1. Desmonte o seu cartão SD usando o comando diskutil unmountDisk e o nome do disco a fim de se preparar para copiar dados (Figura 1.8): diskutil unmountDisk /dev/disk1
Capítulo 1 ■ Introdução
23
Figura 1.7 – Exemplo de saída do comando diskutil list.
Figura 1.8 – Utilizando diskutil para desmontar um disco.
Precisamos agora copiar o arquivo de imagem para o cartão SD. Utilizaremos o data duplicator (duplicador de dados), isto é, o comando dd, para isso. Tome muito cuidado para especificar o número correto do disco de modo a não sobrescrever o seu disco de sistema! Você também terá de usar o SuperUserDO (sudo) nesse comando. O sudo é uma forma segura de um usuário regular executar um comando que, normalmente, exige privilégios de administrador: sudo dd if=Desktop/2017-01-11-raspbian-jessie.img of=/dev/rdisk1 bs=1m
24
Linux para Makers
Sua senha será solicitada, pois você estará usando sudo. Isso poderá resultar em um erro se você tiver o GNU coreutils instalado: dd: invalid number '1m'
Não se preocupe com o significado disso por enquanto – tudo que você precisa fazer é usar um tamanho de bloco igual a 1m na seção bs= do comando, assim: sudo dd if=Desktop/2017-01-11-raspbian-jessie.img of=/dev/rdisk1 bs=1m
Esse comando demorará alguns minutos para ser efetuado, conforme o tamanho do arquivo de imagem. Você pode conferir o progresso pressionando Ctrl-T para enviar um sinal SIGINFO (veja a Figura 1.9). Se esse comando ainda falhar, experimente usar o comando disk no lugar de rdisk.
Figura 1.9 – Utilizando o utilitário dd no macOS.
Nesse caso, o comando dd transferiu 549 blocos de 1 MB. Quando o processo estiver concluído, o terminal levará você de volta para um prompt. Por fim, execute um último comando antes de desconectar o seu cartão SD: sync
Capítulo 1 ■ Introdução
25
Isso garantirá que todas as escritas no cartão SD que poderiam estar ocorrendo em segundo plano terminem. Você poderá agora remover o seu cartão SD.
Linux Antes de conectar o seu cartão SD ao computador, execute o comando a seguir: sudo fdisk -l
Todos os drives físicos conectados ao seu sistema serão apresentados. Observe o tamanho do drive e o nome do disco. Veja a Figura 1.10.
Figura 1.10 – Usando fdisk para encontrar seus discos físicos.
Agora conecte o seu cartão SD ao computador e espere um pouco para que o seu Linux PC o reconheça. Ele poderá montar automaticamente e exibir qualquer partição do drive. Execute o mesmo comando novamente. Dessa vez, você deverá perceber que há um novo drive (veja a Figura 1.11). Observe o nome do disco e o tamanho. O nome do disco será importante no próximo passo. Execute agora os comandos a seguir para gravar o arquivo de imagem em seu cartão SD. Tome muito cuidado: utilize o nome de disco do cartão SD, e não o seu disco de sistema: sudo umount /dev/NomeDeSeuCartãoSD*
26
Linux para Makers
Figura 1.11 – Usando fdisk para encontrar seus discos físicos (continuação).
Substitua /NomeDeSeuCartãoSD pelo nome do disco que você identificou como o seu cartão SD com um * no final: cd ~/Downloads sudo dd if=2017-01-11-raspbian-jessie.img of=/dev/sdb bs=4M
Obviamente, substitua o nome de seu arquivo na parte if= do comando dd e o nome do disco de seu cartão SD na parte of=. Esse último comando pode demorar até dez minutos para terminar de ser executado, dependendo da velocidade de seu computador e do cartão SD. Depois de concluída a execução, você verá o prompt novamente (veja a Figura 1.12).
Figura 1.12 – Usando o utilitário dd no Linux.
Capítulo 1 ■ Introdução
27
Por fim, execute um último comando antes de desconectar o seu cartão SD: sync
Isso garantirá que todas as escritas no cartão SD que estiverem ocorrendo em segundo plano sejam encerradas. Você poderá agora remover o seu cartão SD.
Iniciando o Raspberry Pi pela primeira vez Chegou a hora da mágica. Você pode inserir o seu cartão SD no Raspberry Pi, mas, antes de alimentá-lo, certifique-se de que o seu display esteja conectado e que você esteja usando uma fonte de alimentação com no mínimo 1 amp (em geral, é exibido na fonte de alimentação como 1A) ou mais. Dois amps (2A), na verdade, é melhor. Carregadores de smartphones mais recentes devem funcionar, e conectar o Pi a um notebook ou um PC via USB também deve ser apropriado. Enquanto inicia, você notará quatro logos do Raspberry Pi na parte superior da tela, e um conjunto de texto rolando em uma tela preta com muito texto OK em verde em cada linha. Não se assuste. Isso é normal. O Linux está apenas iniciando o sistema operacional e disparando alguns serviços (mais sobre esse assunto, no Capítulo 2). Quando o seu Raspberry Pi acabar de iniciar, talvez você queira ajustar algumas configurações antes de começar a usá-lo no restante deste livro. Outros SBCs poderão ou não exigir esses ajustes. Além disso, tenha em mente que os desenvolvedores do sistema operacional atualizam o sistema o tempo todo. Versões mais recentes da distribuição Raspbian talvez não precisem de todas as sugestões apresentadas a seguir.
Expandindo o sistema de arquivos Quando esse arquivo de imagem baixado foi criado, as pessoas que o fizeram foram suficientemente gentis para reduzi-lo antes, a fim de deixar o download mais rápido. Ao iniciar o sistema pela primeira vez, você terá um total de apenas 4 GB de espaço e somente cerca de 700 MB disponíveis,
28
Linux para Makers
mesmo que o seu cartão SD seja muito maior que isso. Agora que a imagem está carregada em seu cartão SD, é provável que você queira expandir o sistema de arquivos para ter acesso a todo o espaço extra. Na versão mais recente do Raspbian, isso ocorre automaticamente em seu primeiro boot. Você perceberá que, no primeiro boot, seu sistema será reiniciado após um breve intervalo de tempo. Isso é normal, pois o sistema precisa reiniciar para reconhecer o novo tamanho do sistema de arquivos. Em versões mais antigas do Raspbian, no desktop do Raspberry Pi, clique no ícone que se parece com um monitor escuro. Isso fará um emulador de terminal ser aberto, o qual usaremos para acessar a linha de comando. Na janela que surgir, execute o comando a seguir: sudo raspi-config
A aplicação de configuração do Raspberry Pi será iniciada, conforme mostra a Figura 1.13.
Figura 1.13 – Tela do raspi-config.
Tecle Enter para selecionar a opção Expand Filesystem (expandir o sistema de arquivos). Depois de alguns segundos, outra tela será exibida informando que o sistema de arquivos raiz foi redimensionado.
Alterando as opções de localidade Por padrão, a imagem do Raspbian vem configurada para ser usada no Reino Unido, pois é lá que está sediada a Raspberry Pi Foundation. Se
Capítulo 1 ■ Introdução
29
você vive em outro país, vai querer configurar o seu Pi para utilizar as suas configurações locais de fuso horário, layout de teclado e idioma. Acredite em mim, pode ser bem frustrante digitar um caractere de aspas duplas em seu teclado e ver o Raspberry Pi interpretá-lo como um símbolo de @. A partir do mesmo programa, utilize a seta para baixo de seu teclado para selecionar Localisation Options (opções de localidade) ou pressione a tecla numérica correspondente. Configuraremos todas as três opções nesse menu, mas, por enquanto, vamos começar com Change Locale (alterar a localidade). Tecle Enter nessa opção para continuar. Você deve ver uma tela semelhante àquela mostrada na Figura 1.14.
Figura 1.14 – Menu de localidades no raspi-config.
Pode ser tentador simplesmente selecionar All locales (todas as localidades) nessa tela, mas não será uma boa ideia. O seu Raspberry Pi gastaria muito tempo configurando os parâmetros para centenas de idiomas que, provavelmente, você jamais utilizaria. Em vez disso, percorra as opções e escolha a localidade que corresponda ao idioma que você fale com mais frequência. Conforme sugere a descrição, selecione uma opção que termine com UTF-8. Por exemplo, nos Estados Unidos, você escolheria en_US.UTF-8 pressionando a barra de espaço quando o indicador de seleção estivesse ao lado de sua opção. Não explicarei o que todos esses códigos significam neste livro, mas você pode encontrar uma lista de códigos de idiomas online (https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
30
Linux para Makers
Depois de ter selecionado a sua localidade, tecle Enter para passar para a próxima tela, que perguntará qual deverá ser a localidade default. Utilize as teclas de direção para selecionar a localidade que você acabou de escolher e tecle Enter novamente. Seu Raspberry Pi gerará as informações necessárias, e você retornará para a tela principal de configuração. É hora de configurar o seu fuso horário. Selecione Localisation Options (Opções de localidade) novamente na tela principal e escolha Change Timezone (alterar o fuso horário). Uma tela semelhante àquela da Figura 1.15 será exibida.
Figura 1.15 – Alterando o fuso horário no raspi-config.
Use as teclas de direção e pressione Enter em seu teclado para navegar nesse menu e selecionar o fuso horário. Se você estiver nos Estados Unidos, talvez ache mais fácil escolher o item de menu America. Você poderá então digitar a primeira letra da cidade mais próxima a fim de encontrar o fuso horário correto. Tecle Enter para confirmar a sua opção e configurar o fuso horário. Então você retornará à tela principal de configuração do Raspberry Pi. Por fim, e, provavelmente, o mais importante: você deve configurar o seu layout de teclado. Selecione Localisation Options (opções de localidade) novamente e Change Keyboard Layout (alterar layout de teclado). Você deverá ver uma tela semelhante àquela mostrada na Figura 1.16.
Capítulo 1 ■ Introdução
31
Utilize as teclas de direção para selecionar o teclado que você estiver usando. Para a maioria dos usuários, será o Generic 104-key PC se você estiver nos Estados Unidos, ou o Generic 105-key (Intl) PC na Europa ou em outros lugares. Tecle Enter para passar para a próxima tela.
Figura 1.16 – Alterando o layout de teclado no raspi-config.
A tela listará os layouts de English (UK), para os quais o sistema estava configurado antes. Se você não estiver no Reino Unido, poderá encontrar o seu layout de teclado selecionando Other (outros) nesse menu e teclando Enter (veja a Figura 1.17). Na próxima tela, selecione o país de origem de seu teclado e tecle Enter. Agora você poderá escolher o seu layout. Utilize as teclas de direção para mover o cursor até o início da lista, onde você encontrará um layout genérico que pode ser selecionado, e tecle Enter para selecioná-lo. Há mais algumas telas para navegar. Basta selecionar os defaults nessas telas teclando Enter em cada uma delas. Então você retornará à tela principal de configuração do Raspberry Pi. Tecle Tab ou utilize as teclas de direção para acessar o botão Finish (Fim) e pressione Enter. Uma pergunta para saber se você quer reiniciar agora será apresentada. Selecione Yes (Sim) e tecle Enter. Seu Raspberry Pi será reiniciado.
32
Linux para Makers
Figura 1.17 – Alterando o layout de teclado no raspi-config (continuação).
Alterando a senha default Uma última tarefa que você sempre deve fazer antes que se esqueça é alterar a senha default. Você pode achar que um sistema pequeno como o Raspberry Pi não seja suficientemente eficaz para causar danos em outros sistemas em sua rede ou na internet. Isso não é verdade. Mesmo o menor dos sistemas pode ser comprometido de modo a executar e disseminar softwares maliciosos. De fato, isso pode ocorrer se você deixar a sua senha configurada com o default, pois será a primeira informação que alguém procurará usar quando tentar invadir o seu sistema. É fácil alterar a senha do usuário “pi” na linha de comando. Abra uma janela de emulador de terminal, como fizemos antes, e execute o comando a seguir: passwd
Você será solicitado a fornecer a senha default, que é “raspberry”, e, em seguida, digitar uma nova senha duas vezes, para garantir que está correta (veja a Figura 1.18). Não se esqueça de evitar senhas que possam ser facilmente adivinhadas, como “password” ou “12345678”.
Capítulo 1 ■ Introdução
33
Figura 1.18 – Alterando a senha default.
Agora você está pronto para começar a usar o seu Raspberry Pi!
Por que isso é importante para os makers À medida que começar a usar o Raspberry Pi e outros SBCs com mais frequência em seus projetos, esse processo se tornará comum para você. Lembre-se de que, se a situação realmente sair do controle, você sempre poderá começar do zero, seguindo esse processo para carregar uma nova imagem de disco em seu cartão SD. Muitos SBCs disponíveis atualmente utilizam um processo semelhante para que um sistema operacional seja carregado e esteja pronto para uso; desse modo, conhecer esses passos ajudará você a se preparar para futuras explorações das muitas placas excelentes que existem por aí.