O Linux está pronto para a "Revolução ARM"?

É bem isso. E tenho certeza que a Apple também vai sofrer bastante nessa migração, porque muitos dos softwares de terceiros vão ter problemas na nova arquitetura.

1 curtida

Esse é o grande problema do ARM, as empresas não estão dispostas a refazer seus programas do zero.

É o mesmo problema que os games estão enfrentando no Linux. A maioria espera que o Wine resolva isso pra elas, sem elas terem que gastar tempo com isso

Esse é um ponto bem pensando: e os jogos?! Como é que fica a emulação de x86 e x64 em ARM?

sempre tem um fã de BSD brotando do NADA e puxando a sardinha HAHAHAHAHHAHAHAHAHAHAHAH

ainda não estão pq não tem incentivo a partir do mercado, só entrar $$ que todo mundo corre atrás e feliz da vida

É ai que começam os problemas.
A grande diferença entre essas arquiteturas são as instruções suportadas por cada uma. O x86/x64 utiliza um conjunto de instruções maiores, que facilita o desenvolvimento mas demanda mais energia e maior complexidade das placas. Já o ARM usa um conjunto reduzido, que teoricamente permite chegar nos mesmos objetivos. Isso simplifica a arquitetura, reduz o consumo de energia e o custo de produção, mas eleva a complexidade de implementação.

Links para algumas informações sobre isso:

Deve-se lembrar que essas instruções são em linguagem de máquina (Assembly) e não em linguagens de alto nível. Então o que acontece normalmente é: Uma pessoa escreve um programa em C, por exemplo, e compila para amd64, o que vai gerar um binário que contém as instruções em linguagem de máquina (assembly) que podem ser executadas pelo processador. Essa “conversão” é feita pelo compilador, que sabe quais são as instruções suportadas pelo processador e como traduzir o código alto nível para essas instruções.

Os principais compiladores são capazes de compilar os códigos para vários tipos de processadores. Porém, as vezes são adicionados nos processadores um conjunto de instruções muito específicas, que são impossíveis (ou muito difíceis) de serem traduzidas para outras arquiteturas. Muitos programas utilizam estas instruções a fim de otimizar o desempenho, o que os tornam incompatíveis com outras arquiteturas. O Steam, por exemplo, modificou os requisitos mínimos para adicionar novos conjuntos de instruções, o que impossibilitou a execução do mesmo em processadores um pouco mais antigos. Fazendo uma procura por “Steam SSE requisitos minimos” no Google retorna alguns exemplos de jogos que também exigem tais instruções.

Além disso, muitas bibliotecas implementam (ou modificam) algumas coisas diretamente em Assembly, para conseguirem mais performance, e assim não podem ser simplesmente compiladas para outras arquiteturas, pois não se compila Assembly. Consequentemente, todos os programas que utilizam essas bibliotecas também sofrerão com a incompatibilidade.

Então basicamente muita coisa simplesmente não será compatível com o ARM, principalmente num futuro próximo. Pode ser que comecem a mudar isso aos poucos, convertendo alguns programas de cada vez, mas com certeza não vão se dar o trabalho de modificarem jogos já lançados, pois isso demandaria muito esforço pra nenhum lucro. É o mesmo que acontece para o Linux, mas ainda pior.

No caso da Apple, é capaz deles próprios tomarem a atitude de ajudarem na adaptação de alguns programas principais, ou criarem um compilador capaz de converter alguns tipos de instruções a mais, mas ainda assim a quantidade de bugs e/ou incompatibilidade total será bastante grande no primeiro momento. Já para o Linux, os programas OpenSource permitem que qualquer um faça essas adaptações, mas será um trabalho de formiguinha até a maioria dos programas estarem funcionando bem. Mas já é possível fazer a maioria tarefas do dia-a-dia, como navegar na internet, desenvolver software, editar documentos e imagens.

8 curtidas

Que resposta fantástica, bem esclarecedora.

1 curtida

Fala isso pra Apple que convence a Adobe e a Microsoft a portarem seus programas (Office e Photoshop) kk

Veja aqui um pouco sobre o Windows 10 ARM:

Aliás, a aventura da Microsoft com o Windows principal em ARM começou ainda na época do 8.

Admito que minha fonte de informação é Google e Reddit.

TL;DR: acho que dá certo colocar Linux em potenciais laptops com Windows de ARM (apesar de que acho que vai ter um período de transição com drivers duvidosos e um “Rosetta” difícil de usar) mas nem quero imaginar o que vai acontecer com esses Macs.

