segunda-feira, 8 de janeiro de 2018

PCID/INVPCID: fundamentais agora em hardware Intel

Para não comprometer demais o desempenho de programas que dependam muito de chamadas de sistema, os patches que mitigam a falha Meltdown têm requerimentos importantes, para os quais ninguém dava bola antes: PCID (Process-Context IDentifier) e a instrução INVPCID (INValidate Process-Context IDentifier).

PCID está presente desde os Intel Sandy Bridge, a segunda geração dos i3/i5/i7. INVPCID está presente desde os Haswell, a quarta geração.

Windows requer INVPCID para não precisar recorrer a flushes de TLB a cada interrupção ou troca de contexto. Linux requer pelo menos PCID.

No Linux, procure por pcid e invpcid na linha flags de /proc/cpuinfo (ou na saída de lscpu). No Windows, use o Coreinfo (asterisco ao lado de PCID e INVPCID).

Nota 1: PCIDs são suportados apenas em x86-64.
Nota 2: Processadores AMD não são afetados.

sábado, 6 de janeiro de 2018

Derreteu


Sobre as falhas Meltdown e Spectre:

https://meltdownattack.com/
https://googleprojectzero.blogspot.com.br/2018/01/reading-privileged-memory-with-side.html
https://gist.github.com/woachk/2f86755260f2fee1baf71c90cd6533e9
https://github.com/marcan/speculation-bugs/blob/master/README.md
https://groups.google.com/forum/m/#!topic/mechanical-sympathy/L9mHTbeQLNU
https://www.renditioninfosec.com/files/Rendition_Infosec_Meltdown_and_Spectre.pdf
https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html
https://www.redhat.com/en/blog/what-are-meltdown-and-spectre-here%E2%80%99s-what-you-need-know
https://access.redhat.com/articles/3307751
https://www.raspberrypi.org/blog/why-raspberry-pi-isnt-vulnerable-to-spectre-or-meltdown/
https://www.schneier.com/blog/archives/2018/01/spectre_and_mel_1.html
https://fedoramagazine.org/kpti-new-kernel-feature-mitigate-meltdown/
http://www.kroah.com/log/blog/2018/01/06/meltdown-status/
https://support.google.com/faqs/answer/7625886
https://newsroom.intel.com/wp-content/uploads/sites/11/2018/01/Intel-Analysis-of-Speculative-Execution-Side-Channels.pdf
https://www.amd.com/en/corporate/speculative-execution
https://developer.arm.com/support/security-update
https://www.kb.cert.org/vuls/id/584653
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
https://sites.google.com/a/chromium.org/dev/Home/chromium-security/ssca
https://blogs.windows.com/msedgedev/2018/01/03/speculative-execution-mitigations-microsoft-edge-internet-explorer/
https://github.com/ionescu007/SpecuCheck

Como sempre: atualize seu sistema operacional, programas (navegadores, especialmente!) e BIOS/UEFI.

Mesmo assim, solução definitiva apenas com novo hardware...

Gostei dos logotipos.

sexta-feira, 29 de dezembro de 2017

486 ainda é levado em conta no GNU/Linux

https://lists.freedesktop.org/archives/systemd-devel/2017-December/040054.html
https://github.com/systemd/systemd/commit/d31b0033b7743393562a2e9d3c1e74afea981c13

Agora você, que ainda usa um 486, precisa achar uma distribuição que gere seus binários com o conjunto de instruções do velho processador, o que está cada vez mais difícil.

A instrução CPUID existe desde a safra final dos 486 da Intel (os com alimentação de 3,3V, acho...).

sexta-feira, 1 de dezembro de 2017

Adaptador USB-Serial HL-340

Este adaptador genérico (USB ID 1a86:7523) é encontrado por menos de 20 reais. Durabilidade parece não ser das melhores, mas para uso esporádico serve.


Driver para Windows está aqui:

http://www.wch.cn/download/CH341SER_ZIP.html

No Linux, existe suporte nativo através do módulo ch341. O dispositivo /dev/ttyUSB0 será criado automaticamente.

Relacionado:
Uma utilidade para as portas seriais (enquanto elas ainda existem)

domingo, 19 de novembro de 2017

Bem-vindo, Chrome

