domingo, 21 de janeiro de 2024

Comando xev, Configuração de teclas de função (Fn) e Atalhos de Teclado no Fluxbox

 Sabe quando você quer fazer a tecla PrintScreen funcionar no fluxbox, mas não sabe como?

Para configurar atalhos de teclado para executar certas funções (chamar um programa, fechar uma janela, colocar um fim útil para a tecla "Win" etc), podemos ler o manual:

$ man fluxbox-keys

Basicamente, digitamos o Keycode no arquivo de configuração ~/.fluxbox/keys, e a ação (em geral, o comando) para executar o que desejamos.

Depois salvamos o arquivo, e reiniciamos o fluxbox (não precisamos sair da sessão e entrar novamente, há uma opção no menu para isto)

Entretanto, precisamos saber qual é o keycode da tecla.

Por exemplo, a tecla PrintScreen. Podemos tocar nela no Fluxbox, que não acontece nada. Para isto, precisamos do comando xev.

$ xev

Ele já vem no pacote x11-utils (Debian).

É aberta uma janela inútil, e quando você digita, ou aperta qualquer tecla, o código dela aparece. Depois, pegamos o KeyCode, e o incluímos no arquivo, conforme as instruções do manual.

 

As teclas que são combinações também funcionam, bem como as funções comuns em teclados de notebook, acionadas pela tecla Fn.

Em notebooks da Lenovo, quando você não usa GNOME, ou desktops mais bonitinhos essas teclas de função nem sempre funcionam de maneira adequada, então você pode associar essas teclas com programas que ajustam a luminosidade e o som, por exemplo.

Pode ser útil mesmo se você não usar fluxbox.


terça-feira, 3 de outubro de 2023

parted: "Warning: The resulting partition is not properly aligned for best performance."

 Se você já criou partições "na mão" usando o parted deve ter se deparado com esse tipo de aviso:

"Warning: The resulting partition is not properly aligned for best performance."

Mas se você iniciar o parted com o comando:

# parted -a optimal

O problema está resolvido, porque ele irá trabalhar o alinhamento de modo a sempre garantir o melhor alinhamento possível, sem degradação de performance.

Eu tenho um HD no meu roteador em vez de um SSD, ou deixar as coisas na ROM (o melhor cenário em termos de velocidade), então isso faz toda a diferença!

sábado, 1 de julho de 2023

Rotacionando um pdf 90º anti-horário com pdfjam

 pdfjam é um dos programas para manipular arquivos pdf em linha de comando.

Com ele podem ser anexados arquivos pdf em um único, além de rotacioná-los.

Este comando converte um arquivo .pdf em uma versão rotacionada à 90º, paisagem

$ pdfjam --landscape --angle 90 arquivo.pdf

sábado, 29 de dezembro de 2018

pmount e udiscksctl para mountar e monitor Pen Drives

Não me lembro se publiquei algum artigo sobre o pmount para mountar pen-drives a partir da linha de comando.

Basicamente, a sintaxe é muito parecida com o comando mount.
A diferença é que não é necessário que o dispositivo que se deseja montar esteja no arquivo /etc/fstab, e no caso de desejar que um usuário normal o utilize o dispositivo, também não é necessário que esta opção também esteja especificada no referido arquivo.
Se o usuário para o qual deseja-se dar permissão estiver no grupo plugdev é o suficiente.

A sintaxe do comando pmount é:

$ pmount < dispositivo > < diretório em que quer montar o dispositivo>

Exemplo:
$ pmount /dev/sdb1 # Se não informado diretório, o dispositivo /dev/sdb1 será montado em /media/sdb1

Para desmountar, devemos apenas digitar:
$ pumount /media/sdb1 # Fora do diretório ou
$ pumount /dev/sdb1

Entretanto, quando inserimos o Pen Drive no computador, como saber em qual(is) arquivo(s) de dispositivo(s) a(s) partição(ões) será(ão) reconhecida(s)?

Antigamente, eu espetava o Pen Drive na entrada USB do computar, e ficava monitorando as mensagens do kernel com dmesg.
Porém, os usuários normais deixaram de ter a capacidade de fazer isto por questões de segurança (é possível flexibilizá-la, mas seria ilógico).

Outra solução é utilizar o udisks2. Ele já está instalado no Debian, porque os desktops mais modernos o utilizam para montar os pendrives.
Ele tem um programa em linha de comando chamado udisksclt, que permite tanto monitorar os Pen Drives espetados no computador via USB, como também montá-los.

Para monitorar, basta digitar:

$ udisksctl monitor # Espete o Pen Drive depois deste comando
Depois, aperte Ctrl+C para cancelar o monitoramentom e use o udisksctl ou o pmount já citado para montar a partição e/ou o dispositivo desejado.

Fonte: Manuais de udisks2 e pmount

sexta-feira, 3 de agosto de 2018

Redirecionamento de portas para acessar computador de rede interna (casa ou escritório) a partir de acesso externo, remotamente

Não sei porque demorei tanto para fazer um artigo sobre isso, mas enfim, estou fazendo agora.

Em geral, os provedores de acesso, ou os serviços de banda larga das mais variadas tecnologias (ADSL, Cabo, ATM etc) bloqueiam as portas 80, 22, 21, 25, e muitas outras portas baixas e conhecidas, e quanto a essas, não há nada a ser feito, a menos que tenha um plano de conexão empresarial, ou link direto com o backbone.

Além disso, o firewall do seu roteador, por segurança, bloqueia acesso para todas as demais portas.
Às vezes, entretanto, desejamos acessar um computador da nossa rede interna a partir de um computador externo conectado à Internet.
Para realizar esta tarefa, devemos:

