新唐NUC980使用记录:访问以太网(LAN8720A) & 启用SSH

目的

这篇文章主要测试访问以太网(PHY为LAN8720A)以及启用SSH。

这篇文章中内容均在下面的开发板上进行测试:
《新唐NUC980使用记录:自制开发板(基于NUC980DK61YC)》
开发板上NUC980 RMII0接口通过LAN8720A(ADDR=0)访问网络。LAN8720A是SMSC公司的以太网PHY芯片,所以后面驱动文件也以这个命名。

这篇文章是在下面文章基础上进行的:
《新唐NUC980使用记录:开发环境准备与编译配置基础说明》
《新唐NUC980使用记录:U-Boot & Linux 编译与烧录(基于SD1位置SD卡)》

修改内核以访问以太网

访问以太网需要对Linux Kernel进行调整重新编译。

cd ~/nuc980-sdk/ 
cd NUC980-linux-4.4.y/

修改配置选项:

make menuconfig

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

除了上面的配置外还需要修改内核中一行代码:

# cp drivers/char/random.c drivers/char/random.c.original
gedit drivers/char/random.c

第927行由 !time_after(now, fast_pool->last + HZ)) 修改为下面这样:

!time_after(now, fast_pool->last + HZ) && nonblocking_pool.initialized)

调整保存后重新编译拷贝内核:

export PATH=$PATH:/home/nx/nuc980-sdk/arm_linux_4.8/bin
make uImage
# cp ../image/980uimage /media/nx/BOOT/

经过上面的调整就可以访问网络了:
使用 udhcpc -i eth0 开启网卡并自动获取IP地址
在这里插入图片描述

前面调整中对内核代码的修改主要是为了后面启用网络和SSH服务时的优化。如果不修改那么内核启动过程中会在network或sshd启动过程中阻塞几分钟,直至出现 random: nonblocking pool is initialized 后才会继续,比如下面:

Initializing random number generator: OK
Saving random seed: random: dd: uninitialized urandom read (512 bytes read, 7 bits of entropy available)
OK
Starting network: OK # 这里会阻塞很久,直到下面一行出现
random: nonblocking pool is initialized
Starting sshd: OK

按照前面方式对内核代码调整后 random: nonblocking pool is initialized 很快就会出现。相关内容可以参考下面:
https://lore.kernel.org/lkml/20150713202504.GF32078@Sligo.logfs.org/

制作根文件系统并启用SSH

SSH功能需要在rootfs中添加相关程序(openssh),这里直接使用buildroot制作包含openssh的rootfs。

cd ~/nuc980-sdk/ 
cd buildroot-2022.02.3/

修改配置选项:

make menuconfig

配置目标平台:
在这里插入图片描述
配置编译工具链:
在这里插入图片描述
启用SSH功能:
在这里插入图片描述
设置root用户密码 & 配置eth0自动通过DHCP服务获得IP:
在这里插入图片描述
上面的Network interface to configure through DHCP选项设置后会在生成的rootfs的 /etc/network/interfaces 文件后会添加下面内容:

auto eth0
iface eth0 inet dhcp
  pre-up /etc/network/nfs_check
  wait-delay 15
  hostname $(hostname)

配置完成后直接编译即可:

make

初次编译过程比较漫长,期间还会自动下载相关组件(如果自动下载失败可以手动下载放到dl文件夹中,然后重新编译)。

编译完成后 output 目录下的 host 目录中就是编译rootfs用的交叉编译工具链(toolchain); output 目录下的 images 目录中的 rootfs.tar 就是生成的根文件系统。

上面生成的交叉编译工具链也可以用于后期编译 application 使用,可以使用下面方式将它临时添加到环境:

# export PATH=$PATH:/home/nx/nuc980-sdk/buildroot-2022.02.3/output/host/bin

编译生成根文件系统后替换使用即可:

sudo rm -rf /media/nx/rootfs/*
sudo tar -xf output/images/rootfs.tar -C /media/nx/rootfs/

新的根文件系统中需要对sshd的配置文件稍作修改:

sudo gedit /media/nx/rootfs/etc/ssh/sshd_config

要修改的内容如下:

# 32行 允许root用户进行ssh访问
PermitRootLogin yes

# 57行 允许使用密码进行ssh访问
PasswordAuthentication yes

处理完成后就可以进行测试了:
如果是初次启动的话会在 ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 这里花一些时间。
在这里插入图片描述

SSH除了可以远程访问,还可以使用SFTP和SCP功能,可以通过网络直接访问文件系统或是拷贝文件(甚至可以直接通过网络更新内核),对开发使用来说非常方便:
在这里插入图片描述
在这里插入图片描述

总结

对于Linux来说网络和SSH是非常重要的功能,可以极大的提升开发和使用的便利性,越早开启越好。经过上面的操作就可以在NUC980上实现基本的网络功能了。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值