在Ubuntu下面挂载iso文件使用到的命令:
aneal@Aspire:~$:cd /mnt ; sudo mkdir isodir
[sudo] password for aneal:
aneal@Aspire:/mnt$:sudo mount -t auto -o loop ~/my.iso /mnt/isodir
对其中loop参数不是非常理解,查询得到的结果:loop在这里指示mount命令将my.iso挂载为一个loop device。
那么,什么是loop device呢?
我的第一印象是网络本地环回测试,叫loopback test,意思是本机发出的数据包不发送到外部网络中,被本机接收,可以用来进行一些数据包分析和应用程序开发测试。
那么loop device是否跟跟网络中的loopback test类似呢?答案是肯定的。
loop device中的loop其实也是loopback的缩写,意思相同,不过所代表的意义并不是跟网络loopback test一致。
loop device将linux伪设备(pseudodevice)家族中的一员,loop device将实际文件系统中存在的文件映射到一个虚拟的块设备(block device)中,使得可以通过访问块设备的方式对文件进行访问,如果此文件中包含有一个完整的文件系统,则可以将将此文件系统挂在到系统文件系统中进行访问。
这个定义来自于维基百科,有点晕是不是?
我们来分析一下其中的要点:
1,loop device首先是一个设备(device),但是又不是实际物理性存在的设备,是虚拟的伪设备。
2,loop device必须要跟文件系统中某一文件进行关联(associate),形成映射,对loop device的访问会映射到对此对应文件的访问。
3,将文件映射为loop device后,相当于系统中就有了一个还没有挂载的存储硬件,可以挂载在文件目录中的某一个点上,然后进行访问。
整个访问过程是:
Request>VFS>Loop Device>Request>VFS>Local File
实际上对存储盘进行了两次访问,这才是loop device中的“环回”的含义所在。
reference:
http://en.wikipedia.org/wiki/Loop_device;
分享到:
相关推荐
“Cowloop: Copy-On-Write loop device-开源”这一标题指出,Cowloop是一个基于Copy-On-Write(COW)技术的循环设备驱动程序,而且它是开源的。这意味着用户可以自由地查看、修改和分发其源代码,符合开源软件的定义...
接着,我们可以使用`pcap_loop`或`pcap_next_ex`函数来持续接收并处理捕获到的数据包。每个数据包包含一个`pcap_pkthdr`结构体,描述了数据包的时间戳、长度等信息,以及一个`u_char*`指针,指向实际的数据包内容。 ...
在ESP-IDF框架中,可以使用`spi_bus_initialize()`函数初始化总线,然后使用`spi_device_handle_t`结构体与特定的SPI设备建立连接。在初始化SPI设备时,需要设置参数,如时钟频率、极性、相位等。例如,`spi_device_...
client.subscribe('your_device_topic') client.on_message = on_message client.loop_forever() # 将解析后的数据发送回阿里云 client.publish('your_response_topic', parsed_data) ``` 以上就是关于安科瑞电表...
当检测到事件时,`handle_device_event()`会被调用,执行相应的操作,如添加新设备到监控列表、更新设备状态或者通知用户。 对于远程控制,`usb_scan`可能使用网络套接字(socket)编程实现服务器功能。`start_...
二、LoRaWAN技术解析 LoRaWAN是一种低功耗广域网(LPWAN)通信标准,特别适合于IoT设备的长距离、低速率通信需求。其特点包括: 1. **长距离**:LoRa信号能穿透建筑物,覆盖范围可达十几公里,甚至更远。 2. **低...
JpcapCaptor captor = JpcapCaptor.openDevice(JpcapCaptor.getDeviceList()[0], 65535, true, 20); ``` 这段代码会打开第一个网络接口,并设置缓冲区大小为65535字节,保持监听状态20秒。`JpcapCaptor....
fprintf(stderr, "Couldn't open device %s: %s\n", device, errbuf); return(2); } // 开始抓包 if (pcap_loop(handle, 10, packet_handler, NULL) ) { fprintf(stderr, "pcap_loop exited with error.\n");...
通过WinPCap的`packet_open_device()`函数,我们可以打开一个网络接口,并设置捕获参数,如过滤规则,然后使用`packet_loop()`进行连续的数据包捕获。 2. **数据包解析**:捕获到的数据包是原始的二进制格式,需要...
以下是关于`mount`命令的详细解析: **一、命令格式** `mount`命令的基本格式如下: ```bash mount [-t vfstype] [-o options] device dir ``` 1. `-t vfstype`:指定文件系统的类型。例如,`iso9660`对应光盘,...
5. **解析封包**:每个捕获的Packet对象可以通过`getProtocols()`方法获取其包含的所有协议层次,并通过`get(PcapProtocolFamily)`获取特定协议层的数据。 6. **释放资源**:完成抓包后,别忘了关闭句柄以释放系统...
4. **处理数据包**:使用`Pcap.loop()`或`Pcap.nextEx()`方法获取捕获到的数据包,然后进行解析和处理。 5. **结束捕获**:当不再需要捕获数据包时,调用`Pcap.close()`释放资源。 **示例代码** ```java import ...
fprintf(stderr, "Couldn't open device %s: %s\n", argv[1], errbuf); return(2); } if (pcap_loop(handle, 10, packet_handler, NULL) ) { fprintf(stderr, "pcap_loop exited with error.\n"); return(2);...
4. **按键事件处理**:Android中的`InputDevice`类提供了获取和解析游戏控制器按键事件的方法。`InputEvent`和`InputDevice`对象一起用于处理来自游戏控制器的输入事件,如按键按下、摇杆移动等。开发者可以通过`get...
fprintf(stderr, "Couldn't open device %s: %s\n", "eth0", errbuf); exit(1); } ``` 这里的`pcap_open_live()`函数用于打开网络接口,"eth0"是接口名称,BUFSIZ设定缓冲区大小,1表示非阻塞模式,-1表示无限时钟...
1. 数据包捕获:使用 `pcap_open_live()` 函数打开网络接口,`pcap_loop()` 或 `pcap_next()` 用于接收数据包。 2. 数据包过滤:通过 `pcap_compile()` 和 `pcap_setfilter()` 设置 BPF(Berkeley Packet Filter)...
这只是构建一个简单NIDS的基础框架,实际的NIDS系统需要更复杂的规则集、更深入的协议解析以及可能的特征匹配算法。例如,可以使用`PPI`(Perl Parser for Perl)库来解析Perl代码,查找可能的注入尝试;或者结合`...
MicroTankMIDlet的源码中,可能会有一个GameLoop类负责这些任务,通过定时器或者while循环不断更新游戏状态。 5. **资源管理** 在有限的内存和存储空间下,有效地管理资源至关重要。MicroTankMIDlet可能使用了图像...
4. **捕获数据包**:调用`JpcapCaptor.getPacket()`或`JpcapCaptor.loop()`来连续捕获数据包。 5. **处理每个数据包**:对捕获到的每个数据包进行解析,提取相关信息,如源/目标地址、端口和TCP状态。 6. **分析和...
通过以上详细解析,我们可以看到ZDO程序员指南不仅覆盖了ZDO的基本概念、组件结构和核心函数,还深入讲解了如何利用ZDO进行Zigbee网络编程。这对于理解Zigbee协议栈以及开发基于Zigbee的应用具有重要意义。