UNIT2 系统初始和服务--开机流程

    1. 开机预览

    (1)BIOS

    (2)MBR

    在硬盘第一个serctor,共512bytes,其中446字节是启动程序。

    (3)kernel主要是加载系统驱动程序,挂载根分区。因此下列目录与根目录在同一分区上

    /

    /etc

    /bin

    /sbin

    /dev

    /lib

    (4)init 是REDHAT中第一个执行的程序

    它会执行下列程序

    /etc/rc.d/rc.sysinit

    /etc/rc.d 和/etc/rc.d/rc?.d/

    /etc/rc.d/rc.local

    X Display Manger

    1. BIOS的初始化
    2. Boot Loader(GRUB是一个例子)

    被安装驱动器的MBR里

    被安装在分区的启动扇区里。

    (1)Boot loader的stage 1 只有446个字节

    (2)stage 2 是从启动分区加载

    例 :下图系统在硬盘上的安装位置及分区

    第一种 情况:从LINUX启动

    系统初始和服务--开机流程_系统

    屏幕剪辑的捕获时间: 2010/5/15 22:57

    Stage 1安装在MBR的前446个字节里

    系统初始和服务--开机流程_开机_02

    屏幕剪辑的捕获时间: 2010/5/15 22:58

    载入后,载入启动分区的stage 2显示GRUB的菜单

    系统初始和服务--开机流程_休闲_03

    屏幕剪辑的捕获时间: 2010/5/15 23:00

    加载KERNEL

    系统初始和服务--开机流程_服务_04

    屏幕剪辑的捕获时间: 2010/5/15 23:01

    第二种 情况,从WINDOWS启动

    (1)先加载MBR的前446字节,即stage 1

    系统初始和服务--开机流程_服务_05

    屏幕剪辑的捕获时间: 2010/5/15 23:03

    (2)第二步,加载stage1后,找到启动分区,加载stage2,显示grub的菜单。

    系统初始和服务--开机流程_开机_06

    屏幕剪辑的捕获时间: 2010/5/15 23:04

    (3)在GRUB菜单中,选择WINDOWS的话,就加载WINDOWS 2003的KERNEL

    系统初始和服务--开机流程_开机_07

    屏幕剪辑的捕获时间: 2010/5/15 23:06

    第三种情况,MBR中写入了SPF DISK开机管理程序

    系统初始和服务--开机流程_开机_08

    屏幕剪辑的捕获时间: 2010/5/15 23:08

    想动LINUX的过程如下

    系统初始和服务--开机流程_休闲_09

    屏幕剪辑的捕获时间: 2010/5/15 23:09

    系统初始和服务--开机流程_服务_10

    屏幕剪辑的捕获时间: 2010/5/15 23:09

    系统初始和服务--开机流程_系统_11

    屏幕剪辑的捕获时间: 2010/5/15 23:10

    1. GRUB和grub.conf (GRUB的全称 是 the Grand Unified Booterloader)

    (1)可以在启动命令行输入命令指令

    在界面上按c,就可以输入命令

    (2)GRUB可以支持以下文件系统开机

    Ext2/ext3

    ReiserFS

    JFS

    FAT

    Minix

    FFS

    (3)提供MD5密码保护

    配置文件为/boot/grub/grub.conf 修改grub.conf的配置,则立即生效

    如查GRUB在MBR被清除,可以使用命令

    /sbin/grub-install /dev/had重新安装

    Grub.conf的内容及语法

    Grub.conf的位置/boot/grub/grub.conf

    注意:磁盘表示方式

    (hd0,0)

    hd0:表示第一个硬盘

    0 :表示每一个硬盘上的第一个分区

    全局设置

    default = 0

    :表示从第一个选项启动,在默认情况下

    Timeout =5

    :表示等待时间为5秒

    spalashimage = (hd0,0)/grub/splash.xpm.gz

    :表示开机图片

    hiddenmenu

    :隐藏开机菜单

    菜单选 项

    Title :是开机菜单的显示文字

    root (hd0,0) :指明kernel等文件在那一个分区上

    kernel /vmliunz-2.6.9.5.EL ro root=LABEL=/ rhbg quiet

    kernel 文件的启动 ro 只读

    Root = LABLE=/ :指明根目录的位置,root参数就是要指明根目录。

    rhbg ; Red Hat graphical boot,图形界面启动;若要文件界面,删除rhbg

    quiet: 出现错误信息不提示。若要显示错误信息提示,则删除quiet

    initrd /initrd-2.6.9-5.EL.img

    这个是包括驱动程序的文件。加载这个文件。

    这些文件kernel , initrd文件的实质是什么?如果去产生他们。

    1. grub管理程序可以执行拿些命令

    c 是命令行

    a 是在kernel这一行加参数

    e 是编辑开机设定

    b可以按编辑好的开机参数进行启动

    kernel 后如果用1 这个参数表示用 user single mode

    kernel /vmliunz-2.6.9.5.EL ro root=LABEL=/ 1

    这条命令的后面的数字,是运行等级的意思

    user single mode ,不用输入linux的密码

    在这个模式下,直接可以使用passwd直接修改root密码

    就可以恢复。

    若生怕用户随便进行GRUB,所以可以使GRUB加上密码

    在grub.conf中加入

    password redhat :redhat是密码\

    启动后就发现,按p输入密码后,才能进行密码,执行上述的步骤

    使用GRUB MD5密码

    在命令行下面执行

    grub-md5-crypt

    系统初始和服务--开机流程_休闲_12

    屏幕剪辑的捕获时间: 2010/5/16 16:22

    产生MD5密码

    然后在配置文件中使用

    password --md5 <加密的密码>

    1. Kernel 初始化

    (1)检测设备

    (2)加载设备驱动

    (3)将根目录以read only 的方式,挂载进来

    (4)执行init程序

    1. init初始化的工作

    其实init是读取/etc/inittab的配置文件

    根据文件要执行下列内容

    (1)决定运行等级

    系统初始和服务--开机流程_休闲_13

    屏幕剪辑的捕获时间: 2010/5/16 16:30

    (2)系统初始化脚本

    /etc/rc.d/rc.sysinit

    (3)根据运行等级的要求,执行对应目录里的脚本

    /etc/rc.d/rc x --&gt; /etc/rc.d/rc5.d下面所有的程序

    (4)设定组合键

    Ctrlatldel

    (5)定义UPS电源动作

    系统初始和服务--开机流程_开机_14

    屏幕剪辑的捕获时间: 2010/5/16 16:52

    上面就是设定,当UPS断电时,关机

    系统初始和服务--开机流程_系统_15

    屏幕剪辑的捕获时间: 2010/5/16 16:53

    如果关机过程中,电源又恢复,则撤消关机动作

    (6)产生6个终端

    (7)如果是5,则会启动X windows环境

    系统初始和服务--开机流程_休闲_16

    屏幕剪辑的捕获时间: 2010/5/16 16:56

    1. Run Levels 运行等级

    0:关机,所以不能设为inittab中,否则一开机就关机

    1,s, emergency:single-user mode 只允许root用户登录

    Level1:init --&gt; /etc/rc.sysinit --&gt;/etc/rc1.d

    Level s : init --&gt; /etc/rc.sysint

    Level emergency init --&gt; some /etc/rc.sysinit

    2:多用户,但没有NFS网络

    3: 完全多用户登录,包括网络,文本模式

    4: 用户自定义,默认情况下与3相同

    5: 多用户图形界面,X WINDOWS,其他与3相同

    6: 重启动。也不能设定在initdefault中

    Run level 特性

    Run level 是使用init的定义来决定使用什么等级

    run level 可以通过以下几个地方来进行设置

    (1)可以在/etc/inittab中设置

    (2)可以在boot loader中转一个参数给kernel(前面已经做过)

    (3)在启动后进入后, 用init <level>

    /sbin/runlevel 显示当前的等级,和前一个运行等级

    1. /etc/rc.d/rc.initsys

    一个脚本,设定一下环境变量

    (1)激活USB等热插拔界面,与selinux

    (2)设定kernel参数,这些参数是在/etc/sysctl.conf

    (3)设定系统时间

    (4)加载键盘图,定义键盘

    (5 )启动swap分区

    (6)设置主机名

    (7)根文件系统的检查与重新挂载

    (8)激活RAID和LVM设备

    (9)启用磁盘配额

    (10)检查和挂载其他文件系统

    (11)清除一些locks和PID文件,即清除开机时的文件。

    1. /etc/rc.d/rc

    就是根据运行等级来启用对应rc.d所对应的目录里的脚本,来决定启用那些服务。

    /etc/rc.d/rcX.d的目录里,S开头的是需要启动的。K开头是关机脚本

    1. Daemon Processes

    其实就是在后台运行的程序,它们提供一些系统的服务

    两种 Daemon

    (1)独立的 standalone

    (2)transient 由xinetd来进行控制

    两者差别是提供服务方式上的差别

    Standalone:服务开启,始终监听,用户请求,服务响应。

    Transient: 服务不是始终开启,用户请求,由xinetd响应,由它去请求相应的服务给用户。

    Netstat -tupln

    standalone分为两种

    (1)开机时直接启动的。

    (2) system V 的Daemon

    EX:httpd

    1. System v 脚本

    每个运行等级定义了可以启动的服务

    每个RUN level 都有相应的目录

    用于系统初始化的脚本都是存放在/etc/rc.d/init.d这个目录里

    对应的run level目录里,都做了相应/etc/rc.d/init.d目录下脚本的符号连接

    链接脚本的名称格式

    每个链接名称分为这个部分

    K 09 ypserv

    kill 缩写 执行的先后顺序

    结束这个服务

    S 08

    要启用相应服务

    默认上,会先执行k ,再执行s

    启动服务是用一个脚本加参数

    例 :

    /etc/rc.d/init.d/httpd start

    /etc/rc.d/init.d/httpd stop

    1. /etc/rc.d/rc.local

    启动完rcX.d的目录脚本后,都会执行rc.local

    系统初始和服务--开机流程_服务_17

    屏幕剪辑的捕获时间: 2010/5/16 23:05

    上图中。S代表启用,99代表最后执行

    修改rc.local这个文件,将2-5运行等级都执行的程序要在rc.local

    1. Virtual consoles

    是init的第四步

    /etc/mingetty tty1

    定义在/etc/inittab的文件中

    切换用 ctrl + alt + F_key

    虚拟终端的设置 文件是/dev/ttyn : n代表编号

    /etc/tty0:代表当前的tty

    tty

    查看当前的tty编号

    Echo 111&gt;tty3

    在redhat里,有以下RED HAT的设置

    12个虚拟终端被定义

    1-6可以登录

    F7:是图形

    f8-f12 :tty8-tty12不允许做登录

    1. 控制服务

    (1)控制预设自动启动

    1) ntsysv : 在虚拟终端也可以使用

    文本的图形界面

    若ntsysv后不加参数,预置只会设置当前运行等级

    若设置其他等级的

    ntsysv --level 35,

    2)chkconfig 可以快速设定

    Chkcofig gpm --level 123 off

    Chkconfig --list | grep gpm

    Chkconfig gpm --list

    查询服务等级

    Ls -l /etc/rc*.d/*.gpm

    可以看到他们开头的脚本都会变为K

    3) system-config-service:这个工具是图形界面,只能在X WINDOW使用。

    (2)手工启动服务

    1. Service 可以立即启动或停止
    2. chkconfig可以立即启动或停止(不对,这个只有在下一次启动后有效,会不会它错了)
    3. System-config-service
    1. 关机

    四条命令可以关机

    shutdown -h now

    halt

    poweroff

    init 0

    例:

    Shutdown -h 22:00 10点关机

    关机会进行同步 sync

    同步是将内存的数据写入到硬盘里

    1. 重启动

    Shutdown -r now

    Reboot

    Init 6

    Ctrl + alt + del(虚拟终端)