導航:首頁 > 操作系統 > linux添加介面

linux添加介面

發布時間:2022-12-29 19:50:02

linux遠程桌面使用客戶端硬碟介面

1、在ubuntu下搜索Remmina,點擊Remmina遠程桌面客戶端。
2、運行Remmina之羨棗族後點擊+號添加一台伺服器,在遠程桌面設定中。
3、設置名稱:可以隨便輸入伺服器IP地址。

❷ linux kernel 文件系統編程介面

進程讀寫文件之前需要 打開文件 ,得到 文件描述符 ,然後 通過文件描述符讀寫文件 .

內核提供了兩個打開文件的系統調用 open openat .

打開文件的主要步驟如下:
(1)需要 在父目錄的數據中查找文件對應的目錄項 , 從目錄項得到索引節點的編號,然後在內存中創建索引節點的副本 .因為各種文件系統類型的物理結構不同,所以需要提供索引節點操作集合的 lookup 方法和文件操作集合的 open 方法.
(2)需要分配文件的一個打開實例-- file 結構體,關聯到文件的索引節點.
(3)在進程的打開文件表中 分配一個文件描述符 , 把文件描述符和打開實例的映射添加到進程的打開文件表 中.

進程可通過使用系統調用 close 關閉文件.
系統調用close的執行流程如下:
(1)解除打開文件表和file實例的關聯.
(2)在close_on_exec點陣圖中清楚文件描述符對應的位.
(3)釋放文件描述符,在文件描述符點陣圖中清除文件描述符對應的位.
(4)調用函數fput釋放file實例:把引用計數減1,如果引用計數是0,那麼把file實例添加到鏈表delayed_fput_list中,然後調用延遲工作項delayed_fput_work.
延遲工作項delayed_fput_work的處理函數是flush_delayed_fput,遍歷鏈表delayed_fput_list,針對每個file實例,調用函數__fput來加以釋放.

創建不同類型的文件,需要使用不同的命令.
(1) 普通文件 :touch FILE ,這條命令本來用來更新文件的訪問時間和修改時間,如果文件不存在,創建文件.
(2) 目錄 :mkdir DIRECTORY .
(3) 符號鏈接(軟鏈接) :ln -s TARGET LINK_NAME 或ln --symbolic TARGET LINK_NAME .
(4) 字元或塊設備文件 :mknod NAME TYPE [MAJOR MINOR] .
(5) 命名管道 :mkpipe NAME .
(6) 硬連接 :命令"ln TARGETLINK_NAME ".給已經存在的文件增加新的名稱,文件的索引節點有一個硬鏈接計數,如果文件有n個名稱,那麼硬鏈接計數是n.

創建文件需要在文件系統中 分配一個索引節點 ,然後 在父目錄的數據中增加一個目錄項來保存文件的名稱和索引節點編號 .

刪除文件的命令如下:
(1)刪除任何類型文件:unlink FILE .
(2)rm FILE ,默認不刪除目錄,如果使用"-r""-R"或"-recursive",可以刪除目錄和目錄的內容.
(3)刪除目錄:rmdir DICTIONARY .
內核提供了unlink,unlinkat用來刪除文件的名稱,如果文件的硬鏈接計數變成0,並且沒有進程打開這個文件,那麼刪除文件.提供了rmdir刪除目錄.

刪除文件需要從父目錄的數據中刪除文件對應的目錄項, 把文件的索引節點的硬鏈接計數減1(一個文件可以有多個名稱,Linux把文件名稱稱為硬鏈接),如果索引節點的硬鏈接計數變成0,那麼釋放索引節點 .因為各種文件系統的物理結構不同,所以需要提供索引節點操作集合的 unlink 方法.

設置文件許可權的命令如下:
(1)chmod [OPTION]... MODE[, MODE]... FILE...
mode : 許可權設定字串,格式[ugoa...][[+-=][rwxX]...][,...]
其中:

(2)chmod [OPTION]... OCTAL-MODE FILE...
參數OCTAL-MODE是八進制數值.
系統調用chmod負責修改文件許可權.

修改文件許可權需要修改文件的索引節點的文件模式欄位,文件模式欄位包含文件類型和訪問許可權.因為各種文件系統類型的索引節點不同,所以需要提供索引節點操作集合的 setattr 方法.

訪問外部存儲設備的速度很慢,為了避免每次讀寫文件時訪問外部存儲設備, 文件系統模塊為每個文件在內存中創建一個緩存 ,因為 緩存的單位是頁 ,所以稱為 頁緩存 .
(1) 索引節點的成員i_mapping 指向地址空間結構體(address_space).進程在打開文件的時候, 文件打開實例(file結構體)的成員f_mapping 也會指向文件的地址空間.
(2)每個文件有一個地址空間結構體 address_space ,成員 page_tree 的類型是結構體radix_tree_root:成員 gfp_mask是分配內存頁的掩碼,成員rnode指向基數樹的根節點 .
(3)使用基數樹管理頁緩存,把文件的頁索引映射到內存頁的頁描述符.

