Framtíðin er þegar hér eða kóða beint í vafranum

Ég skal segja þér frá fyndnu ástandi sem gerðist fyrir mig og hvernig á að gerast þátttakandi í frægu verkefni.

Fyrir stuttu síðan var ég að fikta í hugmynd: að ræsa Linux beint úr UEFI...
Hugmyndin er ekki ný af nálinni og það eru til nokkrar handbækur um þetta efni. Þú getur séð einn þeirra hér

Reyndar leiddu langvarandi tilraunir mínar til að leysa þetta mál í algjörlega formlegri ákvörðun. Lausnin er alveg að virka og ég nota hana á sumum heimavélum mínum. Þessari lausn er lýst aðeins nánar. hér.

Kjarninn í UEFI-Boot er að ESP (EFI System Partition) skiptingin er sameinuð /boot skránni. Þeir. allir kjarnar og ræsimyndir (initrd) eru staðsettar á sömu skiptingunni sem UEFI getur ræst keyrsluskrár frá og sérstaklega ræst ræsihleðslutæki fyrir kerfi. En Linux kjarninn sjálfur í mörgum dreifingum er nú þegar settur saman með UEFISTUB valkostinum, sem gerir kleift að ræsa kjarnann sjálfan frá UEFI.

Þessi lausn hefur eitt óþægilegt augnablik - ESP skiptingin er sniðin í FAT32, þar sem það er ómögulegt að búa til harða tengla (sem kerfið býr til reglulega þegar initrd er uppfært). Og það er ekkert sérstaklega glæpsamlegt við þetta, en að sjá kerfisviðvaranir við uppfærslu kjarnahluta er ekki mjög skemmtilegt...

Það er önnur leið.

UEFI ræsistjórinn (sami og þú þarft að skrá OS ræsiforritið) getur, auk ræsiforritara/Linux kjarna, einnig hlaðið rekla. Þannig að þú getur hlaðið drivernum fyrir skráarkerfið þar sem þú ert með /boot og hlaðið kjarnanum beint þaðan með því að nota UEFI. Ökumanninn þarf auðvitað að vera í ESP skiptingunni. Þetta er nokkurn veginn það sem ræsihleðslutæki eins og GRUB gera. En hápunkturinn er að allar oft notaðar GRUB aðgerðir eru nú þegar í UEFI. Nánar tiltekið í niðurhalsstjóranum. Og til að vera enn leiðinlegri, þá hefur UEFI ræsistjórinn enn meiri möguleika í sumum málum.

Það virðist vera falleg lausn, en það er eitt „EN“ (eða réttara sagt, það var það, en meira um það síðar). Staðreyndin er sú að UEFI ökumannskerfið er frekar einfalt. Það er ekkert sem heitir að setja upp skráarkerfi eða tengja ökumann við ákveðið tæki. Það er kerfiskall með hinu hefðbundna nafni Map, sem tekur hvern ökumann á fætur öðrum og reynir að tengja hann við öll, að minnsta kosti hentug tæki. Og ef ökumaðurinn gat tekið upp tækið, þá er búið til kortlagning - tengiskrá. Þetta er nákvæmlega hvernig nýhlaðinn bílstjóri ætti að frumstilla í sameiginlegri hrúgu með öllum hinum. Og allt sem þú þarft er að stilla einn bita (LOAD_OPTION_FORCE_RECONNECT) á 1 í ræsiskrá ökumanns og UEFI mun gera þessa alþjóðlegu endurmynd eftir að það hefur verið hlaðið.

En þetta er ekki svo auðvelt að gera. Staðlað efibootmgr tólið (sem er notað til að stilla UEFI afhleðslustjórann) veit ekki hvernig (eða réttara sagt, vissi ekki hvernig) á að stilla þennan bita. Ég þurfti að setja það upp handvirkt í gegnum frekar flókið og hættulegt ferli.

Og enn og aftur, eftir að hafa reynt að gera það með höndunum, gat ég ekki staðist það og formlega mál á GitHub biðja forritara um að bæta þessum eiginleika við.

Nokkrir dagar liðu, en enginn veitti beiðni minni athygli. Og af forvitni leit ég á frumkóðann... ég gaf honum gaffal og fann út á hnjánum hvernig ég ætti að bæta þessum eiginleika við... “On my knees” vegna þess að ég setti ekki upp neitt slíkt og breytti upprunanum kóða beint í vafranum.

Ég þekki C (forritunarmálið) mjög yfirborðslega, en ég skissaði út áætlaða lausn (aðallega copy-paste)... og þá hugsaði ég - að minnsta kosti er ég líklega með fullt af villum þar (fyrri tilraunir mínar til að breyta einhverjum öðrum C kóða var lokið um það bil 10. skiptið) Ég mun gefa út Pull Request. Jæja útgefið.

Og þarna reyndist Travis CI vera festur til að athuga pull beiðnir. Og hann sagði mér af kostgæfni öll mistök mín. Jæja, ef það eru þekktar villur, þá er engin þörf á að laga það: aftur, beint í vafranum, og í fjórðu tilraun virkaði kóðinn (afrek fyrir mig).

Og bara svona, án þess að fara úr vafranum, forsniði ég mjög raunverulega Pull Request í tól sem er notað í næstum öllum nútíma Linux dreifingum.

Ég var hissa á þeirri staðreynd að án þess að kunna raunverulega tungumálið, án þess að setja upp neitt (ósjálfstæði krefjast nokkurra bókasöfna fyrir samsetningu), og án þess að keyra þýðandann, „kóðaði“ ég einfaldlega fullkomlega virkan og gagnlegan eiginleika í vafra.

Hins vegar hefur beiðni mín ekki svarað síðan 19. mars 2019 og ég var þegar farinn að gleyma henni.

En í gær var þessari beiðni bætt við meistara.

Um hvað er þá sagan mín? Og hann er að tala um þá staðreynd að innan ramma nútímatækni kom í ljós að raunverulegur kóða er nú þegar hægt að skrifa í vafranum, án þess að nota þróunarverkfæri og ósjálfstæði á staðnum.

Þar að auki verð ég að viðurkenna að þetta er nú þegar önnur dráttarbeiðnin mín fyrir vel þekkt (að minnsta kosti í þröngum hringjum) tólum. Síðasta skiptið leiddi beiðni mín um að leiðrétta birtingu sumra reita í SyncThing vefviðmótinu til bókstaflega einnar línu breytingar í umhverfi sem ég þekki alls ekki.

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Á ég að skrifa meira eða ekki?

  • ekki þess virði

294 notendur kusu. 138 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd