arm海思启动udev的错误

这篇具有很好参考价值的文章主要介绍了arm海思启动udev的错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

近日在配置HI3531D的文件时发现错误

random: udevd: uninitialized urandom read (16 bytes read)
random: udevd: uninitialized urandom read (16 bytes read)

udev 是一个为你的计算机提供设备事件的 Linux 子系统。通俗来讲就是,当你的计算机上插入了像网卡、外置硬盘(包括 U 盘)、鼠标、键盘、游戏操纵杆和手柄、DVD-ROM 驱动器等等设备时,代码能够检测到它们。这样就能写出很多可能非常有用的实用程序,而它已经很好了,普通用户就可以写出脚本去做一些事情,比如当某个硬盘驱动器插入时,执行某个任务。

这篇文章教你去如何写一个由一些 udev 事件触发的 udev 脚本,比如插入了一个 U 盘。当你理解了 udev 的工作原理,你就可以用它去做各种事情,比如当一个游戏手柄连接后加载一个指定的驱动程序,或者当你用于备份的驱动器连接后,自动执行备份工作。

在网络上搜到如下内容:

udevd uninitialized urandom read 错误通常与系统启动时加载的 udev 守护程序有关。udev 用于管理 Linux 系统中的设备,并创建相应的设备节点。

该错误通常出现在系统启动时,当 udev 守护程序启动时,如果系统没有足够的随机数种子,就会出现该错误。随机数种子用于创建随机数,在 Linux 中,随机数种子是通过读取 /dev/urandom 设备文件来获取的。

因此,如果系统启动时无法读取足够的随机数种子,udev 守护程序就会失败并显示“udevd uninitialized urandom read”错误。

最终分析是因为 /dev/random 设备启动过慢,随机数还不能用。

要解决此问题,可以尝试以下方法:

1.在启动时添加“random.trust_cpu=on”参数

可以通过在系统启动时添加“random.trust_cpu=on”参数来解决此问题。这会告诉系统使用 CPU 内部的随机数生成器来生成随机数种子,从而避免出现“udevd uninitialized urandom read”错误。
本人试过此方法,在uboot中加了“random.trust_cpu=on“没有什么用,估计是CPU架构不同。也可以在内核中添加补丁来实现,操作比较复杂,就没有试了。

2.安装“haveged”软件包

下载链接:
haveged-1.9.2.tar.gz或
https://github.com/jirka-h/haveged

解压后。

./configure --host=aarch64-himix200-linux --prefix=pwd/install --enable-static --disable-shared
其中 --host=aarch64-himix200-linux 是指定交叉编译平台
–prefix=pwd/install 指定目标库和可执行程序的路径为目前路径的install目录下

–enable-static --disable-shared 指定为静态编译。
由于是开机haveged是开机启动,动态库的路径还没有指定,所以用静态库好一些

将编译好的install/sbin/haveged 拷贝到文件系统的sbin目录下。
在udev的启动脚本/etc/init.d/S01udev中添加

#!/bin/sh
haveged -F -d 32 -w 1024 --verbose=1 &
sleep 1
mkdir /dev/pts
mount -t devpts devpts /dev/pts

mount -t tmpfs tmpfs /run

mkdir -p /dev/.udev
udevd --daemon
udevadm trigger
mdev -s

重新启动后
显示

haveged starting up
haveged: ver: 1.9.2; arch: generic; vend: ; build: (gcc 7.3.0 CTV); collect: 128K
haveged: cpu: (VC); data: 32K (P); inst: 16K (D); idx: 10/40; sz: 15464/71260
haveged: tot tests(BA8): A:1/1 B:1/1 continuous tests(B):  last entropy estimate 7.99538
haveged: fills: 0, generated: 0 
random: crng init done
udevd[985]: starting version 3.2.9
udevd[986]: starting eudev-3.2.9
[RCS]: /etc/init.d/S80network

启动完成!!!文章来源地址https://www.toymoban.com/news/detail-570716.html

到了这里,关于arm海思启动udev的错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海思芯片pcie启动——pcie_mcc驱动框架的booter程序分析

    (1)源码目录:pcie_mcc/multi_boot/example/boot_test.c; (2)调用命令:./booter start_device; (3)booter程序的作用:在主片将pcie启动相关的驱动加载完成后,调用booter来引导从片pcie启动; (1)调用pcie启动相关驱动,知道当前pcie接口连接了多少个从片; (2)先传输uboot的前80KB数据到36A的内部RAM中

    2024年02月06日
    浏览(75)
  • 海思SD3403/SS928开发(一)简介

    SD3403/SS928是一颗面向监控市场推出的专业 ultra-HD Smart IP Camera SOC。 SD3403/SS928处理器核心具有四核ARM Cortex-A55@ 1.2GHz,32KB I-Cache,32KB D-Cache,512KB L3 Cache,该芯 片最高支持四路 sensor 输入,支持最高 4K60 的 ISP 图像处理能力,支持 3F WDR、 多级降噪、六轴防抖、硬件拼接等多种图像

    2024年02月11日
    浏览(38)
  • 【网络抓包工具】tcpdump 最新版本移植到开发板(海思平台)

    tcpdump 是一个功能强大的,用于抓取网络数据包的命令行工具,与带界面的 Wireshark 一样,基于 libpcap 库 (一个用于网络流量捕获的可移植C/C++库) 构建。 tcpdump 的设计目标是帮你分析包头(比如Tcp包头,udp包头),同时你可以根据包头,用它支持的表达式,过渡出你感兴趣的包

    2024年02月01日
    浏览(49)
  • IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建

    一、确定TF卡挂载到ubuntu上的设备名称及分区情况 1. 在ubuntu不接入TF卡的情况下, 使用df -lh /dev/sd*命令查看当前\\\"/dev/sd开头\\\"的设备。 2.将TF卡接入到ubuntu,再次使用df命令,进行查看,多出来的设备即是TF卡挂载到ubuntu的设备名称 如图所示,多出来的/dev/sdb1 /dev/sdb2即为TF卡的

    2024年02月04日
    浏览(42)
  • 【uniapp】uniapp微信小程序开发:启动微信开发者工具提示no such file or directory错误...

    当使用uniapp运行微信小程序模拟的时候,遇到这样的错误: #initialize-error: Error: ENOENT: no such file or directory  开启安全服务端口

    2024年02月16日
    浏览(50)
  • ARM启动原理和启动过程分析

    简介 简单介绍ARM设备启动原理和启动过程,帮助了解一些嵌入式相关理论基础知识。此文章是看韦东山老师的uboot启动课程总结的。 一 几种存储介质的介绍 1 SRAM:SRAM(Static Random Access Memory),即静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路即

    2024年02月05日
    浏览(46)
  • Linux的UDEV机制

     手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具,在终端输入adb安装指令: sudo apt-get install adb c. dmeg能查看到手机接入的信息,但是输入adb devices会出现提醒 dinsufficient permissions for device: user in plugdev group; are your udev rules wrong? d. 配置文件,以支持USB设备的热拔插,

    2024年04月22日
    浏览(26)
  • 嵌入式ARM设计编程(四) ARM启动过程控制

    文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 (1) 掌握建立基本完整的ARM 工程,包含启动代码,C语言程序等; (2) 了解ARM启动过程,学会编写简单的C 语言程序和汇编启动代码并进行

    2024年02月06日
    浏览(54)
  • Ubuntu上adb命令提示权限不足,缺少udev rules(adb: insufficient permissions for device: missing udev rules? )

    新搭建的Ubuntu开发环境,用adb连接开发板,提示权限不足,缺少udev规则 (adb: insufficient permissions for device: missing udev rules? user is in the plugdev group)。 这个问题也会影响scrcpy的使用。 参照Google的官方说明,在Ubuntu上使用adb前提: 1)当前登录用户在plugdev群组中。 (a)查看当前

    2024年02月14日
    浏览(36)
  • linux 内核ARM32启动

    基于linux4.19内核翻译理解 为了启动ARM Linux,您需要一个引导加载程序,它是在主内核之前运行的小程序。 引导加载程序被期望初始化各种设备,并最终调用Linux内核,向内核传递信息。 基本上,引导加载程序应该提供(至少)以下内容: 1.设置和初始化RAM。 2.初始化一个串

    2024年01月18日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包