Saya mencoba mengatur layanan baru (di bawah Debian Jessie) yang perlu mengatur beberapa mount di mana konfigurasi jaringan disimpan dan dengan demikian layanan ini harus selesai sebelum jaringan. Layanan dimulai.
Saya mencoba yang berikut ini:
[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
#Before=network-pre.target
Before=networking.service
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=networking.service
Menggunakan systemd-analyze plot
Saya dapat melihat bahwa layanan saya mulai, tetapi networking.service
mulai sekitar 3 detik sebelumnya:
Rupanya konfigurasi saya salah, tetapi saya kesulitan menemukan masalahnya ... Bantuan apa pun sangat dihargai ..
Memperbarui
Saya saat ini menyelesaikannya dengan mengubah konfigurasi layanan untuk memulai sebelum local-fs.target
bukannya networking.service
:
[Unit]
DefaultDependencies=no
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
Before=local-fs.target
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=local-fs.target
Namun, saya ingin memahami mengapa konfigurasi pertama saya tidak berfungsi seperti yang diharapkan ...?
/etc/network/interfaces
memiliki referensi keip-up
skrip yang berada di partisi lain. Partisi itu dipasang oleh skrip kompleks/opt/intermodul-mounts/start.sh
yang harus dijalankan sebelum jaringan sedang diatur. Saat ini,ip-up
skrip secara efektif tidak dimulai karena mereka tidak dapat diakses saat boot. Menjalankanservice networking restart
setelah itu menampilkan semua antarmuka dengan benar.Jawaban:
Anda ingin menggunakan
network-pre.target
jika Anda ingin mengatur sesuatu sebelum jaringan dimulaiAnda harus meletakkan ini di bawah
[Unit]
bagian:Referensi
sumber
systemctl is-enabled <unit>
selalustatic
. Tentu saja, saya tidak dapat mengaktifkannya karena tidak adaWantedBy=
. Lagi pula, apa yang diinginkannya? Ini adalah sesuatu yang melakukan beberapa pengaturan sebelum jaringan memuat.Before=network-pre.target
danWants=network-pre.target
dan untuk[Install]
kami lakukanWantedBy=network.target
. Bagian terakhir memaksanya diperlukan oleh jaringan, yang pertama mengaturnya. Adalah rasa sakit,Seperti yang dilakukan di Debian Jessie, paket netfilter-persistent (memungkinkan untuk memuat aturan iptables sebelum jaringan menyala) memiliki layanan netfilter-persistent.service yang terlihat seperti:
sumber
shutdown.target
?!Kesalahannya sederhana dan salah satu hal utama yang selalu saya campur: Anda mencampur
Before
danRequiredBy
. Itu tidak berjalan bersama. Yang lain benar tentang target.sumber
Melakukan sesuatu di sepanjang garis ini akan memastikan bahwa unit ini telah berjalan sebelum jaringan, tetapi setelah sebagian besar pengaturan penting lainnya terjadi.
sumber