Es jums pastÄstÄ«Å”u par smieklÄ«gu situÄciju, kas notika ar mani, un to, kÄ kļūt par lÄ«dzstrÄdnieku slavenÄ projektÄ.
Pirms neilga laika es izdomÄju ideju: palaist Linux tieÅ”i no UEFI...
Ideja nav jauna, un par Å”o tÄmu ir vairÄkas rokasgrÄmatas. JÅ«s varat redzÄt vienu no tiem
PatiesÄ«bÄ mani ilgstoÅ”ie mÄÄ£inÄjumi atrisinÄt Å”o problÄmu noveda pie pilnÄ«bÄ formalizÄta
UEFI-Boot bÅ«tÄ«ba ir tÄda, ka ESP (EFI System Partition) nodalÄ«jums tiek apvienots ar /boot direktoriju. Tie. visi kodoli un sÄknÄÅ”anas attÄli (initrd) atrodas tajÄ paÅ”Ä nodalÄ«jumÄ, no kura UEFI var palaist izpildÄmos failus un jo Ä«paÅ”i palaist sistÄmas sÄknÄÅ”anas ielÄdes. Bet pats Linux kodols daudzos izplatÄ«jumos jau ir samontÄts ar opciju UEFISTUB, kas ļauj palaist paÅ”u kodolu no UEFI.
Å im risinÄjumam ir viens nepatÄ«kams moments - ESP nodalÄ«jums ir formatÄts FAT32, uz kura nav iespÄjams izveidot cietÄs saites (kuras sistÄma regulÄri izveido, atjauninot initrd). Un tur nav nekÄ Ä«paÅ”i kriminÄla, taÄu redzÄt sistÄmas brÄ«dinÄjumus kodola komponentu atjauninÄÅ”anas laikÄ nav Ä«paÅ”i patÄ«kami...
Ir arī cits veids.
UEFI sÄknÄÅ”anas pÄrvaldnieks (tas pats, kur jÄreÄ£istrÄ OS sÄknÄÅ”anas ielÄdÄtÄjs) var papildus bootloaderiem/Linux kodoliem ielÄdÄt arÄ« draiverus. TÄtad jÅ«s varat ielÄdÄt draiveri failu sistÄmai, kurÄ jums ir /boot, un ielÄdÄt kodolu tieÅ”i no turienes, izmantojot UEFI. Draiveris, protams, ir jÄievieto ESP nodalÄ«jumÄ. Tas ir aptuveni tas, ko dara sÄknÄÅ”anas ielÄdÄtÄji, piemÄram, GRUB. Bet galvenais ir tas, ka visas bieži izmantotÄs GRUB funkcijas jau ir UEFI. PrecÄ«zÄk tÄ lejupielÄdes pÄrvaldniekÄ. Un, lai bÅ«tu vÄl garlaicÄ«gÄk, UEFI sÄknÄÅ”anas pÄrvaldniekam dažos jautÄjumos ir vÄl lielÄkas iespÄjas.
Å Ä·iet, ka tas ir skaists risinÄjums, bet ir viens āBETā (pareizÄk sakot, tas bija, bet par to vÄlÄk). Fakts ir tÄds, ka UEFI draiveru sistÄma ir diezgan vienkÄrÅ”a. Nav tÄdas lietas kÄ failu sistÄmas uzstÄdÄ«Å”ana vai draivera saistÄ«Å”ana ar noteiktu ierÄ«ci. Ir sistÄmas izsaukums ar nosacÄ«to nosaukumu Map, kas Åem katru vadÄ«tÄju pÄc kÄrtas un mÄÄ£ina to saistÄ«t ar visÄm, vismaz piemÄrotajÄm ierÄ«cÄm. Un, ja vadÄ«tÄjs varÄja paÅemt ierÄ«ci, tiek izveidots kartÄjums - savienojuma ieraksts. TieÅ”i Å”ÄdÄ veidÄ tikko ielÄdÄtais draiveris ir jÄinicializÄ kopÄjÄ kaudzÄ ar visiem pÄrÄjiem. Un viss, kas jums nepiecieÅ”ams, ir iestatÄ«t vienu bitu (LOAD_OPTION_FORCE_RECONNECT) uz 1 draivera sÄknÄÅ”anas ierakstÄ, un UEFI veiks Å”o globÄlo pÄrkartoÅ”anu pÄc tÄ ielÄdes.
Bet tas nav tik vienkÄrÅ”i izdarÄms. Standarta utilÄ«ta efibootmgr (kas tiek izmantota, lai konfigurÄtu UEFI izkrauÅ”anas pÄrvaldnieku) nezina, kÄ (vai drÄ«zÄk, nezinÄja, kÄ) iestatÄ«t Å”o bitu. Man tas bija jÄinstalÄ manuÄli, izmantojot diezgan sarežģītu un bÄ«stamu procedÅ«ru.
Un atkal, mÄÄ£inot to izdarÄ«t ar savÄm rokÄm, es neizturÄju un formalizÄjos
PagÄja vairÄkas dienas, bet neviens manam lÅ«gumam nepievÄrsa uzmanÄ«bu. Un aiz ziÅkÄrÄ«bas es paskatÄ«jos avota kodu... Es to sagriezu un uz ceļiem izdomÄju, kÄ pievienot Å”o funkciju... āUz ceļiemā, jo es neko tÄdu neinstalÄju un rediÄ£Äju avotu kodu tieÅ”i pÄrlÅ«kprogrammÄ.
Es zinu C (programmÄÅ”anas valodu) ļoti virspusÄji, bet es ieskicÄju aptuvenu risinÄjumu (pÄrsvarÄ copy-paste)... un tad nodomÄju - vismaz man tur ir daudz kļūdu (mana pagÄtnes mÄÄ£inÄjumi rediÄ£Ät kÄda cita C kods tika aizpildÄ«ts apmÄram 10. reizi) Es izsniegÅ”u Pull Request. Nu
Un tur izrÄdÄ«jÄs, ka Travis CI ir pievienots, lai pÄrbaudÄ«tu pull pieprasÄ«jumus. Un viÅÅ” man cÄ«tÄ«gi izstÄstÄ«ja visas manas kļūdas. Ja ir zinÄmas kļūdas, tÄs nav jÄlabo: atkal tieÅ”i pÄrlÅ«kprogrammÄ, un ceturtajÄ mÄÄ£inÄjumÄ kods darbojÄs (man tas ir sasniegums).
Un tieÅ”i tÄpat, neizejot no pÄrlÅ«kprogrammas, es formatÄju ļoti Ä«stu Pull Request utilÄ«tprogrammÄ, kas tiek izmantota gandrÄ«z visos mÅ«sdienu Linux izplatÄ«jumos.
Mani pÄrsteidza fakts, ka, Ä«sti nezinot valodu, neko neiestatot (atkarÄ«bu montÄžai ir vajadzÄ«gas diezgan daudzas bibliotÄkas) un pat nepalaižot kompilatoru, es vienkÄrÅ”i āiekodÄjuā pilnÄ«bÄ strÄdÄjoÅ”u un noderÄ«gu funkciju pÄrlÅ«kprogramma.
TomÄr kopÅ” 19. gada 2019. marta mans pieprasÄ«jums palika bez atsauces, un es jau biju sÄcis par to aizmirst.
Bet vakar Ŕis pieprasījums tika pievienots meistaram.
Par ko tad ir mans stÄsts? Un viÅÅ” runÄ par to, ka mÅ«sdienu tehnoloÄ£iju ietvaros izrÄdÄ«jÄs, ka reÄlu kodu jau var ierakstÄ«t pÄrlÅ«kprogrammÄ, lokÄli neizvietojot nekÄdus izstrÄdes rÄ«kus un atkarÄ«bas.
TurklÄt, jÄatzÄ«st, Å”is jau ir mans otrais pievilcÄ«bas pieprasÄ«jums labi zinÄmiem (vismaz Å”aurÄs aprindÄs) komunÄlajiem pakalpojumiem. IepriekÅ”ÄjÄ reizÄ mans lÅ«gums labot dažu SyncThing tÄ«mekļa saskarnes lauku rÄdÄ«jumus izraisÄ«ja manu burtiski vienas rindiÅas rediÄ£ÄÅ”anu vidÄ, kuru es vispÄr nezinu.
AptaujÄ var piedalÄ«ties tikai reÄ£istrÄti lietotÄji.
Vai man rakstÄ«t vairÄk vai nÄ?
-
jÄ
-
nav tÄ vÄrts
Nobalsoja 294 lietotÄji. 138 lietotÄji atturÄjÄs.
Avots: www.habr.com