當前位置:首頁 » 操作系統 » hatredlinux

hatredlinux

發布時間: 2023-09-09 01:01:52

linux版本有哪些

Linux三大主流發行版:

1、Debian

Debian是完全由自由軟體組成的類UNIX操作系統,其包含的多數軟體使用GNU通用公共許可協議授權,並由Debian計劃的參與者組成團隊對其進行打包、開發與維護。Debian計劃最初由伊恩·默多克於1993年發起,Debian 0.01版在1993年9月15日發布,而其第一個穩定版本則在1996年發布。該計劃的具體工作在互聯網上協調完成,由Debian計劃領導人帶領一個志願者團隊開展工作,並以三份奠基性質的文檔作為工作指導:Debian社群契約、Debian憲章和Debian自由軟體指導方針。操作系統版本定期進行更新,候選發布版本將在經歷過一定時間的凍結之後進行發布。作為最早的Linux發行版之一,Debian在創建之初便被定位為在GNU計劃的精神指導下進行公開開發並自由發布的項目。該決定吸引自由軟體基金會的注意與支持,他們為該項目提供從1994年11月至1995年11月為期一年的贊助。贊助終止後,Debian計劃創立非營利機構Software in the Public Interest以提供支持並令其持有Debian商標作為保護機構。Debian也接受世界多個非營利組織的資金支持。

基於Debian著名的發行版有:Ubuntu、Knoppix和Deepin

2、Slackware

Slackware是一個Linux發行版,由Patrick Volkerding於1993年創建。Slackware最初基於Softlanding Linux系統,它是許多其他Linux發行版的基礎,也是目前仍在維護的最古老的發行版。Slackware的目標是設計的穩定性和簡單性,並成為最「像Unix一樣」的Linux發行版。它盡可能少地修改上游的軟體包,並試圖不預測用例或排除用戶決策。與大多數現代Linux發行版相比,Slackware不提供圖形安裝過程,也不提供軟體包的自動依賴性解析。它使用純文本文件,只有一小部分shell腳本用於配置和管理。如果不進一步修改,它將引導到命令行界面環境中。由於slackware有許多保守和簡單的特性,因此通常認為它最適合高級和技術性傾向的Linux用戶。Slackware可用於IA-32和x86_64體系結構,帶有到ARM體系結構的埠。盡管Slackware主要是免費的開放源碼軟體,但它沒有正式的bug跟蹤設施或公共代碼存儲庫,版本由Volkerding定期公布。開發人員沒有正式的成員資格過程,Volkerding是發布的主要貢獻者。

基於Slackware著名的發行版有:SUSE Linux

3、Red Hat

Red Hat是美國一家以開發、販售Linux包並提供技術服務為業務內容的企業,其著名的產品為Red Hat Enterprise Linux。1990年代末期,Linux以自由軟體且開放源代碼為號召,試圖挑戰商業且閉源的Windows在操作系統市場的霸主地位之際,Red Hat所推出的Linux系統與軟體集成包Red Hat Linux適時回應了市場的需求,從而奠定了Red Hat在Linux業界的旗手地位。截至2008年,Red Hat仍是提供Linux集成服務的同類企業中規模最大的公司

基於RedHat著名的發行版有:Fedora,CentOS

② 如何解決bus error

在x86+Linux上寫的程序,在PC機上運行得很好。可是使用ARM的gcc進行交叉編譯,再送到DaVinci目標板上運行的時候,出現了Bus error。
出現的位置如下(其中Debug的內容是我在程序中添加的調試信息):
[email protected]:~# arm_v5t_le-gcc -g shit.c
[email protected]:~# ./a.out
Debug: malloc space for the actual data: temp_buf = 0x13118
Debug: in my_recvn()
Debug: nleft = 52
Bus error
打開調試器進行調試:
[email protected]:~# gdb a.out
GNU gdb 6.3 (MontaVista 6.3-20.0.22.0501131 2005-07-22)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show ing" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "armv5tl-montavista-linuxeabi"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) run // 運行程序
Starting program: /home/zpf/a.out
Debug: in get_program_info()
Debug: in conn_server(char *err_buf_ptr)
Debug: gonna create a socket
Debug: gonna fill in the serv_addr structure
Debug: gonna connect to a server
Debug: gonna send LIN_RST
Debug: in my_sendn()
Debug: send 4 bytes to server: 
Debug: gonna receive LIN_RSP
Debug: in my_recvn()
Debug: nleft = 3
Debug: received first 3 bytes from server: 7
Debug: gonna check if 3rd byte is the package type
Debug: received package length = 55
Debug: malloc space for the actual data: temp_buf = 0x13118
Debug: in my_recvn()
Debug: nleft = 52

