Gələcək artıq buradadır və ya birbaşa brauzerdə kodlayın

Başıma gələn gülməli bir vəziyyət və məşhur bir layihənin iştirakçısı olmaq barədə sizə məlumat verəcəyəm.

Bir müddət əvvəl mən bir fikir üzərində işləyirdim: Linux-u birbaşa UEFI-dən yükləmək...
İdeya yeni deyil və bu mövzuda bir sıra dərsliklər var. Onlardan birini görə bilərsiniz burada

Əslində, mənim bu məsələni həll etmək üçün çoxdankı cəhdlərim tamamilə rəsmiləşdi qərar. Həll olduqca işləyir və mən onu bəzi ev maşınlarımda istifadə edirəm. Bu həll bir az daha ətraflı təsvir edilmişdir. burada.

UEFI-Boot-un mahiyyəti ondan ibarətdir ki, ESP (EFI System Partition) bölməsi /boot kataloqu ilə birləşdirilir. Bunlar. bütün nüvələr və yükləmə şəkilləri (initrd) UEFI-nin icra edilə bilən faylları işə sala biləcəyi və xüsusən də sistemin yükləmə yükləyicilərini işə sala biləcəyi eyni bölmədə yerləşir. Lakin bir çox paylamada Linux nüvəsinin özü artıq UEFISTUB seçimi ilə yığılmışdır ki, bu da nüvənin özünü UEFI-dən işə salmağa imkan verir.

Bu həllin bir xoşagəlməz məqamı var - ESP bölməsi FAT32-də formatlaşdırılıb, bunun üzərində sərt bağlantılar yaratmaq mümkün deyil (initrd-i yeniləyərkən sistem müntəzəm olaraq yaradır). Bunda xüsusilə cinayətkar bir şey yoxdur, lakin nüvə komponentlərini yeniləyərkən sistem xəbərdarlıqlarını görmək o qədər də xoş deyil...

Başqa bir yol var.

UEFI yükləmə meneceri (ƏS yükləyicisini qeydiyyatdan keçirməyiniz lazım olan eyni) yükləyicilərə/Linux nüvələrinə əlavə olaraq sürücüləri də yükləyə bilər. Beləliklə, siz /boot etdiyiniz fayl sistemi üçün drayveri yükləyə və UEFI-dən istifadə edərək nüvəni birbaşa oradan yükləyə bilərsiniz. Sürücü, əlbəttə ki, ESP bölməsinə yerləşdirilməlidir. Bu, təxminən GRUB kimi yükləyicilərin etdiyi şeydir. Ancaq diqqət çəkən məqam ondan ibarətdir ki, tez-tez istifadə olunan bütün GRUB funksiyaları artıq UEFI-dədir. Daha doğrusu onun yükləmə menecerində. Və daha da darıxdırıcı olmaq üçün, UEFI açılış meneceri bəzi məsələlərdə daha çox imkanlara malikdir.

Bu, gözəl bir həll kimi görünür, amma bir "AMMA" var (daha doğrusu, belə idi, amma daha sonra). Fakt budur ki, UEFI sürücü sistemi olduqca sadədir. Fayl sistemini quraşdırmaq və ya sürücünü müəyyən bir cihazla əlaqələndirmək kimi bir şey yoxdur. Hər bir sürücünü növbə ilə götürən və onu bütün, ən azı uyğun cihazlarla əlaqələndirməyə çalışan şərti Map adlı sistem çağırışı var. Sürücü cihazı götürə bilsəydi, o zaman xəritələmə yaradılır - birləşdirici qeyd. Yeni yüklənmiş sürücü bütün digərləri ilə ümumi yığında işə salınmalıdır. Sizə lazım olan tək şey sürücünün açılış qeydində bir biti (LOAD_OPTION_FORCE_RECONNECT) 1-ə təyin etməkdir və UEFI onu yüklədikdən sonra bu qlobal remap edəcək.

Ancaq bunu etmək o qədər də asan deyil. Standart efibootmgr yardım proqramı (UEFI yükləmə menecerini konfiqurasiya etmək üçün istifadə olunur) bu biti necə təyin edəcəyini bilmir (daha doğrusu, bilmirdi). Mən onu kifayət qədər mürəkkəb və təhlükəli prosedur vasitəsilə əl ilə quraşdırmalı oldum.

Yenə də əllərimlə bunu etməyə çalışaraq, dözə bilmədim və rəsmiləşdirdim GitHub-da məsələ tərtibatçılardan bu xüsusiyyəti əlavə etmələrini xahiş edir.

Bir neçə gün keçdi, amma xahişimə əhəmiyyət verən olmadı. Və maraqdan mənbə koduna baxdım... Onu çəngəllədim və dizlərimin üstündə bu funksiyanı necə əlavə edəcəyimi anladım... “Diz üstə” çünki mən belə bir şey quraşdırmadım və mənbəni redaktə etdim. kodu birbaşa brauzerdə.

Mən C dilini (proqramlaşdırma dilini) çox səthi bilirəm, lakin mən təxmini həllini (əsasən kopyala-yapışdır) cızdım... və sonra fikirləşdim ki, ən azından orada çoxlu səhvlərim var (başqasının dilini redaktə etmək üçün keçmiş cəhdlərim). C kodu təxminən 10-cu dəfə tamamlandı) Mən Pull Request verəcəyəm. Yaxşı buraxılmışdır.

Və orada Travis CI çəkmə sorğularını yoxlamaq üçün əlavə edildi. Və bütün səhvlərimi səylə mənə danışdı. Yaxşı, məlum səhvlər varsa, onu düzəltməyə ehtiyac yoxdur: yenə birbaşa brauzerdə və dördüncü cəhddə kod işlədi (mənim üçün nailiyyət).

Eynilə, brauzerdən çıxmadan mən çox real Pull Request-i demək olar ki, bütün müasir Linux paylamalarında istifadə olunan bir yardım proqramına formatladım.

Məni təəccübləndirdi ki, həqiqətən dili bilmədən, heç bir şey qurmadan (asılılıqlar montaj üçün kifayət qədər kitabxana tələb edir) və hətta kompilyatoru işə salmadan, sadəcə olaraq, proqramda tamamilə işləyən və faydalı funksiyanı “kodladım”. brauzer.

Lakin 19 mart 2019-cu il tarixindən sorğum cavabsız qaldı və mən artıq bunu unutmağa başlamışdım.

Amma dünən bu tələb ustaya əlavə olundu.

Bəs mənim hekayəm nədən bəhs edir? Və o, müasir texnologiyalar çərçivəsində heç bir inkişaf aləti və yerli asılılıqları yerləşdirmədən real kodun brauzerdə artıq yazıla biləcəyi üzə çıxdı.

Üstəlik, etiraf etməliyəm ki, bu, artıq tanınmış (ən azı dar dairələrdə) kommunal xidmətlər üçün ikinci müraciətimdir. Keçən dəfə SyncThing veb-interfeysində bəzi sahələrin ekranını düzəltmək tələbim heç tanımadığım mühitdə sözün əsl mənasında bir sətirli redaktə etməyimlə nəticələndi.

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

Daha çox yazmalıyam, ya yox?

  • bəli

  • buna dəyər deyil

294 istifadəçi səs verib. 138 istifadəçi bitərəf qalıb.

Mənbə: www.habr.com

Добавить комментарий