一、CentOS 6的开机流程详解
启动流程详解
1、POST:
Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。
2、BootSequence(BIOS):
决定那个磁盘设备是引导加载次序的设备。
3、BootLoader(MBR):
MBR记录一般是在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoder,后 4*16 的 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA。
4、GRUB、加载kernel
kernel自身初始化:
<1> 探测可识别到的所有硬件设备
<2> 加载硬件驱动程序(可能借助于ramdisk加载驱动)
<3> 以只读方式挂载根文件系统
<4> 运行用户空间的第一个应用程序:/sbin/init
5、挂载根文件系统rootfs
以只读方式挂载临时根文件系统
6、运行/sbin/init程序
centos5:
SysV:配置文件:/etc/inittab
CentOS6:
Upstart:配置文件:/etc/inittab, /etc/init/*.conf
CentOS7:
Systemd:配置文件:/usr/lib/systemd/system,/etc/systemd/system
CentOS5、6大概的启动流程步骤
加载BIOS的硬件信息,获取第一个启动设备
读取第一个启动设备MBR的引导加载程序(grub)的启动信息
加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
核心执行init程序,并获取默认的运行信息
init程序执行/etc/rc.d/rc.sysinit文件
启动核心的外挂模块(/etc/modprobe.conf)
Init执行运行的各个批处理文件(scripts)
Init执行/etc/rc.d/rc.local
执行/bin/login程序,等待用户登录
登录之后开始以Shell控制主机
、
二、破解centos5,6 的root口令
在实际生产环境中,管理员有时候会忘记root的密码,而下面讲的是如何破解root的秘密的:
1、重启机子,显示该界面后,直接敲"Esc"键或者敲"e"键
2、在该界面直接选中要启动的"kernel"版本,直接敲"e"键
3、选中kernel启动项,直接敲"e"键进行编辑
4、在该编辑的文本界面下,空格后输入"1"或者"s或S"都是进行单用户模式(也就是root单个用户文本界面模式,无需输入密码),在这里我直接输入"1"键,之后回车,跳回上一级界面
5、发现回到上一级界面后,下面有提示,如何操作,直接敲"b"键就是进入单用户模式了
6、在但单用户模式下属于root权限,直接更改root的密码即可,更改完毕后,无需重启电脑,直接使用命令"init #"(#代表启动级别为:0-6)跳到你想使用的级别下,我这里跳入的是文本界面
7、跳入级别3后,直接键入管理员名称与密码即可登录
总结:此种法则也适用centos5。
三、编写centos5,6的服务脚本
1、直接在启动服务脚本的目录下编辑
2、服务脚本格式
3、服务脚本内容
[root@CentOS6 ~]# cat /etc/rc.d/init.d/testsrv.sh #!/bin/bash # # chkconfig: - 88 12 # description: test service script # prog=$(basename $0) lockfile=/var/lock/subsys/$prog start() { if [ -e $lockfile ]; then echo "$prog is aleady running." return 0 else touch $lockfile [ $? -eq 0 ] && echo "Starting $prog finished." fi } stop() { if [ -e $lockfile ]; then rm -f $lockfile && echo "Stop $prog ok." else echo "$prog is stopped yet." fi } status() { if [ -e $lockfile ]; then echo "$prog is running." else echo "$prog is stopped." fi } usage() { echo "Usage: $prog {start|stop|restart|status}" } if [ $# -lt 1 ]; then usage exit 1 fi case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) usage esac
4、给服务脚本添加执行权限,并将该脚本添加到开机启动级别中
5、将服务脚本设置为开机级别3-5为开启状态,并查看相应的服务(文件名称"S88testsrv.sh"链接指向也就也是新建的服务脚步)
6、服务脚本命名方式
为何命名的数字是88呢,实际是因为新建的服务脚本中的定义的,其中的"chkconfig: – 88 12"各代表的是"-"代表开机所有的级别为"off",如果直接编辑数字表示为"on","88"代表
为开机启动的优先级,"12"表示关机的优先级,两者是类似反比的关机,其中一个大,另一个必然是小的,为何会这样呢,是因为开机中有些服务依赖其他服务的原因,而开机先启动被依赖
的服务,而关机是反之亦然。
7、测试服务脚本
四、作业:
1、每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”
[root@CentOS6 ~]# mkdir /logs #创建需要存放备份的目录 [root@CentOS6 ~]# crontab -e #填写每周2,4,7备份任务 [root@CentOS6 ~]# crontab -l * * * * 0,2,4 /bin/cp -f /var/log/messages /logs/messages-`date \+\%Y\%m\%d` #查看任务
2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
[root@CentOS6 ~]# crontab -e #新增每两个小时备份任务 crontab: installing new crontab [root@CentOS6 ~]# crontab -l * * * * 0,2,4 /bin/cp -f /var/log/messages /logs/messages-`date \+\%Y\%m\%d` * 2 * * * /bin/egrep '^[S|M]' /proc/meminfo >> /tmp/meminfo.txt [root@CentOS6 ~]#
原创文章,作者:Aleen,如若转载,请注明出处:http://www.178linux.com/45516