Portál AbcLinuxu, 30. dubna 2025 15:09
Tento problém se podle bugu #336627 vyskytuje ve spojitosti s přítomností NFS svazů v souboru /etc/fstab
. Podle diskuse k bugu je zatím jediným řešením odstranit NFS svazky z /etc/fstab
, ale co když je potřebuji a chci, aby se mountovaly automaticky při startu systému?
Nejjednodušším řešením, které ale není funkční, je přidat své NFS mounty příkazy do /etc/init.d/boot.local
. Problémem je zde fakt, že /etc/init.d/boot.local
se zpracovává dříve, nežli se inicializuje /etc/init.d/network
, tudíž k připojení NFS svazků nedojde. Je tedy třeba napsat si vlastní skript pro mountování NFS a zařídit, aby jej init
volal ve správnou chvíli.
Mountovací skript
Nazvěme jej například /etc/init.d/nfsmounts
. Soubor je třeba samozřejmě vytvářet pod rootem a po jeho vytvoření mu dát spustitelný atribut. Obsah skriptu pak může být nějaký následující:
#! /bin/sh
### BEGIN INIT INFO
# Provides: nfsmounts
# Required-Start: network nfs
# Default-Start: 5
# Default-Stop: 0 6
# Description: workaround for NFS mounts bug in openSUSE 10.3
# Source: https://bugzilla.novell.com/show_bug.cgi?id=336627
### END INIT INFO
case "$1" in
start)
echo "Mounting NFS mountpoints."
mount server:/mnt/data /mnt/server1 -t nfs -o ro
mount server:/mnt/data /mnt/server2 -t nfs -o ro
echo "Done."
;;
stop)
echo "Unmounting NFS mountpoints."
umount /mnt/server1
umount /mnt/server2
echo "Done."
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
Ano, tento skript by jistě šel napsat mnohem lépe, ale nejsem žádný skriptovací bůh a i základní kostra skriptu je vykradená z jiného . Na základní funkci ale postačuje - lze jeho pomocí mountovat, odmountovávat i remountovat NFS svazky a vypíše co zrovna dělá a kdy tuto činnost ukončí. Pravda, bylo by možné doplnit ještě různá ošetření chyb. Každý dobrý návrh v komentářích vítám
Spouštění a zastavování
Dejme tomu, že skript chceme spouštět při vstupu systému do runlevelu 5. Pak je třeba vytvořit v adresáři /etc/init.d/rc5.d
dva symbolické linky na tento skript, jeden se jménem K21nfsmounts
a druhý S21nfsmounts
. A jako poslední úpravu je ještě třeba upravit soubory /etc/init.d/.depend.start
a /etc/init.d/.depend.stop
. Do těchto souborů pak stačí shodně přidat na konec řádku
nfsmounts: network nfs
a přidat položku
nfsmounts
do titulního řádku TARGET=
... někam mezi položky ke konci řádky.
Disclaimer
Je možné, že to, co bylo uvedeno výše není provedeno naprosto profesionálně, ani naprosto korektně. Nicméně postup funguje a provozuji ho na své openSUSE 10.3. Samozřejmě detaily se mohou distribuci od distribuce měnit. Jinak kdyby měl někdo nějaký lepší nápad jak podobnou věc zařídit, sem s ním.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.