gnome 2.8 Changes for FAQ: 19. How do I mount my removable media in Nautilus?

Franz Klammer klammer at webonaut.com
Thu Oct 7 04:24:43 PDT 2004


gnome 2.8 hase some changes in handling of usermounting
removerable volumes and i think that should be added to the FAQ.

1. don't use mounting points that are symlinks
   if /home is a symlink to /usr/home it is important that
   in /etc/fstab is the real path entered e.g.:
   /dev/acd0 /usr/home/username/mnt/cdrom ...

   if someone mounting to /home/username/cdrom the directory/mountpoint
   will be changed to root:wheel _and_ the original (unmounted)
   icon is still to see in Place Computer (of course also the cd-rom icon)
   and when klicking on it nautlius claims that the device is bussy.

2. there are naming conventions of the mounting points:
   (relative to e.g.: /usr/home/username/mnt/)
    CD-ROMS       => cdrom
    CD-RW         => cdrw
    Memory Sticks => memstick
    and so on ...

    without that nautilus didn't work correctly.
    i had hours with trying and trubles until figured this out... :-(

    attached the gnomevfs-function where i found all the names.

3. (maybe) OT question: when i insert my memory stick the access right set
   for the device created by usbd (/dev/da0s1) don't allow access from a
   normal user. currently i helped my with a dirty trick:

   adding to /etc/devfs.conf:
      perm da0s1 0666

   and to /etc/usbd.conf:
      device "MEGA"
           devname "umass0"
           attach "/bin/sleep 5; /etc/rc.d/devfs restart"

   if there is a (which i'm sure there is) a good solution that
   should also be added to the FAQ.

   here to see how it looks like two screenshots of "Computer":
   http://webonaut.com/temp/unmounted.png
   http://webonaut.com/temp/mounted.png
  

franz.

-------------- next part --------------
static GnomeVFSDeviceType
get_device_type_from_device_and_mount (const char *device_path, const char *mount_path)
{
        const char *name;
        char *basename;

        if (g_str_has_prefix (device_path, "/dev/loop")) {
                return GNOME_VFS_DEVICE_TYPE_LOOPBACK;
        } else if (g_str_has_prefix (device_path, "/dev/vn")) {
                return GNOME_VFS_DEVICE_TYPE_LOOPBACK;
        } else if (g_str_has_prefix (device_path, "/vol/dev/diskette/") ||
                   g_str_has_prefix (device_path, "/dev/fd") ||
                   g_str_has_prefix (device_path, "/dev/floppy")) {
                return GNOME_VFS_DEVICE_TYPE_FLOPPY;
        } else if (g_str_has_prefix (device_path, "/dev/cdrom")) {
                return GNOME_VFS_DEVICE_TYPE_CDROM;
        } else if (g_str_has_prefix (device_path, "/dev/acd")) {
                return GNOME_VFS_DEVICE_TYPE_CDROM;
        } else if (g_str_has_prefix (device_path, "/dev/cd")) {
                return GNOME_VFS_DEVICE_TYPE_CDROM;
        } else if (g_str_has_prefix (device_path, "/vol/")) {
                        name = mount_path + strlen ("/");

                        if (g_str_has_prefix (name, "cdrom")) {
                                return GNOME_VFS_DEVICE_TYPE_CDROM;
                        } else if (g_str_has_prefix (name, "floppy")) {
                                return GNOME_VFS_DEVICE_TYPE_FLOPPY;
                        } else if (g_str_has_prefix (device_path, "/vol/dev/diskette/")) {
                                return GNOME_VFS_DEVICE_TYPE_FLOPPY;
                        } else if (g_str_has_prefix (name, "rmdisk")) {
                                return GNOME_VFS_DEVICE_TYPE_ZIP;
                        } else if (g_str_has_prefix (name, "jaz")) {
                                return GNOME_VFS_DEVICE_TYPE_JAZ;
                        } else if (g_str_has_prefix (name, "camera")) {
                                return GNOME_VFS_DEVICE_TYPE_CAMERA;
                        } else if (g_str_has_prefix (name, "memstick")) {
                                return GNOME_VFS_DEVICE_TYPE_MEMORY_STICK;
                        }
        } else {
                basename = g_path_get_basename (mount_path);

                if (g_str_has_prefix (basename, "cdrom") ||
                    g_str_has_prefix (basename, "cdwriter") ||
                    g_str_has_prefix (basename, "burn") ||
                    g_str_has_prefix (basename, "cdr") ||
                    g_str_has_prefix (basename, "cdrw") ||
                    g_str_has_prefix (basename, "dvdrom") ||
                    g_str_has_prefix (basename, "dvdram") ||
                    g_str_has_prefix (basename, "dvdr") ||
                    g_str_has_prefix (basename, "dvdrw") ||
                    g_str_has_prefix (basename, "cdrom_dvdrom") ||
                    g_str_has_prefix (basename, "cdrom_dvdram") ||
                    g_str_has_prefix (basename, "cdrom_dvdr") ||
                    g_str_has_prefix (basename, "cdrom_dvdrw") ||
                    g_str_has_prefix (basename, "cdr_dvdrom") ||
                    g_str_has_prefix (basename, "cdr_dvdram") ||
                    g_str_has_prefix (basename, "cdr_dvdr") ||
                    g_str_has_prefix (basename, "cdr_dvdrw") ||
                    g_str_has_prefix (basename, "cdrw_dvdrom") ||
                    g_str_has_prefix (basename, "cdrw_dvdram") ||
                    g_str_has_prefix (basename, "cdrw_dvdr") ||
                    g_str_has_prefix (basename, "cdrw_dvdrw")) {
                        g_free (basename);
                        return GNOME_VFS_DEVICE_TYPE_CDROM;
                } else if (g_str_has_prefix (basename, "floppy")) {
                        g_free (basename);
                        return GNOME_VFS_DEVICE_TYPE_FLOPPY;
                } else if (g_str_has_prefix (basename, "zip")) {
                        g_free (basename);
                        return GNOME_VFS_DEVICE_TYPE_ZIP;
                } else if (g_str_has_prefix (basename, "jaz")) {
                        g_free (basename);
                        return GNOME_VFS_DEVICE_TYPE_JAZ;
                } else if (g_str_has_prefix (basename, "camera")) {
                        g_free (basename);
                        return GNOME_VFS_DEVICE_TYPE_CAMERA;
                } else if (g_str_has_prefix (basename, "memstick") ||
                           g_str_has_prefix (basename, "compact_flash") ||
                           g_str_has_prefix (basename, "memory_stick") ||
                           g_str_has_prefix (basename, "smart_media") ||
                           g_str_has_prefix (basename, "sd_mmc") ||
                           g_str_has_prefix (basename, "ram")) {
                        g_free (basename);
                        return GNOME_VFS_DEVICE_TYPE_MEMORY_STICK;
                } else if (g_str_has_prefix (basename, "ipod")) {
                        g_free (basename);
                        return GNOME_VFS_DEVICE_TYPE_MUSIC_PLAYER;
                }
                g_free (basename);
        }

        return GNOME_VFS_DEVICE_TYPE_HARDDRIVE;
}


More information about the freebsd-gnome mailing list