導航:首頁 > 操作系統 > linux網路調試

linux網路調試

發布時間:2022-06-16 04:38:40

『壹』 虛擬機 linux 網路下面網路如何配置

設置過程如下:

1、首先是網路適配器設置為NAT;

(1)linux網路調試擴展閱讀:

介紹下VM常用的兩種網路連接方式和區別:

1、橋接網路: 在這種模式下,VMWare虛擬出來的操作系統就像是區域網中的一台獨立的主機,它可以訪問網內任何一台機器。

在橋接模式下,你需要手工為虛擬系統配置IP地址、子網掩碼,而且還要和宿主機器處於同一網段,這樣虛擬系統才能和宿主機器進行通信。同時,配置好網關和DNS的地址後,以實現通過區域網的網關或路由器訪問互聯網。

2、nat網路:
使用NAT模式,就是讓虛擬系統藉助NAT(網路地址轉換)功能,通過宿主機器所在的網路來訪問公網。也就是說,使用NAT模式可以實現在虛擬系統里訪問互聯網。

NAT模式下的虛擬系統的TCP/IP配置信息是由VMnet8(NAT)虛擬網路的DHCP伺服器提供的,無法進行手工修改,因此虛擬系統也就無法和本區域網中的其他真實主機進行通訊。

採用NAT模式最大的優勢是虛擬系統接入互聯網非常簡單,只需要宿主機器能訪問互聯網,你不需要配置IP地址,子網掩碼,網關,但是DNS地址還是要根據實際情況填的。添加DNS地址除了在網卡屬性中填寫,還可以在虛擬機中的「虛擬網路編輯器」中的NAT選項卡中點擊「編輯」按鈕中來添加。

如果僅僅是讓虛擬機能上網,兩種模式都可以的,用橋接的話只要你在區域網內有合法的地址,比如你的ADSL貓是帶路由功能的,如果是在單位,那就要網管給你合法IP才行(現在公司都是mac和ip綁定的)。

現在是主機和虛擬機互通,如果你的adsl帶路由功能,那關閉虛擬機的dhcp,選橋接,檢查2機是否分配同網段的IP,關閉防火牆。

換成自己的話就是:
橋接是虛擬機相當於一台獨立的計算機,有自己的ip地址。

NAT是共享宿主機器的ip來訪問網路,主要宿主計算機能訪問網路,它就可以訪問。

『貳』 tcp調試助手怎麼用 linux

TCP調試助手是一個輔助調試UDP/TCP的工具軟體,支持TCP Server、TCP Client、UDP等通信模式,為網路調試提供極大的方便。
如何建立一個UDP連接?
用TCP調試助手,選擇UDP方式。打開兩個,填寫好埠號,然後互聯就可以了!

『叄』 如何在Linux下調試PostgreSQL

1. 安裝Linux操作系統
注意把gdb、Emacs或DDD這些開發工具都安裝上。如果是在虛擬機上安裝,依然需要設置Linux系統的網路環境;另外需要設置文件共享,方便windows下面的postgreSQL源碼能在Linux下面訪問到。

2. 安裝PostgreSQL
useradd postgre

(自動建立 postgre 組;設計人員為了安全考慮,PostgreSQL 不能以root 用戶運行,所以必須建立對應的用戶和組。)
解壓到 /usr/local/src
tar xvfz postgresql-8.4.tar.gz
cd postgresql-8.4
./configure --prefix=/usr/local/pgsql --enable-debug --enable-assert --without-readline --without-zlib
make
make install
chown -R postgre.postgre /usr/local/pgsql

3. 設置Postgres環境變數(非必須)
vi ~postgre/.bash_profile
添加:
PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PGLIB PGDATA PATH MANPATH

4. 建立資料庫
以 postgres 用戶登錄:
su postgre
建立資料庫目錄:
mkdir data
啟動資料庫引擎:
initdb –D 「資料庫目錄」
之後可以根據提示,通過psql進入資料庫

5. 構造PostgreSQL調試環境
先 psql template1進去,然後
select pg_backend_pid();
獲得id,就是gdb後面用到的數字
gdb /usr/local/pgsql/bin/postgres 997(pid的數字)
如果只使用gdb,全部是命令行界面;而Emac、DDD分別是彩色、黑白用戶互動式圖形界面。

6. 使用gdb進行調試

『肆』 linux 系統下用console口調試網路設備。

putty
http://blog.163.com/zhaoweibiao87@126/blog/static/1347994812013084636341/可以借鑒一下這位大神分享的內容

『伍』 怎麼樣學好LIUNX網路工程師求大神幫助

