手头上是块Marvell的板子,flash只有64M,想把Android的文件系统(>70M)放进去那是不可能了,除非大面积裁剪系统。所以
只能将Android的文件放在外部存储器或者通过网络文件系统挂载启动,花了一天研究一下用nfs挂载Android的根文件系统,在此总结下:
1、在主机(server)上安装和配置NFS
安装nfs服务软件
$sudo apt-get isntall nfs-kernel-server
修改nfs配置文件/etc/exports
$sudo emacs exports
添加下面一行到文件中:
/srv *(rw,sync,no_root_squash,no_subtree_check)
/srv是你允许客户机访问的文件路径,*是你允许的客户机IP或机器名(用*表示全体客户都可以访问),()中的参数是访问控制方式:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async nfs在写入数据前可以响应请求
secure nfs通过1024以下的安全TCP/IP端口发送
insecure nfs通过1024以上的端口发送
wdelay 如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
hide 在nfs共享目录中不共享其子目录
no_hide 共享nfs目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID
启动nfs服务
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart
测试nfs服务
$showmount -e
Export list for user:
/srv *
好了到此nfs 的安装和配置工作已经完成,除了可以挂载Android的根文件系统外,我们也可以用一下命令将共享文件挂载到本地磁盘上:
$ sudo mount -t nfs localhostip:/srv /mnt/disk
可以运行mount命令查看是否挂载成功。查看后可以使用以下命令卸载:
$ sudo umount /mnt
2、在/srv中创建和制作android根文件目录
$ sudo mkdir nfs
$sudo mv /root_nfs/* /srv/nfs
关于root_nfs的制作请参考文章
3、设置u-boot和kernel command参数
>>setenv ipaddr 192.168.1.101
>>setenv serverip 192.168.1.100
>>setenv bootargs root=/dev/nfs rootfstype=nfs
rsize=1024,wsize=1024 nfsroot=${serverip}:/srv/nfs/
ip=${ipaddr}:${serverip}::255.255.255.0::eth0:on console=ttyS0,115200
init=/init android video=dovefb:lcd0:1024x600-16@60,lcd1:1024x768-16@60
clcd.lcd0_enable=1 clcd.lcd1_enable=0 pm_disable
>>saveenv
ip和nfsroot根据你实际情况来定。
好了,所有工作都做完了
>>boot享受你的成果吧。
阅读(1769) | 评论(0) | 转发(0) |