在ubuntu16.04上开机挂载自动U盘遇到的问题记录

如果有问题,请加QQ群进行交流
最近的项目使用的是使用arm .04 base 创建的根文件系统,其中一个功能是要开机自动挂载u盘,需要做以下几项步骤设置,在这里记录一下:
一、获得当前u盘的信息
获取当前u盘的信息,可以使用两种方式:
1、使用blkid命令,该命令需要root权限,如下图所示:
可以看到,当前u盘的设备节点是/dev/sda1、UUID是"6F6A-788D"、分区格式是fat;
2、使用ls /dev/sd*查看,我一般用这个,如下图所示:
其实就是查看一下当前u盘的在文件系统中的设备节点,这里面有两个节点,第一个是代表当前的U盘设备,第二个代表当前U盘设备的分区,我的U盘当前只有一个分区,所以这两个没啥区别 。
二、在/etc/fstab添加相关信息
/dev/sda1/data vfat00
/dev/sda1代表要挂载的设备节点,/data代表设备挂载的目的路径,vfat代表当前需要挂载的设备分区格式为fat(我一般是按照fat32的格式格式化我的u盘)
三、在系统中安装udev(这一部分是这次记录的重点)
系统中一定要保证安装了udev,要不然如果在/etc/fstab里面添加了u盘的相关信息,系统不能正常启动,切记切记,在这个地方卡了半天,无意间发现base系统中没有安装udev,安装了udev以后,系统能正常启动了 。下面详细分析一下原因:
1、udev是什么?
udev是一个利用linux内核在加入设备或者移除设备时,向上发送的热插拔事件()的设备信息,自动创建设备文件节点等工作的应用程序 。从这个定义里面可以看出来,udev是一个完全工作在用户空间的程序 。
2、udev怎么工作?
udev的工作过程如下:
(1)、当内核检测到系统中出现新设备以后,内核会通过套接字发送;
(2)、udev获取内核发送的信息,进行规则匹配 。匹配的事物包括、、、内核提供的名称(通过=)以及其他的环境变量,udev的详细规则可用参考其他文档,这里不做记录 。
3、为什么不安装udev,系统不能正常启动?
如果系统中不安装udev,开机时会出现这种情况,如下图所示:
就这样慢慢的等待貌似短暂其实很长的90秒的时间,为什么呢?咱们先用世俗的规则来分析一下:
(1)、内核代表的是部门的底层劳动者小头头儿(其实这个小头头儿管的很多),包罗万象,啥脏活累活都管,他存在的价值就是给上层领导提供有用的信息和处理问题的实际方案,并且管理他手下的虾兵蟹将;
(2)、上层应用代表的是部门或者是更高层的领导者,不管底层具体的实现过程,只管我要做成什么样子(终端客户的需求),你们底层给我实现,我只要现成的方案和反馈信息(接口);
(3)、好了,角色分配完毕了,职责和角色貌似已经比较完备了,那就开始工作吧;
(4)、“咔咔咔”,板子上搞了一个u盘,底层劳动者很负责(毕竟找份儿工作不容易),赶紧将信息上报给内核,内核收到信息后,赶紧往上报,报完以后,内核长长舒了一口气:“还好,还好,信息上报的还算及时,省的上面的人整天吐槽我不是实时的......”;
(5)、“什么情况?我刚加的U盘怎么不能用?你们下面的人是怎么搞的?”上层领导咆哮着,来质问内核 。“我第一时间就将插入u盘的信息上报上去了呀!”内核很无辜的说 。“你上报给谁了?”领导余气未消 。“那谁知道?我的工作就是将信息传递出去,具体是谁接收,那是你们上层的事儿了”内核很不屑的回答说 。上层领导被怼的无话可说......
(6)、第二天,领导得意的带着一个年轻漂亮的女孩儿来到内核旁边说:“这是我的秘书,她叫udev,以后专门负责接收你传递出来的信息,你们要好好配合” 。“我只管发,她收不收到是她的事儿”,内核愤愤地说 。