皮皮网
皮皮网

【源码决定网站类型】【开源手表源码】【刷APP源码】udev编译源码_编译器dev

时间:2024-12-27 15:12:52 来源:梦回复古源码

1.Linux网卡文件配置linux网卡文件
2.udev的rules定制和调试
3.在Hyper-V中实现windows与linux共享上网
4.在kali linux 系统中如何安装gnuradio

udev编译源码_编译器dev

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`命令重新添加网卡配置。

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的内存才能准确区分事件。

在Hyper-V中实现windows与linux共享上网

       相信不少读者都会做(或者曾经做过)这么一项活动——把一个Linux系统安装到Windows系统下的虚拟机软件中,然后在Windows这个大环境中对Linux进行学习或者一些实验操作。在进行这么一项活动时,不知道各位读者是否感受到网络连通的重要性(这里指外网的Internet),而事实上,刷APP源码无论是在虚拟机中还是在真实的物理机上“玩”Linux,(外网)网络都扮演着一个非常重要的角色。试想一下,当我们的Linux无法(外网)网路,这时我们又需要安装一个gcc编译器,各位读者会怎么做?采用源码编译?我想,gcc的编译安装这并不是一般人所能够做到的。采用rpm包安装?那光解决rpm包的依赖性就可能要折腾不少的时间。采用yum,并且把源指向安装光盘?这,确实是可以解决gcc的安装问题。但是,各位读者是否又想过这么一个问题,虽然Linux的安装光盘确实已经为我们提供了不少的软件包,但是一个安装光盘才有多大呀,CentOS 6.4的安装光盘也就只有那个四个来G,这就意味着,光盘并不是万能的,还会有不少的软件我们是无法从光盘中获取的,比如Mono,我们就必须自己从官网中下载一个并自己编译安装。(外网)网络是如此的重要,我们是不能够失去它的,哪怕是在虚拟机中也不例外。

       在现实生活中,虚拟机软有非常多的种类,比较有名并且常用的有VM、VirtualBox等。如果各位正在阅读此文的读者是使用VM机作为自己的Linux虚拟机的,那么你们是蓝鸟tv源码幸福的,因为VM这款软件做得非常好,它自带的NAT技术一下子就可以帮各位读者解决联网问题,换句话说,只要作为大环境的Windows可以正常的访问网络,那么只需要在VM的网卡设置用选择“nat”选项或者采用“8号网卡(vmnet8)”,安装在VM中的Linux就已经获得了访问(外网)网络的权利了,用户完全无需为了网络的事情而烦恼和折腾。

           但是,既然在本文中是选择了Hyper-V作为虚拟机软件,那就代表着我们就没有VM那么幸福了,我们还得自己折腾一番才能争取到获得网络访问这个权利。

       好的,正是进入主题,本文中,我们将讨论研究:

       1、本文网络背景的介绍

       2、如何在Linux中添加一张新网卡

       3、如何实现Linux在Hyper-V中实现与Windows的共享宽带上网

       4、TTL检测(路由封杀)网络环境的应对策略

       1、当前实验网络背景的介绍

       之前在网络中心常驻时,上网账号理论上是用不完的,当虚拟机中Linux想访问网络时,我们所采取的办法是正常的拨号上网,一台Linux要上网就拨一个号,十台Linux上网就拨十个号,通过这个方法,虚拟机中所有的Linux都能够访问网络。不过,这种方法是异常“奢侈”的,并且对于大部分读者来说也是win下载源码非常不现实的。各位读者更多的则是像我当前的情况,从网络中心中撤离出来,回到宿舍,一共也就那么一个上网账号(还是自己花钱供养的),只能供一个主机同一时间访问网络的需要。

       此外,当前的环境除了只有一个宽带账号的限制外,由于这里是一个校园网(包括许多高校的校园网、宽带小区或者部分地区电信、联通宽带用户),它们都会有防蹭网(路由器封杀)的这么一个功能,还真的只是一个宽带账号只能供一个主机访问网络(在这里,VM用户仍然不用担心这个问题)。

       想要让Hyper-V中的Linux能够访问网络,各位读者可以通过一以下几个办法:

       A、多开几个上网账号(非常耗费金钱)

       B、买一个放封的路由(一次投资,多次回报,还是个不错的选择)

       C、参考本文中的方法(虽不能保证一定能够成功,不过仍然值得一试,不行再采用前一种办法)

       2、为Linux添加一块网卡

       正式进入到我们的实验,为了不对当前的Linux环境造成干扰,我们决定采用为Linux添加一张新的网卡来进行我们当前的这个实验。

       首先,先确保Hyper-V的“虚拟交换机管理器”中存在一个属性为“内部”适配器(如果没有,则需要自己添加一个,这里采用一张已有的网卡,各位读者不必为了这么长的名字而纠结)。

       然后为Linux虚拟机添加一张网卡:

       在这里,有几点是需要注意的:

       (1)、虚拟交换机中请务必要选择“内部”属性的适配器(在这里选择的是刚刚新建的那张,名为:“Windows phone ……”)

       (2)、添加硬件时,建议选择“旧版的网络适配器”,以防止一些版本的Linux系统缺少对新版网卡的驱动。

       然后启动我们的Linux系统,直接使用“setup”设置网卡:

       我们发现刚才新增的网卡是并没有被Linux识别的(在这里,我们使用的是CentOS 6.4 X_ 版本,其他发行版的Linux可能会有所出入),我们需要手动的添加一个网卡配置文件。添加方法非常简单,进入“/etc/sysconfig/network-scripts/”目录,然后执行“cp ifcfg-eth0 ifcfg-eth1”(把eth0的配置文件再拷贝一份到eth1中),然后使用vi编辑器打开刚刚拷贝得到的“ifcfg-eth1”配置文件:

       然后对该配置文件作出以下修改:

       (1)、把“DEVICE”中由eth0改为eth1

       (2)、删除“HWADDR”这一行(删除配置文件记录的网卡硬件地址)

       (3)、删除“UUID”这一行(删除配置文件中硬件的唯一标识)

       然后保存并退出。

       继续使用vi编辑器打开“/etc/udev/rules.d/-persistent-net.rules”,然后把里面的所有内容清空,保存并退出后重启Linux。

       现在再setup就可以看到新添加的网卡了。

       好的。就这样,我们成功的为Linux添加了一张新网卡。

       3、对Hyper-V中的Linux赋予网络访问的权利

       上一个小节中,我们添加了一张“内部”属性的适配器,现在我们把Windows中的宽带连接共享到这张“内部”适配器,让Linux能够共享Windows中的网络。

       打开Windows中的“网络连接”:

       里面有非常之多的网络适配器,这些大家都不用管,只需要留意图中两个蓝色框起来的适配器,一个为“宽带连接”(也就是Windows中的宽带连接),另一个是“vEthement(Internal Ethernet……)”(也就是在Hyper-V中新建的那一张内部网络适配器)。

       在“宽带连接”中点击右键,选择“属性”,打开设置窗口,打开“共享”这个选项卡,勾上“允许其他网络用户通过此计算机的Internet连接来连接”,“家庭网络连接”这个下拉菜单中选择刚刚我们新建的“内部”网络适配器。

       点击确定保存退出,断开当前的Windows宽带连接,重新拨号之后,刚才的设置即可生效。

       然后继续设置我们的“内部”适配器的IP,如图所示,只要随意的设置一个与宽带连接不同网段的IP即可

       然后,在Linux中的eth1网卡设置中采用DHCP的方式获取IP地址(有兴趣的读者可以分别尝试使用静态IP的方式和DHCP的方式获取Linux的IP,然后再对比一下“/etc/resolv”中的不同)

       保存退出,并执行“service network restart”重启网络配置

       现在尝试一下看能不能解析“www.baidu.com”的域名

       嗯,非常好,我们的百度域名能够正常的解析,由于域名解析需要连网到DNS服务器,现在能够看到解析,这就表示,我们的Linux已经能够连网,具有网络访问的能力了。

       4、应对拨号服务器的TTL检测

       或许有一些读者遇过这么一种情况:现在有一个宽带的上网账号,由于某些原因(比如添置了一些新电脑之类的),想让几台电脑都能够共享这个宽带账号来上网,结果从电脑城中买回来一个路由器,非常正确的设置好相关的参数之后,竟然发现没有办法浏览网页,从路由器中的数据包监控中还发现,数据包不断的发送出去,却一个数据包都没有办法接收到。把路由器拿回电脑城中,路由器在哪里又能够正常的使用。

       如果各位读者遇到了这种现象,并且排除了路由器故障这一问题之后,那就只能证明了一件事:当前的网路环境中存在对路由器使用的封杀,也就是在拨号服务器中有TTL的检测(当然,想要封杀路由器的使用方法有很多种,比较常用而且比较流行的办法就是采用TTL的检测,在本文中也是只针对TTL检测采取解决措施)。

       关于什么是TTL值,各位读者可以用网上搜索详细的资料。在这里我只简单的解说一下:我们的数据包在网络中的传输,从一个网段的网络传输到另外一个网段的网络,这是需要路由器在其中发挥作用的,但是一个由多网段所组成的网络往往是非常庞大的(比如Internet),如果数据包没有一个传输次数的限制,那么就有可能发生这么一个事件:“数据包不断的在网络中传来传去,走遍了整个网络,并且还不断的重复这个动作”。这样,不仅使得网络的拥塞程度一下子大增甚至把整个网络挤垮,并且发送这个数据包的主机还无法获知这个数据包是否可达(也就是是否找到接收方或者接收方到底是否存在)。因此,为了解决这么一个问题,我们在发送数据包的时候,都会在数据包中设置一个TTL值,每当这个数据包经过一个路由器进行转发,数据包中的TTL值就会减1,直到数据包中的TTL值变为0,路由器就会自动的认为这个数据包是不可达的并自把这个数据包丢弃。

       针对TTL值的这一个特性,只要在拨号服务器中增加一个TTL值的检测,只要用户是采用路由器上网的(具有放封功能的或者刷了放封固件的除外),到达拨号服务器中的数据包的TTL值就不是默认的TTL值(Windows默认的TTL为,Linux默认的TTL值为),如果在拨号服务器中再做这么一个小动作:“把所有不是默认TTL值的数据包全部丢弃”,这样就达到了对路由器封杀的效果。也就是各位读者在路由器的数据包监测中所看到的不断有数据包发出却一个数据包都没有办法收到的原因。

       在本文中所介绍的Hyper-V共享上网中就遇到了这么一个问题(不一定所有读者都会遇到),比如我想从网上下载一个东西:

       虽然DNS能够解析域名,但是却无法从网上下载东西。造成此现象的其中的原因就是:共享上网的原理跟使用路由器一样,而当前的校园网对路由器的使用有封杀。

       要解决TTL检测并封杀路由器使用的方法比较直接,那就是修改数据包从网卡送出时的TTL值。

       针对本文中的配置,我用excel画了一个简单的原理图,当虚拟机中的Linux通过eth1发送出一个数据包,该数据包会被发送到“内部”适配器中,然后“内部”适配器会充当一个路由的功能,把数据包转发到宽带连接中,接着,宽带连接也同样的充当同样的功能,把数据包转发出去。这里就存在着一个简单的算术题:“Windows默认的TTL值为,也就是从宽带连接中出来的数据包必须是的才不会被拨号服务器丢弃,而数据包每经过一次路由的转发TTL值就会减1,问从eth0中出来的数据包是多少时数据包才不会被拨号服务器丢弃?”聪明的读者一定能给很快的计算得出答案——!!!

       好的,既然我们已经计算出合适的TTL值,我们二话不多说的去设置Linux的数据包TTL值。我们只需使用vi编辑器打开“/etc/sysctl.conf”,然后再最后的地方添加上这么一句“net.ipv4.ip_default_ttl=”,然后保存退出并重启网络。

       这样,我们就可以突破了当前网络对路由器使用的封杀了。

       瞧,这就可以下载东西了。

       同时,这里还有一项需要读者们非常注意的地方:要时时刻刻的警惕seLinux和iptables所产生的作用,在本文中,如果这两项开启了的话,同样是无法下载东西的。各位读者要切记了。

       至此,Linux(CentOS)如何在Hyper-V中实现与Windows宽带共享上网就到此结束了。

在kali linux 系统中如何安装gnuradio

       kali 1.安装gnuradio,配置软件无线电教程

       GNURadio可谓是开源界无线电爱好者的”军火库”。看名字可能你就猜到了,GNURadio是开源的,并且使用GPL协议开源。

       é¡¹ç›®ä¸»é¡µå’Œä»‹ç»ï¼šï¼ˆå¯èƒ½è¢«å¢™äº†ï¼Œè‡ªè¡Œç¿»å¢™ï¼‰

       /mossmann/hackrf.git cd hackrf/host mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON make sudo make install sudo ldconfig

       1

       2

       3

       4

       5

       6

       7

       8

       git clone --progress /mossmann/hackrf.git

       cd hackrf/host

       mkdir build

       cd build

       cmake ../ -DINSTALL_UDEV_RULES=ON

       make

       sudo make install

       sudo ldconfig

编译rtlsdr(可选)

       git clone --progress git://git.osmocom.org/rtl-sdr cd rtl-sdr mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON sudo make install sudo ldconfig

       1

       2

       3

       4

       5

       6

       7

       git clone --progress git://git.osmocom.org/rtl-sdr

       cd rtl-sdr

       mkdir build

       cd build

       cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON

       sudo make install

       sudo ldconfig

编译gr-osmosdr

       git clone --progress git://git.osmocom.org/gr-osmosdr cd gr-osmocom mkdir build cd build cmake ../ make sudo make install sudo ldconfig

       1

       2

       3

       4

       5

       6

       7

       8

       git clone --progress git://git.osmocom.org/gr-osmosdr

       cd gr-osmocom

       mkdir build

       cd build

       cmake ../

       make

       sudo make install

       sudo ldconfig

编译gqrx(可选)

       git clone /csete/gqrx.git cd gqrx mkdir build cd build qmake ../gqrx.pro make sudo make install sudo ldconfig

       1

       2

       3

       4

       5

       6

       7

       8

       git clone /csete/gqrx.git

       cd gqrx

       mkdir build

       cd build

       qmake ../gqrx.pro

       make

       sudo make install

       sudo ldconfig

        

编译完成后

       ä½ å¯ä»¥å°è¯•ä»¥ä¸‹å‘½ä»¤

osmocom_fft : 一个简单的HackRF频谱仪osmocom_siggen : 一个简单的HackRF信号源gqrx : 类似于SDR#的广播接收器

更多内容请点击【焦点】专栏