要想成為合格的系統管理員不 是一 兩天的事情,至少要懂windows平台的2003企業版本,標准版,2000 高級版本,xp等,還要知道系統,還要學dos 最主要你只要把linux學好,學windows真的很簡單,我介紹一個redhat紅帽子系統,一般常用的系統命令如ls lsmod top free ,vi gedit ,cd,mkdir rm,vmstat ,至少50個命令,內部命令和外部ifconfig命令,ping ifconfig eth0等,要知道linux系統文件結構等,根文件系統/ /boot swap /etc usr/local /usr /tmp /root /home 等知道系統樹形結構,每個目錄下文件的作用主要放什麼命令如/bin /sbin放命令,/boot啟動vmlinux.img文件,和initrd.img文件,grub/grub.conf配置文件等,swap為交換取,內存的兩倍,學會用 rpm -ivh安裝rpm軟體包,或用tar.gz包編譯看readme或install文檔,然後一般是tar -zxvf/Zxvf/jxvf解壓文件,然後進入cd目錄然後./configure --prefix=/usr/local/文件名,make&make install安裝。 網路調試ifconfig命令,ping命令等,router add default gw 網關,或vi /etc/sysconfig/network-script-if-eth0為第一個網卡等,還要學會linux下安裝驅動程序,編譯模塊就是驅動程序,還有.so文件就是 /lib裡面的,就是windows中的dll動態鏈接庫要學會ln -s軟鏈接,等,要學會裝任何liunx unix.如redhat redflag centos ,unix freebad freenas ,等你學會linux就可以學ibm 小型機器aix 5l操作系統為unix,這個更復雜,比方windows 2003要學會怎麼架構網站,如iis+sql2000等,還有linux+mysql+php+apache等,還有郵件伺服器等imail或deamon等,學會普通交換機的級聯和堆疊,還有網站後台維護等,還有資料庫的維護和常見的備份模式。還有區域網的連接等。

『陸』 在Linux 環境中,使用DDD調試工具,代碼有中文,遇到一個問題

