Ojo iwaju ti wa tẹlẹ nibi tabi koodu taara ni ẹrọ aṣawakiri

Emi yoo sọ fun ọ nipa ipo alarinrin ti o ṣẹlẹ si mi, ati bi o ṣe le di oluranlọwọ si iṣẹ akanṣe olokiki kan.

Laipẹ diẹ sẹhin Mo n tinkering pẹlu imọran kan: booting Linux taara lati UEFI…
Ero naa kii ṣe tuntun ati pe nọmba awọn iwe-itumọ wa lori koko yii. O le rii ọkan ninu wọn nibi

Lootọ, awọn igbiyanju igba pipẹ mi lati yanju ọran yii yorisi isọdọtun patapata ipinnu naa. Ojutu naa n ṣiṣẹ pupọ ati pe Mo lo lori diẹ ninu awọn ẹrọ ile mi. Ojutu yii jẹ apejuwe ni alaye diẹ diẹ sii. nibi.

Koko-ọrọ ti UEFI-Boot ni pe ipin ESP (EFI System Partition) ni idapo pẹlu itọsọna bata / bata. Awon. gbogbo awọn kernels ati awọn aworan bootstrap (initrd) wa lori ipin kanna lati eyiti UEFI le ṣe ifilọlẹ awọn faili ti o ṣiṣẹ ati, ni pataki, ifilọlẹ awọn agberu bata eto. Ṣugbọn ekuro Linux funrararẹ ni ọpọlọpọ awọn pinpin ti ṣajọpọ pẹlu aṣayan UEFISTUB, eyiti o fun laaye ekuro funrararẹ lati ṣe ifilọlẹ lati UEFI.

Ojutu yii ni akoko ti ko dun - ipin ESP ti ṣe akoonu ni FAT32, lori eyiti ko ṣee ṣe lati ṣẹda awọn ọna asopọ lile (eyiti eto naa ṣẹda nigbagbogbo nigbati imudojuiwọn initrd). Ati pe ko si ohunkan pataki ọdaràn nipa eyi, ṣugbọn wiwo awọn ikilọ eto nigbati mimu dojuiwọn awọn paati kernel ko dun pupọ…

Ona miran wa.

Oluṣakoso bata UEFI (ọkan kanna nibiti o nilo lati forukọsilẹ bootloader OS) le, ni afikun si awọn kernel bootloaders/Linux, tun gbe awọn awakọ. Nitorinaa o le gbe awakọ fun eto faili nibiti o ni / bata ati gbe ekuro taara lati ibẹ nipa lilo UEFI. Awakọ naa, dajudaju, nilo lati gbe sinu ipin ESP. Eyi jẹ aijọju kini awọn bootloaders bii GRUB ṣe. Ṣugbọn ifojusi ni pe gbogbo awọn iṣẹ GRUB nigbagbogbo ti a lo nigbagbogbo wa ni UEFI. Ni deede diẹ sii ninu oluṣakoso igbasilẹ rẹ. Ati lati jẹ alaidun diẹ sii, oluṣakoso bata UEFI paapaa ni awọn agbara diẹ sii ni awọn ọrọ kan.

O dabi pe o jẹ ojutu ti o lẹwa, ṣugbọn ọkan wa “Ṣugbọn” (tabi dipo, o jẹ, ṣugbọn diẹ sii lori iyẹn nigbamii). Otitọ ni pe eto awakọ UEFI jẹ ohun rọrun. Ko si iru nkan bii gbigbe eto faili kan tabi sisọpọ awakọ pẹlu ẹrọ kan pato. Ipe eto kan wa pẹlu maapu orukọ aṣa, eyiti o gba awakọ kọọkan ni titan ati gbiyanju lati ṣepọ pẹlu gbogbo rẹ, o kere ju awọn ẹrọ to dara. Ati pe ti awakọ ba ni anfani lati gbe ẹrọ naa, lẹhinna a ṣẹda aworan agbaye - igbasilẹ asopọ kan. Eyi ni deede bii awakọ tuntun ti kojọpọ yẹ ki o ṣe ipilẹṣẹ ni okiti ti o wọpọ pẹlu gbogbo awọn miiran. Ati pe gbogbo ohun ti o nilo ni lati ṣeto diẹ kan (LOAD_OPTION_FORCE_RECONNECT) si 1 ninu igbasilẹ bata awakọ ati UEFI yoo ṣe atunṣe agbaye yii lẹhin ti o ti gbejade.

Ṣugbọn eyi ko rọrun pupọ lati ṣe. IwUlO efibootmgr boṣewa (eyiti o lo lati tunto oluṣakoso piparẹ UEFI) ko mọ bii (tabi dipo, ko mọ bii) lati ṣeto nkan yii. Mo ni lati fi sori ẹrọ pẹlu ọwọ nipasẹ ọna idiju ati ilana ti o lewu.

Ati lekan si, ti gbiyanju lati ṣe pẹlu ọwọ mi, Emi ko le duro ati ṣe agbekalẹ oro lori GitHub béèrè kóòdù lati fi ẹya ara ẹrọ yi.

Ọ̀pọ̀lọpọ̀ ọjọ́ ti kọjá, ṣùgbọ́n kò sẹ́ni tó fiyè sí ìbéèrè mi. Ati lati inu iyanilenu, Mo wo koodu orisun ... Mo forked o, ati pe o wa lori awọn ẽkun mi bi o ṣe le fi ẹya ara ẹrọ yii kun ... "Lori awọn ẽkun mi" nitori Emi ko fi sori ẹrọ ohunkohun bi eyi ati ṣatunkọ orisun naa koodu taara ninu awọn kiri ayelujara.

Mo mọ C (ede siseto) ni aipe pupọ, ṣugbọn Mo ṣe apẹrẹ ojutu isunmọ kan (julọ daakọ-lẹẹmọ)… ati lẹhinna Mo ro - o kere ju Mo le ni ọpọlọpọ awọn aṣiṣe nibẹ (awọn igbiyanju mi ​​ti o kọja lati satunkọ ẹnikan miiran) C koodu ti pari nipa akoko 10th) Emi yoo fun ibeere Fa. O dara apẹrẹ.

Ati pe Travis CI wa lati somọ lati ṣayẹwo awọn ibeere fa. Ó sì fi taratara sọ gbogbo àṣìṣe mi fún mi. O dara, ti o ba jẹ pe awọn aṣiṣe ti a mọ, ko si ye lati ṣatunṣe: lẹẹkansi, ọtun ninu ẹrọ aṣawakiri, ati lori igbiyanju kẹrin koodu naa ṣiṣẹ (aṣeyọri fun mi).

Ati pe bii iyẹn, laisi lilọ kuro ni ẹrọ aṣawakiri, Mo ṣe ọna kika Ibeere Fa gidi gidi kan sinu ohun elo kan ti o lo ni gbogbo awọn pinpin Linux ode oni.

Inu yà mi nipasẹ otitọ pe, laisi mimọ ede gaan, laisi eto ohunkohun (awọn igbẹkẹle nilo awọn ile-ikawe pupọ fun apejọ), ati laisi paapaa ṣiṣiṣẹ alakojo, Mo “ṣe koodu” ni kikun ṣiṣẹ ati ẹya ti o wulo ninu kiri ayelujara .

Sibẹsibẹ, ibeere mi ko dahun lati March 19, 2019, ati pe Mo ti bẹrẹ lati gbagbe nipa rẹ.

Sugbon lana yi ìbéèrè ti a fi kun si titunto si.

Nitorina kini itan mi nipa? Ati pe o n sọrọ nipa otitọ pe, laarin ilana ti awọn imọ-ẹrọ igbalode, o wa jade pe koodu gidi le ti kọ tẹlẹ ninu ẹrọ aṣawakiri, laisi gbigbe eyikeyi awọn irinṣẹ idagbasoke ati awọn igbẹkẹle ni agbegbe.

Jubẹlọ, Mo ti gbọdọ gba, yi ni tẹlẹ mi keji fa ìbéèrè fun daradara-mọ (ni o kere ni dín iyika) igbesi. Ni akoko to kẹhin, ibeere mi lati ṣe atunṣe ifihan diẹ ninu awọn aaye ni wiwo oju opo wẹẹbu SyncThing yorisi ni iṣatunṣe laini kan gangan ni agbegbe ti Emi ko mọ rara.

Awọn olumulo ti o forukọsilẹ nikan le kopa ninu iwadi naa. wọle, Jowo.

Ṣe Mo kọ diẹ sii tabi rara?

  • bẹẹni

  • ko tọ o

294 olumulo dibo. 138 olumulo abstained.

orisun: www.habr.com

Fi ọrọìwòye kun