sexta-feira, 21 de abril de 2017

O útil blkdiscard

Todo mundo conhece o fstrim, que instrui o sistema de arquivos a avisar ao SSD quais blocos não está mais usando.

Digamos que temos uma partição e que desejamos apagar sua área por completo. Tradicionalmente, usaríamos algo como:

# dd if=/dev/zero of=/dev/sdxy bs=4k

Contudo, com SSDs, existe uma forma mais rápida e prática:

# blkdiscard -v /dev/sdxy

Esse comando usa a requisição BLKDISCARD da chamada de sistema ioctl() e nos entrega a área que compreende a partição /dev/sdxy zerada. Por usar o comando ATA TRIM, é rápido. Não funciona com discos rígidos. Neles, o kernel retorna erro e o comando avisa que não há suporte.

Ou seja, blkdiscard é análogo ao fstrim, porém trabalha no nível do dispositivo de bloco, não do sistema de arquivos. Pode ser usado no disco inteiro também (/dev/sdx).

Mesmo com HDDs, pode ser útil em certos casos*, pois com a opção -z (--zeroout) faz o mesmo que o dd faria:

# blkdiscard -z -v /dev/sdxy

blkdiscard -z usa a requisição BLKZEROOUT da chamada de sistema ioctl().

Com -v, mostra um sumário ao término do processo.

Versão mínima requerida do kernel é 2.6.28 (BLKDISCARD) e 3.7 (BLKZEROOUT) e a ferramenta existe desde a versão 2.23 da suíte util-linux.


* Não recomendo rodá-lo em áreas grandes demais, maiores do que alguns gigabytes, de discos rígidos. Enquanto a chamada de sistema não retornar, o processo fica no estado uninterruptible sleep e não pode ser terminado manualmente.

sexta-feira, 7 de abril de 2017

quarta-feira, 5 de abril de 2017

Unity e Mir estão mortos

Ubuntu Unity is dead: Desktop will switch back to GNOME next year (Ars Technica)

Vão para a cova ao lado da ocupada pelo Upstart. Que descansem em paz. GNOME + Wayland a partir do Ubuntu 18.04 LTS.

Visto que são projetos cobertos por CLA, não é de estranhar que tenham morrido...

A divisão desnecessária causada pelo Mir tem um fim com esse anúncio. Tivesse a Canonical não despejado FUD sobre o Wayland quando iniciou sua aventura solo sem apoio comunitário, talvez hoje tivéssemos o protocolo Wayland em estágio de desenvolvimento mais avançado bem como melhores compositores.

domingo, 2 de abril de 2017

Autoconfiguração de proxy com NetworkManager + PACRunner

No NetworkManager 1.6, temos novidades na forma de lidar com configuração automática de proxies. Agora, o NM pode obter a configuração via WPAD (DHCP) e enviá-la ao PACRunner, outro daemon, ativado via D-Bus, que trata de processar o JavaScript recebido e responder às requisições dos clientes. Os proxies podem ser configurados de acordo com a interface, caso mais de uma exista.

Os clientes falam diretamente com o PACRunner usando sua interface via D-Bus, ou, para os que linkam a libproxy, uma biblioteca de compatibilidade provida pelo daemon faz o mesmo. Essa biblioteca substitui a libproxy original, sendo mais simples e eficiente. Trabalha apenas consultando-o via D-Bus.

O design está aqui: https://wiki.gnome.org/Projects/NetworkManager/Proxies

        +----------------+
        | NetworkManager |
        +----------------+
                |
                | D-Bus (org.pacrunner.Manager.CreateProxyConfiguration)
                v
        +----------------+         +-----------+
        |   PACRunner    | <---->  | v8, mozjs |
        +----------------+         +-----------+
            ^         ^
            |          \ D-Bus (org.pacrunner.Client.FindProxyForURL)
            |           +----------+
            |                       \
            |                        v
            |             +----------------------+
            |             |                      |
            |             |    libproxy.so do    |
            |             |      PACRunner       |
            |             |   (API compatível)   |
            |             |                      |
            |             +----------------------+
            |                        ^
            |                        | libproxy API (px_proxy_factory_get_proxies)
            |                        v
            |                  +-----------+
            |                  | Cliente 2 |
            |                  +-----------+
            |
            | D-Bus (org.pacrunner.Client.FindProxyForURL)
            v
      +-----------+
      | Cliente 1 |
      +-----------+

Nem tudo são flores

E se o cliente não conversar com o PACRunner via D-Bus nem linkar a libproxy? Daí restam as variáveis de ambiente, que são terrivelmente problemáticas com autoconfiguração de proxy e não são suportadas pelo PACRunner.

