mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-17 18:06:59 +02:00
net-fs/nfs-utils: Apply Flatcar modifications
- Add the tmpfiles configuration for populating /var - Add service compatibility symlinks (maybe time to drop them) - Drop moving a binary from /usr/sbin to /sbin - Drop populating /etc and /var - Drop pkg_postinst
This commit is contained in:
parent
63490fac0c
commit
e2c80f8dea
@ -1 +0,0 @@
|
||||
# /etc/exports: NFS file systems being exported. See exports(5).
|
@ -1,38 +0,0 @@
|
||||
# /etc/conf.d/nfs
|
||||
|
||||
# If you wish to set the port numbers for lockd,
|
||||
# please see /etc/sysctl.conf
|
||||
|
||||
# Optional services to include in default `/etc/init.d/nfs start`
|
||||
# For NFSv4 users, you'll want to add "rpc.idmapd" here.
|
||||
NFS_NEEDED_SERVICES=""
|
||||
|
||||
# Options to pass to rpc.nfsd
|
||||
OPTS_RPC_NFSD="8"
|
||||
|
||||
# Options to pass to rpc.mountd
|
||||
# ex. OPTS_RPC_MOUNTD="-p 32767"
|
||||
OPTS_RPC_MOUNTD=""
|
||||
|
||||
# Options to pass to rpc.statd
|
||||
# ex. OPTS_RPC_STATD="-p 32765 -o 32766"
|
||||
OPTS_RPC_STATD=""
|
||||
|
||||
# Options to pass to rpc.idmapd
|
||||
OPTS_RPC_IDMAPD=""
|
||||
|
||||
# Options to pass to rpc.gssd
|
||||
OPTS_RPC_GSSD=""
|
||||
|
||||
# Options to pass to rpc.svcgssd
|
||||
OPTS_RPC_SVCGSSD=""
|
||||
|
||||
# Options to pass to rpc.rquotad (requires sys-fs/quota)
|
||||
OPTS_RPC_RQUOTAD=""
|
||||
|
||||
# Timeout (in seconds) for exportfs
|
||||
EXPORTFS_TIMEOUT=30
|
||||
|
||||
# Options to set in the nfsd filesystem (/proc/fs/nfsd/).
|
||||
# Format is <option>=<value>. Multiple options are allowed.
|
||||
#OPTS_NFSD="nfsv4leasetime=30 max_block_size=4096"
|
@ -1,162 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
extra_started_commands="reload"
|
||||
|
||||
# This variable is used for controlling whether or not to run exportfs -ua;
|
||||
# see stop() for more information
|
||||
restarting=no
|
||||
|
||||
# The binary locations
|
||||
exportfs=/usr/sbin/exportfs
|
||||
mountd=/usr/sbin/rpc.mountd
|
||||
nfsd=/usr/sbin/rpc.nfsd
|
||||
smnotify=/usr/sbin/sm-notify
|
||||
|
||||
depend() {
|
||||
local myneed=""
|
||||
# XXX: no way to detect NFSv4 is desired and so need rpc.idmapd
|
||||
myneed="${myneed} $(
|
||||
awk '!/^[[:space:]]*#/ {
|
||||
# clear the path to avoid spurious matches
|
||||
$1 = "";
|
||||
if ($0 ~ /[(][^)]*sec=(krb|spkm)[^)]*[)]/) {
|
||||
print "rpc.svcgssd"
|
||||
exit 0
|
||||
}
|
||||
}' /etc/exports /etc/exports.d/*.exports 2>/dev/null
|
||||
)"
|
||||
config /etc/exports /etc/exports.d/*.exports
|
||||
need portmap rpc.statd ${myneed} ${NFS_NEEDED_SERVICES}
|
||||
use ypbind net dns rpc.rquotad rpc.idmapd rpc.svcgssd
|
||||
after quota
|
||||
}
|
||||
|
||||
mkdir_nfsdirs() {
|
||||
local d
|
||||
for d in v4recovery v4root ; do
|
||||
d="/var/lib/nfs/${d}"
|
||||
[ ! -d "${d}" ] && mkdir -p "${d}"
|
||||
done
|
||||
}
|
||||
|
||||
waitfor_exportfs() {
|
||||
local pid=$1
|
||||
( sleep ${EXPORTFS_TIMEOUT:-30}; kill -9 ${pid} 2>/dev/null ) &
|
||||
wait $1
|
||||
}
|
||||
|
||||
mount_nfsd() {
|
||||
if [ -e /proc/modules ] ; then
|
||||
# Make sure nfs support is loaded in the kernel #64709
|
||||
if ! grep -qs nfsd /proc/filesystems ; then
|
||||
modprobe -q nfsd
|
||||
fi
|
||||
# Restart idmapd if needed #220747
|
||||
if grep -qs nfsd /proc/modules ; then
|
||||
killall -q -HUP rpc.idmapd
|
||||
fi
|
||||
fi
|
||||
|
||||
# This is the new "kernel 2.6 way" to handle the exports file
|
||||
if grep -qs nfsd /proc/filesystems ; then
|
||||
if ! mountinfo -q /proc/fs/nfsd ; then
|
||||
ebegin "Mounting nfsd filesystem in /proc"
|
||||
mount -t nfsd -o nodev,noexec,nosuid nfsd /proc/fs/nfsd
|
||||
eend $?
|
||||
fi
|
||||
|
||||
local o
|
||||
for o in ${OPTS_NFSD} ; do
|
||||
echo "${o#*=}" > "/proc/fs/nfsd/${o%%=*}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
start_it() {
|
||||
ebegin "Starting NFS $1"
|
||||
shift
|
||||
"$@"
|
||||
eend $?
|
||||
ret=$((ret + $?))
|
||||
}
|
||||
start() {
|
||||
mount_nfsd
|
||||
mkdir_nfsdirs
|
||||
|
||||
# Exportfs likes to hang if networking isn't working.
|
||||
# If that's the case, then try to kill it so the
|
||||
# bootup process can continue.
|
||||
if grep -qs '^[[:space:]]*/' /etc/exports /etc/exports.d/*.exports ; then
|
||||
ebegin "Exporting NFS directories"
|
||||
${exportfs} -r &
|
||||
waitfor_exportfs $!
|
||||
eend $?
|
||||
fi
|
||||
|
||||
local ret=0
|
||||
start_it mountd ${mountd} ${OPTS_RPC_MOUNTD}
|
||||
start_it daemon ${nfsd} ${OPTS_RPC_NFSD}
|
||||
[ -x "${smnotify}" ] && start_it smnotify ${smnotify} ${OPTS_SMNOTIFY}
|
||||
return ${ret}
|
||||
}
|
||||
|
||||
stop() {
|
||||
local ret=0
|
||||
|
||||
ebegin "Stopping NFS mountd"
|
||||
start-stop-daemon --stop --exec ${mountd}
|
||||
eend $?
|
||||
ret=$((ret + $?))
|
||||
|
||||
# nfsd sets its process name to [nfsd] so don't look for $nfsd
|
||||
ebegin "Stopping NFS daemon"
|
||||
start-stop-daemon --stop --name nfsd --user root --signal 2
|
||||
eend $?
|
||||
ret=$((ret + $?))
|
||||
# in case things don't work out ... #228127
|
||||
rpc.nfsd 0
|
||||
|
||||
# When restarting the NFS server, running "exportfs -ua" probably
|
||||
# isn't what the user wants. Running it causes all entries listed
|
||||
# in xtab to be removed from the kernel export tables, and the
|
||||
# xtab file is cleared. This effectively shuts down all NFS
|
||||
# activity, leaving all clients holding stale NFS filehandles,
|
||||
# *even* when the NFS server has restarted.
|
||||
#
|
||||
# That's what you would want if you were shutting down the NFS
|
||||
# server for good, or for a long period of time, but not when the
|
||||
# NFS server will be running again in short order. In this case,
|
||||
# then "exportfs -r" will reread the xtab, and all the current
|
||||
# clients will be able to resume NFS activity, *without* needing
|
||||
# to umount/(re)mount the filesystem.
|
||||
if [ "${restarting}" = no -o "${RC_CMD}" = "restart" ] ; then
|
||||
ebegin "Unexporting NFS directories"
|
||||
# Exportfs likes to hang if networking isn't working.
|
||||
# If that's the case, then try to kill it so the
|
||||
# shutdown process can continue.
|
||||
${exportfs} -ua &
|
||||
waitfor_exportfs $!
|
||||
eend $?
|
||||
fi
|
||||
|
||||
return ${ret}
|
||||
}
|
||||
|
||||
reload() {
|
||||
# Exportfs likes to hang if networking isn't working.
|
||||
# If that's the case, then try to kill it so the
|
||||
# bootup process can continue.
|
||||
ebegin "Reloading /etc/exports"
|
||||
${exportfs} -r 1>&2 &
|
||||
waitfor_exportfs $!
|
||||
eend $?
|
||||
}
|
||||
|
||||
restart() {
|
||||
# See long comment in stop() regarding "restarting" and exportfs -ua
|
||||
restarting=yes
|
||||
svc_stop
|
||||
svc_start
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
# You need to decide which nfs protocol version you want to use.
|
||||
# If you are unsure, leave these alone.
|
||||
#
|
||||
# If you are using only nfsv4, uncomment this line:
|
||||
#
|
||||
#rc_need="!rpc.statd"
|
||||
#
|
||||
# If you are using only nfsv3, uncomment this line:
|
||||
#
|
||||
#rc_need="!rpc.idmapd"
|
||||
#
|
||||
# You will need to set the dependencies in the nfsclient script to match
|
||||
# the network configuration tools you are using. This should be done in
|
||||
# this file by following the examples below, and not by changing the
|
||||
# service script itself. See /etc/conf.d/netmount for more examples.
|
||||
#
|
||||
# This is a safe default.
|
||||
rc_after="net"
|
@ -1,33 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
|
||||
|
||||
depend() {
|
||||
local opts myneed=""
|
||||
if [ -e /etc/fstab ] ; then
|
||||
for opts in $(fstabinfo -o -t nfs,nfs4) ; do
|
||||
case $opts in
|
||||
*sec=krb*|*sec=spkm*) myneed="$myneed rpc.gssd" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
config /etc/fstab
|
||||
need portmap rpc.statd rpc.idmapd ${myneed}
|
||||
use ypbind dns
|
||||
}
|
||||
|
||||
start() {
|
||||
if [ -x /usr/sbin/sm-notify ] ; then
|
||||
ebegin "Starting NFS sm-notify"
|
||||
/usr/sbin/sm-notify ${OPTS_SMNOTIFY}
|
||||
eend $?
|
||||
fi
|
||||
|
||||
# Make sure nfs support is loaded in the kernel #64709
|
||||
if [ -e /proc/modules ] && ! grep -qs 'nfs$' /proc/filesystems ; then
|
||||
modprobe -q nfs
|
||||
fi
|
||||
return 0
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
# You will need to set the dependencies in the nfsmount script to match
|
||||
# the network configuration tools you are using. This should be done in
|
||||
# this file by following the examples below, and not by changing the
|
||||
# service script itself. See /etc/conf.d/netmount for more examples.
|
||||
#
|
||||
# This is a safe default.
|
||||
rc_after="net"
|
@ -1,26 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
# This is mostly as a fix for bug #537996, to avoid breaking existing users
|
||||
# with nfsmount in their runlevels.
|
||||
# If neither nfsclient nor netmount are in your runlevels, and you manually
|
||||
# start netmount before nfsclient, then this will break. A real solution is
|
||||
# forthcoming, but requires feature development, see bug #406021 for soft
|
||||
# dependencies
|
||||
depend() {
|
||||
need nfsclient netmount
|
||||
}
|
||||
|
||||
msg() {
|
||||
ewarn "nfsmount is deprecated, please migrate as described in the news item: 2015-02-02-nfs-service-changes"
|
||||
ewarn "This migration script will be removed after 01 Aug 2015."
|
||||
}
|
||||
|
||||
start() {
|
||||
msg
|
||||
}
|
||||
|
||||
stop() {
|
||||
msg
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2008 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
|
||||
|
||||
depend() {
|
||||
use ypbind net
|
||||
need portmap rpc.pipefs
|
||||
after quota
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting gssd"
|
||||
start-stop-daemon --start --exec /usr/sbin/rpc.gssd -- ${OPTS_RPC_GSSD}
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping gssd"
|
||||
start-stop-daemon --stop --exec /usr/sbin/rpc.gssd
|
||||
eend $?
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2008 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
|
||||
|
||||
rpc_bin=/usr/sbin/rpc.idmapd
|
||||
|
||||
depend() {
|
||||
use ypbind net
|
||||
need portmap rpc.pipefs
|
||||
after quota
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting idmapd"
|
||||
${rpc_bin} ${OPTS_RPC_IDMAPD}
|
||||
eend $? "make sure DNOTIFY support is enabled ..."
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping idmapd"
|
||||
start-stop-daemon --stop --exec ${rpc_bin}
|
||||
eend $?
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
MNT="/var/lib/nfs/rpc_pipefs"
|
||||
|
||||
mount_pipefs() {
|
||||
local fstype=rpc_pipefs
|
||||
|
||||
# if things are already mounted, nothing to do
|
||||
mountinfo -q ${MNT} && return 0
|
||||
|
||||
# if rpc_pipefs is not available, try to load sunrpc for it #219566
|
||||
grep -qs ${fstype} /proc/filesystems || modprobe -q sunrpc
|
||||
# if still not available, the `mount` will issue an error for the user
|
||||
|
||||
# now just do it for kicks
|
||||
mkdir -p ${MNT}
|
||||
mount -t ${fstype} ${fstype} ${MNT}
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Setting up RPC pipefs"
|
||||
mount_pipefs
|
||||
eend $? "make sure you have NFS/SUNRPC enabled in your kernel"
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Unmounting RPC pipefs"
|
||||
umount ${MNT}
|
||||
eend $?
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
|
||||
|
||||
rpc_bin=/sbin/rpc.statd
|
||||
rpc_pid=/var/run/rpc.statd.pid
|
||||
|
||||
depend() {
|
||||
use ypbind net
|
||||
need portmap
|
||||
after quota
|
||||
}
|
||||
|
||||
start() {
|
||||
# Don't start rpc.statd if already started by someone else ...
|
||||
# Don't try and kill it if it's already dead ...
|
||||
if killall -q -0 ${rpc_bin} ; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
ebegin "Starting NFS statd"
|
||||
start-stop-daemon --start --exec ${rpc_bin} -- --no-notify ${OPTS_RPC_STATD}
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping NFS statd"
|
||||
start-stop-daemon --stop --exec ${rpc_bin} --pidfile /var/run/rpc.statd.pid
|
||||
eend $?
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2008 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
|
||||
|
||||
depend() {
|
||||
use ypbind net
|
||||
need portmap rpc.pipefs
|
||||
after quota
|
||||
}
|
||||
|
||||
start() {
|
||||
ebegin "Starting svcgssd"
|
||||
start-stop-daemon --start --exec /usr/sbin/rpc.svcgssd -- ${OPTS_RPC_SVCGSSD}
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping svcgssd"
|
||||
start-stop-daemon --stop --exec /usr/sbin/rpc.svcgssd
|
||||
eend $?
|
||||
}
|
@ -3,7 +3,8 @@
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit autotools flag-o-matic multilib systemd
|
||||
TMPFILES_OPTIONAL=1
|
||||
inherit autotools flag-o-matic multilib systemd tmpfiles
|
||||
|
||||
DESCRIPTION="NFS client and server daemons"
|
||||
HOMEPAGE="http://linux-nfs.org/"
|
||||
@ -120,10 +121,6 @@ src_install() {
|
||||
keepdir /var/lib/nfs/{,sm,sm.bak}
|
||||
mv "${ED%/}"/var/lib/nfs "${ED%/}"/usr/$(get_libdir)/ || die
|
||||
|
||||
# Install some client-side binaries in /sbin
|
||||
dodir /sbin
|
||||
mv "${ED%/}"/usr/sbin/rpc.statd "${ED%/}"/sbin/ || die
|
||||
|
||||
if use nfsv4 && use nfsidmap ; then
|
||||
# Install a config file for idmappers in newer kernels. #415625
|
||||
insinto /etc/request-key.d
|
||||
@ -131,58 +128,13 @@ src_install() {
|
||||
doins id_resolver.conf
|
||||
fi
|
||||
|
||||
insinto /etc
|
||||
doins "${FILESDIR}"/exports
|
||||
keepdir /etc/exports.d
|
||||
dotmpfiles "${FILESDIR}"/nfs-utils.conf
|
||||
|
||||
local f list=() opt_need=""
|
||||
if use nfsv4 ; then
|
||||
opt_need="rpc.idmapd"
|
||||
list+=( rpc.idmapd rpc.pipefs )
|
||||
use kerberos && list+=( rpc.gssd rpc.svcgssd )
|
||||
fi
|
||||
for f in nfs nfsclient rpc.statd "${list[@]}" ; do
|
||||
newinitd "${FILESDIR}"/${f}.initd ${f}
|
||||
done
|
||||
newinitd "${FILESDIR}"/nfsmount.initd-1.3.1 nfsmount # Nuke after 2015/08/01
|
||||
for f in nfs nfsclient ; do
|
||||
newconfd "${FILESDIR}"/${f}.confd ${f}
|
||||
done
|
||||
sed -i \
|
||||
-e "/^NFS_NEEDED_SERVICES=/s:=.*:=\"${opt_need}\":" \
|
||||
"${ED%/}"/etc/conf.d/nfs || die #234132
|
||||
|
||||
local systemd_systemunitdir="$(systemd_get_systemunitdir)"
|
||||
sed -i \
|
||||
-e 's:/usr/sbin/rpc.statd:/sbin/rpc.statd:' \
|
||||
"${ED%/}${systemd_systemunitdir}"/* || die
|
||||
|
||||
keepdir /var/lib/nfs #368505
|
||||
keepdir /var/lib/nfs/v4recovery #603628
|
||||
# Provide an empty xtab for compatibility with the old tmpfiles config.
|
||||
touch "${ED%/}"/usr/$(get_libdir)/nfs/xtab
|
||||
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Install default xtab and friends if there's none existing. In
|
||||
# src_install we put them in /usr/lib/nfs for safe-keeping, but
|
||||
# the daemons actually use the files in /var/lib/nfs. #30486
|
||||
local f
|
||||
for f in "${EROOT%/}"/usr/$(get_libdir)/nfs/*; do
|
||||
[[ -e ${EROOT%/}/var/lib/nfs/${f##*/} ]] && continue
|
||||
einfo "Copying default ${f##*/} from ${EPREFIX}/usr/$(get_libdir)/nfs to ${EPREFIX}/var/lib/nfs"
|
||||
cp -pPR "${f}" "${EROOT%/}"/var/lib/nfs/
|
||||
done
|
||||
|
||||
if systemd_is_booted; then
|
||||
if [[ ${REPLACING_VERSIONS} < 1.3.0 ]]; then
|
||||
ewarn "We have switched to upstream systemd unit files. Since"
|
||||
ewarn "they got renamed, you should probably enable the new ones."
|
||||
ewarn "You can run 'equery files nfs-utils | grep systemd'"
|
||||
ewarn "to know what services you need to enable now."
|
||||
fi
|
||||
else
|
||||
ewarn "If you use OpenRC, the nfsmount service has been replaced with nfsclient."
|
||||
ewarn "If you were using nfsmount, please add nfsclient and netmount to the"
|
||||
ewarn "same runlevel as nfsmount."
|
||||
fi
|
||||
# Maintain compatibility with the old gentoo systemd unit names, since nfs-utils has units upstream now.
|
||||
dosym nfs-server.service "$(systemd_get_systemunitdir)"/nfsd.service
|
||||
dosym nfs-idmapd.service "$(systemd_get_systemunitdir)"/rpc-idmapd.service
|
||||
dosym nfs-mountd.service "$(systemd_get_systemunitdir)"/rpc-mountd.service
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user