Linux启动过程
按下电源之后进行固件自检(CMOS) GRUB/LILO载入内核initinittab
修改CentOS 5/6的引导配置文件(修改启动界面等待时间、默认使用的内核等参数),vim /etc/grub.conf
修改CentOS 5/6的init配置文件(修改默认使用的运行级别),vim /etc/inittab
查看当前运行级别:直接执行runlevel
Linux的7种运行级别:0,1,2,3,4,5,6
请不要设置运行级别为0或者6,否则就如同我们运行init 0和init 6来关机和重启系统一样,系统会进入死循环。
运行级别:
0关机,等同于init 0
1单用户模式,等同于windoiws的安全模式
2多用户模式,但不启动NFS服务
3多用户模式,一般我们都是用这个模式
4暂时没有使用,你可以自己定制,然后设置为默认模式,例如一些智能设备提供商可能就会自己定制一些应用,然后用模式4来启动定制的Linux。
5图形界面模式
6
重启,等同于init 6或者reboot
查看进程列表ps -le | more
CentOS7下的inittab已经不再使用,具体使用方法可阅读该文件中的说明。
其他知识点:
查看系统时间date
从互联网同步时间给操作系统 ntpdate time.windows.com
从硬件(主板)同步时间给操作系统hwclock -s
从操作系统同步时间给硬件(主板)hwclock -w
更多操作请hwclock –help
手动设置操作系统的时间 date ‘传参数’,具体使用请man date
总结一下Linux的启动过程:
练习:
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/1935.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
评论列表(28条)
grub配置文件真正保存位置是/boot/grub.conf中,/etc/grub.conf只是一个软连接,内核等文件都是在/boot下,/boot目录需要备份。
grub里的参数:
default是定义默认启动的操作系统;
timeout定义启动界面上的倒计时时间;
splashimage定义启动界面的图片;
注意:
splashimage配置中的(hd0,0)表示第一块硬盘的第一个分区。
实际上启动界面上的背景图片的存储位置是/boot/grub,所以此处的(hd0,0)其实表示/boot分区。
背景图片的分辨率最好是640*480,色深最好是14.
可以使用命令concert进行图片的转换,如果使用分辨率非常高的图片,由于启动界面时显卡还没有加载,有可能变成漆黑一片。
hiddenmenu掩藏启动界面上的多操作系统选择菜单;
title定义启动界面的抬头描述;
root定义了根设备,也就是/boot所在的分区;
kernel定义了内核在上述分区中的具体位置;
initrd表示载入镜像文件。
@ag:grub快捷键:
启动界面按e进入编辑行模式,选择kernel行,再次按e,在新界面的最后一行输入1或者s,即可进入单用户模式。之后可进行系统修复、重置密码等操作。
@ag:c直接进入grub的命令行模式;
b表示启动当前菜单项;
d表示删除当前行;
esc可以返回启动界面,取消刚才所做的任何修改。
@ag:按e之后显示的第一个界面就是grub.conf里的最后三行配置。
@ag:选择kernel所在的行,之后输入空格加【0~6】,之后回车可以进入对应的运行级别。单用户模式只有root登录系统并且不需要密码。
@ag:单用户模式如果你坐在电脑面前,就可以进行任何操作,但是服务器所在的机房、一般人无法靠近。
如果是自己的电脑,我们可以给grub设置一个密码,这样即便别人在电脑面前,系统启动的时候也要先输入密码才能进入单用户模式。
设置grub密码的方式有两种,一种是在安装系统的时候就设置,一种是使用命令grub-md5-crypt设置加密的密码或者直接敲md5crypt也能设置grub的密码,然后vi /etc/grub.conf并将上述操作产生的加密按下面的格式插入到title和spashimage中间(必须在此位置才能进行全局设置!!)。
例如:
password –md5 ¥%¥USDHSGJSsdfsdfdsf85866877
@ag:如果/etc/grub.conf配置有错误,则系统启动过程中可能卡住报错或者直接进入grub命令界面,如果没有进入命令界面,可以按c进入命令模式,然后cat /grub/grub.conf文件看下配置有没有问题。
注意此处是cat /grub/grub.conf,而不是/boot目录!!!
如果配置文件有问题,人工参照grub.conf文件录入信息,引导系统启动先。
录入如下四行即可引导系统启动:
root (hd0,0)
kernel …… ro root=LABEL=/ 3(参照cat出来的内容,纠正其中不正确的内容,注意用tab键补全输入信息,以免输入错误!!)
initrd ……
boot
@ag:如果grub没问题,但后续出问题了,则只能考虑使用安装光盘进行linux rescue,操作方法是插入安装光盘,然后设置CMOS启动的时候从光盘引导,然后在安装Linux界面按【F5】,然后在命令行中输入linux rescue,接下来见机行事(注意,程序在提示将要挂载原来的系统到/mnt/sysimage上这一步的时候,需要选择continue)。
@ag:实际工作中,当你已经在服务器旁边的时候,如果grub进不去,那么就尝试rescue模式吧。rescue模式相当于Windows选的windowsPE模式,进入之后按照提示,哪里有问题修复哪里就好了。
安装界面选择【rescue】,然后输入linux rescue,然后一直continue,最后输入chroot /mnt/sysimage进入要修复的系统的命令行中进行操作,操作完毕exit,重启即可。
第一次重启有可能失败,有可能要重启多次!!
父进程死了,子进程叫孤儿进程,子进程会被init进程接管;
子进程死了,父进程叫僵尸进程。
firmware -> boorloader -> kernel -> init -> /etc/inittab -> initdefault -> /etc/rc.d/rc.sysinit -> /etc/rc.d/rc -> /etc/rc.d/rcN.d(N=0到6) -> username/password登录系统 -> login.
@ag:firmware例如pc的cmos和bios
@ag:linux的bootloader主要有lilo、grub两种。
@ag:/etc/inittab主要是控制运行级别的,centos7中已经不采用此配置文件。
@ag:/etc/rc.d/rcN.d中显示有6个tty(终端),按【ctrl + alt + F1~F6】进行切换,虚拟机中需要专门设置快捷键才行。
@ag:显示当前在哪个终端执行命令:tty
回到图形界面:【ctrl + alt + F7】
@ag:/etc/rc.d/rcN.d的脚本是对应启动模式下的启动脚本及关闭脚本,以大写K开头的表示关闭,以大写S开头的表示开启,如果不想某个服务开启,只需要删除或者重命名对应的脚本就行了。例如:S25mysql表示第25个启动的服务是MySQL服务。
@ag:/etc/rc3.d其实是/etc/rc.d/rc3.d的软连接,但是商用UNIX则一般没有这个软连接,而是直接放在/etc/rc3.d下,所以控制启动项建议在/etc/rc3.d里边做。
@ag:/etc/rc.d/init.d包含了各种运行级别的启动服务,如果想手工启动或者关闭某个服务,只需要在该目录下找到对应的服务,直接执行/etc/rc.d/init.d/服务,例如/etc/rc.d/init.d/sshd,系统会告诉你脚本的输入参数。
例如:
/etc/rc.d/init.d/sshd restart
@ag:这些文件都是shell脚本,可以cat简单看一下里边的内容。
@ag:ls -l /etc/rc.d/rc5.d会发现里边的文件都是软连接,都是链接到/etc/rc.d/init.d目录下的shell脚本。
@ag:如果要设置某个服务在linux启动的时候自动启动,通常用四种方法:
1.在/etc/rc.d/init.d/下创建一个对应的shell,然后ln -s /etc/rc.d/init.d/shellName /etc/rc.d/rcN.d/S100shellName;(表示rcN.d下第100个启动的脚本是shellName)
2.chkconfig httpd 2345 on;
chkconfig –list mysql
chkconfig –add mysql;
chkconfig –del mysql;
chkconfig –levels sshd off;
3.直接在/etc/rc.d/rcN.d里边将对应的某个服务move成小写s开头的就行了(系统启动时只识别大写K和S开头的启动项);
4.ntsysv,进入命令模式的图形界面控制启动项目。
ntsysv直接执行,设置的是当前运行级别的启动项;
ntsysv –level 5,设置的是运行级别5的启动项(按空格选中,显示星号表示自动启动,空白表示不启动,按TAB键切换操作位置);
@ag:如果没有ntsysv或者chkconfig,用方法1.
@ag:dmesg显示启动过程中显示的信息,录入现在添加了一块硬盘,系统启动之后无法使用,可以dmesg看下是否报错(驱动不存在、不支持等)。
查看需要的信息:
dmesg | grep eth0
dmesg | grep httpd
dmesg | grep sda
@ag:Linux里所有的标准日志文件都是在/var/log下,标准的日志文件是/var/log/messages文件,该文件存储了linux运行过程中的大多数日志信息,如果执行某个服务不正确,可以查看此文件。
grep syslog /vat/log/messages
@ag:grub最主要的作用就是选择载入哪个内核。
内核可执行文件存放在/boot下,源代码(如果安装了源代码)在/var/lib/linux下,下载内核https://www.kernel.org/
查看进程树的方式:pstree
需要安装psmisc软件包:yum install psmisc