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

Ажиллаж буй эсвэл суулгасан цөм

Шинэчлэлт шинэ цөмийн багц суулгаж, машин дахин ачаалагдах хүртэл хуучныг диск дээр үлдээдэг. Дахин ачаалсны дараа ажиллаж буй хувилбар өөрчлөгдөж, өмнөх хувилбарт зориулан баригдсан аливаа модуль файлууд нь байсан ч хэрэглэх боломжгүй болно. Энэ зөрүү нь дахин ачаалахаас өмнө хэвийн байсан ч дараа нь эвдэрсэн машины тухай танил мэдээллийг тайлбарладаг, хооронд нь ямар ч тохиргооны өөрчлөлтгүйгээр. Мөн толгойнуудыг дахин суулгах нь заримдаа асуудлыг шийдсэн мэт санагдаж, заримдаа санагдахгүй байгааг ч тайлбарладаг.

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

Дахин бүтээхийн өмнөх гурван шалгалт

Эхний шалгалт нь аль цөм ажиллаж байгаа юм. Хоёр дахь нь тухайн хувилбарт модуль байгаа эсэх, олдох эсэх юм. Гурав дахь нь цөм үүнийг аль хэдийн ачаалсан эсэх юм. Дөрөв дэх асуулт, өөрөөр хэлбэл интерфэйс үүсгэж болох эсэх нь модулийг биш, эрхүүдийг шалгадаг тул түүний байр дахин бүтээсний дараа, энэ жагсаалтад биш.

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

uname -r
ls -l /lib/modules/$(uname -r)/build
modinfo wireguard
lsmod | grep wireguard

Хоёр дахь мөр зам байхгүй гэж мэдээлбэл, ажиллаж буй цөмийн бүтээх орчин байхгүй бөгөөд таны компиляцлах юу ч түүнд тохирохгүй. Зам байгаа ч modinfo бүтэлгүйтвэл модуль огт суулгагдаагүй байж болно, энэ нь хэрэгжүүлэлтийг мод дотор нийлүүлдэг цөмүүдэд хэвийн. modinfo амжилттай болж lsmod юу ч харуулахгүй бол модуль байгаа боловч ачаалагдаагүй, энэ нь бүтээх биш, ачаалах үеийн асуудал. Үр дүн бүр таныг өөр газар илгээдэг тул унших нь командуудаас илүү чухал.

Ажиллаж буй хувилбарт тулгуурлан бүтээ

Гадаад модуль бэлтгэгдсэн цөмийн модонд тулгуурлан компиляцлагддаг бөгөөд цөмийн гадаад модулийн гарын авлага нь хамгийн өндөр хувилбарын дугаартай хавтас биш, ажиллаж буй цөмд хамаарах бүтээх хавтасыг ашиглахыг тайлбарладаг. Тэр бүтээх хавтас нь цөмийн багцын арчилдаг симбол холбоос тул одоо ачаалагдсан хувилбарын мод руу заана. Шууд бус байдал нь яг гол зүйл: эс бөгөөс буруу хийх сонголтыг арилгадаг. Үүнийг тодорхой нэрлэх нь зорилгыг хоёрдмол утгагүй болгоно.

Модыг бүрэн бүтээлгүй зөвхөн бэлтгэсэн үед нэг нарийн ширийн зүйл чухал. Бэлтгэх зорилго нь зарим гадаад бүтээлд хэрэгтэй симболын хувилбарын файлыг үүсгэдэггүй тул толгойгоор дүүрэн мод нь автоматаар бүрэн бүтээх орчин болохгүй. Хэрэв бүтээл дутагдалтай симболын улмаас бүтэлгүйтвэл тэр файл нь хамгийн түрүүнд харах газар.

sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install
sudo depmod -a

Багцлагдсан толгойнууд хоцрох үед

Өөрийн цөмийг багцалдаг түгээлтүүд болон нэг хавтант компьютерт толгойнууд хувилбараас хэдэн өдөр эсвэл долоо хоногоор хоцорч болно. Толгой багц нь нэрээрээ зөв, агуулгаараа хуучин байж болох бөгөөд энэ нь компиляцлагдаад дараа нь компиляцын үед биш, ачаалах үед бүтэлгүйтдэг бүтээл өгдөг. Эх үүсвэрийг холих нь үүнийг улам дордуулна: гуравдагч талын репозиториос толгойтой түгээлтийн цөм, эсвэл ерөнхий толгойтой үйлдвэрлэгчийн цөм цэвэр компиляцлагдаж, тохиргоо өөр тул ажиллаж буй цөмөөс татгалзаж болно. Зөвхөн хувилбарын дугаарууд үүнийг шийдэхгүй.

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

Дахин бүтээсний дараа интерфэйсийг шалга

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

sudo ip link add wg9 type wireguard
lsmod | grep wireguard
sudo dmesg | tail -5

Хэрэв модуль ачаалагдахаас татгалзвал цөмийн лог шалтгааныг нэрлэдэг бөгөөд хувилбарын зөрүү нь зөвхөн нэг боломж. Дахин бүтээхийн өмнө тэр мөрийг уншаарай, учир нь хоёр дахь ижил бүтээл мөн адил арван минутыг зарцуулж, мөн адил татгалзал өгдөг. Дараа нь түр зуурын интерфэйсийг устгаж, дараагийн шалгалт цэвэр төлөвөөс эхэлнэ.

Холбоотой нийтлэлүүд