Configurando um PC da rede proaluno

De Wikoleculares
Ir para: navegação, pesquisa

Este guia ensina a configurar um computador da sala proaluno do zero. ANTES DE COMEÇAR LEIA BEM AS INSTRUÇÕES E TOME AS DEVIDAS PRECAUÇÕES!

Xubuntu

Instalação do sistema

Estamos usando a distribuição Xubuntu, em sua versão 32 bit, atualmente. Nossa política é: manter na versão LTS (atualmente, a 12.04) até que ela perca suporte - a estabilidade da rede é vital, e é MUITO trabalhoso ficar atualizando a cada versão que sair. Nossas partições, atualmente, seguem o seguinte esquema:

ext4, 20 GB. Ponto de montagem: /
swap, 2 GB.
ext4, o que sobrar de espaço livre. Ponto de montagem: /scratch

Observação: se estiver formatando um computador que já estava em uso, tome cuidado para não formatar a /scratch!

Instalação de pacotes

Então, é preciso instalar os pacotes que nós usamos na rede. A lista atual de pacotes a instalar é:

armagetronad audacious audacity awesome binutils-gold brasero build-essential chromium-browser eclipse elinks emacs evilwm evince finger firefox flashplugin-nonfree fluxbox fortune freeglut3-dev frozen-bubble fvwm gdb geany gedit ghc gimp git-core gnuplot grace imagemagick inkscape ipython jumpnbump jython kile kolourpaint4 koules libglw1-mesa-dev lyx mercurial moc mplayer nfs-common nis ocaml okular openjdk-6-jre openntpd openssh-server pidgin pidgin-skype pymol python3 python-matplotlib python-numpy python-scipy python-sympy qemu quota rar ratpoison r-base rtorrent scite screen solarwolf subversion terminator texlive texmaker traceroute transmission unrar unzip valgrind vim vlc wxmaxima xbindkeys xclip xdotool xfig xjump xlockmore xmonad xpdf xtrlock zip zsh

Obviamente, dê apt-get update e então apt-get install tudo isso. Note que, no meio da instalação dos pacotes, será perguntado qual o servidor NIS que você deseja usar. Coloque nis.proccm.redealuno.usp.br.

NIS

As contas dos alunos ficam no proccm, e a autenticação do login nos computadores é feita usando esse serviço, sendo o proccm o servidor NIS.

Para configurar, adicione ao /etc/passwd:

+::::::

E ao /etc/shadow:

+::::::::

E ao /etc/gshadow:

+:::

NFS

A /home dos usuários fica no proccm, assim como os scores dos joguinhos e os scripts personalizados da rede. O compartilhamento é feito por meio do serviço NFS (Network File System), que permite montar partições de um sistema alheio no computador.

Para configurar, adicione as seguintes linhas ao /etc/fstab:

# /home
192.168.0.127:/home     /home   nfs     tcp,wsize=16384,rsize=16384     0       0
# /var/games
192.168.0.127:/var/games        /var/games      nfs     bg,tcp,wsize=16384,rsize=16384  0       0
# /scripts
192.168.0.127:/scripts          /scripts        nfs     bg,tcp,wsize=16384,rsize=16384  0       0

Certifique-se de que a pasta /scripts existe. Se não existir, crie-a.

Depois deste passo, você pode ou reiniciar o computador, ou montar tudo na mão, rodando, como root:

mount 192.168.0.127:/home /home

E o mesmo para a /var/games e para a /scripts.

Definir o IP do computador

Troque o conteúdo do /etc/network/interfaces por

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.N
netmask 255.255.255.0
gateway 192.168.0.127

Sendo N o número do computador. Por convenção, N = 1 para o computador imediatamente à frente da mesa do CEO Mineo, 2 para o próximo, etc.

Feito isso, rode /etc/init.d/networking restart, para as mudanças fazerem efeito.

DNS

Acrescente ao arquivo /etc/resolvconf/resolv.conf.d/head as seguintes linhas:

domain proccm.redealuno.usp.br
search proccm.redealuno.usp.br
nameserver 192.168.0.127
nameserver 143.107.253.3
nameserver 143.107.253.5

Feito este passo, rode /etc/init.d/resolvconf restart para fazer o DNS. Feito isso, a conexão do computador com a rede local e com a internet está finalizada. Nas próximas vezes em que ele for ligado, a conexão será estabelecida automaticamente.

Para entender melhor este passo e o anterior, veja o primeiro link recomendado.

SSH

Para permitir acesso por SSH como root sem senha a partir do proccm, adicione a chave pública do proccm ao /root/.ssh/authorized_keys (pode ser preciso criar a pasta .ssh):

ssh-dss AAAAB3NzaC1kc3MAAACBANlP6zHw+3C7OhdkO4EXvrgdT590+g4LzFvp4mLL0DkDRlvPSfqrwrYmF6H7ATeGtXUoOCmiWpxsvm4ERKn6wbuRIuA8DZ2AE8re8UM8oVmSJL0V1uyLdx/0BhbRVK9lRwJ7/EaqK0mwl0T9ripzdWTnYvauxGg3PluztSbGpoNXAAAAFQD55+nR0jLNLVJy/WbMrEmyjaqr/wAAAIEApKpkHOiD6IrSIIvci0iP63Kc+ozKfI+LkDK/JXPUduggSJ5kRXbqAX5HCnGZnCwh64lOpXC8fhgSsx3stqtV/zzQJ4P31PoXKSBvlT6E5/Iillr/5aAT2OJ9i98jWg1G+gcEjoN1a2AoKpgmJgnLuvyH1CE3Sqe1yI5IVB5iPqQAAACALwuYFCc9U/510egrV37PSPFSvDVFsqgtGk8EPYZRE1H3jqKqtXxEUtabsGpDKJeVYPia2Wr70Ju+v+WVQBQ02h0O3KdcIhSNoi6KVN3XLjmCgu7XnQ60hNN0SZKY1rU86qPtGce7okWrsX9MKKTyDJopqMNOyTx5utR9yx4Hnzg= root@proccm2

Impressão

Instale o driver, disponível aqui, e adicione a impressora pelo menu do Xfce (Menu > Sistema > Impressão, instalação bem intuitiva)

Detalhes finais

Para evitar que o LightDM dê a opção para guests logarem, adicione a seguinte linha ao /etc/lightdm/lightdm.conf:

allow-guest=false


E é isso! O computador deve estar pronto para uso, feitos esses passos.

ArchLinux

Neste tutorial é ensinado a instalar a distribuição ArchLinux em um computador. É altamente recomendado o uso da versão 64 bits. A ArchWiki é sua amiga. Aprenda a usá-la: Beginners' Guide da ArchWiki (ou Installation Guide para os malandrinhos). O tutorial supõe que você está logado como root em todas as etapas. De maneira resumida, os principais passos são:


Instalação base

Esta seção deve ser seguida junto ao manual de instalação. Leia tudo antes de começar.

Obtenha uma ISO de um dos links nesta página instale-a no pen-drive com o seguinte comando

# sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync

Ao entrar no sistema de instalação a partir do pendrive, configure o teclado em portugues

# loadkeys br-abnt2

Se o comando

# ping www.google.com

der erro, configure a rede:

# nano /etc/dhcpcd.conf                                                                                                                                                   
 interface [nome da interface]                                                                                                                                             
 static ip_address=[endereco da maquina no proccm:/etc/hosts]                                                                                                              
 static routers=192.168.0.127                                                                                                                                              
 static domain_name_servers=192.168.0.127                                                                                                                                  
                                                                                                                                                                         

nome da interface = enp2s0 ou algo parecido (ip link)

# systemctl restart dhcpcd.service  

verifique as partições existentes

# lsblk
root (+- 20 GB)
swap (+- 3GB)
scratch (+- 200GB)

Não esqueça de formatar uma partição que será usada como /scratch. Esta partição é livre para os usuários brincarem localmente, sem exceder sua quota. Deixe um espaço razoável nesta partição. Se esta partição já existir, não a formate. Esta partição e a partição de swap devem ser adicionadas ao arquivo /etc/fstab para que sejam montadas na inicialização do sistema. Faremos isso no futuro.

Vamos agora formatar a partição /:

# mkfs.ext4 /dev/sdaX

Onde X é o numero da partição desejada. Montamos esta partição em /mnt:

# mount /dev/sdaX /mnt

Podemos formatar a partição scratch da mesma forma:

# mkfs.ext4 /dev/sdaY

Onde Y é o numero da partição desejada. Montamos esta partição em /mnt/scratch:

# mkdir /mnt/scratch
# mount /dev/sdaZ /mnt/scratch

Para criar partição Swap:

# mkswap /dev/sdaY
# swapon /dev/sdaY

Agora instalaremos o sistema base. Para acelerar o processo, já instalamos diversos pacotes no mesmo comando:

# pacstrap -i /mnt base base-devel intel-ucode net-tools pkgfile bash-completion nfs-utils yp-tools ypbind-mt quota-tools openssh cups libcups ntfs-3g ntp

Os pacotes podem ser separados em grupos:

  • base base-devel: pacotes básicos para instalação do sistema
  • intel-ucode: Firmware (microcode) para processadores Intel (necessário apenas se o processador for Intel)
  • net-tools pkgfile bash-completion: utilitários necessários para facilitar a administração do sistema
  • nfs-utils: montar as partições NFS (presentes no proccm) no novo computador
  • yp-tools ypbind-mt quota-tools: uso do servidor NIS, relativo aos logins/senhas dos usuários no proccm, que devem ser disponibilizados no novo computador
  • openssh: Cliente SSH
  • cups libcups: uso da impressora (necessitando os drivers da impressora, que instalaremos mais tarde)
  • ntfs-3g: opcional, para acessar partições NTFS (que são padrão no Windows)
  • ntp: opcional, para sincronizar o relógio da máquina com servidores externos (configuração à parte)

Agora geramos o fstab

# genfstab -U /mnt > /mnt/etc/fstab

Verifique se os diretórios /, scratch e também a partição swap estão sendo montadas nesse arquivo. Entramos no sistema que acabamos de instalar, fazendo:

# arch-chroot /mnt /bin/bash

Configurações do gerenciador de pacotes

Descomente as seguintes linhas do arquivo /etc/pacman.conf (TOME CUIDADO AO ALTERAR ARQUIVOS COMO ROOT! CONVÉM FAZER UM BACKUP ANTES):

Color
VerbosePkgLists
[multilib]
Include=/etc/pacman.d/mirrorlist

Locale

No passo correspondente do guia de instalação, no arquivo /etc/locale.gen, descomente as linhas:

en_US.UTF-8 UTF-8
pt_BR.UTF-8 UTF-8

Não esqueça de rodar o comando:

# locale-gen

E no arquivo /etc/locale.conf, coloque a linha:

LANG=en_US.UTF-8

Fonte do console e keymap

No arquivo /etc/vconsole.conf, coloque as linhas

 KEYMAP=br-abnt2

Hora Local e Relógio

Para configurar a zona da hora local para São Paulo, execute o seguinte comando

# ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

Para configurar o relógio da máquina como UTC, execute o seguinte comando

# hwclock --systohc --utc

Configuração inicial da Rede

Abra o arquivo /etc/hosts em um editor de texto. Comente o que já está no arquivo, pois não será necessário para nós (insira # ao início das linhas) e insira as seguintes linhas:

127.0.0.1    localhost
127.0.1.1    nome da máquina

Verificar o nome da máquina no arquivo /etc/hosts do servidor. Coloque o nome da máquina também no arquivo /etc/hostname:

# echo nome da máquina > /etc/hostname

Bootloader

Nas máquinas atuais (29/04/2014), que usam BIOS e partições MBR, o ideal é instalar o bootloader grub (e o os-prober caso a máquina possua outro sistema operacional ou Window$). Isso deve ser feito na relativa etapa do manual de instalação. Caso a máquina use UEFI, é recomendado o uso do systemd-boot.

para instalar o grub

# pacman -Syy grub
# grub-install --recheck /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

Neste ponto, o sistema deve estar funcionando, mas apenas o usuário root estará acessível (vc não esqueceu de configurar a senha do root usando o comando passwd, né? ;P). Garanta que o sistema está ligando normalmente e que os eventuais outros sistemas operacionais continuam ligando normalmente. Além disso, as partições /scratch e de swap devem estar sendo montadas durante a inicialização do sistema.

Rede (Winter is coming)

A partir daqui configuraremos a rede (para usar IP fixo, partições NFS e o servidor NIS).

IP fixo

Para configurar a conexão de IP fixo, vamos alterar os seguintes arquivos:

/etc/dhcpcd.conf

Esse arquivo configura a interface ethernet através do cliente dhcpcd. Isso irá configurar o IP estático da máquina em questão, o gateway, e o servidor de nomes

interface nome_da_interface_ethernet
static ip_address=192.168.0.X/24
static routers=192.168.0.127
static domain_name_servers=192.168.0.127 143.107.253.3 143.107.253.5

Aqui X é o número da máquina sendo configurada (verificar no arquivo /etc/hosts do servidor PROCCM). O nome da interface ethernet pode ser encontrada usando o comando ip link.

/etc/resolvconf.conf

Esse arquivo tem algum bagúio a ver com DNS (aceito explicações)

resolv_conf=/etc/resolv.conf
search_domains=proccm.redealuno.usp.br
name_servers=143.107.253.3 
name_servers=143.107.253.5
name_servers=192.168.0.127 

Agora, devemos ativar os serviços do SSH e do DHCPCD:

# systemctl start sshd.socket
# systemctl enable sshd.socket
# systemctl start dhcpcd.service
# systemctl enable dhcpcd.service

Para permitir acesso como por SSH sem precisar digitar senha (apenas a partir do proccm, senão seria uma falha SÉRIA de segurança), adicione a chave pública do proccm ao /root/.ssh/authorized_keys rodando o seguinte comando:

# scp usuário@proccm:/root/.chave_publica_rsa_proccm /root/.ssh/authorized_keys

A partir deste ponto já será possível:

  • Verificar que o IP da máquina está fixo (192.168.0.X)
  • Se comunicar com o servidor através do seu nome (ping proccm)
  • Logar na máquina a partir do servidor (ssh root@nome-da-máquina)
  • Logar no servidor a partir da máquina (ssh usuário@proccm)

Montando partições NFS

Nesta seção, vamos montar as partições NFS /home, /scripts e /var/games do servidor. Para isso, devemos ligar alguns serviços do systemd:

# systemctl start rpcbind.service
# systemctl start nfs-client.target
# systemctl start remote-fs.target

Além disso, habilitaremos os serviços para serem iniciados junto ao sistema:

# systemctl enable rpcbind.service
# systemctl enable nfs-client.target
# systemctl enable remote-fs.target

E para que garantirmos a conexão ao servidor PROCCM antes de tentarmos montar as partições NFS, habilitamos:

# systemctl enable systemd-networkd.service
# systemctl enable systemd-networkd-wait-online.service

Além disso editamos os seguintes serviços:

# systemctl edit --full rpcbind.service
# systemctl edit --full nfs-client.target
# systemctl daemon-reload

adicionando a seguinte linha dentro da seção [Unit]:

After=network-online.target

Caso não o fizéssemos, o sistema poderia tentar montar as partições antes de se conectar e falharia.

Neste ponto, devemos conseguir montar a partição /home usando:

# mount -t nfs -o 'vers=3' proccm:/home /home

Agora, precisamos editar o arquivo /etc/fstab para definir a montagem automática. Neste arquivo, adicione as linhas:

# /home
192.168.0.127:/home	   /home	nfs	vers=3,x-systemd.automount,x-systemd.device-timeout=10,tcp,wsize=16384,rsize=16384     0 0

# /var/games 
192.168.0.127:/var/games  /var/games	nfs	vers=3,bg,x-systemd.automount,x-systemd.device-timeout=10,tcp,wsize=16384,rsize=16384  0 0

# /scripts
192.168.0.127:/scripts	   /scripts	nfs	vers=3,bg,x-systemd.automount,x-systemd.device-timeout=10,tcp,wsize=16384,rsize=16384  0 0

Para adicionar /scripts ao PATH, adicione ao fim de /etc/bash.bashrc:

export PATH=$PATH:/scripts

Desde a versão 228 do pacote systemd, a montagem dos diretórios por nfs não é mais feita automaticamente, então deve-se editar o arquivo /usr/lib/tmpfiles.d/home.conf para:

 v /home 0755 - - -
 v /srv 0755 - - -


Neste ponto, o sistema deve conseguir montar as partições automaticamente durante a inicialização. Um fato relevante é que este passo deve ser feito após a configuração da rede, pois o servidor só permitirá a montagem de partições para máquinas correspondentes a IPs conhecidos.

Cliente NIS

Agora, vamos configurar a máquina para usar o servidor NIS, de forma que consiga logar em usuários definidos no PROCCM. Para isso, executamos o seguinte comando:

ypdomainname nis.proccm.redealuno.usp.br

Além disso, editamos os arquivos (NÃO sobrescrever o que já está nos arquivos) :

/etc/yp.conf

Adicionar a seguinte linha ao final do arquivo:

ypserver nis.proccm.redealuno.usp.br

/etc/nisdomainname

Alterar a seguinte linha do arquivo

NISDOMAINNAME="nis.proccm.redealuno.usp.br"

/etc/nsswitch.conf

Alterar as seguintes linhas do arquivo

passwd: files nis
group: files nis
shadow: files nis

/etc/gshadow

Adicionar a seguinte linha ao final do arquivo

+:::

/etc/shadow

Adicionar a seguinte linha ao final do arquivo

+::::::::

/etc/passwd

Adicionar a seguinte linha ao final do arquivo

+::::::

/etc/hosts

Adicionar a seguinte linha ao arquivo

192.168.0.127 nis.proccm.redealuno.usp.br

Agora precisamos iniciar e habilitar os serviços do systemd para a conexão com o servidor NIS:

# systemctl start ypbind
# systemctl enable ypbind

Além disso editamos o seguinte serviço:

# systemctl edit --full ypbind.service

adicionando a seguinte linha dentro da seção [Unit]:

After=network-online.target

Podemos então testar a configuração usando:

yptest

Se bem sucedido, você verá, entre outras coisas, o conteúdo do banco de dados do NIS (no mesmo formato do arquivo /etc/passwd). Neste ponto, ao reiniciar a máquina, será possível logar em contas do PROCCM a partir deste terminal. Verifique se, ao logar, a pasta /home/nome-do-usuário possui os conteúdos esperados.

Interface gráfica

Apesar de opcional, é importante que instalemos a interface gráfica nos computadores que configuramos. Neste tutorial, iremos instalar o servidor Xorg e o ambiente GNOME.

Se você seguiu a recomendação e baixou o Arch 64-bit, em /etc/pacman.conf, descomente as seguintes linhas:

# [multilib]
# Include = /etc/pacman.d/mirrorlist

Isto é feito para poder instalar corretamente programas 32-bit no nosso sistema. Se vocẽ seguiu este guia, este passo já deve ter sido efetuado anteriormente.

Xorg

O servidor de janelas Xorg é a implementação de referência do protocolo X atualmente. Para usufruirmos dele precisamos dos seguintes pacotes:

  • xorg-server: propriamente o servidor de janelas Xorg
  • xf86-input-keyboard xf86-input-mouse xf86-video-intel xf86-video-vesa: drivers necessários para os computadores (atuais, 29/05/2015) da sala pró-aluno
  • libva libva-intel-driver: teoricamente servem para algo de vídeo mas não tenho menor noção (aceito explicações)
# pacman -S xorg-server xorg-xrandr libinput xf86-input-libinput xf86-video-intel xf86-video-vesa libva libva-intel-driver lib32-mesa-libgl

NOTA: Futuramente é possível que seja instalado apenas o Wayland ao invés do Xorg.

GNOME

Para instalar esse ambiente, instalamos o grupo gnome e alguns outros pacotes uteis, fazendo:

# pacman -S gnome file-roller brasero gedit gnome-tweak-tool gimp firefox flashplugin ttf-ubuntu-font-family

E desinstalar os seguintes pacotes (superfluos):

# pacman -Runs epiphany empathy

E iniciamos o serviço referente ao GDM:

# sudo -u gdm dbus-launch gsettings set org.gnome.login-screen disable-user-list true
# systemctl enable gdm

Neste ponto, deve ser possível fazer login na interface gráfica.

É necessário também configurar o teclado em português no gdm (no login) Para isso, entre no GNOME e vá em Settings > Keyboard > Input Sources > Login Screen. Em "input sources", clique em "+", digite a senha de root e adicione o teclado em português do Brasil.

Detalhes finais

Para facilitar a instalação de pacotes do AUR, é conveniente que instalemos os pacotes package-query e yaourt que se encontram na própria AUR. Para instalá-los, é útil usar a página da AUR na ArchWiki.

Utilitários

Alguns utilitários são interessantes tanto para adimistradores quanto para usuários:

# pacman -S unrar wget mlocate tree emacs

Impressora

Instalamos agora o driver da impressora sendo usada pela rede do PROCCM. Atualmente (29/04/2015) é usada a impressora Canon, cujo driver está presente somente na AUR:

$ yaourt -S cndrvcups-lb-bin

Feito isso, podemos habilitar o serviço do CUPS (servidor e cliente de impressão, que foi instalado no início do tutorial) fazendo;

# systemctl start org.cups.cupsd.service
# systemctl enable org.cups.cupsd.service

Agora podemos adicionar a impressora, usando a interface web do CUPS (acessível via o menu de aplicativos ou pelo endereço localhost:631). Quando perguntado o protocolo usado, selecione LPD/LPR Host or Printer e na localização da impressora coloque o seguinte endereço:

socket://143.107.90.4

Ou o respectivo endereço de IP da impressora. De nome, descrição e localização à impressora. Agora, selecione o fabricante (Canon, atualmente) e o driver (Canon iR1020/1024/1025 UFRII LT). Na impressora atual, em tamanho padrão de página, coloque A4 e termine o processo.

Neste ponto, deve ser possível imprimir uma página de teste na impressora configurada.

Office

Alguns pacotes são necessários para a edição de documentos:

# pacman -S libreoffice-still texlive-most inkscape 

Para instalar o Adobe Acrobat Reader (necessário para imprimir alguns PDFs que, do contrário, imprimem em preto):

# yaourt -S acroread 

Após instalar o libreoffice, para instalar as fontes como Arial e Times New Roman:

# yaourt -S ttf-ms-fonts

Computação Científica

Para instalar os pacotes relacionados a computação científica, rode:

# pacman -S python-matplotlib python-scipy python-sympy python-pandas ipython ipython-notebook r julia octave gnuplot

Outros softwares

Atualmente são usados alguns softwares adicionais nos PCs do favo, mas isso pode mudar com o passar do tempo. São eles:

  • julia-git (AUR, opcional, irá sobrescrever a instalação de Julia que fizemos no passo anterior)
  • atom-editor-bin (AUR)
  • google-chrome (AUR)
  • gnome-mines
  • armagetronad (vulgo Tronzinho)

Melhorar o Boot do PC

Para otimizar o tempo de boot do PC, edite os seguintes timers do systemd dentro do campo [Timer]:

# systemctl edit --full man-db.timer
# systemctl edit --full updatedb.timer

De fato, comente a linha OnCalendar e adicione a linha OnBootSec.

#OnCalendar=daily
OnBootSec=10min

Isso fará com que os serviços man-db e updatedb apenas rodem 10min após o computador ter ligado.