Depois de quinze anos com o Firefox sendo meu navegador principal, migrei para o Chrome. A principal motivação foi o mau estado do Firefox para Android e Linux. Em ambas plataformas, o Chrome é muito superior. Preciso ter meus favoritos, senhas, abas, sincronizadas. Manter navegadores diferentes em cada dispositivo está fora de cogitação.

Firefox para Android é pesadíssimo (não era alguns anos atrás); funciona mal em aparelhos com 1 GiB de RAM. Na versão para Linux, bugs se acumulam e recursos são preteridos.

Parabenizo o empacotador do Chromium* do Arch, Evangelos Foutras. Faz excelente trabalho, sempre em contato com os desenvolvedores do Google. Os bugs do pacote não caem no esquecimento e, quando não são resolvidos, pelo menos são encaminhados.

Para não ficar só no elogio, o Chrome para Windows desde a versão 52 renderiza fontes exclusivamente via DirectWrite, API adicionada no Windows 7. Com drivers de vídeo recentes, é excelente. No entanto, com drivers antigos, o resultado com texto pequeno agrada pouca gente. Isso me lembra que está na hora de trocar de PC...


* Quase não há diferença entre Chrome e Chromium, além deste ter código fonte disponível e não trazer a marca do Google. Fico com a facilidade de tê-lo diretamente no repositório.

terça-feira, 7 de novembro de 2017

Recomendações de canais do YouTube

Nada mais deprimente do que a seção em alta do YouTube. Contudo, sob a superfície, existe muito material excelente lá. Aqui vão algumas recomendações relacionadas a videogames.

lara6683 - Simpática, bonita e competente pianista, violinista. Destaque para suas interpretações de trilhas sonoras de videogames.

Lara plays the Dark World Theme from Zelda: A Link to the Past
Lara plays the Rocky Maridia theme from Super Metroid

Luminist - Conhece as trilhas sonoras de Metroid e Super Metroid? Então imagine-as interpretadas usando um sintetizador KORG MS-20 Mini mais alguns samples escolhidos a dedo. Nova vida às faixas originais. Tem também material de autoria própria, igualmente excepcional.

Metroid - Title Theme (Analog Synth remake)
Luminist - Super Metroid: Resynthesized - Brinstar - Overgrown

strafefox - Documentários sobre videogames antigos. Muito informativo. Produção profissional.

The Making of Sonic The Hedgehog : Inspirations
The Making of Donkey Kong Country

Classic Gaming Quarterly - Idem.

The Launch of the Sega Genesis (1989)
The Launch of the Super Nintendo (1991)

domingo, 5 de novembro de 2017

Um novo XFCE


Adotei o XFCE como ambiente desktop faz alguns meses. Fora das personalizações estéticas, é tudo padrão do Arch, que, por sua vez, é fiel ao upstream.

Portanto, Xfwm é o gerenciador de janelas, ou compositor. Até a atual versão 4.12, nenhuma estratégia para evitar tearing é usada. Os efeitos são tão visíveis que prejudicam até navegação na internet.

Na versão de desenvolvimento 4.13, os quadros, depois de montados com XRender, são exibidos via XPresent, extensão relativamente recente (2013) do protocolo X11, que depende de drivers que implementem DRI3. Drivers abertos são compatíveis; proprietários, não. Como fallback, o código também passou a suportar OpenGL, mas não tenho como testar. Segundo discussões no Bugzilla, XPresent/DRI3 exige menos do hardware gráfico e por isso tem preferência.

Decidi arriscar e migrei para o Xfwm 4.13 com ajuda do AUR. Demais componentes do XFCE ficaram nas versões oficiais do repositório. Minha "GPU" é uma Intel GM45 e uso o driver modesetting[1] do Xorg.

A diferença é simplesmente impressionante para quem estava acostumado com tearing infernal. Não há mais tearing! Nenhuma configuração especial é requerida[2]. Afinal, estamos em 2017. Será sem dúvida o principal diferencial do futuro XFCE 4.14.


[1] De uns tempos para cá, as principais distribuições dão preferência ao driver modesetting em hardware Intel minimamente recente (Gen4+). Nesse driver, 2D é acelerado quando possível com OpenGL.
[2] Até a versão 4.12, existe a opção "Sincronizar desenho ao branco vertical" (em "Configurações → Ajustes do gerenciador de janelas → Compositor"). Não serve para nada e foi removida na 4.13.

domingo, 22 de outubro de 2017

Novidade na mídia de instalação do Windows 10 1709

