Desligando o Linux com o botão Power do Computador
Essa já não é novidade nenhuma e eu tenho plena certeza de que há mais meios de configurar esta tarefa porém nenhuma mais POG do que esta.
Na realidade não tão POG, pois o nosso amigo Gnome utiliza-se da mesma técnica que o Paulo Matias usou para realizar esta simples tarefa. Então vamos à grande explicação com um pouco de história.
Estava eu, sentado na frente do computador, quando tive a brilhante idéia de que meu Linux não tinha algum monitor do botão de power, e sempre conversando com o Paulo via Jabber ou IRC terminei falando pra ele, pois num teste recente pude conferir que o FreeBSD já vinha com essa opção ativada por padrão.
O que me assustou foi que ele já veio falando todos os métodos de como montar a tal e já tendo em mente todas as possíveis linguagens de programação (na mente dele Python e C) logo pensando no quesito de que o arquivo iria ficar aberto pelo tempo que o computador ficasse ligado, o Paulo levou em consideração criar o programa na linguagem C.
A técnica se baseia em ter um arquivo aberto sendo lido sempre para que quando você apertar o botão de liga/desliga do computador (não o do teclado) o mesmo acesse o arquivo e desligue o computador.
Eu realizei os testes no meu Archlinux, e como o Paulo também usa Archlinux, tudo ocorreu como esperado, vamos então a instalação e configuração de tal script.
A instalação dá-se de maneira bem simples, copie e cole o código abaixo em um arquivo com nome de acpi-power-button-monitor.c em qualquer lugar de seu computador (no meu caso eu copiei na ~/).
acpi-power-button-monitor.c
/* ACPI power button monitor.
* Copyright (c) 2008 Paulo Matias
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main() {
static char buf[128];
FILE *fp;
assert((fp = fopen("/proc/acpi/event", "r")));
while(1) {
fgets(buf, sizeof(buf), fp);
if(!strcmp(strtok(buf, " "), "button/power")) {
system("halt");
break;
}
}
fclose(fp);
return 0;
}
Depois só precisamos compilar o código com o seguinte comando:
$ gcc -Os acpi-power-button-monitor.c -o acpi-power-button-monitor
E então copiar o arquivo compilado (programa já pronto para execução) para a pasta padrão dos programas da sua distribuição Linux. No caso do Archlinux esta pasta fica em /usr/bin:
# mv acpi-power-button-monitor /usr/bin
# chmod 755 /usr/bin/acpi-power-button-monitor
E depois também precisamos chamar este programa na inicialização do Linux, modificando no arquivo /etc/rc.local no caso do Archlinux:
# vi /etc/rc.local
#!/bin/bash
#
# /etc/rc.local: Local multi-user startup script.
#
/usr/bin/acpi-power-button-monitor &
Com o programa sendo inicializado juntamente com o Linux, podemos então simplesmente testá-lo a partir da próxima vez que ligarmos o computador.
Lembrando que o mesmo consome 380Bytes de memória ram, irrisório para os computadores de hoje.
Obrigado e até a próxima.
AutoFS: Montando seus drivers automaticamente no Archlinux
Assim como eu traduzi o artigo da wiki (http://wiki.archlinux.org/index.php/AutoFS_HowTo) para o português em (http://wiki.archlinux-br.org/Autofs) também vou adicionar um post aqui (para me lembrar em um futuro distante claramente) sobre o AutoFS.
O que é o AutoFS?
AutoFS é um pacote que suporta a montagem/desmontagem de drivers automaticamente, ou seja, ele monta e desmonta os devices automaticamente quando você tenta acessá-los. Com ele é possível montar CDs, DVDs, disquetes, Pendrivers e mais alguns.
Instalação e configuração:
Assim como a grande maioria dos pacotes do Archlinux, vamos utilizar o pacman para instalação:
# pacman -Sy autofs
01 - Edite o arquivo:
/etc/autofs/auto.master
Apague todo o conteúdo do arquivo e adicione a seguinte linha:
/media /etc/autofs/auto.media
Obs: Não esqueça de criar uma linha extra no arquivo (aperte ENTER depois da útlima palavra (media)). Se você não adicionar uma linha em branco depois da linha acima, a daemon do AutoFS não vai funcionar corretamente.
Se, no final deste artigo, o AutoFS não desmontar corretamente seus drivers, substitua a linha acima por esta:
/media /etc/autofs/auto.media –timeout=3
02 - Crie o arquivo /etc/autofs/auto.media com o seguinte conteúdo:
cdrom -fstype=iso9660,ro,nodev,nosuid :/dev/cdrom
floppy -fstype=auto,async,nodev,nosuid,umask=000 :/dev/fl
usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sda1
Talvez você precise alterar os devices (isso varia de acordo com cada sistema). Se você está usando um driver de DVD-ROM, provavelmente vai precisar de suporte para UDF, sendo assim mude a linha do cd escrita acima para:
cdrom -fstype=auto,ro,nodev,nosuid :/dev/cdrom
03 - Crie o arquivo:
/etc/default/autofs
e adicione a linha abaixo:
TIMEOUT=1
04 - Abra o arquivo:
/etc/conf.d/autofs
e edite a linha daemonoptions:
daemonoptions=”-g”
05 - Crie a pasta /media:
# mkdir /media
06 - Carregue o módulo autofs4:
# modprobe autofs4
07 - Suba a daemon do autofs:
# /etc/rc.d/autofs start
Para inicializar normalmente a daemon em todo boot, adicione a mesma e o módulo nas suas respectivas arrays no arquivo /etc/rc.conf.
Para mais dúvidas ou possíveis problemas, visite a wiki oficial do archlinux-br http://wiki.archlinux-br.org/Autofs.
Até mais.
Configurando o MPD no Archlinux com Sonata
Eu acredito que assim como uma grande maioria das pessoas que gostam de ouvir músicas no computador eu também sofro sofria em manter um player aberto ali na tray pedindo para ser clicado e ficava me perguntando qual a próxima vez que eu iria apertar next pra ele tocar.
Procurando um pouco (não tanto quanto eu pensava porque eu já tinha uma “idéia” de qual programa usar, porém ainda não tinha “tomado coragem” para procourar como configurar o mesmo) terminei achando um jeito fácil de manipular as músicas e deixá-las tocando em background sem influênciar nada. Nem mesmo se o X estivesse ou não ligado. E de quebra ainda ganhei um servidor para ouvir música de onde eu estiver no planeta (mas não vou extender esse artigo à essas configurações).
O milagroso programa se chama MPD (Music Player Daemon) isso mesmo, uma daemon para tocar as músicas de acordo com sua playlist criada antecipadamente. O melhor de toda a história é que, assim como a grande maioria das daemons criadas para o Linux o MPD também tem vários clientes gráficos pra manipulá-lo.
Vou escrever aqui os passos que segui para instalação e configuração do MPD com o cliente Sonata que escolhi porque é feito em gtk (só uso o mesmo pra manipulação de playlists e por músicas para tocar).
01 - Instalando os pacotes nescessários:
# pacman -S mpd sonata
02 - Criando os arquivos de configuração:
O arquivo principal para configuração do mpd é o /etc/mpd.conf e, quando instalamos o MDP, já vem um arquivo de configuração exemplo (/etc/mpd.conf.example), então podemos usar o mesmo de base:
# cp /etc/mpd.conf.example /etc/mpd.conf
# vi /etc/mpd.conf
Agora com nosso arquivo de configuração já quase pronto podemos fazer as edições finais:
Descomente a linha:
#music_directory “path_to_yoru_music_collection”
E a edit por exemplo para:
music_directory “~/.mpd”
Nessa pasta é onde colocaremos todos os links simbólicos para as pastas onde realmente estão nosssas músicas. Ficando por exemplo assim:
$ cd ~/.mpd
$ ln -s ~/mp3 mp3
Depois de adicionar todas as patas (somente as raízes) como links simbólicos dentro da pasta ~/.mpd, então podemos criar nosso banco de dados:
# mpd –create-db
O script de criação irá adicionar todas as músicas que estão linkadas simbolicamente dentro da pasta ~/.mpd.
03 - Subindo a daemon e chamando o Sonata:
# /etc/rc.d/mpd start
$ sonata &
Após o Sonata estar aberto, ele se conectará automaticamente ao MPD, vá na aba Library, escolha quais arquivos (serão listados os links simbólicos como pastas) quer adiconar à playlist, botão direito com eles selecionados e ADD, logo após, vá na aba current (playlist das músicas que estão/irão tocando/tocar) e clique duas vezes em qualquer arquivo para começar.
Você também pode apertar com o botão direito na playlist e escolher as opções Repeat e Random para ele ficar tocando aleatóriamente(Random) todas as músicas da sua playlist repetidamente(Repeat).
Depois de começar a tocar você pode escolher se fica ou não com o Sonata aberto na tray, eu preferi fechar o meu e, independente disso, o MPD fica tocando as músicas em background, mesmo eu desligando o X. Perfeito não?
Até a próxima.
Bug na ataulização da libgpm do Arch Linux
Bem, depois de um tempo afastado (motivos de força mair me fizeram sair do Archlinux e ir para algumas outras distros tentar a vida), e pelo menos motivo, quando voltei ao Archlinux, percebi que havia algumas modificações nos pacotes durante a instalação, e depois da mesma (instalação) ocorreram alguns bugs, um deles é recente e como não sei se ainda foi arrumado e aconteceu com mais pesosas, vou postar aqui.
O bug é um problema que ocorre durante a atualização da libgpm, e já vi bastante gente o “resolvendo” simplesmente colocando ela na blacklist dos pacotes à serem atualizados.
Porém entrando no canal oficial de suporte percebi que já haviam enfrentado o mesmo problema de uma maneira bem simples e de melhor resultado: reinstalando o pacote (mas sem reinstalar todas as dependencias), ficando assim o comando do nosso velho amigo pacman:
# pacman -Rd gpm && pacman -S gpm
Depois de executar esse comando o pacman vai simplesmente remover e instalar novamente o pacote já atualizado que estará funcionando normalmente.
Configurando cpufreq no Archlinux
Oi denovo. Talvez essa dica, para algumas, pessoas possa ser encarada como um “economizador de energia”, porém eu estou usando o cpufreq aqui no meu computador por motivos de preservar não só a energia, mas também o cpu.
Antigamente (desde antes de eu usar “duh”) quando era aberto algum site contendo animações em flash (muitos hoje em dia) o cpu simplesmente enlouquecia, ficava com overloading demais (não me pessam para explicar o motivo), desde então procurei sobre algumas soluções, a primeira foi utilizar o firefox(GTK) ao invés do opera(QT) como browser para sites com flash, mas mesmo assim, ainda havia alguns que eu pude notar que ainda faziam o mesmo overloading (principalmente aqueles com propaganda em flash).
Sendo assim, como eu NÃO queria usar nenhum anti-não-sei-o-que-lá-plugin resolvi o problema com o cpufreq, cuja configuração é bem fácil, sem complicações e rápida, só precisamos atentar para os módulos a serem subidos e qual o nosso processador.
Primeiramente há uma vertente do cpufreq para a família de processadores AMD que se chama powerNOW, como eu possuo um processador da família intel, logo vou configurar o cpufreq para o mesmo, então vamos lá:
1 - Download das DAEMONS:
Como há pacotes dentro do repositório oficial do Archlinux para as duas daemons qeu vamos utilizar, este processo se torna bastante simples através do gerenciador de pacotes pacman;
# pamcan -Sy cpufreqd
# pacman -Sy cpufrequtils
2 - Upando os módulos necessários:
Para que o cpufreq trabalhe corretamente, precisamos subir alguns módulos, são eles:
# modprobe acpi
# modprobe acpi_cpufreq
# modprobe cpufreq_stats
# modprobe cpufreq_powersave
# modprobe cpufreq_conservative
# modprobe cpufreq_ondemand
# modprobe cpufreq_userspace
Nota: powersaver, conservative e ondemand são exatamente os governors que temos para escolher.
3 - Verificando e configurando quais freqüências seu processador pode utilizar:
Para verificar as freqüências disponíveis para o seu processador utilize:
$ cpufreq-info
Atente para as seguintes linhas:
hardware limits: 2.40 GHz - 3.00 GHz
available frequency steps: 3.00 GHz, 2.40 GHz
available cpufreq governors: userspace, ondemand, conservative, powersave, performance
Como você pode notar, eu tenho que setar minhas configurações de acordo com a resposta do cpufreq, logo vamos editar o arquivo de configuração do mesmo:
# vi /etc/conf.d/cpufreq
governor=”ondemand”
min_freq=”2.4GHz”
max_freq=”3GHz”
Aqui, setei as variáveis min_freq e max_feq de acordo com a reposta do cpufreq-info, como citado anteriormente, também setei o governor como ondemand, pois eu quero que o processador trabalhe de acordo com a necessidade.
Caso você esteja usando um notebook, pode setar em powernow, ou ondemand, sendo a primeira para economizar energia.
4 - Subindo as DAEMONS necessárias:
# /etc/rc.d/cpufreq
# /etc/rc.d/cpufreqd
Pronto, agora é só aproveitar.
5 - Configurando o arquivo de inicialização do Archlinux (rc.conf)
Só para maior comodidade, vamos configurar o arquivo de inicialização, teremos que alterar doias arrays, o de MODULES e o de DAEMONS:
# vi /etc/rc.conf
MODULES=(e100 mii slhc acpi acpi_cpufreq cpufreq_stats cpufreq_powersave cpufreq_conservative cpufreq_ondemand cpufreq_userspace snd-mixer-oss snd-pcm-oss snd-page-alloc snd-pcm snd-timer snd snd-hda-intel soundcore)
DAEMONS=(syslog-ng cpufreq cpufreqd dbus hal network !autofs !netfs !crond adsl sshd dnsmasq upnpd alsa fam firewall kdm)
Nota: Atente que há vários outros módulos subidos, porém terminei colando minhas arrays por motivo de ordem de chamada, configure o seu de acordo com o demonstrado acima.
Bom, é isso aí, tenho notado que não há mais overloading, e como estou usando simplesmente 600MHz abaixo da freqüência normal do meu computador, não notei tanta queda de processamento, mesmo assim, caso eu precise de mais, o cpufreq mesmo se encarrega de aumentar o mesmo.
Espero que aproveitem, até mais.
About
Leandro Pincini:
Quase formado Tecnólogo em Processamento de Dados pela Faculdade de Tecnologia (FATEC) de Taquaritinga. Sim, estou naquela faze chata de final de curso em que temos que escrever nossas monografias.
Áreas de interesse:
Arch Linux, Programação (Java, Python, Ruby), Tecnologia.