Criando um switch KVM por software

Nessa postagem mostrarei como fazer um KVM-switch para Linux usando apenas software e um pouco de hardware compatível.

Para começar você precisa dos seguintes dispositivos:

E dos seguintes softwares instalados: ddcutil e Solaar. A instalação deles no Fedora é bastante simples, já que eles estão nos repositórios oficiais do projeto:

sudo dnf install -y solaar ddcutil

Mouse e Teclado

É bem provável que você já tenha o Solaar instalado se você tem o teclado e o mouse da Logitech. De qualquer maneira, a documentação do projeto fornece os passos iniciais para configurar o Solaar, caso seja necessário.

Você pode inspecionar a configuração dos dispositivos usando o comando solaar show. Pessoalmente acho mais simples verificar na GUI do Solaar, já que ela também mostra quais os valores aceitáveis para o comando que usaremos adiante. A informação relevante para nós é a mostrada em “Change Host“. Ela mostra os nomes dos hosts com os quais seu dispositivo está pareado.

Usando as informações mostradas na UI, podemos usar a linha de comando para trocar o host ativo:

solaar config "MX Keys" change-host 1:mercury

Note que o nome do host tem que ser igual ao mostrado na UI e em alguns casos pode ser que somente o número do ID seja mostrado.

Repita o mesmo para o mouse, tomando cuidado de garantir que o ID utilizado é o ID do dispositivo, pois é possível que os eles sejam diferentes entre o mouse e o teclado (ex.: o host 1 do teclado é o host 2 do mouse, etc):

solaar config "MX Master 3" change-host 1:mercury

Monitor

Para controlar o monitor, usamos o programa ddcutil, que serve para interagir com o software do monitor através do conjunto de protocolos DDC-CI. Nesse link aqui, que serviu de referência pra implementar o controle do monitor, você encontra algumas dicas legais sobre o ddcutil.

O primeiro passo é detectar o monitor e ver quais as funcionalidades estão disponíveis:

sudo ddcutil detect

Em algumas distribuições pode ser necessário carregar o módulo i2c-dev. O Fedora já costuma fazer isso por padrão, então nenhum passo a mais é necessário. Se estiver usando outra distro, consulte a documentação.

Se executado com sucesso, o comando vai mostrar uma saída semelhante a esta aqui:

Display 1
I2C bus: /dev/i2c-2
EDID synopsis:
Mfg id: GSM
Model: LG Ultra HD
Serial number:
Manufacture year: 2017
EDID version: 1.3
VCP version: 2.1

Se você estiver usando um laptop, o comando também vai mostrar a informação do monitor embutido. Esse monitor embutido não é relevante para o KVM-switch virtual, portanto podemos ignorar as mensagens de erro referentes a ele.

A informação relevante mostrada pelo comando acima é o I2C bus. Mais especificamente, o número do bus (2, no caso de /dev/i2c-2). Tendo a informação do bus, podemos usa-la para descobrir as funcionalidades do monitor. Para o KVM-switch estamos interessados na funcionalidade “Input Source“. Podemos usar o seguinte comando para descobrir o ID da feature e os valores aceitáveis para configura-la.

sudo ddcutil capabilities --bus=2 | grep -A 5 "Input Source"

Feature: 60 (Input Source)
Values:
11: HDMI-1
12: HDMI-2
0f: DisplayPort-1
10: DisplayPort-2

Isso nos mostra que para mudar o dispositivo de entrada do monitor, podemos usar a feature ID 60 usando os valores (em hexadecimal) 0x11, 0x12, 0x0f e 0x10. Para testar, nesse caso:

sudo ddcutil --bus=2 setvcp 60 0x0f &

Executando esse comando já é possível trocar a entrada do monitor usando apenas a linha de comando.

Finalizando e Integrando no Gnome

Tendo em mãos os comandos para mudar o mouse, teclado e monitor. Podemos colocar tudo isso num script:

sudo ddcutil --bus=2 setvcp 60 0x0f &
solaar config "MX Keys" change-host 2
solaar config "MX Master 3" change-host 2

Repita o processo para outros hosts do seu KVM-switch virtual (ex.: micro 1, micro 2, etc). Não esqueça de dar permissão de execução nos scripts.

Por fim, podemos criar atalhos de teclado no Gnome para que execute esses scripts.

Como funciona?

No meu caso eu configurei os atalhos Ctrl+F2 para alternar para o laptop do trabalho e Ctrl+F3 para alternar para o laptop pessoal.

Obs.:

  • Imagino que funciona com qualquer teclado Logitech com suporte a múltiplos dispositivos (tipo o K810), mas eu não testei.
  • Assim como o teclado, acredito que deve funcionar com outros mouses com suporte a múltiplos dispositivos, tipo o Logitech M720 Triathlon.
  • É possível usar o ddcutil sem sudo e o artigo de referência mostra como fazer isso, porém fiz isso aqui.

Distribuições Linux compatíveis com o padrão Unix

Estava acompanhando uma discussão sobre sistemas Unix no grupo de usuários Fedora Brasil e resolvi pesquisar, a título de curiosidade, se existiam e quais as distribuições Linux certificadas dentro da Especificação Única do Unix (Single Unix Specification – SUS).

Segundo o artigo da Wikipedia que fala a respeito da SUS, existem duas distribuições Linux certificadas como Unix 03:

Ambas são distribuição Linux da família “Red Hat”. O artigo não diz, exatamente, se é uma variante do Red Hat Enterprise Linux – RHEL, portanto cito-o exatamente como descrito no artigo.

Obs.: a versão em português do artigo da Especificação Única do Unix também cita uma distribuição chamada Linux-FT, mas não encontrei nada recente sobre essa distribuição. Esse artigo do Linux Journal de Agosto de 1996 fala um pouco sobre ela. Parece que a distribuição/produto (???) foi adquirida pela Caldera.

Pacotes do OpenPHT para o Fedora

Eu empacotei o OpenPHT, um fork do Plex Home Theater mantido pela comunidade. O Plex Home Theater faz parte de um conjunto de aplicações para “media centers” e roda em diversos sistemas operacionais.

Os pacotes podem ser baixados desse link (no futuro espero contribuir o spec do pacote para o projeto upstream mas, antes disso, pretendo garantir que eles estão plenamente funcionais).

Para os interessados, as instruções de compilação podem ser encontradas nesse gist ou então, na especificação do arquivo RPM que está disponível neste link.

Atualizando o hostname de um Foreman Proxy

Recentemente tive que reconfigurar um dos meus proxies Foreman (cuja instalação e configuração em conjunto com a libvirt eu detalhei nesse post aqui) para que ele passasse a usar um hostname diferente do que eu tinha originalmente configurado. A princípio, essa era uma alteração, acredito eu, deveria ser possível fazer somente através do foreman-installer. Infelizmente não parece ser o caso, já que o instalador parece não atualizar todas as referências ao hostname antigo. Como não encontrei nada na documentação que explicasse isso, compartilho aqui os passos que usei para fazer a alteração na marra. Considerando que o hostname anterior do servidor não está mais disponível e o servidor já encontra-se devidamente configurado com o novo hostname, os passos para reconfigura-lo são os seguintes:

1. Gerar o novo certificado puppet para o servidor:

puppet cert generate <novo fqdn>

2. Editar o arquivo answers, localizado em /etc/foreman-installer/scenarios.d/foreman-answers.yaml, alterando todas as ocorrências do hostname anterior para o novo hostname. E, sim, isso inclui alterar as configurações de certificados para que elas apontem para novo certificado (ex.: websockets_ssl_key, websockets_ssl_cert, puppet_ssl_key, etc).

3. Rodar novamente o instalador do proxy:

foreman-installer \
     --no-enable-foreman \
     --no-enable-foreman-cli \
     --no-enable-puppet \
     --enable-foreman-compute-libvirt \
     --enable-foreman-proxy \
     --foreman-proxy-dns=true \
     --foreman-proxy-dns-provider=virsh \
     --foreman-proxy-dns-interface=virbr0 \
     --foreman-proxy-dhcp=true \
     --foreman-proxy-dhcp-managed=false \
     --foreman-proxy-dhcp-interface=virbr0 \
     --foreman-proxy-dhcp-vendor=virsh \
     --foreman-proxy-dhcp-gateway=192.168.122.1 \
     --foreman-proxy-dhcp-range="192.168.122.2 192.168.122.254" \
     --foreman-proxy-dhcp-nameservers="192.168.122.1" \
     --foreman-proxy-tftp=true \
     --foreman-proxy-tftp-servername=<endereço IP do servidor TFTP> \
     --foreman-proxy-foreman-base-url=<url do servidor Foreman usando o novo FQDN> \
     --foreman-proxy-trusted-hosts=<hostname do servidor Foreman> \
     --foreman-proxy-oauth-consumer-key=<oauth consumer key> \
     --foreman-proxy-oauth-consumer-secret=<oauth consumer key>

Obs.: não esqueça de ajustar o comando do instalador de acordo com o seu ambiente, as funcionalidades gerenciadas pelo foreman e qualquer outra configuração do seu ambiente. O comando acima deve ser utilizado como um exemplo.

4. Revogar os certificados antigos:

puppet cert revoke <fqdn antigo>

E pronto. Depois feito isso, o proxy deve passar a usar o novo hostname.

Configuração do touchpad do Macbook no Fedora