Program received signal SIGBUS, Bus error. // 在這里出現了錯誤
0x00009624 in alloc_prog_mem (detail_buf=0x13118 "\001\002",
err_buf_ptr=0xbefffc40 "") at shit.c:631
631 g_data_ptr->progtype_num = *(short *)ptr ;
(gdb) print ptr // 查看一下ptr的值
$1 = 0x13119 "\002" // 地址起始是奇數!!!
(gdb) set ptr=0x1311a // 想改一下
(gdb) continue
Continuing.

Program terminated with signal SIGBUS, Bus error.
The program no longer exists. // 可惜程序已經退出
(gdb) quit

其中,g_data_ptr->progtype_num是一個short類型的值。
把強制類型轉換改為用memcpy()寫值之後,再調試
[email protected]:~# gdb test
GNU gdb 6.3 (MontaVista 6.3-20.0.22.0501131 2005-07-22)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show ing" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "armv5tl-montavista-linuxeabi"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) break 626 // 把剛剛的那句強制類型轉換變成內存拷貝
Breakpoint 1 at 0x9630: file test.c, line 626.
(gdb) run
Starting program: /home/zpf/test
Debug: in get_program_info()
Debug: in conn_server(char *err_buf_ptr)
Debug: gonna create a socket
Debug: gonna fill in the serv_addr structure
Debug: gonna connect to a server
Debug: gonna send LIN_RST
Debug: in my_sendn()
Debug: send 4 bytes to server: 
Debug: gonna receive LIN_RSP
Debug: in my_recvn()
Debug: nleft = 3
Debug: received first 3 bytes from server: 7
Debug: gonna check if 3rd byte is the package type
Debug: received package length = 55
Debug: malloc space for the actual data: temp_buf = 0x13118
Debug: in my_recvn()
Debug: nleft = 52

Breakpoint 1, alloc_prog_mem (detail_buf=0x13118 "\001\002",
err_buf_ptr=0xbefffc40 "") at test.c:626
warning: Source file is more recent than executable.

