瑞芯微Rockchip开发者社区
直播中

贾永世

7年用户 1812经验值
私信 关注
[经验]

[Firefly-RK3399] 网络启动Kernel与Buildroot文件系统

网络启动,是用 TFTP 在服务器下载内核、dtb 文件到目标机的内存中,同时可以用 NFS 挂载网络根文件系统到目标机上,实现目标机的无盘启动。

准备工作:

Firefly-RK3399 板卡;
路由器、网线;
安装有 NFS 和 TFTP 的服务器;
一份制作好的根文件系统。

注:示例中使用的是 Ubuntu 系统的 PC 机作为服务器,通过路由器和网线实现与设备的连接。

1 服务器部署

1、在服务器上部署 TFTP 服务:
假设 TFTP 目录是 /tftpboot 。

2、在服务器上部署 NFS 服务:
然后将制作好的根文件系统复制到网络文件系统目录中,假设网络文件系统目录是 /nfs/rootfs 。

2 内核的配置

内核网址
当前内核 git-commit:3710f06d1cc4e0a35d686d0806c42f0409084cdd

如果要做到挂载网络根文件系统,需要在内核中做相关配置,并在 dts 中修改相关挂载根文件系统的配置。

首先进行内核配置,在内核目录中执行 make menuconfig,选择相关配置:


注意:配置完成后要覆盖原来的config文件!否则编译的时候还是使用原来的config文件。

修改 rk3399-linux.dtsi 配置,在 dts 文件中修改 chosen 节点下的 bootargs 参数,选择使用 NFS 挂载远程根文件系统,内容如下。

源内容:


修改后:

编译内核:


编译完成后,将编译好的内核文件 boot.img 和 rk3399-firefly.dtb 文件复制到 /tftpboot 目录中:


详细说明可以参考内核目录中的 kernel/Documentation/filesystems/nfs/nfsroot.txt

3 U-Boot设置

请先确保目标机网线已插入,接入到服务器的局域网内。

目标机启动进入 U-Boot 命令行模式,设置以下参数:
1.jpg
2.jpg
在开机内核日志中可见:

说明已经挂载上了网络根文件系统。

注意事项

确保 TFTP 服务器、NFS 服务器可用;

确保目标机先插入网线后在开机,且和服务器在同一局域网内,如果是直连目标机和服务器,请使用交叉网线;

内核配置中,Root file system on NFS 依赖于 IP: kernel level autoconfiguration 选项,请先选择 IP: kernel level autoconfiguration,之后才可以找到 Root file system on NFS 选项;

在 U-Boot 命令行中,请确认 boot.img 烧录地址和 dtb 文件烧录地址。(提示:boot.img 的文件结构中,开头有2k的头文件,然后才是 kernel。所以在 TFTP 下载内核到目标机时,要下载到对应 kernel 地址减去0x0800的地址上);

在设置挂载远程根文件系统时,nfsroot=192.168.31.106:/nfs/rootfs,v3 中的 v3 代表 NFS 版本信息,请添加上以避免出现挂载不成功的问题。

更多回帖

发帖
×
20
完善资料,
赚取积分