Caso você esteja rodando Fedora em um Macbook e esteja descontente com o comportamento do touchpad, recomendo dar uma olhada nesse meu repositório Copr. Conforme eu expliquei nesse post em inglês, eu empacotei uma configuração do Synclient/Synaptics que deixa o comportamento do touchpad parecido com o do OS X.

A instalação é abusrdamente simples:

dnf copr enable orpiske/synconf
dnf install -y synconf

Basta reiniciar o sistema e o comportamento do touchpad deve ficar semelhante ao do OS X.

 

Configurando o Foreman para Provisionamento com a Libvirt

Introdução

O objetivo desse artigo é fornecer um guia rápido de como configurar o Foreman para que ele possa provisionar máquinas virtuais usando as funcionalidades fornecidas pela libvirt. Ele fornece um material adicional de apoio à excelente documentação fornecida pelo projeto. Esse guia foi feito levando em conta um ambiente com Red Hat Enterprise Linux 6.7 ou 7.2, devendo funcionar sem maiores problemas em ambientes baseados em CentOS 6 ou 7.

Sobre o Foreman

O Foreman é uma ferramenta que permite gerenciar o ciclo de vida de servidores físicos ou virtuais, facilitando o provisionamento de sistemas e aplicações, automação de tarefas e, de modo geral, facilitando o gerenciamento de servidores. Entre outras coisas, ele permite a instalação desassistida de máquinas virtuais e o seu provisionamento em “Compute Resources” como OpenStack, Amazon EC2 e libvirt. Para ter uma ideia de como ele funciona, recomendo esse vídeo:

Continue reading “Configurando o Foreman para Provisionamento com a Libvirt”

Trocando rapidamente a placa de saída de audio no Mountain Lion

Algumas semanas atrás eu comprei um headset e uma placa de audio USB para usar o Skype e ouvir música sem incomodar meus vizinhos. Porém, ter que ficar abrindo as preferências de som (sound preferences) me incomodava demais.

Fuçando pelo OS X eu descobri que ao segurar Alt Option e clicar no ícone de som é possível trocar qual a placa de som vai ser utilizada sem precisar abrir as preferências de sistema. O resultado, é semelhante a isso aqui

Opções de som
Opções de som

Configuração de teclado BR ABNT2 no Evev

Dica de última hora para quem ficou muito tempo afastado 🙂 e nunca mexeu com o evdev: para configurar o suporte a BR ABTN2 no Evev você pode fazer o seguinte:

cp /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi /etc/hal/fdi/policy/

Editar as linhas de configuração do teclado. Ficará mais ou menos assim:

<merge key="input.xkb.layout" type="string">br</merge>
 <merge key="input.xkb.variant" type="string" />

Reinicie o daemon do hal e pronto.

Benchmarks do Firefox

Com toda essa discussão sobre benchmarks do Firefox, GCC, ICC, etc. Hoje resolvi fazer uns testes de desempenho do Firefox no Arch Linux versus Firefox no Windows.  No Arch, por não saber ao certo qual seria mais adequado, escolhi dois pacotes da AUR: firefox-optimized e firefox-pgo. Ambos foram compilados com -march=x86_64 -mtune=generic -O2 -fomit-frame-pointer -pipe (todas essas flags estavam por PADRÃO no arquivo makepkg.conf do Arch).

Continue reading “Benchmarks do Firefox”

Windows 7 unmasked

Como eu disse anteriormente, o Windows 7 é o primeiro de muitos windows que eu acho que vale a pena acompanhar. Acredito que, talvez, ele resolva os problemas que transformaram o Windows Vista em um fiasco. Acompanhando as aventuras do B. Piropo com os betas do Seven, topei com o artigo Windows Seven unmasked que aborda os aspectos mais técnicos do sistema. Vale a pena conferir se você está interessado em saber como está o desempenho, kernel, etc.

Windows Seven: beta público disponível

Navegando pela net eu topei com a informação de que o primeiro beta público do Windows Seven já está disponível. Como é um beta público não é preciso ter conta na MSDN. Outra boa notícia é que a Microsoft removeu a limitação de 2.5 milhões de downloads do produto. Ah, você também pode acompanhar a discussão sobre o desenvolvimento através do blog da equipe de desenvolvimento.

Sobre o Seven  não posso opinar, pois ainda não o usei (o download está em 15%, vindo a ~416kb/s, portanto mais 1 hora de espera)  mas afirmo que este é o primeiro sistema operacional da Microsoft que me interessa depois de muito tempo e vários fracassos.

Finalmente: Picasa para Mac OS X

Acabei de ver no Meio Bit que o Google finalmente lançou o Picasa para o Mac OS X. Sempre detestei o iPhoto por ser muito pesado e por não gerar as páginas com um visual agradável, então, costumava usar o Picasa no Linux para fazer isso. Se você está curioso demais para esperar pelo DMG ou não tem um Mac para testar, confira este vídeo.