久久久国产精品视频_999成人精品视频线3_成人羞羞网站_欧美日韩亚洲在线

0
首頁 精品范文 linux系統

linux系統

時間:2023-05-30 10:17:22

開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇linux系統,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。

linux系統

第1篇

1、可以在網上下一個虛擬光驅(例VDM),然后打開虛擬光驅點加載,然后選擇你的光盤路徑。然后把光驅最小化,記住不要關掉,然后打開我的電腦,你的系統盤的下面就會多出一個虛擬盤,雙擊它,然后安它的提示一步一步安就可以了安裝時不要選擇和linux同分區就可以了。

2、也可以把網上下載下來的ISO包解壓后,選擇自定義安裝,只要不安裝在你原本來系統盤就可了.安裝的時候選擇保留舊系統,并將Windows7安裝到非linux系統安裝分區,安裝好以后,開機時就會有個系統選擇菜單,你可以自己選擇進入哪個系統。

(來源:文章屋網 )

第2篇

// 讀取Table.DAT

{

FILE *tab = fopen(TABLE_FILE, "r") ;

// 打開文件

int count = fread(Tab, sizeof(int), TAB_SIZE, tab) ;

fflush(tab) ;

// 刷新文件流

for (int i=0; i

if ( Tab[i] != -1 && Tab[i+1] != -1 )

Tab[i+1] = Tab[i+1] + Tab[i] ;

else

break ;

return TRUE ;

}

int LoadPack()

// 加載數據包

{

int i ;

int load_packs

= 0 ;

FILE *pack = fopen(PACK_FILE, "r") ;

for (i = 0; i < BUF_COUNT; i++)

{

if ( Tab[to_be_load+i] != -1 && Tab[to_be_load+i+1] != -1 )

{

int size = Tab[to_be_load+i+1] - Tab[to_be_load+i] ;

int offset = Tab[to_be_load+i] ;

if ( fread(buf+i, size, 1, pack) != 1 )

{

printf("Read error...\n\n") ;

exit(1) ;

}

load_packs ++ ;

// 更新變量

}

else

{

/* do nothing */

}

}

fflush(pack) ;

// 刷新數據流

to_be_load += load_packs ;

// 更新變量

return load_packs ;

// 返回讀取的數目

}

3.4.2 系統中的buffer

在現實中的很多系統中,buffer是很重要的一種思想,為的就是減少讀取外部存儲的次數,延長設備的使用壽命。Buffer在計算機系統中,應用是很廣泛的,例如,在硬盤和內存之間存在一層緩沖區,在CPU和內存之間同樣也存在一層緩沖區,這層緩沖區通常被稱作Cache。

在本系統中,也同樣利用了Buffer思想,有著傳統意義上的原因,當然還考慮到用戶操作時的特殊性,系統的Buffer思想描述如下:

l

在任意時刻,Buffer內最多存儲100個Package數據

l

剛開始,加載pack0 ~ pack99共計100個package,當要查看pack100時,則采取的方法是:保留舊的50個package, 加載新的50個package,則package編號變為:pack50 ~ pack149,這樣操作的原因是為了用戶的方便,因為用戶經常會查看某個報文附近的幾個報文。

初始狀態下,假設系統已經加載了編號為0到99的數據包,如圖2.7所示:

圖2.7

加載前緩沖區內容

在某一時刻,假設用戶想查看編號為100的數據包,則需要重新加載,重新加載后的數據包如圖2.8所示:

圖2.8

加載后緩沖區內容

使用此種Buffer思想,用戶操作的方便性即體現在這個方面,在對某條報文進行研究時,會經常查看它的臨近報文,使用此種機制,那么便不會不斷的對要查看的臨近報文進行加載,減少了讀取硬盤的次數。

3.4.3 系統的顯示問題

在控制臺上,要想建造一個好的用戶操作界面,是一件比較難的事情,根據我的體驗,linux下著名的Sniffer工具tcpdump的操作界面也不夠友好,普通用戶很難操作。在window環境下的Sniffer工具Ethereal界面比較美觀,方便操作,所以,建造一個好的用戶操作界面成為我此次畢設的攻克重點。

本系統的顯示分為兩種顯示模式:“detail”模式 和 “simple”模式,“detail”模式意為“詳細顯示模式”,“simple”模式意為“簡單顯示模式”。

在“detail”模式下,每個包得到盡可能詳細的解析,解析包的每一層信息,示意如圖2.9:

圖2.9

詳細顯示模式

根據上圖顯示的信息,可以得知此包是一個ICMP Package,具體內容屬于ping Reply,更詳細得知是本主機ping本主機的一個數據包。

“simple”模式意為簡單模式,所謂簡單模式就是對每個Package盡可能的用一句話來描述,雖然盡可能的簡短,但是一定要包含以下信息:

l

Package的類型

l

Package的作用

這種模式的重要作用是在用戶對包進行檢測和測量時,通常會查看相鄰的幾個Package,這樣的模式方便用戶進行“查看上一個Package”和“查看下一個Package”,只要用戶在這種模式下按“N”或者“n”就可以查看下一個package,只要按“L”或“l”鍵就可以查看上一個Package。

“simple”模式的示意如圖2.10所示:

圖2.10

簡單顯示模式

從圖中可以看出,當前正在查看的包用“藍色”的線條標出,方面用戶的操作,當用戶向上或者向下進行選擇時,此藍色線條也同樣會向上或向下運動,這樣做的原因是是的系統顯示具有動態效果。

“detail”模式的顯示比較簡單,只要逐層進行解析就可以了,下面我們主要討論下“simple”模式下的顯示算法。

在“simple”模式下,當前控制臺最多可以顯示20個Package,主要是由函數List20Packages函數實現的。什么時候應該對Package標上藍色的線條,以下代碼即說明此問題:

if ( i == p_recorder % 20 )

// if the package is the current

printf(COLOR_START) ;

// color_start

無論示在簡單顯示模式還是在詳細顯示模式下,均支持以下三種操作:

向上操作(Prev) ----- 查看上一條報文

向下操作(Next) ----- 查看下一條報文

任意操作(Goto) ----- 查看任一條報文

第四章

Sniffer其它相關

4.1 文怎樣獲取一個數據包?

4.1.1 Libpcap方法

Libpcap 是由洛侖茲伯克利國家實驗室編寫的Linux 平臺下的網絡數據包捕獲函數庫,是一種與系統無關,用于訪問數據鏈路層,是一個獨立于系統接口的用戶級捕包函數據庫,為底層的網絡數據提供了可移植框架,它的應用包括網絡統計、安全監聽、網絡調試、性能測量、入侵檢測、口令攔截等。Libpcap 可以在絕大多數類Unix 平臺下工作,絕大多數的現代操作系統都提供了對底層網絡數據包捕獲的機制,在捕獲機制之上可以開發網絡監控應用軟件。采用Libpcap 實施網絡數據包捕獲時,將要用到一個重要的函數pcap_open_live(),它的函數原型是:pcap_t * pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebuf),其中,如果device 為NULL 或any,則對所有接口捕獲,snaplen 代表用戶期望的捕獲數據包最大長度,promisc 代表設置接口為混雜模式,捕獲所有到達接口的數據包,但只有在設備給定的情況下才有意義,to_ms 代表函數超時返回的時間。

編程要點如下:

l

查找可以捕獲數據包的設備

device = pcap_lookupdev(errbuf);

l

創建捕獲句柄,準備進行捕獲

p =pcap_open_live(device, 8000, 1, 500, errbuf);

l

如果用戶設置了過濾條件,則編譯和安裝過濾代碼

pcap_compile(p, &fcode, filter_string, 0, netmask);

pcap_setfilter(p, &fcode);

l

進入循環,反復捕獲數據包

for( ; ; )

while((ptr = (char *)(pcap_next(p, &hdr))) == NULL);

l

對捕獲的數據進行類型轉換,轉化成以太數據包類型

eth = (struct libnet_ethernet_hdr *)ptr;

l

對以太頭部進行分析,判斷所包含的數據包類型,做進一步的處理

if(eth->ether_type == ntohs(ETHERTYPE_IP))

if(eth->ether_type == ntohs(ETHERTYPE_ARP))

l

關閉捕獲句柄

pcap_close(p);

4.1.2 Socket方法

在Linux 下編寫網絡包捕獲程序,比較簡單的方法是在超級用戶模式下,利用類型為SOCK_PACKET 的套接口(socket函數)來捕獲鏈路幀。Linux SOCK_PACKET 編程要點如下:

l

設置套接口以捕獲鏈路幀:在設置套接口之前,需要引用如下文件:

#include

#include

#include

#include

調用socket 函數的原型是:int socket(int domain, int type,int protocol);

本函數涉及3 個輸入參數:domain 參數表示所使用的協議族;type 參數表示套接口的類型;protocol 參數表示所使用的協議族中某個特定的協議。如果函數調用成功,套接口的描述符(非負整數) 就作為函數的返回值,假如返回值為-1,就表明有錯誤發生。使用socket 函數捕獲鏈路層數據幀,domain參數應指定為AF_INET 協議族,表示采用Internet 協議族;type參數指定為SOCK_PACKET,表示獲取鏈路層數據,進而分析各層的協議數據單元;而protocol 參數采用htons(0x0003),表示可以截取所有類型的數據幀。這里htons 函數用于短整數的字節順序轉換。計算機數據存儲有兩種字節優先順序:高位字節優先和低位字節優先。Internet 上數據以高位字節優先順序在網絡上傳輸,所以對于在內部是以低位字節優先方式存儲數據的機器,在Internet 上傳輸數據時就需要進行轉換,否則就會出現數據不一致。在捕獲數據包時socket 函數調用形式為:

int fd;

// fd 是套接口的描述符

fd=socket(AF_INET, SOCK_PACKET, htons(0x0003));

l

設置網卡工作模式:要使建立的套接口能夠真正捕獲到同一網段其它站點的數據,還必須設置網卡工作于“混雜”模式,可以使用ioctl 函數,原型如下:

int ioctl(int d, int request,&ifr),ioctl 系統調用用于對套接口、網卡等軟硬件設施進行底層控制,實際的操作來自各個設備自己提供的ioctl 接口。設置網卡于“混雜”方式的Linux C 程序段如下:

struct ifreq ifr;

strcpy(ifr.ifr_name, dev);

//(char *)dev 標識設備名,如:eth0

i=ioctl(fd,SIOCGIFFLAGS,&ifr); // 表示要求取出工作方式

