Postagens

Mostrando postagens com o rótulo linux

GPUs mínimas para uma boa experiência no desktop Linux…

Imagem
…considerando o Arch Linux. E sem gambiarras. A linha de corte para um desktop performático começa em GPUs Intel Gen 8 ou superior, ou seja, nos processadores Intel Core de 5ª Geração (Broadwell) em diante. Essas arquiteturas possuem suporte completo e maduro ao Vulkan através do driver anv do Mesa (e ao OpenGL via iris ). Em contrapartida, CPUs de 3ª e 4ª gerações — GPU Gen 7 (Ivy Bridge) e Gen 7.5 (Haswell) — dependem do driver Vulkan hasvk , que é limitado — embora o OpenGL ainda seja bem atendido de forma retroativa pelo driver crocus , que estende seu suporte desde a antiquíssima arquitetura Gen 4, do longínquo chipset i965 para Core 2 Duo. Há uma nuance com modelos da AMD. Até o kernel 6.18, o módulo amdgpu — um requisito obrigatório para a integração com o driver Vulkan radv do Mesa — suportava por padrão apenas a arquitetura GCN 3 (Volcanic Islands) e superiores. A partir do kernel 6.19, o amdgpu passou a ser o padrão também para as gera...

ZeroNG

Imagem
O finado Zero Linux dava trabalho para manter, pois muita coisa era compilada na mão. Um Linux pequeno , de modo texto, que rodasse da memória, ainda me fazia falta para tarefas de apagamento de unidades de disco, tendo alguns programas adicionais para outros fins. Cheguei à conclusão que poderia aproveitar praticamente tudo do Fedora, ganhando de brinde suporte ao secure boot. Aqui está! Download: https://www.mediafire.com/folder/xr3hzopxkj68n/zerong Binários do Fedora, espinha dorsal em C , dois programas caseiros ( limpadsk , rmusbbdev ) e uns shell scripts auxiliares. Inicia tanto em BIOS/CSM quanto UEFI. Secure boot suportado [1] . Pendrive pode ser criado com o Rufus . Extraindo o conteúdo do arquivo ISO para um pendrive em FAT/FAT32 automaticamente funcionará em UEFI sem ajustes adicionais. Gravação com o dd não é suportada. Esta é uma atualização do texto publicado originalmente em agosto de 2022, motivada por duas mudan...

Samba: SMB Directory Leasing e alterações feitas localmente

Imagem
O Samba 4.22 introduziu o SMB Directory Leasing , habilitado por padrão, que permite aos clientes armazenar em cache a listagem de diretórios por mais tempo. O servidor só notifica os clientes para invalidarem esse cache quando detecta mudanças. Isso acontece, porém, apenas quando as alterações ocorrem via protocolo SMB por outro cliente. Assim, modificações feitas diretamente no sistema de arquivos Linux não são percebidas pelo Samba; os clientes continuam usando o cache antigo e podem levar minutos até verem as mudanças. Vídeo sobre o recurso: Pelo que entendi, há previsão para implementação de monitoramento de mudanças locais usando o smbd-notifyd (um processo auxiliar para esse tipo de tarefa), mas na versão 4.23 a integração ainda não existe. Portanto, se você precisa que alterações locais sejam imediatamente refletidas nos clientes, desative o recurso na seção [global] de /etc/samba/smb.conf : smb3 directory leases = No Em cenários ...

Mais um driver NTFS no Linux

Quando escrevi sobre o driver ntfs3 ( 1 , 2 , 3 ), imaginei que haveria tração suficiente da comunidade para aprimorá-lo, com uma manutenção competente da Paragon. Não foi o que aconteceu. Quatro anos depois, o código funciona, mas está longe de alcançar a estabilidade necessária. Ainda não suporta a montagem de volumes NTFS sujos — aqueles não desmontados corretamente —, processo conhecido como journal replay , no qual o driver consulta o histórico de transações e refaz as operações incompletas (e ignora as não commitadas) para restaurar a atomicidade e a consistência do sistema de arquivos. Esse recurso foi prometido desde o início e, até hoje, está quebrado. Além disso, o código usa APIs obsoletas do kernel, que, embora suportadas, revelam uma manutenção precária. A Paragon também prometeu ferramentas para criação e, especialmente, verificação de volumes NTFS, mas não cumpriu. Agora, surge o anúncio do ntfsplus : https://lore.kernel.org/lkml/2025...

X11 não está morto

Imagem
O recente fork do Xserver do projeto X.Org, chamado XLibre , reacendeu o debate sobre se o Xserver estaria morto. Os desenvolvedores do fork argumentam, com razão, que há pouco interesse dos atuais mantenedores no Xserver, tratado abertamente como obsoleto. O código está em modo de manutenção mínima, com foco em atualizações de segurança e correções ocasionais de bugs graves, enquanto outros problemas e solicitações de mesclagem se acumulam. Um desenvolvedor que buscava impulsionar o Xserver introduziu inúmeras mudanças que quebravam API e ABI, algo inaceitável sem clara necessidade ou coordenação, já que drivers precisam ser ajustados e recompilados — e muitos deles, vale notar, também estão sem manutenção ativa. Várias alterações foram aceitas, mas muitas foram revertidas após usuários abrirem relatórios de bugs. A cada lote de mudanças, surgiam novos bugs relatando quebra de funcionalidades. O último veio de um programador da Nvidia, que repo...

Acesso a convidado do Hyper-V via nome de máquina não funciona

O Hyper-V tem um recurso interessante no comutador "Default Switch" que automaticamente adiciona um registro DNS no hospedeiro com o nome de máquina do convidado quando este obtém IPv4 via DHCP. É salvo em %SystemRoot%\System32\drivers\etc\hosts.ics e usa o domínio mshome.net . Meu convidado Fedora 40 não estava aparecendo lá. NetworkManager envia o nome de máquina na requisição DHCP: $ nmcli connection show eth0 | grep hostname ipv4.dhcp-send-hostname: sim [...] Descrição da propriedade no manual nm-settings : If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer. If the "dhcp-hostname" property is NULL and this property is TRUE, the current persistent hostname of the computer is sent. Depois de quebrar um pouco a cabeça, lembrei que a instalação do Fedora por padrão não configura um nome ...

Driver da Nvidia convive com o simpledrm

Kernel 6.5 parece ter resolvido a compatibilidade do simpledrm com o driver da Nvidia através do commit 5ae3716 — ainda requer os obsoletos drivers fbdev habilitados ( CONFIG_FB_EFI=y e CONFIG_FB_VESA=y ). A solução definitiva está presente a partir do driver 545. O módulo nvidia_drm ganhou a opção fbdev=1 , que torna-o compatível independente do commit citado e sem requerer os obsoletos drivers fbdev. Para usá-la, crie /etc/modprobe.d/blabla.conf (nome não importa, desde que termine em .conf ) contendo: options nvidia_drm modeset=1 fbdev=1 (são desativadas por padrão) É importante o initramfs ser recriado para conter esse arquivo. No Arch: mkinitcpio -P (requer o hook modconf configurado). Ambas podem ser especificadas igualmente nas opções de inicialialização: nvidia_drm.modeset=1 e nvidia_drm.fbdev=1 (hífen em nvidia-drm… também é aceito). Entretanto, em distribuições cujo kernel tenha este patch quebra-galho, a primeira opç...

Arquivo de swap? Sim, obrigado.

Havia um antigo post aqui no blog, lá dos primórdios, não recomendando partição swap. Com a popularização dos arquivos de swap, o texto foi expandido, aceitando-os a contra gosto. Só que isso foi antes de tecnologias recentes do Linux, que resolveram problemas associados ao uso de swap: melhorias no kernel e, principalmente, daemons que monitoram informações de pressão de memória, E/S e CPU do kernel ( Pressure Stall Information , PSI, disponível a partir da versão 4.20) e agem antes . O mais usado é o systemd-oomd [1] . Para ser eficiente em instalações desktop, precisa que os aplicativos sejam postos cada um num cgroup diferente , o que é feito via systemd --user pelo GNOME e KDE. Em ambientes que não o façam, como o XFCE, não é recomendado habilitá-lo. Mesmo assim, o kernel não é mais tão burro como antigamente . Minha restrição às partições swap continua: são pouco flexíveis. Logo, use sim arquivos de swap! Btrfs: # btrfs filesystem mkswapfile -...

Driver da Nvidia atravancando o progresso do Linux

Desde o kernel 5.14, lançado em 29 de agosto de 2021, existe o driver Direct Rendering Manager (DRM) genérico simpledrm , que usa o framebuffer fornecido pelo VBIOS/UEFI. Em distribuições que ativem-no ( CONFIG_DRM_SIMPLEDRM=y e CONFIG_SYSFB_SIMPLEFB=y ), adicionar nomodeset nas opções de inicialização passa a ser verdadeiramente um modo de segurança gráfico, que funciona com o Wayland: driver DRM nativo da GPU — como i915 , amdgpu , etc. — não é carregado e o simpledrm fornece um dispositivo DRM funcional [1] . LLVMpipe (Mesa) completa o time fornecendo OpenGL via software. Acaba beneficiando também o Xorg, pois seus drivers do espaço de usuário vesa e fbdev (há muito tempo com manutenção precária) não são mais requeridos. [ 0.599209] [drm] Initialized simpledrm 1.0.0 20200625 for simple-framebuffer.0 on minor 0 [ 0.600186] simple-framebuffer simple-framebuffer.0: [drm] fb0: simpledrmdrmfb frame buffer device https://fedorapro...

Mídia de instalação USB do macOS High Sierra (10.13.6) pelo Linux

Imagem
Consiste em criar uma única partição HFS+, colocar o conteúdo de BaseSystem.dmg dentro e depois copiar alguns arquivos para o diretório Install macOS High Sierra.app/Contents/SharedSupport (incluindo o próprio BaseSystem.dmg ). Para nossa sorte, o Linux tem suporte razoável, de leitura e escrita, ao HFS+, desde que não tenha journal . Instale o pacote hfsplus-tools (Fedora) ou hfsprogs (Debian). Não funciona em Hackintosh. Rode como root e adapte USBDEV . #!/bin/bash set -e # dispositivo a ser usado # apagará tudo! USBDEV=/dev/sdx # para outras versões, pesquisar em # https://swscan.apple.com/content/catalogs/others/index-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz # https://swscan.apple.com/content/catalogs/others/index-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog.gz # https://swscan.apple.com/content/catalogs/others/index-10.15-10.14-10.13-10.12-10.11-10.10-10.9-...

Ressuscitando, com Linux, um MacBookPro7,1

Imagem
Este MacBookPro7,1 (MC374BZ/A, ~2010) estava com o macOS 10.10 imprestável de tão lento. Consegui carregar o ZeroNG simplesmente pressionando option logo que inicia. Apple adotou UEFI por volta de 2006. Que vergonha para o ecossistema dos PCs. Disco zerado e variáveis do firmware apagadas; estranho quando funciona de primeira assim. Pesquisando sobre criação da mídia de instalação do macOS 10.13 — último suportado neste hardware —, achei a coisa confusa. Resumo para os preguiçosos como eu: melhor ter um Mac funcionando à mão para a tarefa . Como não tenho e o 10.13 já foi descontinuado, desisti (ver Mídia de instalação USB do macOS High Sierra (10.13.6) pelo Linux ). Windows 10 21H2 (x64) instala, porém não fica bom. Lá no fundo, o hardware desta máquina tem carinho por Unix-likes, né? Fedora Workstation 36 instalou, não sem tropeçar no particionamento "Personalizado Avançado". Bug menor , que, para quem não gosta do esquema ...

Programas ncurses exibidos incorretamente no PuTTY em UTF-8

Imagem
Antes Depois Muito antigamente, era necessário definir uma variável de ambiente para evitar o problema: # echo "export NCURSES_NO_UTF8_ACS=1" > /etc/profile.d/putty.sh A partir do PuTTY 0.71, a opção "Window → Translation → Enable VT100 line drawing even in UTF-8 mode" resolve.

