WireGuard մոդուլը չի բեռնվում միջուկի թարմացումից հետո. ինչ ստուգել
Արտաքին մոդուլը պետք է կառուցվի այն միջուկի համար, որը կբեռնի այն, այլ ոչ թե սկավառակի ամենանոր վերնագրային փաթեթի համար։ Նախքան վերակառուցումը ստուգեք գործող թողարկումը։
Ձեր թունելը երեկ աշխատում էր, մեքենան վերագործարկվեց թարմացումից հետո, և այժմ ինտերֆեյսը չի բարձրանում։ Այն համակարգում, որտեղ 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
Եթե մոդուլը հրաժարվում է բեռնվել, միջուկի մատյանը նշում է պատճառը, և տարբերակի անհամապատասխանությունը միայն հնարավորություններից մեկն է։ Կարդացեք այդ տողը նախքան նորից կառուցելը, որովհետև երկրորդ նույնական կառուցումը ծախսում է նույն տասը րոպեն և տալիս է նույն մերժումը։ Այնուհետև հեռացրեք ժամանակավոր ինտերֆեյսը, որպեսզի հաջորդ փորձարկումը սկսվի մաքուր վիճակից։