本帖最后由 为祢变坏 于 2013-9-25 17:22 编辑
---利用uboot启动远程Kernel(TFTP)以及挂载远程ROOTFS(NFS)
所谓的开发环境,就是启动让开发板从网络加载内核和文件系统,这样的话编译好内核就能直接开始运行,不用烧写到开发板,文件系统也是的,直接放到指定目录就行了,不用写入到nand. 以下两个实验的虚拟机环境是ubutu10.4虚拟机系统 ip为192.168.1.8,网关为192.168.1.1.连接方式为桥接。 (通过ifconfig可以查看) 一.设置从网络加载内核 1.为开发板烧写u-boot 2.搭建虚拟机的tftp环境 a.将虚拟机的网络设置为brige模式 b.设置虚拟机ip、开发板ip、xp网卡ip 在同一网段 c.sudo apt-get install tftpd-hpa tftp-hpa 安装tftp服务 d.创建tftp服务根目录 sudo mkdir -p /opt/TQ2440/tftpboot sudo chmod 777 /opt/TQ2440/tftpboot -R e. sudo vi /etc/default/tftpd-hpa f.重启服务器 : sudo /etc/init.d/xinetd restart sudo /etc/init.d/tftpd-hpa restart g.将zImage文件拷贝到/opt/TQ2440/tftpboot目录 h.启动开发板进入命令行状态 tarena#setenv ethaddr 11:22:33:44:55:66 tarena#setenv ipaddr 192.168.1.6 tarena#setenv serverip 192.168.1.8 tarena#setenv gatewayip 192.168.1.1 tarena # setenv bootcmd tftp c0008000 zImage \;bootm c0008000 saveenv i. 设置xp上连接开发板的网卡的ip跟板子和虚拟机在同一网段 j.重启开发板即可 PS: 测试搭建的服务器,假设自己的机器的IP是192.168.1.8,重启服务器后,在tftp工作目录下,即tftpboot下建立测试文件test.c,然后打开另一个终端,执行tftp 192.168.1.8,然后get test.c,输入q,退出tftp.即可在当前目录下看见test.c文件了。
常见问题:
1.如以上操作均无误,但是传输失败,则检查防火墙是否关闭。
2. 使用虚拟机和主机通信时,虚拟机的网络连接要设置为桥接方式,否则虚拟机连接不到主机。
3. 如出现
tftp> get test.c
Transfer timed out.
则说明tftp 服务器没有运行起来,重启试试,不行的话就是哪里出现了问题,卸掉重装。
二.nfs方式加载根文件系统 a.sudo apt-get install nfs-kernel-server nfs-common portmap安装nfs服务 b.创建nfs服务根目录 sudo mkdir /opt/TQ2440/nfsroot sudo chmod 777 /opt/TQ2440/nfsroot c.配置nfs服务sudo vi /etc/exports增加如下内容 d.重启服务 sudo /etc/init.d/portmap restart sudo /etc/init.d/nfs-kernel-server restart e.测试nfs
此时可以运行以下命令来显示一下共享出来的目录:
$showmount -e 
或者可以使用以下命令把它挂载在本地磁盘上,例如将/opt/TQ2440/nfsroot挂载到/home下:
$sudo mount -t nfs 192.168.1.8:/opt/TQ2440/nfsroot /home 可以运行df命令查看是否挂载成功。 使用以下命令卸载:
$ sudo umount /home f.将rootfs.tar.gz解压到/opt/TQ2440/nfsroot/ 找到linuxrc所在的目录 应该是: /opt/nfsroot/rootfs g.启动开发板设置启动参数 tarena# setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/linuxrc nfsroot=192.168.1.8:/opt/nfsroot/rootfs ip=192.168.1.6:192.168.1.8:192.168.1.1:255.255.255.0::eth0:on (注意是自动换行的) f.重启开发板即可 三.用secureCRT串口连接开发板 SecureCRT下的串口不能输入 用串口配置交换机的时候,出现的问题: 用secureCRT建了一个串口COM1后,连接上开发板后,可以正确接受和显示串口的输出,但是按键输入无效。 解决方法: Session Options -> Connection -> Serial -> Flow Control,将原先默认选中的 RTS/CTS取消掉,再重新connect开发板,再次连上后,此时就可以从键盘输入了。
|