D-Bus será substituído no systemd

D-Bus será substituído no systemd

D-Bus será substituído no systemd

 D-Bus é um sistema de comunicação de inter-processo (em inglês = inter-process communication ou IPC) que é utilizado como uma das dependências do systemd para ativação de serviços. Não somente pelo systemd, porém o D-Bus é utilizado por vários outros serviços como durante durante o processo de instalação gerando um número de identificação para a máquina através do D-Bus machine id. Máquinas virtuais também dependem o D-Bus machine id ainda mais em casos de geração de templates que podem precisar de um novo D-Bus machine ID para garantir que recursos do sistema do hypervisor sejam instruídos para o guest correto. O comando dbus-uuidgen --get é utilizado verificar o id das máquinas enquanto que o comando bus-uuidgen --ensure é utilizado para validação sendo o dbus-uuidgen --ensure=/etc/machine-id é utilizado para gerar novo id após remover o link simbólico /etc/machine-id tendo origem em /var/lib/dbus/machine-id (fica aí essa dica para a LPIC1).


D-Bus tools
Ferramentas do D-Bus

 O Varlink também é um sistema de comunicação de inter-processo porém, sendo um protocolo que visa tornar os serviços acessíveis tanto para humanos quanto para máquinas do jeito mais fácil possível fazendo uso de arquivos de texto para descrever interface com todos os tipos de dados, metodo e etc.; não faz uso de números mágicos ou valores sem nomes, é fácil de debugar com qualquer ferramenta.

https://varlink.org/Screenshots
Screenshots - VARLINK

 O desenvolvedor Benno Rice do projeto FreeBSD disse em sua palestra sobre o systemd:

 "Eu não sou um grande fã do D-Bus, mas eu sou um grande fã de mensagens" ... "logs binários não é uma coisa ruim desde que você tem as ferramentas para separá-las, mas gosta de mensagens".

 Mas o motivo que o Varlink está sendo adotado no systemd no lugar do D-Bus não está relacionado a coisas como logs serem ou não binários e sim por questões de limitações sendo uma delas só estar disponível após o processo de boot, demora na implementação de novos recursos, complexidade, o fato de utilizar somente serialização, não podendo ser utilizado em muitos serviços básicos, performance baixa dentre outros problemas. Todos os detalhes podem ser conferidos na apresentação do Lennart no FOSDEM deste ano:



Varlink: a protocol for IPC

Site oficial do Varlink

varlink · GitHub

Mais sobre o systemd pode ser conferido aqui no blog

Leia também sobre init system OU sobre daemons


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Hack no emulador PCSX2 corrige erro de resolução nos jogos da SNK

GS/HW-GameDB: Add Limit 24 Bit Depth fix to db#13805

Hack no emulador PCSX2 melhora profundidade na resolução dos jogos da SNK.


 Recentemente foi publicado que uma nova hack foi adicionado à ultima versão do emulador PCSX2 que soluciona um problema gráfico 3D em 99% dos jogos da SNK. Essa hack permite que o limite de profundidade seja de 24 bits permitindo jogar em telas de alta resolução sem bugs nos cenários. A noticia pode ser lida no próprio site do projeto clicando aqui e um vídeo pode ser conferido abaixo:


 A pull request foi enviado por JordanTheToaster que está tendo boa aceitação pela comunidade e retorno bem rápido. Por hoje é só, povo.


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Raytracing no... Sega Saturn? 😲

Sega Saturn Does Ray Tracing - And No, We're Not Joking

Raytracing no... Sega Saturn? 😲

 Você não leu errado, algo que parecia tecnicamente impossível foi feito. Um desenvolvedor conhecido como XL2 postou um vídeo demonstrando uma solução para rodar raytracing nos jogos do Sega Saturn. Isso sim é o que chamamos de tirar leite de pedra quando um desenvolvedor talento resolve extrair o real potencial do hardware.


 XL2 é conhecido por já ter feito um "port impossível" do primeiro Unreal da Epic Games, mas parcial, e a demo pode ser baixada clicando aqui. Neste vídeo em seu canal, XL2 descreve como a técnica é realizada:

