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
თუ მოდული უარს ამბობს ჩატვირთვაზე, ბირთვის ჟურნალი ასახელებს მიზეზს და ვერსიის შეუსაბამობა მხოლოდ ერთი შესაძლებლობაა. წაიკითხეთ ეს სტრიქონი სანამ ხელახლა ააშენებთ, რადგან მეორე იდენტური აგება იმავე ათ წუთს ხარჯავს და იმავე უარს იძლევა. შემდეგ წაშალეთ დროებითი ინტერფეისი, რომ შემდეგი გამოცდა სუფთა მდგომარეობიდან დაიწყოს.