首先说明,板子上的系统是ubuntu14.04,而不是原装的Angstrom,板子版本A5C,安装好系统启动后,电脑上没有出现盘符,在中断运行df -h,也没有看到系统中有挂载那个盘符的文件系统,运行ifconfig,也没有看到usb口的IP地址。
一个高手博主解决这个问题重要参考资料http://www.cnblogs.com/dolphi/p/3626187.html,其大意是,中国版的BBB板子EEPROM里面的iSerialNumber信息有错误,“embest在EEPROM里面写序列号的时候后面忘了填几个零,直接又在后面开始写正常编码以外的数据。所以读的时候出现了致命的错误,整个参数都是不对的”。
博主提出了两种解决方案,1)在原装的Anstrom系统中启动时每次运行脚本/usr/bin/g-ether-load.sh来获取ID,并将其传给内核,所以直接在该脚本中把脚本传递给内核的iSerialNumber修改成正确的,这个iSerialNumber一般都可以在板子的外扩引脚侧边条形码处看到,当然这种方法可能不适合于不是Angstrom的系统,因为这个脚本是在系统启动的时候自动运行,如果想让他在其他系统启动时工作,可能还得研究其他系统的启动过程,在适时的时候让他工作起来。2)既然EEPROM里面的iSerialNumber信息有错误,那么我们把它改回来,把embest漏掉的几个零补回来,而这个EEPROM连接在i2c-0上,设备已经打开,操作也较方便。
以下是博主的第二种做法,如图:
我按照博主的做法操作了一次,但接着我为了确保确实写入了数据,我重复用截图的第一个命令又读了一次,发现读回来的数据没有变化,于是又来一次dd操作,发现读回来的数据还是没变化,而重启系统发现也确实没有弹出盘符,无果,放弃.....
第二天抱着试一试的心态,直接把一个原装Angstrom系统里面的/usr/bin/g-ether-load.sh脚本复制出来,然后把其中传递给内核的iSerialNumber参数改成正确的,然后运行脚本,nothing。。。
接下来,放弃,继续做其他实验,在uboot源码中添加环境变量,然后编译,从串口传给板子,在让板子从NFS挂载网络文件系统,,,但是在某一次做实验时,突然看到下图:
于是,运行ifconfig,看到了usb口的IP地址,同时接上USB线,也看到了盘符,同时再读取一次EEPROM,发现原来的那个FFFF变成了0000,说明EEPROM的数据被修改了。虽然运行df -h没有看到有新增加的那个盘符文件系统,但是至此基本可以肯定,问题得到了解决。
至于为什么问题会在这个时候解决,没想明白,为什么当时写的时候数据没有被修改?而脚本不可能修改EEPROM,因他是传递参数给内核,这个参数是我直接给的,相当于“屏蔽”了脚本里面读取EEPROM的操作,而且这个脚本还只在系统启动后手动运行了一次,我也无法让我的ubuntu系统每次启动时都自动运行这个脚本传递参数给内核。难道是因为那些实验无意当中做了好事???
为什么运行df -h没有看到有新增加的那个盘符文件系统?其实,不仅如此,在这个ubuntu14.04中就算在SD卡上插上microSD或者在USB-Host接口插上一个U盘、读卡器,你也会发现运行df -h没有任何变化。原因很简单,对于任何接入的存储设备,这个ubuntu14.04没有自动挂载设备。
运行fdisk -l,即可查看到任何接入系统的存储设备,如下:
root@arm:~# fdisk -l Disk /dev/mmcblk0: 1920 MB, 1920991232 bytes 4 heads, 16 sectors/track, 58624 cylinders, total 3751936 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 Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/mmcblk0p1 * 2048 198655 98304 e W95 FAT16 (LBA) /dev/mmcblk0p2 198656 3751935 1776640 83 Linux Disk /dev/mmcblk0boot1: 1 MB, 1048576 bytes 4 heads, 16 sectors/track, 32 cylinders, total 2048 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 Disk identifier: 0x00000000 Disk /dev/mmcblk0boot1 doesn't contain a valid partition table Disk /dev/mmcblk0boot0: 1 MB, 1048576 bytes 4 heads, 16 sectors/track, 32 cylinders, total 2048 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 Disk identifier: 0x00000000 Disk /dev/mmcblk0boot0 doesn't contain a valid partition table Disk /dev/sda: 15.7 GB, 15724707840 bytes 255 heads, 63 sectors/track, 1911 cylinders, total 30712320 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 Disk identifier: 0xcad4ebea Device Boot Start End Blocks Id System /dev/sda4 * 63 30712319 15356128+ c W95 FAT32 (LBA) Disk /dev/mmcblk1: 7948 MB, 7948206080 bytes 255 heads, 63 sectors/track, 966 cylinders, total 15523840 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 Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/mmcblk1p1 63 15518789 7759363+ b W95 FAT32
Disk /dev/mmcblk0: 1920 MB
代表板子上2GB大小的eMMC上面有两个分区,/dev/mmcblk0p1(对应看到的盘符)、/dev/mmcblk0p2
Disk /dev/mmcblk0boot1
应该是用于系统启动时候的
Disk /dev/mmcblk0boot0
应该是用于系统启动时候的
Disk /dev/sda: 15.7 GB
代表插在板子USB-Host的优盘,该优盘的分区为/dev/sda4
Disk /dev/mmcblk1: 7948 MB
代表插在板子上的SD卡,分区/dev/mmcblk1p1
其中分区/dev/mmcblk0p2已经挂在,挂载点就是根目录,而其他三个分区运行df -h都看不到,所以手动挂在即可。
root@arm:/media# mkdir mmcblk0p1 root@arm:/media# mkdir mmcblk1p1 root@arm:/media# mkdir usbstore root@arm:/media# mount /dev/mmcblk0p1 mmcblk0p1/ root@arm:/media# mount /dev/mmcblk1p1 mmcblk1p1/ root@arm:/media# mount /dev/sda4 usbstore/ root@arm:/media# df -h Filesystem Size Used Avail Use% Mounted on /dev/mmcblk0p2 1.7G 540M 1.1G 34% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 247M 4.0K 247M 1% /dev tmpfs 50M 264K 50M 1% /run none 5.0M 0 5.0M 0% /run/lock none 249M 0 249M 0% /run/shm none 100M 0 100M 0% /run/user /dev/mmcblk0p1 7.4G 8.0K 7.4G 1% /media/mmcblk1p1 /dev/mmcblk0p1 96M 63M 34M 65% /media/mmcblk0p1 /dev/sda4 15G 152M 15G 2% /media/usbstore root@arm:/media#
---------------------------------------------------------------------------------------------------------------------------------------------------------
对于/dev/mmcblk0p1,因为每次系统启动后他都是不变的,所以可以通过修改/etc/fstab来让系统每次启动后不仅弹出盘符,而且还自动挂载这个分区,参考资料http://www.2cto.com/os/201110/108747.html
操作之前用blkid获取一些必要的信息,
root@arm:/media# blkid /dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="BEAGLEBONE" UUID="E979-E30D" TYPE="vfat" /dev/mmcblk0p2: LABEL="rootfs" UUID="2dec5686-2014-4a53-81b7-8a5175538014" TYPE="ext4" /dev/sda4: LABEL="KINGSTON16G" UUID="B4FE-5315" TYPE="vfat" /dev/mmcblk1p1: UUID="9CDB-1DE4" TYPE="vfat" root@arm:/media#
在vi /etc/fstab,在最后一行添加
UUID=E979-E30D /media/mmcblk1p1 vfat defaults 0 2
重启之前,先做一个测试,mount -a,表示挂载所有分区,如果成功,则配置完成。
接下来重启,以后每次启动ubuntu,会自动弹出盘符,并挂载/dev/mmcblk0p1 !