全志文件管理器移植到RK3288(一)----配置内核支持nfs和cifs

                                    全志文件管理器移植到RK3288(一)----配置内核支持nfs和cifs

             对于全志的浏览器功能和界面都做的挺好的,所以就想把它放到RK3288上用。然后遇到了很多问题。

             最让我头痛的是RK3288的内核没有支持nfs,cifs好像有支持,但是测试没成功。

             因为对安卓还是停留在应用层打转,所以花了好多时间查资料。现把我知道的记录一下,说不定也可以帮别人。


           需要修改的地方:

              1.修改linux内核,支持cifs和nfs(有些本身就支持的就不用修改)
              2.修改framework,增加服务service和api接口提供root权限给应用层
              3.修改文件浏览器应用



          下面具体说明如何修改:
             (1)修改linux内核,或者叫配置文件来添加cifs和nfs的支持。

                      在终端进入linux源码根目录:例如RK3288

                               

 

                     然后输入:make menuconfig

                               


                     接着点击enter,就会弹出一个蓝色背景的图形界面的配置界面

                  



                  看到这个界面时,按上下键,找到File systems  --->

                  按enter进入,然后选择[*] Network File Systems  --->
                  这里通常左边的中括号都默认是*的,如果没有,就按空格键切换选择。

                 


                 然后按enter进入

                 

                 


                 此时按上下键,我们就看到了关键词nfs和cifs,这个就是我们需要修改的地方了。如图,按图对应选择上。 怎么选择了?就是按上下键选上对应需要改的,然后按空格键切换。此时会有三种标识:[]、[*]、[M],这三种标识的意思大概是:[]就是空,没选择上;[*]这个就是把该模块编译到内核里;[M]这个是把该模块编译成单独的动态库文件,如cifs.ko和nfs.ko,.ko文件可以通过命令insmod cifs.ko来手动添加。当然我们肯定是选择编译到内核里。此时就配置完了,按多次ESC键会弹出保存,选择保存就可以了。

                 


               选择yes,点击enter,linux内核配置就算是完成了。但是我们要重新编译内核。在终端,此时还是在kernel目录下,执行make kernel.img
等执行玩,我们就会在该目录下多了一个kernel.img文件,如果不放心是不是刚编译出来的,右键属性查看时间。

以上算是成功修改kernel了,我们可以通过工具烧写kernel.img到开发板,或者编译出完整的固件来升级系统,我就是编译出.zip文件然后用sdcard来升级的。


              当你升级了自己重新编译的kernel,如何验证呢?
               1.终端下,cat  /proc/version 看看时间是不是对了,如下

                  root@rk3288:/ # cat  /proc/version                                           
                  Linux version 3.10.0 (zxzh@moons-104) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #5      SMP PREEMPT Wed Oct 29 17:01:01 CST 2014


              2.终端下,cat  /proc/filesystems 看看有没nfs和cifs项,如下

                  root@rk3288:/ # cat  /proc/filesystems
                  


                 看到有nfs和cifs,顿时我就开心了。说明内核已经支持了。不过还是不放心,是否真的可用呢?我们来测测

                 1.cifs挂载
                    终端下执行,当然这里需要root权限
                    busybox mount -t cifs -o username=admin,password=123456 //192.168.7.251 /mnt/cifs

                    一执行,发现错误,提示mount: No such file or directory
                   当时就急了,怎么不行啊。后来发现挂载的目录没有创建,然后就mkdir /mnt/cifs
                   又提示错误 mkdir failed for /mnt/nfs, Read-only file system
                   好吧,这个目录没权限创建文件,换一个目录
                   mkdir /mnt/sdcard/cifs,嗯嗯,这次没报错,cd /mnt/sdcard也看到cifs文件夹了。ok,我们继续执行挂载命令,当然这次挂载路径改了
                   终端下,busybox mount -t cifs -o username=admin,password=123456 //192.168.7.251 /mnt/sdcard/cifs

                  哈哈,没报错了,cd /mnt/sdcard/cifs,嗯,有文件了,说明成功了。但是怎么中文乱码的。应该是格式不对。加上 iocharset=utf8,如下
                   busybox mount -t cifs -o   username=admin,password=123456,iocharset=utf8 //192.168.7.251 /mnt/sdcard/cifs
                     ok,不会乱码了。


                   2.nfs挂载
                      与cifs挂载差不多
                     在终端下,mount -t nfs -o nolock 192.168.7.4:/home/share /mnt/sdcard/nfs
                     好了,也成功了。

                以上就是修改linux内核的所有步骤了。完结

你可能感兴趣的:(Android)