平台:redhat9、FC5、S3c2410Embedded Linux
硬件:KingSton 2.0 1G USB Disk(默认未更改)
问题描述:
1、在RH9下插入U盘用fdisk -l命令查看分区情况,发现从sda1~sda4都有U盘,且大小不一样,只有最后一个分区sda4可以挂载,挂载后查看U盘空间为1G。能够正常读写。在RH9还发生过U盘挂载到sdb下的情况。以前用1.1接口的U盘128M的每次都固定加载到sda1比较方便操作。
2、FC5下由于内核采用2.6以上的加入了U盘自动识别功能(RH9下也可以自己添加此功能,一直懒得添加是不想让RH9弄的更像WINDOWS),加载1.1或者2.0各种容量的U盘都能够自动识别,自动加载且读写没有问题。
3、Embedded Linux下做U盘的交互这个就很麻烦了,因为不同的U盘挂载点不一样,程序不太好控制。原来根文件系统中只做了sda1的连接,应用程序也是针对sda1挂载点写的,当插上上述2.0U盘时就存在无法挂载的问题。
解决方法:
a、更改根文件系统建立sda1~sda4的挂载点,更改应用程序做从后到前的挂载。这个只是权宜之计能暂时解决问题。
b、测试过程中出现了有些文件在Embedded下可以正常读取,另一些文件只能存储不能正常读取,原因没有深入查找,估计是不同的分区只加载了最后一个分区造成的,这就很麻烦在windows和linux混合操作U盘时,你并不知道你需要读取的文件是否存储在了可读的分区上。我就遇到了升级包文件存在了不能读取的分区上,屡次导致升级失败。反复检查程序觉得没有错误,才想到以上的错误可能。
c、在linux下插入U盘,不加载,如果系统自动加载的话,用umount命令卸载U盘
d、fdisk -l命令查看U盘所在的挂载点,比如sda1~sda4
e、fdisk /dev/sda命令对sda分区进行格式化和重新分区,d 命令删除分区 ,依次删除1~4分区;w写入新的分区表;n命令建立分区;p命令建立主分区,按照默认建立一个分区;
f、用fdisk -l查看,可以看到U盘已经建立了一个分区为sda1
g、mkfs.vfat /dev/sda1 对U盘建立vfat文件系统,当然可以建立其他的文件系统但是vfat作为U盘的系统使用起来不管是在windows还是linux都很方便;
h、此后每次将U盘插入linux的系统(RH9或Embedded linux)U盘都默认挂载到/dev/sda1 下。