1.Linux的操作比較復雜,windows的比較簡單.Linux速度比較快,安全性比windows好但是有很多軟體只能在windows里運行與Linux兼容的軟體正在開發中.Linux適用在網路方面.2.什麼是Linux?簡單地說,Linux是一套免費使用和自由傳播的類Unix操作系統,它主要用於基於Intelx86系列CPU的計算機上。這個系統是由世界各地的成千上萬的程序員設計和實現的。其目的是建立不受任何商品化軟體的版權制約的、全世界都能自由使用的Unix兼容產品。Linux的出現,最早開始於一位名叫LinusTorvalds的計算機業余愛好者,當時他是芬蘭赫爾辛基大學的學生。他的目的是想設計一個代替Minix(是由一位名叫AndrewTannebaum的計算機教授編寫的一個操作系統示教程序)的操作系統,這個操作系統可用於386、486或奔騰處理器的個人計算機上,並且具有Unix操作系統的全部功能,因而開始了Linux雛形的設計。Linux以它的高效性和靈活性著稱。它能夠在PC計算機上實現全部的Unix特性,具有多任務、多用戶的能力。Linux是在GNU公共許可許可權下免費獲得的,是一個符合POSIX標準的操作系統。Linux操作系統軟體包不僅包括完整的Linux操作系統,而且還包括了文本編輯器、高級語言編譯器等應用軟體。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用WindowsNT一樣,允許我們使用窗口、圖標和菜單對系統進行操作。Linux與其他操作系統有什麼區別:Linux可以與MS-DOS、OS/2、Windows等其他操作系統共存於同一台機器上。它們均為操作系統,具有一些共性,但是互相之間各有特色,有所區別。目前運行在PC機上的操作系統主要有Microsoft的MS-DOS、Windows、WindowsNT、IBM的OS/2等。早期的PC機用戶普遍使用MS-DOS,因為這種操作系統對機器的硬體配置要求不高,而隨著計算機硬體技術的飛速發展,硬體設備價格越來越低,人們可以相對容易地提高計算機的硬體配置,於是開始使用Windows、WindowsNT等具有圖形界面的操作系統。Linux是新近被人們所關注的操作系統,它正在逐漸為PC機的用戶所接受。那麼,Linux與其他操作系統的主要區別是什麼呢?下面從兩個方面加以論述。首先看一下Linux與MS-DOS之間的區別。在同一系統上運行Linux和MS-DOS已很普遍,就發揮處理器功能來說,MS-DOS沒有完全實現x86處理器的功能,而Linux完全在處理器保護模式下運行,並且開發了處理器的所有特性。Linux可以直接訪問計算機內的所有可用內存,提供完整的Unix介面。而MS-DOS只支持部分Unix的介面。就使用費用而言,Linux和MS-DOS是兩種完全不同的實體。與其他商業操作系統相比,MS-DOS價格比較便宜,而且在PC機用戶中有很大的佔有率,任何其他PC機操作系統都很難達到MS-DOS的普及程度,因為其他操作系統的費用對大多數PC機用戶來說都是一個不小的負擔。Linux是免費的,用戶可以從internet上或者其他途徑獲得它的版本,而且可以任意使用,不用考慮費用問題。就操作系統的功能來說,MS-DOS是單任務的操作系統,一旦用戶運行了一個MS-DOS的應用程序,它就獨佔了系統的資源,用戶不可能再同時運行其他應用程序。而Linux是多任務的操作系統,用戶可以同時運行多個應用程序。再看一下Linux與OS/2、Windows、WindowsNT之間的區別。從發展的背景看,Linux與其他操作系統的區別是,Linux是從一個比較成熟的操作系統發展而來的,而其他操作系統,如WindowsNT等,都是自成體系,無對應的相依託的操作系統。這一區別使得Linux的用戶能大大地從Unix團體貢獻中獲利。因為Unix是世界上使用最普遍、發展最成熟的操作系統之一,它是七十年代中期發展起來的微機和巨型機的多任務系統,雖然有時介面比較混亂,並缺少相對集中的標准,但還是發展壯大成為了最廣泛使用的操作系統之一。無論是Unix的作者還是Unix的用戶,都認為只有Unix才是一個真正的操作系統。3.首先你需要明白,Linux不是windows,它不是一個由一家商業公司維護的軟體,只有一個包裝。Linux是可以任意包裝自由配置的東西。任何一個人,一家公司都可以按照自己的想法,比如加一點功能,加中文支持,作一個Linux出來。這些Linux雖然核心部分都一樣,但是他們所帶的各種軟體,預設的配置都不一樣。區別是用一種Linux發布(不同的Linux我們叫做不同的發布)也許硬體很好配置,各種軟體也好安裝,用另外一種也許速度快,再一種也許支持中文比較好。總之沒有白吃的午餐,在windows下想當然的東西在linux下也許需要你熬夜才能得到。所以從一開始選擇distribution就必須非常小心,否則因為自己剛好隨某個雜志得到一個Linux發布就以為所有的都一樣就開始安裝,等硬碟數據毀了,或者網路哭天蹌地也配不出來的時候,就晚了。不是開玩笑,我知道windows下安裝驅動程序就是滑鼠點幾下,可是在Linux下,為了驅動一個網卡,折騰一夜是不希奇的--當然,我覺得這是值得的。所以,面對那麼多Linuxdistribution,你應當選擇哪個呢?比較著名的Linuxdistribution有:RedHat:最新版本6.2,7.0beta。由於RedHat公司已經上市,獲得了很多商業的支持,所以它在硬體軟體兼容性上很好。實際上它已經是Linux的工業標准。想像一下如果你是一個比如Oracle這樣廠商的老闆,你需要為Linux開發一個版本,而不同的Linuxdist需要單獨開發維護,為成本考慮你自然會只認准一個Linux。Slackware(7.1)。很早就有的Linux,有很多老的忠實用戶,但現在越來越不行了。SuSeLinux,德國人做的,在歐洲很流行,有一些驅動上的優勢。另外還有Debian,CorelLinux等dist,不一一介紹了。還有你會看到國內媒體上吹捧的各種「中文Linux」,他們的優勢主要是有中文處理。但是如前一篇文章提到的,想用中文,用windows2000最好。實際上我覺得一個老7字班的前輩跟我說的一句話很好:「(對我們來說)在計算機上看到中文本身就是一件很古怪的事情」。如果你是抱著學習計算機的目的而來,那麼你不可能避免閱讀英文文檔。即使是microsoft的文檔,有關編程的文檔,最新的也全是英文。當然,要上BBS,看中文網頁等,用英文的dist一樣能做到4.Linux和Windows的區別和Linux一樣,Windows系列是完全的多任務操作系統。它們支持同樣的用戶介面、網路和安全性。但是,Linux和Windows的真正區別在於,Linux事實上是Unix的一種版本,而且來自Unix的貢獻非常巨大。是什麼使得Unix如此重要?不僅在於對多用戶機器來說,Unix是最流行的操作系統,而且在於它是免費軟體的基礎。在Internet上,大量免費軟體都是針對Unix系統編寫的。由於有眾多的Unix廠商,所以Unix也有許多實現方法。沒有一個單獨的組織負責Unix的分發。現在,存在一股巨大的力量推動Unix社團以開放系統的形式走向標准化。另一方面Windows系列是專用系統,由開發操作系統的公司控制介面和設計。在這個意義上這種公司利潤很高,因為它對程序設計和用戶介面設計建立了嚴格的標准,和那些開放系統社團完全不一樣。一些組織正在試圖完成標准化Unix程序設計介面的任務。特別要指出的是,Linux完全兼容POSIX.1標准。安全問題對於IT管理員來說是需要長期關注的。主管們需要一套框架來對操作系統的安全性進行合理的評估,包括:基本安全、網路安全和協議,應用協議、發布與操作、確信度、可信計算、開放標准。在本文中,我們將按照這七個類別比較微軟Windows和Linux的安全性。最終的定性結論是:目前為止,Linux提供了相對於Windows更好的安全性能,只有一個方面例外(確信度)。無論按照什麼標准對Windows和Linux進行評估,都存在一定的問題:每個操作系統都不止一個版本。微軟的操作系統有Windows98、WindowsNT、Windows2000、Windows2003Server和WindowsCE,而Linux的發行版由於內核(基於2.2、2.4、2.6)的不同和軟體包的不同也有較大的差異。我們本文所使用的操作系統,都是目前的技術而不是那些"古老"的解決方案。用戶需要記住:Linux和Windows在設計上就存在哲學性的區別。Windows操作系統傾向於將的功能集成到操作系統內部,並將程序與內核相結合;而Linux不同於Windows,它的內核空間與用戶空間有明顯的界限。根據設計架構的不同,兩者都可以使操作系統更加安全。Linux和Windows安全性的基本改變對於用戶來說,Linux和Windows的不斷更新引發了兩者之間的競爭。用戶可以有自己喜歡的系統,同時也在關注競爭的發展。微軟的主動性似乎更高一些――這是由於業界"冷嘲熱諷"的"激勵"與Linux的不斷發展。微軟將在下幾個月對Windows安全進行改觀,屆時微軟會發布WindowsXP的WindowsXPServicePack2。這一服務包增強了Windows的安全性,關閉了原先默認開放的許多服務,也提供了新的補丁管理工具,例如:為了避免受到過多無用的信息,警告服務和信使服務都被關閉。大多數情況下,關閉這些特性對於增強系統安全性是有好處的,不過很難在安全性與軟體的功能性、靈活性之間作出折衷。最顯著的表現是:微軟更加關注改進可用性的同時增強系統的安全性。比如:2003年許多針對微軟的漏洞攻擊程序都使用可執行文件作為電子郵件的附件(例如MyDoom)。ServicePack2包括一個附件執行服務,為Outlook/Exchange、WindowsMessenger和InternetExplorer提供了統一的環境。這樣就能降低用戶運行可執行文件時感染病毒或者蠕蟲的威脅性。另外,禁止數據頁的可執行性也會限制潛在的緩沖區溢出的威脅。不過,微軟在WindowsXPServicePack2中並沒有修改Windows有問題的架構以及安全傳輸的部分,而是將這部分重擔交給了用戶。微軟的重點顯然是支持應用程序的安全性。WindowsXPServicePack2中增強的許多方面都是以Outlook/Exchange和InternetExplorer作為對象的。例如:InternetExplorer中有一個智能的MIME類型檢查,會對目標的內容類型進行檢查,用戶可以獲悉該內容中是否存在潛在的有害程序。不過這一軟體是不是能將病毒與同事的電子數據表區分開來呢?WindowsXPServicePack2的另一個新特性是能夠卸載瀏覽器的多餘插件,這需要終端用戶檢查並判斷需要卸載哪些插件。Outlook/Exchange可以預覽電子郵件消息,因此用戶可以在打開之前就將電子郵件刪除。另一個應用安全的增強,防火牆在網路協議棧之前啟動。對於軟體開發者來說,遠方過程調用中許可權的改變,使得安全性差的代碼難以工作正常。WindowsXPServicePack2也為Windows用戶提供了許多華麗的新特性,但是問題仍然存在:這些特性會不會對管理員甚至是終端用戶造成負擔?是不是在增加了Windows操作系統代碼安全性的同時讓系統變得更加復雜?Linux與Windows的不同雖然有一些類似之處,但Windows和Linux的工作方式還是存在一些根本的區別。這些區別只有在您對兩者都很熟悉以後才能體會到,但它們卻是Linux思想的核心。Linux的應用目標是網路而不是列印Windows最初出現的時候,這個世界還是一個紙張的世界。Windows的偉大成就之一在於您的工作成果可以方便地看到並列印出來。這樣一個開端影響了Windows的後期發展。同樣,Linux也受到了其起源的影響。Linux的設計定位於網路操作系統。它的設計靈感來自於Unix操作系統,因此它的命令的設計比較簡單,或者說是比較簡潔。由於純文本可以非常好地跨網路工作,所以Linux配置文件和數據都以文本為基礎。對那些熟悉圖形環境的人來說,Linux伺服器初看可能比較原始。但是Linux開發關注的是它的內在功能而不是表面上的東西。即使是在純文本的環境中,Linux同樣擁有非常先進的網路、腳本和安全能力。執行一些任務所需的某些表面上看起來比較奇怪的步驟是令人費解的,除非您認識到Linux是期望在網路上與其他Linux系統協同執行這些任務。Linux的自動執行能力也很強,只需要設計批處理文件就可以讓系統自動完成非常詳細的任務。Linux的這種能力來自於其基於文本的本質。可選的GUILinux有圖形組件。Linux支持高端的圖形適配器和顯示器,完全勝任圖形相關的工作。現在,許多數字效果藝術家在Linux工作站上來進行他們的設計工作,而以前這些工作需要使用IRIX系統來完成。但是,圖形環境並沒有集成到Linux中,而是運行於系統之上的單獨一層。這意味著您可以只運行GUI,或者在需要時才運行GUI。如果您的系統主要任務是提供Web應用,那麼您可以停掉圖形界面,而將其所用的內存和CPU資源用於您的服務。如果您需要在GUI環境下做一些工作,可以再打開它,工作完成後再將其關閉。Linux有圖形化的管理工具,以及日常公的工具,比如電子郵件、網路瀏覽器和文檔處理工具等。不過,在Linux中,圖形化的管理工具通常是控制台(命令行)工具的擴展。也就是說,用圖形化工具能完成的所有工作,用控制台命令同樣可以完成。同樣,使用圖形化工具並不妨礙您對配置文件進行手工修改。其實際意義可能並不是特別顯而易見,但是,如果在圖形化管理工具中所做的任何工作都可以以命令行的方式完成,這就表示那些工作也可以由一個腳本來實現。腳本化的命令可以成為自動執行的任務。Linux同時支持這兩種方式,並不要求您只用文本或者只用GUI。您可以根據您的需要選擇最好的方法。Linux中的配置文件是人類可讀的文本文件,這與過去的Windows中的INI文件類似,但與Windows的注冊表機制在思路上有本質的區別。每一個應用程序都有其自己的配置文件,而且通常不與其他的配置文件放在一起。不過,大部分的配置文件都存放於一個目錄樹(/etc)下的單個地方,所以看起來它們在邏輯上是在一起。文本文件的配置方式使得不通過特殊的系統工具就可以完成配置文件的備份、檢查和編輯工作。文件名擴展Linux不使用文件名擴展來識別文件的類型。相反,Linux根據文件的頭內容來識別其類型。為了提高人類可讀性您仍可以使用文件名擴展,但這對Linux系統來說沒有任何作用。不過,有一些應用程序,比如Web伺服器,可能使用命名約定來識別文件類型,但這只是特定的應用程序的要求而不是Linux系統本身的要求。Linux通過文件訪問許可權來判斷文件是否為可執行文件。任何一個文件都可以賦予可執行許可權,這樣程序和腳本的創建者或管理員可以將它們識別為可執行文件。這樣做有利於安全。保存到系統上的可執行的文件不能自動執行,這樣就可以防止許多腳本病毒。重新引導是最後的手段如果您使用Windows已經很長時間了,您可能已經習慣出於各種原因(從軟體安裝到糾正服務故障)而重新引導系統。在Linux思想中您的這一習慣需要改變。Linux在本質上更遵循「牛頓運動定律」。一旦開始運行,它將保持運行狀態,直到受到外來因素的影響,比如硬體的故障。實際上,Linux系統的設計使得應用程序不會導致內核的崩潰,因此不必經常重新引導(與Windows系統的設計相對而言)。所以除了Linux內核之外,其他軟體的安裝、啟動、停止和重新配置都不用重新引導系統。如果您確實重新引導了Linux系統,問題很可能得不到解決,而且還會使問題更加惡化。學習並掌握Linux服務和運行級別是成功解決問題的關鍵。學習Linux最困難的就是克服重新引導系統的習慣。另外,您可以遠程地完成Linux中的很多工作。只要有一些基本的網路服務在運行,您就可以進入到那個系統。而且,如果系統中一個特定的服務出現了問題,您可以在進行故障診斷的同時讓其他服務繼續運行。當您在一個系統上同時運行多個服務的時候,這種管理方式非常重要。命令區分大小寫所有的Linux命令和選項都區分大小寫。例如,-R與-r不同,會去做不同的事情。控制台命令幾乎都是小寫的。我們將在「第2部分.控制台速成班」中對命令進行更詳細的介紹。廣泛的硬體支持可能是任何流行操作系統最基本的要求,也是可伸縮性的一個重要方面。Windows操作系統在這個方面做得的確非常出色:一方面,Windows的廣泛使用使得任何硬體廠商在推出新的硬體時都會把Windows當作標準的平台加以支持,並且不斷為新的Windows版本更新驅動程序;另一方面,大量的硬體支持又反過來推動了Windows平台的進一步普及。Linux的硬體驅動程序通常都是由那些需要這些硬體的用戶自己來開發的.Linux的共享性能夠很快地給那些常用的硬體提供驅動程序,這些驅動程序需要後續的支持和幫助,來克服潛在的不穩定性。至於一些尚未普及的組件,如各式各樣的USB設備,其驅動程序的開發將需要的支持,來滿足不同用戶的需要。SMP(對稱多處理器)支持CPU是計算機系統的核心部分,是否具有良好的SMP支持將直接影響大型應用下的性能。Windows2000AdvancedServer的零售版本最多支持四路SMP,OEM版可以支持最多達32路的SMP。對CPU的支持級別和Windows4.0相比沒有什麼變化,但是對SMP的實現代碼進行了改進,使得高性能的縮放可以更為「線性」地進行。WindowsNTServer4.0企業版已經實現了創紀錄的性能價格水平,隨著對SMP縮放的改進,這一趨勢將在Windows2000AdvancedServer和DatacenterServer中得到延續。在採用八路設計或者多於八路設計的系統中,性能的提高最為明顯。而Linux正致力於解決核心部分中的SMP支持,以提高Linux在大型應用下的性能。盡管Linux不是為SMP而設計的,LinuxTorvalds也曾經說過Linux的SMP評測表現很差,但是我們期望這些問題能夠在2.4版本內核中得到解決,使的學校或者企業可以使用經過考驗的Linux來實現他們的核心程序。對群集的支持Windows2000Server具有強大的群集功能。Compaq最近之所以能在TPC-C比賽中傲視群雄,擊敗所有對手,靠的就是一個巨大的有著12個節點,96個處理器的群集,而它們運行的是Windows2000Server。盡管Linux沒有在高端系統中運行關鍵性應用程序方面有出色記錄,但最近Linux在群集項目也發布了不少東西,希望Linux的開發者大軍可以開發出更完善的群集功能對特定計算環境的支持使每一個系統都有適合於自己的工作場合,這就是系統對特定計算環境的支持。微軟開發了不同的操作系統來完成不同類型的任務。WindowsCE適用於小型的手持式電腦和筆記本電腦,Windows95/98和Windows2000Professional適用於桌面計算機,而WindowsNT4.0和Windows2000Server則適用於大型伺服器應用程序。作為一個系列操作系統家族,Windows對各種不同的工作環境提供了良好的伸縮性支持。由於Linux大部分可用的平台處於開發的初始階段,對於各種不同計算環境的支持將是Linux系統的下一步目標。文檔編制眾所周知,隨著系統變得越來越復雜,功能越來越強大,編制一個好的文檔是非常重要的。這有助於用戶對系統的理解和管理。詳盡的文檔說明,有助於我們熟練地掌握它所有的功能和特性。微軟通常為其產品提供了深入細致的文檔說明,在文檔的本地化方面也做得很好。Linux產品的文檔說明需要進一步的規范。回答者:可愛的小剛絲-試用期一級9-613:121、從系統構成上來說,linux是開源軟體,而windows不是。那就意味著,如果你喜歡你可以對linux系統做你想做的任何改動。而這點對於windows來說,是想也不要想的。2、從運行的穩定性來說。各有利弊。但linux的任何程序都是相對獨立的,哪怕gnome和kde(圖形界面)也是獨立的。而軟體的崩潰只是軟體的崩潰,很少造成系統的癱瘓(死機)。只有重新運行程序就好了。windows嗎,就不用說了,沒見過windows死機的人,我沒見過。3、從多用戶來說,linux是真正的多用戶系統。可以多個用戶真正登錄,這對於windows來說,雖然也有了雛形,但太兒戲化了,擺設而已。4、對於中文的支持來說。windows的多個版本對於windows的支持是很強的。字體也很漂亮。而linux雖然也支持中文,但要完全支持中文是要手動做很多設置的,不過就算做的再好。總有機會看到中文亂碼的(因為幾乎每個軟體都要設置字體和字元編碼的)。而且中文的字體比較煩,不是很好看。(好看的基本都不是開源的。ps:如果你都不想為操作系統花錢,還會去買幾個字體嗎。當然也有盜版@不是用linux的初衷了。)5、對於系統更新來說,apt是目前linux不二的選擇了,快捷普遍、簡單。而且無什麼正版驗證之虞的。windows也不錯,可以漏洞總比補丁來的快,更何況我沒用過正版的呢。6、從安全性來說。其實上一條也說過這個問題了。我們用windows時,殺毒軟體、防火牆、防垃圾軟體、防間諜軟體佔去了大部分的系統資源。可這樣還是防不勝防的。有誰沒中過毒或木馬、流氓軟體呢?linux?不用這些煩人的東西。7、從應用軟體來說,雖然linux下的軟體有很多,但和windows來說,真的沒法比的。誰讓windows幾乎成了操作系統的代名了呢。8、從易用性來說,我自我的感覺,在常用的windows、mac、linux中,無論界面、滑鼠操作、文件格式,windows都是相當容易上手的。其他的操作系統,幾乎都要是摸索中探索的。更何況linux的很多配置都是基於文檔的,也就是要手工的修改一些配置文件。對於想我這樣的老人來說,厄長的代碼,明天還能記得否?windows幾乎一支滑鼠就能解決所有問題。呵呵9、綜述:當然各種的優缺點遠不至就這些,就不過說了。如果要出於個人應用的話,還是用windows吧。學習容易,資料好早。如果出於學習的話,還是用用linux吧,但你要做好不厭其煩的心理准備!對於混亂的linux版本來說,你要記得同樣的問題,可以有n種解決法,但可能只有一種合適你的。網上資料相對比較匱乏,比較單一,而且抄襲嚴重。linux我推薦用新華linux,中文化很好了(少煩很多神的),論壇也做的不錯。

