Terowong anda berfungsi semalam, mesin dimulakan semula selepas kemas kini, dan kini antara muka tidak naik. Pada sistem yang WireGuard dibina sebagai modul luaran, punca biasa ialah modul pada cakera tergolong dalam keluaran kernel yang berbeza daripada yang sedang berjalan sekarang. Pengepala dengan nama serupa pada mesin yang sama tidak membuktikan apa-apa tentang padanan itu. Hanya rentetan keluaran yang menentukannya.

Kernel yang berjalan atau yang dipasang

Kemas kini memasang pakej kernel baharu dan membiarkan yang lama pada cakera sehingga mesin dimulakan semula. Selepas but semula, keluaran yang berjalan berubah, dan mana-mana modul yang dibina terhadap yang sebelumnya menjadi tidak boleh digunakan walaupun failnya masih ada. Jurang itu menjelaskan laporan biasa tentang mesin yang elok sebelum but semula dan rosak selepasnya, tanpa sebarang perubahan konfigurasi di antaranya. Ia juga menjelaskan mengapa memasang semula pengepala kadangkala kelihatan menyelesaikan masalah dan kadangkala tidak.

Pakej pengepala yang anda pasang mungkin sepadan dengan pakej kernel terbaharu dan bukan dengan kernel yang benar-benar but, dan tiada apa dalam nama pakej yang membezakan kes itu; hanya rentetan keluaran yang melakukannya. Semak apa yang berjalan sebelum menyemak apa yang dipasang.

Tiga semakan sebelum membina semula

Semakan pertama ialah kernel mana yang berjalan. Yang kedua ialah sama ada modul untuk keluaran itu wujud dan boleh ditemui. Yang ketiga ialah sama ada kernel sudah memuatkannya. Soalan keempat, sama ada antara muka boleh dicipta, menguji keistimewaan dan bukan modul, jadi tempatnya selepas pembinaan semula dan bukan dalam senarai ini.

Arahan di bawah menjawab tiga yang pertama tanpa mengubah apa-apa. Baca setiap hasil sebelum meneruskan, kerana setiap jawapan menyingkirkan pembaikan yang berbeza.

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

Jika baris kedua melaporkan bahawa laluan itu tidak wujud, persekitaran binaan untuk kernel yang berjalan tiada dan apa-apa yang anda kompil tidak akan sepadan dengannya. Jika modinfo gagal sedangkan laluan itu wujud, modul itu mungkin tidak dipasang sama sekali, yang biasa pada kernel yang menyertakan pelaksanaannya dalam pokok. Jika modinfo berjaya dan lsmod tidak menunjukkan apa-apa, modul itu wujud tetapi tidak dimuatkan, yang merupakan masalah semasa memuat dan bukan masalah binaan. Setiap hasil menghantar anda ke tempat berbeza, sebab itu membaca lebih penting daripada arahan.

Bina terhadap keluaran yang berjalan

Modul luaran dikompil terhadap pokok kernel yang disediakan, dan panduan modul luaran kernel menerangkan penggunaan direktori binaan milik kernel yang berjalan dan bukan mana-mana direktori yang membawa nombor versi tertinggi. Direktori binaan itu ialah pautan simbolik yang diselenggara oleh pakej kernel, jadi ia menunjuk ke pokok bagi keluaran yang sedang but. Ketidaklangsungan itulah intinya: ia menghapuskan pilihan yang jika tidak akan anda buat dengan salah. Menamakannya secara eksplisit menjadikan sasarannya tidak kabur.

Satu perincian penting apabila pokok itu hanya disediakan dan belum dibina sepenuhnya. Sasaran penyediaan tidak menghasilkan fail versi simbol yang diperlukan oleh sesetengah binaan luaran, jadi pokok yang penuh dengan pengepala bukan secara automatik persekitaran binaan yang lengkap. Jika binaan gagal kerana simbol yang hilang, fail itu ialah tempat pertama untuk dilihat.

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

Apabila pengepala yang dibungkus ketinggalan

Pada pengedaran dan komputer papan tunggal yang membungkus kernel sendiri, pengepala boleh ketinggalan berhari-hari atau berminggu-minggu dari keluaran. Pakej pengepala boleh betul namanya tetapi lebih lama isinya, yang menghasilkan binaan yang dikompil dan kemudian gagal semasa dimuatkan dan bukan semasa pengkompilan. Mencampurkan sumber memburukkannya: kernel pengedaran dengan pengepala daripada repositori pihak ketiga, atau kernel vendor dengan pengepala generik, boleh dikompil dengan bersih dan masih ditolak oleh kernel yang berjalan kerana konfigurasinya berbeza. Nombor versi sahaja tidak menyelesaikannya.

Jika mesin mengikuti saluran kernel eksperimen, tentukan dengan sedar sama ada mahu kekal di sana dengan artifak binaan yang sepadan atau kembali kepada set pakej yang disokong. Mengulangi kemas kini dan berharap bahagian-bahagiannya sejajar bukan rancangan, kerana ketidakpadanan yang sama berulang setiap kali.

Sahkan antara muka selepas pembinaan semula

Selepas pemasangan berjaya, mencipta antara muka ialah ujian yang penting, diikuti membaca apa yang sebenarnya dimuatkan oleh kernel dan apa kata log jika ia menolak. Modul yang dimuatkan dan antara muka yang tidak boleh dicipta ialah kegagalan berbeza dengan punca berbeza. Tiga arahan di bawah memisahkannya.

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

Jika modul enggan dimuatkan, log kernel menyebut puncanya, dan ketidakpadanan versi hanyalah salah satu kemungkinan. Baca baris itu sebelum membina semula, kerana binaan kedua yang serupa menghabiskan sepuluh minit yang sama dan menghasilkan penolakan yang sama. Selepas itu buang antara muka sementara supaya ujian seterusnya bermula dari keadaan bersih.

Artikel berkaitan