Tulevik on juba käes või kood otse brauseris

Räägin teile ühest naljakast olukorrast, mis minuga juhtus, ja sellest, kuidas saada kuulsasse projekti kaasaaitajaks.

Mitte kaua aega tagasi nuputasin ma ideed: käivitada Linux otse UEFI-st...
Idee pole uus ja sellel teemal on mitmeid käsiraamatuid. Näete ühte neist siin

Tegelikult lõppesid minu pikaajalised katsed seda probleemi lahendada täielikult vormistatud otsus. Lahendus on üsna toimiv ja ma kasutan seda mõnes oma koduses masinas. Seda lahendust kirjeldatakse veidi üksikasjalikumalt. siin.

UEFI-Booti olemus seisneb selles, et ESP (EFI System Partition) partitsioon on kombineeritud /boot kataloogiga. Need. kõik tuumad ja alglaadimiskujutised (initrd) asuvad samal partitsioonil, kust UEFI saab käivitada täitmisfaile ja eriti käivitada süsteemi alglaadijaid. Kuid paljudes distributsioonides on Linuxi tuum ise juba koostatud valikuga UEFISTOB, mis võimaldab kerneli enda käivitada UEFI-st.

Sellel lahendusel on üks ebameeldiv hetk - ESP-partitsioon on vormindatud FAT32-s, millele on võimatu luua kõvasid linke (mida süsteem loob regulaarselt initrd-i värskendamisel). Ja selles pole midagi eriti kriminaalset, kuid süsteemihoiatuste nägemine kerneli komponentide värskendamisel pole just meeldiv...

On veel üks viis.

UEFI alglaadimishaldur (sama, kus tuleb registreerida OS-i alglaadur) saab lisaks alglaaduritele/Linuxi tuumadele laadida ka draivereid. Nii saate laadida failisüsteemi draiveri, kus teil on /boot, ja laadida kerneli otse sealt UEFI abil. Draiver tuleb loomulikult paigutada ESP-sektsiooni. Umbes seda teevad alglaadurid nagu GRUB. Kuid esiletõst on see, et kõik sageli kasutatavad GRUB-i funktsioonid on juba UEFI-s. Täpsemalt selle allalaadimishalduris. Ja et oleks veelgi igavam, on UEFI alglaadimishalduril mõnes asjas veelgi rohkem võimalusi.

Tundub ilus lahendus, aga on üks “AGA” (õigemini, oli, aga sellest hiljem). Fakt on see, et UEFI draiverisüsteem on üsna lihtne. Pole olemas sellist asja nagu failisüsteemi paigaldamine või draiveri seostamine konkreetse seadmega. On süsteemikutse kokkuleppelise nimega Map, mis võtab iga juhi kordamööda ja püüab seda kõigi, vähemalt sobivate seadmetega seostada. Ja kui juht suutis seadme kätte saada, luuakse vastendus - ühenduskirje. Täpselt nii tuleks värskelt laaditud draiver kõigi teistega ühises hunnikus lähtestada. Ja kõik, mida vajate, on seada draiveri alglaadimiskirjes üks bitt (LOAD_OPTION_FORCE_RECONNECT) väärtuseks 1 ja UEFI teeb selle globaalse ümberkujundamise pärast selle laadimist.

Kuid seda pole nii lihtne teha. Standardne utiliit efibootmgr (mida kasutatakse UEFI mahalaadimishalduri konfigureerimiseks) ei tea, kuidas (õigemini ei teadnud, kuidas) seda bitti määrata. Pidin selle käsitsi installima üsna keerulise ja ohtliku protseduuri kaudu.

Ja taas kord, kui ma proovisin seda oma kätega teha, ei suutnud ma seda taluda ja vormistasin probleem GitHubis paludes arendajatel see funktsioon lisada.

Möödus mitu päeva, kuid keegi ei pööranud mu palvele tähelepanu. Ja huvi pärast vaatasin lähtekoodi... Ma harutasin selle ja mõtlesin põlvili, kuidas seda funktsiooni lisada... "Põlvikul", sest ma ei installinud midagi sellist ja muutsin allikat kood otse brauseris.

Ma tean C-d (programmeerimiskeelt) väga pealiskaudselt, aga visandasin ligikaudse lahenduse (enamasti copy-paste)... ja siis mõtlesin – vähemalt mul on seal ilmselt palju vigu (minu varasemad katsed redigeerida kellegi teise oma C-kood täideti umbes 10. korda) Ma annan välja tõmbamistaotluse. Noh disainitud.

Ja seal selgus, et Travis CI on tõmbetaotluste kontrollimiseks lisatud. Ja ta rääkis mulle püüdlikult kõik mu vead. Noh, kui on teadaolevaid vigu, pole vaja seda parandada: jällegi otse brauseris ja neljandal katsel kood töötas (minu jaoks saavutus).

Ja just nii, ilma brauserist lahkumata, vormindasin väga tõelise Pull Requesti utiliidi, mida kasutatakse peaaegu kõigis kaasaegsetes Linuxi distributsioonides.

Mind üllatas tõsiasi, et ilma keelt õieti oskamata, midagi seadistamata (sõltuvused nõuavad kokkupanemiseks üsna palju teeke) ja isegi kompilaatorit käivitamata "kodeerisin" lihtsalt täielikult toimiva ja kasuliku funktsiooni brauser .

Minu taotlus jäi aga alates 19. märtsist 2019 vastuseta ja olin seda juba unustama hakanud.

Aga eile lisati see taotlus masterile.

Millest siis mu lugu räägib? Ja ta räägib sellest, et kaasaegsete tehnoloogiate raames selgus, et brauseris saab juba päris koodi kirjutada, ilma et oleks vaja kohalikke arendustööriistu ja sõltuvusi juurutada.

Pealegi, pean tunnistama, on see juba minu teine ​​tõmbetaotlus tuntud (vähemalt kitsastes ringkondades) kommunaalteenuste osas. Viimati tõi minu palve parandada SyncThing veebiliidese mõne välja kuvamist minu sõna otseses mõttes üherealise redigeerimise keskkonnas, mida ma üldse ei tunne.

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas ma peaksin rohkem kirjutama või mitte?

  • jah

  • mitte seda väärt

294 kasutajat hääletas. 138 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar