Tan kap vini an deja isit la oswa kòd dirèkteman nan navigatè a

Mwen pral di ou sou yon sitiyasyon komik ki te rive m ', ak ki jan yo vin yon kontribitè nan yon pwojè pi popilè.

Pa gen lontan mwen te brikole ak yon lide: demare Linux dirèkteman nan UEFI ...
Lide a pa nouvo e gen yon kantite manyèl sou sijè sa a. Ou ka wè youn nan yo isit la

Aktyèlman, tantativ mwen depi lontan pou rezoud pwoblèm sa a te lakòz yon totalman ofisyèlman desizyon an. Solisyon an byen travay epi mwen sèvi ak li sou kèk nan machin lakay mwen. Se solisyon sa a dekri nan yon ti kras plis detay. isit la.

Sans UEFI-Boot se patisyon ESP (EFI System Partition) konbine avèk anyè /boot. Moun sa yo. tout nwayo ak imaj bootstrap (initrd) yo sitiye sou patisyon an menm ki soti nan ki UEFI ka lanse dosye ègzèkutabl ak, an patikilye, lanse chajè bòt sistèm. Men, nwayo a Linux tèt li nan anpil distribisyon deja reyini ak opsyon UEFISTUB, ki pèmèt nwayo a li menm yo dwe lanse soti nan UEFI.

Solisyon sa a gen yon sèl moman dezagreyab - se patisyon ESP fòma nan FAT32, kote li enposib pou kreye lyen difisil (ki sistèm nan kreye regilyèman lè mete ajou initrd la). Epi pa gen anyen patikilyèman kriminèl sou sa a, men wè avètisman sistèm lè mete ajou eleman nwayo pa trè bèl...

Gen yon lòt fason.

Manadjè bòt UEFI a (menm sa a kote ou bezwen anrejistre charjeur eksplwatasyon an) kapab, anplis bootloaders/kernel Linux, tou chaje chofè yo. Se konsa, ou ka chaje chofè a pou sistèm nan dosye kote ou gen /boot epi chaje nwayo a dirèkteman nan la lè l sèvi avèk UEFI. Chofè a, nan kou, bezwen yo dwe mete nan patisyon an ESP. Sa a se apeprè sa bootloaders tankou GRUB fè. Men, rekò a se ke tout fonksyon GRUB yo itilize souvan yo deja nan UEFI. Plis jisteman nan manadjè download li yo. Epi yo dwe menm plis raz, manadjè bòt UEFI a gen menm plis kapasite nan kèk zafè.

Li sanble se yon solisyon bèl, men gen yon sèl "MEN" (oswa pito, li te, men plis sou sa pita). Reyalite a se ke sistèm chofè UEFI se byen senp. Pa gen okenn bagay tankou monte yon sistèm dosye oswa asosye yon chofè ak yon aparèy espesifik. Gen yon apèl sistèm ak non konvansyonèl kat la, ki pran chak chofè nan vire epi eseye asosye li ak tout, omwen aparèy apwopriye. Men, si chofè a te kapab ranmase aparèy la, Lè sa a, yo kreye yon kat - yon dosye konekte. Sa a se egzakteman ki jan chofè a ki fèk chaje yo ta dwe inisyalize nan yon pil komen ak tout lòt yo. Ak tout sa ou bezwen se mete yon ti jan (LOAD_OPTION_FORCE_RECONNECT) a 1 nan dosye bòt chofè a epi UEFI pral fè remap mondyal sa a apre li fin chaje li.

Men, sa a se pa tèlman fasil fè. Estanda sèvis piblik efibootmgr (ki itilize pou konfigirasyon manadjè dechaje UEFI) pa konnen ki jan (oswa pito, pa t 'konnen ki jan) yo mete ti jan sa a. Mwen te oblije enstale li manyèlman atravè yon pwosedi olye konplike ak danjere.

Ak yon lòt fwa ankò, mwen te eseye fè l 'ak men m', mwen pa t 'kapab kanpe li ak ofisyèlman pwoblèm sou GitHub mande devlopè yo ajoute karakteristik sa a.

Plizyè jou te pase, men pèsonn pa t koute demann mwen an. Ak nan kiryozite, mwen gade nan kòd sous la... Mwen fouchèt li, epi kalkile sou jenou m 'ki jan yo ajoute karakteristik sa a... "Sou jenou mwen" paske mwen pa t' enstale anyen konsa ak edited sous la. kòd dirèkteman nan navigatè a.

Mwen konnen C (langaj pwogramasyon an) trè supèrfisyèl, men mwen te trase yon solisyon apwoksimatif (sitou kopye-kole) ... ak Lè sa a, mwen te panse - omwen mwen pwobableman gen yon anpil nan erè la (tant pase mwen tantativ edite yon lòt moun nan). Kòd C yo te konplete sou 10yèm fwa) Mwen pral bay yon demann Pull. Oke fèt.

Epi gen Travis CI vire soti yo dwe tache tcheke demann rale. Apre sa, li dilijans te di m 'tout erè mwen yo. Oke, si gen erè li te ye, pa gen okenn bezwen ranje li: ankò, dwa nan navigatè a, ak sou katriyèm tantativ la kòd la te travay (yon siksè pou mwen).

Epi jis konsa, san yo pa kite navigatè a, mwen fòma yon Request Pull reyèl nan yon sèvis piblik ki itilize nan prèske tout distribisyon Linux modèn.

Mwen te sezi pa lefèt ke, san yo pa vrèman konnen lang lan, san yo pa mete anyen (depandans mande pou byen kèk bibliyotèk pou asanble), epi san yo pa janm menm kouri du a, mwen tou senpleman "kode" yon karakteristik konplètman k ap travay ak itil nan la. navigatè.

Sepandan, demann mwen an pa t reponn depi 19 mas 2019, e mwen te deja kòmanse bliye sa.

Men, yè demann sa a te ajoute nan mèt.

Se konsa, ki sa ki se istwa mwen an? Apre sa, li ap pale sou lefèt ke, nan kad teknoloji modèn, li te tounen soti ke reyèl kòd ka deja ekri nan navigatè a, san yo pa deplwaye nenpòt zouti devlopman ak depandans lokalman.

Anplis, mwen dwe admèt, sa a se deja dezyèm demann mwen an pou sèvis piblik byen li te ye (omwen nan ti sèk etwat). Dènye fwa, demann mwen an pou m korije ekspozisyon kèk jaden nan koòdone entènèt SyncThing la te lakòz yon modifikasyon literalman yon liy mwen nan yon anviwònman ke mwen pa konnen ditou.

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Èske mwen ta dwe ekri plis oswa ou pa?

  • repons lan se wi

  • pa vo li

294 itilizatè yo te vote. 138 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè