domingo, 14 de dezembro de 2014

Daemon rTorrent com Screen

Usar o rTorrent como cliente de torrents numa máquina remota ou headless.

Como o rTorrent é um programa baseado em terminal, para poder correr precisa de um terminal, ou em alternativa de um screen ou dtach.
Vou usar o screen e também a interface web RTGui.

aptitude install rtorrent screen rtgui

Adiciona-se um utilizador que será usado apenas para executar o rTorrent:

adduser rtorrent

Cria-se o ficheiro /etc/init.d/rtorrent com o seguinte conteúdo:

#! /bin/sh
# rTorrent init script
#

case "$1" in
  start)
echo "Starting rtorrent..."
    su rtorrent -c 'screen -dmS rtorrent rtorrent'
    ;;
  stop)
echo "Stopping rtorrent..."
killall -s 2 rtorrent
    ;;
  *)
    echo "Usage: $0 {start|stop}"
    exit 1
    ;;
esac

exit 0

Definem-se as permissões e as opções necessárias:

chmod 755 /etc/init.d/rtorrent
update-rc.d rtorrent defaults
mkdir /etc/rtorrent
cd /etc/rtorrent
usermod -d /etc/rtorrent rtorrent
wget http://rtgui.googlecode.com/files/.rtorrent.rc

O ficheiro está em formato DOS, é preciso converter para formato linux para o rTorrent o conseguir ler.
Edita-se o ficheiro .rtorrent.rc, para conter os caminhos certos das diretorias, por exemplo:

directory=/media/disk1

Para configurar a interface web edita-se o ficheiro /etc/apache2/sites-enabled/000-default e adicionam-se estas linhas antes do último "</VirtualHost >"

LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
SCGIMount /RPC2 127.0.0.1:5000

Após esta alteração é preciso reniciar o Apache.

Servidor de impressão para Windows e Linux com CUPS

Servidor linux, no meu caso, Debian 6.0 Squeeze, a servir para a rede a impressora HP 1050 com o CUPS 1.4.4.

Entrar no servidor como root e instalar:

aptitude install cups hplip

O script de instalação inicia o cups, mas o daemon tem de estar desligado para as alterações nos ficheiros de configuração funcionarem, por isso fazemos:

/etc/init.d/cups stop

Editamos o ficheiro nano /etc/cups/cupsd.conf:

#
#
#   Sample configuration file for the Common UNIX Printing System (CUPS)
#   scheduler.  See "man cupsd.conf" for a complete description of this
#   file.
#

# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel warn

# Only listen for connections from the local machine.
Listen 0.0.0.0:631
Listen /var/run/cups/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseAddress @LOCAL

# Default authentication type, when authentication is required...
DefaultAuthType Basic

JobRetryInterval 60
JobRetryLimit 10

# Restrict access to the server...

<Location />
  Order allow,deny
  Allow localhost
  Allow @LOCAL

</Location>

# Restrict access to the admin pages...
<Location /admin>
  Encryption Required
  Order allow,deny
  Allow @LOCAL
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  Allow @LOCAL
</Location>
(...)


Editamos o ficheiro /etc/cups/cups-files.conf:

# Administrator user group...
SystemGroup lpadmin

Inicia-se o daemon cups e adicionam-se as impressoras. O painel de configuração está em https://<endereço_ip>:631, onmde <endereço_ip> é o endereço ip da máquina onde o CUPS está instalado.
Depois volta a desativar-se o cups e edita-se o ficheiro /etc/cups/printers.conf, para mudar a política em caso de erro:

(...)
ErrorPolicy retry-job
(...)

Podemos ainda dizer qo SAMBA para usar o cups para fazer impressões. Editar /etc/samba/smb.conf

[printers]
   comment = All Printers
   browseable = no
   path = /tmp
   printable = yes
   public = yes
   writable = no
   create mode = 0700
   printcap name = /etc/printcap
   print command = /usr/bin/lpr -P%p -r %s
   printing = cups

domingo, 6 de outubro de 2013

Desativar serviços no Windows 7

