目的
这篇文章主要测试新唐NUC980(5.10.y内核)访问以太网(PHY为LAN8720A)以及启用SSH。
这篇文章中内容均在下面的开发板上进行测试:
《新唐NUC980使用记录:自制开发板(基于NUC980DK61YC)》
开发板上NUC980 RMII0接口通过LAN8720A(ADDR=0)访问网络。LAN8720A是SMSC公司的以太网PHY芯片。
这篇文章是在下面文章基础上进行的:
新唐NUC980使用记录(5.10.y内核):u-boot & linux & rootfs 编译与烧录测试(基于SD1位置SD卡)
修改内核和设备树以访问以太网
修改内核以支持 LAN8720A :
# cd ~/nuc980-sdk/NUC980-linux-5.10.y/
make menuconfig
修改设备树以支持 ETH0 :
# cd ~/nuc980-sdk/NUC980-linux-5.10.y/
gedit arch/arm/boot/dts/nuc980-dev-v1.0.dts
设备树文件注意需要调整的是将 emac0 节点设置为 okay :
/ {
ahb {
emac0@b0012000 {
status = "okay";
};
};
};
编译内核和设备树:
# 设置编译工具链
# export ARCH=arm; export CROSS_COMPILE=arm-buildroot-linux-gnueabi-
# export PATH=$PATH:/home/nx/nuc980-sdk/buildroot-2023.02/output/host/bin
# 编译生成内核镜像
make uImage
# 可以根据电脑配置使用make -jx等加快编译速度
# 编译生成设备树文件
make dtbs
测试以太网功能:
将生成的内核和设备树文件拷贝到电脑上,再拷贝到SD卡boot分区:
# 拷贝至Windows电脑上
# sudo cp arch/arm/boot/uImage /media/sf_common/
# sudo cp arch/arm/boot/dts/nuc980-dev-v1.0.dtb /media/sf_common/
拷贝完成后将SD开插回开发板,上电测试:
使用 ifconfig -a
显示所有网卡;使用 udhcpc -i eth0
开启网卡并获取IP地址;使用 ifconfig
显示当前启用的网卡。
制作根文件系统并启用SSH
设置启用SSH相关功能:
# cd ~/nuc980-sdk/buildroot-2023.02/
make menuconfig
haveged 用于加速系统启动时 random 功能初始化速度( ssh 功能依赖 random )。
设置密码。底下一行的设置用于设置系统启动后 eth0 自动获取IP地址(不过这个版本中不知道为何不起作用,下面会手动处理该问题)。
配置完成后进行编译:
make
将SD卡插到Ubuntu中,拷贝新的rootfs内容到SD卡:
sudo rm -rf /media/nx/rootfs/*
sudo tar -xf output/images/rootfs.tar -C /media/nx/rootfs/
修改rootfs中部分内容:
修改sshd配置:
sudo gedit /media/nx/rootfs/etc/ssh/sshd_config
需要修改内容如下:
# 32行 允许root用户进行ssh访问
PermitRootLogin yes
# 57行 允许使用密码进行ssh访问
PasswordAuthentication yes
修改网络设置以支持启动时eth0自动获取IP地址:
sudo gedit /media/nx/rootfs/etc/network/interfaces
在文件结尾增加下面内容:
auto eth0
iface eth0 inet dhcp
# pre-up /etc/network/nfs_check
# wait-delay 15
# hostname $(hostname)
测试SSH功能:
将SD开插回开发板,上电测试:
如果是初次启动的话会生成SSH相关密钥,会花一些时间。
SSH除了可以远程访问,还可以使用SFTP和SCP功能,可以通过网络直接访问文件系统或是拷贝文件(甚至可以直接通过网络更新内核和设备树),对开发使用来说非常方便:
总结
对于Linux来说网络和SSH是非常重要的功能,可以极大的提升开发和使用的便利性,越早开启越好。经过上面的操作就可以在NUC980上实现基本的网络功能了。