Beaglebone Black——系统启动后BBB板子的盘符没有出来、系统启动自动挂载分区

        首先说明,板子上的系统是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上,设备已经打开,操作也较方便。

        以下是博主的第二种做法,如图:

Beaglebone Black——系统启动后BBB板子的盘符没有出来、系统启动自动挂载分区_第1张图片

            我按照博主的做法操作了一次,但接着我为了确保确实写入了数据,我重复用截图的第一个命令又读了一次,发现读回来的数据没有变化,于是又来一次dd操作,发现读回来的数据还是没变化,而重启系统发现也确实没有弹出盘符,无果,放弃.....

            第二天抱着试一试的心态,直接把一个原装Angstrom系统里面的/usr/bin/g-ether-load.sh脚本复制出来,然后把其中传递给内核的iSerialNumber参数改成正确的,然后运行脚本,nothing。。。

            接下来,放弃,继续做其他实验,在uboot源码中添加环境变量,然后编译,从串口传给板子,在让板子从NFS挂载网络文件系统,,,但是在某一次做实验时,突然看到下图:

Beaglebone Black——系统启动后BBB板子的盘符没有出来、系统启动自动挂载分区_第2张图片

           于是,运行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 !

你可能感兴趣的:(Beaglebone Black——系统启动后BBB板子的盘符没有出来、系统启动自动挂载分区)