我正在开发一个小型“信息亭”应用程序,运行在 BeagleBone Black 板上的 Debian10 上,该板只有一个 USB 端口。我在 fstab 文件中写了一行,自动将 /dev/sda1 挂载到 /media/usb 中,我的应用程序“轮询”最后一个目录以查看是否有存储棒,然后查看是否有要读取或写入的数据。
我偶然发现了一个没有自动安装的 USB 盘,但将其插入 Windows PC 后显示其中有有效数据。所以我开始查看问题出在哪里,现在我非常困惑。以下是摘要:
- 在 BBB 上,USB 驱动器显示为 /dev/sda,但没有分区 sda1
- 如果插入装有 GNome 的 Debian10 PC,它将自动安装并被视为普通驱动器
- Windows 磁盘管理器将其视为完全正常的驱动器
- 主人告诉我,USB 驱动器是在 Windows 10 PC 上格式化的,在弹出的窗口中回答“是”,提示驱动器无法读取,需要格式化(因此,不使用通常的“格式化”对话框)
因此我尝试从 Debian 查看它,结果如下:
fdisk -l /dev/sdb
Disk /dev/sdb: 14,7 GiB, 15728640000 bytes, 30720000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0dff6f63
Dispositivo Avvio Start Fine Settori Size Id Tipo
/dev/sdb1 1635000430 2179175648 544175219 259,5G 72 sconosciuto
/dev/sdb2 1918986614 1919645402 658789 321,7M 72 sconosciuto
/dev/sdb4 28049408 28049850 443 221,5K 0 Vuoto
Partition table entries are not in disk order.
lsblk /dev/sdb -fs
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb vfat ONLY SDA E2CF-E64D /media/fc/ONLY SDA
lsblk /dev/sdb -O
NAME KNAME MAJ:MIN FSTYPE MOUNTPOINT LABEL UUID PARTTYPE PARTLABEL PARTUUID PARTFLAGS RA RO RM HOTPLUG MODEL SERIAL SIZE STATE OWNER GROUP MODE ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE TYPE DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO WSAME WWN RAND PKNAME HCTL TRAN SUBSYSTEMS REV VENDOR
sdb sdb 8:16 vfat /media/fc/ONLY SDA ONLY SDA E2CF-E64D 128 0 1 1 USB Flash Drive 54136B750AFD1FBC 14,7G running root disk brw-rw---- 0 512 0 512 512 1 cfq 128 disk 0 0B 0B 0 0B 1 2:0:0:0 usb block:scsi:usb:pci 2.00 Lexar
parted /dev/sdb 打印
Model: Lexar USB Flash Drive (scsi)
Disk /dev/sdb: 15,7GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0,00B 15,7GB 15,7GB fat32
sudo 文件-s /dev/sdb
/dev/sdb: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "MSDOS5.0", sectors/cluster 16, reserved sectors 2798, Media descriptor 0xf8, sectors/track 63, heads 255, sectors 30720000 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 14985, reserved 0x1, serial number 0xe2cfe64d, unlabeled
(在 Debian 10 PC 上)
挂载/dev/sdb
/dev/sdb on /media/fc/ONLY SDA type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
问题
我怎样才能自动安装这样的 USB 驱动器?
我的理解是我应该挂载分区(例如sda1) 首先(因为我可以“覆盖”它们,如果我挂载并写入星展银行),然后仅当没有找到分区时才使用“超级软盘”(但我应该检查其中是否有文件系统吗?)如何使这个逻辑自动工作?
(我想研究一下 Debian PC,但我太菜了,不知道该研究什么)
如果有人在回答问题的同时能告诉我这里发生了什么,那将是一个很好的学习(而且如果我应该将这样的驱动器视为有效的驱动器,就像我的 Debian PC 似乎做的那样)