Na versão 1709, codinome "Redstone 3", a mídia do MSDN ("multi-edition") traz mais versões!


Antes, vinha apenas com a Home e a Pro. A presença da Home Single Language, especialmente, é bem-vinda. \o/

sexta-feira, 29 de setembro de 2017

Timeout ao desmontar compartilhamento SMB durante o desligamento

Pontos de montagem autofs são úteis para compartilhamentos de rede. Com o systemd, basta adicionar, em /etc/fstab, x-systemd.automount nas opções. Exemplo:

//192.168.0.10/Arquivos /mnt/Arquivos cifs credentials=/etc/senha-servidor,uid=marcos,gid=marcos,file_mode=0600,dir_mode=0700,x-systemd.automount 0 0

Isso evita que precisemos habilitar um serviço que implemente network-online.target, como NetworkManager-wait-online.service ou systemd-networkd-wait-online.service. Assim, não há atraso durante a inicialização. Apenas quando o ponto de montagem for acessado será montado.

Porém, durante o desligamento, a desmontagem sempre dava timeout e causava atraso com o NetworkManager ao usar conexões sem fio.

Analisando a cadeia de dependências, nada achei de errado. Estava em outro lugar o problema. O nm-applet, aquele programinha que fica no tray, salva conexões sem fio*, pelo menos ao usar o plugin nativo keyfile, com o parâmetro connection.permissions configurado para o usuário corrente. Isso diz para o daemon que, quando o usuário fizer logout, a conexão deve ser finalizada. Como o logout ocorre antes do processo de desligamento, a rede é desconectada cedo demais e a desmontagem falha. Portanto, precisamos tornar a conexão global, não restrita a usuário algum. Podemos fazer via nm-connection-editor:

Marcar "Todos os usuários podem conectar a esta rede"

Ou através da linha de comando:

$ nmcli connection modify <ssid> connection.permissions ""

(substituindo <ssid> pelo nome da rede)


* Conexões cabeadas são globais por padrão.

domingo, 27 de agosto de 2017

FSArchiver 0.8.2 suporta melhor o EXT4

Mais recursos são preservados: 64bit, inline_data, metadata_csum, project, sparse_super2.

Ao restaurar imagens de sistemas de arquivos EXT num dispositivo igual ou maior do que 16 TiB (considerando blocos de 4 KiB), o programa comporta-se da seguinte forma.

Sistema de origem EXT2 ou EXT3:

- O programa abortará. EXT2 e EXT3 não suportam volumes dessa capacidade. A mensagem de erro recomendará um quebra-galho: adicionar mkfs=ext4 (exemplo: fsarchiver restfs imagem.fsa id=0,dest=/dev/sdxy,mkfs=ext4). No entanto, o sistema EXT4 criado dessa maneira terá um conjunto de recursos reduzido. Use em último caso.

Sistema de origem EXT4:

- Se e2fsprogs < 1.42, o programa abortará. É versão mínima que suporta 64bit.

- Se e2fsprogs ≥ 1.42, os recursos 64bit e uninit_bg serão automaticamente habilitados, mesmo que não estejam presentes na imagem. O segundo é opcional, porém sem ele a formatação de dispositivos grandes demora uma eternidade (dependendo da velocidade, vários minutos!). Como trata-se de recurso antigo, presente desde o tempo em que o EXT4 foi declarado estável (lá no kernel 2.6.28), optou-se por sempre habilitá-lo. O sistema de arquivos já sofreu upgrade mais drástico de qualquer jeito — 64bit quebra compatibilidade de leitura e escrita com versões do kernel e programas que não o suportem; uninit_bg, por outro lado, quebra apenas de escrita. Por fim, para prevenir bug presente entre as versões 1.42 e 1.42.9 do mke2fs, resize_inode é sempre desabilitado.

terça-feira, 8 de agosto de 2017

Firefox com múltiplos processos

A primeira etapa do projeto Electrolysis (e10s) foi completada no Firefox 49. Não havendo extensões incompatíveis*, o navegador usa três processos: um para a interface, um para o conteúdo das abas e outro para os plugins.

Esse processo separado para a interface acabou com o vexatório cenário de parecer tudo travado quando sites pesados eram carregados.

Contudo, os conteúdos das abas ainda compartilhavam o mesmo processo. Um aba ocupada trancava as demais.

