1. uboot修改
默认的SDK下,uboot未启用以太网功能,因此需要启用以太网。
diff --git a/configs/rk3288_defconfig b/configs/rk3288_defconfig
index 80c444a128..b47c0b4062 100644
--- a/configs/rk3288_defconfig
+++ b/configs/rk3288_defconfig
@@ -117,3 +117,6 @@ CONFIG_RK_AVB_LIBAVB_USER=y
CONFIG_OPTEE_CLIENT=y
CONFIG_OPTEE_V1=y
CONFIG_TEST_ROCKCHIP=y
+CONFIG_DM_ETH=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_GMAC_ROCKCHIP=y
2. kernel修改
内核需要修改bootargs参数,修改成如下:
chosen {
bootargs = "earlyprintk console=ttyFIQ0 root=/dev/nfs rw rootwait";
};
另外需启用nfs rootfs文件系统的配置,config配置如下:
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
CONFIG_ROOT_NFS=y
3. PC端tftpboot配置
3.1 部署tftp服务
sudo apt-get install tftpd-hpa
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot
3.2 修改TFTP服务器的配置文件/etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" #这个根据用户实际的 tftp 目录设置
TFTP_ADDRESS="0.0.0.0:69"
TDTP_OPTIONS="-c -s -l"
保存后重启tftp服务
sudo service tftpd-hpa restart
3.3 将内核编译后的dtb文件和zImage文件拷贝到tftpboot目录
cp kernel/arch/arm/boot/dts/rk3288-C3-linux.dtb /tftpboot/
cp kernel/arch/arm/boot/zImage /tftpboot/
4. PC端NFS配置
4.1 部署NFS服务
sudo apt-get install nfs-kernel-server
sudo mkdir /nfs
sudo chmod 777 /nfs
cd /nfs
sudo mkdir rootfs
sudo chmod 777 rootfs
4.2 然后将制作好的根文件系统复制到 /nfs/rootfs 目录中。(根文件系统的制作可以参考firefly的文档:Ubuntu 根文件系统的制作)
也可使用rsync同步板端文件系统
sudo rsync -avx root@RK3288板端IP:/ /nfs/rootfs
4.3 添加NFS共享目录,修改/etc/exports文件
/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)
保存后重启服务
sudo /etc/init.d/nfs-kernel-server restart
5. RK3288板端启动配置参数
开机后,长按ctrl+c键,进入uboot命令行模式,输入以下命令:
ipaddr 表示本机IP
serverip 表示tftp服务器ip
bootargs用于传递cmdline到内核
bootcmd用于执行内核和dtb文件的加载
setenv ipaddr 192.168.2.250
setenv serverip 192.168.2.175
setenv bootargs root=/dev/nfs rw nfsroot=192.168.2.175:/nfs/rootfs,v3 ip=dhcp
setenv bootcmd 'tftpboot 0x2008000 zImage; tftpboot 0x1f00000 rk3288-C3-linux.dtb; bootz 0x2008000 - 0x1f00000'
run bootcmd