研究起因:

使用VMware挂载操作系统镜像文件时,桌面自动出现了一个镜像文件的图标,而且名称也自动给出,如下图:

linux上 windows10镜像文件 linux的镜像文件_so文件


比较好奇这个名称是怎么来的

探索

既然是挂载出来的东西,那么先看下挂载的情况:

linux上 windows10镜像文件 linux的镜像文件_VMware_02


可以看到这个文件是通过挂载/dev/sr0设备得到的。

这个/dev/sr0设备就是我们的光盘驱动器,我们常见的/dev/cdrom其实只是个链接,链接到这个/dev/sr0,当系统中有挂载多个镜像时,设备名从/dev/sr0到./dev/sr1依次往下排,这时候使用这些镜像文件就需要注意其对应的是哪个设备。

/dev/cdrom和、/dev/sr0的关系如下图:

linux上 windows10镜像文件 linux的镜像文件_Linux_03


看下mount信息:

linux上 windows10镜像文件 linux的镜像文件_so文件_04


似乎没什么有用的东西

换个思路

既然是挂载设备,那么可以看下被挂载设备的相关信息,使用blkid命令查看,结果如下图:

linux上 windows10镜像文件 linux的镜像文件_ISO_05


可以看到这个设备的LABEL(标签)就是我们在桌面看到的那个名字。

也就是说,这个镜像文件设置的标签是“CentOS 7 x86_64”,我们可以通过isoinfo命令查看得到。

为了能看到镜像信息,事先上传了一份ISO文件到服务器上,isoinfo命令的结果如下图:

linux上 windows10镜像文件 linux的镜像文件_ISO_06


那么能不能下结论镜像文件在桌面上展示的名称来自“Volume id”值呢?我们来做个测试

测试

我们自己创建一个ISO文件,在创建的时候指定镜像文件的“Volume id”。
使用mkisofs命令创建一个简单的ISO文件,并指定“Volume id”值,命令如下:

mkisofs -V label_test -r -o /opt/file1.iso /opt/yang

其中 -V就是用来指定Volume id的,结果如下:

linux上 windows10镜像文件 linux的镜像文件_Label_07


我们将这个file1.iso文件放到物理机本地,然后挂载到vmware虚拟机中。

先将已经挂载的光驱给弹出,如下图:

linux上 windows10镜像文件 linux的镜像文件_Linux_08


弹出之后,VMware的光驱连接显示灰色,代表已经断开连接,这时候我们在选中刚制作好的iso文件,然后重新连接光驱,结果如下图:

linux上 windows10镜像文件 linux的镜像文件_Linux_09


可以看到,这个显示的名称就是我们在制作ISO文件时指定的名称。

结论

在桌面上看到的光盘名称来自镜像文件中的“Volume id”值。

其他

能力有限,结论也许并不正确,具体实现方式还是需要查看底层代码。