Arch e openSUSE não empacotam o PACRunner. Já a versão que está no Fedora é velha demais e é compilada com --disable-libproxy.

Bugs

NetworkManager 1.6.2 (última versão estável enquanto escrevo) não envia a configuração ao PACRunner (BGO#780558).

Ainda ruim

Autoconfiguração de proxy no GNU/Linux tem avançado a passos de tartaruga. O esqueleto de uma configuração funcional existe; os clientes, contudo, precisam parar de depender de variáveis de ambiente. Visto que a libproxy possui uma API simples, o ecosistema poderia padronizar nela a tarefa de lidar com proxies. Dos componentes básicos, a libcurl é usada por muitos códigos que acessam a internet. Precisaria ser a primeira a passar a usá-la (patch existe).

sábado, 18 de março de 2017

Pavilion 14-n050br que não desliga

Este notebook HP Pavilion 14-n050br (E7J04LA#AC4) estava com o mesmo problema do Dell do post anterior. Veio de fábrica com o Windows 8, posteriormente atualizado para o 8.1 e depois 10. A última instalação do 10 foi limpa, em UEFI com Secure Boot habilitado.

Felizmente bastou atualizar o firmware da versão F.66 para a F.70 e foi resolvido. O driver Intel MEI ficou na versão instalada pelo próprio Windows 10 1607 (11.0.0.1146).

[Atualização - 24/03/2017] Escrevi cedo demais. Ocasionalmente ainda falhava. Atualizei o driver Intel MEI para esta versão 11.0.0.1177 e até agora não incomodou.

quinta-feira, 9 de março de 2017

Inspiron 5547 que não desliga

Este notebook Dell Inspiron 5547 (etiqueta de serviço 3SSFM22) não desligava. Veio com Windows 8, posteriormente atualizado para o 10 (instalação limpa). Primeira providência foi atualizar o firmware da versão A07 para a A10 (na A08 o Windows 10 passou a ser oficialmente suportado). No entanto, continuou o problema.

Solucionei instalando driver mais recente da Intel Management Engine Interface (11.0.0.1173):

http://www.dell.com/support/home/br/pt/brdhs1/Drivers/DriversDetails?driverId=3MD6D

A versão instalada pelo Windows 10 1607 era a 11.0.0.1146.

Complica o fato do driver listado no site da Dell para o modelo ser obsoleto e não resolver nada (o link acima é do Inspiron 5557).

sexta-feira, 3 de março de 2017

A boca livre não terminou

Havia testado o caso de máquinas com chaves do 8 e 8.1 salvas no firmware, nas quais podemos atualizar para o Windows 10 diretamente através de instalação limpa com a mídia adequada, mesmo após o encerramento em 29 de julho de 2016 da campanha de atualização em massa.

Hoje, fiz o teste que faltava: a partir do Windows 7, coloquei a mídia equivalente do 10 e rodei setup.exe. Atualizou e ativou.

Portanto, apenas foi descontinuado o mecanismo via Windows Update. Fazendo na mão continua sendo possível.

sexta-feira, 17 de fevereiro de 2017

Ghost 12 suporta (com bugs) EXT4

Desde 2015, o venerável Symantec Ghost[1], parte da Ghost Solution Suite (atualmente na versão 3.1), voltou a ser atualizado, saindo da cansada versão 11.5.1 para a 12. Além de suportar oficialmente os Windows modernos (ver esta tabela), também trouxe suporte[2] ao sistema de arquivos EXT4. Na 11.5.1, suportava apenas EXT2 e EXT3. Volumes EXT4 eram rejeitados com um tal erro 652 (Attempted to access an inconsistent Linux partition). Estranho não ter uma palavra sobre a novidade nas notas de lançamento.


A versão 12 preserva todas as características de volumes EXT4 formatados com o mke2fs da série 1.42[3] (via mkfs.ext4), com exceção de uninit_bg, que faz pouca diferença, pois afeta apenas o tempo requerido pelo e2fsck para verificar o sistema de arquivos.

No entanto, se o sistema de arquivos tiver o recurso 64bit habilitado (a partir do mke2fs 1.43 o é por padrão), daí o programa falha por completo. Não é exibido erro algum ao criar e restaurar a imagem, porém o sistema de arquivos fica totalmente corrompido depois de restaurado. Provavelmente o pessoal da Symantec está testando seu código usando distribuições velhas como referência. Vamos ver se em versões futuras (depois da 12.0.0.8065; GSS 3.1 MP5) arrumam esse problema. [Atualização - 07/04/2017] Resolvido na versão 12.0.0.10517.


[1] Existe uma confusão entre Norton Ghost e Symantec Ghost. Ver este meu post no fórum CdH sobre isso.
[2] Significa salvar só os dados, recriando o sistema de arquivos no momento da restauração, já entregando-o redimensionado caso necessário. Dessa maneira, o tamanho da imagem é otimizado. Similar ao FSArchiver. Não é uma cópia bit a bit como o dd faria.
[3] Até a 1.42, auto_64-bit_support = 1 era configurado em /etc/mke2fs.conf: habilitava 64bit apenas em volumes maiores que 16 TiB. Ou seja, na prática, na esmagadora maioria das instalações, o recurso não estava presente. Na 1.43, passou a ser sempre habilitado — o mesmo comportamento foi backportado para o pacote 1.42.9 do RHEL 7.

sábado, 11 de fevereiro de 2017

systemctl enable|disable|mask --now

A partir do systemd 220, a opção --now poupa uma invocação adicional do systemctl quando queremos habilitar e iniciar, ou desabilitar e parar um daemon.

# systemctl enable xxx.service
# systemctl start xxx.service

               |
               v

# systemctl enable --now xxx.service

# systemctl disable xxx.service
# systemctl stop xxx.service

               |
               v

# systemctl disable --now xxx.service

# systemctl mask xxx.service
# systemctl stop xxx.service

               |
               v

# systemctl mask --now xxx.service

Melhor de tudo: a equipe da Red Hat backportou o recurso para a versão 219 do RHEL 7.2.

quinta-feira, 9 de fevereiro de 2017

segunda-feira, 30 de janeiro de 2017

Bugs do Firefox para monitorar (II)

Mais dois bugs do Firefox me interessam no momento.

https://bugzilla.mozilla.org/show_bug.cgi?id=1207306

A partir do Firefox 49, separou-se o processo que renderiza a interface do que renderiza o conteúdo das páginas. Ainda assim, todas as abas continuam compartilhando um único processo. Nesse primeiro passo, o objetivo foi fazer a interface sempre ser responsiva. Usuários antigos devem lembrar como era irritante uma página pesada acabar com a responsividade da interface. Isso pelo menos está resolvido. Contudo, uma aba mal comportada ainda deixa as outras esperando. A solução virá com o projeto e10s-multi, que aproximará o Fx dos demais navegadores modernos, separando grupos de abas em diferentes processos.

https://bugzilla.mozilla.org/show_bug.cgi?id=336193

Para sistemas Unix-like. Fazer o navegador finalizar de forma limpa ao receber SIGTERM. Hoje, um killall firefox realiza uma finalização forçada, que causa o travamento do plugin-container e dispara a restauração de abas na próxima vez em que o programa iniciar. Bug constrangedor, que tem mais de 10 anos.

sexta-feira, 27 de janeiro de 2017

Super Metroid: uma obra-prima

Tenho assistido aos vídeos da série Retro Gaming do canal REACT no YouTube. Com um pouco de experiência nas costas, é interessante ver como o pessoal mais novo reage aos jogos que tínhamos décadas atrás.

Daí chego em:

SUPER METROID (30th Anniversary Metroid) (Teens React: Retro Gaming)

Aos 50 segundos, Tori diz I actually like retro games cuz normally they are pretty simple.

O quê???

Super Metroid é um dos melhores jogos de todos os tempos. Longo o suficiente*, complexo e difícil (sem ser impossível). O gráfico é perfeito, top da geração 16-bit, e a trilha sonora combina magistralmente com sua atmosfera sombria.

SUPER METROID - The Perennial Masterpiece | GEEK CRITIQUE

Wikia: Super Metroid


* Para jogadores normais. Viciados terminam-o coletando 100% dos itens em cerca de 1 hora.

terça-feira, 17 de janeiro de 2017

SUSE dentro do Windows 10

Make Windows green again – Part 1 (SUSE Blog) (via Thurrott.com)

É possível trocar o espaço de usuário básico do Ubuntu usado pelo Windows Subsystem for Linux (WSL) do Windows 10 pelo do (open)SUSE. Confesso que me sinto mais confortável no ambiente verde do camaleão.

E tem isto (não testei): https://github.com/RoliSoft/WSL-Distribution-Switcher.

quinta-feira, 29 de dezembro de 2016

Maldito Bluebirds dos drives ópticos LG

A LG andou colocando em alguns de seus drives ópticos um software inútil para Windows chamado Bluebirds. Depois, ao constatarem a burrada, disponibilizaram atualizações de firmware removendo-o.

Este aqui é um GH22NS50 com firmware TN00:



A porcaria aparece como um disco (CDFS) enquanto uma mídia de verdade não for inserida.