Detalhes:

Acho que sim. O kernel Linux já está “comprovado” em ambientes ARM há alguns anos (por exemplo, Android). O GNU/Linux de desktop também já está sendo testado nesse tipo de ambiente faz algum tempo (Raspberry Pi, PinePhone, PineBook e etc.).

Considerando que a Microsoft vai exigir o o mesmo padrão UEFI nos computadores x86 com ARM para Windows (e os Surface com ARM tem secure boot desativável, que seria um sinal de “boa-vontade”), poder instalar, com certeza poderemos, o ambiente de boot já está padronizado.

Problema vai ser os drivers (problema que também atinge os Surface) mesmo. Pelo menos vai ser menos pior que o Android, que cada celular tem um mecanismo de boot diferente a “derrotar” para instalar SOs personalizados, isso antes de lidar com drivers.

Com os programas opensource, vai ser só uma questão de tacar uma chave no compilador. Já tem coisas como Shellscript, GIMP, LibreOffice, KDE, GNOME, etc. portadas para ARM. Se esses PCs com ARM e Linux tiverem touch, finalmente o design do GNOME vai fazer sentido.

Para os programas que por algum motivo não poderão ser portados para ARM, soube um dia desses que o qemu, o mesmo das máquinas virtuais, tem o subprojeto Qemu-User que pode servir de base para um “Rosetta” para Linux. Seria uma questão de torná-lo mais transparente. A desvantagem seria ter que engordar nosso sistema com mais uma pasta /lib; já temos /lib e /lib64 na maioria das distros de x86-64, agora teremos /lib-x86 e /lib-x86-64. (mas acho que os Macs tão passando por isso nesse período de transição).

Em termos absolutos, dependendo de quanto os dispositivos x86 sejam substituídos pela potencial nova onda de ARM, sim. Se os ARM conquistarem o segmento “low-end”, com certeza vai valer a pena para aumentar a durabilidade desses dispositivos, ainda mais porque já temos meio caminho andado com o Raspberry Pi e companhia.

Comparando com o Android, acho que esse esforço compensaria mais do que, por exemplo, o postmarketOS, já que Microsoft vai impor uma padronização pra limitar o esforço que eles vão gastar recodificando o Windows. Isso também limitaria o esforço das distros.

Apple oficialmente vai permitir boot de outros SOs nesses Macs, mas volta a questão dos drivers e piora com chip de segurança deles que impede até mesmo o acesso ao SSD interno sem o SO da Apple. Esses dois problemas já atingem os Macs x86 de 2015 pra cá (nem o teclado funcionava direito até uma versão relativamente recente do kernel, e o som continua inutilizável, segundo relatos dos Reddits) e tendem a se intensificar com um Mac com peças exclusivas (até CPU e GPU) e não-documentadas.

Vai exigir um multirão de projetos open-source pra suportar esse Mac, um para cada componente. Eu honestamente acho que eles são candidatos prováveis para virar tijolos de R$ 10 000 depois do suporte da Apple e de terceiros acabar. Se eu fosse um hobbista da eletrônica, eu provavelmente focaria em projetos relacionados à GPU do Snapdragon ou à GPU genérica da ARM, que teriam um uso mais amplo por serem componentes reutilizáveis. Para constar, eles já existem (Freedreno e Bifrost, respectivamente)

2 curtidas

Com base na minha experiencia eu diria que sim, usei um orange pi com armbian e vou te dizer que foi uma das coisas mais interessantes que ja vi um computadorzinho daquele tamanho rodando linux, abrindo inkscape, libreoffice e pasme… ate o blender de forma bem fluida :thinking:

Creio eu que seja plenamente possivel, porém, percebi uma coisa, as distros para arm costumam ser especializadas, contendo apenas os drivers daquele dispositivo e isso ainda é bem diferente da experiencia que possuimos com o kernel generico para x86 e x64, acredito que para ser viavel será necessario que os computadores tenham um desempenho bom que inclusive compense a troca de instruções RISC por CISC… enfim… o debate é longo, adorei este topico kkkk

2 curtidas

Obrigado por fomentar a discussão com excelentes, plausíveis, ponderadas e detalhadas respostas e independente de terem como fonte o Reddit e o Google foram interessantes, até porque nenhum conhecimento gera-se do nada não é?! Toda teoria, descoberta ou invenção mesmo que individual se baseia em conhecimentos prévios.