每個文件都有一個地址空間結構體address_space,用來建立數據緩存(在內存中為某種數據創建的緩存)和數據來源(即存儲設備)之間的關聯.結構體address_space如下:

地址空間操作結合address_space_operations的主要成員如下:

頁緩存的常用操作函數如下:
(1)函數find_get_page根據文件的頁索引在頁緩存中查找內存頁.

(2)函數find_or_create_page根據文件的頁索引在頁緩存中查找內存頁,如果沒有找到內存頁,那麼分配一個內存頁,然後添加到頁緩存中.

(3)函數add_to_page_cache_lru把一個內存頁添加到頁緩存和LRU鏈表中.

(4)函數delete_from_page_cache從頁緩存中刪除一個內存頁.

進程讀文件的方式有3種:
(1)調用內核提供的 讀文件的系統調用 .
(2)調用glibc庫封裝的讀文件的 標准I/O流函數 .
(3)創建基於文件的內存映射,把 文件的一個區間映射到進程的虛擬地址空間,然後直接讀內存 .
第2種方式在用戶空間創建了緩沖區,能減少系統調用的次數,提高性能.第3種方式可以避免系統調用,性能最高.

讀文件的主要步驟如下:
(1)調用具體文件系統類型提供的文件操作集合的read和read_iter方法來讀文件.
(2) read或read_iter方法根據頁索引在文件的頁緩存中查找頁,如果沒有找到,那麼調用具體文件系統類型提供的地址空間集合的readpage方法來從存儲設備讀取文件頁到內存中 .
為了提高讀文件的速度,從存儲設備讀取文件頁到內存中的時候,除了讀取請求的文件頁,還會預讀後面的文件頁.如果進程按順序讀文件,預讀文件頁可以提高讀文件的速度;如果進程隨機讀文件,預讀文件頁對提高讀文件的速度幫助不大.

進程寫文件的方式有3種:
(1)調用內核提供的 寫文件的系統調用 .
(2)調用glibc庫封裝的寫文件的 標准I/O流函數 .
(3)創建基於文件的內存映射,把 文件的一個區間映射到進程的虛擬空間,然後直接寫內存 .
第2種方式在用戶空間創建了緩沖區,能夠減少系統調用的次數,提高性能.第3種方式可以避免系統調用,性能最高.

寫文件的主要步驟如下:
(1)調用具體文件系統類型提供的文件操作集合的write或write_iter方法來寫文件.
(2)write或write_iter方法調用文件的地址空間操作集合的 write_begin 方法, 在頁緩存查找頁,如果頁不存在就分配頁;然後把數據從用戶緩沖區復制到頁緩存的頁中 ;最後調用文件的地址空間操作集合的 write_end 方法.

進程寫文件時,內核的文件系統模塊把數據寫到文件的頁緩存,沒有立即寫回到存儲設備.文件系統模塊會定期把臟頁寫回到存儲設備,進程也可以調用系統調用把臟頁強制寫回到存儲設備.

管理員可以執行命令"sync",把內存中所有修改過的文件元數據和文件數據寫回到存儲設備.
內核提供了 sync , syncfs , fsync , fdatasync , sync_file_range 等系統調用用於文件寫回.

把文件寫回到存儲設備的時機如下:
(1)周期回寫.
(2)當臟頁的數量達到限制的時候,強制回寫.
(3)進程調用sync和syncfs等系統調用.

對於類似內存的塊設備,例如NVDIMM設備,不需要把文件從存儲設備復制到頁緩存.DAX繞過頁緩存,直接訪問存儲設備,對於基於文件的內存映射,直接把存儲設備映射到進程的虛擬地址空間.
調用系統調用mmap創建基於文件的內存映射,把文件的一個區間映射到進程的虛擬地址空間,這會調用具體文件系統類型提供的文件操作集合的mmap方法.mmap方法針對設置了標志位S_DAX的索引節點,處理方法如下:
(1)給虛擬內存區域設置標志位VM_MIXEDMAP和VM_HUGEPAGE.
(2)設置虛擬內存操作集合,提供fault,huge_fault,page_mkwrite和pfn_mkwrite方法.

❸ Linux 內核驅動介面詳解

寫作本文檔的目的,是為了解釋為什麼Linux既沒有二進制內核介面,也沒有穩定 的內核介面。這里所說的內核介面,是指內核里的介面,而不是內核和用戶空間 的介面。內核到用戶空間的介面,是提供給應用程序使用的系統調用,系統調用 在 歷史 上幾乎沒有過變化,將來也不會有變化。我有一些老應用程序是在0.9版本 或者更早版本的內核上編譯的,在使用2.6版本內核的Linux發布上依然用得很好 。用戶和應用程序作者可以將這個介面看成是穩定的。

你也許以為自己想要穩定的內核介面,但是你不清楚你要的實際上不是它。你需 要的其實是穩定的驅動程序,而你只有將驅動程序放到公版內核的源代碼樹里, 才有可能達到這個目的。而且這樣做還有很多其它好處,正是因為這些好處使得 Linux能成為強壯,穩定,成熟的操作系統,這也是你最開始選擇Linux的原因。

