Kelajak allaqachon shu yerda yoki to'g'ridan-to'g'ri brauzerda kod

Men sizga men bilan sodir bo'lgan kulgili vaziyat va qanday qilib mashhur loyihaga hissa qo'shish haqida gapirib beraman.

Yaqinda men bir fikr bilan shug'ullanardim: Linuxni to'g'ridan-to'g'ri UEFI-dan yuklash ...
G'oya yangi emas va bu mavzu bo'yicha bir qator qo'llanmalar mavjud. Siz ulardan birini ko'rishingiz mumkin shu yerda

Aslida, bu muammoni hal qilishga bo'lgan uzoq vaqtdan beri urinishlarim to'liq rasmiylashtirilgan bo'ldi qaror. Yechim juda yaxshi ishlaydi va men uni ba'zi uy mashinalarimda ishlataman. Ushbu yechim biroz batafsilroq tasvirlangan. shu yerda.

UEFI-Boot-ning mohiyati shundaki, ESP (EFI System Partition) bo'limi / boot katalogi bilan birlashtirilgan. Bular. barcha yadrolar va yuklash tasvirlari (initrd) UEFI bajariladigan fayllarni ishga tushirishi va xususan, tizimni yuklash moslamalarini ishga tushirishi mumkin bo'lgan bir xil bo'limda joylashgan. Ammo Linux yadrosining o'zi ko'plab tarqatishlarda allaqachon UEFISTUB opsiyasi bilan yig'ilgan, bu yadroning o'zini UEFI-dan ishga tushirishga imkon beradi.

Ushbu yechimning bitta noxush lahzasi bor - ESP bo'limi FAT32 formatida formatlangan bo'lib, unda qattiq havolalarni yaratish mumkin emas (initrd-ni yangilashda tizim muntazam ravishda yaratadi). Va bu borada ayniqsa jinoiy narsa yo'q, lekin yadro komponentlarini yangilashda tizim ogohlantirishlarini ko'rish unchalik yoqimli emas ...

Boshqa yo'l bor.

UEFI yuklash menejeri (OS yuklash vositasini ro'yxatdan o'tkazishingiz kerak bo'lgan bir xil) yuklash moslamalari/Linux yadrolariga qo'shimcha ravishda drayverlarni ham yuklashi mumkin. Shunday qilib, siz / boot mavjud bo'lgan fayl tizimi uchun drayverni yuklashingiz va UEFI yordamida yadroni to'g'ridan-to'g'ri u yerdan yuklashingiz mumkin. Drayv, albatta, ESP bo'limiga joylashtirilishi kerak. Bu taxminan GRUB kabi yuklovchilar bajaradigan narsa. Ammo diqqatga sazovor narsa shundaki, barcha tez-tez ishlatiladigan GRUB funktsiyalari allaqachon UEFI-da. Aniqrog'i uning yuklab olish menejerida. Va bundan ham zerikarli bo'lishi uchun, UEFI yuklash menejeri ba'zi masalalarda yanada ko'proq imkoniyatlarga ega.

Bu chiroyli yechim bo'lib tuyuladi, lekin bitta "BUT" bor (aniqrog'i, shunday edi, lekin keyinroq). Gap shundaki, UEFI drayverlari tizimi juda oddiy. Fayl tizimini o'rnatish yoki drayverni ma'lum bir qurilma bilan bog'lash kabi narsa yo'q. Har bir drayverni navbatma-navbat qabul qiladigan va uni hech bo'lmaganda mos keladigan barcha qurilmalar bilan bog'lashga harakat qiladigan an'anaviy Map nomli tizim chaqiruvi mavjud. Va agar haydovchi qurilmani ko'tara olgan bo'lsa, unda xaritalash yaratiladi - ulanish yozuvi. Aynan shu tarzda yangi yuklangan drayver barcha boshqalar bilan umumiy yig'indida ishga tushirilishi kerak. Va sizga kerak bo'lgan narsa - drayverni yuklash yozuvida bir bitni (LOAD_OPTION_FORCE_RECONNECT) 1 ga o'rnatish va UEFI uni yuklagandan so'ng global qayta xaritani amalga oshiradi.