『柒』 怎麼切換到linux串口調試控制台

利用串口終端作為Linux控制台,可以免去額外的鍵盤,顯示卡和顯示器,同時可將Linux主機作為一個任意用途的嵌入式黑匣。那麼LINUX控制台怎麼定向到串口終端?下面跟著學習啦小編一起來了解一下吧。LINUX控制台怎麼定向到串口終端
目的: 台機已經裝好Linux,顯示器有問題,平時一般都SSH控制,當Linux網路掛的時候,想通過串口來管理。
硬體:台機自帶兩個串口(上面的是COM1)[under Windows] or ttyS0[under Linux)),筆記本T61p沒有串口,買了個USB轉串口(具體見下圖)。同時需要串口交叉線一根(NULL modem Cable),母對母(公的是針),都是凹口那種。
目標機器:安裝的CentOS 5.2 Linux 內核2.6.18-92.1.22.el5和2.6.18-92.1.22.el5xen
客戶端: Windows XP SP3 IBM OEM. 安裝USB轉串口驅動。
需要把輸出定向到串口,一般有下面幾處:
BIOS中的設置
GRUB設置
/etc/inittab 設置
/etc/securetty 設置
BIOS中的設置
BIOS設置的作用我沒嘗試過,如果是可以連BIOS設置都可以定向到串口,那個強大了。也不知道如何去掉機器需要連鍵盤的限制。沒拿出顯示器所以沒看我台機的BIOS,不過這個功能一般只有伺服器級別的機器有。【注1】台機一般沒有串口重定向功能。
GRUB設置
這里的配置是為了把grub菜單定向到串口,這樣你就可以在串口操作grub,選擇啟動項,使用single mode等等。
同時也要給kernel參數加上console選項。
[root@CentOS5 ~]# cat /boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/vg00/lv_root
# initrd /initrd-version.img
#boot=/dev/hdb1
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
default=2
timeout=20
#splashimage=(hd0,0)/grub/splash.xpm.gz =>這些在console下會工作不正常,注釋掉。
#hiddenmenu
title CentOS (2.6.18-92.1.22.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/vg00/lv_root rhgb quiet
initrd /initrd-2.6.18-92.1.22.el5.img
title CentOS Serial[ttyS0] - Console (2.6.18-92.1.22.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/vg00/lv_root console=ttyS0,9600 console=tty0
initrd /initrd-2.6.18-92.1.22.el5.img
title CentOS Console - serial[ttyS0] (2.6.18-92.1.22.el5) [get more output in serial console]
root (hd0,0)
kernel /vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/vg00/lv_root console=tty0 console=ttyS0,9600
initrd /initrd-2.6.18-92.1.22.el5.img
title CentOS Xen (2.6.18-92.1.2

『捌』 如何調試linux的網路驅動

如何根據oops定位代碼行
我們借用linux設備驅動第二篇:構造和運行模塊裡面的hello world程序來演示出錯的情況,含有錯誤代碼的hello world如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#include <linux/init.h>
#include <linux/mole.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
char *p = NULL;
memcpy(p, "test", 4);
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{

printk(KERN_ALERT "Goodbye, cruel world\n");
}

mole_init(hello_init);
mole_exit(hello_exit);

Makefile文件如下:

1
2
3
4
5
6
7
8
9
10
11

ifneq ($(KERNELRELEASE),)
obj-m := helloworld.o
else
KERNELDIR ?= /lib/moles/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) moles
endif

clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions moles.order Mole.symvers

很明顯,以上代碼的第8行是一個空指針錯誤。insmod後會出現下面的oops信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

[ 459.516441] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 459.516445]
[ 459.516448] PGD 0
[ 459.516450] Oops: 0002 [#1] SMP
[ 459.516452] Moles linked in: helloworld(OE+) vmw_vsock_vmci_transport vsock coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel vmw_balloon snd_ens1371 aes_x86_64 lrw snd_ac97_codec gf128mul glue_helper ablk_helper cryptd ac97_bus gameport snd_pcm serio_raw snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device snd_timer vmwgfx btusb ttm snd drm_kms_helper drm soundcore shpchp vmw_vmci i2c_piix4 rfcomm bnep bluetooth 6lowpan_iphc parport_pc ppdev mac_hid lp parport hid_generic usbhid hid psmouse ahci libahci floppy e1000 vmw_pvscsi vmxnet3 mptspi mptscsih mptbase scsi_transport_spi pata_acpi [last unloaded: helloworld]
[ 459.516476] CPU: 0 PID: 4531 Comm: insmod Tainted: G OE 3.16.0-33-generic #44~14.04.1-Ubuntu
[ 459.516478] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
[ 459.516479] task: ffff88003821f010 ti: ffff880038fa0000 task.ti: ffff880038fa0000
[ 459.516480] RIP: 0010:[<ffffffffc061400d>] [<ffffffffc061400d>] hello_init+0xd/0x30 [helloworld]
[ 459.516483] RSP: 0018:ffff880038fa3d40 EFLAGS: 00010246
[ 459.516484] RAX: ffff88000c31d901 RBX: ffffffff81c1a020 RCX: 000000000004b29f
[ 459.516485] RDX: 000000000004b29e RSI: 0000000000000017 RDI: ffffffffc0615024
[ 459.516485] RBP: ffff880038fa3db8 R08: 0000000000015e80 R09: ffff88003d615e80
[ 459.516486] R10: ffffea000030c740 R11: ffffffff81002138 R12: ffff88000c31d0c0
[ 459.516487] R13: 0000000000000000 R14: ffffffffc0614000 R15: ffffffffc0616000
[ 459.516488] FS: 00007f8a6fa86740(0000) GS:ffff88003d600000(0000) knlGS:0000000000000000
[ 459.516489] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 459.516490] CR2: 0000000000000000 CR3: 0000000038760000 CR4: 00000000003407f0
[ 459.516522] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 459.516524] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 459.516524] Stack:
[ 459.57] ffff880038fa3db8 ffffffff81002144 0000000000000001 0000000000000001
[ 459.516540] 0000000000000001 ffff880028ab5040 0000000000000001 ffff880038fa3da0
[ 459.516541] ffffffff8119d0b2 ffffffffc0616018 00000000bd1141ac ffffffffc0616018
[ 459.516543] Call Trace:
[ 459.516548] [<ffffffff81002144>] ? do_one_initcall+0xd4/0x210
[ 459.516550] [<ffffffff8119d0b2>] ? __vunmap+0xb2/0x100
[ 459.516554] [<ffffffff810ed9b1>] load_mole+0x13c1/0x1b80
[ 459.516557] [<ffffffff810e9560>] ? store_uevent+0x40/0x40
[ 459.516560] [<ffffffff810ee2e6>] SyS_finit_mole+0x86/0xb0
[ 459.516563] [<ffffffff8176be6d>] system_call_fastpath+0x1a/0x1f
[ 459.516564] Code: <c7> 04 25 00 00 00 00 74 65 73 74 31 c0 48 89 e5 e8 a2 86 14 c1 31
[ 459.516573] RIP [<ffffffffc061400d>] hello_init+0xd/0x30 [helloworld]
[ 459.516575] RSP <ffff880038fa3d40>
[ 459.516576] CR2: 0000000000000000
[ 459.516578] ---[ end trace 7c52cc8624b7ea60 ]---


