El futur ja és aquí o codi directament al navegador

T'explicaré una situació divertida que em va passar i com esdevenir col·laborador d'un projecte famós.

No fa gaire, vaig estar jugant amb una idea: arrencar Linux directament des de UEFI...
La idea no és nova i hi ha una sèrie de manuals sobre aquest tema. Podeu veure'n un aquí

De fet, els meus intents de llarga data per resoldre aquest problema van donar lloc a una formalització completament la decisió. La solució funciona bastant i la faig servir en algunes de les meves màquines domèstiques. Aquesta solució es descriu amb una mica més de detall. aquí.

L'essència de UEFI-Boot és que la partició ESP (EFI System Partition) es combina amb el directori /boot. Aquells. tots els nuclis i les imatges d'arrencada (initrd) es troben a la mateixa partició des de la qual UEFI pot llançar fitxers executables i, en particular, llançar els carregadors d'arrencada del sistema. Però el propi nucli de Linux en moltes distribucions ja està muntat amb l'opció UEFISTUB, que permet llançar el propi nucli des de UEFI.

Aquesta solució té un moment desagradable: la partició ESP està formatada en FAT32, on és impossible crear enllaços durs (que el sistema crea regularment quan actualitza l'initrd). I això no té res especialment criminal, però veure els avisos del sistema quan actualitzeu els components del nucli no és gaire agradable...

Hi ha una altra manera.

El gestor d'arrencada UEFI (el mateix on cal registrar el carregador d'arrencada del sistema operatiu) pot, a més dels carregadors d'arrencada/nuclis de Linux, també carregar controladors. Així que podeu carregar el controlador del sistema de fitxers on teniu /boot i carregar el nucli directament des d'allà mitjançant UEFI. El controlador, per descomptat, s'ha de col·locar a la partició ESP. Això és aproximadament el que fan els carregadors d'arrencada com GRUB. Però el més destacat és que totes les funcions GRUB d'ús freqüent ja es troben a UEFI. Més precisament en el seu gestor de descàrregues. I per ser encara més avorrit, el gestor d'arrencada UEFI té encara més capacitats en alguns assumptes.

Sembla que és una solució bonica, però hi ha un "PERÒ" (o millor dit, ho era, però en parlarem més endavant). El fet és que el sistema de controladors UEFI és bastant senzill. No hi ha tal cosa com muntar un sistema de fitxers o associar un controlador amb un dispositiu específic. Hi ha una trucada al sistema amb el nom convencional Map, que agafa cada conductor per torn i intenta associar-lo a tots, almenys els dispositius adequats. I si el conductor va poder recollir el dispositiu, es crea un mapa: un registre de connexió. Així és exactament com s'ha d'inicialitzar el controlador recentment carregat en un munt comú amb tots els altres. I tot el que necessiteu és establir un bit (LOAD_OPTION_FORCE_RECONNECT) a 1 al registre d'arrencada del controlador i UEFI farà aquesta reasignació global després de carregar-lo.

Però això no és tan fàcil de fer. La utilitat estàndard efibootmgr (que s'utilitza per configurar el gestor de descàrrega UEFI) no sap com (o més aviat, no sabia com) configurar aquest bit. Vaig haver d'instal·lar-lo manualment mitjançant un procediment força complicat i perillós.

I un cop més, després d'haver intentat fer-ho amb les mans, no ho vaig aguantar i em vaig formalitzar problema a GitHub demanant als desenvolupadors que afegeixin aquesta funció.

Van passar uns quants dies, però ningú va fer cas a la meva petició. I per curiositat, vaig mirar el codi font... el vaig bifurcar i vaig descobrir de genolls com afegir aquesta característica... "De genolls" perquè no vaig instal·lar res així i vaig editar la font. codi directament al navegador.

Conec C (el llenguatge de programació) molt superficialment, però vaig esbossar una solució aproximada (principalment copiar i enganxar)... i després vaig pensar: almenys probablement tinc molts errors allà (els meus intents passats d'editar els d'una altra persona). El codi C es va completar aproximadament la 10a vegada) emetré una sol·licitud d'extracció. Bé dissenyat.

I allà va resultar que Travis CI estava adjunt per comprovar les sol·licituds d'extracció. I amb diligència em va explicar tots els meus errors. Bé, si hi ha errors coneguts, no cal arreglar-ho: de nou, just al navegador, i al quart intent el codi va funcionar (un èxit per a mi).

I així, sense sortir del navegador, vaig formatar una sol·licitud d'extracció molt real en una utilitat que s'utilitza en gairebé totes les distribucions de Linux modernes.

Em va sorprendre el fet que, sense conèixer realment l'idioma, sense configurar res (les dependències requereixen unes quantes biblioteques per al muntatge), i sense tan sols executar el compilador, simplement vaig "codificar" una característica completament útil i útil al navegador .

Tanmateix, la meva sol·licitud no va respondre des del 19 de març de 2019 i ja m'havia començat a oblidar.

Però ahir aquesta petició es va afegir al mestre.

Aleshores, de què tracta la meva història? I parla del fet que, en el marc de les tecnologies modernes, va resultar que el codi real ja es pot escriure al navegador, sense desplegar cap eina de desenvolupament ni dependència localment.

A més, he d'admetre que aquesta ja és la meva segona sol·licitud d'extracció d'utilitats conegudes (almenys en cercles estrets). La darrera vegada, la meva sol·licitud per corregir la visualització d'alguns camps a la interfície web de SyncThing va donar lloc a la meva edició literalment d'una línia en un entorn que no conec gens.

Només els usuaris registrats poden participar en l'enquesta. Inicia sessiósi us plau.

He d'escriure més o no?

  • no val la pena

Han votat 294 usuaris. 138 usuaris es van abstenir.

Font: www.habr.com

Afegeix comentari