皮皮网
皮皮网

【vlc源码】【瓶盖码源码】【im云源码】源码安装udev

时间:2024-12-27 17:26:14 来源:kubernetes源码 书籍

1.在Ubuntu 16.04(AMD64)中安装Xilinx ISE 14.7
2.udev的rules定制和调试
3.udev机制
4.Linux网卡文件配置linux网卡文件

源码安装udev

在Ubuntu 16.04(AMD64)中安装Xilinx ISE 14.7

       Ubuntu安装Xilinx ISE .7的源码操作详解

       本文内容更新至年2月日。该教程旨在介绍在Ubuntu .下安装Xilinx ISE .7的安装详细过程,对于其它Ubuntu版本和Xilinx ISE更新,源码请自行查找更近期的安装指导资料。

       首先访问Xilinx官网下载Linux版本的源码安装程序,随后解压缩。安装vlc源码注意在执行安装时,源码确保在安装路径及系统配置文件中使用英文字符,安装避免使用含中文字符的源码路径,以免安装程序出现无反应或显示异常。安装

       在安装Xilinx ISE的源码过程中,可能会遇到驱动安装失败的安装问题,尤其在使用特定硬件或环境配置时。源码遇到该问题时,安装通常需要手动安装所需的源码线缆驱动。请查找在线资源获取驱动文件,瓶盖码源码并遵循官方指南进行安装。

       初次运行ISE会提示需要获取许可,选择对应的许可信息进行操作即可。此时大部分功能应能正常运行,但烧录芯片操作可能需要额外的驱动支持。接下来,手动安装线缆驱动。

       通过指定路径下载与系统架构相匹配的线缆驱动源代码,安装完成后确保ISE可以正确识别并访问你的FPGA开发板。

       配置环境变量对于Xilinx ISE的正常工作至关重要。执行相应的脚本文件,添加必要的环境变量配置。特别注意,确保在修改/etc/udev/rules.d路径时遵循正确的文件编号规则,并考虑系统的im云源码位与位差异。正确配置后,应该能够通过IDE运行、调试FPGA程序。

       安装完成并配置好环境后,应能够顺利运行Xilinx ISE,进行FPGA实验与设计。

       以上步骤详细介绍了在Ubuntu上安装Xilinx ISE的操作流程,并解决了一些常见问题。在实际操作过程中遇到具体问题时,建议查阅Xilinx官网资料、用户论坛或相关的社区讨论。