No Firefox 54, a segunda etapa do projeto (e10s-multi) começou a ser implementada. Desde que nenhuma extensão bloqueie, quatro processos para o conteúdo das abas são ativados (sob demanda) de acordo com uma probabilidade estabelecida pela Mozilla. Me perdi seguindo o código, porém acho que começou com 1% dos usuários. Na recém lançada versão 55, a proporção passou a ser de 50%.

Portanto, a partir da versão 55, número considerável de usuários rodará com múltiplos processos. Em about:support, olhe as linhas "Janelas multiprocesso" e "Web Content Processes". Se na primeira aparecer 1/1 e na segunda X/4, está ativo. Quem quiser habilitar manualmente, basta ir em about:config e configurar dom.ipc.processCount com 4.

Vinha rodando com quatro processos (configurados manualmente) desde o Firefox 54. Porém foi agora no 55 que realmente notei grande diferença. O navegador está mais ágil. Finalmente.


* É necessário declararem que funcionam com mais de um processo. Há desenvolvedores de extensões, no entanto, que não estão nem aí e até o momento não deram a mínima para isso. Dois exemplos: Ubuntu Modifications (Ubuntu e derivados) e Kaspersky Protection do antivírus homônimo (Windows). Nesses casos, nem mesmo a interface roda num processo separado. Total falta de respeito com os usuários. Que venha logo o Firefox 57, que suportará apenas WebExtensions, compatíveis out-of-box.

domingo, 6 de agosto de 2017

Driver de áudio Realtek que funciona em chipset SiS

Vamos programar o Delorean para voltar a 2007 mais ou menos. Quando a SiS ainda produzia alguns poucos chipsets. Em conjunto com CODECs de áudio da Realtek (ALC268 + SiS 672 especialmente), usando o driver High Definition Audio nativo do Windows 7 ou o oficial da Realtek, resultava em som falhado, com cliques, interrupções.

A empresa disponibilizou um driver modificado que resolve o problema. Está no FTP deles:

OnlyFor_SiS_Chipset_5898_PG281_VISTA_TurnOff_PullMode_Upd.zip

Usuário: enduser
Senha: enduser256

(fonte)

quarta-feira, 2 de agosto de 2017

Windows 10 não cria disquete de boot com MS-DOS

Chocado fiquei ao me deparar com este commit do Rufus.

Até o 8.1, a imagem usada desde o Windows ME para criar disquetes de boot com o MS-DOS 8.0 estava embutida em %WINDIR%\System32\diskcopy.dll. O Rufus usava-a para criar pendrives de boot com o MS-DOS. No Windows 10, o arquivo foi removido. Realmente, na janela de formação do Windows, em "Opções de formatação", não existe mais a opção "Criar um disco de inicialização do MS-DOS"!

Não que faça diferença, pois o FreeDOS dá conta do recado para a única tarefa ainda relevante em sistemas DOS: atualização de BIOS e firmwares.

Tropecei nisso dando uma revigorada no Guia de atualização de BIOS.

sexta-feira, 14 de julho de 2017

GbPlugin apronta de novo

Algumas instalações do Windows 10 1703 estão em loop de reparo automático. Causa? Nosso velho conhecido GbPlugin.

O arquivo gbpddreg64.sys (ou gbpddreg32.sys em 32-bit), presente em C:\Windows\System32\drivers, fica truncado (0 bytes). Como isso acontece ninguém sabe.

Esta tela aparecerá com
bcdedit /set {default} recoveryenabled no

Por padrão, o ambiente de recuperação inicializará em caso de falha. Quando aparecer a mensagem "Reparo Automático não pôde reparar seu computador", clique em "Opções avançadas → Solução de Problemas → Opções avançadas → Prompt de Comando".

Ache a letra relativa à unidade do Windows usando dir C:, dir D:, etc. Usarei D: como exemplo.

Então, remova o maldito:

del D:\Windows\System32\drivers\gbpddreg64.sys

ou

del D:\Windows\System32\drivers\gbpddreg32.sys

Feche o prompt e clique em "Continuar". Deverá funcionar.

O serviço continuará em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\gbpddreg. Porém sem o arquivo, a inicialização prossegue. Neste post do Microsoft Community, recomendam copiar o dito cujo de C:\Program Files (x86)\GbPlugin (ou C:\Program Files\GbPlugin em 32-bit). Prefiro excluir a tranqueira.