下面簡單分析下oops信息的內容。
由BUG: unable to handle kernel NULL pointer dereference at (null)知道出錯的原因是使用了空指針。標紅的部分確定了具體出錯的函數。Moles linked in: helloworld表明了引起oops問題的具體模塊。call trace列出了函數的調用信息。這些信息中其中標紅的部分是最有用的,我們可以根據其信息找到具體出錯的代碼行。下面就來說下,如何定位到具體出錯的代碼行。
第一步我們需要使用objmp把編譯生成的bin文件反匯編,我們這里就是helloworld.o,如下命令把反匯編信息保存到err.txt文件中:

1

objmp helloworld.o -D > err.txt

err.txt內容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

helloworld.o: file format elf64-x86-64

Disassembly of section .text:

<span style="color:#ff0000;">0000000000000000 <init_mole>:</span>
0: e8 00 00 00 00 callq 5 <init_mole+0x5>
5: 55 push %rbp
6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
d: c7 04 25 00 00 00 00 movl $0x74736574,0x0
14: 74 65 73 74
18: 31 c0 xor %eax,%eax
1a: 48 89 e5 mov %rsp,%rbp
1d: e8 00 00 00 00 callq 22 <init_mole+0x22>
22: 31 c0 xor %eax,%eax
24: 5d pop %rbp
25: c3 retq
26: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
2d: 00 00 00