O Windows 7 ( e todos os outros Windows depois e antes) tem uma grande quantidade de serviços a correr em background cuja única finalidade parece ser consumir recursos sem fornecer grande serviço...
Infelizmente, desligar serviços à toa pode ter consequências desagradáveis, pois estão interligados por uma rede de dependências e nem sempre é claro qual a consequência de desativar determinado serviço.
Ainda assim, compilei uma lista de serviços que são mais ou menos seguros de desativar, em determinadas situações.
A partir da linha de comandos os serviços podem ser desligados com sc stop "nome_do_serviço" e ligados com sc start "nome_do_serviço". Para desativar realmente o serviço também pode ser usado a linha de comandos, mas não vou aqui fazer isso. Apenas voi criar dois batch files para parar e reiniciar os respetivos serviços. Os comentários das batch files são auto-explicativos.

Desligar seviços


@echo off
rem Sem Homegroup estes seviços são desnecessários
sc stop "upnphost"
sc stop "Mcx2Svc"
sc stop "SSDPSRV"
sc stop "HomeGroupProvider"

rem Desligar o aero, temas, animações, etc do ecrã
sc stop "UxSms"
sc stop "Themes"

rem Desligar a impressora, scanner, fax
sc stop "Spooler"
sc stop "StiSvc"
sc stop "TapiSrv"
sc stop "Fax"

rem Desligar o diagnóstico e relato de erros
sc stop "DPS"

rem Desligar o ambiente de trabalho remoto
rem (tanto cliente como servidor)
sc stop "UmRdpService"
sc stop "SessionEnv"
echo Esperar 2 segundos...
choice /c sn /n /t 2 /d s
sc stop "TermService"

rem Desligar as atualizações e pesquisa do Windows
sc stop "wuauserv"
sc stop "WSearch"
sc stop "WPDBusEnum"
sc stop "BITS"
sc stop "lmhosts"

rem Desligar outras atualizações (adobe e google)
sc stop "AdobeARMService"
sc stop "gupdate"
sc stop "gupdatem"

Ligar os serviços


@echo off
rem Para usar o Homegroup
sc start "upnphost"
rem sc start "Mcx2Svc"
sc start "SSDPSRV"
sc start "HomeGroupProvider"

rem Ativar aero e animações de ecrã, etc
sc start "UxSms"
sc start "Themes"

rem Ativar a impressora e scanner
sc start "Spooler"
sc start "StiSvc"
sc start "TapiSrv"

rem Ativar o diagnósticos e relato de erros
sc start "DPS"

rem Ativar o ambiente de trabalho remoto
rem (cliente e servidor)
sc start "SessionEnv"
sc start "TermService"
sc start "UmRdpService"

rem Ativar atualizações e pesquisa do Windows
sc start "wuauserv"
sc start "WSearch"
sc start "WPDBusEnum"
sc start "BITS"
sc start "lmhosts"

rem Ativar outras atualizações (adobe, google)
sc start "AdobeARMService"
sc start "gupdate"

Parando todos os serviços é possível libertar várias centenas de MiB de memória RAM e muitos ciclos de processador.


Referências


sexta-feira, 4 de outubro de 2013

Restaurar WIM no Linux

Os ficheiros WIM (Windows IMage) são ficheiros comprimidos que contêm uma estrutura de diretórios ou um sistema de ficheiros inteiro do Windows e mais alguns metadados necessários para restaurar os ficheiros.
Os ficheiros WIM são normalmente usados para guardar e restaurar a partição de sistema do Windows, sendo portanto usados nas partições e discos de recuperação.
Um ficheiro WIM pode conter vários "volumes" internamente. A reposição do sistema normalmente implica a reposição de todos os volumes do ficheiro.
O ficheiro de reposição tem geralmente o nome boot.wim, mas pode ter outros nomes (como install.wim, final.wim, etc).
Os portáteis costumam trazer um programa específico para ler estes ficheiros e executar a recuperação do sistema.
Também é possível fazer a recuperação "à mão" usando o utilitário imagex.exe da Microsoft.O imagex é um executável de menos de 1 MiB que está incluído no WAIK (Windows Automated Installation Kit), que é um download de quase 2 GiB.
A recuperação pela linha de comandos não é propriamente simples, pois é preciso ter outro Windows onde executar os comandos, uma vez que vamos apagar completamente o Windows "original" do disco.
Existe, no entanto, um pacote wimtools para linux que permite manipular os ficheiros WIM de forma muito semelhante ao Windows.
As wimtools estão disponíveis em várias distribuições, mas o mais simples é usar Ubuntu, pois há um PPA para várias versões de Ubuntu:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install wimtools