只有那些寫驅動程序的「怪人」才會擔心內核介面的改變,對廣大用戶來說,既 看不到內核介面,也不需要去關心它。

既然只談技術問題,我們就有了下面兩個主題:二進制內核介面和穩定的內核源 代碼介面。這兩個問題是互相關聯的,讓我們先解決掉二進制介面的問題。

假如我們有一個穩定的內核源代碼介面,那麼自然而然的,我們就擁有了穩定的 二進制介面,是這樣的嗎?錯。讓我們看看關於Linux內核的幾點事實:

對於一個特定的內核,滿足這些條件並不難,使用同一個C編譯器和同樣的內核配 置選項來編譯驅動程序模塊就可以了。這對於給一個特定Linux發布的特定版本提 供驅動程序,是完全可以滿足需求的。但是如果你要給不同發布的不同版本都發 布一個驅動程序,就需要在每個發布上用不同的內核設置參數都編譯一次內核, 這簡直跟噩夢一樣。而且還要注意到,每個Linux發布還提供不同的Linux內核, 這些內核都針對不同的硬體類型進行了優化(有很多種不同的處理器,還有不同 的內核設置選項)。所以每發布一次驅動程序,都需要提供很多不同版本的內核 模塊。

相信我,如果你真的要採取這種發布方式,一定會慢慢瘋掉,我很久以前就有過 深刻的教訓…

如果有人不將他的內核驅動程序,放入公版內核的源代碼樹,而又想讓驅動程序 一直保持在最新的內核中可用,那麼這個話題將會變得沒完沒了。 內核開發是持續而且快節奏的,從來都不會慢下來。內核開發人員在當前介面中 找到bug,或者找到更好的實現方式。一旦發現這些,他們就很快會去修改當前的 介面。修改介面意味著,函數名可能會改變,結構體可能被擴充或者刪減,函數 的參數也可能發生改變。一旦介面被修改,內核中使用這些介面的地方需要同時 修正,這樣才能保證所有的東西繼續工作。

舉一個例子,內核的USB驅動程序介面在USB子系統的整個生命周期中,至少經歷 了三次重寫。這些重寫解決以下問題:

這和一些封閉源代碼的操作系統形成鮮明的對比,在那些操作系統上,不得不額 外的維護舊的USB介面。這導致了一個可能性,新的開發者依然會不小心使用舊的 介面,以不恰當的方式編寫代碼,進而影響到操作系統的穩定性。 在上面的例子中,所有的開發者都同意這些重要的改動,在這樣的情況下修改代 價很低。如果Linux保持一個穩定的內核源代碼介面,那麼就得創建一個新的介面 ;舊的,有問題的介面必須一直維護,給Linux USB開發者帶來額外的工作。既然 所有的Linux USB驅動的作者都是利用自己的時間工作,那麼要求他們去做毫無意 義的免費額外工作,是不可能的。 安全問題對Linux來說十分重要。一個安全問題被發現,就會在短時間內得到修 正。在很多情況下,這將導致Linux內核中的一些介面被重寫,以從根本上避免安 全問題。一旦介面被重寫,所有使用這些介面的驅動程序,必須同時得到修正, 以確定安全問題已經得到修復並且不可能在未來還有同樣的安全問題。如果內核 內部介面不允許改變,那麼就不可能修復這樣的安全問題,也不可能確認這樣的 安全問題以後不會發生。 開發者一直在清理內核介面。如果一個介面沒有人在使用了,它就會被刪除。這 樣可以確保內核盡可能的小,而且所有潛在的介面都會得到盡可能完整的測試 (沒有人使用的介面是不可能得到良好的測試的)。

如果你寫了一個Linux內核驅動,但是它還不在Linux源代碼樹里,作為一個開發 者,你應該怎麼做?為每個發布的每個版本提供一個二進制驅動,那簡直是一個 噩夢,要跟上永遠處於變化之中的內核介面,也是一件辛苦活。 很簡單,讓你的驅動進入內核源代碼樹(要記得我們在談論的是以GPL許可發行 的驅動,如果你的代碼不符合GPL,那麼祝你好運,你只能自己解決這個問題了, 你這個吸血鬼把Andrew和Linus對吸血鬼的定義鏈接到這里>)。當你的代碼加入 公版內核源代碼樹之後,如果一個內核介面改變,你的驅動會直接被修改介面的 那個人修改。保證你的驅動永遠都可以編譯通過,並且一直工作,你幾乎不需要 做什麼事情。

把驅動放到內核源代碼樹里會有很多的好處:

❹ 為linux網路介面配置多個ip地址

假設需要配置的介面是eth0

ifconfig eth0:1 192.168.2.2 netmask 255.255.255.0  up

使用ip addr add命令添加多ip

ip addr add 192.168.2.2 dev eth0

❺ Linux用shell創建子介面

#!/bin/sh