0000000000000030 <cleanup_mole>:
30: e8 00 00 00 00 callq 35 <cleanup_mole+0x5>
35: 55 push %rbp
36: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
3d: 31 c0 xor %eax,%eax
3f: 48 89 e5 mov %rsp,%rbp
42: e8 00 00 00 00 callq 47 <cleanup_mole+0x17>
47: 5d pop %rbp
48: c3 retq

Disassembly of section .rodata.str1.1:

0000000000000000 <.rodata.str1.1>:
0: 01 31 add %esi,(%rcx)
2: 48 rex.W
3: 65 gs
4: 6c insb (%dx),%es:(%rdi)
5: 6c insb (%dx),%es:(%rdi)
6: 6f outsl %ds:(%rsi),(%dx)
7: 2c 20 sub $0x20,%al
9: 77 6f ja 7a <cleanup_mole+0x4a>
b: 72 6c jb 79 <cleanup_mole+0x49>
d: 64 0a 00 or %fs:(%rax),%al
10: 01 31 add %esi,(%rcx)
12: 47 6f rex.RXB outsl %ds:(%rsi),(%dx)
14: 6f outsl %ds:(%rsi),(%dx)
15: 64 fs
16: 62 (bad)
17: 79 65 jns 7e <cleanup_mole+0x4e>
19: 2c 20 sub $0x20,%al
1b: 63 72 75 movslq 0x75(%rdx),%esi
1e: 65 gs
1f: 6c insb (%dx),%es:(%rdi)
20: 20 77 6f and %dh,0x6f(%rdi)
23: 72 6c jb 91 <cleanup_mole+0x61>
25: 64 0a 00 or %fs:(%rax),%al

