『壹』 虚拟机Linux下ifconfig eth0 up为什么改不了ip,
/etc/sysconfig/network-scripts/ifcfg-eth0关键配置:
BOOTPROTO=none 或者static的时候,你要加入:
IPADDR=ip
GATEWAY=网关
PREFIX=掩码
BOOTPROTO=dhcp的时候,以上3个不用加。
编辑好 /etc/sysconfig/network-scripts/ifcfg-eth0 过后
要用命令 ifup eth0 来启用网卡或者 service network restart 重启网络
『贰』 linux中利用ifconfig eth0 up时显示权限不够怎么办
linux中利用ifconfig eth0 up时显示权限不够时可以采用下面方法解决:
执行命令前切换到root用户后执行该命令,切换到root的方法:
不管是用图形模式登录Ubuntu,还是命令行模式登录,我们会发现缺省的用户是user
但是当我们需要执行一些具有root权限的操作(如修还系统文件)时,经常需要用sudo授权
此时我们可以切换到root用户,只需要简单的执行sudo su 即可
注意: 出于安全考虑,默认时Ubuntu的root用户时没有固定密码的,它的密码是随机产生并且动态改变
的,貌似是每5分钟改变一次,所以用su(switch user)是不可以的,因为我们不知道root的密码
默认root用户是无固定密码的,并且是被锁定的,如果想给root设置一个密码
只需执行命令:sudo passwd root 然后根据提示一步一步来
这样皆可以向(1)里面提到的那样 su root ,输入root密码切换到root用户
注意:给root设定密码后,仍可以 sudo su 切换到root用户
附:在图形模式下 系统->系统管理->用户和组 也可以给root设置密码
『叁』 linux下怎么可以通过vi ifcfg-eth0这个命令来进入
vi进入后,按i变成编辑模式,屏幕下方有个INSERT字样,这时跟windows的记事本一样了,改吧。内容见下
改完后按ESC键,再输入冒号x——:x保存退出。
service network restart
你的IP就出来了。
DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.0.1
GATEWAY=192.168.0.254
ONBOOT=yes
TYPE=Ethernet
『肆』 ZYNQ+linux网口调试笔记(3)PL-ETH
在ZYNQ上使用gigE Vision协议的网络接口相机。
第一步:调通PS侧网口GEM0(Xilinx BSP默认配好)。
第二步:调通PS侧网口GEM1(见前一篇文档:开发笔记(1))。
第三步:调通PL侧网口(本文阐述)。
第四步:在PL侧网口上验证Jumbo Frame特性,并在应用层适配gigE Vision协议。
根据《xapp1082》可知,PL侧的PHY支持1000Base-X和SGMII两种配置,这两种配置对应两种不同的PHY引脚接口(连接到MAC)。而我们的hdf文件使用的是1000Base-X的配置。
关于网口的Linux驱动,我们在官网找到一份资料: Xilinx Wiki - Zynq PL Ethernet 。资料很长,我们只看与我们相关的2.4.1 PL Ethernet BSP installation for 1000Base-X”这一章节就可以了。
首先导入FPGA设计同事提供的hdf文件:
在弹出的图形界面里,进入Subsystem AUTO Hardware Settings——Ethernet Settings——Primary Ethernet,确认可以看到PL侧网络设备axi_ethernet_0,说明hdf文件里已包含了必要的网口硬件信息:
上图中被选中的网口将成为Linux上的设备eth0。这里我们默认选择ps7_ethernet_0,即使用GEM0作为首选网口。
启用Xilinx AXI Ethernet驱动
进入Device Drivers -- Network device support – 选中Xilinx AXI Ethernet(以及Xilinx Ethernet GEM,这是PS侧网口的驱动)
进入Networking support – 选中 Random ethaddr if unset
进入Device Drivers -- Network device support -- PHY Device support and infrastructure – 启用Drivers for xilinx PHYs
进入~~~~Device Drivers -- DMA Engine Support -– 禁用~~~~Xilinx AXI DMAS Engine~~~ (对应的配置项名为 ~~ CONFIG_XILINX_DMA ~~~)
注意: Xilinx Wiki里对设备树节点的引用有误(&axi_ethernet),导致编译报错,应改为&axi_ethernet_0。
注:PL-ETH驱动所在路径:<project>/build/tmp/work-shared/plnx_arm/kernel-source/drivers/net/ethernet/xilinx/xilinx_axienet_main.c和xilinx_axienet_mdio.c。对应的内核配置项为CONFIG_NET_VENDOR_XILINX和CONFIG_XILINX_AXI_EMAC。
启用ethtool和tcpmp(调试用,非必须):
然后将生成的BOOT.BIN和image.ub拷贝到SD卡根目录下,将SD卡插入板子上,上电运行。
上电后,使用ifconfig eth1查看网口信息,观察MAC地址与设置的一致,且ifconfig eth1 192.168.1.11 up没有报错。
测试网络通路:ping PC是通的。说明网口工作正常。
Linux下eth1(即PL-ETH)的MAC地址有误
问题描述:
开机打印:
注意:
MAC地址是错的,驱动里解析出的是GEM0的MAC地址。
试验发现,即使在system-user.dtsi里不写local-mac-address,也照样解析出的是GEM0的MAC。
而将system-user.dtsi里的local-mac-address改名为pl-mac-address,并将驱动里解析的字符串也对应更改为pl-mac-address,则可以正确解析出来:
Passing MAC address to kernel via Device Tree Blob and U-Boot:
http://zedboard.org/content/passing-mac-address-kernel-device-tree-blob
通过更改u-boot环境变量和设备树,为每个板子设置一个独特的MAC地址:
https://www.xilinx.com/support/answers/53476.html
U-Boot里的环境变量ethaddr会覆盖掉设备树里pl-eth的local-mac-addr字段,从而影响Linux启动后的网卡MAC地址;
但U-Boot里的环境变量ipaddr不会对Linux启动后的配置产生任何影响。因为设备树里根本就没有关于IP地址的配置。
phy-mode怎么会是sgmii?查了下官方的提供的BSP里,也是“sgmii”。说明这个没问题。具体原因不清楚。
@TODO: 设备树里的中断号的顺序如何影响功能?
为何读出来的IRQ号不对呢?这是因为这里读到的不是硬件的中断号,而是经过系统映射之后的软件IRQ number。两者不具有线性关系。
关于中断号的疑问:
Linux上的网口eth0、eth1的顺序,似乎是按照phy地址从小到大来排布的。
Xilinx xapp1082-zynq-eth.pdf (v5.0) July 16, 2018
https://www.xilinx.com/support/documentation/application_notes/xapp1082-zynq-eth.pdf
Xilinx Wiki - Zynq PL Ethernet:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841633/Zynq+PL+Ethernet
Xilinx Wiki - Linux Drivers:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841873/Linux+Drivers
Xilinx Wiki - Linux Drivers - Macb Driver:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841740/Macb+Driver
Xilinx Wiki - Zynq Ethernet Performance:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841743/Zynq+Ethernet+Performance
查到关于Jumbo frame MTU的定义,当前值为9000,可否改大一些?
驱动源码里关于jumbo frame的说明:
设置MTU为9000,发现ping包最大长度只能设为ping 192.168.1.10 -s 1472
https://lore.kernel.org/patchwork/patch/939535/
【完】
『伍』 linux配置中eth0和eth1做什么用的
是一种光纤以太网接口卡,按照以太网通信协议进行信号传输。一般通过光缆与光纤以太网交换机连接。
Eth0和eth1用于区分网卡名。它们的含义与windows本地连接1和本地连接2相同。
这里的子网卡不是一个实用的网络接口,但是它可以作为一个集合接口在系统中闪现,比如eth0:1,eth1:2。
(5)linux下编译以太坊扩展阅读:
Linux操作系统嵌入了TCP/IP协议栈,协议软件具有路由转发功能。路由和转发依赖于在主机中安装多个网卡作为路由器。
当某一网卡接收到度包时,系统内核会根据度包的目的IP地址查询路由表,然后根据查询结果将度包发送到另一网卡,最后通过该网卡发送度包。主机的进程是路由器的核心功能。
路由功能是通过修改Linux内核参数来实现的。sysctl命令用于配置和显示/proc/sys目录中的内核参数。
出于安全原因,Linux内核默认禁止数据包路由和转发。在Linux系统中,有临时和永久两种方法启用转发功能。
『陆』 linux下如何区分eth0,eth1,eth2,eth3
ethtool -p eth0
回车后与eth0 相对应的网卡接口旁边的指示灯就会闪烁,这样你就能很快确定eth0 网口的位置(按下Ctrl+C 结束命令,停止闪烁)
同样确定eth1、eth2.。。。
『柒』 linux脚本中的for name in $eth是什么意思
将eth变量内的每一个word赋给name变量,然后以此执行for内部的循环体。举例说明:
假定如下代码
eth="eth0 eth1 eth2"
for name in $eth
do
echo "this is $name"
done
运行后的结果就是
this is eth0
this is eth1
this is eth2
echo "this is $name" 被执行了三次,每次执行时name变量依次是eth变量所记录单词中的一个
『捌』 混杂模式的linux下通过C设置混杂模式(以eth0举例)
char *eth_name = eth0; //对网卡eth0进行混杂设置
struct ifreq ethreq; //网络接口结构
strncpy(ethreq.ifr_name, eth_name, IFNAMSIZ); //指定网卡名称if(-1 == ioctl(sock_raw_fd, SIOCGIFFLAGS, ðreq)) //获取网络接口{perror(ioctl);close(sock_raw_fd);exit(-1);}
/*此处用 | 是因为必须在保留原来设置的情况下,在标志位中加入“混杂”方式*/ ethreq.ifr_flags |= IFF_PROMISC;if(-1 == ioctl(sock_raw_fd, SIOCSIFFLAGS, ðreq)) //将标志位设置写入{perror(ioctl);close(sock_raw_fd);exit(-1);}
『玖』 linux配置中eth0和eth1做什么用的
是一种光纤以太网接口卡,按照以太网通信协议进行信号传输。一般通过光缆与光纤以太网交换机连接。
Eth0和eth1用于区分网卡名。它们的含义与windows本地连接1和本地连接2相同。
这里的子网卡不是一个实用的网络接口,但是它可以作为一个集合接口在系统中闪现,比如eth0:1,eth1:2。
(9)linux下编译以太坊扩展阅读:
Linux操作系统嵌入了TCP/IP协议栈,协议软件具有路由转发功能。路由和转发依赖于在主机中安装多个网卡作为路由器。
当某一网卡接收到度包时,系统内核会根据度包的目的IP地址查询路由表,然后根据查询结果将度包发送到另一网卡,最后通过该网卡发送度包。主机的进程是路由器的核心功能。
路由功能是通过修改Linux内核参数来实现的。sysctl命令用于配置和显示/proc/sys目录中的内核参数。
出于安全原因,Linux内核默认禁止数据包路由和转发。在Linux系统中,有临时和永久两种方法启用转发功能。