文章目录

  • 目的
  • 修改内核以访问以太网
  • 制作根文件系统并启用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 dhcppre-up /etc/network/nfs_checkwait-delay 15hostname $(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上实现基本的网络功能了。

新唐NUC980使用记录:访问以太网(LAN8720A) 启用SSH相关推荐

  1. 新唐NUC980使用记录(5.10.y内核):访问以太网(LAN8720A) 启用SSH

    文章目录 目的 修改内核和设备树以访问以太网 制作根文件系统并启用SSH 总结 目的 这篇文章主要测试新唐NUC980(5.10.y内核)访问以太网(PHY为LAN8720A)以及启用SSH. 这篇文 ...

  2. 新唐NUC980使用记录:在用户应用中使用GPIO

    文章目录 目的 基础说明 在终端中操作 使用程序操作 总结 目的 GPIO是最基础的外设,使用频率也非常高,这篇文章将简单体验在NUC980 Liunx用户应用中使用GPIO功能. 这篇文章中内容均在 ...

  3. 新唐NUC980使用记录:开发环境准备与编译配置基础说明

    文章目录 目的 开发环境准备 调试烧录环境 开发编译环境 编译工具链 uboot 和 linux buildroot 应用程序示例 NUC980 NuWriter Linux command line ...

  4. 新唐NUC980使用记录:U-Boot Linux 编译与烧录(基于SPI NAND)

    文章目录 目的 U-Boot编译 U-Boot环境变量 Linux编译 默认设置 使用SPI NAND剩余分区 使用SPI NAND YAFFS2作为rootfs 打包镜像 总结 目的 这篇文章中将测 ...

  5. 新唐NUC980使用记录:U-Boot Linux 编译与烧录(基于SD1位置SD卡)

    文章目录 目的 SD卡分区 U-Boot编译 U-Boot环境变量 Linux编译 默认设置 使用SD卡剩余分区 使用SD卡分区存放rootfs 制作系统镜像 总结 目的 这篇文章中将测试在 NUC9 ...

  6. 新唐NUC980设置SSH密码登录

    功能开启 首先需要开启SSH功能,进入配置界面: $ cd NUC970_Buildroot-master/ $ make menuconfig 选择Target packages > Netw ...

  7. 新唐NUC980配置ntp功能

    选择ntp功能 进入内核编译文件夹 $cd ~/NUC970_Buildroot-master 选择ntp功能 $make menuconfig 选择Target packages > Netw ...

  8. 新唐科技|I9160FI|低功耗|音频录制|回放优化|ARM-Cortex-M0 32位芯片:概述及资料

    目录 芯片实拍图 目标应用: 主要特点: 官网免费获取Keil License 导入LIC: 开源仓库地址: 新唐单片机开发keil常用pack下载 新唐开发板资料 新唐开发相关论坛 偶然看到一款新唐 ...

  9. n76e885_新唐N76E003,N76E616烧录,调试各种问题集【坑集】

    新唐N76E003,N76E616烧录,调试各种问题集[坑集] 芒果 • 2018 年 10 月 24 日 这篇博文用来记录学习新唐单片机时遇到的问题以及解决的过程和方法.当然也有各种坑. 希望这篇文 ...

最新文章

  1. 绝不是剧透!全角度解析EMC Unity绝妙重头戏
  2. 【测试】RPA产品初体验
  3. dataframe保存为txt_如何批量查找并修改替换 Word、PPT、Excel、PDF、TXT等文件的内容...
  4. r语言去除字符串两端多余空格
  5. VSCode插件开发全攻略
  6. 对 BatchNormalization 中 Internal Convariate Shift 的理解
  7. 对象间相互调用时互相控制的几种方法
  8. cmake指定输出安装目录
  9. linux bzip2 压缩目录,linux的gzip、bzip2、xz三种压缩使用方法工具介绍
  10. [Mac OS] Mac OS X for x86 下载
  11. gwt - inherit module问题
  12. java正则表达式控制格式_“如果Java受到一两个大型供应商的控制,则可能会遭受挫折”...
  13. element表格 频繁切换维度,导致表头渲染有误
  14. CSR867x — 说说蓝牙音频常用的编解码格式
  15. dns服务器地址显示fec0,DNS服务器地址为fec0
  16. du 查看文件大小命令
  17. 金榜提名前端小游戏教程(含冒泡,canvas烟花特效,适配pc,手机)内含源码
  18. How to GROUD?
  19. 运营笔记:老板最不关心的就是微信公众号外包报价表!
  20. 暴风雨已至!网易云音乐暂停IPO,上市受阻的背后!

热门文章

  1. metasploit魔鬼训练营学习笔记-3网络漏洞扫描
  2. 2015,6月 嘉杰信息杯比赛总结
  3. Python日常办公10大小技巧
  4. 高中数学必修2;解析几何高考热点_逆袭高考
  5. 树莓派上使用百度网盘
  6. 中文命名实体识别(tensorflow,BiLSTM+CRF)
  7. 360浏览器兼容模式代码
  8. XSS攻击(出现的原因、预防措施)
  9. 彻底卸载MySQL Connector Net
  10. 宝塔面板系统盘迁移到数据盘