WireGuard modulis neielādējas pēc kodola atjauninājuma? Pārbaudiet šo
Ārējais modulis jābūvē pret kodolu, kas to ielādēs, nevis pret jaunāko galveņu pakotni diskā. Pirms pārbūves pārbaudiet darbojošos laidienu.
Jūsu tunelis vakar darbojās, pēc atjauninājuma mašīna pārstartējās, un tagad saskarne nepaceļas. Sistēmā, kur WireGuard tiek būvēts kā ārējais modulis, parastais iemesls ir tas, ka modulis diskā pieder citam kodola laidienam nekā tam, kas tagad darbojas. Galvenes ar līdzīgu nosaukumu tajā pašā mašīnā neko nepierāda par šo atbilstību. To nosaka tikai laidiena virkne.
Darbojošs vai instalēts kodols
Atjauninājums instalē jaunu kodola pakotni un atstāj veco diskā, līdz mašīna pārstartējas. Pēc pārstartēšanas darbojošais laidiens mainās, un jebkurš modulis, kas būvēts pret iepriekšējo, kļūst nederīgs, lai gan tā faili joprojām ir. Šī atšķirība izskaidro pazīstamo ziņojumu par mašīnu, kas pirms pārstartēšanas bija kārtībā un pēc tam salūza, bez jebkādām konfigurācijas izmaiņām starpā. Tā arī izskaidro, kāpēc galveņu pārinstalēšana dažkārt šķiet problēmu novēršam, dažkārt nē.
Galveņu pakotne, ko instalējat, var atbilst jaunākajai kodola pakotnei, nevis kodolam, kas faktiski tika startēts, un nekas pakotnes nosaukumā nešķir šos gadījumus; to dara tikai laidiena virkne. Pirms pārbaudīt, kas instalēts, pārbaudiet, kas darbojas.
Trīs pārbaudes pirms pārbūves
Pirmā pārbaude ir, kurš kodols darbojas. Otrā ir, vai šim laidienam ir modulis un vai to var atrast. Trešā ir, vai kodols to jau ir ielādējis. Ceturtais jautājums, vai saskarni var izveidot, pārbauda tiesības, nevis moduli, tāpēc tā vieta ir pēc pārbūves, nevis šajā sarakstā.
Tālāk minētās komandas atbild uz pirmajām trim, neko nemainot. Izlasiet katru rezultātu pirms turpināt, jo katra atbilde izslēdz citu labojumu.
uname -r
ls -l /lib/modules/$(uname -r)/build
modinfo wireguard
lsmod | grep wireguard
Ja otrā rinda ziņo, ka ceļš neeksistē, trūkst darbojošā kodola būvēšanas vides, un nekas, ko kompilēsiet, tam neatbilst. Ja modinfo neizdodas, lai gan ceļš eksistē, modulis var būt vispār nav instalēts, kas ir normāli kodolos, kuri ieviešanu piegādā kokā. Ja modinfo izdodas un lsmod nekādu neuzrāda, modulis ir, bet nav ielādēts, un tā ir ielādes, nevis būvēšanas problēma. Katrs rezultāts sūta jūs citur, tāpēc lasīšana ir svarīgāka par komandām.
Būvējiet pret darbojošo laidienu
Ārējais modulis tiek kompilēts pret sagatavotu kodola koku, un kodola rokasgrāmata par ārējiem moduļiem apraksta būvēšanas direktorijas, kas pieder darbojošajam kodolam, izmantošanu, nevis tās, kurai ir augstākais versijas numurs. Šī būvēšanas direktorija ir simboliska saite, ko uztur kodola pakotne, tāpēc tā norāda uz tā laidiena koku, kas pašlaik ir startēts. Netiešums ir tieši tā būtība: tas noņem izvēli, ko citādi izdarītu nepareizi. Skaidra nosaukšana padara mērķi viennozīmīgu.
Viena detaļa ir svarīga, ja koks ir tikai sagatavots, nevis pilnībā uzbūvēts. Sagatavošanas mērķis neizveido simbolu versiju failu, kas nepieciešams dažām ārējām būvēm, tāpēc koks, kas pilns ar galvenēm, nav automātiski pilnīga būvēšanas vide. Ja būve neizdodas trūkstošu simbolu dēļ, šis fails ir pirmā vieta, kur paskatīties.
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
Kad iepakotās galvenes atpaliek
Izplatījumos un vienas plates datoros, kas pako savus kodolus, galvenes var atpalikt no laidiena dienām vai nedēļām. Galveņu pakotne var būt pareiza nosaukumā un vecāka saturā, kas dod būvi, kura kompilējas un pēc tam neizdodas ielādējot, nevis kompilēšanas laikā. Avotu sajaukšana to padara sliktāku: izplatījuma kodols ar galvenēm no trešās puses krātuves vai ražotāja kodols ar vispārīgām galvenēm var tīri kompilēties un tomēr tikt noraidīts no darbojošā kodola, jo konfigurācija atšķiras. Tikai versiju numuri to neatrisina.
Ja mašīna seko eksperimentālam kodola kanālam, apzināti izlemiet, vai palikt tur ar atbilstošiem būves artefaktiem, vai atgriezties pie atbalstītā pakotņu komplekta. Atkārtot atjauninājumu un cerēt, ka daļas saderēs, nav plāns, jo tā pati neatbilstība atkārtojas katru reizi.
Pārbaudiet saskarni pēc pārbūves
Pēc veiksmīgas instalācijas saskarnes izveide ir tas tests, kam ir nozīme, un pēc tam lasīšana, ko kodols faktiski ielādēja un ko žurnāls saka, ja tas atteicās. Ielādējams modulis un neizveidojama saskarne ir dažādas kļūmes ar dažādiem cēloņiem. Trīs tālāk minētās komandas tās atšķir.
sudo ip link add wg9 type wireguard
lsmod | grep wireguard
sudo dmesg | tail -5
Ja modulis atsakās ielādēties, kodola žurnāls nosauc iemeslu, un versiju neatbilstība ir tikai viena no iespējām. Izlasiet šo rindu pirms atkārtotas būves, jo otra identiska būve patērē tās pašas desmit minūtes un dod to pašu atteikumu. Pēc tam noņemiet pagaidu saskarni, lai nākamais tests sāktos no tīras stāvokļa.