Ang umaabot ania na o direkta nga code sa browser

Sultihan ko ikaw bahin sa usa ka kataw-anan nga kahimtang nga nahitabo kanako, ug kung giunsa mahimong usa ka kontribyutor sa usa ka bantog nga proyekto.

Dili pa lang dugay nag-ukay-ukay ko sa usa ka ideya: ang pag-boot sa Linux direkta gikan sa UEFI...
Ang ideya dili bag-o ug adunay daghang mga manwal bahin niini nga hilisgutan. Makita nimo ang usa niini dinhi

Sa tinuud, ang akong dugay na nga pagsulay sa pagsulbad niini nga isyu miresulta sa usa ka hingpit nga pormal ang desisyon. Ang solusyon nagtrabaho kaayo ug gigamit nako kini sa pipila sa akong mga makina sa balay. Kini nga solusyon gihulagway sa usa ka gamay nga detalye. dinhi.

Ang esensya sa UEFI-Boot mao nga ang partisyon sa ESP (EFI System Partition) gihiusa sa direktoryo sa / boot. Mga. ang tanan nga mga kernel ug bootstrap nga mga imahe (initrd) nahimutang sa parehas nga partisyon diin ang UEFI mahimong maglansad sa mga executable file ug, labi na, maglansad sa mga boot loader sa system. Apan ang Linux kernel mismo sa daghang mga pag-apod-apod natipon na sa kapilian nga UEFISTUB, nga nagtugot sa kernel mismo nga ilunsad gikan sa UEFI.

Ang kini nga solusyon adunay usa ka dili maayo nga higayon - ang partisyon sa ESP giporma sa FAT32, diin imposible nga maghimo mga gahi nga link (nga kanunay nga gihimo sa sistema kung gi-update ang initrd). Ug wala’y labi nga kriminal bahin niini, apan ang pagtan-aw sa mga pasidaan sa sistema kung ang pag-update sa mga sangkap sa kernel dili kaayo makapahimuot ...

Adunay laing paagi.

Ang UEFI boot manager (ang parehas nga kinahanglan nimo nga irehistro ang OS bootloader) mahimo, dugang sa mga bootloader / Linux kernels, mag-load usab sa mga drayber. Mao nga mahimo nimong i-load ang drayber alang sa file system diin naa ka / boot ug i-load ang kernel direkta gikan didto gamit ang UEFI. Ang drayber, siyempre, kinahanglan ibutang sa partisyon sa ESP. Kini halos ang gibuhat sa mga bootloader sama sa GRUB. Apan ang highlight mao nga ang tanan nga kanunay nga gigamit nga GRUB function naa na sa UEFI. Mas tukma sa download manager niini. Ug aron mahimong labi ka makalaay, ang tagdumala sa boot sa UEFI adunay daghang mga kapabilidad sa pipila ka mga butang.

Kini daw usa ka nindot nga solusyon, apan adunay usa ka "PERO" (o hinoon, kini mao, apan labaw pa niana sa ulahi). Ang tinuod mao nga ang sistema sa drayber sa UEFI yano ra. Wala'y butang sama sa pag-mount sa usa ka file system o pag-asoy sa usa ka drayber sa usa ka piho nga aparato. Adunay usa ka tawag sa sistema nga adunay naandan nga ngalan nga Mapa, nga nagpuli-puli sa matag drayber ug gisulayan nga i-associate kini sa tanan, labing menos angay nga mga aparato. Ug kung ang drayber nakahimo sa pagkuha sa device, nan ang usa ka mapping gihimo - usa ka rekord sa pagkonektar. Ingon niini kung giunsa ang bag-ong gikarga nga drayber kinahanglan nga magsugod sa usa ka sagad nga pundok sa tanan nga uban pa. Ug ang tanan nga imong gikinahanglan mao ang pagbutang sa usa ka gamay (LOAD_OPTION_FORCE_RECONNECT) ngadto sa 1 sa driver boot record ug ang UEFI mobuhat niining global remap human kini makarga.

Apan dili kini sayon ​​nga buhaton. Ang standard nga efibootmgr utility (nga gigamit sa pag-configure sa UEFI offload manager) wala mahibal-an kung giunsa (o hinoon, wala mahibal-an kung giunsa) i-set kini nga gamay. Kinahanglan nako nga i-install kini pinaagi sa usa ka labi ka komplikado ug peligro nga pamaagi.

Ug sa makausa pa, sa pagsulay sa pagbuhat niini sa akong mga kamot, dili ko makaagwanta niini ug pormal isyu sa GitHub paghangyo sa mga developer nga idugang kini nga bahin.

Milabay ang pipila ka adlaw, pero walay nagtagad sa akong hangyo. Ug tungod sa kakuryuso, akong gitan-aw ang source code... Gi-fork ko kini, ug nakahuna-huna sa akong tuhod kon unsaon pagdugang niini nga feature... β€œSa akong mga tuhod” kay wala ko nag-install ug ingon niana ug gi-edit ang tinubdan. direkta nga code sa browser.

Nahibal-an ko ang C (ang programming language) nga taphaw kaayo, apan nag-sketch ko og usa ka gibanabana nga solusyon (kasagaran copy-paste) ... Nakompleto ang C code sa ika-10 nga higayon) Mag-isyu ko og Pull Request. Aw gilaraw.

Ug didto ang Travis CI nahimo nga gilakip aron susihon ang mga hangyo sa pagbitad. Ug siya makugihong misulti kanako sa tanan nakong mga sayop. Aw, kung adunay nahibal-an nga mga sayup, dili kinahanglan nga ayohon kini: pag-usab, diha mismo sa browser, ug sa ikaupat nga pagsulay ang code nagtrabaho (usa ka kalampusan alang kanako).

Ug sama niana, nga wala mobiya sa browser, akong gi-format ang usa ka tinuod nga Pull Request ngadto sa usa ka utility nga gigamit sa halos tanang modernong Linux distributions.

Natingala ako sa kamatuoran nga, nga wala gyud nahibal-an ang lengguwahe, nga wala’y pag-set up bisan unsa (ang mga dependency nanginahanglan pipila ka mga librarya alang sa asembliya), ug bisan wala pa gani gipadagan ang compiler, "gi-code" ra nako ang usa ka hingpit nga nagtrabaho ug mapuslanon nga bahin sa browser .

Bisan pa, ang akong hangyo nagpabilin nga dili tubag sukad Marso 19, 2019, ug nagsugod na ako sa pagkalimot bahin niini.

Apan kagahapon kini nga hangyo gidugang sa agalon.

So unsa akong story? Ug naghisgot siya bahin sa kamatuoran nga, sulod sa gambalay sa modernong mga teknolohiya, nahimo nga ang tinuod nga code mahimo nang isulat sa browser, nga walay pag-deploy sa bisan unsang mga himan sa pag-uswag ug mga dependency sa lokal.

Dugang pa, kinahanglan nako nga dawaton, kini na ang akong ikaduha nga hangyo sa pagbira alang sa mga ilado (labing menos sa makitid nga mga lingin) nga mga gamit. Sa miaging higayon, ang akong hangyo nga matul-id ang pagpakita sa pipila ka mga natad sa SyncThing web interface miresulta sa akong literal nga usa ka linya nga pag-edit sa usa ka palibot nga wala nako nahibal-an.

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Kinahanglan ba akong mosulat ug dugang o dili?

  • oo

  • dili kini takus

294 ka tiggamit ang miboto. 138 ka tiggamit ang nag-abstain.

Source: www.habr.com

Idugang sa usa ka comment