Lekin buni qilish unchalik oson emas. Standart efibootmgr yordam dasturi (UEFI tushirish menejerini sozlash uchun ishlatiladi) bu bitni qanday o'rnatishni bilmaydi (aniqrog'i, qanday qilib bilmaydi). Men uni juda murakkab va xavfli protsedura orqali qo'lda o'rnatishim kerak edi.

Va yana bir bor, buni qo'llarim bilan qilishga urinib ko'rdim, men bunga chiday olmadim va rasmiylashtirdim GitHub-da muammo ishlab chiquvchilardan ushbu xususiyatni qo'shishni so'rash.

Oradan bir necha kun o'tdi, lekin iltimosimga hech kim e'tibor bermadi. Qiziq, men manba kodiga qaradim... Men uni vilka qildim va bu xususiyatni qanday qo'shishni tizzamda o'ylab topdim ... "Tizlarimda" chunki men shunga o'xshash narsalarni o'rnatmaganman va manbani tahrir qilganman to'g'ridan-to'g'ri brauzerda kod.

Men C tilini (dasturlash tilini) juda yuzaki bilaman, lekin men taxminiy yechimni chizdim (asosan nusxa ko‘chirish-joylashtirish)... va keyin o‘yladim – hech bo‘lmaganda u yerda juda ko‘p xatolarim bor (o‘tmishda boshqa birovning tilini tahrir qilishga urinishlarim) C kodi taxminan 10-marta to'ldirildi) Men Pull So'rovini beraman. Xo'sh ishlab chiqilgan.

Va u erda Travis CI pull so'rovlarini tekshirish uchun biriktirilgan bo'lib chiqdi. Va u mening barcha xatolarimni qunt bilan aytdi. Xo'sh, agar ma'lum xatolar bo'lsa, uni tuzatishning hojati yo'q: yana brauzerda va to'rtinchi urinishda kod ishladi (men uchun yutuq).

Xuddi shunga o'xshab, brauzerdan chiqmasdan, men deyarli barcha zamonaviy Linux distributivlarida ishlatiladigan yordam dasturiga juda haqiqiy Pull Requestni formatladim.

Meni chindan ham tilni bilmasdan, hech narsa sozlamay turib (to‘g‘riliklarni yig‘ish uchun juda ko‘p kutubxonalar talab qilinadi) va hatto kompilyatorni ham ishga tushirmasdan, men oddiygina “kodlangan”ligimdan hayratda qoldim. brauzer.

Biroq, mening so'rovim 19 yil 2019 martdan beri javob bermayapti va men buni allaqachon unuta boshlagandim.

Ammo kecha bu so'rov ustaga qo'shildi.

Xo'sh, mening hikoyam nima haqida? Va u zamonaviy texnologiyalar doirasida haqiqiy kodni brauzerda allaqachon biron-bir ishlab chiqish vositalari va mahalliy bog'liqliklarni joylashtirmasdan yozish mumkinligi haqida gapiradi.

Bundan tashqari, tan olishim kerak, bu allaqachon taniqli (hech bo'lmaganda tor doiralarda) kommunal xizmatlar uchun ikkinchi talabim. Oxirgi marta, SyncThing veb-interfeysidagi ba'zi maydonlar ko'rinishini to'g'rilash haqidagi so'rovim men umuman bilmagan muhitda tom ma'noda bir qatorli tahrir qilishimga olib keldi.

So'rovda faqat ro'yxatdan o'tgan foydalanuvchilar ishtirok etishlari mumkin. tizimga kirishiltimos.

Ko'proq yozishim kerakmi yoki yo'qmi?

  • ha

  • bunga arziydi

294 foydalanuvchi ovoz berdi. 138 nafar foydalanuvchi betaraf qoldi.

Manba: www.habr.com

a Izoh qo'shish