systemctl ütleb, et systemd ei ole PID 1: mis siis edasi?
PID 1 teade puudutab keskkonda, mitte OpenVPN-i. Kontrollige, mis töötab PID 1-na, lubage systemd seal, kus seda toetatakse, ja lugege seejärel tegelikku viga.
Kui systemctl start openvpn-client@office käivitada ja saada teade, et süsteemi ei alglaaditud systemd-iga, tundub see teenuse tõrkena. See ei ole üldse teenuse tõrge: systemctl, mille te välja kutsusite, ei leia jooksvat haldurit, kellega rääkida, seega ei uuritud OpenVPN-i kohta midagi. sudo ei loo haldurit ja ka unit-faili paigaldamine ei loo seda. Käsk ja masin pärinevad kahest erinevast maailmast ning viga on ainus koht, kus see välja tuli.
Alustage küsimusega, milline protsess omab PID 1-te seal, kus käsk jookseb, sest see vastus otsustab, kas unitid üldse olemas on.
Viga nimetab keskkonda, mitte OpenVPN-i
systemctl on klient, mitte haldur. See ühendub süsteemihalduriga sokli kaudu ja kui teises otsas haldurit ei ole, trükib ta teate, mille inimesed foorumitesse kleepimiseks kopeerivad. ps -p 1 -o pid=,comm= näitab, mis tegelikult töötab PID 1-na, ja vastuseks on sageli shell, init-kate või konteineri enda sisenemispunkt. Sellises olukorras võib unit-fail olla täiesti korrektne ja ikkagi mitte kunagi läbi loetud. Käsu kordamine root-kasutajana muudab ainult kliendi volitusi.
Lugege kogu teade enne esimest rida läbi. Halduri enda viga, näiteks puuduv unit või ebaõnnestunud tingimus, tähendab, et te jõudsime haldurini; see viga tähendab, et ei jõudnud.
WSL: systemd-i sisselülitamine on konfiguratsiooni muudatus
WSL sai systemd-toe hilisemates versioonides, kuid funktsioon lülitatakse sisse iga distributsiooni kohta eraldi ja ainult seal, kus paigaldatud WSL-i versioon seda toetab. wsl --version Windowsi poolel näitab, mis teil on, ja distributsiooni /etc/wsl.conf sisaldab [boot] jaotist koos systemd=true. Muutke seda faili, ilma et eemaldaksite juba olemasolevad jaotised, seejärel taaskäivitage WSL-i eksemplar, et muudatus jõustuks. wsl --shutdown peatab kõik jooksvad distributsioonid, seega salvestage esmalt oma töö.
Pärast uuesti avamist kinnitage haldur enne OpenVPN-i uniti puutumist: ps -p 1 -o comm= peaks kuvama systemd. systemd-i sisselülitamine ei anna profiili, volitusi ega eksemplari nime, seega puudutab järgmine viga ühte neist, mitte PID 1.
Konteinerid käivitavad oma sisenemispunkti, mitte uniteid
Tavaline konteiner käivitab selle, mille määrab tema sisenemispunkt või käsk, ja see ei ole systemd-iga alglaaditud masin, ükskõik milliseid pakette te paigaldate. Kui lisate systemctl kujutisele, saate kliendi, millel pole millegagi ühenduda. Community OpenVPN-i puhul on toetatud muster tavaliselt esiplaanil töötav protsess, openvpn --config /path/to/client.conf, mille käivitab sisenemispunkt ja mida jälgitakse väljastpoolt. See omanik tegeleb käivitamise, signaalide ja sulgemisega ning peaks olema ainus, mis tunnelit haldab.
Ärge kunagi käivitage interaktiivset koopiat selle sisenemispunkti kõrval, mis juba seda tunnelit haldab, sest kaks protsessi hakkavad võitlema seadme ja marsruutide pärast. Minimaalne init-protsess konteineri sees koristab lapsprotsessid ja edastab signaale; see ei muuda kujutist hostiks, kus on unitid.
Kui juurutus vajab tõesti systemd-i konteineri sees, vajab see selleks teadlikult kavandatud kujutist, mitte lisaprivileege, mida lisatakse seni, kuni systemctl lõpetab kurtmise.
Lugege järgmist viga, kui haldur on olemas
Niipea kui tõeline haldur teenuse käivitab, algavad kasulikud vead. Seadme õiguste tõrge, konfiguratsiooni parsimise viga, puuduv volitus ja kättesaamatu partner on neli erinevat probleemi, mida PID 1 teade kunagi ei testinud. Lugege neid selles järjekorras, milles unit need tekitas, kasutades journalctl -u openvpn-client@office -n 50 systemd-hostis või käivitades klienti esiplaanil seal, kus haldurit ei ole. Esiplaanil käivitamine on ka kiireim viis kinnitada, et profiil ise töötab.
Hoidke need kaks keskkonda märkmetes eraldi: host, mis tunnelit käitab, ja koht, kus te käske tipite.