1.post加电自检,将BIOS映射进CPU可以查找的线性地址空间
2.BIOS中设置了启动次序,去找对应设备的MBR
3.bootloader根据MBR的分区表,查找操作系统所在的分区,并加载操作系统的内核;此时将内核装载入内存,在内存 中解压缩
4.kernel 装载驱动,识别硬件
5.kernel 访问initrd
6.启动init /sbin/init
####################################
ldd /path/to/somefile 查看二进制文件所依赖的库
####################################
initrd 红5 小根 (内核跳小根,小根跳大根) 因为kernel不能直接访问init
initramfs 红6 小根
####################################
/etc/inittab控制运行级别 0-6
0:halt
1:single user mode 直接以管理员身份切入
3:正常模式,文本文字界面。
5:图形终端模式
6:重启
###################################3
详解启动过程
bootloader 位于MBR当中
linux中常用的bootloder
LILO:不能识别8G以上的文件系统
GRUB: 装载MNR当中,引导操作系统
stage1:grub第一阶段存在MBR中,用于引导stage2
stage1_5:识别常见的不同的文件系统的
stage2:/boot/gtub/ 它的配置文件是grub.conf
############################################################
咱们看一看/etc/grub.conf 里面的内容
default=0 设定默认启动的title编号,从0开始
timeout=5 等待用户选择的超时时长 (就是开机时进bios 点点点)
splashimage=(hd0,0)/grub/splash.xpm.gz grub的背景图
hiddenmenu 隐藏菜单
title ...... 内核标题,或操作系统名称,字符串可自由修改
root (hd0,0) 内核文件所在的设备:对grub而言多有类型硬盘一律为hd,0代表第几个磁盘;后面那个0代表对应磁盘的分区
kernel ... 内核文件路径,及传递给内核的参数
/proc/ 下有很多进程,进程号下面有cmdline 启动进程时所执行的命令
而位于/proc 目录下的cmdline 代表内核的路径
initrd :小根 ramdisk文件路径
####################################################################
如何用管理员身份1级别,不输入密码登录linux
启动linux时 按e 出现选择条条儿之后 再按e ;选择第二项 kernel....按e 输入空格 single
再按回车,返回上一层,再按b 就可以启动,启动之后 passwd修改密码即可
###################################################################
如何设置1级别密码:
vim/etc/grub.conf 在title上一行password 密码
###############################################
如何设置加密密码
grub-md5-crypt 然后输入人看密码 输出鬼看密码
vim/etc/grub.conf 再title上一行password --md5 (上面一行密码)
启动时敲p输入密码,其他没有变化
###############################################
runlevel / who -r 显示当前运行级别
uname -r 查看内核版本号 release号
###############################################
Bootloader坏了如何用grub重新引导
dd if=/dev/zero of=/dev/sda count=1 bs=400
sync
没有关机直接修复:安装grub stage1
1、执行grub
2、grub>键入 root (hd#,0) 内核在哪个分区就是hd#
3、grub>键入 setup (hd#)
4、quit
5、vim /etc/grub.conf 发现没有变化
第二种方式:
1、确保某磁盘有分区,并举例挂载在/mnt路径下的boot目录
2、键入grub-install --root-director=/mnt /dev/hda(指定硬盘)
3、为grub提供配置文件 vim /mnt/boot/grub/grub.cof
4、default=0
5、timeout=5
6、title Fake Linux
root (hd0,0)
kernel /vmlinuz
initrd /initrd.img
##########################################################3
grub的配置文件坏了怎么办
1、重启操作系统
2、grub> find (hd0,0)/ 敲TAB
3、grub> root (hd0,0) 指定root
4、kernel /vmlinuz- 敲TAB补全
5、initrd /initrd-2.6 敲TAB补全
6、boot 回车启动
##############################################################
知识点:kernel如果挂载模块的
init相关内容
##############################################################
下面就该kernel初始化的过程
1、设备探测
2、驱动初始化(可能会从initrd(红6 initramfs)文件中装载驱动模块)
3、以只读方式挂载根文件系统
4、装载第一个进程init (PID:1)
#############################################
/sbin/init: (配置文件/etc/inittab) [红6.0之后变为upstart]
红6上有/etc/init 它是将/etc/inittab这个文件切割成了N片 而红5没有
/etc/init.d是脚本存放的目录
#############################################
inittab中都有什么:
id:标示符; runlevels:在哪个级别运行此行; action:在什么情况下执行此行; process:要运行的进程
例:id:3:initdefault
si:(不写就是在任何级别):sysinit:/etc/rc.d/rc.sysinit
/etc/inittab他都干了什么:
1、设定默认运行级别
2、运行系统初始化脚本
3、运行指定运行级别对应的目录下的脚本
4、设定Ctrl +alt +delete
5、定义UPS电源
6、启动虚拟终端
7、启动图形终端
****************************************************
action大全:
initdefault:设定默认运行级别
sysinit:系统初始化
wait:只要切换到某个级别就执行一次
respawn:一旦程序终止,会重新启动 类似你输入错密码之后 还要你输入
##########################################################
/etc/rc.d/rc.sysinit 这是一个要执行的程序;启动前的大量工作都是它要完成的
一个非常好的脚本,这里咱们详细说一下,它所实现的功能
1、激活udev 和selinux
2、根据/etc/sysctl.conf文件,来设定内核参数
3、设定时钟
4、装载键盘映射
5、启用交换分区
6、设置主机名
7、根据文件系统检测,并以读写方式重新挂载
8、激活RAID和LVM设备
9、启用磁盘配额(限定一个用户最多用多少空间)
10、根据etc/fstab,检查并挂载其他文件系统
11、清理过期的锁和PID文件
########################################################
/etc/rc.d/rc0/1/2/3/4/5/6.d 这也是一个脚本
这个脚本就是实现一个启动、停止服务的功能;自己写的脚本支持启动和停止,也可以连接到这里
这些脚本都连接到他们的父目录/etc/init.d这个目录上 ,因为服务脚本都在这个目录里面。
######################################################
/etc/init.d 下的每一个文件里面都有,这些脚本都是靠这两行成为系统服务
(标识: 这两个前面是有#号的 )
# chkconfig:runlevels定义在哪些级别下默认启动;SS启动的优先次序; KK关闭的优先次序
(当chkconfig命令来为此脚本在rc#.d目录创建连接时,runlevels表示默认创建s*开头的连接,除此之外创建为K*开头的)
(并且S后面的启动优先级为SS后面所表示的数字;K后面的关闭优先次序为KK所表示的数字)
# description
用于说明此脚本的简单功能 ;用反斜线续行
chkconfig --list:查看所有独立守护服务的启动设定
#################################################################
咱们现在添加一个服务:
1、首先写脚本
#!/bin/bash
#
# chkconfig:2345 77 22
# description:Test Service
#
LOCKFILE=/var/lock/subsys/myservice
status() {
if [ -e $LOCKFILE ]; then
echo "Running..."
else
echo "Stoped"
fi
}
usage() {
echo "`basename $0` {start|stop|restart|status}"
}
case $1 in
start)
echo "Staring..."
touch $LOCKFILE
;;
stop)
echo "Stoping..."
rm -f $LOCKFILE
;;
restart)
echo "Restarting"
;;
status)
status
;;
*)
usage ;;
esac
2、将将本复制到/etc/rc.d/init.d下叫做myservice
3、 chkconfig --add myservice 创建连接
4、服务就被加进来了
5、想删除服务 chkconfig --del myservice
6、想修改在2级别为off chkconfig --level 24 myservice off
#################################################################################
如果你不会写脚本,又想开机自动执行一些命令可以在
/etc/rc.d/rc.local 系统最后启动的一个服务
###############################################
xinetd 超级守护进程;它是用来管理瞬时守护进程的,相当于大商场和里面的专卖店
yum install xinetd -y
####################################################################################################################
原文地址:http://10183596.blog.51cto.com/10173596/1691982