Linux系统中关于ISO镜像文件LABEL的研究
研究起因:
使用VMware挂载操作系统镜像文件时,桌面自动出现了一个镜像文件的图标,而且名称也自动给出,如下图:
比较好奇这个名称是怎么来的
探索
既然是挂载出来的东西,那么先看下挂载的情况:
可以看到这个文件是通过挂载/dev/sr0设备得到的。
这个/dev/sr0设备就是我们的光盘驱动器,我们常见的/dev/cdrom其实只是个链接,链接到这个/dev/sr0,当系统中有挂载多个镜像时,设备名从/dev/sr0到./dev/sr1依次往下排,这时候使用这些镜像文件就需要注意其对应的是哪个设备。
/dev/cdrom和、/dev/sr0的关系如下图:
看下mount信息:
似乎没什么有用的东西
换个思路
既然是挂载设备,那么可以看下被挂载设备的相关信息,使用blkid命令查看,结果如下图:
可以看到这个设备的LABEL(标签)就是我们在桌面看到的那个名字。
也就是说,这个镜像文件设置的标签是“CentOS 7 x86_64”,我们可以通过isoinfo命令查看得到。
为了能看到镜像信息,事先上传了一份ISO文件到服务器上,isoinfo命令的结果如下图:
那么能不能下结论镜像文件在桌面上展示的名称来自“Volume id”值呢?我们来做个测试
测试
我们自己创建一个ISO文件,在创建的时候指定镜像文件的“Volume id”。
使用mkisofs命令创建一个简单的ISO文件,并指定“Volume id”值,命令如下:
mkisofs -V label_test -r -o /opt/file1.iso /opt/yang
其中 -V就是用来指定Volume id的,结果如下:
我们将这个file1.iso文件放到物理机本地,然后挂载到vmware虚拟机中。
先将已经挂载的光驱给弹出,如下图:
弹出之后,VMware的光驱连接显示灰色,代表已经断开连接,这时候我们在选中刚制作好的iso文件,然后重新连接光驱,结果如下图:
可以看到,这个显示的名称就是我们在制作ISO文件时指定的名称。
结论
在桌面上看到的光盘名称来自镜像文件中的“Volume id”值。
其他
能力有限,结论也许并不正确,具体实现方式还是需要查看底层代码。