Admitindo que o ficheiro WIM está em /media/pen/boot.wim e que a partição de destino é /dev/sda2, é preciso:

  1. Formatar a partição /dev/sda2 para ntfs
  2. Recuperar o ficheiro WIM:
    wimlib-imagex apply /media/pen/boot.wim 1 /dev/sda2
    1. Repetir o comando anterior para todos os volumes dentro de boot.wim (o número identifica o volume)
  3. Atualizar o gestor de arranque (por exemplo o Grub) para reconhecer os novos ficheiros na partição /dev/sda2
  4. Reiniciar e esperar
Depois fazer uma imagem com o partimage e salvar o setor de arranque e tabela de partições com o dd, porque os ficheiros WIM são muito chatos de usar.

quinta-feira, 29 de agosto de 2013

Raspberry Pi



A Universidade de Cambridge é uma das mais conceituadas universidades do mundo, mas desde há alguns anos se tem vindo a debater com um problema nos cursos de informática. A cada ano que passa os candidatos a estes cursos parecem vir cada vez pior preparados! O que significa que tem de ser investido mais tempo a ensinar a estes alunos conceitos que já deveriam ter adquirido. Sobra portanto menos tempo para aprender tópicos mais avançados, que fazem a diferença quando as empresas de informática pretendem contratar novos colaboradores. É claro que isto acaba por ter um efeito direto muito mais importante em nós os utilizadores finais: os jogos perdem qualidade, porque não há bons programadores para os fazer!


A Universidade procurou descobrir a razão desta tendência e chegou à conclusão de que se deve ao facto de as crianças terem menos necessidade de "experimentar" os computadores. Quando Bill Gates e Steve Jobs iniciaram as suas fortunas, os computadores eram apenas para "entusiastas" da eletrónica. Os computadores eram vendidos em kits (ou era preciso comprar as peças) e montá-los e programá-los manualmente para funcionarem. Atualmente os computadores são comprados já prontos para ser usados, com uma interface colorida, simples, bonita e cara, que desincentiva os utilizadores a desmontar a máquina e a experimentar.


Iniciou-se assim um projeto para trazer de volta os "bons velhos tempos" em que os utilizadores eram incentivados a experimentar com as suas máquinas. Nasceu o projeto Raspberry Pi.


Raspberry Pi Modelo A


Um Raspberry Pi é um dispositivo do tamanho de um cartão de crédito, capaz de realizar as mesmas tarefas de um computador de secretária de entrada de gama, mas produzido de forma a ser de baixo custo.


O modelo A (mais limitado) tem 128 MB de RAM, uma porta USB. O modelo B tem 256 MB de RAM, duas portas USB e uma porta ethernet. Ambos os modelos têm uma porta HDMI e saída vídeo RCA e audio stereo. No lugar de disco rígido possuiu uma ligação a um cartão SD interno. O processador é um ARM 11 a 700 MHz incluído num SoC (System on Chip - todo o sistema está incluído num único chip) que contém também um processador gráfico Videocore 4, capaz de descodificar vídeo em alta resolução.


Todos os componentes foram escolhidos de forma a serem baratos, mas capazes de desempenho aproximadamente equivalente a um PC de secretária e capazes de correr com uma fonte limitada de energia. A alimentação elétrica é fornecida através de uma ligação micro-USB padrão com 5 V, pelo que pode ser alimentada por 4 pilhas AA.


