Linux启动流程
计算机启动时,首先进行固件操作firmware(CMOS/BIOS,CMOS是固化在硬件上的程序,BIOS是操作CMOS的管理控制程序),加电自检,即是检测硬件是否连接正常
固件结束之后,将会读取硬盘上的数据,这里首先读取是MBR(Master boot record),其中MBR包括Bootloader(自举程序),Partition table(磁盘分区表),Magic Number(结束标志字)。现在在Linux中广泛运用的是grub,在Windows中叫ntldr。这里grub的作用是载入内核
在CentOS中路径:/etc/grub.conf (这实际上也是一个软链接,链接到/boot/grub/grub.cnf)
在Ubuntu中路径:/boot/grub/grub.cnf
内核有两个作用,一个是启动硬件,另一个就是启动init进程,init进程的PID恒为1,当然也有一个父进程PID为0,这个进程用来进行分配CPU时间做进程切换的内核调度器。init进程会读取配置文件/etc/inittab,并设置系统默认的运行级别
这里介绍两条命令,我们可以用runlevel来查看当前的运行级别,用init或者是telinit来进行运行级别的切换,实际上telinit是init的一个软链接
启动init进程之后,系统会加载/etc/rc.d/rc.sysinit 脚本,完成系统服务程序的启动,如系统环境变量设置,设置系统时钟,加载文件系统等,如果对于任何一个级别都需要启动某个服务的话,那么就可以把脚本写在rc.sysinit 这个文件中,之后再通过/etc/rc.d/rc这个脚本来判断系统的运行级别,用这个运行级别来运行/etc/rc.d/rcN.d中的 脚本(这里N表示运行级别)
实际上在/etc/rc.d/rcN.d目录中的脚本都是软链接,都链接到了/etc/rc.d/init.d目录
服务管理
那么我们如何关闭某个启动的服务呢?有以下几种方法:
1.更改/etc/rc.d/rcN.d目录下文件的文件名,建议是更改大小写,即把K或者是S更改为k或者是s
2.用如下命令来添加软链接,当然也是添加到/etc/rc.d/rcN.d目录中
ln -S
3.chkconfig
4.ntsysv 这个可以更改不同运行级别的启动程序
(chkconfig ntsysv 这两个命令在Ubuntu中是没有的,需要自己apt-get一下)
检测硬件
dmesg | grep eth0
这样可以检测0号网卡,如果没有显示,那么说明内核驱动没有识别0号网卡
启动设置
单用户模式
passwd username
username 为你的用户名,之后键入密码即可
grub密码
passwrod --md5 密文
启动修复
首先我们来看/boot/grub/grub.conf文件(如上图):
root:grub根目录
kernel:内核文件目录
initrd:镜像文件
当我们发生严重错误的时候,我们只能使用光盘修复了(当我们用虚拟机的时候设置CD启动,然后在启动的时候按住F2即可启动到BIOS界面),插入光盘然后键入 linux rescuse,之后进行相应的网卡等设备的手动设置。之后我们的系统被挂在到/mnt/sysimage目录,我们需要用
chroot /mnt/sysimage
命令来更改我们的系统环境
之后我们就可以像往常一样操作我们的系统了,只不过他被挂在到了/mnt/sysimage目录中
在这里我们可以查看/etc/inittab等文件,看它是否正确。