Jag rÀÀgin ĂŒhisest olukorrast, mis minuga juhtus, ja sellest, kuidas saada tuntud projekti kaastöötajaks.
Hiljuti tegelesin ĂŒhe ideega: Linuxi kĂ€ivitamine otse UEFI-stâŠ
Idee ei ole uus ja selle kohta on olemas mitmeid juhendeid. Ăhte neist saab vaadata
Koheselt mu pikaajalised katsed selle probleemi lahendamiseks on olnud pÀris korralikult vormistatud . Lahendus on tÀiesti toimiv ja ma kasutan seda osaliselt oma kodumasinates. Natuke detailsemalt on see lahendus kirjeldatud .
UEFI-Booti olemus seisneb selles, et ESP (EFI sĂŒsteemi partitsioon) jaguneb /boot kataloogiga. See tĂ€hendab, et kĂ”ik kernelid ja alglaadimisfailid (initrd) asuvad samal partitsioonil, millelt UEFI saab kĂ€ivitada tĂ€itmisfaile ja eelkĂ”ige laadida sĂŒsteemi laadijat. Kuid paljudes distributsioonides laotakse juba Linuxi kernel UEFISTUB valikuga, mis vĂ”imaldab kernelil UEFI-st kĂ€ivituda.
Sellel lahendusel on ĂŒks ebameeldiv hetk â ESP partitsioon on vormindatud FAT32-s, millel ei ole vĂ”imalik luua jÀÀklinke (mida sĂŒsteem regulaarselt loob initrd uuendamisel). Ja selles ei ole midagi eriti hullu, kuid sĂŒsteemi hoiatuste nĂ€gemine kernelikomponentide uuendamisel â ei ole just eriti meeldivâŠ
On ka teine tee.
UEFI laadimishaldur (just see, kuhu tuleb kirja panna operatsioonisĂŒsteemi laadija) oskab lisaks Linuxi laadijatele/kernelitele laadida ka draivereid. Nii et saad laadida selle failisĂŒsteemi draiveri, kus sul on /boot ja sealt otse UEFI vahenditega laadida kernelit. Draiver, muidugi, tuleb panna ESP partitsiooni. Just sellega tegelevad laadijad nagu GRUB. Kuid nipiks on see, et kĂ”ik sageli kasutatavad GRUBi funktsioonid on juba UEFI-s olemas. TĂ€psemalt öeldes tema laadihalduris. Ja kui olla veel tĂ€psem, siis UEFI laadimishalduril on teatud kĂŒsimustes isegi rohkem vĂ”imalusi.
See kui ilus lahendus, kuid on ĂŒks "KUID" (tĂ€psemalt oli, aga sellest hiljem). Asi on selles, et UEFI draiverite sĂŒsteem on ĂŒsna lihtne. Seal ei ole sellist mĂ”istet nagu failisĂŒsteemi mountimine vĂ”i draiveri sidumine konkreetse seadmega. Seal on sĂŒsteemi kĂ”ne tingimusliku nimega Map (ingl.) mis vĂ”tab jĂ€rjestikku iga draiveri ja pĂŒĂŒab selle siduda kĂ”igi, enam-vĂ€hem sobivate seadmetega. Ja kui draiver suudab seadme kĂŒlge ĂŒhendada, siis luuakse mappimine - siduv kirje. Just nii peab uue kĂ€ivitamiseks laaditud draiver ĂŒldises massis kĂ”igi teiste seas initsialiseerima. Ja vaid seda vajatakse - draiveri kĂ€ivitamisjĂ€rjendis tuleb seadistada ĂŒks bitt (LOAD_OPTION_FORCE_RECONNECT) vÀÀrtuseks 1 ja UEFI teeb pĂ€rast selle laadimist selle globaalse ĂŒmberseadmise.
Aga lihtsalt seda teha pole sugugi kerge. Tavaline tööriist efibootmgr (mille abil konfigureeritakse UEFI laadimisjuht) ei oska (tĂ€psemalt ei osanud) seda bitti seada. Pidin selle kĂ€sitsi seadma ĂŒsna keerulise ja ohtliku protseduuri kaudu.
Ja jĂ€lle pĂŒĂŒdes seda kĂ€sitsi teha ei suutnud ma vastu panna ja avasin palvega arendajatele lisada see funktsioon.
Möödusid mÔned pÀevad, kuid keegi ei reageerinud minu palvele. Ja oma uudishimu ajel vaatasin ma lÀhtekoodi... forkisin ja mÔtlesin, kuidas seda funktsiooni "kÀepÀraselt" lisada... "KÀepÀraselt", sest ma ei installinud midagi sellist ja redigeerisin lÀhtekoodi otse brauseris.
C (programmeermiskeel) tunnen ma vÀga pinnapealselt, kuid sain ligikaudse lahenduse kokku (peamiselt kopeerimise ja kleepimise teel)... aga siis tuli mÔte - kuna mul seal tÔenÀoliselt on palju vigu (mu varasemad katsed teiste C-koodi parandamiseks koondusid umbes 10. katsel), siis panen ma kokku Pull Requesti. Ja nii ma .
Ja seal oli juures Travis CI, et kontrollida pull requeste. Ja ta andis mulle usinalt teada kÔik minu vead. Kui vead on teada - mis siis parandus ei oleks: jÀlle otse brauseris ja neljandal katsel koode koguti (saavutus minu jaoks).
Ja nii, vÀlja ronimata brauserist, esitasin ma tÀiesti reaalse Pull Requesti utiliidile, mida kasutatakse praktiliselt kÔigis kaasaegsetes Linuxi distributsioonides.
Mina ĂŒllatas tĂ”siasi, et ma, teadmata keelt hĂ€sti ja mitte midagi enda peal seadistades (seal on sĂ”ltuvuste jaoks vajalik suur hulk raamatukogusid) ja isegi kordagi kompilaatorit kĂ€ivitamata, suutsin brauseris "koodida" tĂ€iesti toimiva ja kasuliku funktsiooni.
Kuid minu taotlus oli 19. mÀrtsist 2019 reageerimiseta ja ma olin juba hakanud sellest unustama.
Aga eile lisati see taotlus master'isse.
Nii et millest on minu jutt. See rÀÀgib sellest, et ka kaasaegsete tehnoloogiate raames on selgunud, et reaalset koodi saab juba kirjutada brauseris, ilma et paikseks mingeid arendustööriistu ja sÔltuvusi seadistama.
Tuleb tunnistada, et see on juba teine kord, kui ma teenin tuntud (vĂ€hemalt kitsastes ringkondades) utiliitide nimel. Eelmise kord minu palve parandada mĂ”ningate vĂ€ljade kuvamist SyncThingi veebiliideses tĂ”i kaasa mu tĂ”eliselt ĂŒherida muudatuse keskkonnas, mida ma ĂŒldse ei tunne.
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Kas kirjutada veel vÔi mitte?
jah
ei tohiks kasutada
HÀÀletas 294 kasutajat. 138 kasutajat hoidusid.
Allikas: habr.com