O Raspberry não inclui na embalagem disco, teclado, rato nem monitor. O disco é substituído por um cartão SD que pode ser facilmente trocado (evitando portanto que o sistema fique "bricado", pois se encravar basta substituir o cartão SD). O monitor é o componente mais caro de um PC, por isso o Raspberry possui uma saída HDMI que lhe permite ser ligado a uma televisão ou monitor recentes e uma saída RCA para ligar a televisões mais antigas.


O dispositivo é compatível com uma série de distribuições linux, existindo na internet muitos recursos, tanto oficiais como de entusiastas, sobre como colocar uma determinada distribuição (versão) de linux no Raspberry Pi. Agora perguntam-se "Linux?! Então e Windows?". O objetivo do Raspberry é que os utilizadores experimentem e compreendam o funcionamento do sistema, o que não é possível usando um sistema fechado, como o Windows.


Há utilizadores que transformram o Raspberry em PCs de secretária, servidores, estações multimédia para a sala, colocaram-nos em balões e aviões telecomandados, usaram-nos como partes de um sistema de domótica, etc. O limite é a imaginação :)


domingo, 23 de junho de 2013

PXE Boot Server

Criar um servidor de imagens PXE com Debian Wheezy

Iniciando com uma máquina Debian já instalada é preciso:

  1. Instalar o TFTP e DHCP
  2. Configurar o TFTP e DHCP
  3. Criar uma imagem PXE
O servidor DHCP escolhido é o isc-dhcp-server e o servidor TFTP é o tftpd-hpa.
A interface onde vai funcionar o servidor DHCP tem de estar já configurada e ter um IP estático (não pode haver dois servidores DHCP no mesmo segmento de rede).

1. Instalar o TFTP e DHCP


Como de costume com Debian, a instalação é muito simples, a configuração é que é complicada.

aptitude install isc-dhcp-server tftpd-hpa

2. Configurar o TFTP e o DHCP


nano /etc/default/tftpd-hpa


TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

nano /etc/default/isc-dhcp-server

INTERFACES="eth1"

nano /etc/dhcp/dhcpd.conf

allow booting;
allow bootp;
authoritative;
subnet 10.0.0.0 netmask 255.255.255.0 {
        range dynamic-bootp 10.0.0.20 10.0.0.100;
        option routers 10.0.0.254;
        option broadcast-address 10.0.0.255;
        option domain-name-servers 208.67.222.222;
        allow unknown-clients;
        next-server 10.0.0.254;
        filename "pxelinux.0";
}

Reiniciar os serviços:

service tftpd-hpa restart
service isc-dhcp-server restart

3. Criar uma imagem PXE

aptitude install debootstrap nfs-kernel-server
mkdir /srv/tftp/pxeroot
debootstrap wheezy /srv/tftp/pxeroot
cd /srv/tftp/pxeroot
nano etc/network/interfaces
auto loiface lo inet loopbackauto eth0iface eth0 inet dhcp
nano etc/fstab
/dev/ram0  /       ext2   defaults    0   0proc       /proc      proc   defaults    0   1tmpfs      /tmp       tmpfs  defaults    0   1
chroot /srv/tftp/pxeroot

aptitude install linux-image-486
aptitude install partimage
aptitude install locales
dpkg-reconfigure locales
adduser root
adduser user
aptitude install xorg icewm slim
exit

cd /srv/tftp
wget http://ftp.debian.org/debian/dists/wheezy/main/installer-i386/current/images/netboot/pxelinux.0
cp pxeroot/vmlinuz ./
cp pxeroot/initrd.img ./
mkdir pxelinux.cfg
nano pxelinux.cfg/default

default menu.c32prompt 0timeout 300ONTIMEOUT local
MENU TITLE Welcome to PXE
LABEL Debian Wheezy x86 MENU LABEL Debian Wheezy x86 KERNEL images/deb-installer/linux APPEND initrd=images/deb-installer/initrd.gz
LABEL linux    kernel pxeroot/vmlinuz    append vga=normal initrd=pxeroot/boot/initrd.img-3.2.0-4-486 ramdisk_size=14332 root=/dev/nfs nfsroot=10.0.0.254:/srv/tftp/pxeroot rw --
nano /etc/exports
/srv/tftp/pxeroot    10.0.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)
service nfs-kernel-server restart