Mudanças entre as edições de "Configurando um PC da rede proaluno"

De Wikoleculares
Ir para navegação Ir para pesquisar
(Instalação base)
(adição de mkinitcpio nos passos finais de clonagem de instalação)
 
(144 revisões intermediárias por 6 usuários não estão sendo mostradas)
Linha 1: Linha 1:
 
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!'''
 
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 =
+
= 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: [https://wiki.archlinux.org/index.php/Beginners'_guide Beginners' Guide da ArchWiki] (ou [https://wiki.archlinux.org/index.php/Installation_guide 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 do sistema ==
+
== Instalação base ==
  
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:
+
Esta seção deve ser seguida junto ao [https://wiki.archlinux.org/index.php/Beginners%27_guide#Install_the_base_system manual de instalação]. '''Leia tudo antes de começar'''.
  
ext4, 20 GB. Ponto de montagem: '''/'''
+
Obtenha uma ISO de um dos links [https://www.archlinux.org/download nesta página] instale-a no pen-drive com o seguinte comando
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!
+
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync
  
== Instalação de pacotes ==
+
Ao entrar no sistema de instalação a partir do pendrive, configure o teclado em portugues
 +
# loadkeys br-abnt2
  
Então, é preciso instalar os pacotes que nós usamos na rede. A lista atual de pacotes a instalar é:
+
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 
  
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
+
verifique as partições existentes
 +
# lsblk
  
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''.
+
O esquema que usamos é o seguinte:
  
== NIS ==
+
/  (root) (+- 20 GB)
 +
swap (+- 3GB)
 +
/scratch (+- 200GB)
  
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.
+
O particionamento pode ser feito usando o [https://wiki.archlinux.org/index.php/GNU_Parted parted]. 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.
  
Para configurar, adicione ao /etc/passwd:
+
Vamos agora formatar a partição ''/'':  
  
  +::::::
+
  # mkfs.ext4 /dev/sdaX
  
E ao /etc/shadow:
+
Onde X é o numero da partição desejada. Montamos esta partição em ''/mnt'':
  
  +::::::::
+
  # mount /dev/sdaX /mnt
  
E ao /etc/gshadow:
+
Podemos formatar a partição ''scratch'' da mesma forma:
  
  +:::
+
  # mkfs.ext4 /dev/sdaY
  
== NFS ==
+
Onde Y é o numero da partição desejada. Montamos esta partição em ''/mnt/scratch'':
  
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.
+
# mkdir /mnt/scratch
 +
# mount /dev/sdaZ /mnt/scratch
  
Para configurar, adicione as seguintes linhas ao /etc/fstab:
+
Para criar partição Swap:
  
  # /home
+
  # mkswap /dev/sdaY
192.168.0.127:/home    /home  nfs    tcp,wsize=16384,rsize=16384    0      0
+
  # swapon /dev/sdaY
  # /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.
+
Agora instalaremos o sistema base:
  
Depois deste passo, você pode ou reiniciar o computador, ou montar tudo na mão, rodando, como root:
+
# pacstrap -i /mnt base base-devel linux linux-firmware
  
mount 192.168.0.127:/home /home
+
Além disso, vamos instalar alguns pacotes mínimos:
  
E o mesmo para a /var/games e para a /scripts.
+
# pacstrap -i /mnt nano vi less dhcpcd man-db man-pages
  
== Definir o IP do computador ==
+
Agora geramos o ''fstab''
  
Troque o conteúdo do /etc/network/interfaces por
+
# genfstab -U /mnt > /mnt/etc/fstab
  
auto lo
+
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:
iface lo inet loopback
+
  # arch-chroot /mnt /bin/bash
 
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.
+
=== Configurações do gerenciador de pacotes ===
  
Feito isso, rode ''/etc/init.d/networking restart'', para as mudanças fazerem efeito.
+
No arquivo '''/etc/pacman.conf''', faça as seguintes modificações ('''TOME CUIDADO AO ALTERAR ARQUIVOS COMO ROOT! CONVÉM FAZER UM BACKUP ANTES''') :
  
== DNS ==
+
Descomente as linhas:
  
Acrescente ao arquivo /etc/resolvconf/resolv.conf.d/head as seguintes linhas:
+
Color
 +
VerbosePkgLists
  
  domain proccm.redealuno.usp.br
+
  [multilib]
search proccm.redealuno.usp.br
+
  Include=/etc/pacman.d/mirrorlist
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.
+
Descomente e edite a linha:
  
Para entender melhor este passo e o anterior, veja o primeiro link recomendado.
+
ParallelDownloads = 25
  
== SSH ==
+
Opcionalmente adicione a seguinte linha, na seção Misc options:
  
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):
+
ILoveCandy
  
ssh-dss AAAAB3NzaC1kc3MAAACBANlP6zHw+3C7OhdkO4EXvrgdT590+g4LzFvp4mLL0DkDRlvPSfqrwrYmF6H7ATeGtXUoOCmiWpxsvm4ERKn6wbuRIuA8DZ2AE8re8UM8oVmSJL0V1uyLdx/0BhbRVK9lRwJ7/EaqK0mwl0T9ripzdWTnYvauxGg3PluztSbGpoNXAAAAFQD55+nR0jLNLVJy/WbMrEmyjaqr/wAAAIEApKpkHOiD6IrSIIvci0iP63Kc+ozKfI+LkDK/JXPUduggSJ5kRXbqAX5HCnGZnCwh64lOpXC8fhgSsx3stqtV/zzQJ4P31PoXKSBvlT6E5/Iillr/5aAT2OJ9i98jWg1G+gcEjoN1a2AoKpgmJgnLuvyH1CE3Sqe1yI5IVB5iPqQAAACALwuYFCc9U/510egrV37PSPFSvDVFsqgtGk8EPYZRE1H3jqKqtXxEUtabsGpDKJeVYPia2Wr70Ju+v+WVQBQ02h0O3KdcIhSNoi6KVN3XLjmCgu7XnQ60hNN0SZKY1rU86qPtGce7okWrsX9MKKTyDJopqMNOyTx5utR9yx4Hnzg= root@proccm2
+
=== Locale ===
  
== Impressão ==
+
No arquivo '''/etc/locale.gen''', descomente as linhas:
  
Instale o driver, disponível [http://www.cecm.usp.br/~bluewhale/driver/Linux_UFRII_PrinterDriver_V250_uk_EN.tar.gz aqui], e adicione a impressora pelo menu do Xfce (''Menu > Sistema > Impressão'', instalação bem intuitiva)
+
en_US.UTF-8 UTF-8
 +
pt_BR.UTF-8 UTF-8
  
== Detalhes finais ==
+
Não esqueça de rodar o comando:
  
Para evitar que o LightDM dê a opção para ''guests'' logarem, adicione a seguinte linha ao /etc/lightdm/lightdm.conf:
+
# locale-gen
  
allow-guest=false
+
E no arquivo '''/etc/locale.conf''', coloque a linha:
  
 +
LANG=en_US.UTF-8
  
E é isso! O computador deve estar pronto para uso, feitos esses passos.
+
=== Fonte do console e keymap ===
  
= ArchLinux =
+
No arquivo '''/etc/vconsole.conf''', coloque as linhas
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: [https://wiki.archlinux.org/index.php/Beginners'_guide Beginners' Guide da ArchWiki] (ou [https://wiki.archlinux.org/index.php/Installation_guide Installation Guide] para os malandrinhos). O tutorial supõe que você está logado como root em todas as etapas.
 
  
== Instalação base ==
+
  KEYMAP=br-abnt2
  
Esta seção deve ser seguida junto ao manual de instalação. '''Leia tudo antes de começar'''.
+
=== Hora Local e Relógio ===
  
Quando instalando os pacotes básicos, para acelerar o processo, já instale:
+
Para configurar a zona da hora local para São Paulo, execute o seguinte comando
  
  # pacstrap -i /mnt base base-devel intel-ucode wget net-tools ntp pkgfile bash-completion nfs-utils yp-tools ypbind-mt quota-tools openssh cups libcups ntfs-3g
+
  # ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
  
Os pacotes podem ser separados em grupos:
+
Para configurar o relógio da máquina como UTC, execute o seguinte comando
  
* ''base base-devel'': pacotes básicos para instalação do sistema
+
# hwclock --systohc --utc
* ''intel-ucode'': Firmware (microcode) para processadores Intel (necessário apenas se o processador for Intel)
 
* ''wget'': Fazer downloads via terminal
 
* ''net-tools ntp 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)
 
  
=== Sistema de Arquivos ===
+
=== Configuração inicial da Rede ===
  
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 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.
+
Abra o arquivo '''/etc/hosts''' em um editor de texto. Comente o que está no arquivo, pois não será necessário para nós (insira ''#'' ao início das linhas) e insira as seguintes linhas, onde X se refere ao ip da máquina, que pode ser visto no arquivo /etc/hosts do proccm:
  
=== Locale ===
+
# The following lines are desirable for IPv4 capable hosts
 
+
127.0.0.1      localhost
No passo correspondente do guia de instalação, no arquivo '''/etc/locale.gen''', descomente a linha:
+
192.168.0.'''X'''    ''nome da máquina''
 
+
143.107.79.66  proccm
  en_US.UTF-8 UTF-8
+
  143.107.90.10  fleming
  pt_BR.UTF-8 UTF-8
+
 +
# The following lines are desirable for IPv6 capable hosts
 +
::1            localhost ip6-localhost ip6-loopback
 +
  ff02::1        ip6-allnodes
 +
ff02::2        ip6-allrouters
  
E no arquivo '''/etc/locale.conf''', coloque a linha:
+
Verificar o nome da máquina no arquivo ''/etc/hosts'' do servidor. Coloque o nome da máquina também no arquivo '''/etc/hostname''':
  
  LANG=en_US.UTF-8
+
  # echo ''nome da máquina'' > /etc/hostname
  
=== Fonte do console e keymap ===
+
=== Usuário root ===
  
No arquivo '''/etc/vconsole.conf''', coloque as linhas
+
Configure a senha do root usando o comando
  
  KEYMAP=br-abnt2
+
# passwd
  
=== Configuração inicial da Rede ===
+
=== Bootloader ===
  
Abra o arquivo '''/etc/hosts''' num 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:
+
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''. Além disso, instalamos o pacote intel-ucode, firmware (microcode) para processadores Intel (necessário apenas se o processador for Intel). O grub identificará automaticamente que intel-ucode está instalado e irá gerar uma configuração default que atualiza o firmware automaticamente. Para instalar o grub intel-ucode:
  
  127.0.0.1    localhost
+
  # pacman -S grub intel-ucode
  127.0.1.1    ''nome da máquina''
+
# grub-install --recheck /dev/sda
 +
  # grub-mkconfig -o /boot/grub/grub.cfg
  
Verificar o nome da máquina no arquivo ''/etc/hosts'' do servidor. Coloque o nome da máquina também no arquivo ''/etc/hostname''.
+
Neste ponto, o sistema deve estar funcionando, mas apenas o usuário root estará acessível. 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.
  
=== Bootloader ===
+
=== Utilitários ===
  
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 ''gummiboot''.
+
  # pacman -S bash-completion quota-tools ntfs-3g
  
 +
Os pacotes podem ser separados em grupos:
  
Neste ponto, o sistema deve estar funcionando, mas apenas o usuário root estará acessível. 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.
+
* ''net-tools pkgfile bash-completion'': utilitários necessários para facilitar a administração do sistema
 +
* ''ntfs-3g'': opcional, para acessar partições NTFS (que são padrão no Windows)
  
 
== Rede (Winter is coming) ==
 
== Rede (Winter is coming) ==
Linha 175: Linha 178:
 
=== IP fixo ===
 
=== IP fixo ===
  
Para configurar a conexão de IP fixo, vamos alterar os seguintes arquivos:
+
Recentemente fizemos algumas mudanças na configuração da rede para facilitar algumas coisas. Antes configurávamos o ip fixo direto em cada máquina. Agora a máquina pede um ip por dhcp e o servidor se encarrega em dar sempre o mesmo ip baseado no MAC address. Para configurar o cliente dhcp, crie o arquivo /etc/systemd/network/wired.network com o segundo conteúdo:
 +
 
 +
  [Match]
 +
  Name=NOME DA INTERFACE
 +
 
 +
  [Network]
 +
  DHCP=ipv4
 +
 
 +
Agora inicie e permita os seguintes serviços:
  
''' /etc/dhcpcd.conf '''
+
  # systemctl start systemd-networkd systemd-resolved
 +
  # systemctl enable systemd-networkd systemd-resolved
  
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
+
Por fim, crie o seguinte symlink:
  
interface ''nome da interface ethernet''
+
  # ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
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).
+
OBS:por um bug do systemd-resolved, a opção search não é puxada para o resolv.conf. Mesmo se definirmos ela manualmente, ela não funciona. Isso significa que não poderemos dar "ping cliente", apenas "ping cliente.proccm.redealuno.usp.br". Achamos que vale a pena ficar com esse bug por enquanto por causa das vantagens do systemd-networkd, mas buscaremos resolvê-lo.
  
''' /etc/resolvconf.conf '''
+
=== SSH ===
  
Esse arquivo tem algum bagúio a ver com DNS (aceito explicações)
+
Instale o pacote openssh:
  
resolv_conf=/etc/resolv.conf
+
  # pacman -S openssh
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 [https://wiki.archlinux.org/index.php/Systemd#Basic_systemctl_usage ativar os serviços] do SSH e do DHCPCD:
 
Agora, devemos [https://wiki.archlinux.org/index.php/Systemd#Basic_systemctl_usage ativar os serviços] do SSH e do DHCPCD:
  
  # systemctl start sshd.socket
+
  # systemctl start sshd.service
  # systemctl enable sshd.socket
+
  # systemctl enable sshd.service
# 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:
 
A partir deste ponto já será possível:
 
* Verificar que o IP da máquina está fixo (192.168.0.X)
 
* 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'')
 
* Se comunicar com o servidor através do seu nome (''ping proccm'')
* Logar na máquina a partir do servidor (''ssh ''usuário''@''nome-da-máquina)
+
* 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'')
 
* Logar no servidor a partir da máquina (''ssh ''usuário''@proccm'')
  
 
=== Montando partições NFS ===
 
=== 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:
+
Nesta seção, vamos montar as partições NFS ''/home'', ''/scripts'' e ''/var/games'' do servidor. Para isso, instale o pcaote  nfs-utils:
 +
 
 +
# pacman -S nfs-utils
 +
 
 +
Agora devemos ligar alguns serviços do systemd:
  
 
  # systemctl start rpcbind.service
 
  # systemctl start rpcbind.service
Linha 229: Linha 240:
 
  # systemctl enable systemd-networkd.service
 
  # systemctl enable systemd-networkd.service
 
  # systemctl enable systemd-networkd-wait-online.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.
 
Caso não o fizéssemos, o sistema poderia tentar montar as partições antes de se conectar e falharia.
Linha 238: Linha 258:
 
Agora, precisamos editar o arquivo '''/etc/fstab''' para definir a montagem automática. Neste arquivo, adicione as linhas:
 
Agora, precisamos editar o arquivo '''/etc/fstab''' para definir a montagem automática. Neste arquivo, adicione as linhas:
  
  #/home
+
  # /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
 
  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  
+
 +
  # /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
 
  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
+
 +
  # /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
 
  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
  
Linha 248: Linha 270:
  
 
  export PATH=$PATH:/scripts
 
  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.
 
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 ===
+
=== Cliente LDAP ===
 +
 
 +
Cliente foi configurado conforme wiki do arch (https://wiki.archlinux.org/index.php/OpenLDAP#The_client e https://wiki.archlinux.org/index.php/LDAP_authentication#Client_Setup). Comece instalando o pacote openldap.
 +
 
 +
  # pacman -S openldap
  
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:
+
Copie o arquivo /etc/ssl/certs/cacert.pem do proccm para /etc/ssl/certs/ca.cert do cliente. Em seguida adicione as seguintes linhas ao arquivo /etc/openldap/ldap.conf:
  
ypdomainname nis.proccm.redealuno.usp.br
+
  BASE            dc=proccm,dc=redealuno,dc=usp,dc=br
 +
  URI            ldap://proccm.redealuno.usp.br:porta
 +
 
 +
  TLS_CACERT /etc/ssl/certs/ca.cert
  
Além disso, editamos os arquivos ('''NÃO''' sobrescrever o que já está nos arquivos) :
+
Lembre-se: porta deve ser substituído pelo número da porta onde o servidor está rodando o daemon do ldap. Não colocaremos aqui por motivos de segurança.
  
''' /etc/yp.conf '''
+
Agora instale o pacote nss-pam-ldapd. Depois edite o arquivo /etc/nsswitch.conf:
  
Adicionar a seguinte linha ao final do arquivo:
+
  passwd: files mymachines systemd ldap
ypserver nis.proccm.redealuno.usp.br
+
  group: files mymachines systemd ldap
 +
  shadow: files mymachines systemd ldap
  
''' /etc/nisdomainname '''
+
Agora mude as linhas do arquivo /etc/nslcd.conf:
  
Alterar a seguinte linha do arquivo
+
  uri ldap://proccm.redealuno.usp.br:porta
  NISDOMAINNAME="nis.proccm.redealuno.usp.br"
+
  base dc=proccm,dc=redealuno,dc=usp,dc=br
 +
  rootpwmoddn cn=admin,dc=proccm,dc=redealuno,dc=usp,dc=br
 +
  base group ou=Group,dc=proccm,dc=redealuno,dc=usp,dc=br
 +
  base passwd ou=People,dc=proccm,dc=redealuno,dc=usp,dc=br
 +
  base shadow ou=People,dc=proccm,dc=redealuno,dc=usp,dc=br
 +
  ssl start_tls
 +
  tls_cacertfile /etc/ssl/certs/ca.cert
  
''' /etc/nsswitch.conf '''
+
Habilite e inicie o serviço nslcd.service:
  
Alterar as seguintes linhas do arquivo
+
  # systemctl enable nslcd.service
passwd: files nis
+
  # systemctl start nslcd.service
group: files nis
 
shadow: files nis
 
  
''' /etc/gshadow '''
+
Neste ponto você já deve conseguir ver os usuários na base de dados com o seguinte comando:
  
Adicionar a seguinte linha ao final do arquivo
+
  $ getent passwd
+:::
 
  
''' /etc/shadow '''
+
Agora edite o arquivo /etc/pam.d/system-auth adicionando as linhas com pam_ldap.so da seguinte forma:
  
Adicionar a seguinte linha ao final do arquivo
+
  auth      sufficient pam_ldap.so
  +::::::::
+
  auth      required pam_unix.so    try_first_pass nullok
 +
  auth      optional  pam_permit.so
 +
  auth      required  pam_env.so
 +
 
 +
  account  sufficient pam_ldap.so
 +
  account  required  pam_unix.so
 +
  account  optional  pam_permit.so
 +
  account  required  pam_time.so
 +
 
 +
  password  sufficient pam_ldap.so
 +
  password  required  pam_unix.so    try_first_pass nullok sha512 shadow
 +
  password  optional  pam_permit.so
 +
 
 +
  session  required  pam_limits.so
 +
  session  required  pam_unix.so
 +
  session  optional  pam_ldap.so
 +
  session  optional  pam_permit.so
  
''' /etc/passwd '''
+
Agora aos arquivos /etc/pam.d/su /etc/pam.d/su-l adicione as linhas com pam_ldap.so e use_first_pass da segiunte forma (sim, eles devem ficar iguais):
  
Adicionar a seguinte linha ao final do arquivo
+
  #%PAM-1.0
+::::::
+
  auth      sufficient    pam_ldap.so
 +
  auth      sufficient    pam_rootok.so
 +
  # Uncomment the following line to implicitly trust users in the "wheel" group.
 +
  #auth    sufficient    pam_wheel.so trust use_uid
 +
  # Uncomment the following line to require a user to be in the "wheel" group.
 +
  #auth    required      pam_wheel.so use_uid
 +
  auth      required pam_unix.so use_first_pass
 +
  account  sufficient    pam_ldap.so
 +
  account  required pam_unix.so
 +
  session  sufficient    pam_ldap.so
 +
  session  required pam_unix.so
  
''' /etc/hosts '''
 
  
Adicionar a seguinte linha ao arquivo
+
Adicione a linha com pam_ldap.so ao arquivo /etc/pam.d/passwd:
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:
+
  #%PAM-1.0
# systemctl start rpcbind
+
  password        sufficient      pam_ldap.so
# systemctl start ypbind
+
  #password      required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
# systemctl enable rpcbind
+
  #password      required        pam_unix.so sha512 shadow use_authtok
# systemctl enable ypbind
+
  password        required        pam_unix.so sha512 shadow nullok
  
'''É IMPORTANTE QUE OS SERVIÇOS SEJAM INICIALIZADOS NA ORDEM ESPECIFICADA'''
+
Teste o funcionamento da autenticação ldap do cliente logando em um usuário normalmente.
  
Podemos então testar a configuração usando:
+
Teste o funcionamento da criptografia:
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.
+
  ldapwhoami -H ldap://proccm.redealuno.usp.br:porta -x -ZZ
  
 
== Interface gráfica ==
 
== Interface gráfica ==
  
 
Apesar de opcional, é importante que instalemos a interface gráfica nos computadores que configuramos. Neste tutorial, iremos instalar o servidor [https://wiki.archlinux.org/index.php/Xorg ''Xorg''] e o ambiente [https://wiki.archlinux.org/index.php/GNOME ''GNOME''].
 
Apesar de opcional, é importante que instalemos a interface gráfica nos computadores que configuramos. Neste tutorial, iremos instalar o servidor [https://wiki.archlinux.org/index.php/Xorg ''Xorg''] e o ambiente [https://wiki.archlinux.org/index.php/GNOME ''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.
 +
 +
=== Drivers de vídeo ===
 +
 +
  # pacman -S mesa lib32-mesa libva-intel-driver
  
 
=== Xorg ===
 
=== Xorg ===
Linha 317: Linha 390:
 
O servidor de janelas Xorg é a implementação de referência do protocolo X atualmente. Para usufruirmos dele precisamos dos seguintes pacotes:
 
O servidor de janelas Xorg é a implementação de referência do protocolo X atualmente. Para usufruirmos dele precisamos dos seguintes pacotes:
  
* ''xorg-server xorg-xinit'': propriamente o servidor de janelas Xorg e o programa de inicialização pelo console
+
# pacman -S xorg-server xf86-video-intel
* ''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 xf86-input-keyboard xf86-input-mouse xf86-video-intel xf86-video-vesa libva libva-intel-driver
+
Defina o layout do teclado do xorg para br:
 +
 
 +
  # localectl set-x11-keymap br
  
 
NOTA: Futuramente é possível que seja instalado apenas o ''Wayland'' ao invés do ''Xorg''.
 
NOTA: Futuramente é possível que seja instalado apenas o ''Wayland'' ao invés do ''Xorg''.
Linha 329: Linha 402:
 
Para instalar esse ambiente, instalamos o grupo ''gnome'' e alguns outros pacotes uteis, fazendo:
 
Para instalar esse ambiente, instalamos o grupo ''gnome'' e alguns outros pacotes uteis, fazendo:
  
  # pacman -S gnome file-roller brasero gedit gnome-tweak-tool firefox flashplugin ttf-ubuntu-font-family
+
  # pacman -S gnome gnome-tweaks gimp firefox chromium celluloid vlc texmaker ttf-ubuntu-font-family
  
 
E desinstalar os seguintes pacotes (superfluos):
 
E desinstalar os seguintes pacotes (superfluos):
  
  # pacman -Runs epiphany empathy
+
  # pacman -Rns epiphany gnome-boxes totem
  
E iniciamos o seriço referente ao GDM:
+
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
 
  # systemctl enable gdm
  
 
Neste ponto, deve ser possível fazer login na interface gráfica.
 
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 ==
 
== 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 [https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages página da AUR na ArchWiki].
+
=== AUR helper ===
 +
 
 +
Para facilitar a instalação de pacotes da AUR, instalaremos o yay. Para conhecer outros pacotes, visite a página de [https://wiki.archlinux.org/index.php/AUR_helpers AUR helpers] da wiki archlinux. Como o yay é da da AUR, teremos que compilar. Para mais informações visite da página da [https://wiki.archlinux.org/index.php/Arch_User_Repository AUR] da wiki archlinux.
 +
 
 +
Como não é permitido compilar sendo root, faça isso a partir de um usuário sudoer
 +
 
 +
Agora iremos clonar o repositório do pacote. Para isso você precisará instalar o pacote git:
 +
 
 +
# pacman -S git
 +
 
 +
Agora clone o repositório no diretório /tmp logado como o usuário criado:
 +
 
 +
$ cd /tmp
 +
$ git clone https://aur.archlinux.org/yay.git
 +
 
 +
Agora iremos compilar o pacote:
 +
 
 +
$ cd yay
 +
$ makepkg -sirc
 +
 
 +
Por um problema de permissões, o yay não está conseguindo acessar a home dos usuários. Caso tenha esse problema, adicione a flag "--builddir /tmp" quando for instalar algo com yay.
 +
 
 +
=== Utilitários ===
 +
 
 +
Alguns utilitários são interessantes tanto para adimistradores quanto para usuários:
 +
 
 +
# pacman -S unrar wget mlocate tree emacs vim
 +
# yay -S sublime-text-4 sublime-merge
  
 
=== Impressora ===
 
=== 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:
+
Primeiramente instalamos o [https://wiki.archlinux.org/index.php/CUPS CUPS], sistema de impressão utilizado no Linux:
 +
 
 +
# pacman -S cups libcups
  
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;
 
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 start cups.service
  # systemctl enable org.cups.cupsd.service
+
  # systemctl enable cups.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:
+
Instalamos agora o driver da impressora sendo usada pela rede do PROCCM. Atualmente (2022) é usada a impressora Samsung, cujo driver está presente somente na AUR:
  
  socket://143.107.90.4
+
  $ yay -S samsung-unified-driver
  
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.
+
Agora podemos adicionar a impressora, usando a interface web do CUPS, acessível via o menu de aplicativos ou pelo endereço ''localhost:631''. Siga os seguintes passos:
 +
 
 +
* Clique em Administration
 +
* Clique em Add printer
 +
* Faça login como root
 +
* Selecione Internet Printing Protocol (ipp)
 +
* Clique em continue
 +
* Connection: ipp://143.107.90.4/ipp/printer
 +
* Name: Samsung
 +
* Description:
 +
* Location: Favo 22
 +
* Clique em continue
 +
* Make: SAMSUNG
 +
* Clique em continue
 +
* Model: Samsung M408x Series PS (en)
 +
* Clique em Add Printer
 +
* Clique em General
 +
* Two-sided: Long Edge
 +
* Paper Size: A4
 +
* Clique em Set Default Options
  
 
Neste ponto, deve ser possível imprimir uma página de teste na impressora configurada.
 
Neste ponto, deve ser possível imprimir uma página de teste na impressora configurada.
 +
 +
Obs: foi detecatdo um bug que estava impedindo a impressão frente e verso. Para evitá-lo, quando for imprimir, clique em "Page Handling" (en) ou gestão de páginas (pt-br) e certifique-se que está desmarcada a opção "select page size using document page size" (en) ou "Selecionar o tamanho da página utilizando o tamanho da página do documento" (pt-br).
 +
 +
=== Scanner ===
 +
 +
Instale o pacote sane:
 +
 +
  # pacman -S sane
 +
 +
Para acessar pela rede, adicione ao final do arquivo /etc/sane.d/xerox_mfp.conf a seguinte linha:
 +
 +
  tcp 143.107.90.4
  
 
=== Office ===
 
=== Office ===
Linha 368: Linha 505:
 
Alguns pacotes são necessários para a edição de documentos:
 
Alguns pacotes são necessários para a edição de documentos:
  
  # pacman -S libreoffice-still texlive-most
+
  # pacman -S libreoffice-still libreoffice-still-pt-br texlive-most inkscape
 +
 
 +
Após instalar o libreoffice, para instalar as fontes como Arial e Times New Roman:
 +
 
 +
$ yay -S ttf-ms-fonts
 +
 
 +
Também instalamos os pacotes noto fonts, para caracteres Unicode:
 +
 
 +
# pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts
  
 
=== Computação Científica ===
 
=== Computação Científica ===
Linha 374: Linha 519:
 
Para instalar os pacotes relacionados a computação científica, rode:
 
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 gnuplot
+
  # pacman -S python-matplotlib python-scipy python-numpy python-sympy python-pandas jupyter-notebook r tk julia octave gnuplot gdb valgrind
  
 
=== Outros softwares ===
 
=== Outros softwares ===
Linha 382: Linha 527:
  
 
* julia-git (AUR, opcional, irá sobrescrever a instalação de Julia que fizemos no passo anterior)
 
* 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
 
* gnome-mines
 
* armagetronad (vulgo Tronzinho)
 
* armagetronad (vulgo Tronzinho)
 +
* gnome-latex e/ou texmaker e/ou texstudio (no caso de gnome-latex instale hunspell-pt-br da aur para spell checking em português)
 +
* figlet (para o script proccmfetch funcionar)
 +
 +
= Copiando uma instalação com rsync =
 +
 +
Vamos apresentar uma forma alternativa de instalar uma imagem em um pc da proaluno usando o [https://wiki.archlinux.org/index.php/Rsync rsync]. Para isso precisamos de um cliente funcional(fonte) e iremos copiar a imagem desse para outro cliente(destino).
 +
 +
== Inicialização no cliente fonte ==
 +
Primeiramente, temos que executar alguns passos no cliente fonte, instale o rsync(se não tiver):
 +
# pacman -S rsync
 +
além disso, é necessário permitir o login como root via ssh, vá em "/etc/ssh/sshd_config" e mude a linha
 +
#PermitRootLogin prohibit-password
 +
para
 +
PermitRootLogin yes
 +
Após isso reinicie o serviço de ssh:
 +
# systemctl restart sshd.socket
 +
Re-comente a linha no "/etc/ssh/sshd_config":
 +
#PermitRootLogin yes
 +
LEMBRE-SE de reiniciar o serviço de ssh novamente quando terminar o processo.
 +
 +
Com isso o cliente fonte já esta pronto, desative a hibernação para não atrapalhar o processo de cópia.
 +
 +
== Cliente destino ==
 +
=== Copiando a instalação ===
 +
Primeiramente, crie uma [https://wiki.archlinux.org/index.php/USB_flash_installation_media imagem do arch] como descrito acima. Na imagem do arch faça:
 +
# loadkeys br-abt2
 +
Cheque qual é a partição root (em geral será a com +- 20 GB) com:
 +
# lsblk
 +
E formate a partição root (sdaX a partição root) com:
 +
# mkfs.ext4 /dev/sdaX
 +
Após isso monte a partição root:
 +
# mount /dev/sdaX /mnt
 +
Como o cliente fonte da imagem já está preparado, basta fazer:
 +
# rsync -aAXv --exclude={"/home/*","/scratch/*","/var/cache/pacman/pkg/*","/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} 192.168.0.X:/ /mnt
 +
em que X é o cliente do qual você está copiando a instalação. A opção --exclude evita a cópia de arquivos indesejados, porém, as pastas serão copiadas mesmo estando vazias.
 +
 +
=== Configurando a instalação ===
 +
Após a conclusão da cópia precisamos mudar algumas coisas na instalação. Primeiramente monte o '''scratch''' e o '''swap''':
 +
# mount /dev/sdaZ /mnt/scratch
 +
# swapon /dev/sdaY
 +
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
 +
Vamos ter que alterar alguns arquivos como
 +
/etc/hosts
 +
/etc/hostname
 +
/etc/systemd/network/wired.network
 +
para alterar o último cheque a interface de rede com '''ip link'''. Após isso faça:
 +
# mkinitcpio -p linux
 +
para criar o initial ramdisk e
 +
# grub-mkconfig -o /boot/grub/grub.cfg
 +
para configurar o bootloader e faça:
 +
# rm /etc/machine-id
 +
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
 +
 +
Agora, basta reinicializar o cliente e o mesmo deve estar pronto para uso.
 +
 +
Caso você não tenha re-comentado a linha no /etc/ssh/sshd_config da fonte, ela será copiada descomentada. Lembre-se de recomentar ela no computador fonte e no computador destino caso necessário, e reiniciar o serviço sshd.service.
 +
 +
= Xubuntu =
 +
 +
Antes da mudança do sistema operacional da [[Sala Pró-Aluno]] para Arch Linux, o padrão era o Xubuntu. Mantivemos aqui o tutorial para referência.
 +
 +
== 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 [http://www.cecm.usp.br/~bluewhale/driver/Linux_UFRII_PrinterDriver_V250_uk_EN.tar.gz 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.
  
 
[[Categoria:Tutoriais]]
 
[[Categoria:Tutoriais]]
 +
[[Categoria: Sala Pró-Aluno]]

Edição atual tal como às 10h26min de 26 de setembro de 2023

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!

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

# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=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

O esquema que usamos é o seguinte:

/  (root) (+- 20 GB)
swap (+- 3GB)
/scratch (+- 200GB)

O particionamento pode ser feito usando o parted. 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:

# pacstrap -i /mnt base base-devel linux linux-firmware

Além disso, vamos instalar alguns pacotes mínimos:

# pacstrap -i /mnt nano vi less dhcpcd man-db man-pages

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

No arquivo /etc/pacman.conf, faça as seguintes modificações (TOME CUIDADO AO ALTERAR ARQUIVOS COMO ROOT! CONVÉM FAZER UM BACKUP ANTES) :

Descomente as linhas:

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

Descomente e edite a linha:

ParallelDownloads = 25

Opcionalmente adicione a seguinte linha, na seção Misc options:

ILoveCandy

Locale

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, onde X se refere ao ip da máquina, que pode ser visto no arquivo /etc/hosts do proccm:

# The following lines are desirable for IPv4 capable hosts
127.0.0.1       localhost
192.168.0.X     nome da máquina
143.107.79.66   proccm
143.107.90.10   fleming

# The following lines are desirable for IPv6 capable hosts
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

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

Usuário root

Configure a senha do root usando o comando

# passwd

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. Além disso, instalamos o pacote intel-ucode, firmware (microcode) para processadores Intel (necessário apenas se o processador for Intel). O grub identificará automaticamente que intel-ucode está instalado e irá gerar uma configuração default que atualiza o firmware automaticamente. Para instalar o grub intel-ucode:

# pacman -S grub intel-ucode
# 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. 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.

Utilitários

 # pacman -S bash-completion quota-tools ntfs-3g

Os pacotes podem ser separados em grupos:

  • net-tools pkgfile bash-completion: utilitários necessários para facilitar a administração do sistema
  • ntfs-3g: opcional, para acessar partições NTFS (que são padrão no Windows)

Rede (Winter is coming)

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

IP fixo

Recentemente fizemos algumas mudanças na configuração da rede para facilitar algumas coisas. Antes configurávamos o ip fixo direto em cada máquina. Agora a máquina pede um ip por dhcp e o servidor se encarrega em dar sempre o mesmo ip baseado no MAC address. Para configurar o cliente dhcp, crie o arquivo /etc/systemd/network/wired.network com o segundo conteúdo:

 [Match]
 Name=NOME DA INTERFACE
 
 [Network]
 DHCP=ipv4

Agora inicie e permita os seguintes serviços:

 # systemctl start systemd-networkd systemd-resolved
 # systemctl enable systemd-networkd systemd-resolved

Por fim, crie o seguinte symlink:

 # ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

OBS:por um bug do systemd-resolved, a opção search não é puxada para o resolv.conf. Mesmo se definirmos ela manualmente, ela não funciona. Isso significa que não poderemos dar "ping cliente", apenas "ping cliente.proccm.redealuno.usp.br". Achamos que vale a pena ficar com esse bug por enquanto por causa das vantagens do systemd-networkd, mas buscaremos resolvê-lo.

SSH

Instale o pacote openssh:

 # pacman -S openssh

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

# systemctl start sshd.service
# systemctl enable sshd.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, instale o pcaote nfs-utils:

# pacman -S nfs-utils

Agora 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 LDAP

Cliente foi configurado conforme wiki do arch (https://wiki.archlinux.org/index.php/OpenLDAP#The_client e https://wiki.archlinux.org/index.php/LDAP_authentication#Client_Setup). Comece instalando o pacote openldap.

 # pacman -S openldap

Copie o arquivo /etc/ssl/certs/cacert.pem do proccm para /etc/ssl/certs/ca.cert do cliente. Em seguida adicione as seguintes linhas ao arquivo /etc/openldap/ldap.conf:

 BASE            dc=proccm,dc=redealuno,dc=usp,dc=br
 URI             ldap://proccm.redealuno.usp.br:porta
 
 TLS_CACERT /etc/ssl/certs/ca.cert

Lembre-se: porta deve ser substituído pelo número da porta onde o servidor está rodando o daemon do ldap. Não colocaremos aqui por motivos de segurança.

Agora instale o pacote nss-pam-ldapd. Depois edite o arquivo /etc/nsswitch.conf:

 passwd: files mymachines systemd ldap
 group: files mymachines systemd ldap
 shadow: files mymachines systemd ldap

Agora mude as linhas do arquivo /etc/nslcd.conf:

 uri	ldap://proccm.redealuno.usp.br:porta
 base  dc=proccm,dc=redealuno,dc=usp,dc=br
 rootpwmoddn cn=admin,dc=proccm,dc=redealuno,dc=usp,dc=br
 base	group	ou=Group,dc=proccm,dc=redealuno,dc=usp,dc=br
 base	passwd	ou=People,dc=proccm,dc=redealuno,dc=usp,dc=br
 base	shadow	ou=People,dc=proccm,dc=redealuno,dc=usp,dc=br
 ssl	start_tls
 tls_cacertfile	/etc/ssl/certs/ca.cert

Habilite e inicie o serviço nslcd.service:

 # systemctl enable nslcd.service
 # systemctl start nslcd.service

Neste ponto você já deve conseguir ver os usuários na base de dados com o seguinte comando:

 $ getent passwd

Agora edite o arquivo /etc/pam.d/system-auth adicionando as linhas com pam_ldap.so da seguinte forma:

 auth      sufficient pam_ldap.so
 auth      required  pam_unix.so     try_first_pass nullok
 auth      optional  pam_permit.so
 auth      required  pam_env.so
 
 account   sufficient pam_ldap.so
 account   required  pam_unix.so
 account   optional  pam_permit.so
 account   required  pam_time.so
 
 password  sufficient pam_ldap.so
 password  required  pam_unix.so     try_first_pass nullok sha512 shadow
 password  optional  pam_permit.so
 
 session   required  pam_limits.so
 session   required  pam_unix.so
 session   optional  pam_ldap.so
 session   optional  pam_permit.so

Agora aos arquivos /etc/pam.d/su /etc/pam.d/su-l adicione as linhas com pam_ldap.so e use_first_pass da segiunte forma (sim, eles devem ficar iguais):

 #%PAM-1.0
 auth      sufficient    pam_ldap.so
 auth      sufficient    pam_rootok.so
 # Uncomment the following line to implicitly trust users in the "wheel" group.
 #auth     sufficient    pam_wheel.so trust use_uid
 # Uncomment the following line to require a user to be in the "wheel" group.
 #auth     required      pam_wheel.so use_uid
 auth      required	pam_unix.so use_first_pass
 account   sufficient    pam_ldap.so
 account   required	pam_unix.so
 session   sufficient    pam_ldap.so
 session   required	pam_unix.so


Adicione a linha com pam_ldap.so ao arquivo /etc/pam.d/passwd:

 #%PAM-1.0
 password        sufficient      pam_ldap.so
 #password       required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
 #password       required        pam_unix.so sha512 shadow use_authtok
 password        required        pam_unix.so sha512 shadow nullok

Teste o funcionamento da autenticação ldap do cliente logando em um usuário normalmente.

Teste o funcionamento da criptografia:

 ldapwhoami -H ldap://proccm.redealuno.usp.br:porta -x -ZZ

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.

Drivers de vídeo

 # pacman -S mesa lib32-mesa libva-intel-driver

Xorg

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

# pacman -S xorg-server xf86-video-intel

Defina o layout do teclado do xorg para br:

 # localectl set-x11-keymap br

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 gnome-tweaks gimp firefox chromium celluloid vlc texmaker ttf-ubuntu-font-family

E desinstalar os seguintes pacotes (superfluos):

# pacman -Rns epiphany gnome-boxes totem

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

AUR helper

Para facilitar a instalação de pacotes da AUR, instalaremos o yay. Para conhecer outros pacotes, visite a página de AUR helpers da wiki archlinux. Como o yay é da da AUR, teremos que compilar. Para mais informações visite da página da AUR da wiki archlinux.

Como não é permitido compilar sendo root, faça isso a partir de um usuário sudoer

Agora iremos clonar o repositório do pacote. Para isso você precisará instalar o pacote git:

# pacman -S git

Agora clone o repositório no diretório /tmp logado como o usuário criado:

$ cd /tmp
$ git clone https://aur.archlinux.org/yay.git

Agora iremos compilar o pacote:

$ cd yay 
$ makepkg -sirc

Por um problema de permissões, o yay não está conseguindo acessar a home dos usuários. Caso tenha esse problema, adicione a flag "--builddir /tmp" quando for instalar algo com yay.

Utilitários

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

# pacman -S unrar wget mlocate tree emacs vim
# yay -S sublime-text-4 sublime-merge

Impressora

Primeiramente instalamos o CUPS, sistema de impressão utilizado no Linux:

# pacman -S cups libcups


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 cups.service
# systemctl enable cups.service

Instalamos agora o driver da impressora sendo usada pela rede do PROCCM. Atualmente (2022) é usada a impressora Samsung, cujo driver está presente somente na AUR:

$ yay -S samsung-unified-driver

Agora podemos adicionar a impressora, usando a interface web do CUPS, acessível via o menu de aplicativos ou pelo endereço localhost:631. Siga os seguintes passos:

  • Clique em Administration
  • Clique em Add printer
  • Faça login como root
  • Selecione Internet Printing Protocol (ipp)
  • Clique em continue
  • Connection: ipp://143.107.90.4/ipp/printer
  • Name: Samsung
  • Description:
  • Location: Favo 22
  • Clique em continue
  • Make: SAMSUNG
  • Clique em continue
  • Model: Samsung M408x Series PS (en)
  • Clique em Add Printer
  • Clique em General
  • Two-sided: Long Edge
  • Paper Size: A4
  • Clique em Set Default Options

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

Obs: foi detecatdo um bug que estava impedindo a impressão frente e verso. Para evitá-lo, quando for imprimir, clique em "Page Handling" (en) ou gestão de páginas (pt-br) e certifique-se que está desmarcada a opção "select page size using document page size" (en) ou "Selecionar o tamanho da página utilizando o tamanho da página do documento" (pt-br).

Scanner

Instale o pacote sane:

 # pacman -S sane

Para acessar pela rede, adicione ao final do arquivo /etc/sane.d/xerox_mfp.conf a seguinte linha:

 tcp 143.107.90.4

Office

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

# pacman -S libreoffice-still libreoffice-still-pt-br texlive-most inkscape

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

$ yay -S ttf-ms-fonts

Também instalamos os pacotes noto fonts, para caracteres Unicode:

# pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts

Computação Científica

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

# pacman -S python-matplotlib python-scipy python-numpy python-sympy python-pandas jupyter-notebook r tk julia octave gnuplot gdb valgrind

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)
  • google-chrome (AUR)
  • gnome-mines
  • armagetronad (vulgo Tronzinho)
  • gnome-latex e/ou texmaker e/ou texstudio (no caso de gnome-latex instale hunspell-pt-br da aur para spell checking em português)
  • figlet (para o script proccmfetch funcionar)

Copiando uma instalação com rsync

Vamos apresentar uma forma alternativa de instalar uma imagem em um pc da proaluno usando o rsync. Para isso precisamos de um cliente funcional(fonte) e iremos copiar a imagem desse para outro cliente(destino).

Inicialização no cliente fonte

Primeiramente, temos que executar alguns passos no cliente fonte, instale o rsync(se não tiver):

# pacman -S rsync

além disso, é necessário permitir o login como root via ssh, vá em "/etc/ssh/sshd_config" e mude a linha

#PermitRootLogin prohibit-password

para

PermitRootLogin yes

Após isso reinicie o serviço de ssh:

# systemctl restart sshd.socket

Re-comente a linha no "/etc/ssh/sshd_config":

#PermitRootLogin yes

LEMBRE-SE de reiniciar o serviço de ssh novamente quando terminar o processo.

Com isso o cliente fonte já esta pronto, desative a hibernação para não atrapalhar o processo de cópia.

Cliente destino

Copiando a instalação

Primeiramente, crie uma imagem do arch como descrito acima. Na imagem do arch faça:

# loadkeys br-abt2

Cheque qual é a partição root (em geral será a com +- 20 GB) com:

# lsblk

E formate a partição root (sdaX a partição root) com:

# mkfs.ext4 /dev/sdaX

Após isso monte a partição root:

# mount /dev/sdaX /mnt

Como o cliente fonte da imagem já está preparado, basta fazer:

# rsync -aAXv --exclude={"/home/*","/scratch/*","/var/cache/pacman/pkg/*","/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} 192.168.0.X:/ /mnt

em que X é o cliente do qual você está copiando a instalação. A opção --exclude evita a cópia de arquivos indesejados, porém, as pastas serão copiadas mesmo estando vazias.

Configurando a instalação

Após a conclusão da cópia precisamos mudar algumas coisas na instalação. Primeiramente monte o scratch e o swap:

# mount /dev/sdaZ /mnt/scratch
# swapon /dev/sdaY

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

Vamos ter que alterar alguns arquivos como

/etc/hosts
/etc/hostname
/etc/systemd/network/wired.network

para alterar o último cheque a interface de rede com ip link. Após isso faça:

# mkinitcpio -p linux

para criar o initial ramdisk e

# grub-mkconfig -o /boot/grub/grub.cfg

para configurar o bootloader e faça:

# rm /etc/machine-id

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

Agora, basta reinicializar o cliente e o mesmo deve estar pronto para uso.

Caso você não tenha re-comentado a linha no /etc/ssh/sshd_config da fonte, ela será copiada descomentada. Lembre-se de recomentar ela no computador fonte e no computador destino caso necessário, e reiniciar o serviço sshd.service.

Xubuntu

Antes da mudança do sistema operacional da Sala Pró-Aluno para Arch Linux, o padrão era o Xubuntu. Mantivemos aqui o tutorial para referência.

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.