WireGuard-moduuli ei lataudu ytimen päivityksen jälkeen? Tarkista tämä
Ulkoinen moduuli on rakennettava sitä ydintä vasten, joka sen lataa, ei levyn uusinta otsikkopakettia vasten. Tarkista käynnissä oleva versio ennen uudelleenrakennusta.
Tunnelisi toimi eilen, kone käynnistyi uudelleen päivityksen jälkeen, ja nyt liitäntä ei nouse. Järjestelmässä, jossa WireGuard rakennetaan ulkoiseksi moduuliksi, tavallinen syy on se, että levyllä oleva moduuli kuuluu eri ydinversioon kuin se, joka nyt on käynnissä. Samanlaisella nimellä varustetut otsikot samassa koneessa eivät todista mitään tuosta vastaavuudesta. Vain versiomerkkijono ratkaisee sen.
Käynnissä oleva vai asennettu ydin
Päivitys asentaa uuden ydinpaketin ja jättää vanhan levylle, kunnes kone käynnistyy uudelleen. Uudelleenkäynnistyksen jälkeen käynnissä oleva versio muuttuu, ja mikä tahansa edellistä vasten rakennettu moduuli muuttuu käyttökelvottomaksi, vaikka sen tiedostot ovat yhä paikallaan. Tuo ero selittää tutun kertomuksen koneesta, joka oli kunnossa ennen uudelleenkäynnistystä ja rikki sen jälkeen, ilman mitään kokoonpanomuutosta välissä. Se selittää myös, miksi otsikoiden uudelleenasennus näyttää joskus korjaavan ongelman ja joskus ei.
Asentamasi otsikkopaketti voi vastata uusinta ydinpakettia eikä sitä ydintä, joka todella käynnistyi, eikä mikään paketin nimessä erota näitä tapauksia; vain versiomerkkijono tekee sen. Tarkista, mikä on käynnissä, ennen kuin tarkistat, mikä on asennettu.
Kolme tarkistusta ennen uudelleenrakennusta
Ensimmäinen tarkistus on, mikä ydin on käynnissä. Toinen on, onko kyseiselle versiolle moduuli olemassa ja löydettävissä. Kolmas on, onko ydin jo ladannut sen. Neljäs kysymys, voidaanko liitäntä luoda, testaa käyttöoikeuksia eikä moduulia, joten se kuuluu uudelleenrakennuksen jälkeen eikä tähän luetteloon.
Alla olevat komennot vastaavat kolmeen ensimmäiseen muuttamatta mitään. Lue jokainen tulos ennen jatkamista, koska jokainen vastaus sulkee pois eri korjauksen.
uname -r
ls -l /lib/modules/$(uname -r)/build
modinfo wireguard
lsmod | grep wireguard
Jos toinen rivi ilmoittaa, ettei polkua ole, käynnissä olevan ytimen rakennusympäristö puuttuu, eikä mikään kääntämäsi vastaa sitä. Jos modinfo epäonnistuu polun ollessa olemassa, moduulia ei ehkä ole asennettu lainkaan, mikä on normaalia ytimissä, jotka toimittavat toteutuksen puun sisällä. Jos modinfo onnistuu ja lsmod ei näytä mitään, moduuli on olemassa mutta sitä ei ole ladattu, mikä on lataus- eikä rakennusongelma. Jokainen tulos vie sinut eri paikkaan, siksi lukeminen on tärkeämpää kuin komennot.
Rakenna käynnissä olevaa versiota vasten
Ulkoinen moduuli käännetään valmisteltua ydinputta vasten, ja ytimen opas ulkoisista moduuleista kuvaa käynnissä olevaan ytimeen kuuluvan rakennushakemiston käyttöä sen hakemiston sijaan, jossa on korkein versionumero. Tuo rakennushakemisto on ydinpaketin ylläpitämä symbolinen linkki, joten se osoittaa parhaillaan käynnistetyn version puuhun. Epäsuoruus on juuri pointti: se poistaa valinnan, jonka muuten tekisit väärin. Sen nimeäminen selvästi tekee kohteesta yksiselitteisen.
Yksi yksityiskohta merkitsee, kun puu on vain valmisteltu eikä täysin rakennettu. Valmistelutavoite ei tuota symbolien versiointitiedostoa, jota jotkin ulkoiset rakennukset tarvitsevat, joten otsikoita täynnä oleva puu ei ole automaattisesti täydellinen rakennusympäristö. Jos rakennus epäonnistuu puuttuvien symbolien vuoksi, tuo tiedosto on ensimmäinen paikka katsoa.
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
Kun paketoidut otsikot laahaavat
Jakeluissa ja yhden piirilevyn tietokoneissa, jotka paketoivat omat ytimensä, otsikot voivat jäädä päiviä tai viikkoja versiosta jälkeen. Otsikkopaketti voi olla nimeltään oikea ja sisällöltään vanhempi, mikä tuottaa rakennuksen, joka kääntyy ja epäonnistuu sitten latauksessa eikä käännöksen aikana. Lähteiden sekoittaminen pahentaa sitä: jakelun ydin kolmannen osapuolen tietovaraston otsikoilla tai valmistajan ydin yleisillä otsikoilla voi kääntyä puhtaasti ja silti käynnissä oleva ydin hylkää sen, koska kokoonpano eroaa. Pelkät versionumerot eivät ratkaise sitä.
Jos kone seuraa kokeellista ydinkanavaa, päätä tietoisesti, jäätkö sinne vastaavien rakennustuotteiden kanssa vai palaatko tuettuun pakettijoukkoon. Päivityksen toistaminen ja toive siitä, että palaset osuvat yhteen, ei ole suunnitelma, koska sama yhteensopimattomuus toistuu joka kerta.
Tarkista liitäntä uudelleenrakennuksen jälkeen
Onnistuneen asennuksen jälkeen liitännän luominen on se testi, jolla on merkitystä, ja sen jälkeen luetaan, mitä ydin todella latasi ja mitä loki sanoo, jos se kieltäytyi. Latautuva moduuli ja liitäntä, jota ei voi luoda, ovat erilaisia vikoja, joilla on eri syyt. Kolme alla olevaa komentoa erottavat ne.
sudo ip link add wg9 type wireguard
lsmod | grep wireguard
sudo dmesg | tail -5
Jos moduuli kieltäytyy latautumasta, ytimen loki kertoo syyn, ja versioiden yhteensopimattomuus on vain yksi mahdollisuus. Lue tuo rivi ennen uudelleenrakennusta, koska toinen samanlainen rakennus kuluttaa samat kymmenen minuuttia ja antaa saman kieltäytymisen. Poista sitten väliaikainen liitäntä, jotta seuraava testi alkaa puhtaasta tilasta.