主题 : 用uboot通过nfs一键启动Linux 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 39247
精华: 2
发帖: 51
金钱: 355 两
威望: 71 点
贡献值: 2 点
综合积分: 142 分
注册时间: 2011-03-07
最后登录: 2015-05-31
楼主  发表于: 2011-03-26 23:10

 用uboot通过nfs一键启动Linux

琢磨了一个下午,终于理解了uboot启动精妙之处!今天我真正实现了nfs一键启动Linux(板子:Tiny6410)

这次实验源于我的nand flash有坏区,烧写根文件系统时总是会出现有些块被skip掉(还有烧写超过125M的大文件系统总是烧写到一半就停掉,还在nand flash首部分没有坏掉)。

步骤:
1,、搭载nfs服务器,把光盘的根文件系统rootfs压缩包解压到一个特定区域,譬如我的是/opt/rootfs,然后配置exports文件添加/opt/rootfs     *(rw,sync,no_root_squash)一行,再重启nfs服务。
2、保证你的板子ip地址与服务器地址处于同一个网段,我的服务器地址192.168.1.111,板子地址是192.168.1.70。
3、拷贝zImage_n43(光盘自带)到一个特定目录下,为了方便,我放在了/opt/rootfs/root/下。
4,、连接终端,给板子上电,停留到uboot菜单界面,按q进入shell命令行格式,输入命令setenv bootcmd nfs c0008000 192.168.1.111:/opt/rootfs/zImage_n43 /; bootm c0008000,再saveenv一下。
5、重启板子,可看到终端出现载入系统映像的过程。


由于时间问题,我没有上图。


这个方法真的不错,可以在不把系统映像烧写到nand flash的情况下启动Linux,当然根文件系统就更不用说了,当我们的nand flash不够用时,网络可以帮助我们。
至于基于Android的Linux有些不一样,我正在研究,希望有经验的童鞋给点提示。
级别: 风云使者
UID: 36096
精华: 3
发帖: 2513
金钱: 14075 两
威望: 2815 点
贡献值: 3 点
综合积分: 5086 分
注册时间: 2011-01-11
最后登录: 2015-11-15
1楼  发表于: 2011-03-27 14:47
顶!
极度缺钱,求捐赠……支付宝兼邮箱:huming2207@qq.com
会当凌绝顶,一览众山小!
级别: 总版主
UID: 2
精华: 17
发帖: 1655
金钱: 13860 两
威望: 5369 点
贡献值: 17 点
综合积分: 3650 分
注册时间: 2008-01-01
最后登录: 2024-02-17
2楼  发表于: 2011-03-27 15:44

 回 1楼(huhu2207) 的帖子

感谢分享,顶!
友善之臂淘宝直销店:http://shop34928758.taobao.com

手机:13560352861(杨工),QQ:10108270
级别: 新手上路
UID: 36450
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2011-01-16
最后登录: 2013-11-26
3楼  发表于: 2011-04-07 10:53
学习啦
级别: 新手上路
UID: 38945
精华: 0
发帖: 41
金钱: 205 两
威望: 41 点
贡献值: 0 点
综合积分: 82 分
注册时间: 2011-03-03
最后登录: 2015-09-06
4楼  发表于: 2011-04-21 12:16
MARKing
级别: 新手上路
UID: 46145
精华: 0
发帖: 21
金钱: 110 两
威望: 22 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2011-05-10
最后登录: 2017-02-25
5楼  发表于: 2011-05-14 18:21
楼主,怎么改回来从Nand启动啊
级别: 新手上路
UID: 59094
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2011-11-18
最后登录: 2011-11-22
6楼  发表于: 2011-11-18 19:16
回复楼上:
setenv bootcmd nand read 0x32000000 0x200000 0x300000\;bootm 0x32000000

将nand flash地址0x200000的内核,读取到0x32000000,读取的大小为0x300000,并在0x32000000的sdram中启动.