626 memcpy(&(g_data_ptr->prog_num), ptr, 2) ; // 在這一句中斷
(gdb) print ptr // 再看看ptr
$1 = 0x1311b "\003" // 還是奇數地址
(gdb) continue // 繼續執行
Continuing.
Debug: sum_progtype = 2 , sum_prog = 3
Debug: gonna malloc space for progtype_ptr
Debug: gonna malloc space for prog_ptr
Debug: in mv_pkg2prog_list()
Debug: gonna set ProgramType program_type_name
Debug: ProgramType program_type_name set OK
Debug: in $ == *ptr, j = 0
Debug: g_data_ptr->progtype_ptr[j].prog_ptr = temp_prog_ptr
Debug: in @ == *ptr, ptr = 0x13126
Debug: temp_prog_ptr->format = *ptr
Debug: temp_prog_ptr->program_id = *(int *)ptr
Debug: gonna set Program program_name
Debug: Program program_name set OK
Debug: finished one loop of while
Debug: in @ == *ptr, ptr = 0x1312f
Debug: temp_prog_ptr->format = *ptr
Debug: temp_prog_ptr->program_id = *(int *)ptr
Debug: gonna set Program program_name
Debug: Program program_name set OK
Debug: finished one loop of while
Debug: gonna set ProgramType program_type_name
Debug: ProgramType program_type_name set OK
Debug: in $ == *ptr, j = 1
Debug: g_data_ptr->progtype_ptr[j].prog_ptr = temp_prog_ptr
Debug: in @ == *ptr, ptr = 0x13142
Debug: temp_prog_ptr->format = *ptr
Debug: temp_prog_ptr->program_id = *(int *)ptr
Debug: gonna set Program program_name
Debug: Program program_name set OK
Debug: finished one loop of while
program type[0]
program_type_id = 1
program_type_name = love
program_num = 2
prog_ptr = 0x131d8
program[0]
program_id = 1001
program_name = you
format = 1
program[1]
program_id = 1002
program_name = me
format = 2
program type[1]
program_type_id = 2
program_type_name = hatred
program_num = 1
prog_ptr = 0x13248
program[0]
program_id = 2005
program_name = kill
format = 5
Debug: gonna return an OK
Debug: Entering send_exit_requstion()
Debug: in conn_server(char *err_buf_ptr)
Debug: gonna create a socket
Debug: gonna fill in the serv_addr structure
Debug: gonna connect to a server
Debug: gonna send EXIT_RST
Debug: in my_sendn()
Debug: send 4 bytes to server: 
Debug: in my_recvn()
Debug: nleft = 4
Debug: gonna return an OK

Program exited normally. // 執行通過了!!!!
(gdb)

總結:
問題總算找到了,就是我企圖在一個奇數地址起始的地方強制類型轉換得到一個short值。
在Intel系列處理器上,可以在任一奇數內存地址儲存任何變數或數組,不會導致任何致命的錯誤影響,只是效率可能會降低。但在DaVinci上,這一點不行。所以必須對大於一個位元組的數據類型小心謹慎,比較安全的方法是使用內存拷貝函數memcpy(),或者使用下面的代替方法:
// 先定義一個聯合體
union {
short short_val ;
char short_byte[2] ;
} myshort ;
// 然後,把程序中本來應該是
// g_data_ptr->progtype_num = *(short *)ptr ;
// ptr += 2 ;
// 這兩句的地方換成下面五句:
myshort.short_byte[0] = *ptr ;
ptr++ ;
myshort.short_byte[1] = *ptr ;
ptr++ ;
g_data_ptr->progtype_num = myshort.short_val ;
// 當然,最簡單的方法是換成下面兩句:
// memcpy(&(g_data_ptr->progtype_num), ptr, 2) ;
// ptr += 2 ;

對於這個問題的進一步探討:
在DaVinci上應該注意內存編址模式的問題。
struct {
char struc_char ;
int struc_int ;
short struc_short ;
long struct_long ;
} struc_val ;
在寬松模式下,盡管struc_char只有1個位元組,struc_short佔2個位元組,但編譯器可能給這兩個變數分別分配了4個位元組,結果整個結構的大小變成了16個位元組,而在編譯器設為緊湊模式時,則正好是11個位元組。根據計算機數據匯流排的位數,不同的編址模式存取數據的速度不一樣。我認為在符合匯流排字長的情況下,效率是最高的,因為只需進行一次匯流排操作。
內存編址模式會影響位元組對齊方式,位元組對齊操作可以解決以下兩個主要的問題:
1.訪存效率問題;一般的編譯器要對內存進行對齊,在處理變數時,編譯器會根據一定的設置將長短不同的變數的數據長度進行對齊以加快內存處理速度。
2.強制類型轉換問題:在x86上,位元組不對齊的操作只會影響效率,但是在DaVinci上,可能就是一個Bus error, 因為它要求必須位元組對齊。
位元組對齊的准則
1.數據類型自身的對齊值:對於char型數據,其自身對齊值為1,對於short型為2,對於int,long,float,double類型,其自身對齊值為4位元組。
2.結構體的自身對齊值:其成員中自身對齊值最大的那個值。
3.指定對齊值:#pragma pack (value)時的指定對齊值value。
4.數據成員、結構體和類的有效對齊值:自身對齊值和指定對齊值中小的那個值。
對於平時定義變數,盡可能先定義長度為4的倍數的變數,然後是長度是2的變數,最後是長度為1的變數。