Disassembly of section .modinfo:

0000000000000000 <__UNIQUE_ID_license0>:
0: 6c insb (%dx),%es:(%rdi)
1: 69 63 65 6e 73 65 3d imul $0x3d65736e,0x65(%rbx),%esp
8: 44 75 61 rex.R jne 6c <cleanup_mole+0x3c>
b: 6c insb (%dx),%es:(%rdi)
c: 20 42 53 and %al,0x53(%rdx)
f: 44 2f rex.R (bad)
11: 47 50 rex.RXB push %r8
13: 4c rex.WR
...

Disassembly of section .comment:

0000000000000000 <.comment>:
0: 00 47 43 add %al,0x43(%rdi)
3: 43 3a 20 rex.XB cmp (%r8),%spl
6: 28 55 62 sub %dl,0x62(%rbp)
9: 75 6e jne 79 <cleanup_mole+0x49>
b: 74 75 je 82 <cleanup_mole+0x52>
d: 20 34 2e and %dh,(%rsi,%rbp,1)
10: 38 2e cmp %ch,(%rsi)
12: 32 2d 31 39 75 62 xor 0x62753931(%rip),%ch # 62753949 <cleanup_mole+0x62753919>
18: 75 6e jne 88 <cleanup_mole+0x58>
1a: 74 75 je 91 <cleanup_mole+0x61>
1c: 31 29 xor %ebp,(%rcx)
1e: 20 34 2e and %dh,(%rsi,%rbp,1)
21: 38 2e cmp %ch,(%rsi)
23: 32 00 xor (%rax),%al

