SMB/CIFS Support on FX30

Hello,

I’m trying to use an FX30 in a scenario that I need to access a file on a windows network share over the ethernet port.

I’ve managed to rebuild my linux Distribution from source and add a package (unrelated to my issue) I added nodejs just to make sure I could add a custom package - and that worked. Now I want to add a package that I see in my source tree here:

 `/yocto/meta-openembedded/meta-filesystems`

specifically the smbnetfs found in:

 `/yocto/meta-openembedded/meta-filesystems/recipes-filesystems`

I’ve tried adding the following to the file bblayers.conf at /yocto/build_bin/conf :

 `/home/myUserName/yocto/meta-openembedded/meta-filesystems \`

After running make the distribution builds but when I upload it to my FX30 I still don’t see any smb related tools and I can’t mount a smb share on a connected PC using the mount command.

I then tried adding the following to /yocto/meta-swi/meta-swi-mdm9x28/recipes-core/images/mdm9x28-image.inc (this was how I built in the nodejs package):

# Add smbnetfs package
IMAGE_INSTALL_append = " smbnetfs"

But make then fails with:
ERROR: cups-2.1.4-r0 do_configure: configure failed
configure: error: Unable to enable SSL support.
ERROR: Task (/home/myUserName/yocto/poky/meta/recipes-extended/cups/cups_2.1.4.bb:do_configure) failed with exit code '1'

Is it possible to build smb support into my Linux distribution for use on the FX30? If so, could someone please point me in the right direction.

Thank you,
David

Well, I’ve made progress. I managed to add the packages cifs-utils and samba to my distribution and the resulting image runs on my FX30 and I have the mount helper mount.cifs, however when I try to mount the network share I get mount error: cifs filesystem not supported by the system. When I run cat /proc/filesystems on the device cifs is not among the filesystems. Running modprobe cifs returns modprobe: module cifs not found in modules.dep. So bottom line looks like the kernel needs CIFS support.

In the cifs-utils_git.bb recipe there is the line:

RRECOMMENDS_${PN} = "kernel-module-cifs"

Which as I understand will allow the build of the cifs-utils to complete regardless of whether or not the kernel-module-cifs can be found, which in my case it wasn’t.

Is there some documentation that someone can point me to showing how to add the cifs kernel module to my distribution?

Thanks,
David

I managed to figure this out so I thought I’d post the solution in case anyone else needs it:

I had to rebuild the kernel to have CIFS support (I decided to use a kernel module rather than build it in):

  1. Run make dev this will set up build env and put you in a new shell in ~/swi-linux-src/build_bin

  2. Run bitbake linux-quic -c menuconfig this will open the kernel config gui in a new terminal window

  3. Enable CIFS support under File Systems --> Network File Systems --> CIFS Support (Press M to build support as a kernel module). Save changes to .config, exit config tool (<ESC><ESC>)

  4. Exit dev mode shell, run exit (should return you to ~/swi-linux-src)

  5. Edit and save file ~/swi-linux-src/build_bin/conf/local.conf and add the following line under the Additonal Image Features paragraph:
    `KERNEL_MODULE_AUTOLOAD += “cifs”

  6. Edit and save file ~/swi-linux-src/meta-swi/meta-swi-mdm9x28/recipes-core/images/mdm9x28-image.inc and add the following lines before the line “create_ubinize_config() {”:

     # Add cifs-utils package
     IMAGE_INSTALL_append = " cifs-utils"
     # Add samba package (not needed if you only want client support)
     #IMAGE_INSTALL_append = " samba"
    
  7. Run make from ~/swi-linux-src and and deploy resulting image:
    ~/swi-linux-src/build-bin/tmp/deploy/images/boot-yocto-legato_wp77xx.cwe

2 Likes