Etorkizuna hemen dago jada edo kodetu zuzenean arakatzailean

Gertatu zitzaidan egoera dibertigarri baten berri emango dizut, eta proiektu famatu baten kolaboratzaile nola bihurtu.

Duela ez asko ideia batekin aritu nintzen: Linux zuzenean UEFItik abiaraztea...
Ideia ez da berria eta gai honi buruzko hainbat eskuliburu daude. Horietako bat ikus dezakezu Hemen

Egia esan, nire aspaldiko saiakerak arazo hau konpontzeko erabat formalizatu zen erabakia. Irtenbidea nahiko funtzionatzen du eta nire etxeko makina batzuetan erabiltzen dut. Irtenbide hau xehetasun apur bat gehiago deskribatzen da. Hemen.

UEFI-Boot-en funtsa ESP (EFI System Partition) partizioa /boot direktorioarekin konbinatuta dagoela da. Horiek. nukleo guztiak eta bootstrap irudiak (initrd) partizio berean daude, UEFIk fitxategi exekutagarriak abiarazteko eta, bereziki, sistemaren abio-kargatzaileak abiarazteko. Baina Linux nukleoa bera banaketa askotan UEFISTUB aukerarekin muntatuta dago jada, eta horrek nukleoa bera UEFItik abiarazteko aukera ematen du.

Irtenbide honek une desatsegin bat du - ESP partizioa FAT32n formateatzen da, eta bertan ezinezkoa da esteka gogorrak sortzea (sistemak aldian-aldian sortzen dituena initrd-a eguneratzean). Eta ez dago ezer bereziki kriminala, baina nukleoaren osagaiak eguneratzean sistemaren abisuak ikustea ez da oso atsegina...

Bada beste modu bat.

UEFI abiarazte kudeatzaileak (OS abiarazlea erregistratu behar duzun bera) abio-kargagailuez/Linux nukleoez gain, kontrolatzaileak ere karga ditzake. Beraz, /boot duzun fitxategi-sistemarako kontrolatzailea karga dezakezu eta bertatik nukleoa zuzenean kargatu UEFI erabiliz. Gidaria, noski, ESP partizioan jarri behar da. Hau da gutxi gorabehera GRUB bezalako abio-kargatzaileek egiten dutena. Baina nabarmenena da maiz erabiltzen diren GRUB funtzio guztiak dagoeneko UEFIn daudela. Zehazkiago bere deskarga kudeatzailean. Eta are aspergarriagoa izateko, UEFI abiarazte kudeatzaileak are gaitasun gehiago ditu zenbait gaitan.

Irtenbide ederra dirudi, baina badago β€œBAINA” bat (edo hobeto esanda, hala izan zen, baina gero gehiago). Kontua da UEFI kontrolatzaile sistema nahiko erraza dela. Ez dago fitxategi-sistema bat muntatzea edo kontrolatzaile bat gailu zehatz batekin lotzea bezalakorik. Mapa izen konbentzionala duen sistema-dei bat dago, gidari bakoitza txandaka hartzen duena eta gailu guztiekin lotzen saiatzen dena, gutxienez gailu egokiekin. Eta kontrolatzaileak gailua jasotzeko gai izan bazen, mapa bat sortzen da - konektatzeko erregistroa. Hau da, hain zuzen, kargatu berri den kontrolatzailea beste guztiekin pila komun batean hasieratu behar da. Eta behar duzun guztia gidariaren abioko erregistroan bit bat (LOAD_OPTION_FORCE_RECONNECT) 1ean ezartzea da eta UEFIk kargatu ondoren egingo du birmapa global hau.

Baina hau ez da hain erraza egiten. efibootmgr utilitate estandarrak (UEFI deskarga-kudeatzailea konfiguratzeko erabiltzen dena) ez daki nola (edo hobeto esanda, ez zekien nola) bit hau ezarri. Eskuz instalatu behar izan nuen prozedura nahiko konplikatu eta arriskutsu baten bidez.

Eta beste behin, eskuekin egiten saiatu nintzenez, ezin izan nuen jasan eta formalizatu alea GitHub-en garatzaileei eginbide hau gehitzeko eskatuz.

Hainbat egun pasa ziren, baina inork ez zion kasurik egin nire eskaerari. Eta kuriositateagatik, iturburu-kodea begiratu nuen... Sardekatu nuen, eta belauniko asmatu nuen nola gehitu funtzio hori... β€œBelauniko” ez nuelako horrelakorik instalatu eta iturria editatu nuen. kodea zuzenean arakatzailean.

C (programazio-lengoaia) oso azaletik ezagutzen dut, baina gutxi gorabeherako soluzio bat zirriborratu nuen (gehienetan kopiatu-itsatsi)... eta orduan pentsatu nuen - seguruenik akats asko izango ditudala hor (beste norbaiten editatzeko nire saiakerak iraganean). C kodea 10. aldiz osatu zen) Pull Request bat emango dut. Bueno diseinatuta.

Eta han Travis CI erantsita zegoen tira-eskaerak egiaztatzeko. Eta arduratsu kontatu zizkidan nire akats guztiak. Bada, akats ezagunak badaude, ez dago konpondu beharrik: berriro, arakatzailean bertan, eta laugarren saiakeran kodeak funtzionatu zuen (niretzat lorpen bat).

Eta halaxe, arakatzailetik irten gabe, oso benetako Pull Request bat formateatu nuen ia Linux banaketa moderno guztietan erabiltzen den utilitate batean.

Harritu ninduen, hizkuntza benetan ezagutu gabe, ezer konfiguratu gabe (mendekotasunak liburutegi dezente eskatzen ditu muntatzeko), eta konpilatzailea sekula exekutatu gabe, guztiz funtzionatzen duen eta erabilgarri den funtzio bat "kodetu" dut besterik gabe. arakatzailea.

Hala ere, nire eskaerak ez zuen erantzunik izan 19ko martxoaren 2019az geroztik, eta jadanik ahazten hasia nintzen.

Baina atzo eskaera hori masterra gehitu zitzaion.

Beraz, zeri buruz da nire istorioa? Eta, teknologia modernoen esparruan, benetako kodea nabigatzailean jada idatz daitekeela ondorioztatu zenez ari da, garapen-tresna eta menpekotasunik lokalean zabaldu gabe.

Gainera, aitortu behar dut, hau dagoeneko nire bigarren tira-eskaera da utilitate ezagunetarako (zirkulu estuetan behintzat). Azken aldian, SyncThing web-interfazeko eremu batzuen bistaratzea zuzentzeko nire eskaerak lerro bakarreko edizioa eragin zuen batere ezagutzen ez dudan ingurune batean.

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

Gehiago idatzi behar dut ala ez?

  • Bai

  • ez merezi

294 erabiltzailek eman dute botoa. 138 erabiltzaile abstenitu ziren.

Iturria: www.habr.com

Gehitu iruzkin berria