c-如何在Linux中获取USB驱动器标签?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c-如何在Linux中获取USB驱动器标签?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1713字,纯文字阅读大概需要3分钟。
内容图文
![c-如何在Linux中获取USB驱动器标签?](/upload/InfoBanner/zyjiaocheng/946/595108a8d8f346a290ff92f9ad957cc4.jpg)
我正在尝试在我的c / c应用程序中获取USB驱动器的标签.我正在使用libudev来获取USB详细信息.但是它不提供驱动器标签.是否有人对如何获得驱动器标签有任何想法.我正在嵌入式平台上工作,它没有/ dev / disk文件夹.
请帮忙.
内核版本:3.3.8
解决方法:
通常,usb文件系统具有vfat分区,以使其在msdos,Windows,Linux和Mac体系结构之间兼容.
标签是vfat文件系统的属性.它通常显示为根目录中的第一个目录条目,并标记为文件系统标签. msdos文件系统的最新实现(仅vfat exfat和fat32)也将其写入该分区的引导记录的固定部分中,因此您可以从那里读取它.
在分区的第一个扇区中,卷序列号的偏移量为0x43(4个字节).
您还在第一个扇区(偏移量为11个字节)中在偏移量0x47处具有卷标的副本.
诀窍是:通常,将USB记忆棒分区(只有一个分区),您必须:
>在USB记忆棒的第一个扇区中查找分区表,然后找到第一个分区.
>然后,查看该分区的第一个扇区,找到字节偏移量0x43,并使用这四个字节作为卷序列号(它与/ etc / fstab linux文件中的UUID =“ …”相匹配),以及随后的11个字节音量标签.
注意
请注意,NTFS不会出于该目的使用该位置,并且可能损坏在此写入的NTFS分区.只是从那个地方阅读.
笔记2
另外,即使在vfat文件系统中也不要尝试写入该位置,因为它们还在文件系统的根目录中维护了卷标的副本.
注3
在Linux中获取dos文件系统(和ext [234],ntfs等)标签的最简单方法是使用命令blkid(8),它提供followind输出:
/dev/sda1: UUID="0b2741c0-90f5-48d7-93ce-6a03d2e8e9aa" TYPE="ext4"
/dev/sda5: UUID="62e2cbf2-d847-4048-856a-a90b91116285" TYPE="crypto_LUKS"
/dev/mapper/sda5_crypt: UUID="vnBDh3-bcaR-Cu7E-ok5D-oeFp-5SyP-MmAEsb" TYPE="LVM2_member"
/dev/mapper/my_vg-root: UUID="1b9f158b-35b5-490e-b914-bdc70e7f5c28" TYPE="ext4"
/dev/mapper/my_vg-swap_1: UUID="36b8ac81-7043-42ae-9f2a-908d53e2a2b3" TYPE="swap"
/dev/sdb1: LABEL="K003_1G" UUID="641B-80BF" TYPE="vfat"
如您所见,最后一项是用于vfat usb pendrive的,但是您必须解析此输出(我认为这样做并不难)
内容总结
以上是互联网集市为您收集整理的c-如何在Linux中获取USB驱动器标签?全部内容,希望文章能够帮你解决c-如何在Linux中获取USB驱动器标签?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。