La estonteco jam estas ĉi tie aŭ kodado ĝuste en la retumilo

Mi rakontos al vi pri amuza situacio, kiu okazis al mi, kaj kiel fariĝi kunlaboranto de fama projekto.

Antaŭ nelonge mi tuŝis ideon: lanĉu Linukson rekte de UEFI...
La ideo ne estas nova kaj ekzistas kelkaj manlibroj pri ĉi tiu temo. Vi povas vidi unu el ili tie

Efektive, miaj longdaŭraj provoj solvi ĉi tiun problemon rezultigis tute formaligitan decido. La solvo sufiĉe funkcias kaj mi uzas ĝin sur kelkaj el miaj hejmaj maŝinoj. Ĉi tiu solvo estas priskribita iom pli detale. tie.

La esenco de UEFI-Boot estas, ke la subdisko ESP (EFI System Partition) estas kombinita kun la dosierujo /boot. Tiuj. ĉiuj kernoj kaj bootstrap bildoj (initrd) situas sur la sama sekcio de kiu UEFI povas lanĉi ruleblajn dosierojn kaj, precipe, lanĉi sistemajn ekŝargilojn. Sed la Linukso-kerno mem en multaj distribuoj jam estas kunmetita kun la opcio UEFISTUB, kiu permesas lanĉi la kernon mem de UEFI.

Ĉi tiu solvo havas unu malagrablan momenton - la ESP-diskodo estas formatita en FAT32, sur kiu estas neeble krei malmolajn ligilojn (kiujn la sistemo kreas regule dum la ĝisdatigo de la initrd). Kaj estas nenio aparte krima pri tio, sed vidi sistemajn avertojn dum ĝisdatigado de kernaj komponantoj ne estas tre agrabla...

Estas alia maniero.

La ekfunkciigo de UEFI (la sama, kie vi devas registri la OS-ŝargilon) povas, krom ekŝargiloj/Linuksaj kernoj, ankaŭ ŝargi ŝoforojn. Do vi povas ŝargi la pelilon por la dosiersistemo kie vi havas /boot kaj ŝargi la kernon rekte de tie uzante UEFI. La ŝoforo, kompreneble, devas esti metita en la ESP-sekcion. Ĉi tio estas proksimume kion faras ekŝargiloj kiel GRUB. Sed la kulminaĵo estas, ke ĉiuj ofte uzataj GRUB-funkcioj jam estas en UEFI. Pli precize en ĝia elŝuta administranto. Kaj por esti eĉ pli enuiga, la boto-administranto de UEFI havas eĉ pli da kapabloj en iuj aferoj.

Ŝajnas esti bela solvo, sed ekzistas unu "SED" (aŭ pli ĝuste, ĝi estis, sed pli pri tio poste). La fakto estas, ke la UEFI-ŝoforsistemo estas sufiĉe simpla. Ne ekzistas tia afero kiel muntado de dosiersistemo aŭ asocii ŝoforon kun specifa aparato. Estas sistemvoko kun la konvencia nomo Mapo, kiu prenas ĉiun ŝoforon laŭvice kaj provas asocii ĝin kun ĉiuj, almenaŭ taŭgaj aparatoj. Kaj se la ŝoforo povis preni la aparaton, tiam mapo estas kreita - koneksa registro. Ĝuste jen kiel la lastatempe ŝargita ŝoforo devus esti pravigita en komuna amaso kun ĉiuj aliaj. Kaj ĉio, kion vi bezonas, estas agordi unu biton (LOAD_OPTION_FORCE_RECONNECT) al 1 en la ŝofora lanĉa registro kaj UEFI faros ĉi tiun tutmondan remap post ŝarĝo de ĝi.

Sed ĉi tio ne estas tiel facile fari. La norma ilo efibootmgr (kiu estas uzata por agordi la UEFI-elŝutadministrilon) ne scias kiel (aŭ pli ĝuste, ne sciis kiel) agordi ĉi tiun biton. Mi devis instali ĝin permane per sufiĉe komplika kaj danĝera proceduro.

Kaj denove, provinte fari ĝin per miaj manoj, mi ne povis elteni kaj formaligis temo en GitHub petante programistojn aldoni ĉi tiun funkcion.

Pasis kelkaj tagoj, sed neniu atentis mian peton. Kaj pro scivolemo, mi rigardis la fontkodon... Mi forkigis ĝin, kaj elpensis genue kiel aldoni ĉi tiun funkcion... "Sur miaj genuoj" ĉar mi nenion tian instalis kaj redaktis la fonton. kodon rekte en la retumilo.

Mi konas C (la programlingvon) tre supraĵe, sed mi skizis proksimuman solvon (plejparte kopii-alglui)... kaj tiam mi pensis - almenaŭ mi verŝajne havas multajn erarojn tie (miaj pasintaj provoj redakti aliulon). C-kodo estis kompletigita proksimume la 10-an fojon) Mi eldonos Pull-Peton. Nu desegnita.

Kaj tie Travis CI montriĝis alkroĉita por kontroli tirpetojn. Kaj li diligente rakontis al mi ĉiujn miajn erarojn. Nu, se estas konataj eraroj, ne necesas ripari ĝin: denove, ĝuste en la retumilo, kaj je la kvara provo la kodo funkciis (atingo por mi).

Kaj ĝuste tiel, sen forlasi la retumilon, mi formatis tre realan Pull Request en ilon, kiu estas uzata en preskaŭ ĉiuj modernaj Linukso-distribuoj.

Mi estis surprizita pro tio, ke, sen vere koni la lingvon, sen agordi ion ajn (dependecoj postulas sufiĉe da bibliotekoj por kunigo), kaj eĉ sen eĉ ruli la kompililon, mi simple "kodis" tute funkciantan kaj utilan funkcion en la retumilo.

Tamen mia peto restis senresponda ekde la 19-a de marto 2019, kaj mi jam komencis forgesi pri ĝi.

Sed hieraŭ ĉi tiu peto estis aldonita al majstro.

Pri kio do mia rakonto? Kaj li parolas pri tio, ke, kadre de modernaj teknologioj, montriĝis, ke vera kodo jam povas esti skribita en la retumilo, sen disfaldi iujn ajn evoluilojn kaj dependecojn loke.

Cetere, mi devas konfesi, ĉi tio jam estas mia dua tira peto por konataj (almenaŭ en mallarĝaj rondoj) utilecoj. Lastan fojon, mia peto korekti la montradon de kelkaj kampoj en la retejo SyncThing rezultigis mian laŭvorte unulinian redakton en medio kiun mi tute ne konas.

Nur registritaj uzantoj povas partopreni la enketon. Ensaluti, bonvolu.

Ĉu mi skribu pli aŭ ne?

  • jes

  • Ne valoras ĝin

294 uzantoj voĉdonis. 138 uzantoj sindetenis.

fonto: www.habr.com

Aldoni komenton