Sobre o Gnome vejo que compartilhamos da mesma opinião. Para mim o Gnome atual (como o Unity) só faz sentido em telas sensíveis ao toque.

1 curtida

Não tenho dúvidas que o Linux funciona bem com esses mini-computadores, o problema é que tal qual a Apple irá fazer com os seus novos computadores, geralmente o sistema operacional nesse caso normalmente já tem que ser feito especificamente para o hardware em questão, algo como uma “imagem do sistema”, diferente da forma como por exemplo instalamos um sistema operacional em PCs, onde de forma genérica podemos instalar rigorosamente o mesmo sistema operacional em uma grande diversidade de máquinas por causa da relativa padronização criada pela IBM na década de 1980.

2 curtidas

Aqui temos alguns exemplos, se desejarmos instalar o Retropie ou Batocera em suas versões ARM, temos que ter certeza de escolher a imagem certa para a placa certa em sua versão específica:

Vão ter que uniformizar e padronizar algumas coisas como ocorrem com os PCs atuais.

Para estes computadores isso não é feito por uma limitação dos hardwares, ter todos os kernels significa maior quantidade de modulos no kernel e consequente perca de desempenho, algo complicado considerando que cada nucleo arm equivale a 0,5 nucleo de um processador x86/x64… Inclusive, considero como maior exemplo o armbian que comumente é a base do retropie vou ate mandar o site porque é bem interessante: https://www.armbian.com/

Edit: espaço também é perdido, salvo engano o android funciona na mesma esquematica, não é plenamente viavel usar o android de um celular em outro porque cada android possui apenas os drivers do aparelho ao qual se destina… isso tem suas vantagens e desvantagens… O que quero dizer é que acredito que não podemos comparar diretamente porque computadores para usuario final usando arm terão especificações melhores que vão viabilizar a produção de kernel generico… O que acha? :thinking:

1 curtida

E eu fico um pouco na duvida com o que dizes sobre a padronização porque acompilação do kernel tem justamente o objetivo de “limpar” drivers e modulos desnecessarios do kernel linux, mostrando que talvez não seja um padrão mas sim um conjunto de padrões diferentes em um unico lugar :sweat_smile:

Estou errado? Talvez, mas, na verdade estou curioso para saber se funciona como estou pensando ou se estou equivocado :rofl:

1 curtida

Não havia pensado por esse ponto de vista, é possível que sim.

Talvez eu tenha me expressado mau ou tenha ficado dúbio nesse ponto, o que quis dizer foi que apesar da diversidade louca de hardwares dentro do PC o que gera de positivo uma relativa liberdade de escolha, também gera de negativo um desperdício de recursos por conta de pacotes de drivers e módulos desnecessários, o que opera segundo regras mais ou menos estabelecidas no passado pela IBM que permitem por exemplo que se tenha Windows ou Linux em uma gama absurda de máquinas.
O modelo modular dos PCs versus por exemplo o modelo “monobloco” (hardware + software casados) é uma via de mão dupla, por um lado você consegue atingir o maior número de máquinas possíveis pela construção generalista, por outro se perde performance justamente por essa diversidade. Se tivessemos uma distro ARM para todos esses minicomputadores teríamos a liberdade de instalá-la em qualquer maquininha, mas, a performance cairia por faltar otimização. Acho que esse será um dilema para os futuros PCs ARM: como criar sistemas operacionais que funcionem nos mais diferentes hardwares de forma mais ou menos uniformizada (dai a palavra padronizada) sem perder o desempenho enxuto, mas, honesto que caracterizou os ARMs até aqui.

1 curtida

Acho que tem muita coisa pra acontecer ainda, a Apple nem lançou esses produtos ainda, nem sabemos se vai dar certo que tipo de problemas podem ocorrer.Ainda existe muita coisa legada que depende de X86 usado no mercado corporativo, essa mudança não vai acontecer tão rápido. Mas uma coisa que me pergunto é se o uso de ARM pode ajudar na compatibilidade de aplicativos Android com o Linux.

A tendência (fora do mundo Apple que usará um ARM próprio) é essa aqui:

https://www.ztop.com.br/qualcomm-pc-sempre-conectado/

Supostamente (nuca vi) já até temos um hardware destes em nosso mercado:
https://www.ztop.com.br/gadget-educacional-do-dia-positivo-wise-n1212s/
http://www.positivoemfoco.com.br/notebook-hibrido-para-salas-de-aula/
https://www.meupositivo.com.br/positivowise/
Seria um primeiro passo tímido.

O Windows voltou a se mexer em relação ao ARM: