[OE-core] [PATCH 1/1] nfs-utils: fix to start nfs-server correctly in systemd

ChenQi Qi.Chen at windriver.com
Wed Jul 8 08:43:17 UTC 2015


On 07/08/2015 04:11 PM, Mike Looijmans wrote:
> On 08-07-15 10:07, Chen Qi wrote:
>> 1. Change RRECOMMENDS to RDEPENDS for kernel-module-nfsd because this 
>> kernel
>>     module is a necessity for nfs server.
>
> No it is not! Like any kernel module, it can be built in, and then 
> there will be no such package, and the package becomes uninstallable.
>
> That is the reason that kernel-module-* dependencies are (almost) 
> always RRECOMMENDS.
>
> Moving this to RDEPENDS will break things on configurations where the 
> module is built in.
>
> (Maybe some day the kernel will RPROVIDE such packages, that would 
> solve it)
>
>
OK. Thanks for explaining it.
I'll change it back and send out V2.

//Chen Qi

>> 2. Add proc-fs-nfsd.mount systemd unit file because it's needed for 
>> nfs server
>>     to start correctly.
>>
>> After this change, in a systemd based image, we can use `systemctl start
>> nfs-server' to start the nfs server and things would work correctly.
>>
>> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>> ---
>>   .../nfs-utils/nfs-utils/proc-fs-nfsd.mount |  8 ++++++++
>>   meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.1.bb       | 12 
>> +++++++++++-
>>   2 files changed, 19 insertions(+), 1 deletion(-)
>>   create mode 100644 
>> meta/recipes-connectivity/nfs-utils/nfs-utils/proc-fs-nfsd.mount
>>
>> diff --git 
>> a/meta/recipes-connectivity/nfs-utils/nfs-utils/proc-fs-nfsd.mount 
>> b/meta/recipes-connectivity/nfs-utils/nfs-utils/proc-fs-nfsd.mount
>> new file mode 100644
>> index 0000000..630801b
>> --- /dev/null
>> +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/proc-fs-nfsd.mount
>> @@ -0,0 +1,8 @@
>> +[Unit]
>> +Description=NFSD configuration filesystem
>> +After=systemd-modules-load.service
>> +
>> +[Mount]
>> +What=nfsd
>> +Where=/proc/fs/nfsd
>> +Type=nfsd
>> diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.1.bb 
>> b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.1.bb
>> index 0bcd65e..fa56c1f 100644
>> --- a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.1.bb
>> +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.1.bb
>> @@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = 
>> "file://COPYING;md5=95f3a93a5c3c7888de623b46ea085a84"
>>   DEPENDS = "libcap libnfsidmap libevent util-linux sqlite3"
>>   RDEPENDS_${PN}-client = "rpcbind bash"
>>   RDEPENDS_${PN} = "${PN}-client bash"
>> -RRECOMMENDS_${PN} = "kernel-module-nfsd"
>> +RDEPENDS_${PN} = "kernel-module-nfsd"
>>
>>   inherit useradd
>>
>> @@ -28,6 +28,7 @@ SRC_URI = 
>> "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.x
>>              file://nfs-server.service \
>>              file://nfs-mountd.service \
>>              file://nfs-statd.service \
>> +           file://proc-fs-nfsd.mount \
>> file://nfs-utils-Do-not-pass-CFLAGS-to-gcc-while-building.patch \
>>              file://nfs-utils-debianize-start-statd.patch \
>>   "
>> @@ -87,6 +88,8 @@ FILES_${PN}-client = "${base_sbindir}/*mount.nfs* 
>> ${sbindir}/*statd \
>>   FILES_${PN}-stats = "${sbindir}/mountstats ${sbindir}/nfsiostat"
>>   RDEPENDS_${PN}-stats = "python"
>>
>> +FILES_${PN} += "${systemd_unitdir}"
>> +
>>   # Make clean needed because the package comes with
>>   # precompiled 64-bit objects that break the build
>>   do_compile_prepend() {
>> @@ -108,6 +111,13 @@ do_install_append () {
>>       sed -i -e 's, at SBINDIR@,${sbindir},g' \
>>           -e 's, at SYSCONFDIR@,${sysconfdir},g' \
>>           ${D}${systemd_unitdir}/system/*.service
>> +    if 
>> ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; 
>> then
>> +        install -d ${D}${sysconfdir}/modules-load.d
>> +        echo "nfsd" > ${D}${sysconfdir}/modules-load.d/nfsd.conf
>> +        install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount 
>> ${D}${systemd_unitdir}/system/
>> +        install -d ${D}${systemd_unitdir}/system/sysinit.target.wants/
>> +        ln -sf ../proc-fs-nfsd.mount 
>> ${D}${systemd_unitdir}/system/sysinit.target.wants/proc-fs-nfsd.mount
>> +    fi
>>
>>       # kernel code as of 3.8 hard-codes this path as a default
>>       install -d ${D}/var/lib/nfs/v4recovery
>>
>
>
>




More information about the Openembedded-core mailing list