Tüneliniz dün çalışıyordu, makine bir güncellemeden sonra yeniden başladı ve şimdi arayüz yükselmiyor. WireGuard'ın harici modül olarak derlendiği bir sistemde olağan neden, diskteki modülün şu anda çalışan çekirdek sürümünden farklı bir sürüme ait olmasıdır. Aynı makinede benzer adlı başlıklar bu eşleşme hakkında hiçbir şey kanıtlamaz. Bunu yalnızca sürüm dizesi belirler.

Çalışan ya da kurulu çekirdek

Bir güncelleme yeni bir çekirdek paketi kurar ve makine yeniden başlayana kadar eskisini diskte bırakır. Yeniden başlatmadan sonra çalışan sürüm değişir ve öncekine karşı derlenmiş her modül, dosyaları hâlâ orada olsa bile kullanılamaz hale gelir. Bu boşluk, yeniden başlatmadan önce sağlam olan ve sonrasında bozulan, arada hiçbir yapılandırma değişikliği olmayan makineyle ilgili tanıdık raporu açıklar. Ayrıca başlıkların yeniden kurulmasının sorunu bazen çözüyormuş gibi görünmesini, bazen de görünmemesini açıklar.

Kurduğunuz başlık paketi, gerçekte önyüklenen çekirdek yerine en yeni çekirdek paketine karşılık gelebilir ve paket adında bu durumları ayıran hiçbir şey yoktur; bunu yalnızca sürüm dizesi yapar. Neyin kurulu olduğunu kontrol etmeden önce neyin çalıştığını kontrol edin.

Yeniden derlemeden önce üç kontrol

İlk kontrol hangi çekirdeğin çalıştığıdır. İkincisi o sürüm için bir modül olup olmadığı ve bulunup bulunamadığıdır. Üçüncüsü çekirdeğin onu zaten yükleyip yüklemediğidir. Dördüncü soru, arayüzün oluşturulup oluşturulamayacağı, modülü değil yetkileri test eder, bu yüzden yeri yeniden derlemeden sonradır, bu listede değil.

Aşağıdaki komutlar hiçbir şeyi değiştirmeden ilk üçüne yanıt verir. Devam etmeden önce her sonucu okuyun, çünkü her yanıt farklı bir onarımı dışlar.

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

İkinci satır yolun olmadığını bildirirse, çalışan çekirdek için derleme ortamı yoktur ve derlediğiniz hiçbir şey ona uymaz. Yol varken modinfo başarısız olursa, modül hiç kurulmamış olabilir; bu, uygulamayı ağaç içinde sağlayan çekirdeklerde normaldir. modinfo başarılı olur ve lsmod hiçbir şey göstermezse, modül vardır ama yüklenmemiştir; bu derleme değil yükleme zamanı sorunudur. Her sonuç sizi başka bir yere gönderir, bu yüzden okumak komutlardan daha önemlidir.

Çalışan sürüme karşı derleyin

Harici bir modül, hazırlanmış bir çekirdek ağacına karşı derlenir ve çekirdeğin harici modül kılavuzu, en yüksek sürüm numarasını taşıyan dizin yerine çalışan çekirdeğe ait derleme dizinini kullanmayı anlatır. Bu derleme dizini, çekirdek paketinin bakımını yaptığı sembolik bir bağlantıdır, bu yüzden şu anda önyüklenen sürümün ağacına işaret eder. Dolaylılık tam da meselenin kendisidir: aksi halde yanlış yapacağınız bir seçimi ortadan kaldırır. Açıkça adlandırmak hedefi tartışmasız kılar.

Ağaç yalnızca hazırlanmış ve tamamen derlenmemişse bir ayrıntı önemlidir. Hazırlık hedefi, bazı harici derlemelerin ihtiyaç duyduğu sembol sürüm dosyasını üretmez, bu yüzden başlıklarla dolu bir ağaç otomatik olarak eksiksiz bir derleme ortamı değildir. Bir derleme eksik semboller yüzünden başarısız olursa, ilk bakılacak yer o dosyadır.

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

Paketlenmiş başlıklar geride kaldığında

Kendi çekirdeklerini paketleyen dağıtımlarda ve tek kartlı bilgisayarlarda, başlıklar sürümün günlerce veya haftalarca gerisinde kalabilir. Başlık paketi adda doğru, içerikte daha eski olabilir; bu, derlenen ve ardından derleme sırasında değil yükleme sırasında başarısız olan bir derleme üretir. Kaynakları karıştırmak durumu kötüleştirir: üçüncü taraf deposundan başlıkları olan bir dağıtım çekirdeği ya da genel başlıkları olan bir üretici çekirdeği temiz derlenebilir ve yapılandırma farklı olduğu için yine de çalışan çekirdek tarafından reddedilebilir. Yalnızca sürüm numaraları bunu çözmez.

Makine deneysel bir çekirdek kanalını izliyorsa, eşleşen derleme çıktılarıyla orada kalıp kalmayacağınıza ya da desteklenen paket kümesine dönüp dönmeyeceğinize bilinçli olarak karar verin. Güncellemeyi tekrarlayıp parçaların birbirine uyacağını ummak bir plan değildir, çünkü aynı uyumsuzluk her seferinde yinelenir.

Yeniden derlemeden sonra arayüzü doğrulayın

Başarılı bir kurulumdan sonra arayüzü oluşturmak önemli olan testtir; ardından çekirdeğin gerçekte neyi yüklediğini ve reddettiyse günlüğün ne dediğini okumak gelir. Yüklenen bir modül ile oluşturulamayan bir arayüz, farklı nedenleri olan farklı arızalardır. Aşağıdaki üç komut bunları ayırır.

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

Modül yüklenmeyi reddederse, çekirdek günlüğü nedeni belirtir ve sürüm uyumsuzluğu yalnızca olasılıklardan biridir. Yeniden derlemeden önce o satırı okuyun, çünkü ikinci aynı derleme aynı on dakikayı harcar ve aynı reddi verir. Ardından geçici arayüzü kaldırın ki sonraki test temiz bir durumdan başlasın.

İlgili makaleler