1) Liberar uma porta (alta) no nosso roteador a partir da configuração do firewall
2) Especificar o endereço IP do computador desejado na rede interna
3) Especifiar a porta que computador da rede interna estará escutando no serviço por ele ofertado.

Deste modo, quando um computador externo procurar pelo IP do seu roteador na Internet solicitando o serviço da porta especificada (digamos, 20000), o roteador irá redirecionar a conexão para o computador da sua rede interna que está provendo o serviço na porta real que está sendo escutada (digamos, 21).

No OpenWRT, seguindo este link, vemos que precisamos configurar, o /etc/config/firewall, ou /etc/firewall.user, no caso de deixarmos as nossas configurações de usuário separadas das configurações do sistema.

Devemos incluir, em quaisquer dos dois arquivos, o seguinte trecho:
 
 config redirect                              
        option target 'DNAT'               
        option src 'wan'                      
        option dest 'lan'    
        option proto 'tcp udp'
        option src_dport '20000'  #porta que o roteador vai escutar     
        option dest_ip '192.168.1.171' #endereço do computador destino na rede interna
        option dest_port '21' #porta que o computador destino está escutando
        option name 'min' #pode ser qualquer nome
Depois, devemos reiniciar o firewall:

/etc/init.d/firewall restart

Para mais informações sobre redirecionamento de portas e configuração de firewall no OpenWRT, clique aqui.

domingo, 29 de abril de 2018

Redirecionamento com pipes para um programa a ser debugado no gdb

Com pipes, podemos colocar num arquivo uma série de parâmetros a serem processados por um programa, e redirecioná-lo como entrada para o programa.
Mas se chamarmos um gdb programa < arquivo, a entrada vai para o gdb, e não para o programa a ser debugado.

Para evitar isto, ao abrir o programa no gdb, podemos redirecionar o arquivo para o programa a ser debugado fazendo o redirecionamento como comando run:

(gdb) run < 3.in

Fonte: https://stackoverflow.com/questions/8422259/gdb-debugging-with-piped-input-not-arguments

quarta-feira, 24 de maio de 2017

Fazendo Download de uma estrutura de diretórios inteira em páginas com o wget

 Suponha que deseja baixar o diretório diretorio2 no site

http://site.com/diretorio1/diretorio2


Se simplesmente utilizarmos a opção de download recursivo (junto com -c que continua eventuais downloads interrompidos, claro)

  • wget -cr http://site.com/diretorio1/diretorio2,

obteremos a seguinte estrutura de diretórios dentro do diretório em que o comando foi invocado:

"http://site.com/diretorio1/diretorio2"


Provavelmente, gostaríamos de obter apenas o diretorio2, não é mesmo?


Para isto, precisamos utilizar as opções -nH e -cut-dir.
A opção -nH vai nos livrar de "http://site.com/", enquanto que cut-dir informa partir de que nível de diretório deve-se baixar a partir do site.
Assim, o comando a ser dado é
  • wget -cr -nH --cut-dir=2 http://site.com/diretorio1/diretorio2 ,
e obteremos apenas o diretorio2 na nossa estrutura de diretórios.

Pode ocorrer de dentro do diretorio2 haver uma árvore de diretórios com profundidade maior do que 5 ramos, e neste caso, ramos adicionais não serão baixados.
Para contornar este problema, incluimos a opção -l [número de ramos].
Assim, o nosso comando fica:
  • wget -cr -l 7 -nH -cut-dir=2 http://site.com/diretorio1/diretorio2
No exemplo, foram utilizados 7 ramos.

Fonte: Manual do wget (man wget)

quinta-feira, 8 de setembro de 2016

Comando printf no bash - Ou formatação de números

O comando printf no bash funciona de maneira parecida com a função homônima no C. A sintaxe para os comandos de formatação de variáveis são os mesmos.

Basicamente, o uso é:

i=9
printf "%02d" %i 

Saida:
09


Concatenando strings no bash

A maneira mais fácil é (dentro de um editor de texto, ou no próprio shell) escrever as strings dentro de uma variável, concatenando-as.

Por exemplo:
E=BandaEsquerda
D=BandaDireita
Bunda=$E$D
echo $Bunda
Saida:
BandaEsquerdaBandaDireita

Outra maneira - útil ao misturar palavras com strings para nomear arquivos, por exemplo - é utilizar chaves para distinguir a palavra da variável a ser com ela concatenada:
Ex:
I=10
rm backup${I}.dat

Alguns comando do GIT

De tempos em tempos, sinto a necessidade de versionar alguns arquivos.
Como não consigo ser um programador full time, nem escrevo artigos acadêmicos com tanta frequência, frequentemente acabo esquecendo comandos relevantes na hora em que mais preciso.
Então, aqui estão alguns comandos, com comentários sobre a razão deles.
Este é um rascunho, mas publicarei assim mesmo, senão não publico nada.



Iniciar versionamento de Diretório:

$ cd < Diretório >
$ git init

Informar arquivo a ser monitorado

$ git add < arquivo >

Checar status

$ git status

Enviar mudanças (to commit) e comentá-las

$ git commit -m "Comentários a enviar"

Criando uma tag para alguma versão
A ser publicado

Log de Mudanças

$ git log
$ git log --oneline -----> Mostra informações resumidas das versões
$ git log --all --graph --decorate --oneline

Comparação entre as duas últimas versões

$ git diff

Para enviar as atualizações, é necessário digitar "git add < arquivo >" antes de "git commit ..."

Voltando entre as versões

$ git checkout número_identificador < arquivo > -- (arquivo é opcional)

Criando repositórios online

git remote add origin < endereço do repositório >

Mandar para o repositório