"Aqui está um teste de raytracing em um quarto pequeno. A função é bem pequena e poderia ser otimizada mais adiante: Eu simplesmente testo todas as vértices utilizando o BSP. A fonte de luz é, para o teste, simplesmente a posição da ultima fonte ativa dinâmica de luz (então praticamente o ponto de impacto da dispersion pistol). Raytracing não afeta entidades ainda, mas essa parte deve ser super fácil (um simples raio para testar se eles são afetados ou não).

 O comodo que você vê não tem luz estática, mas o raytracing pode ser usado para adição de luzes dinâmicas no topo das fontes de luz estáticas. Eu só atualizo um quarto das vértices por quadro. Quando um vértice falha no teste, eu escureço suavemente de volta para 0. Quando ele passa, fica totalmente brilhante imediatamente.  Não faço nenhum teste sofisticado agora para a luz (como usar a normal da superfície ou a distância da luz), assim ele poderia parecer melhor com um pouco mais de matemática. Agora, para luzes indiretas: eu mantenho um PVS por face de qual rosto afeta quais outros rostos. Só preciso encontrar uma maneira de integrá-lo a uma velocidade razoável no Saturn."

 Essa é na verdade somente uma prova de conceito para explorar o real potencial do console; isso sim é o que chamamos de tirar leite de pedra. Bom, posto este artigo já estou expandindo o canal e blog para a parte técnica dos consoles e a pedido de um dos inscritos do canal, ainda debaterei sobre o Sega Saturn.


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

wak: Uma implementação do awk para o toybox


wak -- an awk implementation for toybox and standalone

wak: Uma implementação do awk para o toybox

 Em 2024, Ray Gardner com contribuição de Oliver K. Webb disponibilizaram o wak, uma implementação POSIX compacta da linguagem de programação awk para o toybox ou para poder também ser utilizado como standalone. O professor Nelson H. F. Beebe da Universidade de Utah também está envolvido em seu desenvolvimento dando conselhos relacionados a melhorias do programa e do uso do makefile.

 O wak é realmente compacto; escrito em apenas 4500 linhas de código que quando compilado, linkando estaticamente, o wak possui apenas 244  kbytes. O wak entrou no diretório pending do toybox em Janeiro de 2025, na versão 0.8.12 porém, como awk e não wak.


Informações de binário do wak
Informações de binário do wak

wak no diretório pending do toybox com o nome awk
wak no diretório pending do toybox com o nome awk

 O wak é em sua maioria compatível com as implementações awk POSIX, o One True Awk de Brian Kernighan, também conhecido como nawk, este é o original awk do Unix que recebeu uma atualização em 2022 e que é utilizando inclusive pelo Android,  o awk do Busybox e o gawk do GNU com axceção de sua extensões. O wak tenta ser compatível com a POSIX.1-2024, exceto onde conflita com praticas tradicionais e comuns de outras implementações do awk como exemplo, tentar ser o tanto UTF-8 safe (confiram as informações de Oliver Webb) quanto razoavelmente possível, seguindo as abordagens do toybox. Neste vídeo eu apresento alguns dos testes manuais que eu fiz para testar a sua compatibilidade com outros awks: 



 O wak é mantido sob a clausula zero BSD (BSD0) para manter dentro dos padrões de licença do toybox porém, como os arquivos do diretório test pertencem ao gawk 5.3.1, então estes arquivos são mantidos sob a GPL2. O código é escrito em C99 (exceto o recurso anonymous unions) tanto no GCC quanto no Clang mas também é possível compilar o wak com TinyCC. Report de bugs são sempre bem vindos.


A IMPORTÂNCIA DE AWK

 Ao longo do tempo, awk foi perdendo espaço para outras linguagens como Python e Perl, porém a especificação POSIX e especificalmente a Single UNIX Specification (SUS) determinam que todo sistema operacional que declaram ser um Unix (ou totalmente POSIX) deva disponibilizar uma versão de awk compatível com a POSIX para assim ser oficialmente Unix legítimo e certificado. Essa exigência está relacionada a awk fazer parte do conjunto de comandos necessários para tornar scripts portáveis entre outros Unix.

 Além do mais, awk é uma das dependências para se compilar o kernel Linux pois é utilizado por vários build scripts e configurações. Enquanto compiladores e outras ferramentas são responsáveis por gerar os binários, awk e outros comandos são responsáveis pela parte de scripts que tratarão de informações como saber os ranges de memória, preempção do kernel e muito mais.

scripts awk presentes no kernel
scripts awk presentes no kernel

 Rob Landley descreveu em seu blog em 2021:

" Estou imaginando que dd, expr, tr, awk, sh, bc, bison, flex, make, ar, e gzip são necessários para construir o kernel..."

 E continuamos em seu roadmap a série de comandos necessários para construir um ambiente mínimo de uma distribuição capas de bootar o sistema executando init scripts e outros shell scripts e oferecer uma sessão do shell.


 A intenção é oferecer ferramentas necessárias para o Android ser capaz de compilar o kernel Linux e suas próprias ferramentas.


An awk implementation for toybox and standalone

wak - An awk implementation released

Writing a UTF-8 Safe AWK | Oliver Webb

Confira mais sobre o toybox clicando aqui


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Linguagem Go utilizada para rodar Diablo no Dreamcast

Go runtime for Dreamcast using gccgo and KOS

Linguagem Go utilizada para rodar Diablo no Dreamcast


 O Gerente de engenharia de software da Red Hat, Panagiotis Georgiadis escreveu eu seu perfil no X:
"Eu tornei possível escrever código golang para o Sega Dreamcast. Sim, o console de 1999. Sim, Go de verdade com gorotines e channels. Aqui está uma intro de Diablo rodando no hardware real." 


 Panagiotis descreve que Golang para Dreamcast fornece as mesmas características (garbage collection, goroutines, channels e as funções do core runtime) mas que substituiu o runtime padrão do Go por um uma implementação mínima (o libgodc) projetada especificamente para o Dreamcast de acordo com as especiações: e sem sistema operacional¹.

Limitações

 Panagiotis disponibilizou uma documentação sobre as limitações da biblioteca libgodc que é essencial entender para escrever programas Go para Dreamcast.


 Algumas de suas limitações estão relacionadas no total de memória RAM (apenas 16MB de RAM sendo distribuídos para o KOS, seus drivers e malloc; GC; pilhas; seu código. Ele não possui memória virtual, não possui swap, e não possui segunda chance e caso ocorra de ultrapassar esse limite, o jogo crasha), o processador ser single-core SH-4 operando a 200MHz; os tempos de pausa que o garbage collection podem levar cada frame leve 16.6ms ou até causar stutter; pilhas fixas a 64k; sem Parallelismo (M:1); é Cooperative e não preemptive; alguns recursos não implementados ou algumas implementações limitadas. Há mias detalhes sobre limitações que podem ser lidos aqui, mas apesar destas diferenças, podemos escrever código go normal, as rotinas go funcionam, channels, mapas, slices, interfaces funcionam.

 O Go runtime para Dreamcast depende do gccgo e do KOS (KallistiOS).



 O Go para Dreamcast está disponível sob a clausula 3 BSD porém, algumas partes estão sob outras licenças como o brkout (que é um port Go do jogo original desenvolvido por Jim Ursetto) que está sob GPLv2.

 Eu como um apaixonado por Dreamcast fico muito feliz de ver a galera de Linux envolvida com o console.


¹Apesar de se ver escruto no Dreamcast Windows CE, O Dreamcast não possui sistema operacional instalado nele e sim em sua mídia.


Phoenix: Um novo X Server escrito do zero em Zig

Phoenix Emerges as a Modern X Server Written From Scratch in Zig

Phoenix: Um novo X Server escrito do zero em Zig

 Em minha palestra A evolução do Linux eu conto a origem do X11 no Linux que foi uma coisa muito interessante já que foi esse servidor gráfico que deu origem ao primeiro protocolo de redes no Linux. Em Outubro de 2021 eu escrevi o artigo O fim da estrada para o x11 descrevendo o estado atual o X11, o seu destino e seu eminente fim.

 Com o tempo surgiu um "salvador da pátria" (assim como foi o Rocky Linux...) anunciando um fork chamado XLibre e como sempre, a galera movida a paixões por software livre comprou a briga sem saber quase nada do assunto. Parece que o desenvolvedor vem fazendo algum progresso, o que me leva a perguntar por que não havia feito isso antes das distribuições fazerem adotação em massa do Wayland...



 E agora, entre essa "guerra" Wayland X XLibre, surge o Phoenix. Phoenix é um novo servidor gráfico X projetado do zero (e não um fork do Xorg) escrito na linguagem Zig e projetado para ser uma alternativa moderna ao Xorg. O Phoenix ainda não está pronto e até o momento o Zig X Server renderiza somente algumas aplicações simples.

 A equipe visa ter um servidor gráfico com foco em simplicidade, segurança, melhorias tanto para tecnologias modernas quanto para parte gráfica, compatibilidade com o Wayland e estender o protocolo X11. Existem diferenças fundamentais de implementação entre o X11 e o Phoenix. O Phoenix está sob GPLv3 (não sei o que passa na cabeça da galera) e a galera vem trabalhando neste servidor gráfico desde Julho. É esperar para ver se o projeto vinagrá.

 Mais informações sobre o Phoenix pode ser lido clicando aqui.


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)


Lançado Nim 2.2.6

Lançado Nim 2.2.6

Lançado Nim 2.2.6

 No dia 31 de Outubro foi anunciado o lançamento da versão 2.2.6 da linguagem Nim depois de seis meses do lançamento da versão 2.2.4. Essa versão contem 141 commits trazendo 53 correções de bugs e melhorias. Uma dessas melhorias está no desempenho que já era bom, agora o compilador é esperto para produzir uma operação para retorno de obj.field que anteriormente ele fazia uma cópia. O async do Nim está mais estável por ter sido reeescrito.

 Não vou me estender aqui sobre esta nova versão já que possuo bastante material aqui no blog promovendo a linguagem Nim, porém todas as alterações na versão 2.2.6 pode ser conferidas clicando aqui.

Baixe a versão 2.2.6 clicando aqui

Para saber mais sobre a linguagem nim, clique aqui ou aqui em nimlang


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Lançado toybox 0.8.13

Lançado toybox 0.8.13

Lançado toybox 0.8.13

 No dia 14 de Outubro foi lançada a versão 0.8.13 do terminal de comandos toybox.


