Ирээдүй аль хэдийн энд байна эсвэл шууд хөтөч дээр кодчил

Би танд тохиолдсон инээдтэй нөхцөл байдлын талаар, мөн алдартай төсөлд хэрхэн хувь нэмэр оруулагч болох талаар хэлэх болно.

Саяхан би нэг санаа бодож байсан: Линуксийг UEFI-ээс шууд ачаалах...
Энэ санаа нь шинэ зүйл биш бөгөөд энэ сэдвээр хэд хэдэн гарын авлага байдаг. Та тэдгээрийн аль нэгийг нь харж болно энд

Үнэндээ энэ асуудлыг шийдэхийн тулд миний олон жилийн оролдлого нь бүрэн албан ёсны үр дүнд хүрсэн решение. Энэ шийдэл нь нэлээд үр дүнтэй бөгөөд би үүнийг гэрийн зарим машин дээрээ ашигладаг. Энэ шийдлийг арай илүү дэлгэрэнгүй тайлбарласан болно. энд.

UEFI-Boot-ийн мөн чанар нь ESP (EFI System Partition) хуваалтыг /boot лавлахтай хослуулсан явдал юм. Тэдгээр. бүх цөмүүд болон ачаалах зургууд (initrd) нь UEFI нь гүйцэтгэх боломжтой файлуудыг ажиллуулж, ялангуяа системийн ачаалагчийг ажиллуулж болох ижил хуваалт дээр байрладаг. Гэхдээ олон түгээлтийн Linux цөм нь өөрөө UEFISTUB сонголтоор аль хэдийн угсарсан бөгөөд энэ нь цөмийг өөрөө UEFI-ээс эхлүүлэх боломжийг олгодог.

Энэхүү шийдэл нь нэг таагүй мөчтэй байдаг - ESP хуваалт нь FAT32 форматаар форматлагдсан бөгөөд үүн дээр хатуу холбоос үүсгэх боломжгүй (энэ нь initrd-ийг шинэчлэх үед систем байнга үүсгэдэг). Энэ талаар онцгой гэмт хэрэг байхгүй, гэхдээ цөмийн бүрэлдэхүүн хэсгүүдийг шинэчлэх үед системийн анхааруулгыг харах нь тийм ч таатай биш юм ...

Өөр арга бий.

UEFI ачаалах менежер (Та OS ачаалагчийг бүртгүүлэх шаардлагатай ижил) нь ачаалагч ачаалагч/Linux цөмүүдээс гадна драйверуудыг ачаалах боломжтой. Тиймээс та /ачаалах боломжтой файлын системийн драйверийг ачаалж, тэндээс UEFI ашиглан цөмийг шууд ачаалж болно. Мэдээжийн хэрэг драйверийг ESP хуваалтад байрлуулах шаардлагатай. Энэ нь GRUB шиг ачаалагчдын хийдэг зүйл юм. Гэхдээ онцлох зүйл бол байнга ашиглагддаг бүх GRUB функцууд UEFI-д аль хэдийн байдаг. Илүү нарийвчлалтайгаар татаж авах менежер дээр. Илүү уйтгартай байхын тулд UEFI ачаалах менежер нь зарим асуудалд илүү их чадвартай байдаг.

Энэ нь сайхан шийдэл юм шиг санагдаж байна, гэхдээ нэг "ГЭХДЭЭ" байдаг (эсвэл тийм байсан, гэхдээ дараа нь). UEFI драйверын систем нь маш энгийн зүйл юм. Файлын системийг холбох, драйверийг тодорхой төхөөрөмжтэй холбох гэх мэт зүйл байхгүй. Map хэмээх ердийн нэртэй системийн дуудлага байдаг бөгөөд энэ нь драйвер бүрийг ээлжлэн авч, бүх, ядаж тохиромжтой төхөөрөмжтэй холбохыг оролддог. Хэрэв жолооч төхөөрөмжийг авч чадсан бол зураглал үүсгэгдэнэ - холболтын бичлэг. Яг ийм байдлаар шинээр ачаалагдсан драйверийг бусадтай хамт нийтлэг овоолон эхлүүлэх ёстой. Танд хэрэгтэй зүйл бол драйверын ачаалах бүртгэлд нэг бит (LOAD_OPTION_FORCE_RECONNECT)-ыг 1 болгон тохируулахад л хангалттай бөгөөд UEFI үүнийг ачаалсны дараа энэ дэлхийн дахин зураглалыг хийх болно.

Гэхдээ үүнийг хийх нь тийм ч хялбар биш юм. Стандарт efibootmgr хэрэгсэл (UEFI буулгах менежерийг тохируулахад ашигладаг) энэ битийг хэрхэн тохируулахаа мэдэхгүй (эсвэл яаж хийхийг мэдэхгүй). Би үүнийг нэлээд төвөгтэй бөгөөд аюултай процедурын дагуу гараар суулгах шаардлагатай болсон.

Дахин нэг удаа гараараа хийх гэж оролдоод би тэвчиж чадалгүй албан ёсоор мэдэгдэв GitHub дээрх асуудал хөгжүүлэгчид энэ функцийг нэмэхийг хүсч байна.

Хэдэн өдөр өнгөрсөн ч миний хүсэлтийг хэн ч тоосонгүй. Тэгээд сониуч зандаа эх кодыг нь харлаа... Сэрээ тавиад, энэ функцийг хэрхэн нэмэхээ өвдөг дээрээ сөхрөн бодож үзлээ... "Өвдөг дээрээ" гэдэг шиг юм суулгаагүй учраас эх сурвалжаа зассан. кодыг хөтөч дээр шууд оруулна.

Би C хэлийг (програмчлалын хэл) маш өнгөцхөн мэддэг, гэхдээ би ойролцоо шийдэл гаргасан (ихэвчлэн хуулж буулгах) ... тэгээд би бодсон - ядаж л надад маш олон алдаа байгаа байх (өмнө нь өөр хэн нэгний хэлийг засварлах оролдлого хийж байсан) C кодыг 10 дахь удаагаа бөглөсөн) Би татах хүсэлт гаргах болно. За зохион бүтээсэн.

Тэгээд тэнд Travis CI татах хүсэлтийг шалгахын тулд хавсаргасан байна. Тэгээд тэр миний бүх алдааг хичээнгүйлэн хэлсэн. За, хэрэв мэдэгдэж байгаа алдаа байгаа бол үүнийг засах шаардлагагүй: дахин шууд хөтөч дээр, дөрөв дэх оролдлого дээр код ажилласан (миний хувьд амжилт).

Яг үүнтэй адил би хөтчөөсөө гаралгүйгээр бараг бүх орчин үеийн Линукс түгээлтүүдэд ашиглагддаг хэрэгсэл болгон жинхэнэ татах хүсэлтийг форматласан.

Хэл мэдэхгүй, юу ч тохируулалгүйгээр (хамаарал нь угсрахад нэлээд олон номын сан шаарддаг), хөрвүүлэгчийг ч ажиллуулалгүйгээр зүгээр л "кодлож" байсан нь намайг гайхшруулсан юм. хөтөч.

Гэвч 19 оны 2019-р сарын XNUMX-ний өдрөөс хойш миний хүсэлт ямар ч хариу өгөөгүй бөгөөд би үүнийг аль хэдийн мартаж эхэлсэн.

Харин өчигдөр энэ хүсэлтийг мастерт нэмсэн.

Тэгэхээр миний түүх юу вэ? Тэрээр орчин үеийн технологийн хүрээнд ямар ч хөгжүүлэлтийн хэрэгсэл, хамаарлыг локал болгон ашиглахгүйгээр хөтөч дээр жинхэнэ кодыг аль хэдийн бичих боломжтой болсон тухай ярьж байна.

Түүгээр ч барахгүй, би хүлээн зөвшөөрөх ёстой, энэ бол аль хэдийн сайн мэддэг (ядаж нарийн тойрогт) хэрэгслүүдийг авах миний хоёр дахь хүсэлт юм. Өнгөрсөн удаад SyncThing вэб интерфэйс дэх зарим талбарын дэлгэцийг засахыг хүссэн миний хүсэлтийн дагуу би огт мэдэхгүй орчинд нэг мөр засвар хийсэн.

Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. Нэвтрэх, гуйя.

Би илүү их бичих ёстой юу, үгүй ​​юу?

  • Хэрэв тийм бол

  • Үнэ цэнэтэй биш

294 хэрэглэгч санал өгсөн. 138 хэрэглэгч түдгэлзсэн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх