
Quando tenho alguma distribuição Linux instalada em um sistema x64, por exemplo, posso praticamente desconectar minha unidade de armazenamento e colocá-la em outra máquina x64, instalar alguns drivers HL, como o driver gráfico, e provavelmente será executado sem complicações.
Quando se trata de sistemas ARM, especialmente SoCs ARM, como smartphones de qualquer tipo, o quadro é completamente diferente. Há uma versão diferente do mesmo sistema operacional (por exemplo, uma distribuição OEM Android) para cada smartphone.
Minha pergunta é: por que isso?
Entendo que, diferentemente dos PCs com arquitetura padronizada, existem muitos chips e arquiteturas SoC. Mas com a árvore de dispositivos em mente eu me pergunto por que não há uma maneira de colocar a árvore de dispositivos, como a descrição do hardware, junto com o bootloader em algum chip ROM e construir o sistema operacional Linux independentemente de quaisquer especificações de hardware, pelo menos dentro alguns limites definidos.
Responder1
Eu me pergunto por que não há uma maneira de colocar a árvore de dispositivos, como a descrição do hardware, junto com o bootloader em algum chip ROM e construir o sistema operacional Linux independentemente de quaisquer especificações de hardware, pelo menos dentro de alguns limites definidos.
Resposta: Barato. Ninguém quer pagar pelo chip ROM. O SoC possui uma ROM de inicialização, mas a árvore de dispositivos varia dependendo do circuito em que o SoC está, então isso não é bom. Você precisaria de um "chip BIOS" separado, como as placas x86, para fazer isso funcionar.
Você pode fazer isso funcionar tratando o cartão SD a partir do qual a maioria das placas ARM inicializa como o chip BIOS; basta colocar o U-Boot e a árvore de dispositivos nele e fazer com que o U-Boot carregue o kernel de uma unidade USB. Então a unidade USB seria (bastante) portátil de placa ARM para placa ARM.
Em termos de otimização, embora você possa compilar para ARM genericamente, realmente vale a pena direcionar um processador específico (muito mais do que em x86_64).