『壹』 虛擬機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系統中,有臨時和永久兩種方法啟用轉發功能。