Pêşeroj jixwe li vir e an rasterast di geroka kodê de ye

Ez ê ji we re behsa rewşek xweş a ku ji min re qewimî, û ka meriv çawa bibe hevkarek projeyek navdar.

Demek berê min bi ramanek xwe ve mijûl dibû: Linux-ê rasterast ji UEFI-ê boot...
Fikir ne nû ye û li ser vê mijarê gelek destan hene. Hûn dikarin yek ji wan bibînin vir

Bi rastî, hewildanên min ên demdirêj ji bo çareserkirina vê pirsgirêkê bi tevahî fermîbûn encam da biryar. Çareserî pir dixebite û ez wê li ser hin makîneyên xaniyê xwe bikar tînim. Ev çareserî bi hûrgulî hûrgulî tête diyar kirin. vir.

Esasê UEFI-Boot ev e ku dabeşkirina ESP (Pergala Pergala EFI) bi pelrêça /boot re tête hev kirin. Ewan. hemî kernel û wêneyên bootstrap (initrd) li ser heman dabeşkirinê ne ku UEFI jê dikare pelên îcrakar dest pê bike û, bi taybetî, barkerên bootê yên pergalê bide destpêkirin. Lê kernel Linux bi xwe di gelek belavokan de jixwe bi vebijarka UEFISTUB ve hatî berhev kirin, ku dihêle ku kernel bixwe ji UEFI were destpêkirin.

Vê çareseriyê yek kêliyek ne xweş heye - dabeşa ESP di FAT32 de hatî çêkirin, ku li ser wê ne gengaz e ku meriv girêdanên hişk biafirîne (ya ku pergal bi rêkûpêk dema nûvekirina initrd-ê diafirîne). Di vê yekê de tiştek bi taybetî sûcdar tune, lê dema nûvekirina hêmanên kernelê dîtina hişyariyên pergalê ne pir xweş e ...

Rêyek din heye.

Rêvebirê bootê UEFI (eynî ku hûn hewce ne ku bootloader OS-ê qeyd bikin) dikare, ji bilî bootloader/kernelên Linux, ajokaran jî bar bike. Ji ber vê yekê hûn dikarin ajokerê ji bo pergala pelê ya ku hûn lê /boot hene bar bikin û kernelê rasterast ji wir bi karanîna UEFI-ê bar bikin. Bê guman, ajokar pêdivî ye ku di beşa ESP de were danîn. Tiştê ku bootloaders mîna GRUB dikin ev e. Lê balkêş ev e ku hemî fonksiyonên GRUB-ê ku pir caran têne bikar anîn jixwe di UEFI de ne. Zêdetir di rêveberê dakêşana wê de. Û ji bo ku hê bêtir bêzar be, rêveberê bootê UEFI di hin mijaran de hêj bêtir jêhatî ye.

Wusa dixuye ku ew çareseriyek xweş e, lê yek "LÊ" heye (an jî, ew bû, lê bêtir li ser wê paşê). Rastî ev e ku pergala ajokera UEFI pir hêsan e. Tiştek wusa tune ku pergala pelan saz bike an ajokerek bi amûrek taybetî re têkildar bike. Bangek pergalê bi navê adetî Nexşe heye, ku her ajokerek li dora xwe digire û hewl dide ku wê bi hemî, bi kêmî ve amûrên guncan re têkildar bike. Û heke ajoker karîbû amûrê hilde, wê hingê nexşeyek tête çêkirin - tomarek girêdanê. Bi vî rengî pêdivî ye ku ajokarê nû-barkirî bi hemî yên din re di nav komek hevpar de were destpêkirin. Û ya ku hûn hewce ne ev e ku hûn yek bit (LOAD_OPTION_FORCE_RECONNECT) li 1-ê di qeyda bootê ya ajokerê de bicîh bikin û UEFI piştî barkirina wê dê vê nexşeya gerdûnî bike.

Lê ev ne ewqas hêsan e. Karûbarek standard efibootmgr (ya ku ji bo mîhengkirina rêveberê barkirina UEFI-yê tê bikar anîn) nizane ka meriv çawa vê bit-ê saz bike (an jî çêtir nizane). Ez neçar bûm ku wê bi destan bi pêvajoyek pir tevlihev û xeternak saz bikim.

Û careke din, ku hewl da ku ez bi destên xwe bikim, min nekaribû û fermî kir pirsgirêk li ser GitHub ji pêşdebiran dipirse ku vê taybetmendiyê zêde bikin.

Çend roj derbas bûn, lê kesî guh neda daxwaza min. Û ji ber meraqê, min li koda çavkaniyê nihêrî... Min ew qut kir, û li ser çokên xwe fêhm kir ku meriv çawa vê taybetmendiyê lê zêde bike... "Li ser çokên min" ji ber ku min tiştek wusa saz nekir û çavkanî sererast kir. koda rasterast di gerokê de.

Ez C (zimanê bernamesaziyê) pir bi rûpoşî dizanim, lê min çareseriyek texmînî xêz kir (bi piranî kopî-paste)... û dûv re min fikirî - bi kêmanî belkî li wir gelek xeletiyên min hene (hewldanên min ên berê yên ji bo sererastkirina yekî din Koda C li ser cara 10-an hate qedandin) Ez ê Daxwazek Bikişîne. Baş sêwirandin.

Û li wir Travis CI derket holê ku ji bo kontrolkirina daxwazên kişandinê ve girêdayî ye. Û wî bi xîret hemû xeletiyên min ji min re got. Welê, heke xeletiyên naskirî hebin, ne hewce ye ku wê rast bikin: dîsa, rast di gerokê de, û di hewildana çaremîn de kod xebitî (ji bo min serkeftinek).

Û bi vî rengî, bêyî ku ez ji gerokê derkevim, min Daxwazek Pullek pir rast di nav amûrek ku hema hema di hemî belavokên Linux ên nûjen de tê bikar anîn format kir.

Ez ji vê yekê ecêbmayî mam ku, bêyî ku ez bi rastî bi zimanî zanibim, bêyî ku tiştek saz bikim (girêdayî ji bo kombûnê çend pirtûkxane hewce dike), û bêyî ku qet berhevkar jî bixebitim, min bi tenê taybetmendiyek bi tevahî kar û bikêr di nav de "kod" kir. gerok .

Lêbelê, daxwaza min ji 19-ê Adara 2019-an vir ve bêbersiv ma û min berê dest bi jibîrkirina wê kiribû.

Lê duh ev daxwaz li masterê hat zêdekirin.

Ji ber vê yekê çîroka min li ser çi ye? Û ew li ser vê yekê diaxive ku, di çarçoweya teknolojiyên nûjen de, derket holê ku koda rastîn dikare jixwe di gerokê de were nivîsandin, bêyî ku tu amûrên pêşkeftinê û girêdanên herêmî bicîh bike.

Digel vê yekê, divê ez bipejirînim, ev jixwe daxwaza min a vekişînê ya duyemîn e ji bo karûbarên naskirî (bi kêmanî di derdorên teng de). Cara paşîn, daxwaza min a rastkirina nîşana hin qadan di navgîniya tevnerê ya SyncThing de bû sedema guherandina min a bi rastî yek-xêz li hawîrdorek ku ez qet nizanim.

Tenê bikarhênerên qeydkirî dikarin beşdarî anketê bibin. Têketinji kerema xwe.

Ma ez bêtir binivîsim an na?

  • erê

  • nirx nake

294 bikarhêneran deng dan. 138 bikarhêner jî betal bûn.

Source: www.habr.com

Add a comment