TomL hat geschrieben:weedy hat geschrieben:Also ich habe auf meinem System gerade folgendes ausprobiert:
umount -av -O _netdev ... es wurden alle netzlaufwerke ge-umountet
mount -av -O _netdev ... es wurden alle netzlaufwerke gemountet
Äh, wie testet man denn umount in der bootphase? Du überrascht mich wirklich ...
Und das das zur Laufzeit ohne Fehlermeldung klappt, ist doch selbstverständlich... das Netzwerk ist verfügbar, _netdev wird hier und bei cifs ebenfalls ignoriert.
Es ist völlig egal, ob irgendein Dateisystem die Option _netdev kennt, genaugenommen wäre es sogar semantisch falsch, wenn irgendein Dateisystem _netdev kennen würde, denn _netdev richtet sich an mount zur Interpretation der Datei /etc/fstab.
Aber mount selber berücksichtigt _netdev, so, wie es sein soll.
Deswegen ist es völlig unerheblich, ob cifs _netdev kennt oder nicht. mount muss es kennen! Und das tut es:
Code: Alles auswählen
/*
* userspace mount option (built-in MNT_USERSPACE_MAP)
*/
static const struct libmnt_optmap userspace_opts_map[] =
{
{ "defaults", 0, 0 }, /* default options */
{ "auto", MNT_MS_NOAUTO, MNT_NOHLPS | MNT_INVERT | MNT_NOMTAB }, /* Can be mounted using -a */
{ "noauto", MNT_MS_NOAUTO, MNT_NOHLPS | MNT_NOMTAB }, /* Can only be mounted explicitly */
{ "user[=]", MNT_MS_USER }, /* Allow ordinary user to mount (mtab) */
{ "nouser", MNT_MS_USER, MNT_INVERT | MNT_NOMTAB }, /* Forbid ordinary user to mount */
{ "users", MNT_MS_USERS, MNT_NOMTAB }, /* Allow ordinary users to mount */
{ "nousers", MNT_MS_USERS, MNT_INVERT | MNT_NOMTAB }, /* Forbid ordinary users to mount */
{ "owner", MNT_MS_OWNER, MNT_NOMTAB }, /* Let the owner of the device mount */
{ "noowner", MNT_MS_OWNER, MNT_INVERT | MNT_NOMTAB }, /* Device owner has no special privs */
{ "group", MNT_MS_GROUP, MNT_NOMTAB }, /* Let the group of the device mount */
{ "nogroup", MNT_MS_GROUP, MNT_INVERT | MNT_NOMTAB }, /* Device group has no special privs */
/*
* Note that traditional init scripts assume the _netdev option in /etc/mtab to
* umount network block devices on shutdown.
*/
{ "_netdev", MNT_MS_NETDEV }, /* Device requires network */
...
(optmap.c, libmount)
Dennoch berücksichtigt der Bootvorgang _netdev in dem Sinne, dass Netzlaufwerke zu einem anderen Zeitpunkt (wie ich es oben bereits erklärte) mountet. Insbesondere werden Netzlaufwerke erst dann gemountet, wenn eine Bedingung erfüllt ist, nämlich die, dass das Netzwerk im lokalen Rechner verfügbar ist.
Leider aber erfolgt auf meinem System das mounten der Netzlaufwerke (durch mount -n -O _netdev) implizit bei vorhandensein des Netzwerks, so dass keine weitere Bedingungen im systemd-Stil angegeben werden können, um die Netzlaufwerke zu mounten.
Also ist der Schritt des mountens von Netzlaufwerken nicht separierbar und nicht korrigierbar im systemd-Stil.
Nun könnte es ja sein (was ich mal annehme), dass systemd das wiederholte starten eines Dienstes erlaubt, bis es endlich geglückt ist, oder auch, dass man weitere Bedingungen mit in ein moeglicherweise vorhandenen systemd-dienst einfuegt, der sich ausschliesslich um das mounten von Netzlaufwerken kümmert, aber derzeit ist mein System nicht so aufgebaut und ich habe ehrlichgesagt bedenken, dass eine Modifikation von meiner Seite (ich muesste dazu einen Dienst einrichten und das ifup-Script ggf. modifizieren) zu einer Kollision mit der Systemverwaltung des Debian Paket Managers führt.
Deswegen fragte ich ganz zu beginn, ob es vieleicht eine einfachere Lösung gibt.
Die könnte es natürlich geben, wenn ein Paket existieren würde, welches so einen Dienst zur Verfügung stellt, welcher entweder nach Prüfung weiterer Vorbedingungen oder wiederholend oder beides den 'mount -a -O ...' Befehl absetzt.
Aber wie schon gesagt, ich nehme an, dass eine solche Lösung nicht existiert, also muss ich mich kümmern.
Gruß