1 votes

Est-il possible de créer un système d'exploitation pour les appareils Android ?

Est-il possible de faire fonctionner un système d'exploitation autres qu'Android sur les appareils Android ? Je sais que le bootloader est codé en dur dans le firmware et que même si vous essayez, vous ne pouvez pas changer ce qu'il fait, mais si à partir de ce bootloader, vous utilisez la fonction Noyau qu'il charge à charger un autre système d'exploitation . Quelque chose comme un chargeur de démarrage secondaire . Est-ce possible ? Pourriez-vous compiler votre propre système d'exploitation y installez-le sur un appareil Android si toutes les conditions nécessaires sont remplies ? Qu'en est-il d'un système d'exploitation "Hello World" ? Est-ce également possible ? Et Je ne sais pas. signifie Linux.

2voto

Irfan Latif Points 16863

Quelque chose comme un chargeur de démarrage secondaire . Est-ce possible ?

Oui, c'est possible. Comme vous l'avez mentionné, puisque la chaîne de démarrage jusqu'à l'étape du chargeur de démarrage est une source fermée et que les binaires sont signés avec les clés privées de l'équipementier, il n'est pas possible de remplacer ou de modifier le chargeur de démarrage. Cependant, si le chargeur de démarrage est déverrouillable, il est possible de démarrer un noyau personnalisé (votre propre système d'exploitation). Mais le première chose est que vous devez suivre le format standard de boot.img (c'est-à-dire des décalages et des formats de fichiers fixes pour le binaire du noyau, le ramdisk, le DTB, etc. spécifié dans Android (AOSP).

Ensuite, construire un noyau "Hello World (ou même un chargeur de démarrage ) pour un PC est plutôt simple car la plupart des bus et le matériel qui leur est rattaché sont déjà reconnus par le BIOS/UEFI. Cependant, la plupart des appareils Android sont basés sur ARM, ils ne disposent donc pas d'ACPI comme dans le BIOS/UEFI. Au lieu de cela, le mappage du matériel est fourni sous la forme de Arbre des dispositifs qui est fourni par le vendeur du SoC. La source du noyau Android/Linux fournie par l'équipementier comprend également des pilotes pour tous les composants matériels. Vous devez donc inclure le Device Tree Blob (DTB) et les parties pertinentes de la source du noyau dans votre noyau personnalisé.

Le chargeur de démarrage lui-même est construit avec le DTB pour utiliser les composants matériels comme eMMC/UFS, l'écran, l'USB, etc. pour pouvoir flasher les partitions, afficher l'écran de démarrage, se connecter au PC, etc. Par exemple, splash_region o freamebuffer dans DTB spécifie les adresses de mémoire du matériel d'affichage, qui est nécessaire pour imprimer par ex. Bonjour le monde sur l'écran.

Troisièmement, de nombreux les interfaces du noyau sont propriétaires (non documenté) et ils ne fonctionnent pas avec les ioctls/syscalls standards de Linux. Afin d'utiliser pleinement les fonctionnalités matérielles (caméra, GPS, modem, etc.), vous avez besoin de blobs binaires propriétaires ( HAL s) dans l'espace utilisateur, encore une fois fourni par l'équipementier. Le cadre Android utilise HIDL pour communiquer avec les HALs, donc vous devez aussi compter sur cela.

Donc, ce que vous obtenez n'est pas un pur "autre qu'Android" OS. Pour une grande partie, vous devez partager la même base de code, les mêmes spécifications et les mêmes ressources qui fonctionnent dans le système d'exploitation Android, qu'il s'agisse du noyau ou de l'espace utilisateur.

Pour plus de détails, voir :

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X