udev的rules定制和调试

       udev的rules定制和调试

        在定制项目中,对外设的热插拔的管理基本都在udev/systemd-udev来管理。这里没有对基本的udev使用/rules书写进行介绍。

        1. udev的rules可能的位置

        /lib/udev/rules.d -- udev默认/预置的rules

        /etc/udev/rules.d/ -- 定制的rules, 优先级高于/lib/udev/rules.d,官方建议客户写的rules都放这里

        至于放在哪个位置,自己决定就好,既然你在修改系统就应该知道你在做什么

        2. 定制自己的rules

        定制热插拔的事件,具体到rules就是:

          1)过滤到正确的udev事件。

          2)指定执行的动作,rules里的“RUN”,通常是脚本(毕竟要完成一个功能,绝大多数场景都不是一个命令能搞定的)

        3.到这里就要设计到rules的调试了

          1)如何知道要过滤的是条件?

          2)如何将必要的参数传递给RUN执行的脚本?

        方法1:

        udevadm monitor -p

        -- 监测所以的kernel/udevd的热插拔事件, -p选项很有必要,打印出本次热插拔事件的一些属性

       è¿™é‡Œå°±æ˜¯æ¯”较设备插入和拔出时的事件属性的不同,可作为过滤的条件

        比如:

        rules文件对于规则:

        到这里很多时候就能满足要求了,如果还有解决不里的场景,就要进一步修改过滤条件。

        man udev里会有绝大部分的关键字的信息(想全部的就只能去撸源码)。

       æ–¹æ³•2:

        通过在RUN指定的脚本里传递参数,来找到设备存在和不存在的属性差异。

        比如:

        参考信息:

        a)、udev 规则的匹配键

        ACTION:          事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )。

        KERNEL:          内核设备名称,例如:sda, cdrom。

        DEVPATH:         设备的 devpath 路径。

        SUBSYSTEM:        设备的子系统名称,例如:sda 的子系统为 block。

        BUS:            设备在 devpath 里的总线名称,例如:usb。

        DRIVER:           设备在 devpath 里的设备驱动名称,例如:ide-cdrom。

        ID:             设备在 devpath 里的识别号。

        SYSFS{ filename}:     设备的 devpath 路径下,设备的属性文件“filename”里的内容。

                       例如:SYSFS{ model}==“STSS”表示:如果设备的型号为 STSS,则该设备匹配该 匹配键。

                       在一条规则中,可以设定最多五条 SYSFS 的 匹配键。

        ENV{ key}:          环境变量。在一条规则中,可以设定最多五条环境变量的 匹配键。

        PROGRAM:        调用外部命令。

        RESULT:           外部命令 PROGRAM 的返回结果。

        b)、udev 的重要赋值键

        NAME:           在 /dev下产生的设备文件名。只有第一次对某个设备的 NAME 的赋值行为生效,之后匹配的规则再对该设备的 NAME 赋值行为将被忽略。如果没有任何规则对设备的 NAME 赋值,udev 将使用内核设备名称来产生设备文件。

        SYMLINK:          为 /dev/下的设备文件产生符号链接。由于 udev 只能为某个设备产生一个设备文件,所以为了不覆盖系统默认的 udev 规则所产生的文件,推荐使用符号链接。

        OWNER, GROUP, MODE:  为设备设定权限。

        ENV{ key}:         导入一个环境变量。

        c)、udev 的值和可调用的替换操作符

        Linux 用户可以随意地定制 udev 规则文件的值。例如:my_root_disk, my_printer。同时也可以引用下面的替换操作符:

        $kernel, %k:        设备的内核设备名称,例如:sda、cdrom。

        $number, %n:        设备的内核号码,例如:sda3 的内核号码是 3。

        $devpath, %p:       设备的 devpath路径。

        $id, %b:          设备在 devpath里的 ID 号。

        $sysfs{ file}, %s{ file}:    设备的 sysfs里 file 的内容。其实就是设备的属性值。

        $env{ key}, %E{ key}:   一个环境变量的值。

        $major, %M:        设备的 major 号。

        $minor %m:        设备的 minor 号。

        $result, %c:        PROGRAM 返回的结果。

        $parent, %P:          父设备的设备文件名。

        $root, %r:          udev_root的值,默认是 /dev/。

        $tempnode, %N:      临时设备名。

        %%:            符号 % 本身。

        $$:             符号 $ 本身。

        对比一下和man里的差别,$sysfs{ file},这个在实际解决问题的时候是很有用的。

        这种方法适合调试系统启动的时候对rules的调试,这个过程中是没得udevadmin monitor使用的。(当然,可以尝试自己写一个systemd启动服务,这就涉及到启动的时机、关联、影响,实际操作会比预想的复杂)

        这里提两个点:

        1. env - 可以是udev事件里的属性(-p打印的)

        2. $sysfs{ file}, 这里的file就是在系统/sys目录下对应的节点下的文件,有些情况下只能在sysfs的file的内存才能准确区分事件。