N=1
number=$1
if [ $number -lt $N ] ; then
exit 0
fi
while true
do
if [ $N -gt $number ] ; then
break;
fi
### 假設准備掛在的網卡為eth0 網路為C類 #####
ifconfig -s eth0:${N} 192.168.1.${N}/24
done
#################
## 這樣就可以實現多少個介面都沒有關系了
#################

❻ Linux常用網路配置命令

一、查看網路配置

確保網路配置的正確性及網路連接的暢通是Linux系統作為伺服器應用的基礎,查看及測試網路配置是管理Linux網路服務的第一步。

1.ifconfig——查看網路配置

1) 查看所有活動網路介面的信息

執行 ifconfig 或ip addr或ip a命令,都可以顯示當前主機中已啟用(活動)的網路介面信息。、

2) 查看指定網路介面信息

格式:ifconfig 網路介面名

可以通過TX、RX等信息了解到通過該網路介面發送和接收的數據包個數,流量等跟多屬性。

2.hostname命令

在Linux系統中,相當一部分網路服務都會通過主機名來識別本機,如果主機名配置不當,可能會導致程序功能出現故障。

1) 查看主機名

使用hostname命令就可以查看當前主機的主機名,不添加任何選項參數。

2) 臨時更改主機名

hostname NewName

註:這種方法只是臨時的更改主機名,重啟後將失效。

3) 永久更改主機名

a. 修改配置文件

RHEL6和7的配置文件存放路徑不相同,修改配置文件中的主機名,重啟就可永久更改主機名。

RHEL6主機名配置文件路徑為:/etc/sysconfig/network

RHEL7主機名配置文件路徑為:/etc/hostname

示例

b. 使用命令修改(這種方法只適用於RHEL7或者CentOS7之後)

命令格式:

使用該命令更改後,更改後的主機名就自動寫入了配置文件中,所以可以永久更改主機名,其實就是修改了配置文件。

3.route命令

直接執行route命令可以查看當前主機中的路由表信息,若結合「-n」選項使用,可以將路由記錄中的地址顯示為數字形式,這可以跳過解析主機名的過程,在路由表條目較多的情況下能夠加快執行速度。

Destination列對應的是目標網段的地址,Gateway列對應的是嚇一跳路由器的地址,Iface列對應的是發送數據的網路介面。當目標網段為「default」是,表示此行是默認網關記錄,當嚇一跳為「*」是,表示目標網段是與本機直接相連的。

4.netstat命令——查看系統的網路連接狀態等

netstat命令是了解網路狀態及排除網路服務故障的有效工具。

常用選項:

-a:顯示所有活動連接(包括監聽、非監聽狀態的服務埠)

-n:以數字形式顯示

-p:顯示相關的進程信息

-t:查看 TCP 協議相關信息

-u:查看UDP協議相關信息

-r:顯示路由表信息

-l:顯示處於監聽(listening)狀態的網路連接及埠信息

通常使用「-anput」組合選項,結合管道使用「grep」命令,來查看一些服務的埠是否開啟。

示例:

Tcp21為ftp服務的埠

二、測試網路連接

1.ping命令——測試網路連通性

常用選項:

-c<完成次數>:設置完成要求回應的次數

-i<間隔秒數>:指定收發信息的間隔時間

-q:不顯示指令執行過程,開頭和結尾的相關信息除外

-s<數據包大小>:設置數據包的大小

-t<存活數值>:設置存活數值TTL的大小

-v:詳細顯示指令的執行過程

若返回「Destination Host Unreachable」的反饋信息,則表示目標主機不可達,可能目標地址不存在或主機已關閉;返回「Network is unreachable」的反饋信息,則表示沒有可用的路由記錄(如默認網關),無法到達目標主機所在的網路;返回「Request timeout」的反饋信息,表示與目標主機間的連接超時(數據包緩慢或丟失),若有嚴格的防火牆限制,也可能返回此信息。

2.traceroute命令——跟蹤數據包的路由途徑

使用traceroute命令可以測試從當前主機到目的主機之間經過的網路節點,並顯示各中間結點的連接狀態(響應時間)。對於無法響應的節點,連接狀態將顯示為「*」。

示例:traceroute IP_ADDR

在網路測試與排錯的過程中,通常會先使用ping命令測試與主機的網路連接,如果發現網路有故障,再使用traceroute命令跟蹤查看是在哪個中間結點存在故障。

3.nslookup命令——測試DNS域名解析

nslookup是用來測試(DNS)域名解析的專用工具。(DNS服務後面再詳細講解,通俗的說就是將域名解析為ip地址的一個服務)

示例:nslookup www..com

若成功反饋要查詢域名的IP地址,則表示域名解析沒有問題;若出現「...... no servers could be reached」的信息,表示不能連接到指定的DNS伺服器;若出現「...... cant』t find xxx.yyy.zzz:NXDOMAIN」的信息,表示要查詢的域名不存在。

三、設置網路地址參數

設置網路參數的方法:

• 臨時配置 —— 使用命令調整網路參數簡單、快速,可直接修改運行中的網路參數

一般只適合在調試網路的過程中使用

系統重啟以後,所做的修改將會失效

• 永久配置 —— 通過配置文件修改網路參數修改各項網路參數的配置文件

適合對伺服器設置固定參數時使用

需要重載網路服務或者重啟以後才會生效

1.臨時配置——使用網路配置命令(註:RHEL6中網路介面的名稱為eth,RHEL7中為ens)

1)使用ifconfig命令修改網卡的地址、狀態

ifconfig命令不僅可以用於查看網卡配置,還可以修改網卡的ip地址,子網掩碼,也可以綁定網路介面、激活或停用網路介面

a. 修改網卡的ip地址(臨時修改)

命令格式:

示例:

b. 禁用或者重新激活網卡

命令格式:

示例:

c. 設置虛擬網路介面(相當於一塊網卡配置多個IP地址)

命令格式:

示例:

可以根據需要添加更多的虛擬介面,如「eth0:1」「eth0:2」等

2)使用route命令添加、刪除靜態路由記錄

• 刪除路由表中的默認網關記錄命令格式:route del default gw IP地址

• 向路由表中添加默認網關記錄命令格式:route add default gw IP地址

• 添加到指定網段的路由記錄命令格式:route add -net 網段地址 gw IP地址

• 刪除到指定網段的路由記錄命令格式:router del -net 網段地址

2.永久配置——修改網路配置文件

1)網路介面配置文件

網路介面的配置文件默認位於目錄「/etc/sysconfig/network-scripts/」中,文件名格式為:「ifcfg-XXX」,其中「XXX」是網路介面的名稱。例如:RHEL6中網卡eth0的配置文件是「ifcfg-eth0」,而RHEL7中網卡ens33的配置文件是「ifcfg-ens33」。

在網卡的配置文件中,可以看到靜態IP地址的部分內容如下圖所示:

上述個配置項的含義及作用:(圖示為RHEL6中的配置文件,7中也差不多,換湯不換葯,修改的都差不多)

• DEVICE:設置網路介面的名稱ONBOOT:設置網路介面是否在Linux系統啟動時激活BOOTPROTO:設置網路介面的配置方式,值為static時表示使用靜態ip地址,為dhcp時表示通過dhcp的方式動態獲取ip地址IPADDR:設置網路介面的ip地址NETMASK:設置網路介面的子網掩碼GATEWAY:設置網路介面的默認網關地址2)重啟 network 網路服務

當修改了網路介面的配置文件以後,若要使新的配置生效,可以重啟network服務或者重啟主機或者禁用、啟用網路介面。

示例:

• RHEL6中重啟network服務:service network restartRHEL7中重啟network服務:systemctl restart network註:這是我在做實驗時候的一個經驗:RHEL6修改完網卡配置重啟後,ip地址仍然沒有改過來,這時候我們經常會刪除「/etc/udev/rules.d/70-persistent-net.rules」這個文件。RHEL7不用管,RHEL7特別好改,RHEL6改的時候特別難受。(個人提示,不求認同)

3)域名解析配置文件

a.指定為本機提供DNS解析的伺服器地址

/etc/resolv.conf文件中記錄了本機默認使用的DNS伺服器的地址信息,對該文件所做的修改將會立刻生效。Linux系統中最多可以指定3個(第3個以後將被忽略)不同的DNS伺服器地址,優先使用第1個DNS伺服器。

示例:

其中「search localdomain」用來設置默認的搜索域(域名後綴)。例如,當訪問主機「localhost」時,就相當於訪問「localhost.localdomain」。

b.本地主機映射文件

/etc/hosts文件中記錄著一份主機名與ip地址的映射關系表,一般用來保存經常訪問的主機信息。當訪問一個未知的域名時,先查找該文件中是否有相應的映射記錄,如果找不到在去向DNS伺服器查詢。

hosts 文件和 DNS 伺服器的比較

• 默認情況下,系統首先從 hosts 文件查找解析記錄hosts 文件只對當前的主機有效hosts 文件可減少 DNS 查詢過程,從而加快訪問速度

❼ Linux網路子介面配置

方式一:臨時方式(重啟則失效):

添加網路子介面:

ifconfig eth0:1 10.1.77.87 netmask 255.255.255.0

除子介面:

ifconfig eth0:1 10.1.77.87 netmask 255.255.255.0 down

註:在/etc/rc.local中配置該命令可以每次重啟PC時均執行次命令配置子網路

方式二:

修改配置文件,永久生效

❽ Linux網路相關配置

這里說的網路配置主要是centos環境

centOS系統,在/etc/sysconfig/network-scripts目錄下找到當前機器的埠文件,文件名通常是ifcfg-網路連接名。
vim 打開編輯,添加修改分配模式,IP地址,掩碼,DNS等內容,完整的示例如下:

修改完成後,執行systemctl restart network重啟網卡生效。

Ubuntu20配置值靜態ip,需要修改/etc/netplan下面找到一個yaml文件,文件名帶network的,1-network-manager-all.yaml,這里給出一個配置示例:
(這里用ifconfig或者ip addr命令先看一下自己的網卡編號,我的編號是enpls0)

