linux3g網卡驅動
① 安裝linux系統
安裝Linux系統
3.1 准備工作
在安裝任何Linux發行版本之前,你首先應該做一些准備工作,包括收集系統信息,准
備安裝版本等等,特別地,你應該進行一個安裝規劃。我們現在就來介紹一下安裝之前
的准備要點。
3.1.1 獲取Linux發行版
Linux發行版本可以從網路下載,也可以直接購買發行光碟。
目前下載Linux發行版本的站點相當多,如果你有一條64KB以上的DDN或者ISDN專線,
並且有讓下載工具連續運行幾天幾夜的准備,那麼下載總是要比購買cdrom來的容易一些
(因為Linux版本升級非常快,往往升級版推出半個月以後才能在本地買到發行盤)。
如果你不涉及國際流量問題,可以直接到發行商的主站點去下載光碟映像,然後燒制
成CD-R,或者拷貝到硬碟上安裝。由於安裝時的文件名大小寫問題,我們一般建議將下
載的文件放到你的本地伺服器上,通過ftp安裝,然而這要求你首先有一台基本的linux
伺服器。否則,你就需要燒制CD-R了。
如果有國際流量問題,可以考慮到教育網內的某個站點下載。另外,Turbo Linux公司
設有國內分公司,可以到www.turbolinux.com.cn去下載TLC的最新版本。
到市場上的軟體連鎖店直接購買Linux 光碟發行版,用光碟來安裝是最方便快捷的。
目前RedHat,TurboLinux和corel都可以在連鎖店買到。一定要注意,大部分Linux發行
版本有「完整版」和「精簡版」的區分,例如TurboLinux有1CD,3 CD和10CD三個版本。
如果你是用Linux為你的單位構造網路伺服器,我們總是建議你購買完整版本,畢竟價格
差不多。不過如果你想要使用SuSE之類不常見的版本,你還是得把網路打開轉上幾天幾
夜。
我們建議你用一種Linux版本為基礎,然後抽取別的版本中的優秀產品組合成你的服
務器軟體。作為基點,RedHat(3CD版)和TurboLinux(10CD)都不錯。
3.1.2 准備伺服器硬體
①CPU
Linux 在Intel 80386, 80486, Pentium, Pentium Pro, Pentium II, Pentium
III ,Celeron ,AMD K6-2 (3DNow),AMD K6-3這幾款cpu下能很好的工作,而非Inte
l 的 CPU ,主要包括:Cyrix 6x86,AMD K6,AMD K5,AMD,Cyrix MediaGX chip,WA
RNING出現問題的機會似乎比較多。需要補充的是6x86MX據說在Linux下的表現遠好於原
來的6x86。不過,話說回來,你真的窮到要用6x86MX做伺服器的程度嗎?
一台裝配PII以上CPU的Linux在服務量不是非常大時就能很好的工作,如果配備雙CPU
那就可以和一台中檔的名牌伺服器相媲美。Linux對雙CPU的支持還算不錯,但如果你是
購買的發行版本,那麼你在安裝後經常需要重新編譯內核才能充分發揮雙CPU的威力。詳
情可以參考第四章。
②主版
Linux支持市面上出售的大多數主板,在選購主板應該考慮是不是支持你的CPU,如果
採用雙CPU還考慮買一塊兼容的主板。筆者認為在主版的選購時要注意名牌效應,條件允
許一定要買名牌的。
③內存
Linux對內存的品牌沒有特殊的限制,只是要求內存最小是 16MB,當然這個數字就我
感覺跟說用32MB內存跑Windows NT差不多。大體上,作為一台伺服器,你可以從64MB內
存開始,至於多到多少,反正上限是2GB,現在條子這么便宜,你自己看看你的機器上有
多少個槽就行了。Linux對內存的質量要求比較一般。
④Linux支持的硬碟控制器/硬碟
Linux 支持標準的IDE、EIDE、MFM/RTL控制器。
IDE設備在工作是要佔用CPU的處理時間,如果同時有幾百個訪問,這樣佔用CPU處理的
時間就急劇增加,系統的負擔急劇上升,如果選用SCSI介面卡設備的話就可提高系統的
效率。Linux 並不支持並口的 SCSI 卡,在Linux下兼容的SCSI 列表么……反正我不想
介紹了,你自己去看兼容性列表,目前的Linux內核對BusLogic,AHA之類的大牌SCSI卡
支持還不錯,但是肯定不如windows NT那麼多。實在不行你可以跟零售商說:「不支持
Linux我可不要啊。」如果你真的預算緊張,那麼也可以使用IDE硬碟,不過目前的Linu
x內核似乎對UDMA66不能正確支持,你可能仍然使用標準的DMA-33硬碟。
Linux 也支持磁碟陣列。
⑤網卡
Linux 以其強大的網路功能而著稱,選擇一塊合適的網卡是十分必要的。在選擇網卡
是要注意網的性能和兼容性。對於用Linux作為伺服器的用戶選擇一塊100M的乙太網卡可
在很大程度上提高服務效率。下面就是一些在Linux下能很好工作的網卡:
3Com Etherlink III (3c509 EISA)
3Com 3c59x, 3c900, 3c905 (Not the 3c905B and C, see below) 3c579
Digital DE425, DE434, DE435, DE450, DE500 (uses DE4x5)
Digital 2104x,2114x ``Tulip'' chip cards, SMC DEC21041 , SMC PCI EtherPowe
r (uses Tulip driver)
Intel EEPro100 (PCI),EtherExpress i82557/i82558 PCI Pro/10+。
3Com 3c503, 3c503/16, 3c505, 3Com Etherlink 16 (3c507)
Allied Telesis AT1500 (uses Lance driver), AMD Lance/PCnet, HP J2405A, NE2
100, NE2500
AMD PCnet32 and AMD PCnetPCI
Apricot Xen-II, 680x0 VME (82596 chipset)
Ansel Communications AC3200 EISA
AT&T GIS WaveLAN ISA
Alteon AceNIC Gigabit Ethernet Driver
Allied Telesis AT1700
Aironet Arlan 655
Cabletron E21xx
Crystal LAN CS8900/CS8920
Comtrol Hostess SV11
Compaq Netelligent 10/100 TX PCI UTP, 10 T PCI UTP, Compaq Integrated
NetFlex 3/P, Compaq Netelligent Dual 10/100 TX PCI UTP, Compaq Netelligent I
ntegrated 10/100 TX UTP, Compaq Netelligent 10/100 TX Embedded UTP, Compaq N
etelligent 10 T/2 PCI UTP/Coax, Compaq Netelligent 10/100 TX UTP, Compaq Net
Flex 3/P
100VG-AnyLan Network Adapters, HP J2585B, J2585A, J2970, J2973, J2573,Comp
ex ReadyLink ENET100-VG4 & FreedomLine 100/VG
D-Link DE600, DE620 pocket adapters
D-Link DFE-930-TX PCI 10/100, VIA Rhine PCI Fast Ethernet cards with eithe
r the VIA VT86c100A Rhine-II PC or 3043 Rhine-I
Digital DEPCA & EtherWORKS, DE100, DE101, DE200 Turbo, DE201 Turbo, DE202
Turbo, DE210, DE422
Digi Intl. RightSwitch SE-X EISA and PCI
EtherWORKS 3 (DE203, DE204, and DE205)
Fujitsu FMV-181/182/183/184
HP PC-LAN Plus
HP PC-LAN (27245B and 27xxx series)
HP AnyLAN, 10/100VG, PCLAN (J2577, J2573, 27248B, )
Intel EtherExpress 16
Intel EtherExpress i82595 Pro10/10+ (ISA only)
MiCom-Interlan NI5010 ethercard
Mylex LNE390 EISA cards (LNE390A, LNE390B)
NE1000/2000 and compatible ISA cards
NE2000 (PCI), RealTEk RTL-8029, Winbond 89C940, Compex RL2000, KTI ET32P2,
NetVin NV5000SC, Via 82C926, SureCom NE3
NI5210 card (i82586 Ethernet chip), NI6510, ni6510 EtherBlaster
Novell NE3210 EISA Network Adapter
Yellowfin (and Compatibles)
G-NIC
Racal-Interlan ES3210 EISA Network Adapter
RedCreek Communications PCI
RealTek cards using RTL8129 or RTL8139 Fast Ethernet chipsets
Sangoma S502/S508 multi-protocol FR, Sangoma S502A, ES502A, S502E, S503, S
507, S508, S509
SMC Ultra / EtherEZ (ISA, 8k 83c790), SMC 9000 series, SMC 9000 series, SM
C Ultra32 EISA (32K) SMC EtherPower II 9432 PCI (83c170/175 EPIC series),
Tangent ATB-II, Novel NL-10000, Daystar Digital LT-200, Dayna DL2000, Dayn
aTalk PC (HL), COPS LT-95, Farallon PhoneNET PC II & III
Western Digital WD8003, WD8013
Any IBM Token Ring card that does not use DMA
SysKonnect Token Ring ISA/PCI Adapter TR4/16(+) ISA or PCI, TR4/16 PCI, an
d older SK NET TR4/16 ISA cards
IBM PCI tokenring cards based on the Pit/Pit-Phy/Olympic chipset
IBM Tropic chip-set cards
Linux支持的網卡品牌很多,詳細的情況可以參考Linux的硬體兼容性列表(/usr/doc
/HOWTO/HARDWARE-HOWTO)。
⑥顯示卡
就我看來,伺服器的圖形界面完全是不必要的,Solaris的那個openlook確實很漂亮,
但是有誰用呢,還不如乾脆用M$呢。對於Linux更是如此,你只要弄一塊湊合著能上102
4*768的4MB顯卡就行了,當然前提是Linux的XFree86兼容。我推薦的是Trident 9750和
S3 virge,兼容性絕對沒問題。如果你覺得這種東西實在太古老了,呵呵。
3.1.3 准備安裝規劃
為了安裝Linux, 必須為它准備硬碟空間。這個硬碟空間必須和您的計算機上安裝的
其他操作系統(如Windows, OS/2或著其他版本的Linux)所使用的硬碟空間分開,或者是
一個獨立的硬碟。在你決定創建Linux分區之前最好先備份你的重要數據,以免造成不必
要的損失。實際上,既然你准備安裝的是一台伺服器,那麼你乾脆把整個硬碟都交給Li
nux得了。
Linux整個系統可安裝在1GB左右的硬碟空間上,可是,我們安裝Linux是為了讓它完成
如:Web,Mail,Ftp等一些服務,這些服務真的開啟之後,對硬碟的空間要求特大,比
如你開啟一有2G大小的Ftp服務,你至少要有3G的硬碟空間,我們單位有的是一個28G的
硬碟可是在不到一年的應用中就使用了80%,如果你正在規劃一個伺服器是,那你一定要
考慮你選擇一塊容量大小合適的硬碟,不要等到不夠用時再想辦法,要加一個硬碟容易
,改變/home和/var的目錄結構卻可能是非常討厭的。
Linux 在裝時需要建立兩種類型的分區,即「Linux native」硬碟分區和「Linux s
wap」交換分區。
盡管可以將Linux裝在一個單一的大分區中(根據我們已經提到的分區原則),但我們推
薦你把系統分開安裝在不同的分區上。如果你有一個裝滿的8G以上的分區,一旦發生文
件系統問題,你肯定會有麻煩的。
下面是我們建議的分區規劃:
一個交換分區 -- 交換分區用來支持虛擬內存。 您必須創建交換分區, 即使您有更
多的內存,仍然推薦使用交換分區。 目前的交換分區已經可以設置到非常大,不過太大
也不見得有什麼意義,我們建議控制在100MB以上,500MB以下,而且可以使用多個交換
分區。需要注意的是,如果你設置了多個交換分區,那麼Linux安裝程序通常只會激活第
一個,你需要手工啟動其它的交換分區,詳見第四章。
一個根分區 -- 根分區是/(根目錄)所在地.。它只需要啟動系統所須的文件和系統配
置文件,這些文件並不大。但是由於預設的/tmp(存儲臨時文件的目錄)也在這個目錄下
面,所以應該留出足夠的空間,一般可以設置在500MB到1GB。不過如果你按照我們下面
解釋的專門創建了/tmp分區,那麼就可以小一點,只要300MB左右。
一個 /usr 分區 -- /usr 是Linux系統大部分應用軟體的所在的地方。 根據您交換安
裝的包的數量以及發行版本的不同, 這個分區應該在300MB到1500MB之間。 如果可能,
將最大的空間用於/usr分區。 任何您以後將要安裝的基於RPM的包都會使用比其他分區
更多的/usr空間。
一個 /home 分區 – 這是用戶的home目錄所在地;它的大小取決於您的Red Hat Lin
ux 系統有多少用戶, 以及這些用戶將存放多少數據。
一個 /var 分區 – 所有的郵件和列印隊列,系統日誌文件等等都存放在這個分區里
面,所以你應該適當選擇一個足夠大的/var分區。
一個 /tmp 分區 -- 就象它的名字,/tmp分區用來存放臨時文件。 對於一個大型的,
多用戶的系統或者網路伺服器,專門創建一個/tmp分區是一個好主意。至於分區的大小
,你只有在實踐中摸索了。
一個 /usr/local 分區 – 這個分區用來存放包含按照BSD的目錄組織存放的軟體,大
部分源代碼編譯後的目標程序也預設放在這里,你需要一定的空間來存放這些文件,例
如1-2GB。
就伺服器來說,存在兩種基本的思路,一種是在開始的時候選擇安裝所有應用軟體包
;另一種是開始只安裝最小系統,然後逐步增加需要的包。除非你的應用對安全性很敏
感,否則建議你用第一種方法,否則你會發現研究軟體包之間的依賴關系是一種很討厭
的工作。
大部分發行版本在安裝系統的同時完成對系統的基本設置。但是這種設置程序並不是
非常可靠,如果你在安裝過程中發現配置某種硬體或者網路信息失敗,你有兩種選擇:
停止安裝或者忽略。據我們的經驗,通常你應該忽略這些信息,只要Linux安裝到了系統
上並且可以啟動,所有的東西都可以手工設置。不要輕易地停止安裝過程或者重新安裝
,那是解決windows 9x問題的途徑,不是Linux的。
Linux在安裝過程中需要一些硬體的相關信息才能正確配置相應的硬體,在安裝Linux
前一定要知道你使用的硬體信息,最好在安裝時把你使用的所有硬體說明書放在手邊(
如:主板、顯示卡、顯示器、調制解調、Scsi卡等),也可應用一些相應的軟體檢測你
的硬體信息然後記錄下來。當然如果你早對你的硬體了如指掌就不必這樣麻煩了。
一般用戶只需知道網卡的型號、中斷號和地址、滑鼠和調制解調的類型和埠、顯示
卡的類型和顯存的大小、顯示器的類型和參數、內存的大小、光碟機的類型連接到哪個口
上、音效卡的類型中斷和地址、如用scsi卡必須知道類型。為了連接網路,還需知道機器
的域名、IP地址、子網掩碼、路由地址、域名伺服器的地址。
在記錄了各種安裝的必要信息之後,下一步是選擇安裝介質。
從CDROM安裝總是最簡單的。目前大部分系統可以從光碟啟動,所以你需要的僅僅是設
置系統啟動順序為CDROM優先。如果你的Linux發行版本是多光碟的,通常在基本安裝的
時候只需要第一張光碟。
從ftp安裝也是一種很常用的手段。這種安裝最常見的應用是你想要在一台新的機器上
安裝一個全新的Linux發行版本的時候,畢竟CD-R刻錄機不是每人都有的。如果要用ftp
安裝,你必須首先確定你使用的發行版本是否支持ftp安裝。某些版本是無法從ftp安裝
的。
如果你確定你的版本支持ftp安裝功能,而且你的Linux發行版本用的內核支持你的網
卡,你需要做兩件事:(1)把發行盤的內容拷貝到ftp伺服器的某個目錄下面,並且記
下目錄名;(2)製作軟盤引導盤。
另外的安裝方式是通過NFS或者samba數據源。這兩種東西和用ftp安裝差不多,不過一
個使用NFS,另一個使用的是Windows 的文件/目錄共享,支持SAMBA數據源的安裝的發行
版本更少一些,而且一般我們也不建議使用這種功能(主要是文件名大小寫的問題)。
如果你選擇的是從軟盤啟動,那麼你需要根據是CD-ROM還是網路安裝來確定使用哪一
種軟盤映像,一般情況下,Linux的啟動軟盤是用全盤映像的方法存放在光碟上,可以使
用DOS下面的rawrite(在光碟上有)或者Linux下面的dd命令復制到軟盤上使用。
3.2 RedHat 的安裝過程
從這一節開始,我們介紹幾種Linux發行版本的安裝過程。這里選擇了三個版本:Red
Hat,Turbo Linux中文版和SuSE。RedHat是最容易安裝的版本,如果你是一個新手,看
看下面的安裝過程就應該可以順利地安裝成功。
3.2.1 建立Linux引導盤
如果你的主板不支持光碟機啟動或者你要從軟盤啟動來安裝RedHat那麼就需要製作啟動
盤,在RedHat 的光碟上包含一個啟動盤映象文件,只要將這個文件用相應的程序寫到軟
盤上就可以製成啟動軟盤。
從Redhat 6.1以後的版本只提供一個映象文件即可安裝,如從光碟機和硬碟安裝用\ima
ges\boot.img;如從網路安裝用\images\bootnet.img。啟動盤可以在DOS或者Linux下面
製作:
在 Dos 下製作啟動盤
E:\images>\dosutils\rawrite (E 為 光碟的盤符)
假如是使用boot.img,只要在提示「Enter dis images source files name :」時輸
入 boot.img,按回車出現提示「Enter target diskette driver: 」輸入 A: 回車
。其他類型的啟動盤製作方法類似。
在Linux 下製作啟動盤
製作啟動盤: dd if=boot.img of /dev/fd0 bs=1440k
建立DOS引導盤和用Loadlin引導
Linux提供了一個 Loadlin的應用程序可在dos 下啟動Linux的安裝程序,首先製作一
張dos啟動盤拷貝相應的文件,再在這張盤上載入光碟機的驅動程序,然後用這張盤啟動計
算機,進入Linux 發行板的 dosutils 目錄運行 autoboot .bat 就可進入安裝界面。
autoboot.bat的內容如下:
loadlin autoboot\vmlinuz initrd=autoboot\initrd.img
3.2.2 開始系統安裝
本書使用Redhat 6.1作範例.
使用發行光碟或者製作好的啟動軟盤盤啟動機器,在lilo:提示符下面直接回車,將進
入安裝界面。
如果你是從軟盤啟動機器,那麼將進入下面的安裝過程,否則,如果是從cd-rom安裝
,將直接進入第四步。
選擇語言
圖3.1 選擇語言
Redhat提供了多種言支持,很遺憾沒有中文,只好選擇 English。
選擇鍵盤
系統提示用戶選擇鍵盤類型,選擇 us即可 ,也可在安裝後用 setup 程序更改此項。
圖3.2 選擇鍵盤
選擇安裝方式
圖3.3 選擇安裝方式
通常我們選擇從cdrom安裝,只要直接在對應欄目裡面按下回車就可以了。如果要選擇
從ftp安裝,那麼在選擇了ftp之後,還要給出ftp伺服器的ip地址,本機器的ip地址和L
inux發行盤在伺服器上的目錄。
如果你是從軟盤安裝,那麼這一步之後,系統將切換到圖形模式,繼續安裝過程。
配置滑鼠
系統能識別多數的滑鼠類型,這項可使用默認值,如果你用的是兩鍵滑鼠你還應該選
擇 'Emulate 3 mouse'否則在x windows 下有一些功能不能用。
圖3.4 配置滑鼠
歡迎界面
這是一個歡迎界面,標志下一步將進入文件拷貝和系統設置。
圖3-5 歡迎界面
安裝類型
圖3-6 選擇安裝內容
為了方便用戶Redhat的開發人員設計了幾種安裝類型,可根據需要來選擇,但大多數
用戶選擇'Custom'定製安裝,這樣在以後的安裝過程中可詳細的對Redhat提供的軟體包
進行選擇,自由度更大。
建立分區
圖3-7 建立分區
Redhat 提供了一個簡單使用的圖形化的分區工具,利用這個工具你可方便的建立,修
改,刪除分區,分區的種類及大小可參看本章的1.3中的規劃分區,如建立一500M的根分
區,選則 Add ,然後在下圖的 'Mount Point:'中輸入 '/';'Size(Megs):' 中輸入 '
500' ; 'Partition Type:' 選擇 'Linux Native ' ,最後按 Ok 確認即可。
圖3-8 建立分區(2)
選擇格式化的分區
圖3-9 格式化分區
與其它的操作系統一樣在使用分區前要對分區進行格式化,格式化成Redhat 可識別的
分區。注意原則上每個分區都應該格式化。如果你的硬碟使用的時間較長或則有壞塊,
那麼就選擇' Check for bad blocks while formatting'把壞的區域標志上,以免數據
寫到壞塊上丟失。否則,對於新的硬碟只要簡單地選擇格式化就行了。
Lilo的配置
引導Linux 需要安裝一個用來把內核裝入計算機的程序,在Intel 的兼容PC 上使用L
ilo。在安裝界面內有如下幾個選項:
Create boot disk
創建軟盤啟動盤。默認是允許,如不創建,用滑鼠點擊前面的小方塊讓其凸起。一般
我們不必創建這個東西,詳情見第四章和第九章。
Do not install LILO
不安裝LILO,建議你不要選擇這個選項,否則你無法啟動系統。
Install LILO boot record on:
詢問LILO 安裝在哪兒,通常選則安裝在 MBR 上。
Use linear mode
這個選項是要求Linux使用SCSI的線性模式。如果你有一個超大的或者比較特殊的SCS
I硬碟,選擇這個選項。
下面的區域是表明了分區的詳細情況,通常不用作修改。
圖3-10 配置lilo
選擇時區
中國用戶在WORLD項選擇亞洲,在相面的滾動框內選上海時間。
圖3-11 設置時區
賬號配置
圖3-12 設置密碼和賬號
Redhat 在安裝過程中需要設置 ROOT 用戶的密碼,同時也可建立新的用戶,不過很少
有人在此時建立用戶。只要輸入root密碼並且確認就可以了。
認證配置
圖3-13 身份驗證設置
這個配置通常不需要改動,它表示賬號的身份認證和口令的加密方式。在Redhat 6.1
中,口令驗證使用MD5加密方式,它具有更高的對抗蠻力猜測演算法的能力。不過MD5不是
一個嚴格意義上的加密演算法,因此是一個可選項。你也可以使用原始的DES並且不使用M
D5。當然這意味著降低了系統的安全強度。
X配置
圖3-14 X window配置
所謂X 配置主要是指顯示卡和顯示器的配置,如不想在此配置可選 Skip x configur
ation ,等安裝結束後用 setup 應用程序來設置。
選擇安裝的應用程序
你可根據需要選擇你想要的應用程序,如果你的硬碟空間足夠大我們總是建議安裝所
有的軟體包。(最後的everything選項)
圖3-15 選擇安裝的軟體包
(15)安裝軟體包
現在開始軟體包的拷貝了,耐心的等幾十分鍾就可以了。
圖3-16 安裝軟體包
在此安裝過程中沒有提到網路部分,可用安裝後用 netconf 這個應用程序來完成,
後面的章節有詳細的說明。
3.3 Turbolinux中文版安裝過程
這里介紹的是TurboLinux 4.0Chinese的安裝過程。目前TurboLinux 6.0已經發布了,
不過兩者在安裝之間的差別幾乎可以忽略,你可以自己看看自己拿到的TLC版本。
3.3.1 啟動Turbolinux 安裝程序
直接用CDROM啟動
只要你的BIOS支持CD-ROM啟動,你就可以用這種方式。 直接把光碟插入光碟機,引導機
器就可以了.
在DOS下用LoadLin啟動
從DOS啟動,轉換到光碟驅動器,例如e:,然後進入子目錄dosutils/ ,輸入命令aut
oboot 並回車,就可以開始安裝TurboLinux。
利用軟盤啟動
如果上面的兩種安裝方式都不能工作, 就必須利用軟盤來啟動安裝TurboLinux,不管
怎樣,我不建議你使用這種功能。如果你一定要用,你可以自己看TurboLinux附帶的安
裝手冊。
3.3.2 TurboLinux安裝過程
TurboLinux的安裝過程是中文的,所以我們下面只是簡單地介紹一下,其實你只要仔
細研究一下說明就差不多了。
1) 選擇顯示模式
本窗口會詢問用戶是否使用彩色的顯示模式,預設是YES,一般情況下,按回車 就可
以。除了某些單色顯示器以外。
圖3-17 選擇顯示器類型
歡迎畫面,然後安裝程序將會顯示一個歡迎畫面,您只需要按回車跳過即可。
2) 選擇鍵盤類型
圖3-18 選擇鍵盤類型
用戶在此處設置鍵盤布局,而中國用戶一般都直接鍵入回車使用預設設置US 鍵盤。
3) PCMCIA
如果您的系統上有PCMCIA卡(有時被稱作PC Card),選擇'是',安裝程序會提醒您插
入特別設備驅動盤,不然您將無法驅動您的PCMCIA設備。 如果沒有,直接選『否』繼續
。
4) 特別設備驅動
如果安裝程序提醒您需要特別設備驅動盤,移去啟動盤,並且插入特別設備驅動盤。
通常這是不必要的,除非你使用某種從軟盤啟動的安裝方式。
TurboProbe
圖3-19 檢測硬體
TurboProbe是TurboLinux安裝程序所特有的一部分, TurboProbe可以自動檢測您系統
上安裝的ISA設備/PCI設備/SCSI設備/網卡/並口IDE設備。如果系統在這個過程中掛起
了,重新啟動機器。
6) 安裝介質
圖3-20 選擇安裝介質
TurboLinux提供了4種的方式,我們只介紹除'硬碟安裝'方式外的3種方式。
CD-ROM 安裝 - 最常用的安裝方式,如果您選擇了這種安裝方式,你就要用第一張Tu
rboLinux光碟啟動計算機,而後TurboLinux將自動進入安裝界面。
NFS 方式安裝 - 如果您的機器在一個區域網中, 並且該區域網上有另外一台伺服器
上以NFS方式共享出一份TurboLinux的拷貝。那麼您就可以利用這台 機器作為NFS伺服器
來安裝TurboLinux。在安裝之前您必須從您的系統管理員處獲得您系統的TCP/IP設置和
NFS伺服器 的配置信息。選擇這種安裝方式將會彈出對話框 網路設置。 您需要輸入您
得到
② 基於嵌入式linux 3G下的無壓縮視頻傳輸
這是我本科的畢業設計。時隔5個月,再次回顧一下。
本課題研究嵌入式系統在數據採集,3G無線通信方面的應用,開發集視頻採集、地理信息採集、無線傳輸、客戶機/伺服器模式於一體的車載終端,實現終端採集視頻與GPS信息的傳輸,支持伺服器端顯示視頻與GPS信息的功能。
這里我著重介紹本項目中的視頻傳輸。由於知識水平的缺乏和實驗條件的限制,本人並沒有採取視頻壓縮演算法。但針對數據量大而且3G網路相對有線網路帶寬限制的情況採取了措施。
硬體環境:友善之臂mini2440實驗板(ARM9)。
操作系統:linux(終端)、windows7(伺服器)。
網路環境:WCDMA(聯通3G上網卡)。
Mini2440實驗板上有CMOS攝像頭介面。同時廠家提供的linux源代碼中有攝像頭驅動,編譯進內核即可使用攝像頭。攝像頭採用的是OV9650,30萬像素,在linux下作為字元串設備驅動,可通過讀取設備文件,獲得圖像信息。
讀取攝像頭數據的代碼如下:
復制代碼
代碼如下:
int camdata_count;
int cam_fd=open("/dev/camera",O_RDONLY);
printf("Camera init!/n");
while(1){
camdata_count=read(cam_fd,cam_data,640*512*2);
if(camdata_count==640*512*2){
/*視頻數據處理與傳輸的代碼*/
}
else{
printf("CAMERA Error!/n");
}
}
close(cam_fd);
從攝像頭中讀取的數據格式是RGB565的,如圖所示。即紅色分量佔6位,綠色分量佔6位,藍色分量佔5位,總共是16位。
為了作為bmp文件顯示,需要將RGB565轉換為RGB888(即24位真彩色)。再在文件開頭加上bmp文件頭,就成為一個完整的bmp文件了。用UDP協議傳輸這些圖像數據。在伺服器端,用.NET的庫可以將接收到的BMP數據在圖形界面的指定組件上顯示。
.NET顯示圖像的代碼如下:
復制代碼
代碼如下:
// st是一個已經建立的MemoryStream對象,bmp_data是bmp數據(byte數組),bmpSize是BMP圖像大小(單位是B)。
st.Write(bmp_data, 0, bmpSize);
try
{
picBox.Image = Image.FromStream(st);//picBox是已經建立的PictureBox對象,呈現在圖形界面上
}
catch (Exception e)
{
richTextBox2.Text += "error/n";//如果BMP數據錯誤,則輸出如下錯誤
}
旅羨 //st對象清空
st.SetLength(0);
st.Position = 0;
st.Flush();
流程圖如下:
以上方案在有線網路傳輸的情況下能順利運行,但是在3G網路下圖像幾乎不能顯示。這是因為3G網路的帶寬限制和UDP協議不可靠的缺點,數據在傳輸過程中會產生丟包現象,影響圖片質量。對此需要改善程序代碼,增加一些措施來避免丟包:
(1) 將數據轉化的工作交給伺服器。
BMP文件基本不經過任何壓縮,每個像素點佔用3個位元組(R、G、B分量分別佔用一個位元組),而從CMOS攝像頭讀取的數據是RGB565的,即一個像素點只佔用2個位元組。如果說從CMOS讀取的圖像信息不經真彩化處理,直接傳輸給伺服器,這樣,需要傳輸的數據量減少了大約1/3。
(2) 減少圖像的尺寸。
從CMOS攝沖消像頭讀取的圖像尺寸是640*512的。如果打包成BMP數據的話,總共大小是640*512*3+54(B),大約960KB。如果說不經真彩化處理,一幀數據總共大小是640*512*2(B),大約640KB。正常情況下,一秒可以採集6-7幀圖像。聯通WCDMA理論的上行速率是5.76Mbps,約為720KB/s,實際拆判拍情況一定低於此值。在此情況下,一秒基本上只能傳輸一幀圖像。所以減小圖片尺寸很必要。可以考慮將圖片的長寬都減小為原來的1/6,再在伺服器端進行真彩化處理和打包,放大為320*256的尺寸顯示。這樣,一幀RGB565的圖像的大小約為107*86*2(B),約為18KB。這樣就足夠傳輸相應的數據了。
(3) 分包傳輸。
UDP協議僅負責傳輸,不保證對方可靠接收,沒有擁塞控制。因此,在WCDMA這種相對來說較差的網路環境下,會造成大量數據包的丟失。實驗證明,當一次傳輸數據量達到18KB(一幀的數據大小)時,丟包率在95%以上,這會嚴重影響圖片質量。當一次傳輸數據量在1-2KB時,丟包率可以降低到一定值,並保證一定的傳輸效率。
(4) 每次數據傳輸之間給與一定延時。
如果將一幀圖片分為每個1-2KB數據包來傳輸,大約要傳輸15-18次。在每次傳輸之間,如果不引入一定量的延時,同樣會造成很大量的數據包丟失。而延時的時間也是需要把握好的,一般延時500-1000ns比較合適。在傳輸每幀圖片之間,也需要給與一定的延時,此時延時時間過大的話,會造成每秒傳輸幀數過少,圖片流暢率下降,一般傳輸每幀圖片之間給予50ms的延時。
修改後的程序代碼:
復制代碼
代碼如下:
count=read(fd,cam_data,WIDTH*HEIGHT*2);//縮小圖片大小,data_buf為原圖像數據,cam_data為縮小後的圖像數據,兩者都為字元數組類型
if(count==WIDTH*HEIGHT*2){
shrink(data_buf,cam_data,WIDTH,HEIGHT);
for(i=0;i30;i++){
//用UDP分包傳輸圖像數據
sendto(sockfd,data_buf+(i*32768),32768,0,(struct sockaddr *)addr,len);
usleep(2000);//給與一定的延時
}
printf("One picture sended!/n");//一幀傳輸完畢
usleep(100000);
}
else{
printf("Error/n");
}
以上措施可以減少UDP傳輸視頻數據的丟包率,但是,不管怎樣,UDP傳輸數據的丟包現象普遍存在,或多或少會有一些。在3G網速較差的地區,丟包率甚至還是會達到50%。視頻數據從攝像頭讀取後存放在一個無符號字元串數組里,本來是按順序分割數據進行傳輸,由於讀取的圖像數據對應的像素點分布是從左到右、從上到下排布的,如果丟包,會造成接收到的圖像的部分圖像條無法及時更新,影響肉眼觀察圖像的質量。下面兩張圖對比了網路狀況較好和較差情況下的顯示效果。
上圖是網路狀況良好情況下的顯示效果,可以看出,顯示比較流暢,圖像質量較好。下圖是網路狀況較差情況下的顯示效果,可以看出,動態圖像的某些圖像條未及時更新,這是由於決定該圖像條的顯示的數據包在傳輸過程中丟包。
為了降低丟包帶來的這種損失,可以考慮將每幀圖像分成多個位平面並按一定順序傳輸,每個位平面代表所有像素的同一位組成的二值圖像。如下圖所示,是每個位平面傳輸的順序(從0開始計數)。
實驗證明,每一幀分包傳輸後,靠前面的數據包丟包率比較小,而每個顏色分量的最高位對圖片色彩質量的影響最大,位數越低,對圖像色彩質量的影響越小。所以即便後面的位平面數據沒有接收到,對圖片色彩質量的影響也不會很大。將RGB每種顏色分量的位數按照從最高到最低的順序進行傳輸,每種顏色分量對應的位平面穿插進行傳輸,於是就採用了上圖所示的順序。由於RGB565格式的數據每個像素共16位,一幀圖片總共需要分16個位平面數據包傳輸。為了伺服器能夠正確進行圖片數據的組裝,在傳輸之前,將每個位平面數據包的最前面加上該包傳輸順序的值,如下圖所示。
終端部分代碼如下:
復制代碼
代碼如下:
shrink(data_buf,cam_data,WIDTH,HEIGHT);//縮小圖片大小,data_buf為原圖像數據,cam_data為縮小後的圖像數據,兩者都為字元數組類型
for(i=0;i16;i++)
{
bzero(cut_buf,1152);
cut_buf[0]=(uchar)i;//將要傳輸的數據首個位元組設為順序號
for(j=0;j9202;j++)
{
//每個像素按位分位平面數據包
cut_buf[j/8+1]|=(uchar)(((uchar)(data_buf[j]bit_index(i))0x01)(j%8));
}
sendto(sockfd,cut_buf,1152,0,(struct sockaddr *)cam_addr,sockaddr_len);//發送數據
usleep(1000);//傳輸每個數據包之間的延時
}
printf("One picture sended!/n");//傳輸每幀圖像之間的延時
usleep(100000);
在伺服器端,用如下函數進行數據的重組,同時進行真彩化處理(C#.NET語言):
復制代碼
代碼如下:
private void picDataCopy(byte[] bBuf,byte[] bData) //bBuf為接收到的數據,bData是重組後的數據存放的數組
{
int index=bBuf[0];
for (int i = 0; i 9202;i++ )//循環9202次,逐位進行數據的重組
{
if(index15){
bData[3*i + 2 - (index%3)] |=
(byte)(((bBuf[i/8 + 1] (i%8)) 0x01) (7 - index/3));
}
else if(index==15){
bData[3*i+1]|=
(byte)(((bBuf[i/8 + 1] (i%8)) 0x01) 2);
}
}
}
如上圖所示,是在改變傳輸方案後,即採用按位平面傳輸的方法傳輸後的顯示效果圖,在網路良好的情況下,可以正常顯示。在網路狀況較差的情況下,圖像顏色質量會下降,而且會不穩定地變化。但是部分圖像條不顯示的情況就不再出現。
總結:此方案重在聯系,實際工程中肯定不會採取此方案,還是有必要學習視頻壓縮演算法及其在linux上的移植。