
Cuando tengo alguna distribución de Linux instalada en un sistema x64, por ejemplo, puedo desconectar mi unidad de almacenamiento y ponerla en otra máquina x64, instalar algunos controladores HL, como el controlador de gráficos, y lo más probable es que se ejecute sin problemas.
Cuando se trata de sistemas ARM, especialmente los SoC ARM, como los teléfonos inteligentes de cualquier tipo, el panorama es completamente diferente. Hay una versión diferente del mismo sistema operativo (por ejemplo, una distribución OEM de Android) para cada teléfono inteligente.
Mi pregunta es: ¿Por qué es eso?
Entiendo que, a diferencia de las PC con arquitectura estandarizada, existen muchísimos chips y arquitecturas de SoC. Pero con el árbol de dispositivos en mente, me pregunto por qué no hay una manera de colocar el árbol de dispositivos, como descripción del hardware, junto con el gestor de arranque en algún chip ROM y construir el sistema operativo Linux independientemente de las especificaciones de hardware, al menos dentro de unos límites definidos.
Respuesta1
Me pregunto por qué no hay una manera de colocar el árbol de dispositivos, como descripción del hardware, junto con el gestor de arranque en algún chip ROM y construir el sistema operativo Linux independientemente de las especificaciones de hardware, al menos dentro de algunos límites definidos.
Respuesta: Baratura. Nadie quiere pagar por el chip ROM. El SoC tiene una ROM de arranque, pero el árbol de dispositivos varía según el circuito en el que se encuentra el SoC, por lo que eso no es bueno. Necesitaría un "chip BIOS" separado, como el que tienen las placas x86, para que esto funcione.
Puede hacer que funcione tratando la tarjeta SD desde la que arrancan la mayoría de las placas ARM como el chip BIOS; simplemente coloque U-Boot y el árbol de dispositivos en él, y haga que U-Boot cargue el kernel desde una unidad USB. Entonces la unidad USB sería (bastante) portátil de una placa ARM a otra.
En términos de optimización, si bien puedes compilar para ARM de forma genérica, realmente vale la pena apuntar a un procesador específico (mucho más que en x86_64).