Bug 4178 - Add FUSE: File system in Userspace
Summary: Add FUSE: File system in Userspace
Status: RESOLVED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: core (show other bugs)
Version: 1.5
Hardware: All Multiple
: Low enhancement
Target Milestone: 1.5 M1
Assignee: Hongxu Jia
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks:
 
Reported: 2013-04-03 04:59 UTC by Randy MacLeod
Modified: 2013-08-19 01:50 UTC (History)
14 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: Don't know


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Randy MacLeod 2013-04-03 04:59:27 UTC
FUSE is widely used and supported by other distros.
It should be added to oe-core along with  sshfs as a useful client.
Comment 1 Randy MacLeod 2013-04-03 05:11:13 UTC
Oops, moved from kernel doamin since we already have the FUSE module:
cat packages-split/kernel-dev/usr/src/kernel/.config
CONFIG_FUSE_FS=m
Comment 2 Paul Eggleton 2013-04-03 13:13:25 UTC
FYI, both fuse and sshfs-fuse are available in meta-oe.
Comment 3 Hongxu Jia 2013-04-22 08:07:28 UTC
Yes, not only fuse and sshfs-fuse but also gvfs, ifuse, smbnetfs, owfs, ntfs-3g are available in meta-oe.

Hi Saul,

Is it necessary to move fuse and the related from meta-oe to oe-core?
I have tested fuse and ntfs-3g in oe-core, and it works well.

//Hongxu
Comment 4 Hongxu Jia 2013-05-29 07:50:31 UTC
Hi Saul,

About this feature, the following is the goal and mean:

1, Add fuse to oe-core and let target system could support `ntfs' and `exfat' filesystems.

2, Add four packages to oe-core: 
1) fuse, move fuse_2.9.2 from meta-oe;
2) ntfs-3g-ntfsprogs, moved from meta-oe, and update from 2011.4.12 to 2013.1.13;
3) fuse-exfat_1.0.1, it doesn't exist in meta-oe and newly added to oe-core;
4) exfat-utils_1.0.1, it doesn't exist in meta-oe and newly added to oe-core;

//Hongxu
Comment 5 Hongxu Jia 2013-05-29 07:53:19 UTC
Test Case

*Steps
1, prepare
target: e-menlow
2 usb sticks: one for boot and install, another for filesystem test.

2, config, 
conf/local.conf:
247 MACHINE ?= "emenlow-noemgd"
247 IMAGE_INSTALL_append = " ntfs-3g ntfsprogs fuse-exfat exfat-utils"

conf/bblayers.conf:
  8 BBLAYERS ?= " \
  9   /home/jiahongxu/yocto/poky/meta \
 10   /home/jiahongxu/yocto/poky/meta-yocto \
 11   /home/jiahongxu/yocto/poky/meta-yocto-bsp \
 12   /home/jiahongxu/yocto/poky/meta-intel \
 13   /home/jiahongxu/yocto/poky/meta-intel/meta-emenlow \

3, build image
bitbake core-image-sato

4, load image to emenlow
Test Case TC-2927: boot and install from usb

5, open a terminal/ssh of e-menlow
Test Case TC-2955: remote access by ssh

6, make exfat filesystem on the testing usb storage
1) plug usb stick into e-menlow
2) execute `mkfs.exfat /dev/sdc1'

7, test usb stick with exfat filesystem is accessible
Test Case TC-2947: usb mount
Test Case TC-2948: usb read files
Test Case TC-2949: usb umount
Test Case TC-2950: usb write files

8, make ntfs filesystem on the testing usb storage
1) plug usb stick into e-menlow, if mounted, invoke `umount /dev/sdc1' first.
2) execute `mkfs.ntfs -f /dev/sdc1'

9, test usb stick with ntfs filesystem is accessible 
Test Case TC-2947: usb mount
Test Case TC-2948: usb read files
Test Case TC-2949: usb umount
Test Case TC-2950: usb write files

*Expected Results:
1, build image success

2, make exfat filesystem success
root@emenlow-noemgd:~# mkfs.exfat /dev/sdc1
mkexfatfs 1.0.1
Creating... done.
Flushing... done.
File system created successfully.

3, make ntfs filesystem success
root@emenlow-noemgd:~# mkfs.ntfs -f /dev/sdc1
Cluster size has been automatically set to 4096 bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

4, While the usb's filesystem type is exfat or ntfs, system can mount
plugged usb automatically, read files from usb, write files to usb and
unmout usb automatically.
Comment 6 Paul Eggleton 2013-05-29 08:52:39 UTC
This looks like useful work, but is there a need to add these to OE-Core, or can they just be maintained/added to in meta-oe where they are currently?
Comment 7 Hongxu Jia 2013-05-29 09:24:42 UTC
(In reply to comment #6)
> This looks like useful work, but is there a need to add these to OE-Core, or
> can they just be maintained/added to in meta-oe where they are currently?

Hi Saul,

What is your suggestion? oe-core or meta-oe? Which one should I maintain/add?

//Hongxu
Comment 8 Bruce Ashfield 2013-05-29 13:17:45 UTC
Wind River uses FUSE across many projects, layers, images and is now common 
functionality from our point of view.

oe-core is the component that is imported and supported as a whole, not meta-oe,
hence why we are looking to drive fuse down to oe-core. 

.. but obviously, we are just one opinion on what sits where.
Comment 9 Saul Wold 2013-06-06 03:44:30 UTC
At this point given the number of items that would need to move, I would suggest either a patch of RFC to the meta-oe to move the filesystem related bits into a meta-oe/meta-filesystems layer similar to meta-networking.  This would allow that layer to be included independant of the larger meta-oe recipe set.

You would have to survey all the FS related items, and propose what should move, I would not move things like nautlius, gedit or gnome-vfs, it will be a tough argument to move gvfs since it's a gnome item in meta-gnome already.

This will require someone (like WR) to step up and maintain this new layer like the meta-networking layer.
Comment 10 Hongxu Jia 2013-08-19 01:49:15 UTC
Create a layer meta-filesystems to collect additional filesystems recipes:

Fuse is included in the layer:

* Git repository
git://git.openembedded.org/meta-openembedded 

* Subdirectory
meta-filesystems

* Dependencies
git://git.openembedded.org/openembedded-core

git://git.openembedded.org/meta-openembedded
meta-oe
Comment 11 Hongxu Jia 2013-08-19 01:50:12 UTC
Survey the filesystem related items in meta-oe, and move them to the
meta-openembedded/meta-filesystems layer

*1, already layout in meta-oe, they will be moved to meta-filesystems with
    the exception of lvm2 and udisks.
    - lvm2 is depended by udisks/cryptsetup/multipath-tools.
    - udisks has close relations with systemd.
meta-oe--------------->|recipes-core---------------->|f2fs-tools
                       |recipes-extended------------>|owfs
                       |recipes-connectivity-------->|ifuse
                                                     |sshfs-fuse
                                                     |smbnetfs
                       |recipes-support------------->|ntfs-3g-ntfsprogs
                                                     |xfsprogs
                                                     |cramfs
                                                     |physfs
                                                     |fuse
                                                     |lvm2
                                                     |udisks

*2, already layout in oe-core/meta, they will stay where they are.
oe-core/meta---------->|recipes-devtools------------>|file
                                                     |dosfstools
                                                     |squashfs-tools
                                                     |devel-config------->nfs-export-root
                                                     |btrfs-tools
                                                     |genext2fs
                                                     |e2fsprogs
                                                     |util-linux
                                                     |packagegroups------>packagegroup-base.bb
                                                     |sysfsutils
                       |recipes-extended------------>|stat
                       |recipes-support------------->|attr

*3, TOBE layout in meta-filesystems layer.
ifuse, sshfs-fuse, owfs, smbnetfs, ntfs-3g-ntfsprogs, fuse-exfat are based on fuse

meta-filesystems------>|recipes-filesystems--------->|ifuse
                                                     |sshfs-fuse
                                                     |owfs
                                                     |ntfs-3g-ntfsprogs
                                                     |cramfs
                                                     |smbnetfs
                                                     |fuse-exfat
                       |recipes-support------------->|fuse
                                                     |physfs
                       |recipes-utils--------------->|f2fs-tools
                                                     |exfat-utils
                                                     |xfsprogs

*4, upgrade and newly added
1) 4 Packages need to be upgraded
    owfs, 2.8p20-->2.9p1
    ntfs-3g-ntfsprogs, 2011.4.12-->2013.1.13
    xfsprogs, 3.1.8-->3.1.11
    fuse, 2.9.2-->2.9.3

2) 2 Packages are newly added to meta-filesystems
    fuse-exfat: add version 1.0.1
    exfat-utils: add version 1.0.1