quarta-feira, 31 de maio de 2017

Dicas para transplantes de Windows (VirtualBox)

Seguindo o post anterior, quando movi uma instalação do Windows XP para o VirtualBox, neste tratarei de alguns detalhes chatos do processo.

Cenário comum é pegarmos uma máquina baleada, cujo hardware não funciona mais. Tiramos o disco, fazemos uma imagem e colocamos dentro do VirtualBox. Usando o Ghost no Windows PE, em certos casos — ainda não identifiquei em quais circunstâncias ocorre —, o arquivo VMDK/VHD não fica com permissão de escrita para usuários normais, apesar das ACLs estarem corretas. Isso ocorre porque o arquivo é criado com um Integrity Level alto. ILs têm prioridade maior do que as convencionais ACLs. Para complicar, não achei ferramenta embutida no sistema que permita remover ILs (icacls permite modificá-los com a opção /setintegritylevel). Precisamos de ferramenta de terceiros (obrigado, Microsoft!) para fazê-lo: chml.exe (link). Como Administrador:

chml <unidade>:\caminho\imagem.vhd -rl

Pronto. O misterioso erro do VirtualBox reclamando que o disco virtual é somente leitura desaparecerá.


O próximo problema é aquela tradicional tela azul 0x0000007B ao iniciar. Com Windows Vista ou superior, ao usar o adaptador SATA (AHCI) do VirtualBox, modifique (offline se necessário) no registro do sistema convidado:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\msahci]
"Start"=dword:00000000

Caso não funcione, temos como alternativa o adaptador SAS (LSI Logic), suportado desde o Windows 7:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\LSI_SAS]
"Start"=dword:00000000

0 significa habilitado, 3 desabilitado. O adaptador SCSI (LSI Logic) também é suportado desde o 7 (subchave HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\LSI_SCSI). É considerado obsoleto, no entanto, e ao que parece foi removido no Windows 8.1. Prefira o adaptador SAS.

Geralmente é ControlSet001. Veja o valor de Default em HKEY_LOCAL_MACHINE\SYSTEM\Select para saber qual número usar.

Quando possível, faça uma faxina, desinstalando programas e drivers desnecessários, antes de virtualizar o sistema.

quarta-feira, 17 de maio de 2017

Novidades do EXT4

Fiquei um tempo afastado do EXT4. Por mais que mostre sua idade e seja considerado obsoleto pela Red Hat e Oracle, ainda é provavelmente o sistema de arquivos mais usado no mundo Linux.

Existem trezentas opções que podem ser habilitadas ou não no momento da criação do sistema de arquivos. E mais! O mesmo pode ser feito em sistemas existentes. Antes que pensem que acho isso bom: não acho. Porém é assim que os EXT vêm sendo desenvolvidos há décadas; logo, saudemos a tradição!

A partir do kernel 3.5, suporta checksums dos metadados. Considerado estável desde o 3.18. Quão estável? Não tenho ideia.

Parte 1: 64bit

Recurso adicionado na versão 1.42 da suíte e2fsprogs e presente desde o antigo kernel 2.6.28. O mke2fs (e atalho de conveniência mkfs.ext4) cria EXT4 com a opção 64bit ao detectar dispositivo maior que 16 TiB (auto_64-bit_support = 1 em /etc/mke2fs.conf) — mais especificamente 232 * tamanho_do_bloco (em 99% dos casos 4 KiB). Sem ele, não é possível formatar dispositivos acima dessa marca: o comando falhará. Podemos forçar a criação de volumes menores com o recurso habilitado usando a opção -O 64bit. Contudo, existe um bug no mke2fs, que impede o redimensionamento posterior caso o volume seja criado com essa opção e seja maior que o limite imposto pelo endereçamento de 32 bits (improvável usuários domésticos depararem-se com isso). Foi consertado na versão 1.42.10.

A partir da versão 1.43, 64bit é finalmente habilitado por padrão independentemente do tamanho do dispositivo \o/. Tais volumes são suportados desde o GRUB 2.02-beta1.

Parte 2: metadata_csum

Requer e2fsprogs 1.43 ou superior. Funciona melhor junto com 64bit. Por que não é requerido então? Sabe-se lá... coisas dos EXT.

Não interfere na compatibilidade com o GRUB.

Resumo

Tendo uma distribuição com kernel ≥ 3.18, e2fsprogs ≥ 1.43 e GRUB ≥ 2.02-beta1:

# mkfs.ext4 -O metadata_csum /dev/<dispositivo>

Mais ou menos, é equivalente ao XFSv5 no EXT4. Mas... ainda com limite de 16 TiB por arquivo. Há a opção bigalloc para remediar, porém recomendo migrar para outro sistema de arquivos (XFS, Btrfs) caso a limitação impacte seu uso.

terça-feira, 2 de maio de 2017

Compilação oficial do Firefox para Linux requer SSE2

Seguindo o Firefox x86-32 para Windows, a compilação oficial da Mozilla para Linux x86-32 requer processador com SSE2 a partir da versão 53. É compilado com -march=pentium-m -msse -msse2 -mfpmath=sse. Ou seja, o conjunto de instruções do Pentium M, que por sua vez é basicamente o conjunto de instruções do Pentium III + SSE2.

Uma pequena parte do código é compilada com -march=pentiumpro -mno-sse -mno-sse2 -mfpmath=387 para conseguir exibir esta mensagem e finalizar com erro:

This browser version requires a processor with the SSE2 instruction set extension.
You may be able to obtain a version that does not require SSE2 from your Linux distribution.


Não afeta as compilações das distribuições, que definem suas próprias opções.

Lembrando que em x86-64 nada disso interessa, visto que SSE2 sempre está disponível.