systemctl kaže da systemd nije PID 1: šta onda?
Poruka o PID 1 tiče se okruženja, a ne OpenVPN-a. Provjerite šta radi kao PID 1, omogućite systemd gdje je podržan i zatim pročitajte pravu grešku.
Pokretanje systemctl start openvpn-client@office i dobijanje poruke da sistem nije dignut sa systemd-om izgleda kao kvar usluge. To nije nikakav kvar usluge: systemctl koji ste pozvali ne može naći pokrenuti menadžer za razgovor, pa ništa o OpenVPN-u nije ni provjereno. sudo ne stvara menadžer, a ni instaliranje unit datoteke ga ne stvara. Naredba i mašina dolaze iz dva različita svijeta, a greška je jedino mjesto gdje se to pokazalo.
Počnite pitanjem koji proces drži PID 1 tamo gdje se naredba izvršava, jer taj odgovor odlučuje postoje li unit datoteke uopšte.
Greška imenuje okruženje, ne OpenVPN
systemctl je klijent, a ne menadžer. Povezuje se sa sistemskim menadžerom preko socketa, i kada na drugoj strani nema menadžera, ispisuje poruku koju ljudi lijepe na forume. ps -p 1 -o pid=,comm= pokazuje šta zapravo radi kao PID 1, a odgovor je često shell, init omotač ili vlastita ulazna tačka kontejnera. U takvoj situaciji unit datoteka može biti potpuno ispravna i ipak nikad ne bude pročitana. Ponavljanje naredbe kao root mijenja samo akreditive klijenta.
Pročitajte cijelu poruku prije prvog reda. Greška samog menadžera, poput unit datoteke koja nedostaje ili neispunjenog uslova, znači da ste do njega stigli; ova greška znači da niste.
WSL: uključivanje systemd-a je promjena konfiguracije
WSL je dobio podršku za systemd u kasnijim izdanjima, ali se funkcija uključuje po distribuciji i samo tamo gdje je podržava instalirana verzija WSL-a. wsl --version na strani Windowsa pokazuje šta imate, a /etc/wsl.conf datoteka distribucije nosi [boot] odjeljak sa systemd=true. Uredite tu datoteku bez uklanjanja odjeljaka koji već postoje, zatim ponovo pokrenite instancu WSL-a da promjena stupi na snagu. wsl --shutdown zaustavlja svaku pokrenutu distribuciju, pa prvo sačuvajte rad.
Nakon ponovnog otvaranja potvrdite menadžer prije nego što dirnete unit datoteku OpenVPN-a: ps -p 1 -o comm= bi trebalo da prikaže systemd. Uključivanje systemd-a ne daje profil, akreditive ni naziv instance, pa će se sljedeća greška ticati jednog od toga, a ne PID 1.
Kontejneri pokreću svoju ulaznu tačku, ne unit datoteke
Normalan kontejner pokreće ono što odredi njegova ulazna tačka ili naredba i nije mašina podignuta sa systemd-om, bez obzira koje pakete instalirate. Dodavanje systemctl u sliku daje vam klijent koji se nema s čim povezati. Za Community OpenVPN podržani obrazac je obično proces u prvom planu, openvpn --config /path/to/client.conf, koji pokreće ulazna tačka i koji se nadzire spolja. Taj vlasnik brine o pokretanju, signalima i zaustavljanju i trebalo bi da bude jedino što upravlja tunelom.
Nikada ne pokrećite interaktivnu kopiju pored ulazne tačke koja već upravlja tim tunelom, jer dva procesa će se boriti za uređaj i rute. Minimalan init proces unutar kontejnera skuplja djecu i prosljeđuje signale; on ne pretvara sliku u host sa unit datotekama.
Ako neko postavljanje zaista treba systemd unutar kontejnera, treba mu namjerno dizajnirana slika, a ne dodatne privilegije koje se dodaju dok systemctl ne prestane da se žali.
Pročitajte sljedeću grešku kad menadžer postoji
Kada pravi menadžer pokrene uslugu, počinju korisne greške. Kvar dozvole za uređaj, greška pri parsiranju konfiguracije, akreditive koje nedostaju i nedostupan peer četiri su različita problema koja poruka o PID 1 nikada nije provjerila. Čitajte ih redom kojim ih je unit proizveo, koristeći journalctl -u openvpn-client@office -n 50 na systemd hostu ili pokretanjem klijenta u prvom planu tamo gdje menadžera nema. Pokretanje u prvom planu je ujedno najbrži način da potvrdite da sam profil radi.
Držite ta dva okruženja odvojeno u svojim bilješkama: host koji pokreće tunel i mjesto gdje kucate naredbe.