NOVOS COMANDOS

 Foram adicionados os comandos nologin e hd. O comando hd inicialmente não possui opções, apenas saída o tradicional de 16 bytes por linha hex+ascii. Essa nova versão trás também a substituição do antigo kconfig/*.c plumbing (que data da época do kernel 2.6) por um novo scripts/kconfig.c que entre outras coisas, permite construir no MacOS sem a necessidade de homebrew e adiciona suporte trap e alias ao toysh.


Comandos hd e nologin no toybox 0.8.13
Comandos hd e nologin no toybox 0.8.13


NOVOS RECURSOS AOS COMANDOS

 O comando chmod recebeu as opção -cv; o comando kill com a opção -l pode gerar uma lista de múltiplos sinais; o comando taskset recebeu a opção -a como um alias para a opção --all e utilizar essa opção sem argumentos exibe o mask atual; o comando dd recebeu as opções oflag=append, oflag=direct, conv=nocreatiflags=direct; os comandos xargs e pgrep receberam a opção -a; o comando lspci agora suporta offsets de de registradores maiores; o comando log recebeu a opção -b; e o lsusb recebeu a opção -t.


COMANDOS E RECURSOS PENDETES

 Além do novo comando hd, agora o diretório pendente recebeu o novo comando hexdump; adição do ip6gre ao ip; adição de dhcp -u para utilizar UDP ao invés de broadcast replies.


CORREÇÕES DE BUGS E LIMPEZAS

 O comando tar -T /dev/null cria um arquivo vazio além de uma correção de incompatibilidade com o SELinux; o test -nt -ot trata um arquivo existente como novo ao invés de arquivo inexistente; ps -o psr= $$ não exibe maos saídas com linhas em branco; o comando pgrep recebeu duas correções sendo a primeira para não tratar argumentos desconhecidos como filtros de processo e a segunda para não permitir que a opção -f não conflite com a nova opção -a já mencionada; o comando lspci -xxxx exibe corretamente offsets de registradores grandes; o as buscas do comando modinfo agora incluem um leading NUL para evitar falsos positivos; o crontab recebeu uma correção para reter o proprietário original. Também houveram correções de bugs nos comandos dentro do diretório pendente.

 Ocorreram limpezas nos comandos hexdump, kill, lsusb, xzcatkillall5 que não mais depende do comando kill.



QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Fil-C, uma implementação das linguagens C e C++ com suporte a segurança de memória

Fil-C, uma implementação das linguagens C e C++ com suporte a segurança de memória

Fil-C, uma implementação das linguagens C e C++ com suporte a segurança de memória

 Filip Pizlo, que é diretor senior de engenharia de linguagem da Epic Games e que também já foi gerente da JavaScriptCore na Apple além de possuir 15 anos de experiencia na construção de linguagens de alto nível com alto desempenho, desenvolveu uma implementação das linguagens C e C++ com suporte a segurança de memória (algo que todo mundo está cobiçando agora).

 Fil-C utiliza a combinação de garbage collection chamado FUGC (Fil's Unbelievable Garbage Collector que, sendo mais específico, é um parallel concurrent on-the-fly grey-stack Dijkstra accurate non-moving garbage collector) e invisible capabilities (cada ponteiro na memória possui capability correspondente, não visível para o espaço de de endereço C). Cada operação fundamental em C é verificada pela capability. Todos os erros de segurança de memória são capturados como Fil-C panics.

 Já existe uma lista de programas que funcionando sendo compilados com o Fil-C com mínimas ou zero mudanças. Tanto que Filip criou sua própria distribuição From Scratch (baseado no Linux From Scratch 12.2) com suporte a segurança de memória chamada Pizlix onde Filip adiciona alguns componentes ao seu userland compilado com o Fil-C. O kernel do Pizlix é compilado com o Yolo-C.



 O Fil-C está na versão 0.673 e sob licença Apache 2 (já que basicamente o Fil-C é um fork do LLVM), BSD 2-clause, MIT e GPL 2.1.

Fil-C

Meet Fil

Pizlix: Memory Safe Linux From Scratch

Leia também Rust no kernel Linux: A guerra sem trégua


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Marcadores

A pior história sobre Linux que já ouvi (6) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (34) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (18) canonical (1) canto do Diego Lins (2) certificações Linux (7) Código Fonte (53) comandos (33) comp (1) compressores (9) consoles (1) container (8) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (14) Debian (31) desempenho (2) desenvolvimento (102) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (91) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (4) diocast (1) dioliunx (3) distribuições Linux (14) Docker (13) DragonflyBSD (24) driver (2) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (21) Funtoo Linux (13) games (95) garbage collector (1) gerenciadores de pacotes (4) glaucus (8) GOG (3) google (9) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (13) Intel (15) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (39) kde (1) kernel (141) lançamento (64) leis (1) LFCS (1) libs (2) licenças (10) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (4) lkgr (1) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (180) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (10) nimlang (2) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) ONLYOFFICE (5) open source (85) OpenBSD (8) OpenShift (1) oracle (1) os vários sabores de Linux (46) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (3) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (71) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (16) Sega (1) Sega Saturn (1) segurança digital (27) servidor web (2) servidores (3) shell (11) shell script (8) sistema operacional (25) skarnet (2) smartphones (3) Software livre e de código aberto (150) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (7) systemd (9) terminal (90) terminal de comandos (21) toca do tux (1) toybox (30) tutorial (6) Tux (3) ubuntu (1) unboxing (7) UNIX (17) UNIX Toolbox (13) vartroy (1) vga (1) virtualização (3) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (16) zsh (3)