git push -u master (ou qualquer outro ramo)

Receber do repositório

git pull -u master (ou qualquer outro repositório)


A opção -u adiciona a referência do fluxo de subida ao repositório para cada ramo atualizado.

Trabalhando com tabs (abas) no VIM

Às vezes, além de dividir a tela, para evitar trabalhar com várias divisões pequenininhas de tela, pode ser interessante abrir mais abas, como nos navegadores www.

Abrir uma nova aba
:tabnew

Navegar para a aba seguinte (se for a última, volta para a primeira)
:gt
ou aperte
Ctrl-PageDown

Navegar para a aba anterior (se for a primeira, vai para a última)
:gT
ou aperte
Ctrl-PageUp

Referências: Blog Buteco Open Source

sábado, 25 de julho de 2015

Processando arquivos e strings contendo espaços no Bash

A última vez que eu escrevi um script decente em bash foi em 2001. Lá se vão vários anos, até que eu esquecesse totalmente de como programar em bash. Tornei-me monolíngue em C.
Gozado, o que exige-se de um usuário de Windows é que saiba clicar no botão iniciar (ainda existe? Deixei de usar este "sistema" ainda na versão 95) e usar o pacote de escritórios da Microsoft. Já o que se exige de um usuário GNU/Linux é que ele tenha seja onisciente em computação... E isso é bom. Um dia chego à perfeição. :-D

Tive problemas com com arquivos cujos nomes continham espaços.
O delimitador de campos do bash é o espaço. Para lidar com nomes e strings contendo espaço (e fazer com que tudo seja interpretado como um único campo), podemos mudar para próxima linha.
A variável IFS é a responsável para mudar este delimitador.

Ao digitar no bash (por uma sessão), ou no script
IFS=$'\n' (ou IFS=$ \n) ,
altera-se o delimitador de campo, e aí conseguimos processar strings que contenham espaço, como nomes de arquivos com espaço.
\n é o caractere de próxima linha também no bash (velho conhecido de quem usa C).

segunda-feira, 20 de julho de 2015

Completion no VIM

Sabe aquele recurso de IDEs como Eclipse, NetBeans, ou mesmo o Bash, que propõem maneiras de completar um comando, nome de variável, complemento de comando etc?
Só agora descobri que ele está disponível no VIM (nunca precisei usar, mas acho que é útil principalmente quando se está programando em linguagens orientadas a objeto).

Para utilizá-lo, basta, ainda no modo de edição, pressionar 'ctrl+n' em cima de uma palavra ou comando ainda a completar.
Veja este exemplo, quando eu queria que fossem dadas opções para completar a função printf():

domingo, 12 de julho de 2015

Atualizando o firmware OpenWRT para uma nova versão

Depois de instalar a versão "factory" do firmware do OpenWRT para o TL-WDR4300 da TP-Link (ou do seu roteador), ou seja, a versão que substituiu o firmware original do fabricante, as próximas versões a instalar do firmware OpenWRT são de atualização, as "sysupgrade".
Uma vez que o sistema está funcionando a contento, já temos acesso à Internet, a rede interna funciona etc (ou, temos apenas a rede interna funcionando), podemos atualizar o sistema.

Para atualizarmos o firmware OpenWRT, precisamos copiar o arquivo com o firmware para o diretório /tmp do roteador. Isso pode ser feito através de comandos como scp (caso já tenha baixado o firmware no seu computador, e queira apenas copiar para o roteador).
Um exemplo seria
scp < caminho para o firmware em seu PC > root@openwrt:/tmp/

É possível, também, estar dentro do diretório /tmp, no roteador e utilizar o comando wget para baixar o firmware.

Depois de colocar o firmware no diretório /tmp, pode-se proceder de duas formas:

1) Sobreescrever a memória FLASH (Flash Overwrite)
Para mais instruções sobre este método, siga o link.
Neste método, porém, é preciso reconfigurar a sua rede e a sua conexão com a Internet novamente. Ajuda se tiver backups

2) Procedimento genérico de atualização do sistema (Generic Upgrade)
Este procedimento é descrito no link.
Foi o procedimento que eu segui.
Ele trás a vantagem de incluirmos os arquivos de configuração a preservar (menos os que estiverem em um disco USB) no roteador, e ao fazer a atualização, a rede já volta funcionando quando o novo firmware já estiver rodando, desde que não tenha configurações baseadas em pacotes que você teve de baixar por não estar por padrão dentro do firmware corrente).

Vou relatar aqui, os passos principais para realizar a atualização do modo que eu fiz

2.1) Informe ao OpenWRT quais arquivos de configuração deseja manter
Basicamente, você deve escrever o caminho para eles no arquivo /etc/sysupgrade.conf

2.2) Faça uma lista de pacotes que baixou para reinstalá-los no OpenWRT após a atualização (necessário para que os pacotes trabalhem em sintonia com o kernel mais atual)

Uma maneira de fazer isso é executar o comando proposto no último link:

find /overlay/ | sed s:/overlay::g | while read file; do opkg search $file; done | awk '{print $1}' | sort | uniq

2.3) Uma vez que o firmware, de algum modo, já esteja no diretório /tmp, utilizar o comando

sysupgrade -v /tmp/openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin

No lugar de openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin, deve ser o firmware do roteador por você possuído.

A saída do comando, deve ser algo parecido com isso:
Saving config files...
root/statistics
etc/sysupgrade.conf
etc/sysctl.conf
etc/rc.local
etc/profile
etc/passwd
etc/firewall.user
etc/dropbear/dropbear_rsa_host_key
etc/dropbear/dropbear_dss_host_key
etc/config/wireless
etc/config/system
etc/config/network
etc/config/firewall
etc/config/dropbear
etc/config/dhcp
Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...

Writing from to firmware ...
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...TRX header not found
Error fixing up TRX header

Writing from to firmware ...
Upgrade completed
Rebooting system...

Ou seja, mostrando os arquivos de configuração que você resolveu manter, e depois fazendo o upgrade.

Depois que o sistema rebootar, ele voltará já rodando com o novo firmware, e com a rede básica e a conexão com a Internet funcionando.
Lembre-se, se for o caso, de reinstalar os pacotes que você havia baixado na versão anterior do firmware.

domingo, 14 de junho de 2015

Instalando OpenWRT no TL-WDR4300 da TP-Link

Aviso: De todos as postagens que eu fiz até agora contando minhas aventuras com GNU/Linux, esta é a que você mais pode se f*der  muito se tentar reproduzir o que eu fiz de forma desatenta. Não me responsabilizo por qualquer c*gada eventualmente praticada, mas posso tentar dar uma ajuda, se estiver dentro da minha alçada de conhecimento. Gostaria de alertar que ainda não sei/precisei lidar com dispositivos "brickados" (na verdade, ainda estou para recuperar o meu WRT54G v8, da Linksys, e só vou tentar do jeito mais difícil quando tiver um tempinho. Nele, usei DD-WRT, porque a baixa quantidade de ROM não me permitiu instalar OpenWRT).
O que é OpenWRT?

OpenWRT é uma distribuição GNU/Linux para dispositivos embarcados, em particular roteadores wireless.
Ele possui uma vasta coleção de pacotes, que podem ser instalados no roteador de modo muito similar ao apt-get no Debian.
Ele pode aumentar o número de funcionalidades de seu roteador sem fio doméstico para que possua serviços e utilidades semelhantes a de um roteador profissional (a limitação, geralmente, está no tamanho da memória RAM, da ROM do aparelho, e claro, do processador), além de ser uma ótima plataforma para aumentarmos o nosso conhecimento de redes (além de Hacking de dispositivos).

No meu caso, eu comprei um TP-Link TL-WDR4300. Originalmente, estava interessado em uma máquina da Buffalo, com 32MB de ROM e 128MB de RAM, mas ela aumentou muito o preço e acabei comprando a que já citei anteriormente, com apenas 8MB de ROM, mas a mesma quantidade de ROM.
Fiz essa compra em julho do ano passado (2014), e tive de instalar uma versão "trunk" experimental da Barrier Break, construída por um usuário mais avançado. Queria ter avançado e mexido mais no sistema, mas Mecânica Quântica da pós não deixou, e eu demorei uns 2 meses só para configurar o aparelho, por pura falta de tempo.
A atual versão é a 14.07, "Barrier Breaker". As versões levam o nome de bebidas, e ao entrar no roteador por ssh, obtém-se (em inglês)a receita para fazê-la. Portanto, se você é um bebum (não é o meu caso, eu não bebo), tem mais uma razão para utilzar o OpenWRT. (Recomendo que a instalação e configuração sejam realizadas enquanto você está sóbrio).
Dentro de algumas semanas, uma nova versão "Chaos Calmer" sairá do forno.
 


Roteador Wireless TL-WDR4300 da TP-Link
Para instalar OpenWRT neste dispositivo, segui os seguintes passos, posteriormente detalhados:
1 - Verificar qual versão do dispositivo possui a partir da interface web do produto

Isto também pode ser feito conforme instruções deste site aqui.

2 - Utilizar a Interface do produto para fazer o backup do firmware para a restauração, caso seja necessário (embora o firmware possa ser obtido do site do fabricante), bem como das configurações anteriormente passadas, caso já estivesse utilizando o roteador antes de instalar OpenWRT (não foi o meu caso)

3 - Baixar a versão apropriada do firmware OpenWRT para o seu hardware (pode não ser o meu)

No meu caso, tive de baixar os arquivos openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin e openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-sysupgrade.bin .
O primeiro, será utilizado para instalar o OpenWRT retirando o firmware da TP-Link. O segundo será necessário para seguir instalando e configurando coisas no roteador, além de, daqui para frente, sempre atualizar o sistema a partir de imagens sysupgrade.

4 - Instalar a versão por algum meio (em geral, a primeira instalação é feita a partir da interface web do próprio firmware original do dispositivo)

É recomendável fazer isso a partir de um computador que esteja conectado ao roteador via cabo, pois após a atualização do firmware para OpenWRT, o sinal wireless está, inicialmente, desligado.
Dá para fazer isso de várias formas, já fiz por tftp (no meu Linksys, dispensei o jeito fácil e fiz por tftp), mas a mais simples é utilizando a opção de upgrade de firmware da própria interface web do roteador.
Menu de configuração da interface web
No caso do TL-WDR4300, deve-se acessar o roteador pelo endereço 192.168.0.1(este é o endereço padrão do roteador na rede) em seu browser, clicar em "System Tools" --> "Firmware Upgrade" no menu à esquerda, e irá aparecer a tela onde deverá ser colocado o arquivo da firmware.
Tela de atualização de firmware
 Selecione o arquivo que contém o firmware "factory" do OpenWRT.

No meu caso, é o caminho para o arquivo openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin .
Após a instalação do firmware, se bem sucedida, você conseguirá acessar o roteador por telnet. O usuário é "root", e não há senha.
Após a configuração de uma senha, com o comando passwd, o acesso via telnet será desativado e a conexão se dará por ssh.