修改完成後,輸入命令:sudo netplan apply使得配置生效
配置完成後ping一下其他機器或者外網網址看一下網路是否通了,配置還是沒生效可以嘗試重啟機器(重啟不影響的情況下)。

查看埠信息
netstat -tunlp |grep 埠號 查看指定的埠號的進程情況,如查看8000埠的情況,netstat -tunlp |grep 8000
nmap 127.0.0.1 查看本機開放的埠,會掃描所有埠。
lsof -i:埠號查看埠所在進程-9

啟動防火牆
systemctl start firewalld
禁用防火牆
systemctl stop firewalld
設置/禁止開機啟動
systemctl enable/disable firewalld
重啟防火牆
firewall-cmd --reload
查看狀態
systemctl status firewalld / firewalld-cmd --state
查看版本
firewall-cmd --version
查看幫助
firewall-cmd --help
查看區域信息
firewall-cmd --get-active-zones
查看指定介面所屬區域信息
firewall-cmd --get-zone-of-interface=eth0
拒絕所有包
firewall-cmd --panic-on
取消拒絕狀態
firewall-cmd --panic-off
查看是否拒絕
firewall-cmd --query-panicpor
將介面添加到區域(默認介面都在public)
firewall-cmd --zone=public --add-interface=eth0(永久生效再加上 --permanent 然後reload防火牆)
設置默認介面區域
firewall-cmd --set-default-zone=public(立即生效,無需重啟)
更新防火牆規則
firewall-cmd --reload或firewall-cmd --complete-reload(兩者的區別就是第一個無需斷開連接,就是firewalld特性之一動態添加規則,第二個需要斷開連接,類似重啟服務)
查看指定區域所有打開的埠
firewall-cmd --list-port
firewall-cmd --zone=public --list-ports
在指定區域打開埠(打開後需要重啟防火牆生效)
firewall-cmd --zone=public --add-port=80/tcp(永久生效再加上 --permanent)

參考網址: https://jingyan..com/article/20b68a88943059796cec622e.html

❾ linux為什麼添加子介面後不能下載軟體

linux為什麼添加子介面後不能下載軟體?
答案如下:linux為什麼添加子介面後不能下載軟體是因為沒有借口所以不能下載

❿ 如何在Linux內核里增加一個系統調用

