C114门户论坛百科APPEN| 举报 切换到宽版

亚星游戏官网

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索
查看: 7343|回复: 2

[技术讨论] Mount命令挂载设备的实现原理 [复制链接]

军衔等级:

亚星游戏官网-yaxin222  中士

注册:2009-4-23
发表于 2012-6-1 11:29:47 |显示全部楼层
http://leedd.com/2010/04/how-to-mount-device-and-works/                                                                                               

要了解linux下的mount命令是如何挂载设备的工作原理,首先大家要回答以下四个问题:1.怎么知道应该去挂载?2.挂载的几种文件格式 3.如何去挂载? 4.挂载的位置如何确定?弄明白了这四个问题,就能知道monut的实现原理及工作过程。下面大家来详细分析下


下载并获得nautilsu源码:

[Lee@leedd.com ~]$ yumdownloader --source nautilus载入插件: refresh-packagekitnautilus-2.24.2-5_nd5_8.src.rpm                          | 5.2 MB     00:00[Lee@leedd.com ~]$ rpm -ivh nautilus-2.24.2-5_nd5_8.src.rpm[Lee@leedd.com rpmbuild]$ rpmbuild -bp SPECS/nautilus.spec[Lee@leedd.com rpmbuild]$cd BUILD[Lee@leedd.com BUILD]$ pwd/home/Lee/rpmbuild/BUILD
nautilus-2.24.2/libnautilus-private/nautilus-autorun.c定位mount实现相关的函数

  用函数: should_autorun_mount (GMount *mount)来实现自动挂载,其中:  enclosing_volume = g_mount_get_volume (mount) ;                       // 用 g_mount_get_volume (mount)来获取需要mount的对象,返回 Gvolume或NULL  if (enclosing_volume != NULL)                             // 如果该介质(封闭的卷)非空,并且如下:  if (g_object_get_data (G_OBJECT (enclosing_volume), "nautilus-allow-autorun") != NULL) {                             //获取封闭数据卷的类型,非空  ignore_autorun = FALSE;  g_object_set_data (G_OBJECT (enclosing_volume), "nautilus-allow-autorun", NULL);  }  }    if (ignore_autorun) {  if (enclosing_volume != NULL) {  g_object_unref (enclosing_volume);                             //,对封闭的卷(enlosing_volume)进行引用计数并排列位置  }  return FALSE;  }  
通过上面的简单分析,大家可以知道mount工作原理及流程,并回答上面四个问题

1.怎么知道应该去挂载?—————-g_mount_get_volume (mount)函数获取需要mount的对象来实现(返回值为Gvolume或NULL)

2.挂载的几种文件格式 g_object_get_data (G_OBJECT (enclosing_volume), “nautilus-allow-autorun”) 获取nautilus-allow-autorun的数据文件类型

可以挂载的文件类型: iso9660 ext ext2 ext3 fat fhs hpfs jfs ntfs ufs vfat等等—-通过man mount获得

3.如何去挂载用什么挂载 : 用函数: should_autorun_mount (GMount *mount)来判断实现自动挂载

具体参考本文**函数说明

4.挂载的位置如何确定: 用 g_object_unref(enclosing_volume)来对封闭的卷(enlosing_volume)进行引用计数,当 g_object_unref()值为unreffed 既是不再需要时候取消该挂载位置


本文标题: Mount命令挂载设备的实现原理
版权所有: 东东有礼 本文短网址:http://for.vc/y 转载请注明本文出处。标签: Linux, mount,nautulus

举报本楼

本帖有 2 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系大家 |网站地图  

GMT+8, 2024-9-26 05:24 , Processed in 0.177526 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部
XML 地图 | Sitemap 地图