$ telnet 192.168.1.1 --> Para acessar o roteador, cujo o endereço é 192.168.1.1
root@OpenWrt:~# passwd --> Para alterar a senha do roteador.
Para acessar o roteador, posteriormente, deve-se acessá-lo com ssh:
$ ssh root@openwrt (o DNS está ativado).
Depois de instalado o firmware "factory", deve ser instalado o firmware "sysupgrade", e depois, todas as demais atualizações serão a partir de imagens "sysupgrade".

No próximo artigo, aprenderemos como configurar a rede wireless e a rede WAN (a conexão com a Internet).
Os artigos por vir são:
- Instalação da versão sysupgrade e  Configuração do OpenWRT
- Backup das configurações e atualização do firmware
- Um pouco da arquitetura do OpenWRT (estrutura de diretórios, arquivos de configuração, formas de configurá-lo etc) e do TL-WDR4300
- Instalando QoS (Controle de Qualidade, para controlar a distribuição de banda entre os clientes)
- Instalando dispositivos de armazenamento
- Configurando serviços como SAMBA, torrent, NFS

Possíveis serviços em que tenho interesse em configurar:
- VPN

quinta-feira, 28 de maio de 2015

Configurando saída de áudio HDMI com a placa de vídeo radeon HD5450 no Debian

Isto é uma coisa que demorei muito para aprender (tipo, uns 5 meses), mas que quando configurado, torna-se fácil.
Cheguei a perder as esperanças, pois em algum momento, apenas o driver proprietário catalyst permitia tal configuração.
Digitando 'lspci' no prompt, obtemos, entre as várias saídas, este resultado, caso tenham a mesma placa que eu (ou da mesma família):

Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cedar HDMI Audio [Radeon HD 5400/6300 Series]


Temos de fazer 3 coisas:

1) Configurar o GRUB para enviar uma mensagem ao kernel para ligar a saída de som HDMI para o driver radeon

Para isso, editamos o arquivo /etc/default/grub, e colocamos a opção

GRUB_CMDLINE_LINUX="radeon.audio=1"
Depois, é preciso atualizar o grub:
# update-grub

2) Selecionar a saída de som associada à placa de vídeo com o alsamixer

Digitamos alsamixer no prompt, e simplesmente alteramos a placa de som para 'HDA ATI HDMI'

3) Selecionar, eventualmente em cada software e mixers, o dispositivo associado à placa de vídeo

Esta parte, se necessária, depende do aplicativo que você está utilizando.

Se desejar (eu ainda não fiz isso), você pode entrar na BIOS e desabilitar a placa de som onboard na BIOS (ou desisntalar, se realmente deseja fazer isso), a placa de som offboard

sábado, 9 de maio de 2015

Aproveitamento dos pacotes debian anteriormente baixados em outros computadores

Para você que não quer perder tempo (ou para pessoas como eu, que moram na periferia e são negligenciadas pelas empresas de telecomunicações com planos de 'banda larga' para lá de limitados), e deseja aproveitar os pacotes já baixados de um computador em outro, há soluções:

1 - Copiar o pacote para o computador  (ou acessá-los remotamente), instalar com dpkg -i  < arquivo do pacote > e resolver as dependências manualmente, utilizando dpkg -i iterativamente;

2 - Utilizar softwares como aptoncd (# apt-get install aptoncd) que pegam tudo o que está no diretório /var/cache/apt/archives do computador de onde os diretórios foram baixados, gravam em um cd, e copiam para o mesmo diretório no computador em que deseja copiá-los. Com todo o respeito aos camaradas que curtiram a Revolução dos Cravos enquanto nós afundávamos no período mais terrível da nossa ditadura, este método aqui descrito considero-o como "lusitano" :-) .

3 - Copiar você mesmo os arquivos de /var/cache/apt/archives do computador de onde os pacotes foram instalados para o mesmo diretório na máquina em que deseja (o método, você escolhe: pendrive, DVD-R(W), scp, sshfs, samba, nfs, a pia da cozinha etc).

Depois de copiado, você pode instalar o pacote que deseja de duas maneiras:

1 - Usando dpkg (na verdade, você ainda vai precisar usar apt, provavelmente)
      # dpkg -i < arquivo do pacote > --> Instala o pacote diretamente
      # apt-get -f install --> Instala o pacote resolvendo as dependências faltantes. Se os pacotes faltantes já existem no cache, não serão baixados.

2 - Usando apt
      # apt-get install < pacote >

Você também pode atualizar o seu computador para uma outra distribuição dessa maneira.
Caso tenha atualizado um de seus computadores, basta copiar os pacotes para o /var/cache/apt/archives do computador que ainda não foi atualizado, e proceder conforme descrito minha postagem sobre a atualização para o Jessie .

segunda-feira, 27 de abril de 2015

Atualizando Debian GNU/Linux de Wheezy (7) para Jessie (8)

Eis que no dia 25 de abril de 2015, sábado (no meio do FLISOL São Paulo, que aconteceu junto à CryptoRave no Centro Cultural São Paulo), o projeto Debian atualizou sua distribuição estável do Wheezy para o Jessie.

Catei a imagem de  Br-Linux , deliberadamente. Esta aqui, se eu não me engano, é a namoradinha do 3.0 :-D
Não sei se o projeto lançou-o nesta data para homenagear a Revolução dos Cravos, mas enfim, está lançado.

Vou relatar o meu procedimento para atualizar a distribuição aqui em casa.
Antes de começar, eu procurei atualizar todas os pacotes no Wheezy para as suas versões mais atuais. Creio que esse procedimento, talvez, seja desnecessário. Utilizei (sempre como root) apt-get update e apt-get upgrade com o apt configurado ainda para apontar para o Wheezy.

Depois, segui o caminho relatado no Capítulo 4 das Notas de Lançamento do Jessie.
A atualização consistiu em 3 fases:
  1. Fazer uma atualização segura de pacotes que não causam problemas
  2. Fazer a atualização completa
  3. Purgar (remover completamente, inclusive logs e arquivos de configuração) pacotes orfãos que não serão aproveitados na versão 9, e que já não são necessários na versão atual.
Parte 1: Fazer uma atualização segura de pacotes que não causam problemas

Para a primeira parte, eu, primeiro atualizei o arquivo de fontes do APT (o arquivo que informa o APT de onde baixar os pacotes da distribuição), presente em /etc/apt/sources.list. Basicamente, substitui tudo que tinha wheezy por jessie.
Depois, digitei os comandos (sempre como root)
# apt-get update --> Atualiza a lista de pacotes
# apt-get upgrade --> Faz a atualização mínima do sistema
Parte 2:  Fazer a a atualização completa do sistema
# apt-get dist-upgrade
Pode haver alguma interação na atualização do sistema quando da substituição de pacotes importantes.

Parte 3:  Purgar os pacotes que não serão utilizados, mas que não foram removidos.
# aptitude purge '~c'

No link que eu passei, há mais informações e considerações que devem ser consideradas, visite o link para verificar se você precisa observá-las.

Referências

Notas de Lançamento para Debian 8 (Jessie)

domingo, 17 de agosto de 2014

scp: Copiando remotamente arquivos e diretórios com espaços nos nomes

Digamos que você esteja em um servidor dentro de um diretório do tipo "Diretório com Espaços".

Para copiar alguma coisa desse diretório (ou o próprio), pode-se fazer:
$ scp -< opções> usuário@servidor:'"Caminho/do/Diretório com Espaços"' < Diretório e máquina de destino >

As aspas duplas servem, no terminal, para permitir que a inserção de espaços e caracteres especiais quando estes existem no nome do diretório são requeridos por algum outro comando ou sintaxe.
no lugar delas, podemos usar "\ ", ou \/, ou \\, para indicar que espaço " ", "\" ou "/", por exemplo fazem parte do nome que vamos digitar para ser operado pelo comando.
Se estivéssemos enviando comandos para o nosso terminal local, bastariam as aspas duplas (ou indicar com \ que o caractere seguinte deve ser considerado como parte do nome) para indicar ao shell que tudo entre elas faz parte do nome (nome de diretório, no caso do comando que estamos utilizando) que pretendemos operar através do comando.
Ocorre que precisamos passar este nome para ser operado pelo servidor, não pelo nosso terminal local!
Para que o que está em aspas duplas seja passado para o servidor, colocamos tudo entre aspas simples entre aspas simples.
Isso garante que o shell local não trabalhará com o conteúdo entre aspas duplas, apenas repassando para o comando scp operar com o conteúdo no servidor.

terça-feira, 29 de julho de 2014

Baixando páginas inteiras com wget: A forma elegante!

Da última vez que eu postei um artigo sobre o wget, tinha o objetivo de baixar todos os arquivos que estavam em um servidor, apenas.
Podemos, também baixar uma página, todas as imagens e links que fazem parte dela e, além disso, pedir ao wget para automaticamente corrigir os links para que apontem para dentro das páginas que já baixamos em vez de dar link quebrado ao fazer isso quando estamos offline.

O comando para isso é:

wget -crp -l < # de camadas >  -k < endereço que queremos baixar >

A opção -c permite-nos continuar doownloads interrompidos;
-r permite fazer recursão, ou seja, o download dos links dentro da página;
-l é o número de camadas para recursão, ou seja, quando "links dentro dos link devem ser seguidos". Digamos que na página X que você está puxando, há um link para Y, que tem também, um link para Z. Se você especificar 1 depois de -l, o wget não vai baixar a página Z;
-p permite fazer o download de todas as coisas que são necessárias para abrir a página corretamente;
-k corrige os links dentro das páginas, para apontar para as páginas já baixadas.

Fonte: man wget : Página de manual do wget

sexta-feira, 4 de julho de 2014

DNS local com DNSmasq

Estava há anos querendo fazer isso: chamar meus computadores pelo nome na minha rede doméstica. Cheguei a queimar um wireless-router tentando fazer isso (não, o procedimento não causa nenhum dano, mas é que eu aproveitei o DD-WRT para aumentar a potência do sinal emitido pelas minhas antenas, e aí deu nisso). E quando a gente descobre que é um procedimento simples, acaba percebendo que só perdeu tempo.

Bem, vamos à disposição da minha rede.
Agora, tenho um roteador Multilaser que tem somente 2MB de FLASH ROM.
Obviamente, fiquei "com o cu na mão" para trocar o firmware dele, então, para fazer um teste, instalei o DNSmasq em outro computador (apt-get install dnsmasq, no Debian).

O DNSmasq é um servidor DNS (Domain Name Service) que não é tão poderoso quanto o bind9 e outros, mas serve muito bem para uma rede doméstica, ou pequenos escritórios.
Além de servidor DNS para LANs com mascaramento IP (NAT), ele também é um servidor DHCP, e TFTP (Trivial FTP, muito em máquinas diskless).

Quando se instala-o, é necessário fazer pequenos ajustes na segurança, caso a máquina em que vai ser instalada seja o roteador (ou que tenha acesso a redes mais amplas, como a Internet), ou habilitar o serviço DHCP. Tudo isso pode ser configurado no /etc/dnsmasq.conf

Lembrando que se o DNSmasq não for utilizado, podemos fazer um "DNS português" (peço desculpas aos entusiastas da Revolução dos Cravos, que são muito bem-vindos!), copiando o mesmo /etc/hosts para todos os computadores da rede, contendo o nome e endereço IP de todos eles.

Agindo como servidor DHCP também, o DNSmasq pode pegar os nomes dos hostnames e permitir que todos os computadores da rede consigam acessá-los pelos nomes.
Caso haja computadores e dispositivos com IPs estáticos, basta incluí-los no /etc/hosts do computador em que será instalado o dnsmasq (podendo ser o próprio roteador, se você tem melhor sorte do que eu) no seguinte formato:

#/etc/hosts
#IPs da máquina    Nomes das máquinas
192.168.1.17          URSS

Depois, é só reiniciar o dnsmasq. No caso do Debian, basta:
#invoke-rc.d dnsmasq restart

Depois, penso que há dois modos de configurar os clientes para usar o seu servidor DNS (que já vai fazer DNS caching usando os servidores DNS do provedor de acesso)

1) Configurar os clientes para só usar o seu servidor DNS, manualmente, um por um.

No Linux, isto é feito editando o arquivo /etc/resolv.conf, e colocando apenas essa linha:
nameserver XXX.YYY.ZZZ.DDD #, onde XXX.YYY.ZZZ.DDD é o número de IP do seu servidor DNS (o computador onde você instalou o DNSmasq).

2) Configurar o seu roteador e/ou servidor DHCP para enviar aos clientes o endereço IP do seu servidor DNS

Se o seu servidor DNS  e DHCP for o próprio roteador, basta colocar o IP dele e pronto no local apropriado do arquivo /etc/dnsmasq.conf, que está bem comentado (e eu vou colocar várias referências para fazer isso no final do artigo).
O meu roteador não tem o DNSmasq instalado (apenas o DHCP), mas utilizei essa solução mesmo assim, por simplicidade. O meu roteador, antes enviava para cada cliente os DNS primário e secundário oriundos do provedor. Agora, o DNS primário é o computador onde instalei o DNSmasq, e o secundário é o DNS oriundo do provedor (perdendo o DNS secundário).

Instalar um DNSmasq no próprio roteador wireless em vez de um PC externo permite reduzir o consumo de energia, por isso não me importei com a "gambiarra" que acabei de fazer (vou deixar o DNS server desligado, de vez em quando, e os outros computadores precisarão de um servidor DNS para acessar os computadores da Internet pelos seus nomes e domínios).

In a DNS bind? Get Out With dnsmasq

How to dnsmasq - Debian Wiki 

Dnsmasq For Easy LAN Name Services

How to Install and Configure dnsmasq

 Dnsmasq setup

Run a local DNS resolver with OpenWRT

 


Wicd:: Acessando redes Wifi pela linha de comando com qualquer usuário

O wicd, na verdade, é como o Network Manager, e é uma dessas ferramentas de configuração de rede modernas que permite, entre outras coisas, que um usuário normal mude de rede facilmente, desde que esteja no grupo netdev.
Ele também tem ênfase em ferramentas clientes gráficas.
O Network Manager também possui ferramentas de modo texto (nmcli), que permite conectar-se a uma rede já existente, consultar que redes há disponíveis etc, mas não encontrei meio de configurar a rede pela linha de comando, sem antes configurá-lo com ferramentas gráficas (nmapplet, por exemplo).

Por essa razão, eu preferi o wicd.
Ele também tem ferramentas gráficas para configurar a rede pela interface gráfica, sendo esse, inclusive, o seu foco. Porém, diferentemente do Network Manager, as ferramentas de linha de comando não ficam devendo para as de interface gráfica.
Pode-se configurar e ativar a rede com o comando wicd-curses (depois de instalado, o que se pode fazer com apt-get install wicd-curses para o Debian).
Há, também o wicd-cli (apt-get install wicd-cli), que é mais parecido com o nmcli, mas ligeiramente mais funcional.

Como eu apenas precisar de uma ferramenta leve e em modo texto para acessar a rede wireless, o wicd-curses já cumpriu plenamente com os objetivos.

sábado, 7 de junho de 2014

Ah, se todos os manuais de comando tivessem exemplos...

Estava feliz por ter achado o cnetworkmanager para gerenciar conexões de rede (mas principalmente wireless)facilmente pela linha de conando no Debian Squeeze, quando resolvi atualizar para o Wheezy.

Descobri que o cnetworkmanager não mais estava funcionando no Wheezy, e que para a nova versão do NetworkManager, este pacote para gerenciar rede na linha de comando, simplesmente, havia sido removido.

Restou, então o nmcli, que já é parte do pacote network-manager.
O problema é que o man dele não me pareceu muito simples.
Eu tenho o defeito de só executar um comando quando tenho certeza de que entendi o manual e que ao ser executado, o comando funcionará. Isto pode ser bom em termos de segurança, mas é terrível para o aprendizado, já que aprende-se melhor fazendo.
Uma opção interessante, seria escrever exemplos dos comandos e de suas opções após estas serem explicadas.
Alguns manuais de comando possuem exemplos, se eu não engano, é o caso do comando tar.

Felizmente, existe o site "linux commands examples", que faz exatamente isso!

Pretendo escrever, pelo menos, mais 3 postagens sobre conexões à redes WiFi utilizando a linha de comando, desde a forma mais clássica, onde o usuário root é necessário, até comandos que qualquer usuário pode utilizar na linha de comando.

Por enquanto, para usar o nmcli, consultei este link aqui.

domingo, 18 de maio de 2014

Congelamento do GRUB 2 após a mensagem "Welcome to GRUB!"

Minha nova máquina, que estou configurando (novomarx) é um Intel Core 2 Duo de 1,8GHz, placa P5LD2-X HD de 80GB IDE (PATA), placa de vídeo NVIDIA GeForce 730GS de 256MB.
Ao instalar o Debian 7 (Wheezy), o GRUB 2 congelava após a mensangem "Welcome to GRUB!", e nem aparecia o menu.

O problema foi resolvido após seguir as recomendações deste link.

A "solucionática" consiste em entrar no arquivo /etc/default/grub, e descomentar a opção

GRUB_TERMINAL=console
Depois, rodar:
#update-grub

quarta-feira, 15 de janeiro de 2014

Dividindo a tela no VIM

Para dividir a tela no VIM com o arquivo atual, basta pressionar no teclado: Ctrl + w + s .

Para a janela voltar ao normal (em cima da janela atual): Ctrl + w + o .

O VIM trabalha com o conceito de buffers, e cada janela é a vizualização de um buffer.

Para fechar e salvar tudo, pressione ESC (sai do modo de edição), e:

:wall (salva tudo). :qall (fecha tudo).

Abrir e fechar janelas: CTRL + w + n Abre uma nova janela, sobrepondo a atual (:new) CTRL + w + q Fecha a janela atual, e termina após a última (:quit) .

 CTRL + w + c Fecha a janela atual (:close) .

Manipulação de Janelas: CTRL + w + w Alterna entre janelas (salta de uma para outra)
CTRL + w + j desce uma janela j .
CTTL + w + k sobe uma janela k .
CTRL + w + r Rotaciona janelas na tela .
CTRL + w + + Aumenta o espaço da janela atual (observe que o W é maiúsculo) CTRL + w + - Diminui o espaço da janela atual (observe que o W é maiúsculo) Para mais informações, a referência é o wikilivros sobre o VIM, da Wikipédia.

segunda-feira, 6 de janeiro de 2014

Configuração do /etc/X11/xorg.conf para a placa de vídeo HD5450

xorg.conf
# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "InputDevice"
 Identifier "Generic Keyboard"
 Driver  "kbd"
 Option  "XkbRules" "xorg"
 Option  "XkbModel" "abnt2"
 Option  "XkbLayout" "br"
 Option  "XkbVariant" "abnt2"
 Option  "XkbOptions" "abnt2"
EndSection

Section "Module"
   Load  "record"
 Load  "GLcore"
 Load  "glx"
 Load  "extmod"
 Load  "xtrap"
 Load  "dri"
 Load  "dbe"
EndSection
       

Section "InputDevice"
 Identifier "Configured Mouse"
 Driver  "mouse"
EndSection

Section "Device"
 Identifier "Device0"
# Option  "UseFBDev"  "true"
 Driver  "radeon"
# Algumas op藤畫s de acelera藤υ 3D
 Option "XAA"
 Option "AccelMethod" "1" #1 pra PCIExpress
 Option "GARTSize" "64"
 Option "EnablePageFlip" "1"
 Option "ColorTiling" "1"
EndSection

#Section "Monitor"
# Identifier "Configured Monitor"
#EndSection

Section "Screen"
   Identifier  "Default Screen"
   Monitor     "Configured Monitor"
   DefaultColorDepth 24
   SubSection "Display"
      Depth 24
      Modes "1024x768" "800x600" "640x480" "320x200"
   EndSubSection
EndSection

Placa de Vídeo ATI Radeon HD5450 no Debian 7 (Wheezy)

Esta placa já é nativamente suportada no GNU/Linux, mas aparentemente, a performance dela ficou horrível usando o MAME (8% da velocidade, inicialmente).
Depois, reconfigurei o xorg.conf, e obtive 22% da velocidade.
Faltava, porém o firmware (sem ele, o desempenho dela perde até para o driver VESA), com o pacote firmware-linux-nonfree).
Depois, o MAME rodou a 100%.]

Comprei esta placa de vídeo porque não entendi a razão do driver da minha placa chrome9 ter piorado da versão 5 para as versões 6 e 7.
Continuo achando estranho  - e é esta a razão pela qual eu mantive o meu Debian 5 funcionando até hoje.
Até fevereiro, eu desinstalo esse sistema de bons serviços prestados.

terça-feira, 16 de julho de 2013

Listando os arquivos presentes em um pacote já instalado...

O comando para tal é:
dpkg -L nomedopacote


Para maiores detalhes sobre como trabalhar com pacotes Debian, este guia prático do pessoal do Debian-BR é muito útil!

Reempacotando pacotes debian já instalados no sistema

Podemos reempacotar programas já instalados. Isto é útil para fins de backup, fazer instalações "Franksteins" ou instalar em outros computadores quando não temos outra forma de obter o pacote (sem acesso a um CD-ROM com o Debian, não tem o pacote no CD, ou estamos sem Internet), mas sabemos que o pacote está instalado em algum lugar.
Precisamos instalar o pacote "dpkg-repack"
apt-get install dpkg-repack
Depois:
dpkg-repack [nome do pacote]

Para mais informações, podemos seguir este link.

Pegando arquivos das distribuições antigas do Debian

A cada dois anos, em média, uma nova versão da distribuição Debian é lançada (Só é lançada quando fica pronta, sem prazos).
A versão antiga, ainda é suportada, e seus pacotes ainda ficam disponíveis por cerca de mais um ano após o lançamento da versão nova.
Eis que quando você digita, por exemplo, "apt-get update", e o sistema retorna uma mensagem de erro.
Para continuar a ter acesso ao pacotes da distribuição antiga, é necessário substituir os links no  arquivo /etc/apt/sources.list para:
deb http://archive.debian.org/debian/ [nome da distribuição] main contrib
Por exemplo:
deb http://archive.debian.org/debian/ lenny main contrib
Em maiores detalhes, podemos consultar este link.