udev机制

       在Linux系统中,当U盘插入时需要自动打开其目录,但每次挂载点不固定,如/media/sda1和/media/sda4。王巍源码这时,了解udev机制就显得尤为重要。udev是一个设备管理系统,负责在设备注册后自动生成设备节点。在内核3.2.0版本中,设备注册流程涉及device_create、device_create_vargs、device_register和device_add等函数,它们会触发kobject_uevent和uevent_helper的调用,生成包含ACTION、DEVPATH和SUBSYSTEM等环境变量的uevent事件。

       内核启动时会预设一些环境变量,例如TSLIB_TSDEVICE和QTDIR。uevent_helper在内核源码中初始化为"/sbin/hotplug",尽管在系统中可能找不到这个程序,微办公源码但其在注册设备时会被调用。例如,当USB按键、狗注册或U盘插入时,uevent_helper会配合环境变量,调用call_usermodehelper来创建设备节点。

       在嵌入式环境中,udev可能被替换为mdev,特别是对于2.6版本之后的系统。查看 BusyBox 的 mdev.c 和 mdev_main,可以看到设备注册时会生成设备节点,如通过make_device和mknod函数。若要对设备节点进行定制,如自动挂载U盘,就需要解析配置文件/etc/mdev.conf。配置文件的格式定义了设备的权限和自定义操作,例如设置sda[1-9]+设备的挂载与卸载操作。

       在实际应用中,公司文件系统的配置可能与标准流程不同,例如通过修改/etc/udev/scripts/mount.sh来统一处理U盘挂载。只需修改相关部分,将挂载点从"/media/$name"改为"/upan",以确保所有U盘都能被挂载到统一目录下,实现自动挂载功能。

       总之,udev机制是Linux设备管理的关键部分,通过理解其工作原理和配置文件,可以更好地定制设备行为,如实现U盘的自动挂载。在实际操作中,根据设备的注册流程和配置文件,进行适当的调整和定制是实现所需功能的关键。

Linux网卡文件配置linux网卡文件

       在Linux系统中,若需修改网卡名称,可遵循以下步骤:

       1. 打开`/etc/udev/rules.d/-persistent-net.rules`文件,将`eth0`更改为`em1`,`eth1`更改为`em2`。仅需更改`name`字段,无需修改`kernel`字段。

       2. 将网卡配置文件重命名。将`ifcfg-eth0`文件重命名为`ifcfg-em1`,将`ifcfg-eth1`文件重命名为`ifcfg-em2`。

       3. 编辑网卡配置文件,如`ifcfg-em1`,将网卡名称修改为正确名称,并删除UUID(如果没有则无需操作)。

       4. 重启服务器。重启后,网卡名称将更新,网络服务应正常运行。

       要获取Linux网卡信息,可执行以下步骤:

       1. 启动Linux操作系统并登录到桌面。

       2. 打开终端。

       3. 在终端中输入命令`ifconfig eth0`并回车。

       4. 解读网卡信息:

        - 查看基本信息:使用`lspci`命令。

        - 查看详细信息:使用`lspci -vvv`命令,并查找`Ethernet`字样。

        - 查看网卡驱动:使用`lspci -vvv`命令查找网卡设备详细信息,包括驱动。

        - 使用`lsmod`命令列出所有加载的驱动,包括网卡驱动。

        - 查看模块信息:使用`modinfo`命令,指定模块名称,或使用`ethtool -i`命令指定网络设备名称。

        - 查看网络接口队列数:使用`ethtool -S`命令指定网络设备名称。

        - 查看网卡驱动源码版本号:解压网卡驱动源码,查看对应`.spec`文件中的版本信息。

       若需恢复网卡配置文件,可以使用`netconfig`命令。

       初学者需掌握如何在Linux中查看网卡信息。具体步骤如下:

       1. 启动Linux操作系统并登录到桌面。

       2. 打开终端。

       3. 在终端中输入命令`ifconfig eth0`并回车。

       信息解读:

       1. 第一行显示网卡类型和MAC地址。

       2. 第二行显示IPV4地址、广播地址和子网掩码。

       3. 第三行显示IPV6地址。

       4. 第五行显示接收的数据包总数以及错误、丢失的数据包数。

       5. 第六行与第五行对应,显示发送的数据包总数以及错误、丢失的数据包数。

       6. 第八行显示接收和发送的字节数。

       在Linux中若要重初始化网卡,可删除`/etc/sysconfig/network-scripts/ifcfg-eth0`文件,并重新创建一个新的配置文件。之后,可以使用`setup`命令重新添加网卡配置。

更多内容请点击【综合】专栏