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

2023-11-07

目的

这篇文章主要测试访问以太网(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上实现基本的网络功能了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

新唐NUC980使用记录:访问以太网(LAN8720A) & 启用SSH 的相关文章

  • 使用 .htaccess 启用 PHP 短标签

    我在自己的 Centos 服务器上设置了 Apache 并具有多个虚拟 Web 服务器 并且我希望仅为位于以下位置的其中一个 Web 服务器启用 PHP 短标记 var www ostickets html 我可以通过添加成功启用短标签sh
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • “./somescript.sh”和“. ./somescript.sh”有什么区别

    今天我按照一些说明在 Linux 中安装软件 有一个需要首先运行的脚本 它设置一些环境变量 指令告诉我执行 setup sh 但是我执行时犯了一个错误 setup sh 所以环境没有设置 最后我注意到了这一点并继续进行 我想知道这两种调用脚
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 在Linux中创建可执行文件

    我计划做的一件事是编写 非常简单的 Perl 脚本 并且我希望能够在不从终端显式调用 Perl 的情况下运行它们 我明白 要做到这一点 我需要授予他们执行权限 使用 chmod 执行此操作非常简单 但它似乎也是一个稍微费力的额外步骤 我想要
  • 即使使用 rvm pkg install zlib 后也无法加载此类文件 -- zlib

    我使用 rvm 安装了 zlib 包和 ruby 1 9 3 但是每当我尝试安装时 它说宝石cannot load such file zlib 我用来安装的命令是 rvm install 1 9 3 rvm pkg install zli
  • 期待、互动,然后再次期待

    有几篇关于相同内容的帖子 但我仍然无法使我的期望脚本正常工作 我的目的是自动化一切 但保留用户输入的密码 所以脚本有 3 个部分 自动登录 给予用户交互以输入密码 将控制权交还给 Expect 脚本以继续工作 所以我有一个将生成的脚本 其中
  • 为什么“script”命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换删除它们?

    在linux上 使用bash shell 当我使用script命令时 生成的文件称为typescript 当我用 vim 打开该文件时 每一行都包含 M字符 并且有几行 由于我的彩色命令提示符 包含一个字符 我想用任何东西替换这些字符 从而
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • SVN 不断提示我输入密码并拒绝缓存我的凭据

    环境 Eclipse Indigo Ubuntu 11 04 Subclipse 1 6 SVN 客户端 Subclipse RabbitVCS 我通过 svn ssh 连接 我的网址如下所示 svn ssh 我的名字 我的域名 路径 我可
  • 无法在 PHP 中使用 SFTP

    我正在用 PHP 编写一个简单的 SFTP 客户端 因为我们需要通过 n 个远程服务器以编程方式检索文件 我正在使用 PECL SSH2 扩展 不过 我遇到了障碍 php net 上的文档建议您可以这样做 stream fopen ssh2
  • 为什么 RHEL 上的 bash 中 `read -t` 没有超时?

    Why read t在 RHEL5 或 RHEL6 上从管道读取时不会超时 这是我的示例 在从管道读取数据时 我的 RHEL 盒子不会超时 tail f logfile log grep something read t 3 variabl
  • 如何更改 Kubernetes 中的文件系统观察程序限制 (fs.inotify.max_user_watches)

    我在用着pm2 https github com Unitech pm2查看保存我的应用程序服务器的 NodeJS 程序源代码的目录 该程序在 Kubernetes 集群中运行 但是 我收到此错误 ENOSPC System limit f
  • Docker 容器可以访问 DNS,但无法解析主机

    我在运行 docker 容器时遇到一个有趣的问题 突然间 我无法从容器内解析 DNS 这是一个概要 一切都没有解决 apt get pip 一次性 ping 容器等正在运行docker run it dns 8 8 8 8 ubuntu p
  • 如何从 Linux 命令行打开 Sublime Text 2 文件到选项卡,而不是新窗口

    我有 ST2 设置 这样我就可以执行 sublime file txt 它将在 ST2 窗口中打开 但是我怎样才能让它在当前打开的窗口的新选项卡中打开呢 尝试 Sublime 命令行帮助 subl 帮助 Sublime Text 2 内部版
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能

随机推荐

  • 判断当前是否是锁屏状态

    KeyguardManager mKeyguardManager KeyguardManager getSystemService KEYGUARD SERVICE if mKeyguardManager inKeyguardRestric
  • JDBC连接数据库出现错误:Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol

    JDBC连接数据库出现错误 Caused by javax net ssl SSLHandshakeException No appropriate protocol protocol is disabled or cipher suite
  • 数学建模(十)-------关联分析类--------回归分析

    https www cnblogs com sumuncle p 5647722 html 七种回归模型 感觉是机器学习中特别是模式识别的数学基础 所以还是值得看一下的 https www cnblogs com nxld p 612323
  • Easyx教程(一)——下载及创建窗口

    关于用C 做2D游戏 C 并没有提供专门的库 但是我们可以借助第三方库来实现2D游戏的制作 例如 cocos2d Easyx OpenGL 今天就给大家推荐其中一个我认为最简单 最好用的2D游戏引擎 Easyx 一 Easyx简介 Easy
  • 他文献查到凌晨两点,我用Python十分钟搞定!

    大家好 我是爱学习的王饱饱 对于应届毕业生来说 今年一定是难熬的一年 本来找工作 写论文就已经是两座大山了 还要面临论文无指导的额外压力 这让我想到了去年毕业的表弟 当时他为了完成论文 摔烂了三个鼠标 为了找一些数据资料 他经常需要同时点开
  • 关于选择FFmpeg的“git master build”还是“release build”

    小问题 写下来备忘 之前在 使用FFmpeg合并 解密 下载m3u8文件转为mp4格式 当中 以及在 可以提高DeepFaceLab DeepFake 合成最终视频速度的方法 当中 都提到了FFmpeg 大家都在用的非常好的工具 我是从官方
  • Flutter插件开发-(进阶篇)

    一 概述 Flutter也有自己的Dart Packages仓库 插件的开发和复用能够提高开发效率 降低工程的耦合度 像网络请求 http 用户授权 permission handler 等客户端开发常用的功能模块 我们只需要引入对应插件就
  • ell服务器专用pe系统,GitHub - elltor/smpe-admin: 后端通用开发框架

    SMPE ADMIN后台管理系统 项目简介 一个基于EL ADMIN Spring Boot 2 1 0 Mybatis Plus JWT Spring Security Redis Vue的前后端分离的后台管理系统 开发文档 待完善 默认
  • 集群架构总结(Kafka、redis,zk,es)

    ZK集群 1 zk集群节点可见 通过配置文件达到节点间相互可见 2 为什么集群设置奇数个节点 1 奇数节省资源 zk容错 zk节点剩下的个数必须要大于挂掉的节点 大于n 2 整个集群才可用 5节点容错2个 6节点容错2个 2 奇数节点集群可
  • CPPUTest 单元测试框架(针对 C 单元测试的使用说明)

    CPPUTest 虽然名称上看起来是 C 的单元测试框架 其实它也是支持测试 C 代码的 本文主要介绍用CPPUTest来测试 C 代码 C 没用过 平时主要用的是C C 相关的内容都省略了 本文基于 debian v7 6 x86 64
  • 2023零基础 Python 学习路线图,转行学Python让你少走弯路~

    这是我刚开始学习python时的一套学习路线 从入门到上手 不敢说精通 哈哈 希望对大家有帮助哈 大家需要高清得python学习路线可以私信我 学习 即可获取 一 Python入门 环境搭建 变量 数据类型 二 Python运算符 条件结构
  • 小程序常见的面试题

    小程序常见的面试题 1 简单描述下微信 程序的相关 件类型 答 微信 程序项 结构主要有四个 件类型 如下 WXML 是框架设计的 套标签语 结合基础组件 事件系统 可以构建出 的结构 内部主要是微信 定义的 套组件 WXSS WeiXin
  • Linux操作系统之进程间通讯—共享内存与消息队列

    文章目录 一 共享内存 1 共享内存的原理 2 共享内存的实现 三 消息队列 1 消息队列原理 2 消息队列实现 一 共享内存 1 共享内存的原理 共享内存为多个进程之间共享和传递数据提供了一种有效的方式 共享内存是先在物理内存上申请一块空
  • 2.linux git显示分支名

    linux git显示分支名 linux git显示分支名 解决linux里面git不会显示分支名 1 在 bash profile 里面添加 display the git branch name function git branch
  • 视觉SLAM理论与实践第四节课习题

    4 矩阵微分 2 分 约 1 5 小时 在优化中经常会遇到矩阵微分的问题 例如 当 变量为向量 x 求标量函数 u x 对 x 的导数时 即 为矩阵微分 通常线性代数教材不会深 探讨此事 这往往是矩阵论的内容 我在 ppt 录下为你准备了
  • ubuntu18一直紫屏,无法进入图形界面

    ubuntu18一直紫屏 无法进入图形界面 一直紫屏的原因 解决方法 首先进入想办法进入桌面环境 第一种方法 第二种方法 然后修改一些配置文件 一直紫屏的原因 使用apt upgrade更新系统后 出现桌面卡死 很是纳闷 也重装了两次系统
  • ChatGPT研究分享:机器第一次开始理解人类世界

    0 为什么会对ChatGPT感兴趣 一开始 我对ChatGPT是没什么关注的 无非就是有更大的数据集 完成了更大规模的计算 所以能够回答更多的问题 但后来了解到几个案例 开始觉得这个事情并不简单 我先分别列举出来 具体解读在文末说明 1 C
  • ChatGPT简单介绍

    div class markdown views div
  • Git Extensions的安装与使用

    一 介绍 Git Extensions是一个工具包 旨在使Windows下的Git更直观 功能 Git的Windows资源管理器集成 功能丰富的Git用户界面 32位和64位支持 二 安装 csdn下载地址 GitExtensionhttp
  • 新唐NUC980使用记录:访问以太网(LAN8720A) & 启用SSH

    文章目录 目的 修改内核以访问以太网 制作根文件系统并启用SSH 总结 目的 这篇文章主要测试访问以太网 PHY为LAN8720A 以及启用SSH 这篇文章中内容均在下面的开发板上进行测试 新唐NUC980使用记录 自制开发板 基于NUC9