Écrire mon propre BIOS
Je ne suis pas fou, juste réinventer la roue: D
J'ai écrit boot-loaders, souris et clavier Mini-pilotes, mini OS et ainsi de suite.
J'essaie toujours d'éviter les interruptions DOS, en utilisant uniquement les bios, en essayant d'avancer un mini OS unity, mais soudainement j'ai décidé d'écrire mon propre BIOS:)
La Légende dit :
J'étais programmeur de haut niveau, puis de bas niveau. Un jour, je serai programmeur en langage machine!
Un BIOS est-il écrit en assembly? Comment puis-je le flash? Quelle est la mécanisme? Puis - je commencer à modifier mon BIOS actuel?
4 réponses
Un BIOS peut être écrit en assembly mais ne doit pas l'être, certaines parties doivent l'être pour obtenir les paramètres de l'appel système car elles ne correspondent pas à la convention d'appel des compilateurs.
Comment le flasher? Varie d'une carte mère à la carte mère, je commencerais avec une machine virtuelle open source et écrirais un bios pour cela. Ou créez une machine virtuelle où vous avez écrit le bios. Le mécanisme varie d'un fournisseur à l'autre, généralement vous démarrez dos (dos n'est pas mort, il est très beaucoup vivant dans le monde du PC, le développement de la carte mère esp et les systèmes embarqués). Je ne plaisante pas avec une vraie carte mère, si vous ne connaissez pas déjà les réponses à toutes ces questions, vous allez brique un certain nombre de cartes mères si vous prenez ce chemin.
Vous pouvez essayer de prendre une mise à niveau du bios pour votre carte mère et l'ingénierie inverse (bien qu'il y ait probablement un accord de clic qui dit que vous ne l'aurez pas). Si vous comprendre vous pouvez charger et hack at. Je ne serait pas y aller, vous brique votre système avant de le comprendre.
Écrire un bios est-il vraiment ce que vous recherchez? Assez vieille école, ce serait comme écrire du code 6502 pour le plaisir. Il y a beaucoup de problèmes de bas niveau qui sont plus utiles et aussi intéressants.
Si vous pouvez écrire asm, le code machine à écrire n'est pas si difficile du tout, vous pouvez simplement le faire pour le plaisir. x86 est terrible, vous devriez passer du temps à apprendre d'autres systèmes et leur code asm et machine (et écrire des systèmes d'exploitation pour eux). ARM domine le monde et ne repose pas sur un bios. On m'a dit que pour obtenir une carte vidéo sur un système non-x86, vous devez toujours jouer quelque chose dans x86 sur le bios x86, pourrait comprendre comment faire apparaître une carte vidéo grand public sans avoir besoin d'exécuter le bios x86. regardez un émulateur exécuter le bios et voir ce qu'il fait, comprendre remplacer cette puissance sur init sans le bios le faire...L'écriture d'un jeu d'instructions d'un simulateur ou d'un désassembleur est la suivante au-delà de l'écriture de code machine, Je ne perdrais même pas une seconde de temps sur x86, je peux suggérer une liste d'alternatives (ou vous pourriez simplement jouer avec les simulateurs que j'ai écrits ou collectés).
Si un bios x86 est la façon dont vous voulez aller, votre meilleur chemin est d'écrire, de remplacer ou de pirater un bios pour une machine virtuelle qemu, virtualbox ou autre. Remplacer ce bios par le vôtre serait probablement remplacer un fichier dans un répertoire ou en utilisant une option de ligne de commande pour spécifier un suppléant du bios. Une fois que vous êtes bien expérimenté dans ce domaine, alors s'il y a encore des cartes mères avec des Bios hérités sur eux, vous pouvez peut-être vous frayer un chemin dans la programmation d'un (besoin d'acheter plusieurs de chaque type de carte mère comme vous en brique). Avec autant de systèmes embarqués là-bas qui peuvent être eu pour $ 20 à $ 200 avec le même niveau d'expérience acquise, il n'a pas de sens de pirater une carte mère pc sans schémas et documentation décents. Vous pouvez déterrer un PC original avec le la liste schématique et bios étant documentée, et le bios étant socketed donc si le vôtre ne démarre pas (et ne détruit pas la carte mère) ce n'est pas une brique que vous pouvez reprogrammer ou remplacer la puce du bios. Vous voulez probablement utiliser un microcontrôleur pour se présenter comme un faux bios, Car trouver le bon matériel pour reprogrammer plus de puces bios est peut-être plus difficile de trouver ce PC original...Il y a une communauté amiga qui est probablement beaucoup plus amusant et serait heureux de vous avoir améliorer / peaufiner leur bios, dites mettre du matériel moderne derrière les appels système hérités.
FWIW Modbin est un programme DOS qui, comme son nom l'indique modifie les images BIN en particulier dans le but de deux changements simples qnd assez extrêmes au code BIOS existant.
Si vous pouvez obtenir un vieux mobo (beaucoup sont jetés encore travailler) je vous encourage à jouer avec le BIOS. C'est informatif et amusant, si l'on est si incliné et que vous semblez l'être:) il fut un temps où j'ai téléchargé des images du BIOS de mobos qui avaient les mêmes ou assez similaires chipsets bien fait par un fabricant différent...parfois, à un avantage considérable, y compris les plus simples comme continuer à obtenir des mises à jour du BIOS après que le fabricant mobo original a laissé tomber la balle ou est allé ventre, mais aussi des fonctionnalités et des options orientées performance et des modifications.
Cela a conduit à un "clignotement à chaud" qui tire une puce BIOS sockettée de sorte que les broches ont à peine pris contact et une fois démarrées, en tirant celle-ci et en remplaçant une mauvaise (souvent celle que j'avais fuxored) tout en courant et clignotant en utilisant la fonctionnalité du BIOS mis en cache qui a maintenu le système actif. Des trucs amusants pour ceux d'entre nous de la persuasion geek et m'a donné la confiance pour écrire des pilotes de périphériques pour OS / 2
Il existe des moyens de flasher le bios autres que d'avoir le pc en cours d'exécution peut-être. Mais cela nécessite du matériel. Ne devrait pas être très cher.
Vous pourriez essayer quelque chose comme ce genre de tecnique: http://hackaday.com/2010/11/18/build-your-own-soic-progamming-clip/
Ce discours que j'ai vu aujourd'hui: https://conference.hitb.org/hitbsecconf2015ams/sessions/how-many-million-bioses-would-you-like-to-infect/
Il l'a expliqué plus en détail, bien que vous peut-être pas à la recherche d'une infection, certains tecniques pour se rendre au bios sont couverts, où le clip de programmation est l'un d'entre eux.
Si vous voulez écrire un BIOS pour un ordinateur compatible IBM PC (ce qui est ce que la majorité des PC de bureau sont aujourd'hui, mais avec plus d'extensions au jeu D'instructions CPU, et quelques interfaces de BUS différentes), alors je vous suggère de regarder à travers le IBM PC, IBM PC XT, et manuels de référence technique IBM PC AT. En particulier le manuel IBM PC AT, Car c'est ce que la norme de facto est.
Ces les manuels ont une liste de programme du BIOS complet utilisé par IBM sur leurs ordinateurs, et ils sont en langage assembleur. Vous devrez peut-être parcourir un peu ces manuels (en particulier le PC IBM) pour les trouver, car certains ne sont pas directement répertoriés dans la table des matières, mais ils sont là. J'espère que ces BIOSs peuvent vous aider à démarrer.