linux不稳定 linux哪个版本好用
大家好,关于linux不稳定很多朋友都还不太明白,今天小编就来为大家分享关于linux哪个版本好用的知识,希望对各位有所帮助!
怎么看系统稳不稳定我linux系统。
最明显的是,经常死不死机(当然,这种情况也可能是由应用程序造成的,不过,如果不是新版本的软件,而是稳定版本的,应用程序本身很少会发生死机现象)。
另外可以下载一些测试内核的软件。
直接看其内核版本号。
再者,根据distribution可以知道其内核是不是稳定,虽然我们要有怀疑的精神,但我们也应该相信distribution。debian和RedHat的内核是稳定的,debian本身就注重稳定性,Redhat是用于服务器的,稳定性肯定重要了;它们使用的内核一般比较旧,但都是经过长期的测试的,稳定性应该没有问题。另外,Ubuntu(基于Debian)和Fedora(基于Redhat)使用的不是太稳定版本,它们都是追求最新的,把最新的应用程序让用户来体验,它们的界面一般都很美(尤其是Ubuntu,最近几个版本大部分时间都花在GUI界面上,有点赶超Windows了),不过,它们的稳定性不敢让人恭维。
另外,最近名气上升比较快的一个版本是Linux Mint,最初它是基于Ubuntu的,但是最近Ubuntu的几个版本一直在搞GUI界面,在实质性功能没有进展,于是,Linux Mint开始基于Debian,准备替换掉ubuntu,2010年底,发布了Linux Mint Debian Edition,不过它是基于Debian Testing版本的,因为它认为Debian Stable虽然稳定,但其中的应用程序太旧了,而且Testing也不是不太稳定,于是就选择了Testing版本。
至于其他几个版本,自认为不太好用。我用过Ubuntu,Debian,Fedora(Redhat要花钱,没用;Centos曾装过,但没装上,不识别ISO镜像文件),Linux Mint,OpenSUSE,Mandriva;另外,曾装过Freebsd,但没有装图形界面,也就没再用。我现在用的是Debian和Linux Mint,感觉Debian很稳定。
linux 开机问题求助
一、BIOS加电自检
当你按电源开关开机时,电脑会首先去启动BIOS(基本输入输出系统),BIOS一般是集成在主板上的.
BIOS的工作
1.检测连接硬件,比如显卡,内存,磁盘等等,检测的目的是以后把这些设备信息提供给操作系统
2.寻找启动磁盘,每一种BIOS都会有开机启动菜单,可以在菜单里设置以哪个设备启动系统
比如:光驱,硬盘,网络等等,这个菜单可以设置多个选项,依照设置次序在设备上寻找启动信息
3.找到了启动硬盘,接着BIOS就会在磁盘上找启动扇区,找到内核启动系统.
1)先试着寻找第一个扇区,也就是主引导记录MBR(Master Boot Record)
2)如果第一个扇区上没有没有存在操作系统,再去寻找标记为BOOT的分区.
不论是MBR还是BOOT分区,存储操作系统的空间都只有446字节;
如果没有在上面提到的位置找到操作系统的内核,那么BIOS就无法继续启动工作.
而我们的内核往往会大于446个字节,存放在磁盘的其他位置上,既然446装不下内核,又为了能顺利的找到放在其他位置上的内核,
人们想出了一个办法就在446字节里写了一个小程序,当BIOS试着启动操作系统时就会执行这个小程序,然后再由小程序来载入其他位置的内核.这个小程序就是启动载入器(boot loader)
二、BOOT Loader
linux的boot loader(上文提到的小程序)常见的有两种:lilo grub
因为lilo存在着一个1024柱面的限制,并且更改了磁盘上的启动信息文件后需要重新启动系统才能同步446字节的内容,因为lilo的缺陷,已经被grub所取代.现在的绝大多数类linux系统都采用grub做boot loader;
grub则没有了lilo各种限制,而且方便到能修改系统文件的启动内容就可以立刻与446内容同步.
那么我们就看看grub的内容它存在于/boot/grub中
GRUB有几个重要的文件,STAGE1、STAGE1.5、STAGE2
STAGE1:它只有512字节,通常放在MBR中,它的作用很简单,就是在系统启动时用于装载STAGE2并将控制权交给它。
STAGE2:GRUB的核心,所有的功能都是由它实现。
STAGE1.5:介于STAGE1和STAGE2之间,是它们的桥梁,因为STAGE2较大,通常都是放在一个文件系统当中的,但是STAGE1并不能识别文件系统格式,
所以才需要STAGE1.5来引导位于某个文件系统当中的STAGE2。根据文件系统格式的不同,STAGE1.5也需要相应的文件,如:e2fs_stage1_5,fat_stage1_5,分别用于识别ext和fat的文件系统格式。它存放于1-63的柱面之间.
引导顺序如下:STAGE1->;STAGE1.5->;STAGE2,
主要的配置文件时 grub.conf
里面选项含义:
title:一个操作系统引动的标头,可以使多个
root:指明所需文件存在于哪个磁盘哪个分区上(hd0,0)表示第一个硬盘,第一个分区,可参考/boot/grub/device.map
kernel:内核文件的名字,并且会有一些加载内核时的参数 or代表以只读方式加载
initrd:包含一些附加的驱动程序
三、内核启动
内核启动后会向bios查询电脑的所有硬件信息,然后自己接手下来管理这些设备,以便提供给linux使用
内核会试着驱动这些设备,这些设备的驱动一部分包含在内核中,叫做静态驱动,一部分以模块的方式(动态)存放文件系统中,由
于此时还未挂载任何文件系统,因此还不能使用文件系统中的模块,这里只能驱动在内核中存在的硬件驱动程序的对应设备.想驱动内核中未包含的硬件驱动就需要加载文件系统.
内核会尝试挂载根文件系统,根文件系统至少包含/etc/bin/sbin/lib/dev这5大目录
他们5个缺一不可.都会导致系统无法启动
根文件系统挂载是以只读方式挂载的,因为这时linux还在启动阶段,并不稳定,避免破坏系统资料
四、启动INIT服务
顺利的挂载了根文件系统后,就会启动init服务
内核会按/sbin/init/etc/init/bin/init顺序寻找init程序,
如果找不到则内核报错这里存在一个参数 init=/bin/sh如果启动时指定了则最后执行/bin/sh
而不会产生内核报错.也被称为快速启动,因为它忽略了很多启动初始化工作.
启动init的目的就是为了初始化系统环境,启动了init就证明了内核已经顺利启动,接下来就由init服务来建立linux使用环境
init做了什么?它会读取/etc/inittab文件,根据这个文件的信息来进行初始化工作.
会执行三个脚本/etc/rc.d/rc.sysinit/etc/rc.d/rc/etc/rc.d/rc.local
rc.sysinit主要的功能用来建立系统的基本环境
启动udev selinux子系统
udev负责产生/dev中的文件,selinux负责增强系统的安全性
设定核心参数 sysctl-p加载/etc/sysctl.conf
设定系统时间将硬件时间设定为系统时间
加载键盘和交换分区 swapon-a-e
设置主机名,挂载文件系统,并将根重新挂载为可读写的.
加载动态驱动模块
USB设备与RAID& LVM
卸载/initrd/目录
rc脚本设置启动级别 linux中有许多不同的启动级别,不同的启动级别会制定不同的服务
根据指定rc的参数会对应执行/etc/rc.d/rc[0-6].d/中的连接脚本文件以S开头的则启动
rc.local前两个脚本都是系统至关重要的脚本,如果我们想在启动过程中放置一些其他程序
应该使用rc.local脚本中因为S99local存在于rc[2-5].d中
三个RC脚本执行完毕后,就会建立虚拟主控制台执行/bin/login就提供了用户登陆界面了
如果是图形 L5级别的话,会启动X window登录界面
所有的启动就都已经完毕
用户环境初始化
输入用户名和密码系统验证,然后会执行
/etc/profile
/etc/profile.d/*.sh$HOME/.bash_profile
/etc/bashrc
$HOME/.bashrc
启动级别
0关机
1单用户
2多用户模式但带网络但不能远程登录
3不受限多用户模式 TUI
4保留
5图形模式
6重新启动
查看启动级别
# runlevel
N 3
N是上次的级别,3是当前级别也就是说机器开机就是3级别
切换级别
init 5
挂载文件系统
/etc/fstab
第一项是要mount的存储装置的实体位置或者用卷标
第二项要挂到哪个目录位置
第三项指定要挂载的系统格式
第四项 mount时要设定的状态,只读或defauls
第五项提供DUMP功能,在系统DUMP时需要BACKUP的标志位,其内定位置是 0
第六项设定开机时文件系统是否要check
除了root的文件系统其必要的check为1其他视需要而定默认是0
LABEL=/boot/boot ext3 defaults 1 2
作者“xudeqiang”
追寻Linux网络的不稳定之谜linux网络时断时续
敏锐的懂网络的Linux用户,以及Linux内核编程者们,都知道网络通信可以变得极其不稳定,比如TCP处理缓慢,无法回复等问题。许多实际的情况下,查找问题的原因非常困难,因为没有明显的假设可供检验,但这并不意味着问题难以解决。
Linux内核程序员们,可以普遍采用相应的调试技术来追寻网络不稳定的症结所在。例如,通过使用可视化调试工具来构建来追查Linux网络问题。此外,开发者还可以使用一些简单的现象溯源分析工具来查找根源(如ethtool),或者查看特定日志,以及使用tcpdump,来查看完整的数据包,还能搭建自己的检测环境,进行诊断。
值得一提的是,还得记住内核会返回不同的错误代码,例如“EONN’,”ENOROUTE”等,它们分别表示不同的问题,这些代码都值得了解。
此外,也可以使用更细粒度的方法。例如,假设网络不稳定表现为TCP连接卡住),那么可以运行一些代码,以抓取一些信息(比如协议栈在现有回话中采取的措施),以及使用Netlink套接字(Netlink Socket),来从内核抓取更多信息,以及确定发生了什么。
下面是一个示例代码,使用Netlink套接字,来从内核抓取TCP信息:
#include
int main(int argc, char*argv[]){
struct nl_sock*socket= nl_socket_alloc();
nl_connect(socket, NETLINK_TCP);
struct nl_msg*msg= nlmsg_alloc();
/* Fill in the message content…*/
int err= nl_send_auto_complete(socket, msg);
/* Handle the response…*/
/* Clean up…*/
nl_socket_free(socket);
return err;
}
尽管有上述工具来解决Linux网络不稳定问题,但关键点在于如何结合工具运用来完成调试和诊断,追寻网络不稳定原因之谜。就此而言,更加可观的是深入研究Linux网络,构建相应的开发环境,找到适当的解决方案,而不是简单的把它当作一个修复——尽管有重要的地方这也是必要的。在这里,不放过任何一个细节都是非常重要的,重新开始研究可能又要花去很多的功夫。