ntfs3 desempacou

O mantenedor do código apareceu. Patches fluindo lentamente. Kernel 5.19 trará algumas correções . Não havendo mais imprevistos , o processo de estabilização começa a partir dessa versão — alguns commits serão backportados para o 5.15 LTS, porém o desenvolvimento principal acontece na árvore mainline .

ntfs3 empacou

Quando postei Linux 5.15 contará com novo driver NTFS , esperava que, lançado o kernel 5.15 com o novo driver ntfs3 da Paragon Software, começasse o processo de correção de bugs logo em seguida, com a estabilidade continuamente melhorando a cada nova versão. Infelizmente, não foi o que aconteceu. Konstantin Komarov, mantenedor do código, desapareceu e, no repositório oficial, o último commit é de 12 de outubro de 2021. Desde que a versão 5.15 foi lançada, nenhuma mudança relevante foi aplicada — apenas adequações à API interna do kernel feitas por outros desenvolvedores. No repositório de desenvolvimento , há nove commits adicionais, sendo o último de 24 de novembro de 2021. Andei testando-o no Fedora nas últimas semanas (5.15.x até 5.16.8 enquanto escrevo). O desempenho é muito melhor do que o NTFS-3G, porém é instável. É fácil fazê-lo travar com o rsync (o kernel fica em pé pelo menos) e links simbólicos e pontos de junção não são resolvidos corretament...

GRUB4DOS no MBR

Costumava usar o bootlace64.com para instalar o código de inicialização do GRUB4DOS no MBR. Contudo, com o dd dá para conseguir o mesmo resultado. Pegando o post anterior como exemplo: # dd if=grub4dos-0.4.6a/grldr.mbr of=/dev/sdx bs=440 count=1 conv=fsync,notrunc Copia os primeiros 440 bytes ( bs=440 count=1 ) do arquivo grub4dos-0.4.6a/grldr.mbr para o início do dispositivo /dev/sdx . Os demais 72 bytes (offset 0x01b8 até 0x01ff ) do MBR não devem ser alterados: são criados durante o particionamento. # dd if=grub4dos-0.4.6a/grldr.mbr of=/dev/sdx bs=512 skip=1 seek=1 conv=fsync,notrunc Copia o resto do código para o espaço não usado antes da primeira partição. Pula os primeiros 512 bytes ( bs=512 ) do arquivo ( skip=1 ) e do dispositivo ( seek=1 ). Dali para frente, escreve o restante do arquivo no disco. Agora é só copiar grub4dos-0.4.6a/grldr para a raiz do sistema de arquivos e criar, igualmente na raiz, o menu.lst de sua preferê...

Desafio: inicializar o IBM PC DOS

Imagem
Lendo a lista de desenvolvimento do FreeDOS, achei este link: IBM ServerGuide Scripting Toolkit, DOS Edition, version 1.3.07 Tem uma cópia do IBM PC DOS 7.1, um DOS moderno , com suporte a LBA e FAT32 (ufa!). Como inicializá-lo, criando o disco a partir de outro sistema, sem ter os códigos de inicialização à mão no ms-sys ? Para mim, o jeito mais simples é usando o GRUB4DOS [1] , que reconhece, através do comando chainloader , o arquivo IBMBIO.COM e aplica a mágica necessária para carregá-lo. A partir de qualquer Linux atual: wget https://github.com/chenall/grub4dos/releases/download/0.4.6a/grub4dos-0.4.6a-2021-12-17.7z wget ftp://ftp.software.ibm.com/systems/support/system_x/ibm_sw_sgtk_1_3_07_anyos_anycpu.zip 7za x grub4dos-0.4.6a-2021-12-17.7z unzip ibm_sw_sgtk_1_3_07_anyos_anycpu.zip echo ',,0c,*' | sfdisk --lock=yes --wipe=always --wipe-partitions=always --label=dos /dev/sdx mkfs.fat -F 32 -n PCDOS /dev/sdx1 mount /dev/sdx1 /mnt cp -pv grub4d...

Precisa de sync ao escrever diretamente em dispositivos de bloco?

É comum, em tutoriais sobre como escrever imagens ISOHybrid em pendrives, a recomendação: # dd if=xxx.iso of=/dev/sdx bs=1M status=progress # sync ( bs= variando dependendo do gosto do freguês) Esse sync após o dd , apesar de muito difundido, acredito não ter efeito. O manual da chamada de sistema sync() diz claramente que aplica-se apenas a sistemas de arquivos. O dispositivo de bloco bruto não é um sistema de arquivos. Portanto, o que faz efeito é adicionar a opção conv=fsync ao dd : quando a escrita termina no destino, chama fsync() no descritor de arquivo associado ao dispositivo, que o kernel traduz num comando adequado para os dados atingirem a mídia, como ATA_CMD_FLUSH, SYNCHRONIZE_CACHE, etc. Observando o comportamento do kernel através do strace , estou convicto que, quando o dd chama close() no descritor de arquivo do dispositivo, o kernel automaticamente garante que os dados chegaram na mídia quando a função retorna, não sendo ne...

UEFI:NTFS agora suporta secure boot

Ao usar o Rufus com o UEFI:NTFS (quando há arquivo maior do que 4 GiB na mídia de instalação do Windows), era necessário desabilitar secure boot temporariamente para conseguir inicializar pelo pendrive. Não mais a partir do Rufus 3.17. Pete conseguiu fazer a Microsoft assinar o UEFI:NTFS e o driver EFI baseado no NTFS-3G . Portanto, agora funciona com secure boot sem reclamar. Como os binários são públicos, podemos aproveitá-los no processo manual, para Linux, comentado no post Pendrive de instalação do Windows a partir do Linux (II) . Atualizei-o, pois o tamanho da partição para acomodar a imagem aumentou de 512 KiB para 1 MiB. Ou seja, refaçam seus pendrives de instalação do Windows com o Rufus 3.17+!

Linux 5.15 contará com novo driver NTFS

O driver ntfs do Linux é um código deficiente, com suporte à escrita quebrado, e sem manutenção. Tanto que algumas distribuições desativam-no e fornecem apenas o lento NTFS-3G , que roda no espaço de usuário. Depois de um ano de discussão, o novo driver ntfs3 da Paragon foi aceito e estará disponível na versão 5.15. Suporta leitura e escrita, compressão, ACLs, arquivos esparsos, replay do journal — processo de colocar o sistema de arquivos num estado consistente caso não tenha sido desmontado corretamente da última vez. Como todo novo código, será azeitado nos próximos meses, com a Paragon se comprometendo em mantê-lo (lista de discussão aqui ). Considero um driver muito promissor e importante para uma melhor interoperabilidade com o Windows. Os ganhos no desempenho serão significativos e tendem a melhorar com o tempo. Junto com os drivers exfat , presente desde a versão 5.7 , e vfat , fará o kernel ter suporte de primeira aos sistemas de ...

Backup no escuro no Linux

Um dos maiores trunfos do Linux é podermos usar instalações realmente pequenas para funções específicas. Tratarei aqui de um mecanismo de backup automático, sem intervenção do usuário: ao plugar um HDD externo, o mesmo será montado, uma pasta será copiada com o rsync e, por fim, o disco será desmontado e desconectado. A distribuição usada é o openSUSE Leap 15.2, porém pode ser adaptado para qualquer outra [1] . Identifique o dispositivo onde será feito o backup: # blkid /dev/sdb1 /dev/sdb1: LABEL="BACKUP123" UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4" PARTUUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" Crie a regra para o udev: /etc/udev/rules.d/99-hdd-externo.rules ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ext4", ENV{ID_FS_LABEL}=="BACKUP123", TAG+="systemd", ENV{UDISKS_IGNORE}="1", ENV{SYSTEMD_WANTS}+="meubackup@%N.service" ENV{UDISKS_IGNORE}=...