当前位置:首页 » 操作系统 » 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

热点内容
安卓怎么录屏只录一点 发布:2025-05-19 17:12:39 浏览:520
甘肃移动服务密码在哪里 发布:2025-05-19 17:11:15 浏览:540
java内部类访问外部类方法 发布:2025-05-19 17:10:30 浏览:285
用解压造句 发布:2025-05-19 17:01:55 浏览:341
openwrt编译取消跑码 发布:2025-05-19 16:50:28 浏览:125
知道了宽带账号密码如何连接 发布:2025-05-19 16:49:49 浏览:656
时间轮数据库 发布:2025-05-19 16:45:20 浏览:269
ipad缓存垃圾怎么清理 发布:2025-05-19 16:44:46 浏览:536
视频加解压 发布:2025-05-19 16:35:28 浏览:7
c语言大学教程第六版 发布:2025-05-19 16:04:21 浏览:741