કર્નલ અપડેટ પછી 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
જો મોડ્યુલ લોડ થવાનો ઇનકાર કરે, તો કર્નલ લોગ કારણ જણાવે છે, અને આવૃત્તિની અસંગતિ ફક્ત એક શક્યતા છે. ફરીથી બનાવતા પહેલાં એ લાઇન વાંચો, કારણ કે બીજું સરખું બિલ્ડ એ જ દસ મિનિટ ખર્ચે છે અને એ જ ઇનકાર આપે છે. પછી અસ્થાયી ઇન્ટરફેસ દૂર કરો જેથી આગલી કસોટી સ્વચ્છ સ્થિતિથી શરૂ થાય.