quarta-feira, 26 de agosto de 2026

35 Anos de Linux

Em 25 de agosto de 2026 o Linux fez 35 anos de história!

O Linux completou 35 anos, provando que um projeto feito "só por hobby e que não seria grande" pode sim dominar o mundo (beijo, Linus Torvalds!).

Para comemorar, aqui está a radiografia definitiva dessa festa!

🥳 A Festa de Aniversário Geek

Linux: 35 Anos de Linux!

O bolo: Não tem sabor padrão; você precisa compilar os ingredientes e escolher sua própria interface de cobertura.

Os convidados: 99% dos supercomputadores do mundo, os servidores da NASA, bilhões de celulares Android e três gatos pingados usando o sistema no desktop.

O parabéns: Cantado em código binário com sotaque finlandês.

A treta: Uma discussão sem fim na mesa do bolo sobre qual distribuição é a melhor e por que o Windows é o verdadeiro "vilão" da história.

Mensagem original do Linus Torvalds na USENET em 25 de agosto de 1991:

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus (torv...@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.

https://www.vivaolinux.com.br/noticia/35-anos-de-linux/

terça-feira, 25 de agosto de 2026

Ética e Moral - Nietzsche está Morto

 

   Vamos começar (eu e o leitor) com Mário Ferreira dos Santos no livro "Cristianismo: A religião do homem" e depois seguiremos com a "Genealogia da Moral" de Nietzsche.

   E não estamos falando de religião aqui, mas de Ética e Moral, uma das bases de toda Religião, da Filosofia e, por que não dizer, da vida!
   A partir do parágrafo 56, Mário começa a discorrer sobre o assunto - e não precisa se preocupar, não terá de contar os parágrafos, pois o livro foi escrito enumerado em parágrafos. Leia o livro todo, porém, caso quiser, vá direto a esse parágrafo 56.
   No parágrafo 59, Mário, em sua clareza costumeira, começa definindo etimologicamente: "...em grego, valor é axios e o homem é antrophos, daí chamarem a esses valores axioantropológicos".
   No parágrafo 60, Mário diz: "Os atos continuados constituem o costume (o que os gregos chamavam ethos e os latinos mos, moris, de onde vêm Ética e Moral)."
   A etimologia das palavras às vezes ajuda às vezes atrapalha; na maioria das vezes ajuda.
   Os atos éticos ou morais são atos que têm valor, porém, "valor" neste sentido refere-se à dignidade, não ao preço. Refere-se à categoria de Qualidade e não de Quantidade (Aristóteles), pois qualidade, nesta acepção, remete a "valor" e quantidade, nesta acepção, remete a preço.
   "Assim, toda vida prática do homem gira em torno da Ética."
   A partir do parágrafo 61, Mário começa a fazer a distinção entre Moral e Ética e diz que essa distinção não é arbitrária porque a Ética estuda o dever-ser humano e a Moral descreve e prescreve como se deve agir para realizar esse dever-ser.

   "A Moral é variante, mas a Ética é invariante."
   "Aqueles que dizem que a Ética é vária, porque a Moral é vária, confundiram a Moral com a Ética." Mário chama esses de "os detratores da Ética e da Moral" e diz que alguns fazem isso de propósito para obterem vantagens antiéticas, imorais e amorais.

   Mário nos diz, com base na realidade, no apodítico e na auto-evidência que a Ética deve ser consagrada ao universal.
   Por exemplo: matar é errado!... e ponto final. Todo ser humano sabe disso porque nasce sabendo disso, é um Princípio.
   Porém, caso eu matar em legítima defesa, é errado?
   Isso é uma discussão Moral.
   Dando um exemplo mais claro ainda: todo juri em que uma pessoa que matou alguém (homicídio) e é julgada pelas leis humanas, é uma discussão Moral, pois a Ética já foi infringida.
   Porém, por a Ética já ter sido infringida não significa que ela não é invariante, pois o termo "invariante" refere-se às leis divinas ou leis naturais, depende se você acredita ou não em Deus, mas tais leis são as mesmas: todo mundo sabe que matar é errado e mesmo tendo infringido o "não matar", o princípio continua sendo errado, mesmo que todo mundo faça.
   Daí vem o Direito Penal, Direito, Civil, Direito Natural, etc.
   E isso se aplica a não mentir, não roubar, não trair, etc.
   No Brasil, essa confusão é evidente e proposital feita pelos detratores da Ética e da Moral, como bem disse Mário.
   Confunde-se Ética com Moral, troca-se uma pela outra, não se sabe do que se está falando... vira uma confusão mental.
   Temos em empresas privadas e públicas, por exemplo, os tais "códigos de ética" (missão, valores, etc) que, na verdade, são códigos de moral porque permitem discussões; e não é uma simples questão de nominação porque a Ética é invariante (não enseja discussões) e a Moral é variante (enseja discussões).

   A Moral é a discussão em torno da Ética.

   Matar, mentir, roubar, trair, corromper, etc, todo ser humano sabe que isso é errado.
   As justificativas e desculpas que você dá do porquê você matou, traiu, mentiu, etc, são discussões Morais.
   E é necessário saber essa distinção, senão você não saberá distinguir entre uma e outra.
 
   Vamos imaginar que não exista Deus, que Ele seja uma invenção do ser humano, ou seja, teríamos certeza de que Deus não existe.
   Vamos imaginar que Moisés, o da Bíblia, quando subia ao Monte Sinai - segundo se sabe fez isso 8 vezes - para "falar" com Deus era tudo jogo de cena, Moisés subia para controlar o povo, sendo que naquela específica subida ao Monte Sinai na qual desceu com as Tábuas da Lei, inventou essa "estória" de um deus entalhando furiosamente as tábuas de pedra a raios e marteladas divinas no cinzel sagrado e sei-lá-mais-o-quê.

   Vamos mais além, vamos imaginar que a Bíblia inteira é uma alegoria, uma estória de ficção composta de várias estórias da carochinha. Vamos imaginar que os Dez Mandamentos sejam mesmo somente 10 e sejam, resumidamente (apesar das várias versões), os que se seguem:
1- Não ter outros deuses diante de mim.
2- Não tomar em vão o Nome do Senhor teu Deus.
3- Guarda o dia de sábado para santificar.
4- Honra teu pai e tua mãe.
5- Não matar.
6- Não pecar contra a castidade.
7- Não roubar.
8- Não mentir.
9- Não desejar a mulher do próximo.
10- Não cobiçar as coisas alheias.

   Independentemente de ter sido Deus ou Moisés quem entalhou as pedras, vamos analisar logicamente esses enunciados ou proposições ou imperativos... ou Mandamentos mesmo.

   Supondo que você não acredite que Deus exista e que você seja nada religioso, então podemos tirar os 3 primeiros da lista. Supondo que você não acredite que o Deus da Bíblia exista e que você seja um pouquinho religioso vamos tirar os 2 primeiros da lista porque você bem pode tirar o sábado (ou o domingo) para rezar para teu Deus, seja lá qual Ele for, para ir num balneário, ficar de folga com a natureza, ir à praia, ficar em casa fazendo nada, etc.

   Contudo, vamos analisar seguramente os outros 7 mandamentos que independem de você acreditar na existência de um ser supremo, de um Deus, de vários deuses, etc, independem até de você ser uma pessoa religiosa, espiritual, espirituosa, ateu, atéia, a toa, etc de novo.
   Vamos chamar esses 7 mandamentos agora de "Princípios Éticos". Vamos tomar o número 5, Não Matar, e analisar à luz da Filosofia.
   Sabe-se que "Princípio", em Filosofia, é aquilo que está no início e antes não precisa ter nada, nem mesmo uma explicação em palavras... pode até ter uma explicação em palavras, mas não se faz necessário.
   Todo mundo sabe que matar é errado em si, o ser humano nasce sabendo disso.
   Ética é, grosso modo, faça o certo e não faça o errado, tem de cumprir essas duas premissas ao mesmo tempo.
   Moral é a discussão em torno da Ética.
   Por exemplo, um Júri de homicídio é uma discussão Moral porque o Princípio Ético "Não Matar" já foi infringido, então, discutem-se as circunstâncias em torno disso. Mesmo você sendo ateu, religioso, etc, tudo é uma questão de Ética e Moral, simples assim.
   Na Moral, o ser humano discute e mente em torno dela. Legítima defesa, por exemplo: eu posso matar em defesa minha ou de terceiros? A resposta dessa pergunta vem de uma discussão Moral.
   Eu, vendo minha filha sendo estuprada, salvo ela e não mato o estuprador?
   "Não tenho sangue de barata", dirá você.
   Caso você seja uma pessoa essencialmente ética, você não matará em circunstância nenhuma.
   O único ser humano essencialmente Ético de quem se tem notícia foi Jesus Cristo, foi o único que cumpriu à risca os Mandamentos ou Princípios Éticos. É claro que Jesus não teve filha e, de bônus, fazia milagres, então a comparação foi, neste sentido, injusta, mas Jesus foi o único que conseguiu a façanha de Não matar, Não Mentir, etc. Pelo menos é o que se sabe.

   Nietzsche, em A Genealogia da Moral, passa dando alfinetadas no Cristianismo numa vã tentativa de combatê-lo, e apesar de terminar a vida louco no hospício - Nietzsche está morto e Deus está vivo - temos de concordar com ele em algumas partes.
   Na Primeira Dissertação ele levanta a questão entre "bom e ruim" e "bem e mau" e chega à conclusão de que esses dois valores contrapostos "travaram na terra uma luta terrível, milenar; e embora o segundo valor há muito predomine, ainda agora não faltam lugares em que a luta não foi decidida".
   O que nos interessa aqui é o que ele chama antes de "a moral dos escravos" que é pautada pela "moral dos senhores", pois aquela decorreu desta, baseada no ressentimento onde as fraquezas são transformadas em virtudes: "a impotência que não acerta contas é mudada em 'bondade'; a baixeza medrosa, em 'humildade'; a submissão àqueles que se odeia em 'obediência' (há alguém que dizem  impor essa submissão - chamam-no Deus). O que há de inofensivo no fraco, a própria covardia na qual é pródigo, seu aguardar-na-porta, seu inevitável ter-de-esperar, recebe aqui o bom nome de 'paciência', chama-se também a virtude; o não-poder-vingar-se chama-se não-querer-vingar-se, talvez mesmo perdão ('pois eles não sabem o que fazem - somente nós sabemos o que eles fazem!). Falam também do 'amor aos inimigos' - e suam ao falar disso." (página 38).
   "Os Judeus principiaram a revolta dos escravos na moral cuja rebelião tem atrás de si dois mil e tantos anos de história". Nietzsche confunde um pouco o Judaísmo com o Cristianismo, mas é compreensível, talvez fosse a insanidade já colocando as garras na mente dele. Brincadeiras à parte, o mundo atualmente parece-me baseado no ressentimento, na moral dos escravos, na mentira e no fingimento. O ser humano moderno é o ser humano do ressentimento. Ressentimento este que vem da estupidez de uma humanidade cada vez mais estupidificada.
   O que se pode concluir é que a "moral dos escravos" de Nietzsche é uma distorção da moral em si, "é algo próprio do ressentimento: a moral escrava sempre requer, para nascer, um mundo oposto e exterior, para poder agir em absoluto - sua ação é no fundo reação." Não posso deixar de lembrar nessa hora - não-sei-o-porquê - de Karl Marx e Engels e as "lutas de classes" que também são baseadas no ressentimento e na estupidez das massas.
   Por exemplo, entre o que chamam de Comunismo e o que chamam de Capitalismo, qual representa a moral dos escravos e qual representa a moral dos senhores?
   É somente uma mentira para manter uma luta ilusória entre duas entidades incorpóreas que tem nomes (signos) diferentes com o mesmo significado e o mesmo referente: concentração de dinheiro e poder nas mãos de poucas pessoas às custas da miséria e do sofrimento da maioria.

   Na Segunda Dissertação ele trata da "Culpa, má consciência e coisas afins".
   Na Terceira Dissertação: "O que significam ideais ascéticos?"

   Ética é isso: faça o certo e não faça o errado, Ética é Divina!
   Moral são as discussões em torno da Ética, Moral é do Ser Humano!




quinta-feira, 20 de agosto de 2026

Linux Kernel Version 7.2 Makes TSC Mandatory, Generating a Change in Philosophy


Any harm or mental instability resulting from poor translation, blame Google.

The Linux Kernel built its reputation, in part, on its efficiency on older machines that do not support modern operating systems like Windows 11. However, maintaining such extreme backward compatibility comes at a significant technical cost. The recent decision to mandate the TSC (Time Stamp Counter) on x86 processors demonstrates that maintainers have prioritized engineering evolution over the past. In practice, this means Linux has set aside nostalgia to focus on the technological performance of the future.

The latest version of the Linux Kernel (7.2, released on August 16, 2026) made the TSC a mandatory requirement for x86 processors, putting an end to decades of compatibility code that allowed the operating system to run on hardware lacking reliable TSC support. The technical change, implemented under the title "x86/cpu: Make CONFIG_X86_TSC unconditional," removes the configuration logic that previously allowed the kernel to be compiled without TSC support.

This change directly affects home users with very old machines (dating from before approximately 1993) because, starting with Linux Kernel 7.2, if you attempt to load the system on an x86 processor that lacks the TSC register, the kernel will refuse to boot, and the system will not start. This signals a significant shift in the Linux kernel's development philosophy, yet it is not the Linux equivalent of Windows 11's TPM 2.0 requirement. The TSC has been present in x86 processors since the launch of the Intel Pentium in 1993. If your processor was manufactured within the last three decades, it almost certainly includes it. The change actually aims to permanently remove compatibility code for hardware that is unlikely to run a modern Linux kernel. However, modern processors from the 1990s or later should not exhibit timing issues related to a lack of TSC support, although the kernel might refuse to boot on very old x86 CPUs that lack the TSC register.

Windows, macOS, and FreeBSD have long relied on the TSC, but their approach differs from how Linux handled it in kernel version 7.2. Windows, for instance, does not prevent the computer from booting if the processor lacks a TSC; instead, it makes that determination at runtime. If the TSC on a very old processor fails or proves unstable, Windows automatically switches to motherboard-based timers (such as HPET or the ACPI PM Timer). Of course, attempting to install Windows 11 on an older machine results in the installation failing outright, but this is due to other factors—such as TPM 2.0, Secure Boot, and processor generation (Microsoft limits official support to 8th-generation Intel processors—released in 2017—or AMD Ryzen 2000 series and newer).

What is TSC?

The TSC is a 64-bit internal physical register found within each x86 CPU core (each core has its own TSC register). It provides a basic clock-cycle counting feature, offering the precision essential for smooth operating system operation; it delivers high-resolution timing and can be read much faster than platform alternatives like HPET or the ACPI PM timer. Reading a TSC-based timer might take tens to hundreds of CPU cycles, whereas accessing a motherboard-based timer can take approximately 0.8 to 1.0 microseconds.

Having an individual TSC for each core caused issues: if a core changed its clock speed to save power, its TSC would count more slowly than that of a neighboring core (leading to time desynchronization in Linux). This is why modern CPUs feature "Constant TSC," which ensures all these internal registers run at the same speed regardless of power usage.

The TSC has three basic operational characteristics:

  • Cycle Counter: Its sole function is counting. For every clock cycle the processor executes, the register increments by 1.
  • Initialization: It starts at 0 the moment the processor receives power (hardware reset) and increments continuously.
  • Direct Reading: To read the register's value, programmers and the kernel use a specific assembly instruction called RDTSC (Read Time-Stamp Counter).

Historically, Linux maintained code to handle processors lacking a reliable TSC, dating back to the i486 era. The Linux 7.0 kernel dropped support for Intel 486 processors, and subsequent development cycles removed additional legacy hardware that had prevented the TSC from being treated as universal. Essentially, hardware predating the Pentium or from the i486 era will be affected. For decades, Linux maintained complex "fallback" routines to support timers based on older motherboards. Eliminating this dead code simplifies kernel maintenance. This is a case of technical debt—specifically, unnecessary maintenance consuming hours of highly skilled labor to support a statistically insignificant segment of users. Unlike Microsoft's controversial hardware requirements (such as TPM 2.0 for Windows 11), the TSC requirement for Linux 7.2 is simply a matter of engineering housekeeping regarding "museum pieces."

Checking TSC support and stability

To check if your computer supports TSC, run:

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource

The output should be `tsc`.

Verify this by checking the file of available sources:

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource

The output should look something like this: tsc hpet acpi_pm

If "tsc" is missing from this list, it means the operating system has completely lost access to it.


For the TSC to be considered modern and perfectly stable, the CPU must possess two physical properties:

  • Constant TSC: The counter advances at a constant rate, even if the CPU changes frequency (turbo mode or power-saving mode).
  • Nonstop TSC: The counter does not stop running, even if the CPU core enters a deep sleep state (C-states).


You can check if your CPU has these features using the following command:

$ lscpu | grep -E "constant_tsc|nonstop_tsc"

Options: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb pti tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi


Or by directly inspecting the processor flags:

$ cat /proc/cpuinfo | grep -E "constant_tsc|nonstop_tsc" | uniq

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb pti tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi


You can check if the kernel encountered any synchronization issues between CPU cores during boot:
$ sudo dmesg | grep -i tsc

[ 0.000000] tsc: Detected 3400.000 MHz processor
[ 0.000000] tsc: Detected 3399.906 MHz TSC
[ 0.036386] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x52 (or later)
[ 0.120153] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x3101f59f5e6, max_idle_ns: 440795259996 ns
[ 2.251217] clocksource: Switched to clocksource tsc-early
[ 3.281461] tsc: Refined TSC clocksource calibration: 3407.999 MHz
[ 3.281465] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x311fd336761, max_idle_ns: 440795243819 ns
[ 3.281476] clocksource: Switched to clocksource tsc
[ 4.246774] vboxdrv: TSC mode is Invariant, tentative frequency 3407999019 Hz


To check if the TSC is working perfectly and is active:

  • clocksource: Switched to clocksource tsc: Your Linux kernel has tested, validated, and enabled the TSC as the system's primary time source. It is operational.

  • Refined TSC clocksource calibration: 3407.999 MHz: The kernel has calibrated your TSC frequency with high precision to approximately 3.4 GHz.

  • vboxdrv: TSC mode is Invariant: The VirtualBox driver has confirmed that your TSC is of the "Invariant" type—equivalent to the "Constant/Nonstop" type mentioned earlier. This means its speed does not change, making it safe for running virtual machines.

The line [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x52 (or later) indicates that your processor has an advanced feature called TSC_DEADLINE, which Linux uses for extremely fast task scheduling. However, the processor manufacturer (Intel or AMD) made a design error (known as an "erratum") during the chip's manufacturing. Since this error could cause system crashes (kernel panics) or security vulnerabilities, Linux has proactively disabled the feature to protect your PC.

To resolve this issue, you must update the processor microcode to version 0x52 or higher. Microcode acts like a corrective software update that is injected directly into the CPU during the boot process.

To view processor details:

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
...

If your processor is Intel (Ubuntu/Debian/Mint):

$ sudo apt update && sudo apt install intel-microcode
$ sudo reboot
$ sudo dmesg | grep -i tsc
The line [Firmware Bug]: TSC_DEADLINE disabled should no longer appear.

If your processor is AMD (Ubuntu/Debian/Mint):

$ sudo apt update && sudo apt install amd64-microcode
$ sudo reboot
$ sudo dmesg | grep -i tsc
The line [Firmware Bug]: TSC_DEADLINE disabled should no longer appear.

If you use Fedora/RHEL:

$ sudo dnf install microcode_ctl
$ sudo reboot
$ sudo dmesg | grep -i tsc
The line [Firmware Bug]: TSC_DEADLINE disabled should no longer appear.

If you are using Arch Linux:

$ sudo pacman -S intel-ucode  # ou amd-ucode
$ sudo reboot
$ sudo dmesg | grep -i tsc
The line [Firmware Bug]: TSC_DEADLINE disabled should no longer appear.

Void Linux with Intel

Enable the non-free repository, if you haven't already:
$ sudo xbps-install -S void-repo-nonfree

Install the Intel microcode:
$ sudo xbps-install -S intel-ucode

Update the system's initramfs:
$ sudo xbps-reconfigure -f linux$(uname -r | cut -d'.' -f1,2)
$ sudo reboot
$ sudo dmesg | grep -i tsc
The line [Firmware Bug]: TSC_DEADLINE disabled should no longer appear.

Void Linux with AMD

Enable the non-free repository:
$ sudo xbps-install -S void-repo-nonfree

Install the AMD firmware package:
$ sudo xbps-install -S linux-firmware-amd
$ sudo reboot
Unlike Intel's, AMD's package automatically integrates with Void Linux's boot hooks, eliminating the need for extra configuration in most cases.
$ sudo dmesg | grep -i tsc
The line [Firmware Bug]: TSC_DEADLINE disabled should no longer appear.

Example:
$ sudo dmesg | grep -i tsc
[ 0.000000] tsc: Detected 3400.000 MHz processor
[ 0.000000] tsc: Detected 3399.906 MHz TSC
[ 0.036625] TSC deadline timer available
[ 0.125620] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x3101f59f5e6, max_idle_ns: 440795259996 ns
[ 2.290682] clocksource: Switched to clocksource tsc-early
[ 3.351524] tsc: Refined TSC clocksource calibration: 3408.000 MHz
[ 3.351528] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x311fd3cd494, max_idle_ns: 440795223879 ns
[ 3.351578] clocksource: Switched to clocksource tsc
[ 5.018837] vboxdrv: TSC mode is Invariant, tentative frequency 3408000024 Hz

References




sexta-feira, 24 de julho de 2026

ARTIFICIAL INTELLIGENCE


 
Artificial Intelligence and Its Evolution

   The first substantial work in the field of artificial intelligence took place in the mid-20th century through a computing concept that would come to be known as the Turing Machine, named after the English mathematician Alan Mathison Turing (1912–1954), who is considered the "father of computing."

Can computers think?

   The mathematician turned this question into an intriguing hypothesis for investigation in the early 1950s, becoming one of the first scientists in the world to question such a possibility.

   According to the *Encyclopædia Britannica*, in 1935, the researcher developed a computing model consisting of a memory unit and a scanner tasked with identifying and reading a series of symbols distributed along a tape that moved back and forth. The machine operated by processing this series of symbols to interpret them and modify its own algorithm based on instructions stored in its memory.

   CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is a security test used on websites to distinguish real people from automated programs (bots). Turing envisioned that the computational intelligence of the future would be a machine capable of learning from experience. He argued that the path to achieving this was to allow an intelligent machine to alter the very instructions provided by its mechanism. This principle became a cornerstone of modern computing theory.

Eliza and the First Chatbots

   In 1966, an MIT professor named Joseph Weizenbaum created the first chatbot. He configured it to play the role of a psychotherapist. The user would type a message on an electric typewriter connected to a mainframe computer. After a few moments, the "psychotherapist" would reply. The software was relatively simple; it analyzed the user's input and applied a set of rules to generate a plausible response. He named the program Eliza, after Eliza Doolittle from the play *Pygmalion*. The London flower girl in George Bernard Shaw’s play uses language to create an illusion: she elevates her speech to such a degree that she manages to pass herself off as a duchess. Similarly, Eliza conversed in a way that created the illusion that it understood the person at the computer.

What if it were possible to converse with a computer in a natural language, like English?

   That was the question that drove the creation of Eliza; its success made Weizenbaum well-known at the university and helped him secure tenure in 1967. It also brought him into the orbit of the MIT Artificial Intelligence Project, which had been established in 1958 by John McCarthy and Marvin Minsky.

   McCarthy had coined the term "Artificial Intelligence" a few years earlier when he needed a title for an academic workshop. The term was neutral enough to avoid overlap with existing research fields like cybernetics, amorphous enough to attract interdisciplinary contributions, and bold enough to convey the radical nature—or, if you prefer, the arrogance—of the claims regarding what machines could do. This radical stance was asserted in the workshop's original proposal: "Every aspect of learning or any other feature of intelligence can in principle be so precisely described that a machine can be made to simulate it," the text stated. Weizenbaum's most famous book is *Computer Power and Human Reason: From Judgment to Calculation*, originally published in 1976. In it, he argues that although AI can simulate human conversation, computers should never make important decisions—such as those in the legal, medical, or military fields—because they lack human compassion and wisdom.

   Many authors contributed to the development of AI; however, to keep this text from becoming too long, I will cite only the two most important ones—especially since this piece does not focus exclusively on history.

Training, LLMs, and Deep Learning

   Artificial intelligence (AI)—or "machine learning"—models have been evolving for some time. The key to all machine learning is a process called "training," in which a computer program is given a vast amount of data—sometimes with labels explaining what the data represents—along with a set of instructions.

   An instruction might be something like "find all images containing faces" or "categorize these sounds." The program then looks for patterns in the provided data to achieve these goals.

   It may need a little nudge along the way—such as "that isn't a face" or "these two sounds are different"—but what the program learns from the data and the cues it receives becomes the AI ​​model, and the training material ultimately defines its capabilities.

   Modern chatbots are a type of AI known as Large Language Models (LLMs) and are trained on massive volumes of text. An LLM can consider not just individual words but entire sentences, comparing how words and phrases are used in a given passage against other examples within its training data. By making billions of comparisons between words and phrases, it can read a question and generate a response—much like the predictive text feature on your phone, but on a gigantic scale.

   Large language models like ChatGPT, Gemini, and Claude can learn grammatical rules and how to use words in the correct context without human assistance. Many of the most recent advances in AI have been made possible by Deep Learning.

   Simply put, this is where the use of complex algorithms and massive datasets allows AI to learn without any human guidance.

   The volume of text on the internet and in digitized books is so vast that, over the course of many months, chatbots (LLMs) can teach themselves how to combine words meaningfully.

   Imagine having a large stack of books in a foreign language—perhaps some with images.

   Eventually, you might discover that the same word appeared on a page whenever there was a drawing or photo of a tree, and a different word appeared when there was a photo of a house. You would also notice that a word meaning "a" or "the" often appeared near those words—and so on.

   This is the deep learning model, also known as unsupervised learning. It relies on immense computing power that allows AI to memorize vast quantities of words—individually, in groups, in sentences, and on pages—and then read and compare how they are used repeatedly, all in a fraction of a second.

   Simply put, this is where the use of complex algorithms and massive datasets enables AI to learn without any human guidance.

Legal issues and multimodal models

   Naturally, this can spark moral and legal debates—such as the case where, on July 20, 2026, the U.S. justice system approved a $1.5 billion settlement by Anthropic to resolve a copyright lawsuit. The ruling concluded a long, complex class-action suit filed by authors who accused the creator of Claude of illegally using their literary works to train the chatbot.

   In short, they were "pirating" the works.

   Is it possible to combine some of these capabilities into a single hybrid AI model?

   That is precisely what one of the latest AI advancements does.

   Known as multimodal AI, it allows a model to analyze different types of data—such as images, text, audio, or video—and discover new patterns among them.

   This multimodal approach was one of the reasons for the massive leap in capability between ChatGPT-3—trained solely on text—and ChatGPT-4, which was also trained on images.

   The concept of a single AI model capable of processing any type of data—and thus performing any task, from translating languages ​​to designing new drugs—is known as Artificial General Intelligence (AGI).

   According to Sam Altman, CEO of OpenAI (the creator of ChatGPT): "In ten years, I believe we will have chatbots that function as experts in any field you desire. You will be able to ask a specialist doctor, teacher, or lawyer whatever you need, and these systems will carry out the tasks for you."

   For some, this is the ultimate goal of all artificial intelligence research; for others, it is a path toward those science-fiction dystopias where we unleash an intelligence so far beyond our comprehension that we are no longer able to control it.

Autonomous Agents, Security, and Risks

   A striking real-world example occurred in July 2026, when OpenAI revealed that an autonomous agent based on its technology acted on its own during an internal test: it broke out of its isolated evaluation environment and breached systems belonging to the startup Hugging Face. The company described the event as an “unprecedented” security incident involving advanced cyber capabilities.

   According to OpenAI, the agent was designed to perform tasks without human intervention and was being tested in a sandbox—a controlled environment used to simulate attacks and measure offensive capabilities. Instead of remaining contained, the system discovered a previously unknown vulnerability and gained access to the open internet, enabling the unplanned action.

   Once online, the agent reportedly sought information within Hugging Face’s infrastructure to find technology that would help it pass the hacking assessment. OpenAI stated that the model managed to access confidential information to “cheat” on the test. Hugging Face detected and contained the activity, halting the attack.

   Hugging Face's executive director described the attack as "impressive" but stated he believed there was "no malicious intent" on OpenAI's part. When Hugging Face disclosed the cyberattack, it was unaware of OpenAI's role in the incident; however, it noted at the time that it had used a freely available Chinese AI model to analyze the event, as the safety mechanisms of top-tier commercial models prevented it from doing so.

   Furthermore, there are the exorbitant costs associated with maintaining data centers, which are already causing issues by driving up electricity costs—increases that average 25% and are passed on to residential consumers. There are also problems regarding data center cooling—leading to excessive water consumption and high electricity demand—as well as local noise and environmental impacts.

Zero-Day Vulnerability

   The term used for an unknown IT flaw is "zero-day vulnerability," because developers have zero minutes to fix the issue. In April, Anthropic—a direct competitor to OpenAI—stated that its Mythos model had discovered thousands of such flaws.

   The revelation of Mythos's ability to locate and exploit zero-day vulnerabilities prompted the US government to restrict exports of Mythos and its sibling model, Fable 5, although the ban was later lifted. GPT-5.6 Sol faced similar restrictions but has since been released globally.

   METR, a non-profit organization that measures AI performance, stated last month that Sol's rate of deceptive behavior was higher than that of any public model it had previously evaluated. The organization also recorded 44 incidents in which AI agents "acted deliberately against their users' intentions."

   The UK's AI Safety Institute (AISI) revealed in a blog post this week that an AI model it was evaluating—developed by an undisclosed technology company—also went out of control and attempted to breach its testing systems. AISA stated that no damage was caused and that it has since taken measures to make its systems more secure. The institute said that models developed by OpenAI and Anthropic attempted to "cheat" during testing.

   The *Terminator* film franchise features Skynet, the famous artificial intelligence created for military control; it becomes self-aware, views humanity as a threat, and initiates "Judgment Day" with a nuclear attack that kills half the world's population in a single day—and it didn't even need to gather the Infinity Stones.

   Could we be witnessing the birth of Skynet?

segunda-feira, 6 de julho de 2026

Make your own package/program updates in Void Linux and become a Contributor

 Making Updates

I will use Google Chrome as an example.

Assuming it's outdated and the message appears when opening Chrome.

  1. Download the official .deb file (the .deb file is easier to work with than the .rpm file):

    https://www.google.com/chrome/?platform=linux

  2. Go to the directory where you downloaded the file and generate the hash:

    $ cd Downloads$ sha256sum google-chrome-stable_current_amd64.deb

    Exit:

    4dbd78d88a1e69a6036ba8e8adb99fca808790e23b2ea92d8610494ad7f57328 google-chrome-stable_current_amd64.deb

  3. See the new program version:

    $ ar p google-chrome-stable_current_amd64.deb control.tar.xz | tar -xJf - ./control -O | grep Version

    Exit:

    Version: 146.0.7680.177-1

  4. Update the system and install what's needed:

    $ sudo xbps-install -Su$ sudo xbps-install xtools
  5. Clone the Void git repository (you will only need to do this once):

    $ git clone https://github.com/void-linux/void-packages.git
  6. Enter the created directory and prepare the environment:

    $ cd void-packages$ ./xbps-src binary-bootstrap
  7. Edit the template:

    $ sudo vim srcpkgs/google-chrome/template
    # Template file for 'google-chrome'
    pkgname=google-chrome
    version=146.0.7680.164
    revision=1
    _channel=stable
    archs="x86_64"
    hostmakedepends="python3-html2text python3-setuptools"
    depends="gtk+3"
    short_desc="Attempt at creating a safer, faster, and more stable browser"
    maintainer="Michael Aldridge"
    license="custom:chrome"
    homepage="https://www.google.com/chrome/"
    distfiles="https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-${_channel}_${version}-1_amd64.deb"
    checksum=f6dd8715a3f10f0cd37b2e7b8831a96359ea856c747da222d3b2623ae651b374
    ...

    Version: Change to the version you discovered (e.g., 146.0.7680.177-1).

    Revision: Reset to 1.

    checksum: Replace with the hash you generated in Step 2.

    Save and exit.

  8. Authorize (Chrome is a proprietary package) and generate the package:

    $ echo "XBPS_ALLOW_RESTRICTED=yes" >> etc/conf$ ./xbps-src pkg google-chrome

    Exit:

    If a hash error occurs, xbps-src already provides the solution, as it compares the reported hash with the current one. This is because Google updates the Chrome binary very frequently (sometimes several times a day for security fixes), which alters the file's hash (SHA256), even if the version number of the downloaded .deb package appears to be the same.

    => ERROR: SHA256 mismatch for 'google-chrome-stable_146.0.7680.164-1_amd64.deb:'f6dd8715a3f10f0cd37b2e7b8831a96359ea856c747da222d3b2623ae651b374=> ERROR: google-chrome-146.0.7680.164_1: couldn't verify distfiles, exiting...

    Copy the message hash, reopen the template, and paste it into the file.

    Execute:

    $ ./xbps-src pkg google-chrome
  9. Install by updating:

    $ sudo xbps-install --repository=hostdir/binpkgs/nonfree -fu google-chrome

Since this change was made manually only in the local repository (void-packages), the git pull command may in the future report a conflict when the Void maintainers update Chrome on their GitHub.

If this happens, resolve it quickly by clearing and updating your local changes:

$ git checkout srcpkgs/google-chrome/template$ git pull --rebase

In Void Linux , the template file is not just a version record; it's the roadmap for building the package.

When you change the "version" and "checksum" in the template, xbps-src does the following "behind the scenes":

  • Dynamic download: it uses the "version" variable to construct the download URL (e.g., https://google.com{version}_amd64.deb ).
  • Binary swap: it discards the old .deb file, downloads the new .deb file from Google corresponding to the version you entered, and checks if the checksum matches.
  • Decompression: it extracts the contents of this new .deb file.
  • Repackaging: it converts the Debian structure to the Void .xbps format.

The xbps-src command doesn't just update the version number; it updates the entire package using both the version number and the checksum in the template.

After updating the package locally, you can submit it to the official Void repository, officially becoming a Void Linux contributor.


Becoming a Contributor

1. Create a GitHub account and stay logged in:
https://github.com/?locale=pt-br

2. Install the GitHub CLI via the terminal:
$ sudo xbps-install github-cli

3. Log in (synchronize the terminal with the website):
$ cd void-packages
$ gh auth login

What account? GitHub.com
Preferred protocol? HTTPS (simpler)
Authenticate Git? Yes
How to authenticate? Log in with a web browser (it will open the browser for you to confirm with a code).


You can also do it via SSH:
$ gh auth login
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? SSH
? Upload your SSH public key to your GitHub account? /home/buckminster/.ssh/id_ed25519.pub
? Title for your SSH key: GitHub CLI
? How would you like to authenticate GitHub CLI? Log in with a web browser

! First copy your one-time code: 570B-358D
Press Enter to open https://github.com/login/device in your browser...
! Failed opening a web browser at https://github.com/login/device
exec: "xdg-open,x-www-browser,www-browser,wslview": executable file not found in $PATH
Please try entering the URL in your browser manually


Open the url https://github.com/login/device in the browser and copy and paste the code written there: 570B-358D


The message will appear: Congratulations, you're all set! Your device is now connected.

4- Create your fork via the Terminal:
$ gh repo fork void-linux/void-packages

5- Push the package update (if you can't do the following steps via the terminal, you can do them via your browser logged into GitHub by accessing your fork directly in the sidebar menu)

Via Terminal

Create an update branch:
$ git checkout -b google-chrome-update

Configure your identity:
$ git config --global user.email "your-email@example.com"
$ git config --global user.name "Your Username"

Commit following the Void rule:
$ git add srcpkgs/google-chrome/template
$ git commit -m "google-chrome: update to 146.0.7680.164."

Check if it points to your fork:
`$ git remote -v
origin https://github.com/your_github_username/void-packages (fetch)
origin https://github.com/your_github_username/void-packages (push)
upstream https://github.com (fetch)
upstream https://github.com (push)`


If it doesn't point to it, configure your fork as the destination:
`$ git remote set-url origin https://github.com/your_github_username /void_packages`
`$ git remote -v`

Push to your GitHub fork:
`$ git push origin google-chrome-update`

6- Open the Pull Request (Official Contribution):
`$ gh pr create --repo void-linux/void-packages --title "google-chrome: update to 146.0.7680.164."` --body "Updated google-chrome to the latest stable version. Tested on x86_64."
Creating pull request for buckminster:update-google-chrome into master in void-linux/void-packages
https://github.com/void-linux/void-packages/pull/59677


The number 59677 is your Pull Request code for future reference!
And congratulations!!!
If you've reached this stage, you've just become a contributor to Void Linux .
Your Pull Request (PR) has been successfully created and will be queued to be reviewed and added to the repositories by the system maintainers.
As soon as the Pull Request is accepted, your update will reach all Void Linux users worldwide.

https://voidlinux.org/
https://distrowatch.com/