通過測試,GCC編譯器是按照4位元組對齊存放於內存的。而我還沒有發現更改編址模式的參數。程序如下:
#include

int main()
{
struct {
char struc_char ;
int struc_int ;
short struc_short ;
long struct_long ;
} struc_val ;
char c_char ;
int i_int ;
short s_short ;
long l_long ;

printf("sizeof(struc_val) = %d\n", sizeof(struc_val));
printf("sizeof(c_char) = %d\n", sizeof(c_char));
printf("sizeof(i_int) = %d\n", sizeof(i_int));
printf("sizeof(s_short) = %d\n", sizeof(s_short));
printf("sizeof(l_long) = %d\n", sizeof(l_long));

printf("address of struc_val = %p\n", &struc_val);
printf("address of struc_char = %p\n", &(struc_val.struc_char));
printf("address of struc_int = %p\n", &(struc_val.struc_int));
printf("address of struc_short = %p\n", &(struc_val.struc_short));
printf("address of struct_long = %p\n", &(struc_val.struct_long));
printf("address of c_char = %p\n", &c_char);
printf("address of i_int = %p\n", &i_int);
printf("address of s_short = %p\n", &s_short);
printf("address of l_long = %p\n", &l_long);

return 0 ;
}
測試結果:
sizeof(struc_val) = 16
sizeof(c_char) = 1
sizeof(i_int) = 4
sizeof(s_short) = 2
sizeof(l_long) = 4
address of struc_val = 0xbf885278
address of struc_char = 0xbf885278
address of struc_int = 0xbf88527c
address of struc_short = 0xbf885280
address of struct_long = 0xbf885284
address of c_char = 0xbf885277
address of i_int = 0xbf885270
address of s_short = 0xbf88526e
address of l_long = 0xbf885268

所以對於一個32位的數據來講,如果其沒有在4位元組整除的內存地址處存放,那麼處理器就需要2個匯流排周期對其進行訪問
0x08 | byte8 | byte9 | byteA | byteB |
0x04 | byte4 | byte5 | byte6 | byte7 |
0x00 | byte0 | byte1 | byte2 | byte3 |
對於我剛剛的那個出現Bus error的程序,假設指針ptr剛好是指向了byte3(地址是0x0),然後想進行short強制類型轉換,使用byte3,byte4來構成一個short類型的值,由於第一次匯流排的數據只有byte0,byte1,byte2,byte3,取不到byte4,這在DaVinci板子上,就是一個Bus error了,因為沒有達到邊界對齊。如果ptr指的是byte2(地址0x02),就沒有問題了。因為0x02地址值是sizeof(short)的整數倍。

③ 基於Linux開發的操作系統有哪些

linux為內核的系統有16款,下面是詳細情況。
1、Kubuntu
Kubuntu 是一個Ubuntu 操作系統,它使用的是KDE plasma Desktop 而非Unity 圖形環境。
2、Ubuntu
Ubuntu是一款快速、安全、簡單易用的Linux操作系統,它在全世界有成千上萬的擁躉。
3、openSUSE
openSUSE 是一款免費、穩定、易用、基於Linux的多功能操作系統。 它適用於PC、筆記本以及伺服器。有
4、Mandriva Linux OS
Mandriva Linux是來自Mandriva的終極版Linux操作系統。它是三種技術融合的結晶:Mandriva,Conectiva和Lycoris。
5、Debian operating system
Debian Linux也是一款免費的操作系統。Debian使用Linux內核(一個操作系統的核心),但大部分基本操作系統工具來自GNU項目,因此得名GNU / Linux。
6、Elive Linux operating system
Elive是一個完整的基於Linux的操作系統,是替換那些昂貴的操作系統的最佳選擇。Elive建立在Debian GNU / Linux基礎之上,並允許用戶自定義以滿足個人需要。界面清爽美觀,硬體需求較小。只需一個介面就能使舊電腦瞬間高能。
7、Fedora Linux operating system
Fedora是一個基於linux的操作系統,展示最新的免費開源軟體。Fedora免費供任何人使用,修改和發行。
8、Sabayon Linux
Sabayon Linux是一款先進的、可伸縮的和社區驅動的Linux操作系統。它努力為用戶提供最好、最完整的計算體驗。
9、FreeBSD
FreeBSD是一款面向現代伺服器、台式機和嵌入式計算機平台的操作系統。FreeBSD提供先進的網路、驕人的安全特性和世界一流的性能。
10、PC-BSD Linux Operating system
PC-BSD是一款易用性很強的Linux操作系統。如同其他任何現代系統,你可以聽你喜歡的音樂,看你喜歡的電影,辦公,處理文檔,安裝你喜歡的各種應用程序,一切只需一鍵就能安裝好。
11、DesktopBSD
DesktopBSD致力於為台式機用戶提供一個穩定且強大的Linux操作系統。DesktopBSD結合了FreeBSD的穩定性和KDE的實用性和功能。
12、Syllable Desktop
Syllable Desktop是一個完整的操作系統。它易於使用,功能強大,佔用空間小,響應迅速。
13、GeeXboX
GeeXboX是一款免費開源的,用作媒體中心(Media-Center)的Linux distribution,用於嵌入式設備和台式電腦。
14、麒麟系統
銀河麒麟(Kylin)是由國防科技大學、中軟公司、聯想公司、浪潮集團和民族恆星公司合作研製的開源伺服器操作系統。此操作系統是863計劃重大攻關科研項目,目標是打破國外操作系統的壟斷,研發一套中國自主知識產權的伺服器操作系統。
15、Red Hat
Red Hat公司發布的面向企業用戶的Linux操作系統。
16、Centos
Centos是Linux發行版之一,它是來自於Red Hat Enterprise Linux依照開放源代碼規定釋出的源代碼所編譯而成。

④ 基於linux的系統有哪些

linux為內核的系統有多款:
1、Kubuntu
Kubuntu 是一個Ubuntu 操作系統,它使用的是KDE plasma Desktop 而非Unity 圖形環境。
2、Ubuntu
Ubuntu是一款快速、安全、簡單易用的Linux操作系統,它在全世界有成千上萬的擁躉。
3、openSUSE
openSUSE 是一款免費、穩定、易用、基於Linux的多功能操作系統。 它適用於PC、筆記本以及伺服器。有
4、Mandriva Linux OS
Mandriva Linux是來自Mandriva的終極版Linux操作系統。它是三種技術融合的結晶:Mandriva,Conectiva和Lycoris。
5、Debian operating system
Debian Linux也是一款免費的操作系統。Debian使用Linux內核(一個操作系統的核心),但大部分基本操作系統工具來自GNU項目,因此得名GNU / Linux。
6、Elive Linux operating system
Elive是一個完整的基於Linux的操作系統,是替換那些昂貴的操作系統的最佳選擇。Elive建立在Debian GNU / Linux基礎之上,並允許用戶自定義以滿足個人需要。界面清爽美觀,硬體需求較小。只需一個介面就能使舊電腦瞬間高能。
7、Fedora Linux operating system
Fedora是一個基於linux的操作系統,展示最新的免費開源軟體。Fedora免費供任何人使用,修改和發行。
8、Sabayon Linux
Sabayon Linux是一款先進的、可伸縮的和社區驅動的Linux操作系統。它努力為用戶提供最好、最完整的計算體驗。
9、FreeBSD
FreeBSD是一款面向現代伺服器、台式機和嵌入式計算機平台的操作系統。FreeBSD提供先進的網路、驕人的安全特性和世界一流的性能。
10、PC-BSD Linux Operating system
PC-BSD是一款易用性很強的Linux操作系統。如同其他任何現代系統,你可以聽你喜歡的音樂,看你喜歡的電影,辦公,處理文檔,安裝你喜歡的各種應用程序,一切只需一鍵就能安裝好。
11、DesktopBSD
DesktopBSD致力於為台式機用戶提供一個穩定且強大的Linux操作系統。DesktopBSD結合了FreeBSD的穩定性和KDE的實用性和功能。
12、Syllable Desktop
Syllable Desktop是一個完整的操作系統。它易於使用,功能強大,佔用空間小,響應迅速。
13、GeeXboX
GeeXboX是一款免費開源的,用作媒體中心(Media-Center)的Linux distribution,用於嵌入式設備和台式電腦。
14、麒麟系統
銀河麒麟(Kylin)是由國防科技大學、中軟公司、聯想公司、浪潮集團和民族恆星公司合作研製的開源伺服器操作系統。此操作系統是863計劃重大攻關科研項目,目標是打破國外操作系統的壟斷,研發一套中國自主知識產權的伺服器操作系統。
15、Red Hat
Red Hat公司發布的面向企業用戶的Linux操作系統。
16、Centos
Centos是Linux發行版之一,它是來自於Red Hat Enterprise Linux依照開放源代碼規定釋出的源代碼所編譯而成。詳細介紹可查看《Linux就該這么學》。