if(i

{

close(fd);

perror("can't get flags\n");

exit(0);

}

ifr.ifr_flags |= IFF_PROMISC;

//在標志中加入“混雜”方式

i=ioctl(fd,SIOCSIFFLAGS,&ifr);

// 表示要求設定工作方式

if(i

{

perror("can't set promiscuous\n");

exit(0);

}

l

從套接口讀取鏈路幀:套接口建立以后,就可以從中循環地讀取鏈路層數據幀。因此,還需要建立數據幀的緩沖區,并把幀頭結構的指針指向這一緩沖區的首地址:

char ep[ETH_FRAME_LEN]; struct ethhdr *eh; int fl;

eh=(struct ethhdr *)ep;

// 指向幀頭

fl0 = read(fd, (etherpacket *)ep, sizeof(ep)) ;

//fl0 為截取的數據幀幀長

這里幀頭結構類型ethhdr 在/usr/include/linux/if_ether.h 中

定義:struct ethhdr {unsigned char h_dest [ETH_ALEN]; //目標MAC 地址

unsigned char h_source[ETH_ALEN];

`

//源MAC 地址

unsigned short h_proto;

//幀中數據協議類型代碼

}

基于上述定義,一旦ep 讀入幀中數據,就可以通過eh->h_dest、eh->h_source、eh->h_proto 獲取幀首部信息。

4.2 怎樣解析一個報文?

無論采用Lipcap 方法,還是采用SOCK 方法,都可獲得以太網幀,由于在以太網幀首部中含有協議類型字段,所以可進一步實現上層協議包的首部提取,為篇幅起見,本處僅對Socket方法獲得幀為例,介紹TCP/IP 首部的提取的一般方法,以便今后作進一步的數據分析與處理。

IP 報頭首部提取

根據h_proto 的值,可以確定幀數據將交由上層何種協議處理,常見的h_proto 值與協議的對應關系有:

0x0800:IP協議;

0x0806:ARP 協議;

0x8035:RARP 協議。

因此,一旦捕獲的幀中h_proto 的取值為0x800,將類型為iphdr 的結構指針指向幀頭后面負載數據的起始位置,則IP 信包首部的數據結構將一覽無余。以下程序段表明這一定位過程:

char ep[ETH_FRAME_LEN];

struct ethhdr * eh;

struct iphdr *ip;

int fl;

eh=(struct ethhdr *)ep;

// eh 指向幀頭

ip=(struct iphdr *)((unsigned long)ep + ETH_HLEN);

// ETH_HLEN為幀長

fl1=read(fd, (struct erhhdr *)ep, sizeof(ep));

//fl1為捕獲的數據幀長

printf("saddr:%x =>daddr:%x\n",ip->saddr, ip->daddr); //取源和目標IP 地址

TCP 報文段首部提取

在IP 協議首部中包含協議數據單元類型標識域:_u8 protocol;這一標識域的常見取值及其協議對應關系如下:

1:ICMP;

6:TCP;

17:UDP。

因此,如果IP 報頭的協議域取值為6,那么緊跟在IP 報頭之后就是TCP 報頭。IP 報頭的長度可以通過ihl 域取得。這樣,假如緩沖數組ep 存放捕獲到的以太網數據幀,iph 是指向其中IP 基本報頭結構的指針,而tcph 是指向TCP 報頭結構的指針,那么,定位tcph=(struct tcphdr *)(((unsignedlong)ep)+ETH_HLEN+ iph->ihl*4),TCP 報頭的結構信息就存放在*tcph 中,并可通過以下語句獲取相關信息:

fl2=read(fd, (struct ethhdr *)ep, sizeof(ep));

// fl2 為捕獲的數據幀幀長

printf("source=%x,dest=%x\n",tcph->source,tcph->dest); //取源端口和目的端口號

4.3 怎樣把網卡置為“混雜模式”?

在以太網中,通過廣播實現數據傳輸,在同一子網段的所有網卡都可“聽”到網絡總線上傳輸的所有數據,但不是所有數據都能被接收到。在系統正常工作時,一個合法的網絡接口只響應兩種數據幀:幀的目標MAC地址與本地網卡地址相符;幀的目標地址是廣播地址,除此之外數據幀將被丟棄。

由于網卡有4 種工作模式:廣播(能夠接收網絡中的廣播信息)、組播(能接收組播數據)、直接(只有目的網卡才能接收該數據)和混雜(能夠接收一切數據)模式,所以為了能夠捕獲以太網所有數據包,通常需要將網卡設置成混雜工作模式。當主機連接在共享型以太網集線器上時,采用“混雜”方式可以捕獲到同一沖突域上傳輸的數據幀;但當主機連接在交換機上時,由于交換機通常不會將數據幀廣播到所有端口上(除非在其MAC 地址——端口映射表內找不到相應表項),因而不能利用以太網絡的廣播特性進行捕獲。這時,可以利用交換機的端口鏡像功能實現網絡數據包捕獲。因為當端口A 和端口B 之間建立鏡像關系后,流經端口A 的所有信息流量將同時通過端口B 輸出,所以可以在端口B 捕獲到端口A的數據。

所以,要想運行Sniffer工具,執行“偵聽”功能,就必須使得網卡處于“混雜模式”,把網卡置為“混雜模式”的代碼如下:

BOOL SetPromis()

{

int fd ;

fd = socket(AF_INET, SOCK_PACKET, htons(0x0003) ) ;

if ( fd == -1 )

{

printf("Can Not Establish A Socket To Control The Card...\n\n") ;

return FALSE ;

}

struct ifreq ifr ;

strcpy(ifr.ifr_name, "eth0") ;

int i = ioctl(fd, SIOCGIFFLAGS, &ifr) ;

if ( i < 0 )

{

close(fd) ;

printf("Can Not Get Flags Of The Net Card...\n\n") ;

return FALSE ;

}

ifr.ifr_flags |= IFF_PROMISC ;

i = ioctl(fd, SIOCSIFFLAGS, &ifr) ;

if ( i < 0 )

{

printf("Can Not Set The Net Card Promiscuous...\n\n") ;

return FALSE ;

}

printf("Set The Card To Be Promiscuous..............OK\n\n") ;

return TRUE ;

}

4.4 Sniffer攻擊的防范

Sniffer軟件可以進行網絡流量監控、拓撲發現、入侵檢測,給網絡管理帶來了極大的便利。正由于它能被動獲取網絡傳輸的明文信息,因此,一旦被黑客利用,給網絡帶來的危害也是巨大的。

作為一種入侵手段,嗅探器令人防不勝防,因為它被動接受而不主動獲得。它不會向網絡上發出任何包,網絡用戶很難發現它的存在。到目前為止還沒有一種比較好的防范手段。防范 Sniffer攻擊,只能依靠用戶和網絡軟件設計者的安全意識。我們知道,FTP, Telnet等軟件都是進行明文傳輸,因此,對攻擊者來說,他們傳輸的信息就等于完全暴露出來。因此,必須對傳輸的數據進行加密,這也是反嗅探器的唯一途徑。在Linux系統中,我們主張用SSH和openSSH來對傳輸數據進行加密。這樣即使攻擊者能得到數據流,也不能得到具體信息了。

另一種防范嗅探攻擊的方式就是檢查網絡中有無網絡接口處于混亂模式。在Linux環境下可以用ifconfig來檢鋇本地機器是否處于混亂模式,ifconfig是Linux自帶的工具。對于子網中網絡接口的檢測,可以使用NEPED工具。然而該工具是利用Linux的ARP實現中的缺陷來檢測這些接口口它發送一個ARP請求,一次來引起嗅探工作站的響應。然而它本身就是一個缺陷,因為它是利用了Linux的其它缺陷來實現的。隨著Linux系統的越來越完善,如果ARP實現得到修補,嗅探工作站不再響應ARP請求。

另外,安全的拓撲結構也是必要的,因為嗅探器只能在當前網絡段上進行數據捕獲。這就意味著,將網絡分段工作進行得越細,嗅探器能夠收集的信息就越少。

以上討論了目前對嗅探攻擊防范的困難,對此本人作出下列兩點設想:

l

因為以太網在局域網中進行傳輸是使用廣播方式,如果不采用這種方式,直接使用地址解析 ((ARP)影射物理地址,嗅探器就無法接收數據了。或者進行雙向驗證,即主機對數據需要檢查,數據對主機也需檢查。

l

由于進行原始數據接收時需要將網卡設置為混亂模式,但如果網卡不

提供這種模式,嗅探器也無法工作了。另外,前面提供的兩種檢測網卡是否處于混亂模式的方式都有缺陷,希望以后能研究出沒有缺陷的檢測網卡狀態的方式。

4.5 Sniffer引入網絡管理中的可行性

Sniffer作為能夠捕獲網絡報文的設備,通常用來在網絡上截取閱讀位于OS工協議模型中各個協議層次上的數據包。Sniffer可以攔截所有的正在網絡上傳送的數據,通過相應的軟件分析處理,對網絡實時信息和歷史信息進行監控和統計分析,進而分析子網的網絡狀態和網絡整體布局。為網絡性能的分析、網絡故障的判斷、信息流量的審計、配置管理得調整、網絡安全的檢測提供強有力的使用工具,對網絡管理提供信息依據。

Sniffer可以在網絡管理中實現的主要的功能:

實時網絡包捕獲:Sniffer能夠以線速率實時捕獲用戶定義的網絡數據包截獲通信的內容。對網絡上主機間的通信,通過設置過濾條件,給出一個詳細的逐包的統計信息。

網絡實時監控:Sniffer以表格、圖形等形式,實時顯示出網絡運行情況,如協議分布、流量分布、帶寬利用率、錯誤率等。

對協議進行解析:有些只能分析一種協議,而另一些能夠分析幾百種協議。

統計歷史數據和發出警報:Sniffer可提供幾十種長期數據報告,以便將來的歷史查詢和分析,并可根據預先設定的閥值發出事件警報。

報文發送:通過設置目的地址,發送次數,發送延遲和報文大小,形成報文并發送,可以實現網絡流量模擬。

4.6 Sniffer技術在網絡管理中開發的可行性與必要性

根據以上各章節的論述,我們大致了解了網絡管理技術和Sniffer技術的基本概念,在Sniffer本身所具有的抓取網絡數據報的特性的基礎之上,首先產生了一些簡單的Sniffer的工具,其后Sniffer技術融合其他方面的技術,包括:人工智能、數據庫、分布式等技術,在網絡管理領域得到了極大的發展,在不同網絡類型、不同操作系統中都得到了或多或少的應用,形成了各種專用的或通用的Sniffer產品,從簡單捕獲400字節數據包的Sniffit工具到集成的功能強到的具有 Sniffer網絡管理性質的 TVN商業軟件。從研究和實際應用上說明Sniffer技術在網絡管理中是一種行之有效的技術。

由于現有網絡管理工具的存在,許多人認為沒有自己再開發網絡管理軟件的必要了。事實上,這種觀念是不正確的。因為:盡管現有的網絡管理工具提供了強大的網絡管理功能,但它不可能包羅萬象,適合于任何情況。也基于這個原因,很多的網絡管理平臺提供了API,可以使第三方或客戶進行二次開發。這雖然使得網絡管理工具的開發容易了許多,但前提是要掌握網絡管理的深厚的專業知識。功能強大的網絡管理工具其使用相應也較為復雜,而客戶使用可能只關心自己想要實現的功能,而不迷失于相對無必要的復雜的功能環境中,同時希望減少管理負擔,減少培訓、操作和維護的費用。另外優秀的網絡管理工具的價格也是很昂貴的,微小型企業可能無法承受。

因此Sniffer技術在網絡管理中的開發應用有著很大的必要性。ShuSniffer是我們自主開發的具有獨立版權的軟件產品。它是針對廣播信道網絡環境下的企事業單位局域網而專業設計的一套小巧、可靠、操作簡便的計算機網絡診聽分析軟件。它主要依靠信息在局域網中傳播的廣播方式,捕獲信道上的報文,進行一系列特定分析,提取出實用數據提供給用戶作為參考。并且把數據存入數據庫,提供歷史查詢。它可以模擬網絡報文傳輸,以及對截獲的報文進行深層次的分析,了解報文的具體內容。它實現的主要功能包括:網絡實時監視、報文捕獲與分析、報文發送、歷史查詢、系統配置,為網絡健康性能狀態的分析、調整提供強有力的實用工具,成為計算機網絡管理體系中的重要組成部分。

4.7 Sniffer對多協議的捕捉和分析的不足

當前Sniffer技術的應用還十分簡單,對復雜多協議的捕獲和分析也有很大的缺陷。從推廣Sniffer技術的企業來看,Sniffer因要十分具體的應用于某個領域,因此只能做到對某個特定協議集做到精確專業的分析口而今天的網絡通常由多個網段經過路由器、網橋、交換機和WAN鏈路組成。任何一個網段都可能運行多種網絡協議。例如,TCP/IP協議與局域傳輸協議(如Novell的IPX)一起用于連接企業范圍網絡的協議。對于某些商業站點,可能同時需要運行多種協議簇— NetBEUI, IPX/SPX, TCP/IP, 802.3和SNA等,每個協議簇中又包括多種具體應用協議。這時很難找到一種Sniffer幫助解決網絡問題,因為許多Sniffer往往將某些正確的協議數據包當成了錯誤數據包,然而我們要想解決復雜的網絡問題,通常需要詳細地解析各協議數據包內容。

在實際應用中,現有的Sniffer軟件管理工具通常只能對單個協議或少數的協議進行捕獲,例如Sniffer工具軟件不能檢測諸如HTTP和FTP之類的應用協議。這在工nterne七八ntranet環境中對網絡的有效管理是一個大缺陷。所以Sniffer應該有對多種協議的捕獲和分析能力,包含了目前最熱門的W49W所使用的通訊協議.提供廣泛且詳盡的協議解析,使Sniffer成為一個功能齊全,完全透視網絡的強大網絡管理工具。

參考文獻

[1] Tim Berners-Lee,James Handler,Ora Lassia.The semantic web[J].Scientific American, 2001,284(5):34-43.

[2] W3C Recommendation 10 February 2004.OWL web ontology language guide [EB/OL]. 2004

[3] Robert Shimonski, Sniffer Network Optimization and Troubleshooting Handbook. Syngress Media, 2002.6.

[4] Douglas E.Comer. Internetworking with TCP/IP, Vol 1. 5th Edition.

United States :Prentice Hall ,2006:90-200.

[5] W.Richard Stevens. TCP/IP Illustrated, Vol 1: The Protocols. United States: Addison-Wesley,2004:70-150.

[6] 李景.本體論在系統中的應用研究[M].北京:北京圖書館出版社, 2005.

[7] 譚思亮,監聽與隱藏網絡偵聽揭密[M].北京:人民郵電出版社,2002.

[8] 肖新峰,宋強. TCP/IP 協議與標準教程. 北京:清華大學出版社,2007:1-115.

[9] 楊延雙. TCP/IP 協議分析與應用. 北京:機械工業出版社,2007:60-148.

[10] 蘭少華,楊余旺,呂建勇. TCP/IP 網絡與協議. 北京:清華大學出版社,2006:1-110

[11] 李景.本體論在文獻檢索系統中的應用研究[M]. 北京:北京圖書館出版社, 2005. 70-150

[12] 朱禮軍,陶蘭,黃赤.語義萬維網的概念、方法及應用[J].計算機工程與應用, 2004,40(3):79-83

[13] 任彬.一種特定領域的語義網模型[D].吉林:吉林大學, 2004.

[14] 田春虎.國內語義Web 研究綜述[J].情報學報,2005,24(2):243-249.

[15] 杜小勇,李曼,王大治.語義Web與本體研究綜述[J].計算機應用, 2004,24(10):14-16.

[16] 周武,金遠平.構建XML 本體信息研究[J].微機發展, 2003,13(10):61-64.

[17] 馬恒太,蔣建春.一個基于Uuix 平臺的分布式網絡監視器系統[J].計算機研究與發展, 2001,38(3):268-274.

[18] 李力,肖慶.Linux 下GUI 網絡數據包嗅探器的研究與實現[J].計算機工程與設計, 2006,27(2):344-346.

第3篇

安全問題對于IT管理員來說是需要長期關注的,可以用一套框架來對操作系統的安全性進行合理的評估,包括:基本安全、網絡安全和協議,應用協議、與操作、確信度、可信計算、開放標準。按照這七個類別比較微軟Windows和Linux的安全性,最終的定性結論是:目前為止,Linux提供了相對于Windows更好的安全性能,只有一個方面例外(確信度)。

Linux和Windows在設計上就存在哲學性的區別。Windows操作系統傾向于將更多的功能集成到操作系統內部,并將程序與內核相結合;而Linux不同于Windows,它的內核空間與用戶空間有明顯的界限。根據設計架構的不同,兩者都可以使操作系統更加安全。

隨著互聯網向更深層次、更普及化方向發展,企業用戶在選擇網絡方案時極大地依賴于網絡需求和預算,而Linux提供了客戶所需的強大且經濟的選擇。首先,Linux作為開放源代碼的軟件,使得應用開發的人員可以以很低的成本獲得Linux的源代碼并進行應用開發,于是就先天性地為Linux打上了“成本低”的烙印,這也使得Linux操作系統相比Windows占有絕對的價格優勢,再加上占用資源少、運行穩定、功能強大等優點,注定了Linux成為現階段發展最快的操作系統。而隨著ISP、ICP對服務器應用的需求,更是推動了Linux服務器及集群系統的發展,逐漸開始在各大服務器制造商的產品系列中擔綱主角。

二、 Linux系統操作系統卡簡介

一般的Linux操作系統卡”是一塊PCB板,通過PCI接口與主機通信。Linux系統卡以硬件形式提供“安全Linux操作系統”,能夠在保留服務器原有硬件設備的條件下輕易地安裝“安全Linux操作系統”,充分利用其提供的安全機制,并對操作系統核心、系統軟件、系統配置等關鍵文件提供物理保障。

利用操作系統卡,根據應用環境定制功能,固化安全操作系統,用戶可以在利用原有硬件的基礎上能夠為系統的運行提供高安全、高性能的運行環境 。該操作系統卡的主要特性有五個方面:

1、采用凝思磐石安全操作系統。

2、通過PCI接口與主機通訊。

3、具有大容量存儲功能、自動引導功能、硬件寫保護功能和容災備份功能。

4、可在絕大部分IA架構服務器上運行。

5、配備CompactFlash(CF),每塊卡容量為32M、64M、128M、256M可選 。

三、 一般操作系統卡的技術特點分析

1、 采用安全操作系統

采用此系統的特點和優勢:

1)、抵抗最為危險也是最為流行的緩沖器溢出攻擊

2)、抵抗審計日志文件的破壞

3)、“四權分立”的系統管理

4)、抵抗系統配置文件的破壞

5)、對抗病毒及抵抗特洛依木馬的安裝

6)、掉電后的快速恢復

7)、安全增強的對外服務

8)、提供抗災分布式雙機熱備份和自動服務切換機制(HA)

9)、存貯設備故障自動報警與恢復

10)、服務器自動重啟技術(Auto Server Restart)

11)、提供多機集群機制(Cluster)

2、 通過PCI接口與主機通訊

雖然未來的主流是趨向于使用AGP接口,但目前更普遍的使用了PCI接口,PCI接口比較容易獲得, 其總線有133MB/s 的帶寬,對聲卡、網卡、視頻卡等絕大多數輸入/輸出設備顯得綽綽有余。

3、 具有大容量存儲功能、自動引導功能、硬件寫保護功能和容災備份功能

4、 可在絕大部分IA架構服務器上運行

由于該架構服務器采用了開放式體系,以"小、巧、穩"為特點,憑借可靠的性能、低廉的價格,并且實現了工業標準化技術和得到國內外大量軟硬件供應商的支持,在大批量生產的基礎上,以其極高的性能價格比而在全球范圍內,尤其在我國得到廣泛的應用。在互聯網和局域網內更多的完成文件服務、打印服務、通訊服務、WEB服務、電子郵件服務、數據庫服務、應用服務等主要應用。

5、 配備CompactFlash(CF),每塊卡容量為32M、64M、128M、256M可選

6、 安全Linux操作系統核心機制

1)強制運行控制(MEC)

對外提供服務的進程是黑客闖入服務器的門戶,這些進程的缺陷一旦被利用,就會喪失整個系統的控制權。而服務器進程的缺陷層出不窮,各種服務器“被黑”的事件也就隨處可見。

強制運行控制機制正是針對上述問題設計的。它用一種形式化的語言描述了進程的行為范圍,一旦進程的行為超出了這個范圍,系統將自動停止該進程繼續運行,并記錄該事件的所有安全相關信息,為后期查找責任人提供幫助。

強制運行控制機制運行于系統核心,能夠充分保證其強制性。它控制的對象不是特定的進程,從而能夠保證對于受控對象家族的子進程、孤兒進程、SESSION LEADER進程,強制運行控制機制都同樣有效。

2) 強制能力控制(MCC)

強制能力控制的目的就是要消除系統中不受限制的進程,只賦予每個特權進程能夠完成其功能的最小能力,實現“最小特權”原則。利用強制能力控制機制,對應用程序加以適當改造,使安全加固服務器不包含SUID ROOT程序,所有對外提供服務的進程以普通用戶身份運行,消除了系統安全隱患,大大提高了系統的安全性。

3)訪問控制列表(ACL)

傳統類Unix系統以文件屬主、組和其它方式設置讀、寫和執行許可,這會造成文件許可的不必要擴散。訪問控制列表提供細粒度的訪問控制,能夠以特定用戶或特定組為單位的訪問許可分配,從而防止文件許可的不必要擴散。

4)四權分立的系統管理

安全Linux加固服務器去除了超級用戶,將系統管理功能分配給4個固有用戶完成。他們是系統管理員(Sysadmin)、安全管理員(Secadmin)、網絡管理員(Netadmin)和審計管理員(Audadmin)。使用這種“四權分立”原則完成系統的管理任務,使得各個管理員都不能控制整個服務器系統。他們之間相互牽制,能夠防止管理員的疏忽削弱整個系統的安全性。另外,管理員的登錄路徑得到嚴格限制,防止用戶輕易獲得管理員權限,這也大大提高了系統的安全性。

5)安全增強的對外服務

Linux安全服務器系統的所有對外服務和本機特權程序均根據核心操作系統機制進行了特別的安全增強,防止這些應用程序成為網絡攻擊者控制服務器的跳板。對于第三方軟件,通過特定的配置方法,同樣能夠利用Linux服務器的系統安全機制達到安全增強的目的。

第4篇

操作系統之戰時刻未停止過,在操作系統之戰是一場“三國”混戰,Windows、Mac和 Linux 之間展開。目前世界上用戶數量最多的桌面操作系統是微軟的Windows 7 和 Windows XP。微軟雄踞三國混戰局面之歷史,已有20多年,Linux 和 Mac 目前尚未撼動其霸主地位!

Linux,是一款自由開源的操作系統,雖在桌面市場上不遺余力,但目前全球份額仍僅占 1%。Linux 發行版本眾多,沖擊桌面市場的力量仍然在如泉水汩汩流出。Linux 崇尚自由、開源,但下面作者為大家介紹幾款非Linux 的操作系統。

提示:在安裝體驗下面的操作系統前,注意做好相關數據的備份,以防不備。

Linux 與 windows 較大的不同就是界面,這需要長期使用windows的用戶用一段時間慢慢適應。ReactOS是一款長的很像Windows的自由操作系統。ReactOS 較大的特性之一就是從 scratch 構建而來,外表很像Windows。開發者希望ReactOS 能夠兼容 WIndows 軟件,也兼容其他硬件。ReactOS最新版本為48.9MB 大小。這里提示下,其功能有限,大家也可以使用 LiveCD版本來試用或在虛擬機里感受下。

BeOS作為一款操作系統,其歷史可溯至 1991年,最新版本為2001年的5.1。

Haiku是一個社區驅動的項目,接手已經停止開發的BeOS 繼續開發。Haiku 項目目標是擁有一款與BeOS 二進制包完全兼容的操作系統。BeOS在當時具備了一些現代用戶界面的特性。Haiku 可免費下載,安裝在PC 上,大小為238MB。

Google Chrome OS專為上網本Chromebook設計。這個平臺設計本身很輕型,就是為網絡環境設計,搭載了一系列的Google 在線應用。目前還在開發中。嚴格意義上來說,也是一款Linux 操作系統。

OpenSolaris,由Sun 公司主持的,基于Solaris 操作系統開發的一款操作系統。Sun公司目前已經被甲骨文收購,該操作系統的開發進程也減慢了。一群開發者從該平臺分出一支,取名“OpenIndian”。OpenSolaris 和 OpenIndiana 與Unix 和 Linux 從根本上很像。OpenIndiana 桌面DVD 32位不超過802 MB,USB 便攜版本為 963 MB。

最初的BSD操作系統是由加州伯克利大學開發,與OpenIndiana類似,FreeBSD

是一款Unix操作系統。它有幾個重要的分支,如NetBSD,PCBSD。FreeBSD相對來說,服務器和開發環境較適合它。

LUPA開源社區

第5篇

【關鍵詞】嵌入式系統 嵌入式Linux系統 學結

1 嵌入式系統

1.1 嵌入式系統的定義

一方面按照歷史性、本質性、普遍性要求,嵌入式系統定義為:嵌入式系統是嵌入到對象體系中的計算機應用系統,與對象系統交互,在實現對象系統某些任務過程時,對應用系統會提出響應時間的限定要求。

另一方面從應用上嵌入式系統被定義為:以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。

1.2 嵌入式系統的特點

(1)系統內核小;

(2)專用性強;

(3)系統精簡;

(4)高實時性;

(5)多任務的操作系統;

(6)需要開發工具和環境。

1.3 嵌入式系統的應用

在當前數字信息技術和網絡技術高速發展的時代,嵌入式系統已經廣泛地滲透到工業控制、交通管理、信息家電、家庭智能管理等方方面面中。隨著國內外各種嵌入式產品的進一步開發和推廣,嵌入式技術將越來越和人們的生活緊密結合。

2 嵌入式Linux的學習過程

2.1 常用命令總結

(1)cd命令――切換目錄;

(2)cp命令――拷貝文件或目錄;

(3)ls命令――列出目錄內容;

(4)mkdir命令――創建目錄;

(5)rmdir命令――h除目錄;

(6)rm命令――移動文件或目錄;

(7)grep命令――行過濾工具;

(8)chmod命令――設置訪問權限;

(9)cat命令――顯示文件內容;

(11)jobs命令――查看中止或者在后臺運行的程序;

(12)bg命令――把程序放在后臺運行;

(13)fg命令――把程序放在前臺運行;

(14)ctrl+c命令――終止在前臺運行的程序;

(15)kill命令――終止一個進程;

(16)mount命令――把某個文件系統掛接到某個目錄下;

(17)Ifconfig命令――顯示或配置網絡設備。

2.2 Gcc―makefile

2.2.1 Gcc的使用方法(以hello.c文件為例)

(1)預處理:gcc -E hello.c -o hello.i

編譯:gcc -S hello.i -o hello.s

匯編:gcc -c hello.s -o hello.o

鏈接:gcc hello.o -o hello

生成可執行文件:hello

(2)gcc hello.c -o hello

生成可執行文件:hello

(3)gcc hello.c

生成可執行文件:a.out

2.2.2 makefile的使用方法

(1)基本結構:

目標文件:依賴文件

命令行

(2)使用make命令就能編譯得到結果。

2.3 文件I/O編程

2.3.1 函數說明

(1)open()函數是用于打開或創建文件;

(2)close()函數是用于關閉一個被打開的文件;

(3)read()函數是用于將從指定的文件描述符中讀出的數據放到緩存區中;

(4)write()函數是用于向打開的文件寫數據,寫操作從文件的當前指針位置開始;

(5)lseek()函數是用于在指定的文件描述符中將文件指針定位到相應的位置;

(6)fcntl()函數給文件上鎖。

2.3.2 使用流程

打開文件open()、設置文件鎖fcntl()、定位文件指針位置lseek()、對文件進行讀寫操作write()、read()。

2.4 編寫守護進程

(1)創建子進程,終止父進程;

(2)在子進程中創建新會話setsid;

(3)改變工作目錄chdir;

(4)重設文件創建掩碼umask;

(5)關閉文件描述符。

2.5 進程間通信

2.5.1 管道

(1)用于具有親緣關系的進程之間的通信;

(2)建立管道pipe();

(3)管道關閉時只需使用普通的close()函數逐個關閉各個文件描述符。

2.5.2 FIFO

有名管道的創建使用函數mkfifo(),在創建管道成功之后,就可以使用open()、read()、和write()這些函數。

2.5.3 信號(如圖1所示)

(1)信號的發送與捕捉。

kill()函數、raise()函數、alarm()函數、pause()函數

(2)信號的處理。

使用簡單函數signal(),只需指出要處理的信號和處理函數即可;

使用信號集函數組。

2.5.4 信號量

創建信號量或獲得在系統已存在的信號量semget()

初始化信號量semctl()函數的SETVAL操作

信號量的PV操作semop()

刪除信號量semclt()函數的IPC_RMID操作

2.5.5 共享內存

創建共享內存shmget()

映射共享內存shmat()

撤銷映射shmdt()

2.5.6 消息隊列

創建或打開消息隊列msgget()

添加消息msgsnd()

讀取消息msgrcv()

控制消息隊列msgctl()。

3 學結

嵌入式系統本身是一個相對模糊的定義,而Linux則是類似于windows的操作系統,它的核心源代碼是開放的、自用使用的。在了解了基礎知識和安裝虛擬機之后,我便開始進行上機操作,加深基本命令的理解和函數的使用。

在學習的過程中想要獨立解決疑問,可以通過網絡資源、課外書或大量的動手實踐才能真正的領會Linux的精髓。同時在我們自己的學習中,要盡最大的能力去幫助他人,在幫助他人的同時自己會深刻鞏固知識。

參考文獻

[1]何立民.嵌入式系統的實時性問題[J].單片機與嵌入式系統應用,2004(09).

[2]孫天澤.嵌入式Linux操作系統[M].北京:人民郵電出版社,2012.

[3]夏瑋瑋,沈連豐等.嵌入式系統關鍵技術分析與開發應用[J].單片機與嵌入式應用,2003(02).

[4]賈紅偉,葉文萊.嵌入式操作系統與嵌入式Linux[J].吉林師范大學學報,2005.

第6篇

小知識:

CDlinux 是一種小型的迷你GNU/Linux發行版。CDlinux的體形小巧,功能卻很強大。因此可以把CDlinux當作“移動操作系統”來使用。

由于CDlinux里集成了最新的Linux內核,Xorg圖形界面,Xfce窗口管理器和許多其它流行軟件,所以平時大家使用的如Firefox瀏覽器,即時通訊程序,圖像處理程序,甚至Java等等都可以在CDlinux里運行。有了這些程序的支持,無論您在哪里都可以像在家里一樣輕松完成您的工作。 您是否已經動心了呢?那就讓我們一起來制作吧!

首先打開,在打開的網絡硬盤頁面依次下載hpformat U盤格式化工具、cdlinux_ce-0.9.0.zip CDLINUX操作系統安裝鏡像文件、unetbootin-windows-494.zipU盤啟動CDLINUX制作工具三款軟件。

將要制作CDLINUX移動系統的U盤(U盤的容量一般要大于1G),插入電腦,打開解壓后的hpformat文件夾,雙擊運行其中的HPUSBFW.EXE程序,彈出U盤格式化窗口,單擊“Device”下拉框,點選要進行格式化的U盤盤符,單擊“Start”按鈕,彈出格式化警告提示時,單擊“是”繼續。等待片刻,格式化完畢,關閉U盤格式化窗口。

打開已解壓的unetbootin-windows-494文件夾,雙擊運行unetbootin-windows-494.exe文件,彈出程序窗口,點選“光盤鏡像”單選按鈕,單擊窗口下方的“驅動器”下拉箭頭,選擇要進行操作的U盤盤符。

單擊“光盤鏡像”類型為“ISO”,單擊右側的“瀏覽”按鈕,彈出“打開磁盤鏡像文件”窗口,瀏覽并點選解壓后的CDlinux_CE-0.9.0文件夾中的CDlinux_CE-0.9.0.iso文件,單擊“打開”按鈕,回到unetbootin-windows-494.exe程序窗口,單擊“確定”按鈕。

彈出U盤系統安裝界,此過程要等待幾分鐘時間。

U盤系統安裝完成,單擊“現在重啟”按鈕重啟計算機。

計算機重啟時,按住鍵盤“Delete”鍵進入BIOS設置界面,將光標定位于BOOT菜單項,配合鍵盤的“-”與“+”鍵,使Hard Drive項位于該菜單最上位置,雙擊Hard Drive項打開該菜單,配合上下方向鍵及“-”與“+”鍵,使USB Hard Drive項位于該Hard Drive菜單的最上方,按鍵盤F10鍵保存設置并重啟計算機。

第7篇

關鍵詞:Linux;Ntloader

中圖分類號:TP316文獻標識碼:A文章編號:1009-3044(2007)16-31156-01

1 引言

現在學習使用Linux操作系統是件很流行的事,所以很多人的電腦上除了安裝常用的Windows系列操作系統之外還安裝上了Linux操作系統,一般來說安裝一個Linux是夠學習用的了,但由于Linux的發行版眾多,優缺點也各不一樣,同時各個發行版更新的速度也相當迅速,所以有很多用戶嘗試著在電腦上安裝多個Linux發行版,用來體會各個發行版的異同或是學習新舊版本之間的區別。安裝多個版本的Linux有很多種方法,比如Linux系統所帶的GRUB程序或第三方的多系統啟動引導軟件BootMagic和System Commander等,除此之外利用Windows 2000系列和Windows Xp系列自帶的Ntloader引導程序也可以實現多個Linux系統與Windows系統共存。本文就以在一個硬盤上安裝Windows XPProfessional(以下簡稱Xp)、Windows 2000 Server(以下簡稱2000)、Redhat linux 9.0(以下簡稱Redhat)、Redflag desktop 4.0(以下簡稱Redflag)為例給出其實現的方法。

2 實現方法

2.1硬盤的分區

安裝系統前先進行合理分區,這里將硬盤的前一部分劃分成C:、D:、E:、F:四個分區,其中C盤和D盤分別用來安裝XP和2000 ,E盤和F盤用來存儲數據。另外,為了發揮Windows 2000 服務器版的優勢,將Windows 2000 Server所在盤的分區格式設置為Ntfs。值得注意的是此時只對硬盤的前一部分進行了分區,硬盤里還應有一部分磁盤空間未進行分配,這些未分配的空間是留給Linux系統使用的。此時的分區情況如圖1。

圖1 對硬盤的劃分出C:\ - F:\后的磁盤空間情況

2.2設置Windows系統

分完區后開始安裝Windows系統,先安裝XP系統,裝好后將C盤根目錄下的ntldr ,,bootfont.bin三個文件備份。接下來安裝2000系統,在2000安裝完畢后會出現一個問題:在啟動菜單中選擇Xp系統卻不能進入Xp,解決的辦法很簡單,用剛才備份的三個文件覆蓋掉C盤下的原有文件,然后再重新啟動就能正常進入Xp系統,這是因為Xp系統是在2000系統之后面世的,如果先安裝Xp再安裝2000的話就會出現2000 的啟動文件覆蓋掉Xp系統的啟動文件,所以就會出問題。當然,更簡單的解決辦法就是將2000安裝在C盤,Xp安裝在D盤,這樣先裝2000再裝Xp就不會出現這個問題了。

2.3 Linux系統的安裝與設置

同樣,安裝Linux系統之前也要進行分區,需要注意的是Linux的分區不能事先劃分好,如果在事先劃分好的分區上安裝多個Linux很可能造成只有一個Linux 系統能正常使用,所以Linux的分區最好在安裝過程中用安裝程序附帶的分區工具進行手工分區。進行正式安裝之前先規劃出分區情況(如圖2所示),為兩個Linux系統分別劃分出引導(boot)分區和根(/)分區,由于交換分區可以兩個Linux系統共用,所以只劃分一個就可以了。

圖2 分區的最終結果

規劃好后開始正式安裝Redhat和RedFlag,在安裝過程中一定要將Redhat與Redflag的引導程序(Lilo或Grub)安裝在自己的引導(boot)分區的上,即Redhat要安裝在hda8上,Redflag要安裝在hda10上,千萬不能安裝在MBR上,這一點非常關鍵,否則就只有一個Linux系統能啟動。

2.4獲取兩個Linux系統的啟動文件

兩個Linux系統安裝完后重新啟動計算機會發現開機的啟動菜單里沒有Linux的選項,只有2000和Xp的啟動菜單。這是主要是因為我們暫時還沒能將Linux的啟動信息添加進開機菜單,要想開機菜單里出現這兩個Linux系統的啟動菜單就要得到這兩個Linux系統的啟動文件。

(1)Redhat第一張安裝光盤的dosutils目錄中的loadin.exe文件與子目錄Autoboot下的vmlinuz文件拷貝到E盤(hda6)中,這兩個文件可使我們能在DOS下進入Linux系統中。

(2)啟動盤啟動到DOS下,轉到E盤,執行loadlin vmlinuz root=/dev/hda9 ,執行后會進入到Redhat Linux中。

(3)進入Redhat Linux后,執行dd if=/dev/hda8 of=/Redhat.lnx bs=512 count=1。這條命令是將Redhat Linux的引導分區儲存為一個文件,并且文件名為Redhat.lnx,存放在其根 (/)目錄下。

(4)重新啟動計算機,重復步驟(2),但命令改成loadlin vmlinuz root=/dev/hda11,這樣就進入到RedFlag Linux中。

(5)重復步驟(3),但命令改成dd if=/dev/hda10 of=/RedFlag.lnx bs=512 count=1。這樣也在根目錄下得到了RedFlag Linux的啟動文件。

2.5將Linux的啟動選項加入到開機啟動菜單中

將剛剛得到的兩個Linux的啟動文件拷貝到C盤(hda1)中,然后修改C盤下的boot.ini文件,在其最后添加兩行命令:c:\ Redhat.lnx=” Redhat Linux 9.0”,c:\ RedFlag.lnx =” RedFlag Linux 4.0”,這兩條命令要分兩行書寫,這樣就將Linux的啟動選項添加到了開機菜單中。

2.6完成

重新啟動后,啟動菜單中就出現了Redhat Linux 9.0和 RedFlag Linux 4.0的選項,這時就可以從Windows Xp,Windows 2000 Server ,Redhat Linux 9.0,RedFlag Linux 4.0這四個選項中選擇一個進入系統了,當選擇其中的Linux系統時Ntloader引導程序就會調入其相應的引導文件進行引導,這樣正常進入了Linux系統。

3 結束語

這種實現方法的最大好處在于安裝完成后Linux系統與Windows系統互不干擾,即使要重裝其中任何一個系統,也不會對其它已安裝的系統造成影響。在沒有重新劃分過分區的前提下如果重新安裝Xp只須備份好兩個Linux的安裝文件(Redhat.lnx,Redflag.lnx)和2000的三個啟動文件(ntldr ,,bootfont.bin),重裝完成后放回C盤,再按修改C盤下的boot.ini文件即可,這樣其它的系統比如2000、Redhat 或RedFlag仍能正常使用;如果重新安裝2000、Redhat或RedFlag則按照正常安裝的過程即可,不需要進行其它的設置,這是因為重新安裝時在C盤中各自的引導文件并沒有丟失。當然,如果將硬盤重新進行過分區后再用此方法就可能會有問題,因為所備份的安裝文件已經不適應新的分區情況,所以這時僅將備份文件還原是不夠的,應從步驟1開始重新進行安裝。

另外,這種方法的另一優點是其不僅僅只適用于兩個Linux系統與Windows系統的共存,只要仔細按照前文所述的方法,安裝3個、4個或更多的Linux系統也是可行。

參考文獻:

[1]許社村.Red Hat Linux 9中文版入門與進階[M].清華大學出版社:北京,2003.

[2]CANDACE LEIDEN TERRY COLLINGS.著.王自東.等.譯.LINUX寶典[M].電子工業出版社:北京,2002.

[3]中科紅旗軟件技術有限公司.紅旗LINUX系統管理教程[M].電子工業出版社:北京,2001.

第8篇

引 言

近年來,隨著計算技術、通信技術的飛速發展,特別是互聯網的迅速普及和3C(計算機、通信、消費電子)合一的加速,微型化和專業化成為發展的新趨勢,嵌入式產品成為信息產業的主流。Linux從1991年問世到現在,短短的十幾年時間已經發展成為功能強大、設計完善的操作系統之一;可運行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多種硬件平臺,而且開放源代碼,可以定制;可與各種傳統的商業操作系統分庭抗爭。越來越多的企業和研發機構都轉向嵌入式Linux的開發和研究上,在新興的嵌入式操作系統領域內也獲得了飛速發展。

1 嵌入式Linux的特點

嵌入式系統是以應用為中心,以計算機為基礎,軟硬件可裁剪,適用于系統對功能、可靠性、成本、功耗嚴格要求的專用計算機系統,系統結構見圖1。實時性是嵌入式系統的基本要求,其次,還要求代碼小,速度快,可靠性高。嵌入式Linux(Embedded Linux)是指對Linux經過裁剪小型化后,可固化在存儲器或單片機中,應用于特定嵌入式場合的專用Linux操作系統。嵌入式Linux的開發和研究已經成為目前操作系統領域的一個熱點。與其它嵌入式操作系統相比(詳見表1),Linux的特點如下。

表1 專用嵌入式實時操作系統與嵌入式Linux的比較

專用嵌入式實時操作系統嵌入式Linux操作系統版權費每生產一件產品需交納一份版權費免費購買費用數十萬元(RMB)免費技術支持由開發商獨家提供有限的技術支持全世界的自由軟件開發者提供支持網絡特性另加數十萬元(RMB)購買免費且性能優異軟件移值難(因為是封閉系統)易,代碼開放(有許多應用軟件支持)應用產品開發周期長,因為可參考的代碼有限短,新產品上市迅速,因為有許多公開的代碼可以參考和移植實時性能好須改進,可用PT_Linux等模塊彌補穩定性較好較好,但在高性能系統中須改進

第一,Linux系統是層次結構且內核完全開放。Linux是由很多體積小且性能高的微內核系統組成。在內核代碼完全開放的前提下,不同領域和不同層次的用戶可以根據自己的應用需要方便地對內核進行改造,低成本地設計和開發出滿足自己需要的嵌入式系統。

第二,強大的網絡支持功能。Linux誕生于因特網時代并具有Unix的特性,保證了它支持所有標準因特網協議,并且可以利用Linux的網絡協議棧將其開發成為嵌入式的TCP/IP網絡協議棧。 此外,Linux還支持ext2、fat16、fat32、romfs等文件系統,為開發嵌入式系統應用打下了很好的基礎。

第三,Linux具備一整套工具鏈,容易自行建立嵌入式系統的開發環境和交叉運行環境,可以跨越嵌入式系統開發中仿真工具的障礙。Linux也符合IEEE POSIX.1標準,使應用程序具有較好的可移植性。

傳統的嵌入式開發的程序調試和調試工具是用在線仿真器(ICE)實現的。它通過取代目標板的微處理器,給目標程序提供一個完整的仿真環境,完成監視和調試程序;但一般價格比較昂貴,只適合做非常底層的調試。使用嵌入式Linux,一旦軟硬件能夠支持正常的串口功能,即使不用仿真器,也可以很好地進行開發和調試工作,從而節省一筆不小的開發費用。嵌入式Linux為開發者提供了一套完整的工具鏈(tool chain)。它利用GNU的gcc做編譯器,用gdb、kgdb、xgdb做調試工具,能夠很方便地實現從操作系統到應用軟件各個級別的調試。

第四,Linux具有廣泛的硬件支持特性。無論是RISC還是CISC、32位還是64位等各種處理器,Linux都能運行。Linux通常使用的微處理器是Intel X86芯片家族,但它同樣能運行于Motorola公司的68K系列CPU和IBM、Apple、Motorola公司的PowerPC CPU以及Intel公司的StrongARM CPU等處理器。Linux支持各種主流硬件設備和最新硬件技術,甚至可以在沒有存儲管理單元(MMU)的處理器上運行。這意味著嵌入式Linux將具有更廣泛的應用前景。

2 Linux嵌入式系統開發平臺

    2.1 系統軟件操作平臺

操作系統是一種在計算機上運行的軟件。它的主要任務是管理計算機上的系統資源,為用戶提供使用計算機及其外部設備的接口。它存在的目的是為了管理所有硬件資源,并且提供應用軟件一個合適的操作環境。嵌入式系統由于硬件的限制,通常只具有極稀少的硬件資源,如主頻較低的CPU、較小的內存、小容量的固態電子盤芯片DoC(Disk on Chip)或DoM(Disk on Module)替代磁盤等。在使用電池的系統中,它還要實現低功耗,延長電池使用時間的功能。

Linux作為嵌入式操作系統是完全可行的。因為Linux提供了完成嵌入功能的基本內核和所需要的所有用戶界面,能處理嵌入式任務和用戶界面。將Linux看作是連續的統一體,從一個具有內存管理、任務切換和時間服務及其它分拆的微內核到完整的服務器,支持所有的文件系統和網絡服務。Linux作為嵌入式系統,是一個帶有很多優勢的新成員。它對許多CPU和硬件平臺都是易移植、穩定、功能強大、易于開發的。

嵌入式Linux系統需要下面三個基本元素:系統引導工具(用于機器加電后的系統定位引導)、Linux微內核(內存管理、 程序管理)、初始化進程。但如果要它成為完整的操作系統并且繼續保持小型化,還必須加上硬件驅動程序、硬件接口程序和應用程序組。

Linux是基于GNU的C編譯器,作為GNU工具鏈的一部分,與gdb源調試器一起工作的。它提供了開發嵌入式Linux系統的所有軟件工具。

    2.2 系統硬件平臺

在選擇硬件時,常由于缺乏完整或精確的信息而使硬件選擇成為復雜且困難的工作。硬件開發成本常是我們很關心的。當考慮硬件成本時,須要考慮產品的整個成本而不僅是CPU的成本。因為合適的CPU,一旦加上總線邏輯和延時電路使之與外設一起工作,硬件系統就可能變得非常昂貴。如果要尋找嵌入式軟件系統,那么,應首先確定硬件平臺,即確定微處理器CPU的型號。

現在比較流行的硬件平臺有Intel公司的StrongARM 系列,Motorola公司的DragonBall系列,NEC公司的VR系列,Hitachi公司的SH3、SH4系列等等。選定硬件平臺前,首先要確定系統的應用功能和所需要的速度,并制定好外接設備和接口標準。這樣才能準確地定位所需要的硬件方案,得到性價比最高的系統。

3 嵌入式Linux系統開發模式

嵌入式系統通常為一個資源受限的系統。直接在嵌入式系統的硬件平臺上編寫軟件比較困難,有時甚至是不可能的。一般流程見圖2。目前,一般采用的辦法是,先在通用計算機上編寫程序,然后,通過交叉編譯,生成目標平臺上可運行的二進制代碼格式,最后下載到目標平臺上的特定位置上運行,具體步驟如下。

第一步,建立嵌入式Linux交叉開發環境。目前,常用的交叉開發環境主要有開放和商業兩種類型。開放的交叉開發環境的典型代表是GNU工具鏈,目前已經能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業的交叉開發環境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。交叉開發環境是指編譯、鏈接和調試嵌入式應用軟件的環境。它與運行嵌入式應用軟件的環境有所不同,通常采用宿主機/目標機模式,見圖3。

第二步,交叉編譯和鏈接。在完成嵌入式軟件的編碼之后,就是進行編譯和鏈接,以生成可執行代碼。由于開發過程大多是在Intel公司x86系列CPU的通用計算機上進行的,而目標環境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,這就要求在建立好的交叉開發環境中進行交叉編譯和鏈接。

例如,在基于ARM體系結構的gcc交叉開發環境中,arm-linux-gcc是交叉編譯器,arm-linux-ld是交叉鏈接器。通常情況下,并不是每一種體系結構的嵌入式微處理器都只對應于一種交叉編譯器和交叉鏈接器。如對于M68K體系結構的gcc交叉開發環境而言,就對應于多種不同的編譯器和鏈接器。如果使用的是COFF格式的可執行文件,那么在編譯Linux內核時,需要使用m68k-coff-gcc和m68k-coff-ld,而在編譯應用程序時則需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。編寫好的嵌入式軟件經過交叉編譯和交叉鏈接后,通常會生成兩種類型的可執行文件:用于調試的可執行文件和用于固化的可執行文件。

第三步,交叉調試。

① 硬件調試。如果不采用在線仿真器,可以讓CPU直接在其內部實現調試功能,并通過在開發板上引出的調試端口,發送調試命令和接收調試信息,完成調試過程。目前,Motorola公司提供的開發板上使用的是DBM調試端口,而ARM公司提供的開發板上使用的則是JTAG調試端口。使用合適的軟件工具與這些調試端口進行連接,可以獲得與ICE類似的調試效果。

② 軟件調試。在嵌入式Linux系統中,Linux系統內核調試,可以先在Linux內核中設置一個調試樁(debug stub),用作調試過程中和宿主機之間的通信服務器。然后,可以在宿主機中通過調試器的串口與調試樁進行通信,并通過調試器控制目標機上Linux內核的運行。

嵌入式上層應用軟件的調試可以使用本地調試和遠程調試兩種方法。如果采用的是本地調試,首先要將所需的調試器移植到目標系統中,然后就可以直接在目標機上運行調試器來調試應用程序了;如果采用的是遠程調試,則需要移植一個調試服務器到目標系統中,并通過它與宿主機上的調試器共同完成應用程序的調試。在嵌入式Linux系統的開發中,遠程調試時目標機上使用的調試服務器通常是gdbserver,而宿主機上使用的調試器則是gdb。兩者相互配合共同完成調試過程。

第四步,系統測試。整個軟件系統編譯過程,嵌入式系統的硬件一般采用專門的測試儀器進行測試,而軟件則需要有相關的測試技術和測試工具的支持,并要采用特定的測試策略。測試技術指的是軟件測試的專門途徑,以及能夠更加有效地運用這些途徑的特定方法。在嵌入式軟件測試中,常常要在基于目標機的測試和基于宿主機的測試之間做出折衷。基于目標機的測試需要消耗較多的時間和經費,而基于宿主機的測試雖然代價較小,但畢竟是在仿真環境中進行的,因此難以完全反映軟件運行時的實際情況。這兩種環境下的測試可以發現不同的軟件缺陷,關鍵是要對目標機環境和宿主機環境下的測試內容進行合理取舍。嵌入式軟件測試中經常用到的測試工具主要有:內存分析工具、性能分析工具、覆蓋分析工具、缺陷跟蹤工具等,在這里不加詳述。嵌入式Linux系統的典型構成見圖4。

以下即為一個典型開發工具的使用流程:

① 寫入或植入引導碼;

② 向串口打印字符串的編碼;

③ 將gdb目標碼移植工作串口,可與另一臺運行gdb程序的Linux主機系統對話;

④ 利用gdb讓硬件和軟件初始化碼在Linux內核啟動時工作;

⑤ Linux內核啟動,串口成為Linux控制口并可用于后續開發;

⑥ 如果在目標硬件上已運行了完整的Linux內核,即可調試用戶的應用進程。

4 嵌入式Linux面臨的挑戰

目前,對嵌入式Linux系統的開發正在蓬勃興起,并已形成了很大的市場。除了一些傳統的Linux公司,像RedHat、VA Linux等,正在從事嵌入式Linux的研究之外,一批新公司(如Lineo、TimeSys等)和一些傳統的大公司(如IBM、SGI、Motorola、Intel等)以及一些開發專用嵌入式操作系統的公司(如Lynx)也都在進行嵌入式Linux的研究和開發。但就目前的技術而言,嵌入式Linux的研究成果與市場的真正需求還有一些距離,因此,嵌入式Linux走向成熟還需要在以下幾個方面有所發展。

    (1)Linux的實時性擴充

實時性是嵌入式操作系統的基本要求。由于Linux還不是一個真正的實時操作系統,內核不支持事件優先級和搶占實時特性,所以在開發嵌入式Linux的過程中,首要問題是擴展Linux的實時性能。對Linux實時性的擴展可以從兩方面進行:向外擴展和向上擴展。向外擴展即從范圍上擴展,讓實時系統支持的范圍更廣,支持的設備更多。目前的開發所面向的設備僅限于較簡單的有實時要求的串/并口數據采集、浮點數據計算等,而像實時網絡這樣實時系統的高級應用還需進一步發展。向上擴展是擴充Linux內核,從功能上擴充Linux的實時處理和控制系統。如嵌入式系統RT-Linux,它的基本原理是將Linux本身的任務以及Linux內核本身作為一個優先級最低的任務,而實時任務作為優先級最高的任務,即在實時任務存在的情況下運行實時任務,否則就運行Linux本身的任務。實時任務不同于Linux普通進程。它是以Linux的可裝載的內核模塊(Loadable Kernel Module,LKM)的形式存在的,需要運行實時任務的時候,將這個實時任務的內核模塊插入到內核中去,實時任務和Linux一般進程之間的通信通過共享內存或者FIFO通道來實現。

    (2)改變Linux內核的體系結構

Linux的內核體系采用的是Monolithic。在這種體系結構中,內核的所有部分都集中在一起,而且所有的部件在一起編譯連接。這樣雖然能使系統的各部分直接溝通,有效地縮短任務之間的切換時間,提高系統的響應速度和CPU的利用率,且實時性好;但在系統比較大時體積也比較大,與嵌入式系統容量小、資源有限的特點不符。而另外一種內核體系結構MicroKernel, 在內核中只包括了一些基本的內核功能,如創建和刪除任務、任務調度、內存管理和中斷處理等部分,而文件系統、網絡協議棧等部分都是在用戶內存空間運行。這種結構雖然執行效率不如Monolithic內核,但大大減小了內核的體積,同時也方便了整個系統的升級、維護和移植,更能滿足嵌入式系統的特點需要。為此,要使嵌入式Linux的應用更加廣泛,若將Linux目前的Monolithic內核結構中的部分結構改造成MicroKernel體系結構,可使得到的Linux既具有很好的實時性,又能滿足嵌入式系統體積小的要求。

另外,Linux是一個需要占用存儲器的操作系統。雖然這可以通過減少一些不必要的功能來彌補,但可能會浪費很多時間,而且容易帶來很大的麻煩。許多Linux的應用程序都要用到虛擬內存,這在許多嵌入式系統中是沒有價值的。所以,并不是一個沒有磁盤的Linux嵌入式系統就可以運行任何Linux應用程序。

    (3)完善Linux的集成開發環境

提供完整的集成開發環境是每一個嵌入式系統開發人員所期待的。一個完整的嵌入式系統的集成開發環境一般需要提供的工具是:編譯/連接器、內核調試/跟蹤器和集成圖形界面開發平臺。其中的集成圖形界面開發平臺包括編輯器、調試器、軟件仿真器和監視器等。在Linux系統中,具有功能強大的gcc編譯器工具鏈,使用了基于GNU的調試器gdb的遠程調試功能,一般由一臺客戶機運行調試程序調試宿主機運行的操作系統內核; 在使用遠程開發時還可以使用交叉平臺的方式,如在Windows平臺下的調試跟蹤器對Linux的宿主系統做調試。但是,Linux在基于圖形界面的特定系統定制平臺的研究上,與Windows操作系統相比還存在差距。因此,要使嵌入式Linux在嵌入式操作系統領域中的優勢更加明顯,整體集成開發環境還有待提高和完善。

5 嵌入式Linux的發展及應用前景

第9篇

關鍵詞:Linux;操作系統;軟件測試;軟件工程;系統分析

中圖分類號:G642 文獻標識碼:B

1引言

世界經濟正在進入知識經濟形態,信息產業是知識經濟的支柱產業,其中軟件產業具有很高的戰略地位,是我國在知識經濟時代的戰略制高點和信息產業圖強的重點,軟件產業對于推動國民經濟發展、優化產業結構、保證文化不受侵蝕、對出口創匯具有重大意義。

近幾年,Linux發展迅速,國內Linux產業也在高速推進中,國外企業集團包括IBM、HP、Intel、Oracle、DELL、Sun、RedHat、Novell等現都是讓Linux回歸到商業路途陣營中的重要推進者,不管他們是以Linux為主業,還是將其作為一種戰略投資。2005年以后的市場容量更是極速增長,Linux商業陣營已經初具規模。這些國際知名企業紛紛投入巨資在其全球研發中心建實驗室和與高校聯合組建其實驗室。

從技術趨勢看,操作系統實驗室日益普及,軟件工具、平臺、環境開始廣泛使用,對軟件開發過程的研究開始轉向對軟件評測過程的研究,基于軟件質量評測受到廣泛關注,成為主要技術熱點,開放性、標準化成為主要潮流。這些技術趨勢反映出信息市場的需求,在我國軟件實驗室及軟件產業的發展中應予以高度重視。

2操作系統實驗室重要性分析

“Linux操作系統實驗室”是軟件實驗室中最基礎和重要的實驗室。建設“Linux操作系統實驗室”主要致力于Linux相關技術研究,目的是為中國廣大Linux軟件產品創新提供一個開放的實驗和資源平臺,為Linux軟件產品的開發、測試、教育、認證等提供全面的技術支持。

建設“Linux操作系統實驗室”,是順應全球Linux發展趨勢,加速培養Linux產業急需的人才,也是Linux各類產品誕生的搖籃。通過建設“Linux操作系統實驗室”,可以開發、評測、認證出具有自主知識產權的操作系統軟件,并實現相應的技術要求,通過成果轉化,進行規模化和產業化的生產、銷售和技術服務,促進我國基礎軟件、應用軟件的研發、生產、銷售、教育培訓整個信息產業鏈的發展。“Linux操作系統實驗室”建設將以安全性、可靠性、高效性、自主及開放性贏得廣闊的前景,將為我國信息產業的飛速發展和GDP的增長做出更大貢獻。

建設“Linux操作系統實驗室”有利于軟件產業的發展,成為軟件產業及人才的基礎設施,成為一種公共技術服務平臺。實驗室本著發展民族軟件事業的精神,根據任務要求,開放思想、創新研究方法,本著消化吸收國內外同類先進技術、嚴謹工作、積極開拓的精神,在設計、開發、使用過程中堅持技術先進、功能適用、操作簡單、性能高效的原則,不斷創新。

3操作系統實驗室職能分析

操作系統實驗室計劃設計如下職能:

(1) 開發、測試和認證服務

 提供Linux操作系統開發及底層應用相關平臺,建立開源技術資源數據庫。

 提供Linux軟硬件可靠性、兼容性測試和認證服務。

 提供基于Linux的應用系統測試服務(性能、功能測試等)。

(2) 咨詢服務

 實驗室將為電子政務、電信、金融、能源、教育等重點行業提供基于Linux的行業解決方案咨詢(包括系統架構設計、技術選型、項目實施監理等)。

 供Linux技術情報。

(3) 培訓服務

實驗室將提供中高級Linux技術培訓,培養高級Linux技能型人才。

 Linux系統開發高級培訓

 Linux系統開發中級培訓

(4) 協同開發服務

 為企業提供先進的協同開發環境,幫助企業建立新的外包、監理和離岸開發的工作模式;

 為企業和開源社區架起溝通的橋梁,為優秀的開源項目在企業中牽線搭橋,促進商業化,也為企業尋找新的利潤增長點。

4操作系統實驗室的技術特征分析設計

(1) 安全、穩定的內核分析設計

“Linux操作系統實驗室”以單體內核為基礎,并引入模塊化機制,將文件系統、驅動程序、網絡協議等用模塊方式予以支持,從而分析操作系統達到了怎樣的性能,具有怎樣的靈活性。

(2) 優化內存管理,操作系統宕機分析設計

“Linux操作系統實驗室”劃分用戶空間和內核空間,用戶程序有很多的地址空間可供使用。同時采用內存分頁技術,支持4K和4M(PAE方式下為2M)兩種大小的內存頁面,并可以用參數指定部分內存使用大頁面方式而另外一部分使用小頁面方式,適應系統中不同應用的特點,保證需要大內存的操作系統程序使用大頁面以提高性能,而需要內存不多的各種小操作系統使用小頁面以節省內存,同時內存換頁的技術避免了因為內存管理而出現的數據溢出(即藍屏)現象,測試操作系統藍屏的問題,提升了操作系統的安全和穩定性。

(3) 支持多文件系統格式,異構系統間文件兼容與交換分析設計

“Linux操作系統實驗室”支持的文件系統應是操作系統中最多的(包括NTFS)。當前Linux操作系統支持的日志文件系統有ext3、ReiserFS、JFS(IBM開發)、XFS(SGI開發)、VxFS(Veritas開發),其中JFS/XFS/VxFS由成熟文件系統移植而來,具備高穩定性、高性能和高可靠的特點,獨立開發的加密文件系統模塊,與具體文件系統無關,在各種文件系統上都可以實現細粒度/高強度的加密,并且具備很高的靈活性和易用性。

(4) 完善的網絡環境分析設計

網絡功能分析是“Linux操作系統實驗室”的重要特色,作為Internet網絡技術和異種機連接重要手段的TCP/IP協議就是在原Linux上開發和發展起來的。而TCP/IP是所有Linux不可分割的組成部分。因此,Linux在Internet服務器中占絕對優勢。同時Linux操作系統支持所有常用的網絡通信協議,包括NFS、DCE、IPX/SPX、SLIP、PPP等,提供主機系統,以及各種廣域網和局域網相連接的環境,這也是Linux操作系統具有出色的互操作性(Interoperability)的根本原因。

(5) 支持異步I/O分析設計

“Linux操作系統實驗室”支持異步I/O,且符合POSIX標準,使用POSIX異步I/OAPI開發的操作系統程序在Linux操作系統和其它操作系統之間測試其可移植性。

(6) 多種數據庫支持能力分析設計

由于Linux具有強大的支持數據庫的能力和良好的開發環境,所有主要數據庫廠商,包括Oracle、Informix、Sybase、Postgress等,都把Linux作為主要的數據庫開發和運行平臺。從某方面來講Linux操作系統就是作為強大數據庫的基礎進行開發的,支持能力的測試也很重要。

(7) 完善的開發接口分析設計

“Linux操作系統實驗室”應該為軟件開發人員提供豐富的開發工具,迄今為止,Linux工作站仍是軟件開發廠商和工程研究設計部門主要的工作平臺。有重大意義的軟件新技術的出現幾乎都在Linux上,如TCP/IP、WWW、OODBMS等。Linux操作系統是Posix標準的執行者,且開放源代碼。由于開放源代碼,Linux操作系統才得以高速的發展,更多的應用程序得以在Linux操作系統上開發,更多的功能在Linux操作系統得以實現。這也為Linux操作系統的后續開發提供了強大的后臺支持。

(8) 安全分析,實現災難自動恢復功能設計

目前操作系統安全中,用戶最擔心的問題是主機硬盤出現物理損壞將造成整個工作的癱瘓,“Linux操作系統實驗室”使系統完成聯合文件系統(aufs)的支持,實現了在硬盤出現物理損壞后可立刻通過一張光盤恢復運行整個操作系統的功能,使用戶工作不受到影響,提高系統的可用性。

(9) 創新思維方法,測試兼容Windows應用的運行設計

在應用軟件的兼容問題上,“Linux操作系統實驗室”擺脫傳統思維方法,科學的采用虛擬機技術,使用戶不用修改Windows 的二進制文件,就可以運行,解決以往困擾Linux推廣應用中Office文件不能兼容的測試難點。

(10) 迎合用戶習慣,嵌入桌面環境支持KDE4.2,滿足用戶使用習慣設計

現有用戶基本上都習慣使用微軟提供的視窗界面和操作方法,對此,在使用方法上要積極創新,“Linux操作系統實驗室”要采用了KDE4.2技術,實現視窗模式的用戶界面,使用戶在操作習慣上不需要進行改變,就可以完全掌握操作系統的使用。

(11) 辦公環境支持,完全兼容MS Office文檔格式設計

“Linux操作系統實驗室”在辦公環境方面,改變以往的依靠應用軟件的支持才可以使用Office軟件的問題,預置Office辦公組件,完全支持XML、MS office 下的doc、Excel、ppt文件等格式,集成pdf輸出功能,解決MS Office文檔格式兼容的問題。

(12) 總體性能指標分析設計

“Linux操作系統實驗室”結構的設計,直接影響到其穩定性和可靠性。因為操作系統需要肩負對硬件設備的兼容和對上層應用的支撐,所以系統的穩定性成為衡量操作系統好壞與否的最重要標志。

(13) 實驗室可靠性分析設計

“Linux操作系統實驗室”借助的是類UNIX原理和成熟的技術手段,是能達到大型主機(mainframe)可靠性要求的。它將在大中型企業中每天24小時、每年365天不間斷地運行,需要極高的可靠性。

(14) 實驗室可伸縮性分析設計

“Linux操作系統實驗室”不僅有筆記本電腦、PC、工作站,甚至小型機,而且能在所有主要CPU芯片搭建的體系結構上運行。此外,由于“Linux操作系統實驗室”要很好地支持SMP、MPP和Cluster等技術,使其可伸縮性又有了很大的增強。系統能支持的SMP,CPU數要達到幾百甚至更多個,MPP系統中的節點甚至要超過1024個,支持的異種平臺Cluster技術也將投入使用。它的伸縮性遠遠超過了傳統操作系統實驗室所能達到的水平。

(15) 實驗室開放性分析設計

開放性是“Linux操作系統實驗室”最重要的本質特性。由于開放系統深入人心,幾乎所有系統宣稱自己的產品是開放系統,確實每一種系統都能滿足某種開放的特性,如可移植性、可兼容性、可伸縮性、互操作性等。但所有這些系統與開放系統的本質特征相去甚遠,只有遵守GPL協議,及時公布新產品源代碼,使開放性更加充分也更符合開放系統的要求。

(16) 實驗室安全性分析設計

“Linux操作系統實驗室”的設計參考Linux的體系結構,在安全性及代碼結構安全性上,相對于Windows操作系統來說更勝一籌。首先,病毒代碼不可以在“Linux操作系統實驗室”上存在并破壞系統,因為無論是正常的代碼還是病毒代碼,都需要權限來運行,病毒代碼將無法獲得足夠的權限來進行感染和破壞工作。“Linux操作系統實驗室”對于病毒這種形式的破壞要具備免疫力,可以在測試期內減少大量的維護費用。其次,“Linux操作系統實驗室”完全開放的模式,可以在極短的時間內獲得足夠的用戶反饋,并及時修補安全漏洞。

(17) 實驗室兼容性分析設計

“Linux操作系統實驗室”可以使用在所有的硬件架構之上,從IBM的Z系列大型機到個人手中的移動電話。而在主流的企業級計算架構中,“Linux操作系統實驗室”應該支持IA32、IA64、X86-64、IBM Power這些所有的計算平臺,可以有Sun Sparc、HP小型機和Alpha計算機,它的兼容性比Windows操作系統主機更加強大,各個廠商也必將看中這一點,開發出更多的驅動程序和應用軟件以適應快速的發展。

5發展方向與探討

隨著操作系統開發領域的應用和不斷發展,操作系統實驗室也由最初各種單機擴展到了針對操作系統半成品甚至過程產品的全過程網絡測試,這是對操作系統測試的一種必然發展趨勢。操作系統實驗室也會隨著這一思想,不斷地擴展到產品各個生命周期中去,這將使操作系統的版本升級工作更加順利,這也是我們以后需要進一步研究的內容。

參考文獻:

[1] Daniel Bovet. 深入理解Linux內核[M]. 3版. 北京:中國電力出版社,2007.

[2] 趙炯. Linux內核完全剖析-基于0.12內核[M]. 北京:機械工業出版社,2009.

[3]Jonathan Corbet. Linux設備驅動程序[M]. 3版. 北京:中國電力出版社,2005.

[4]Jon Masters. Linux高級程序設計[M]. 北京:人民郵電出版社,2008.

[5] 朱少民. 全程軟件測試[M]. 北京:電子工業出版社,2007.

[6] 于秀山. 軟件測試新技術與實踐[M]. 北京:電子工業出版社,2006.

[7] William E.Perry. 軟件測試求生法則[M]. 北京:清華大學出版社,2004.

第10篇

關鍵詞:嵌入式操作系統 Linux

中圖分類號:TP316.6

文獻標識碼:A

文章編號:1002-2422(2010)03-0134-02

嵌入式系統是以應用為中心,以計算機技術為基礎、軟件硬件可裁剪、適應應用系統。對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。是集軟硬件于一體可獨立工作的計算機系統,通常是更大系統中一個完整的部分。嵌入式系統開發包括硬件設計、軟件基礎平臺的構建、應用開發等諸多步驟,是一項復雜的工作。

1Linnux系統

1,1系統特點

Linux源代碼的開放性為嵌入式操作系統應用提供了非常廣闊的前景,將Linux應用于嵌入式系統開發環境中已十分廣泛。

Linux系統的主要特點:

(1)Linux系統是模塊化結構且內核完全開放。

(2)強大的網絡支持功能。

(3)Linux具有廣泛的硬件支持特性。

(4)較強的可移植性。

(5)模塊化程度高。

(6)源碼公開。

(7)安全性及可靠性好。

(8)與UNIX完全兼容。

Linux系統的主要功能:

(1)存儲管理。

(2)進程管理。

(3)文件系統。

(4)進程間通信,

1,2開發平臺

系統硬件平臺主要有現在流行的Intel公司的Stron-gARM系列、Motorola公司的DragonBall系列、NEC公司的VR系列和Hitachi公司的SH3、SH4系列等。

而系統軟件操作平臺由于受嵌入式系統硬件的限制。通常只具有極少的硬件資源。如主頻較低的CPU、較小的內存、小容量的固態電子盤芯片DoC或DoM替代磁盤等。

1,3開發工具

(1)交叉編譯環境,基于GUN工具的Linux可以有基于ARM體系結構的編譯器、鏈接器、調試器以及實用程序。

(2)交叉編譯和鏈接。將編寫好的嵌入式軟件經過交叉編譯和交叉鏈接后通常會生成兩種類型的可執行文件,可用于調試的可執行文件和用于固化的可執行文件。

(3)NP3輔助開發環境建立。主要依據宿主機和目標板的設計原則,實現開發環境的建立。

1,4系統主要缺點

(1)linux需要使用“指令列”的終端機模式進行系統的管理。

(2)沒有特定的支持廠商。

(3)圖形接口作的還不夠好。

(4)linux在系統內核的實時性方面不足,具有較高的吞吐量。

2基于Linux嵌入式系統的體系結構

根據國際電氣和電子工程師協會的定義,嵌入式系統是“控制、監視或者輔助設備、機器和車間運行的裝置”,其體系結構如下:

(1)嵌入式處理器,目前常用的嵌入式處理器可分為低端的嵌入式微控制、中高端的嵌入式微處理器、用于計算機通信領域的嵌入式DSP處理器和高度集成的嵌入式片上系統。

(2)嵌入式設備,目前常用的嵌入式設備按功能可以分為存儲設備、通信設備和顯示設備三類。

(3)嵌入式操作系統。主要包括兩個操作系統,一類是面向消費電子產品的非實時系統,這類設備包括個人數字助理、移動電話、機頂盒等;另一類則是面向控制、通信、醫療等領域的實時操作系統,如WindRiver公司的VxWorks和QNX系統軟件公司的QNX等。

(4)嵌入式應用軟件。嵌入式軟件就是基于嵌入式系統設計的軟件,也是計算機軟件的一種,同樣由程序及其文檔組成,可細分成系統軟件、支撐軟件、應用軟件三類,是嵌入式系統的重要組成部分。嵌入式應用軟件和普通應用軟件有一定的區別,不僅要求其準確性、安全性和穩定性等方面能夠滿足實際應用的需要,而且還要盡可能地進行優化,以減少對系統資源的消耗,降低硬件成本。

3基于Linux嵌入式系統的軟件開發方法

嵌入式系統的軟件常用的開發模式是宿主機一目標機模式。主要以交叉編譯工具環境為基礎,研究嵌入式系統的軟件開發方法。宿主機作為編譯Linux內核以及上層的各種應用程序的編程平臺,使應用程序能夠運行在嵌入式目標板上,負責項目管理以及燒寫系統內核等工作。交叉編譯工具環境主要由binutils、gee和glibc等幾個重要部分組成:

(1)binutils包括GNU的鏈接器ld、匯編代碼編譯器as、用來將文件打包重組的ar以及為ar打包的文件建立符號表的ranlib等工具。

(2)GNU是C編譯器。

(3)glibc是GNU的C庫,有時出于減小libc庫大小的考慮,也可以用別的c庫來代替glibc,例如uClibc、di-etlibc和newlib。

4結束語

第11篇

摘要:介紹了如何制作一個基于Linux2.6.19內核的小型Linux系統,并將其移植到S3C2410開發板上。內容包括引導程序2.6.19內核、根文件系統的修改、配置、編譯、移植等。

關鍵詞:Linux2.6.19內核;小型Linux系統;S3C2410

引言

ARM9$3C2410微處理器與Linux的結合越來越緊密,逐漸在嵌入式領域得到廣范的應用。目前,在便攜式消費類電子產品、無線設備、汽車、網絡、存儲產品等都可以看到S3C2410與Linux相結合的身影。

S3C2410微處理器是一款由Samsung公司為手持終端設計的低價格、低功耗、高性能,基于ARM920T核的微處理器。它帶有內存管理單元(MMU),采用0.18gm工藝和AMBA新型總線結構,主頻可達203MHz。同時,它支持Thumb 16位壓縮指令集,從而能以較小的存儲空間獲得32位的系統性能。

在眾多嵌入式操作系統中,Linux目前發展最快、應用最為廣泛。性能優良、源碼開放的Linux具有體積小、內核可裁減、網絡功能完善、可移植性強等諸多優點,非常適合作為嵌入式操作系統。一個最基本的Linux操作系統應該包括:引導程序、內核與根文件系統三部分。

與Linux2.4內核相比,2.6內核吸收了最新的技術,在性能、可測量性、器件支持和可用性方面有了大幅度提高;支持更多的體系結構、處理器、總線、接口和設備;標準化了內部接口;簡化了擴展或添加新設備的步驟等。

本文著重介紹如何制作一個基于linux一2.6.19內核的小型Linux操作系統,并將它移植到S3C2410開放板上。內容包括交叉編譯環境的建立,引導程序、2.6.19內核、根文件系統的修改、配置、編譯、移植等。

系統的制作移植

建立交叉編譯環境

要移植、開發小型Linux系統,首先要在安裝了RedHat9或更高版本Linux操作系統的主機上配置交叉開發環境。交叉開發是指在開發主機上安裝開發工具,編輯、編譯目標板的引導程序、內核和文件系統,使其能在目標板上運行。

針對本次開發,需要安裝arm-linux-gcc-3.4.1以及armv41-tools工具鏈。在安裝完畢后,切記要將兩者的路徑分別添加到系統路徑SPATH中。

引導程序

對于計算機系統來說,從開機上電到操作系統啟動需要一個引導程序。嵌入式linux系統同樣離不開引導程序,這個引導程序叫做B00tloader。通過這段小程序,可以初始化硬件設備、建立內存空間的映射表,從而建立適當的系統硬件環境,為最終調用操作系統內核做好準備。

vivi是韓國MIZI公司為其ARM9系列產品而研發的Bootloader,小而靈巧,這里選用它作為小型Linux系統的Bootloader。

首先要修改vivi源代碼中的Flash分區信息,新的分區信息。

在vivi源碼arch/s3c2410/smdk.c文件中作出相應的修改。

然后在配置菜單中導入smdk2410的默認配置,編譯成功將在vivi源代碼目錄下生成所需的Bootloader文件,文件名為vivi。

接著,便可把vivi下載到目標板Hash的相應位置。

內核

?修改內核

首先,修改內核源碼linux-2.6.19下的Makefile文件,指定目標代碼類型與編譯器:SUBARCH:=arm CROSS COMPILE:=/usr/usr/lo―cal/arm/3.4.1/bin/arm-linux-。

然后,在linux-2.6.19/arch/arm/mach―s3c2410/common-smdk.c中根據表1修改內核中的Flash分區信息。這里提醒讀者,2.6.16(含)以前內核的源碼中沒有Flash分區信息,所以需要增加新的分區信息;而在2.6.17(含)以后內核的源碼中已含Flash分區信息,需要的只是修改分區信息。

內核Flash分區信息必須與vivi的Flash分區信息相一致。因為,vivi的Flash分區中的地址是內核及文件系統下載到Nand flash的真正地址;而內核在啟動時讀的卻是內核Flash分區設定的地址;所以,若兩者不同,則很可能導致不能正常啟動內核或讀取文件系統。

最后,修改linux-2.6.19/drivers/mtd/nand/s3c2410.c,禁止Nand flash差錯檢測:

chip->eccmode=NAND_ECC NONE;。

?內核的配置編譯

在配置菜單中導入內核對smdk2410的默認配置,再在此基礎上選擇所需的功能。如Nand Hash及MTD設備的支持,Cramfs文件系統的支持等。

配置完畢,在終端輸入編譯命令“make”進行編譯。若內核源碼編譯成功,將在linux-2.6.19/arch/arm/boot/下生成內核映像文件zlmage。

最后,在vivi命令提示模式下使用下載命令,將內核映像zImage加載到開發板Flash中的適當地址。

根文件系統

Linux系統中的文件和設備是通過文件系統來組織的。文件系統的存在使得數據和設備可以被有效而透明地存取訪問。一個linux的最簡根文件系統應該包括支持linux系統正常運行的基本內容,包括系統使用的軟件和庫,以及所有用來為用戶提供基本支持的架構和指令。

在根文件目錄rootfs下建立bin、dev、etc、lib、proc、sbin、root、tmp等一系列必備的目錄,把所需的配置文件、動態函數庫放到相應的目錄。采用BusyBox是縮小根文件系統的好辦法。BusyBox以很小的體積集成了最常用的linux命令和應用程序,大大簡化了制作linux根文件系統的過程。

有一點必須指出的是,在2.6.12(含)之前的內核通常是用devfs來管理位于/dev下的所有塊設備和字符設備;但在2.6.13(含)之后的內核已不支持devfs,而轉用udev來管理/dev下的設備,詳見。所以,針對2.6.19內核,要使系統啟動后進入BusyBox控制臺,還需在/rootfs/dev下添加控制臺設備文件:“[root@localhost dev]#mknod-m 600 consolec51”。

目前,linux已經能夠支持幾十種文件系統格式,如常用的Cramfs、Jfss2、Yaffs等。Cramfs是一種只讀的閃存文件系統,可以保護系統的基本設置不被更改。根文件系統就使用Cramfs格式。

使用Cramfs制作工具mkcramfs把根文件目錄制作成映像文件:rootfs.cramfs。

根文件系統制作完成,在vivi命令模式下把rootfs.cramfs下載到Flash的合適位置。

至此,一個基于2.6.19內核的小型Linux系統便成功地制作完畢,并移植到$3C24109t:發板上了。

板子加電后便可看到系統的啟動信息,最終進入BusyBox控制臺。

第12篇

關鍵詞:Linux;操作系統;中職生;新形勢

中圖分類號:TP316.81-4

Linux操作系統是1991年芬蘭大學生Linus在Minix基礎上重新開發的類Unix操作系統,它以安全穩定、開源免費等特點越來越引起社會的重視,美國、印度、日本、臺灣都高度重視Linux操作系統的推廣與應用,我國政府也高度重視,Linux在網絡管理系統、嵌入式系統中應用廣泛。

隨著Linux在國內的普及,企業對Linux人才的需求呈現多元化趨勢。據權威的Linux認證機構red hat公司調查,我國正處在一個Linux的發展關鍵期,瓶頸效應明顯。我國的Linux教育處于初級階段,Linux的使用環境基礎不如Windows,學生學習Linux時間短,前期基礎知識的結構搭建缺少梯度,所學知識無法轉化成實際的崗位技能,如何改變Linux課程的教學格局變得尤為重要和迫切。

1 Linux讓計算機教學步入正軌

計算機技術的發展步入了成熟期,進入了多元化的縱向發展。對中職計算機專業的學生來說,應該掌握基本的計算機原理和理論。但現在的中職計算機教學主要是以微軟可視化產品為主,譬如Windows XP、Office,哪怕是DHCP、DNS等網絡管理也大都只講如何用鼠標點點這兒,指指哪兒,完全變味成了軟件應用的培訓班。這些課主要在講操作,而原理性的東西基本不講,計算機的專業學生,不學習計算機的基本工作原理,就無法培養學生的學習興趣,學生的知識培養有寬度沒深度,造成計算機學生的專業平庸化,學習能力差,學生沒有特長,沒有可持續性的發展,發展前景暗淡,所以說學習Linux是計算機教學本質的回歸。

2 Linux的培養目標

圍繞著學校“煉技能專長,成行家里手”的辦學理念,針對學生的實際情況,對Linux操作系統的培養目標做了如下設定:

(1)以培養學生實際動手能力為宗旨,走“學練結合,強化技能訓練,深化知識理解”的教學路線;(2)針對職校生理論基礎弱、英文功底差的現狀,采用中文版教材,培養學生掌握最基礎的操作系統原理,讓學生掌握基本的Linux操作和基礎編程;(3)培養學生的學習動力,在要求學生完成基本要求的基礎上,培養和鼓勵學生參與操作系統相關的社會需求調研,激發學習興趣,引導學習方向。

3 課程的開設基礎

學習Linux課程之前必須要有一定的專業基礎,這些課程對于學習Linux操作系統起到至關重要的作用。不管學習什么課程,對課程掌握的快慢,往往取決于基礎的搭建,基礎扎實的學生聽老師講一遍就能聽懂,甚至都可以觸類旁通,而沒有基礎的學生聽多少遍都是丈二和尚摸不著頭腦,所以先修的專業基礎課非常重要。同樣對于計算機專業的學生來說,制定良好的課程體系結構,可以使教學達到循序漸進的效果。就Linux操作系統課程來說,他的先行課程情況圖一所示。

4 課程開設的教材選擇

專業課程的書籍種類繁多,水平參差不齊,對于職專的學生來說,教材的選擇是關鍵。一本適合學生的教材可以很好的調動學生學習的積極性,培養學生的學習興趣。教材選擇過易或過難都不好,教材太過粗淺,學生對待學習的態度會很消極,不專心;教材過難,學生對知識的學習就會產生畏懼心里,總是認為自己學不會,職校生太多的失敗經驗,讓他們容易放棄對這門課的學習。

中職生的自學能力不強,因此通俗易懂成為教材選擇的依據,市面上針對中職生的Linux教材較少,內容大都是Linux教材培訓的精簡版,文字過于精練,市面上很少有適合中職生的教材。最后,我選了臺灣Vbird寫的一本《鳥哥的LINUX私房菜:基礎學習篇》。Vbrid是臺灣著名的Linux教學網站的版主,他寫的文章通俗幽默,在大陸和臺灣有很高的人氣,這本教材就是他網站上的Linux教學內容的匯編和整理,比較適合中職學生學習。

5 教育教學的開展

5.1 教學方向的選擇。Linux是一個功能強大的操作系統,國內外專家對Linux教學內容有兩種觀點:一種是基于命令行方式,教給學生管理與維護的命令,認為這是Linux的精華所在。另一種觀點認為基于X桌面,教給學生系統的使用與管理的操作方法,他們認為用這種方式開展教學,學生需要記憶的命令不多,學習難度不大。針對中職學生的自身特點,我選擇了第二種教學觀點為教學方向,在這一階段需要培養學生的學習興趣,類似Windows界面Linux操作系統,讓學生有似從相識的感覺,內心不會有抵觸情緒,上手快,學生有成的就感,學習的積極性也高。

5.2 教學方法

(1)多媒體的使用。Linux操作系統的學習傾向于系統的管理與應用,并不涉及太多的理論及公式,知識點較多,可借助于多媒體進行教學。多媒體教學把枯燥的計算機內容轉化為生動的圖像、交互和視聽媒體,把教學內容直觀化,有利于學生更好地接受知識。(2)任務驅動實驗教學。運用任務驅動教學法于Linux操作系統教學,在形式上是:提出任務師生共同分析完成任務的方法和步驟適當講解或協作學習完成任務實踐交流或歸納。任務設計是關鍵環節,課堂教學中,教師和學生通過創設的問題情景,把所要學習的知識巧妙地隱含在一個個任務當中,根據學生的知識、能力基礎和培養目標,結合任務驅動教學法的項目任務,使學生完成任務,達到掌握知識的目的,選取的項目任務要有實際的應用價值。

在教學過程中,針對大多數學生對實際應用知識比較感興趣的特點,列舉一些現實中的例子,理論聯系實際。在實例分析過程中,以啟發的方式進行,先設置一些如多用戶、訪問權限、文件相互傳輸等問題,促使學生大膽猜想,踴躍回答所提出的問題,并引導學生有一個正確的思路;之后再解答實際工作中是怎樣處理類似問題的。一般要遵循“設疑――思考――提示――解答”的思維過程,通過教學互動,實現課堂上的師生互動,以提高課堂教學的質量。使學生更好地掌握Linux操作系統的知識并能靈活應用。

6 課程考試方式的轉變

過程化成績考核,取代原有的期中、期末考試。學生從小學到初中,學習能力有了一定的差距,如果還一味的用成績評定學生,學生的學習積極性會在學習前就消失。教師對學生的考核放到平日,對學生日常學習的態度評價,學習的方法考評,課后的作業完成質量等多個環節打分,這套考核體系可以很好的幫助學生,建立自我學習體制,培養學生的學習能力。考核制度的轉變,意味著教育方向的調整。

7 課程的不足之處

Linux缺少認證考試。認證考試是激發學生學習興趣,提高教學質量的一項有效措施。社會上關于Linux的認證考試,由于考試費用較高,考試層次較高,中職生的參與空間很小,針對中職生的Linux認證考試還沒有形成。

參考文獻:

[1]苑益軍,張致付.淺談“大型地震資料處理軟件系統”課程的教學與實踐[J].高等教育,2007.

[2]黃麗娜等.Red Hat Linux 9.0基礎教程[M].清華大學出版社,2007.

[3]譚浩強.高等學校計算機基礎教育改革的新階段[J].計算機教育,2003(12).

相關文章