Até agora encontrei sempre o dmidecode que permite listar todas as informações referentes ao hardware das máquinas, como modelos, características, velocidades, capacidades, etc.
Por exemplo:
# dmidecode -t system
System Information
Manufacturer: Dell Inc.
Product Name: Latitude 13
Version: Not Specified
Serial Number: .......................
UUID: ...........................
Wake-up Type: Power Switch
SKU Number: Not Specified
Family:
Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected
Para obter informações sobre o processador:
# dmidecode -t processor
Processor Information
Socket Designation: Microprocessor
Type: Central Processor
Family: Core 2 Duo
Manufacturer: Intel
.........
Core Count: 2
Core Enabled: 2
Thread Count: 2
Characteristics:
64-bit capable
Para obter informações sobre a RAM:
# dmidecode -t memory
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 8 GB
Number Of Devices: 2
Memory Device
Size: 4096 MB
Form Factor: DIMM
Locator: DIMM_A
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
.....
Memory Device
Size: No Module Installed
Form Factor: DIMM
Locator: DIMM_B
Type: DDR3
Type Detail: Synchronous
....
sexta-feira, 7 de junho de 2013
terça-feira, 26 de março de 2013
sábado, 2 de março de 2013
Proxmox - Aumentar disco de VM
Para aumentar o espaço do disco de uma máquina virtual (VM) com Windows 2003 Server é necessário fazer algumas considerações:
cd /var/lib/vz/images/XXX
- É necessário desligar a VM
- Aumentar o disco de boot (C:) não é suportado pelo Windows 2003 Server
- Convém efetuar backup dos dados contidos no disco a dimensionar
1. Redimensionar o disco no Proxmox
Depois de desligar a máquina convém efetuar um backup da mesma, que é uma operação algo demorada, acedendo à aba Backup e criando um novo backup.
Resta depois aceder por SSH ao servidor e efetuar o redimensionamento do disco (ficheiro) associado à VM, da qual é necessário saber o identificador, neste caso aparecerá XXX, e o nome do ficheiro, neste caso diskimage.zzz.
cd /var/lib/vz/images/XXX
Depois, utilizando o comando qemu-img é possível redimensionar o ficheiro do disco, neste caso, acrescentando 100 gigabytes ao seu tamanho atual.
qemu-img resize diskimage.zzz +100G
2. Aumentar a partição para o tamanho do disco
Após o seu redimensionamento, o disco é visto no Proxmox como tendo o novo tamanho, contudo a partição de sistema (C:) continua com o mesmo tamanho e é necessário aumentá-la.
O grande problema é que o Windows 2003 Server apenas permite efetuar o redimensionamento de partições básicas (sem ser a de sistema). Assim, será necessário utilizar um software que proceda a este redimensionamento.
Nota: No caso do Windows 7, Vista ou 2008 Server, o próprio sistema permite, no serviço de gestão de discos, efetuar o redimensionamento da partição de sistema (C:).
Assim, a forma mais simples é executar um LiveCD que possua o Gparted (por exemplo, Parted Magic ou o Grml). Neste caso, foi possível efetuar o arranque por PXE (para saber mais sobre isto veja aqui) e carregar o Grml.
Após o arranque em modo gráfico é possível aceder ao Gnome Partition Editor, onde facilmente se consegue redimensionar a partição de sistema, gravar as alterações e reiniciar a VM.
3. Arrancar o Windows 2003 Server
Ao arrancar a VM após o redimensionamento da partição, será feito um CHKDSK à partição, que permitirá assim corrigir qualquer erro que possa ter havido no processo de redimensionamento.
Após a conclusão deste processo a VM estará a funcionar como antes, apenas possuindo mais espaço em disco.
domingo, 24 de fevereiro de 2013
Raspberry Pi - Ler valores do GPIO
A primeira experiência no âmbito da leitura de valores para o Raspberry Pi, é feita com base no tutorial proposto por Matthew Kirk aqui.
0. Material necessário
- Raspberry Pi
- Sensor Digital de temperatura DS18B20
- Resistência 4,7 kΩ
1. Esquema para sensor de temperatura
O sensor de temperatura utilizado é um DS18B20, que permite efetuar leituras digitais (9-bits a 12-bist) do valor da temperatura (em Celsius).
![]() |
| Esquema do sensor de temperatura DS18B20 |
![]() |
| Esquema de ligações dos componentes |
2. Implementação do circuito
Novamente, muito cuidado ao ligar o circuito para não danificar o Raspberry Pi.
![]() |
| Breadboard com o circuito implementado e conectado ao Rpi |
3. Carregar módulos necessários
A leitura da temperatura deste sensor pressupõe alguns passos iniciais de configuração, pois por defeito o Raspberry Pi não carrega os módulos que permitem a "conversa" com outros componentes.
Assim, é necessário ativar estes dois módulos:
Assim, é necessário ativar estes dois módulos:
$ sudo modprobe w1-gpio
$ sudo modprobe w1_therm
Após este passo é necessário verificar qual o número de série carregado para o sensor de temperatura.
$ ls /sys/bus/w1/devices/
28-0000025d1522 w1_bus_master1
É através deste número de série (único para cada sensor) que será possível obter a informação da temperatura do sensor.
4. Obter a temperatura
Para obter a temperatura atual basta ver o conteúdo do ficheiro:
$ cat /sys/bus/w1/devices/28-0000025d1522/w1_slave
5c 01 4b 46 7f ff 04 10 a1 : crc=a1 YES
5c 01 4b 46 7f ff 04 10 a1 t=21750
Para ficar apenas com o valor é possível:
$ tail -n 1 /sys/bus/w1/devices/28-0000025d1522/w1_slave | tail -c 6
21875
5. Integração com PHP
Em PHP é muito fácil aceder ao ficheiro anterior e obter valor pretendido:
if (isset($_GET['temp'])&&$_GET['temp']!=''){
exec("sudo gpio -g mode 4 in"); // Iniciar GPIO04 = pin 7
if ($_GET['temp']=='on'){
// Ler do ficheiro
$filename = '/sys/bus/w1/devices/28-0000025d1522/w1_slave';
$mode = "r";
$file = fopen($filename, $mode);
if ($file){
fgets($file); // Ler primeira linha e descartar
$buffer = fgets($file); // Ler linha da temperatura
fclose($file);
$temp = substr($buffer, -6); // Obter os últimos 6 caracteres com a temperatura
echo ""+$temp/1000+"ºC
"; // Converter para as unidades corretas
"; // Converter para as unidades corretas
}
}
}
Para executar basta aceder ao URL do ficheiro PHP e adicionar a variável temp com o valor on:
http://rpi/temp.php?temp=on
domingo, 17 de fevereiro de 2013
Raspberry Pi - Controlar GPIO em PHP
Para controlar o GPIO do Raspberry Pi através do PHP é necessário efetuar algumas configurações.
$ whereis gpio
gpio: /usr/local/bin/gpio
$ sudo visudo
...
# GPIO
www-data ALL=(ALL) NOPASSWD: /usr/local/bin/gpio
Para verificar basta ter uma hiperligação ou inserir o URL que passe a variável led com o valor on para acender o LED e qualquer outro para o apagar.
Para acender:
http://rpi/led.php?led=on
Para apagar:
http://rpi/led.php?led=off
1. Configuração da execução do gpio
Adicionar no final do ficheiro de sudoers para dar permissão a www-data de execução apenas do comando gpio.$ whereis gpio
gpio: /usr/local/bin/gpio
$ sudo visudo
...
# GPIO
www-data ALL=(ALL) NOPASSWD: /usr/local/bin/gpio
Em PHP depois é possível fazer a chamadas à ferramenta gpio com sudo.
2. Exemplo de ficheiro PHP para controlar LED
Seguindo o setup eletrónico feito aqui, é possível criar o ficheiro led.php que acende e apaga o led através do PHP.
Exemplo led.php:
if (isset($_GET['led'])&&$_GET['led']!=''){
exec("sudo gpio -g mode 7 out"); // Iniciar o GPIO07 = pino 26
if ($_GET['led']=='on'){
exec("sudo gpio -g write 7 1"); // Acender LED
}else{
exec("sudo gpio -g write 7 0"); // Apagar LED
}
}
if (isset($_GET['led'])&&$_GET['led']!=''){
exec("sudo gpio -g mode 7 out"); // Iniciar o GPIO07 = pino 26
if ($_GET['led']=='on'){
exec("sudo gpio -g write 7 1"); // Acender LED
}else{
exec("sudo gpio -g write 7 0"); // Apagar LED
}
}
Para verificar basta ter uma hiperligação ou inserir o URL que passe a variável led com o valor on para acender o LED e qualquer outro para o apagar.
Para acender:
http://rpi/led.php?led=on
Para apagar:
http://rpi/led.php?led=off
WiringPi - GPIO na linha de comandos
Já foi visto um método que permite aceder ao GPIO do Rpi através de python, aqui.
Outra forma de interação com o GPIO é através do wiringPi que implementa uma ferramenta para a linha de comandos que pode ser invocada de várias formas.
Diretamente pelo utilizador, dentro de shell scripts, em PHP através de exec(), etc.
Esta ferramenta é da autoria de Gordon Henderson e para instalar basta seguir os passos daqui.
O manual da mesma encontra-se aqui ou na linha de comandos: man gpio.
Outra forma de interação com o GPIO é através do wiringPi que implementa uma ferramenta para a linha de comandos que pode ser invocada de várias formas.
Diretamente pelo utilizador, dentro de shell scripts, em PHP através de exec(), etc.
Esta ferramenta é da autoria de Gordon Henderson e para instalar basta seguir os passos daqui.
O manual da mesma encontra-se aqui ou na linha de comandos: man gpio.
1. Instalar o wiringPi
Instalar o git-clone:
$ sudo apt-get install git-clone
Obter o código:
$ git clone git://git.drogon.net/wiringPi
Instalar:
$ cd wiringPi
$ ./build
A partir daqui é possível utilizar a ferramenta wiringPi.
2. Utilizar o wiringPi
Implementando este circuito é possível através da linha de comandos efetuar o ligar e desligar do led.
Neste caso é indicado 7 para o GPIO07, ou seja, o pino 26. Depois escreve-se 1 para ligar ou 0 para desligar o led.
$ gpio -g mode 7 out
$ gpio -g write 7 1
$ gpio -g write 7 0
Raspberry Pi - webserver
A instalação de um webserver no Raspberry Pi permitirá ter um webserver com muito baixo consumo energético.
Mais para a frente será pretendido ter o webserver a controlar o Raspberry Pi através de PHP.
Normalmente utiliza-se o apache2 como webserver e o mysql-server para base de dados, mas devido às limitações do Raspberry Pi, a utilização do lighttpd webserver deverá ser mais adequada.
Também o mysql-server revela-se muito voraz em RAM... Após a sua instalação a RAM livre passou de 210MB para apenas 96MB...
Assim, ainda se procuram alternativas...
Mais para a frente será pretendido ter o webserver a controlar o Raspberry Pi através de PHP.
Normalmente utiliza-se o apache2 como webserver e o mysql-server para base de dados, mas devido às limitações do Raspberry Pi, a utilização do lighttpd webserver deverá ser mais adequada.
Também o mysql-server revela-se muito voraz em RAM... Após a sua instalação a RAM livre passou de 210MB para apenas 96MB...
Assim, ainda se procuram alternativas...
1. Instalar lighttpd + php5
Para fazer este setup basta:
$ sudo apt-get install lighttpd php5-cgi
2. Configurar o webserver
A configuração básica necessária implica apenas ativar e configurar o suporte para PHP.
Para ativar o suporte para PHP no lighttpd:
$ sudo lighty-enable-mod fastcgi-php
Depois é necessário localizar o binário do php5-cgi para indicar na configuração do lighttpd:
$ whereis php5-cgi
php5-cgi: /usr/bin/php5-cgi ... ...
$ sudo nano /etc/lighttpd/conf-enabled/15-fastcgi-php.conf
Confirmar se a o binário está correto:
"bin-path" => "/usr/bin/php5-cgi",
Caso esteja tudo correto, carregar as definições:
$ sudo service lighttpd force-reload
3. Testar o funcionamento
Depois de instalado e configurado resta testar. Para tal basta criar um ficheiro .php, por exemplo:
$ sudo nano /var/www/info.php
<?php
phpinfo();
phpinfo();
?>
Abrir um browser e introduzir http://a.b.c.d/info.php
Onde a.b.c.d é o IP do Raspberry Pi.
Eletrónica e Raspberry Pi
Para além da excelente vertente relativa ao Sistema Operativo e demais software possível de correr no Raspberry Pi, existe a Eletrónica.
Esta interface possui 26 pinos que podem ser: 5V, 3V3, GND ou de Input/Output.
Consoante o modelo do Rpi existem diferentes layouts destes pinos.
Uma boa fonte de informação sobre isto está no Raspberry Pi Spy (http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/).
Neste caso será necessário descarregar a biblioteca para a versão 2.
Depois de descarregado o ficheiro, é necessário instalá-lo com:
$ sudo dpkg -i python-rpi.gpio_0.4.2a-1_armhf.deb
Após esta instalação é possível importar para o python a biblioteca que interage com o GPIO.
1. Interface Eletrónica do Rpi
O Raspberry Pi possui uma interface com esta finalidade que se designa de GPIO (General Purpose Input Output).Esta interface possui 26 pinos que podem ser: 5V, 3V3, GND ou de Input/Output.
Consoante o modelo do Rpi existem diferentes layouts destes pinos.
Uma boa fonte de informação sobre isto está no Raspberry Pi Spy (http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/).
![]() |
| GPIO Revision 2 |
2. Esquema para Pisca-Pisca controlado pelo Rpi
Atenção!
Algumas das chamadas de atenção existentes em diversos lados são relativas ao cuidado no desenho e, principalmente, implementação dos circuitos de forma a não "queimar" o Raspberry Pi, pois os pinos de IO do GPIO estão ligados diretamente ao chip da CPU.
Por isso, deve verificar-se sempre o circuito que se vai implementar!
A partir do site indicado anteriormente é possível aceder a inúmeros artigos de interesse.
Um dos mais interessantes para quem se inicia nestas lides é o relativo ao led Pisca-Pisca controlado pelo Raspberry Pi, que se encontra aqui.
Aquando da implementação do circuito numa breadboard convém confirmar tudo. Assim, convém confirmar as ligações do transistor T1 (neste caso um BC547C).
3. Implementação do circuito
![]() |
| Breadboard com o circuito ligado ao Rpi e LED aceso |
- O LED deve ser ligado com o pino mais comprido à resistência R1 e o mais curto ao pino 1 do transistor T1.
- A resistência R2 deverá ser ligada ao pino 2 do transistor T1.
- O pino 3 do transistor T1 deverá ser ligado ao GND do Rpi (pino 6).
- A resistência R1 deve ligar também ao Rpi, neste caso no pino 1 (+3V3).
- A resistência R2 deve ligar também ao Rpi, neste caso no pino 26 (IO).
4. Python e o GPIO
Para se poder controlar o input e output dos pinos do GPIO através de código python é necessário instalar uma biblioteca, por exemplo: raspberry-gpio-python, disponível para download aqui.
Para saber qual a versão a utilizar é possível executar no terminal do Rpi:
$ python --version
Python 2.7.3
$ python --version
Python 2.7.3
Neste caso será necessário descarregar a biblioteca para a versão 2.
Depois de descarregado o ficheiro, é necessário instalá-lo com:
$ sudo dpkg -i python-rpi.gpio_0.4.2a-1_armhf.deb
Após esta instalação é possível importar para o python a biblioteca que interage com o GPIO.
5. Código Pisca-Pisca em Python
Para testar resta agora criar um ficheiro, por exemplo led.py com o conteúdo:
import RPi.GPIO as GPIO
import time
# Use physical pin numbers
GPIO.setmode(GPIO.BOARD)
# Set up header pin 26 (GPIO7) as an input
pin=26
print "Setup Pin %i" % (pin)
GPIO.setup(pin, GPIO.OUT)
var=1
print "Start loop"
while var==1 :
print "Set Output False"
GPIO.output(pin, False)
time.sleep(1)
print "Set Output True"
GPIO.output(pin, True)
time.sleep(1)
Como o código tem que interagir com o GPIO, é necessário executá-lo com privilégios de root, ou seja:
$ sudo python led.py
![]() |
| Portátil com acesso ao Rpi por SSH e execução do código led.py |
sexta-feira, 11 de janeiro de 2013
XBMC no Raspberry Pi
Uma utilização possível para o Raspberry Pi é como Media Center de uma qualquer televisão.
Para este efeito existem várias alternativas: http://wiki.xbmc.org/index.php?title=Raspberry_Pi
- Raspbian + XBMC - permite ter um ambiente gráfico LXDE para tarefas genéricas, podendo depois carregar o XBMC. Contudo, este fica bastante lento e tem vários problemas com os conteúdos via DLNA.
- OpenELEC - sistema media center muito rápido, mas que tem alguns problemas com os Add-ons de vídeo.
- Raspbmc - sistema muito rápido e que teve o melhor suporte para reprodução de conteúdos.
Raspbmc - Rpi
Raspbmc implementa o XBMC numa distribuição Linux baseada em Debian e criada especificamente para o Raspberry Pi.
No site alguns utilizadores indicam que é muito mais rápida que o OpenELEC que testei anteriormente.
Outra funcionalidade que salta à vista é o suporte para GPIO.
Fase 1:
wget http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py
Introduzir o SD card e executar
sudo python install.py
Este processo descarrega 15MB da internet e formata o SD card convenientemente.
No final deve desmontar-se o SD card
Fase 2:
Introduzir o SD card no Rpi e ligar.
Após o arranque, é necessário iniciar o processo de instalação, muito simples, que descarrega à vez todos os componentes para o sistema: root, kernel, kernel modules, xbmc, etc...
Após isto tudo não reconheceu o teclado sem fios...
É possível depois carregar manualmente o módulo e ficar com o teclado funcional:
modprobe hid-logitech-dj
Mas a solução definitiva do Jan Karger proposta aqui, apesar de ter funcionado com o raspbian, continuava sem funcionar.
Após algumas pesquisas outra solução consiste em reiniciar (por SSH, sudo reboot) algumas vezes até o teclado ser detetado.
E após reiniciar duas vezes ficou sempre operacional... Explicação?...
No site alguns utilizadores indicam que é muito mais rápida que o OpenELEC que testei anteriormente.
Outra funcionalidade que salta à vista é o suporte para GPIO.
1. Instalação do Raspbmc
O processo de instalação tem duas fases, sendo a primeira feita numa máquina com leitor de cartões e a segunda no próprio Raspberry Pi.Fase 1:
wget http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py
Introduzir o SD card e executar
sudo python install.py
Este processo descarrega 15MB da internet e formata o SD card convenientemente.
No final deve desmontar-se o SD card
Fase 2:
Introduzir o SD card no Rpi e ligar.
Após o arranque, é necessário iniciar o processo de instalação, muito simples, que descarrega à vez todos os componentes para o sistema: root, kernel, kernel modules, xbmc, etc...
Após isto tudo não reconheceu o teclado sem fios...
2. Resolução de Problemas
2.1. Problemas com a deteção do teclado
Como não se pode utilizar o sistema, é necessário aceder por SSH ao mesmo:
ssh pi@192.168.2.220
(A password por defeito é raspberry)
É possível depois carregar manualmente o módulo e ficar com o teclado funcional:
modprobe hid-logitech-dj
Mas a solução definitiva do Jan Karger proposta aqui, apesar de ter funcionado com o raspbian, continuava sem funcionar.
Após algumas pesquisas outra solução consiste em reiniciar (por SSH, sudo reboot) algumas vezes até o teclado ser detetado.
E após reiniciar duas vezes ficou sempre operacional... Explicação?...
3. Utilização
Com os problemas do teclado resolvidos não houve qualquer problema em aceder e reproduzir grande parte dos conteúdos do servidor DLNA.
Contrariamente ao que aconteceu com o OpenELEC, os Add-Ons para vídeo, nomeadamente do Youtube, Vimeo e NBA funcionam em pleno.
Subscrever:
Mensagens (Atom)