⑤ linux各版本的區別

他們沒有實質性的區別(都是linux,用的都是linux的內核)

但是各個版本之間還是有差異的,我和你簡單的說一下吧
ubuntu(有奔頭)是德國的,他相當與dan(大便)的進化(或是衍生)版本,他的平均更新時間為6個月,比dan的快很多(dabian的更新一般在2年左右),他的安裝文件是deb的包文件(和dan的一樣),他的維護方式是由社區維護的。(我也用這個版本的linux,ubuntu6.06lts)現在最新的版本已經出到ubuntu6.10了。ubuntu有兩個版本,一個是使用的gnome桌面,另一個是用的kde桌面(kubuntu)但是其他東西都一樣的,除了界面和一些軟體外。

FC5全稱叫federo cole,他和redhat的linux版本差不多,他吏屬於redhat公司,redhat在出到9.0後就宣布停止redhat10的開發了,在這個之後redhat就推出兩種版本的linux,之一就是FC,他是由社區進行維護的,而redhatAS是由redhat公司進行維護的。FC5、FC6(最新版本的FC)和redhatAS他們的安裝文件用的是rpm的包文件,他們的默認桌面使用的都是gnome

redflag是國產的linux,他是國內比較穩定,先進的linux版本,他使用的安裝文件也是rpm的包文件,他和redhat在使用上有幾分相似,不過他的默認桌面是kde

lz另外提到的這些也都是linux的版本,不過在實際的生活中使用的可能是不太多,有一些linux的高手會用freeBSD。

建議lz不要太在意linux的版本,因為不管是哪個版本的linux都是有他自己的優勢的,不管lz用好了哪個版本,那你都是一個高手^_^

補充一句:linxu只是一個內核,不是一個操作系統,我們現在使用的linux嚴格來講應該叫GNU/LINUX

熱點內容
des加密畢業論文 發布:2025-01-31 02:57:01 瀏覽:710
ip跨網段訪問 發布:2025-01-31 02:44:42 瀏覽:708
演算法帶頭人 發布:2025-01-31 02:42:25 瀏覽:551
方舟上傳數據 發布:2025-01-31 02:42:25 瀏覽:835
鈴木uy比uu多了什麼配置 發布:2025-01-31 02:34:11 瀏覽:676
蝦米音樂緩存文件夾 發布:2025-01-31 02:34:04 瀏覽:886
主播用什麼我的世界啟動器玩伺服器 發布:2025-01-31 02:32:37 瀏覽:643
做電腦硬體需要哪些配置 發布:2025-01-31 02:30:53 瀏覽:439
小米智能門鎖驗證密碼是多少 發布:2025-01-31 02:30:50 瀏覽:533
oracle和sql區別 發布:2025-01-31 02:27:40 瀏覽:241