一、Linux0.11下添加系統調用:x0dx0ax0dx0a我在bochs2.2.1中對linux0.11內核添加了一個新的系統調用,步驟如下: x0dx0a1./usr/src/linux/include/unistd.h中添加:#define __NR_mytest 87 x0dx0a然後在下面聲明函數原型:int mytest(); x0dx0a2./usr/src/linux/include/linux/sys.h中添加:extern int sys_mytest(); x0dx0a然後在sys_call_table中最後加上sys_mytest; x0dx0a3.在/usr/src/linux/kernel/sys.c中添加函數實現如下: x0dx0aint sys_mytest(){ x0dx0aprintk("This is a test!"); x0dx0areturn 123; x0dx0a} x0dx0a4.在/usr/src/linux/kernel/system_call.s中對系統調用號加1(原來是86改成了87) x0dx0a5.然後到/usr/src/linux目錄下編譯內核make clean; make Image x0dx0a6. cp /usr/src/linux/include/unistd.h /usr/include/unistd.h x0dx0a7. reset bochs x0dx0a8. 在/usr/root中生成test.c文件如下: x0dx0a#define __LIBRARY__ x0dx0a#include x0dx0a_syscall0(int,mytest) x0dx0aint main(){ x0dx0aint a; x0dx0aa = mytest(); x0dx0aprintf("%d", a); x0dx0areturn 0; x0dx0a} x0dx0a9.然後gcc test.c編譯之後運行a.out,前面所有步驟都通過,但是每次調用都是返回-1,然後我查過errno為1(表示操作不允許),就不知道為什麼了? x0dx0a系統知道的高手們能夠告知一下,不勝感激!這個問題困擾我很久了! x0dx0ax0dx0a二、新Linux內核添加系統調用x0dx0ax0dx0a如何在Linux系統中添加新的系統調用x0dx0a系統調用是應用程序和操作系統內核之間的功能介面。其主要目的是使得用戶可以使用操作系統提供的有關設備管理、輸入/輸入系統、文件系統和進程式控制制、通信以及存儲管理等方面的功能,而不必了解系統程序的內部結構和有關硬體細節,從而起到減輕用戶負擔和保護系統以及提高資源利用率的作用。x0dx0ax0dx0aLinux操作系統作為自由軟體的代表,它優良的性能使得它的應用日益廣泛,不僅得到專業人士的肯定,而且商業化的應用也是如火如荼。在Linux中,大部分的系統調用包含在Linux的libc庫中,通過標準的C函數調用方法可以調用這些系統調用。那麼,對Linux的發燒友來說,如何在Linux中增加新的系統調用呢? x0dx0a1 Linux系統調用機制x0dx0ax0dx0a在Linux系統中,系統調用是作為一種異常類型實現的。它將執行相應的機器代碼指令來產生異常信號。產生中斷或異常的重要效果是系統自動將用戶態切換為核心態來對它進行處理。這就是說,執行系統調用異常指令時,自動地將系統切換為核心態,並安排異常處理程序的執行。Linux用來實現系統調用異常的實際指令是:x0dx0ax0dx0aInt $0x80x0dx0ax0dx0a這一指令使用中斷/異常向量號128(即16進制的80)將控制權轉移給內核。為達到在使用系統調用時不必用機器指令編程,在標準的C語言庫中為每一系統調用提供了一段短的子程序,完成機器代碼的編程工作。事實上,機器代碼段非常簡短。它所要做的工作只是將送給系統調用的參數載入到CPU寄存器中,接著執行int $0x80指令。然後運行系統調用,系統調用的返回值將送入CPU的一個寄存器中,標準的庫子程序取得這一返回值,並將它送回用戶程序。x0dx0ax0dx0a為使系統調用的執行成為一項簡單的任務,Linux提供了一組預處理宏指令。它們可以用在程序中。這些宏指令取一定的參數,然後擴展為調用指定的系統調用的函數。x0dx0ax0dx0a這些宏指令具有類似下面的名稱格式:x0dx0ax0dx0a_syscallN(parameters)x0dx0ax0dx0a其中N是系統調用所需的參數數目,而parameters則用一組參數代替。這些參數使宏指令完成適合於特定的系統調用的擴展。例如,為了建立調用setuid()系統調用的函數,應該使用:x0dx0ax0dx0a_syscall1( int, setuid, uid_t, uid )x0dx0ax0dx0asyscallN( )宏指令的第1個參數int說明產生的函數的返回值的類型是整型,第2個參數setuid說明產生的函數的名稱。後面是系統調用所需要的每個參數。這一宏指令後面還有兩個參數uid_t和uid分別用來指定參數的類型和名稱。x0dx0ax0dx0a另外,用作系統調用的參數的數據類型有一個限制,它們的容量不能超過四個位元組。這是因為執行int $0x80指令進行系統調用時,所有的參數值都存在32位的CPU寄存器中。使用CPU寄存器傳遞參數帶來的另一個限制是可以傳送給系統調用的參數的數目。這個限制是最多可以傳遞5個參數。所以Linux一共定義了6個不同的_syscallN()宏指令,從_syscall0()、_syscall1()直到_syscall5()。x0dx0ax0dx0a一旦_syscallN()宏指令用特定系統調用的相應參數進行了擴展,得到的結果是一個與系統調用同名的函數,它可以在用戶程序中執行這一系統調用。x0dx0a2 添加新的系統調用 x0dx0a如果用戶在Linux中添加新的系統調用,應該遵循幾個步驟才能添加成功,下面幾個步驟詳細說明了添加系統調用的相關內容。x0dx0ax0dx0a(1) 添加源代碼x0dx0ax0dx0a第一個任務是編寫加到內核中的源程序,即將要加到一個內核文件中去的一個函數,該函數的名稱應該是新的系統調用名稱前面加上sys_標志。假設新加的系統調用為mycall(int number),在/usr/src/linux/kernel/sys.c文件中添加源代碼,如下所示:x0dx0aasmlinkage int sys_mycall(int number) x0dx0a{ x0dx0areturn number; x0dx0a}x0dx0a作為一個最簡單的例子,我們新加的系統調用僅僅返回一個整型值。x0dx0ax0dx0a(2) 連接新的系統調用x0dx0ax0dx0a添加新的系統調用後,下一個任務是使Linux內核的其餘部分知道該程序的存在。為了從已有的內核程序中增加到新的函數的連接,需要編輯兩個文件。x0dx0ax0dx0a在我們所用的Linux內核版本(RedHat 6.0,內核為2.2.5-15)中,第一個要修改的文件是:x0dx0ax0dx0a/usr/src/linux/include/asm-i386/unistd.hx0dx0ax0dx0a該文件中包含了系統調用清單,用來給每個系統調用分配一個唯一的號碼。文件中每一行的格式如下:x0dx0ax0dx0a#define __NR_name NNNx0dx0ax0dx0a其中,name用系統調用名稱代替,而NNN則是該系統調用對應的號碼。應該將新的系統調用名稱加到清單的最後,並給它分配號碼序列中下一個可用的系統調用號。我們的系統調用如下:x0dx0ax0dx0a#define __NR_mycall 191x0dx0ax0dx0a系統調用號為191,之所以系統調用號是191,是因為Linux-2.2內核自身的系統調用號碼已經用到190。x0dx0ax0dx0a第二個要修改的文件是:x0dx0ax0dx0a/usr/src/linux/arch/i386/kernel/entry.Sx0dx0ax0dx0a該文件中有類似如下的清單:x0dx0a.long SYMBOL_NAME()x0dx0ax0dx0a該清單用來對sys_call_table[]數組進行初始化。該數組包含指向內核中每個系統調用的指針。這樣就在數組中增加了新的內核函數的指針。我們在清單最後添加一行:x0dx0a.long SYMBOL_NAME(sys_mycall)x0dx0ax0dx0a(3) 重建新的Linux內核x0dx0ax0dx0a為使新的系統調用生效,需要重建Linux的內核。這需要以超級用戶身份登錄。x0dx0a#pwd x0dx0a/usr/src/linux x0dx0a#x0dx0ax0dx0a超級用戶在當前工作目錄(/usr/src/linux)下,才可以重建內核。x0dx0ax0dx0a#make config x0dx0a#make dep x0dx0a#make clearn x0dx0a#make bzImagex0dx0ax0dx0a編譯完畢後,系統生成一可用於安裝的、壓縮的內核映象文件:x0dx0ax0dx0a/usr/src/linux/arch/i386/boot/bzImage x0dx0a(4) 用新的內核啟動系統 x0dx0a要使用新的系統調用,需要用重建的新內核重新引導系統。為此,需要修改/etc/lilo.conf文件,在我們的系統中,該文件內容如下:x0dx0ax0dx0aboot=/dev/hda x0dx0amap=/boot/map x0dx0ainstall=/boot/boot.b x0dx0aprompt x0dx0atimeout=50 x0dx0ax0dx0aimage=/boot/vmlinuz-2.2.5-15 x0dx0alabel=linux x0dx0aroot=/dev/hdb1 x0dx0a read-only x0dx0ax0dx0aother=/dev/hda1 x0dx0alabel=dos x0dx0atable=/dev/hadx0dx0ax0dx0a首先編輯該文件,添加新的引導內核:x0dx0aimage=/boot/bzImage-new x0dx0alabel=linux-new x0dx0aroot=/dev/hdb1 x0dx0aread-onlyx0dx0ax0dx0a添加完畢,該文件內容如下所示:x0dx0aboot=/dev/hda x0dx0amap=/boot/map x0dx0ainstall=/boot/boot.b x0dx0aprompt x0dx0atimeout=50 x0dx0ax0dx0aimage=/boot/bzImage-new x0dx0alabel=linux-new x0dx0aroot=/dev/hdb1 x0dx0aread-only x0dx0ax0dx0aimage=/boot/vmlinuz-2.2.5-15 x0dx0alabel=linux x0dx0aroot=/dev/hdb1 x0dx0aread-only x0dx0ax0dx0aother=/dev/hda1 x0dx0alabel=dos x0dx0atable=/dev/hdax0dx0ax0dx0a這樣,新的內核映象bzImage-new成為預設的引導內核。為了使用新的lilo.conf配置文件,還應執行下面的命令:x0dx0a#cp /usr/src/linux/arch/i386/boot/zImage /boot/bzImage-newx0dx0ax0dx0a其次配置lilo:x0dx0ax0dx0a# /sbin/lilox0dx0ax0dx0a現在,當重新引導系統時,在boot:提示符後面有三種選擇:linux-new 、linux、dos,新內核成為預設的引導內核。x0dx0a至此,新的Linux內核已經建立,新添加的系統調用已成為操作系統的一部分,重新啟動Linux,用戶就可以在應用程序中使用該系統調用了。x0dx0ax0dx0a(5)使用新的系統調用x0dx0ax0dx0a在應用程序中使用新添加的系統調用mycall。同樣為實驗目的,我們寫了一個簡單的例子xtdy.c。x0dx0ax0dx0a/* xtdy.c */ x0dx0a#include x0dx0a_syscall1(int,mycall,int,ret) x0dx0amain() x0dx0a{ x0dx0aprintf("%d \n",mycall(100)); x0dx0a}x0dx0a編譯該程序:x0dx0a# cc -o xtdy xtdy.cx0dx0a執行:x0dx0a# xtdyx0dx0a結果:x0dx0a# 100x0dx0a注意,由於使用了系統調用,編譯和執行程序時,用戶都應該是超級用戶身份。

閱讀全文

與linux添加介面相關的資料

熱點內容
蘋果平板如何開啟隱私單個app 瀏覽:704
空調壓縮機一開就停止 瀏覽:528
如何下載虎牙app 瀏覽:847
日語年號的演算法 瀏覽:955
dev裡面的編譯日誌咋調出來 瀏覽:298
php函數引用返回 瀏覽:816
文件夾和文件夾的創建 瀏覽:259
香港加密貨幣牌照 瀏覽:838
程序員鼓勵自己的代碼 瀏覽:393
計算機網路原理pdf 瀏覽:752
吃雞國際體驗服為什麼伺服器繁忙 瀏覽:94
php中sleep 瀏覽:490
vr怎麼看視頻演算法 瀏覽:86
手機app如何申報個人所得稅零申報 瀏覽:694
如何截獲手機app連接的ip 瀏覽:331
冰箱壓縮機是否需要電容 瀏覽:346
python列表每一行數據求和 瀏覽:275
自己有一台伺服器可以玩什麼 瀏覽:657
社會學波普諾pdf 瀏覽:584
解壓做食物的小視頻 瀏覽:759