Disassembly of section __mcount_loc:

0000000000000000 <__mcount_loc>:

由oops信息我們知道出錯的地方是hello_init的地址偏移0xd。而有mp信息知道,hello_init的地址即init_mole的地址,因為hello_init即本模塊的初始化入口,如果在其他函數中出錯,mp信息中就會有相應符號的地址。由此我們得到出錯的地址是0xd,下一步我們就可以使用addr2line來定位具體的代碼行:
addr2line -C -f -e helloworld.o d
此命令就可以得到行號了。以上就是通過oops信息來定位驅動崩潰的行號。
其他調試手段
以上就是通過oops信息來獲取具體的導致崩潰的代碼行,這種情況都是用在遇到比較嚴重的錯誤導致內核掛掉的情況下使用的,另外比較常用的調試手段就是使用printk來輸出列印信息。printk的使用方法類似printf,只是要注意一下列印級別,詳細介紹在linux設備驅動第二篇:構造和運行模塊中已有描述,另外需要注意的是大量使用printk會嚴重拖慢系統,所以使用過程中也要注意。
以上兩種調試手段是我工作中最常用的,還有一些其他的調試手段,例如使用/proc文件系統,使用trace等用戶空間程序,使用gdb,kgdb等,這些調試手段一般不太容易使用或者不太方便使用,所以這里就不在介紹了。

『玖』 怎麼搭建學習Linux內核的運行,調試環境

閱讀全文

與linux網路調試相關的資料

熱點內容
androidapp風格 瀏覽:206
php取伺服器url地址 瀏覽:291
linux時間調度演算法 瀏覽:769
單片機最小電路詳解 瀏覽:183
請求要求命令 瀏覽:804
電腦文件夾發微信顯示被佔用 瀏覽:292
手機怎麼看加密視頻 瀏覽:204
怎樣解壓手機es文件包 瀏覽:661
2017年學什麼編程 瀏覽:934
金融期貨pdf 瀏覽:693
程序員客棧的信息保密嗎 瀏覽:507
編程顯示器什麼意思 瀏覽:147
網路編程的就業 瀏覽:260
s7200編程入門 瀏覽:748
華潤萬家app為什麼進不去 瀏覽:250
後台運行app命令 瀏覽:874
通達信雲加密能破解 瀏覽:141
郵件保存成pdf 瀏覽:867
bbs網站java源碼下載百度雲 瀏覽:460
php無限極分類樹 瀏覽:275