SAMA5D3X-EK 嵌入式linux内核编译启动及通过nfs通过网络启动文件系统及文件系统镜像的制作

Uboot相关问题总结

开发板

底板:MYB-SAMA5D3X

核心板:SAMA5D36

U-BOOT配置相关

0 开发环境基本情况说明

0.1开发环境

系统:PC端为win10,在win10下安装virtualBox,virtaulBox里安装ubuntu16.04

主机与虚拟机网络情况如下图:

在这里插入图片描述

其中win10 ip:192.168.137.1

Ubuntu ip:192.168.137.72

0.2开发板情况

开发板底板:MYB-SAMA5D3X

主板:SAMA5D36

1 Uboot ping不通问题

情况说明:

主机PC

ip:192.168.137.1 netmask:255.255.255.0

烧写完uboot直接ping 192.168.137.1不通

1.1解决方法:

1.1.1 设置ethaddr

U-Boot>setenv ethaddr 12:34:56?cd:ef

1.1.2 设置ip

U-Boot>setenv ipaddr 192.168.137.3

此时如果直接ping 192.168.137.1会显示:

host 192.168.137.1 is alive,说明配置成功,PC ping仍ping不通。

1.1.3 设置serverip

U-Boot>setenv serverip 192.168.137.72

(注意因为在使用tftp中开发板是与ubuntu通信,从ubuntu中下载文件,因此这里设置serverip为192.168.137.72,而不因该是192.168.137.1,此处要特别注意)

1.1.4设置autostart

U-Boot>setenv autostart no

1.1.5 保存设置

U-Boot>saveenv

然后按reset重启开发板,此时再次ping 192.168.137.1 显示内容:host 192.168.137.1
is alive

然后PC去ping 192.168.137.3,仍然ping不通。

1.1.6 运行tftp

U-Boot>tftp

此时主机再ping 192.168.137.3发现可以ping通。

2 tftp设置

2.1 开发板tftp客户端设置

注意要设置setenv serverip 192.168.137.72

2.2 ubuntu tftp服务器端设置

接下来,就是要在开发环境上安装TFTP服务器,使开发板可以通过TFTP协议下载的uImage这个文件。在ubuntu下,可以通过下面的命令安装TFTP服务器,这个服务是通过inet监听的。

sudo apt-get install atftpd openbsd-inetd

安装完以后,需要配置一下TFTP的默认查找目录,我将其设定为/srv/tftp。确认/etc/inetd.conf文件中有如下一行:

#:BOOT:TFTP服务主要用于启动。大多数网站 #仅在充当“启动服务器”的计算机上运行。 tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp

因为TFTP服务主要是给UBOOT提供内核镜像文件,为了避免每次内核编译完以后都拷贝到/srv/tftp目录中,在/srv/tftp目录中,建立了一个符号文件,指向/opt/linux/Linux-at91/linux-at91/arch/arm/boot/uImage。

ln -s /opt/linux/Linux-at91/linux-at91/arch/arm/boot/uImage /srv/tftp/uImage

可以通过下面的命令重启inetd,保证这个supper服务器能够监听TFTP端口:

sudo service openbsd-inetd restart

可以通过查看端口确认inetd是否真的在监听TFTP端口:

root@ep-VirtualBox:~#netstat -a |grep tftp

udp 0 0 *:tftp *?

可以通过下面的命令测试一下TFTP服务是否正常工作:

root@ep-VirtualBox:~# tftp localhost

tftp>get uImage

在0.3秒内收到3578106字节。

3 编译内核,设置其可以通过NFS挂载根文件系统

对于sama5d3xek开发板提供的内核源码,解压后直接运行:

#./make_image.sh linux-512mb

对于通用的内核源码,解压后直接:

make menuconfig

关于NFS挂在有关的选项如下:

  1. Networking support->Networking options->IP:kernel level autoconfiguration

注意,这个选项下面的 IP:DHCP support / IP:BOOTP support / IP:RARP aupport
不能选。因为我的开发环境中没有安装 DHCP server。开发板的 IP
是在内核启动参数中指定的。

在这里插入图片描述

  1. File systems -> Network File System -> NFS client support

File systems -> Network File System -> NFS client support for NFS version 3

File systems -> Network File System ->Root file system on NFS

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SmRs1XAQ-1571718363978)(media/f2eeb4eef039ab29f0a2c9d237901059.png)]

4 设置nfs服务器

接下来是配置NFS服务器,用于开发板上内核启动以后挂载开发环境的ROOTFS。通过下面的命令安装nfs服务器:

sudo apt-get install nfs-kernel-server

安装完成以后,还需要修改/etc/exports文件,设置NFS共享的文件目录。我们需要将/opt/rootfs设置为NFS共享目录。

# Example for NFSv2 and NFSv3:
#/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#Example for NFSv4:
#/srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
#/srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
/opt/rootfs 192.168.137.3(rw,no_root_squash,no_subtree_check)

注:192.168.137.3为开发板的ip。如果此处设置为了开发板ip,下面本机测试时将挂在deny。要想本机挂载测试成功可将ip改为*

每一次修改/etc/exports这个文件,都需要重新启动NFS服务器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值