英伟达 jetson nano 从NFS启动,使用英伟达提供的rootfs根文件系统

0、目标

为了方便驱动阶段的开发,并且使用英伟达提供的上层应用,这里希望使jetson nano 从NFS启动,同时使用英伟达提供的rootfs根文件系统。

1、硬件准备

确保jetson nano 板子和开发主机之间使用网线进行连接(保持板子和开发主机的IP地址在同一网段,板子端在u-boot阶段设置,开发主机侧可以设置虚拟网卡),并且板子的调试口通过串口转USB连接到开发主机;确保板子能够停在u-boot启动阶段(方便设置启动参数、进行tftp传输)。

2、关键操作

1)拷贝官方bsp的Linux_for_Tegra目录下的rootfs;cp -r 拷贝到/nfs/rootfs_nvidia/rootfs,修改nfs服务(在文件/etc/exports 末尾添加 /nfs/rootfs_nvidia/rootfs *(rw,sync,no_subtree_check,no_root_squash));

2)取消英伟达自带的登录初始化操作;在英伟达 Linux_for_Tegra/tools 下使用sudo ./l4t_create_default_user.sh -u ubuntu -p nvidia -a,然后再

sudo chroot /nfs/rootfs_nvidia/rootfs /bin/bash
systemctl disable nv-oem-config.service
systemctl disable nv-oem-config.target
systemctl disable nv-oem-config-debconf.service
exit

3)最后用一开始提供的uboot命令,成功进入ubuntu系统;但此时发现没有加载任何内核模块,于是有了下一步;

4)使用下面命令,发现modules目录下的文件名与当前内核不匹配,

uname -r
ls /lib/modules/$(uname -r)

于是,进入到bsp的kernel源码目录,进行安装模块到我们的nfs目录:

export INSTALL_MOD_PATH=/nfs/rootfs_nvidia/rootfs
sudo -E make ARCH=arm64 modules_install

完成后,在/nfs/rootfs_nvidia/rootfs下得到4.9.253,删掉原来的4.9.253-tegra,最后重新从nfs启动即可成功。

5)解决sudo无法使用的问题:

//在开发机 x86 虚拟机 chroot 修复 sudo 权限
sudo chroot /nfs/rootfs_nvidia/rootfs /bin/bash
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo

3、u-boot启动参数设置

//新的 测试环境
setenv ipaddr 192.168.137.9 
setenv serverip 192.168.137.118  
pci enum; pci //激活网卡
ping 192.168.137.118 //测试网络连接

setenv bootargs  root=/dev/nfs rw nfsroot=192.168.137.118:/nfs/rootfs_nvidia/rootfs,v3 console=ttyS0,115200 init=/sbin/init ip=192.168.137.9 

setenv nfs_bootcmd  pci enum \; pci \; ext4load mmc 0:1 0x84000000 /home/zhan/Image \; tftp 0x83100000 tegra210-p3448-0000-p3449-0000-b00.dtb \; booti 0x84000000 - 83100000
run nfs_bootcmd

最终成功进入ubuntu,如下图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值