---------------------------第四章--------------------------

/etc/rehat-release  #记录了当前redhat操作系统的版本号,和操作系统的名字

uname 

-a 所有信息

-v 内核版本(redhat什么时候编译的)

-r 显示内核的发行号

-n 显示主机名

-s 内核名

-p 显示cpu平台架构

rpm -qa kerner\*              #查看已安装的内核

yum list installed kernel*  #查看已安装的内核

yum list kernel*               #查看安装的内核包

runlevel                          #查看当前的运行级别 

N 3 上次的运行级别和现在的运行级别 N表示直接启动进到3级别

who -r                          #也可以查看运行级别

运行级别:

系统关机

单用户模式,用于修复系统用到,不需要认证登录

多用户模式,和3区别,不启用nfs服务,网络是启动的

完全字符界面的正常模式

没有定义

图形化模式

重启 

#init N 切换运行级别

sSsingle,                 #单用户读取 /etc/rc.d/rc.sysinit(系统初始化文件)

emergency:                     #救援模式,不读取/etc/rd.d/rc.sysinit

chkconfig --list                #查看系统服务在运行级别下是否启动

chkconfig --level 2345 iptables off #2345运行级别下关闭iptables服务

chkconfig iptables off       #关闭iptables服务

ls /etc/init.d                      #所有系统服务的脚本

service ip6tables status     #查看服务的运行状态,

/etc/init.d/ip6tables  start #也可用绝对路径启动服务 

ntsysv 文本窗口控制服务,默认一般控制当前级别下的服务

ntsysv --level 2345           #控制2345下的服务

 

                                      系统引导过程

加电自检(检测bios)-根据设置(如硬盘启动,cdrom)查找MBR(主引导记录bootloader 定义了如何启动当前硬盘上的操作系统,查找分区表,找到内核)

2 linuxgrub实际上就是一个bootloader,可以引导windowslinuxunixBSD等,grub分二段,第一段放在MBR中,第二段放在操作系统安装所在的分区上,grub引导后出现菜单选择菜单后,根据选择来启动对应操作系统的内核

加载内核 系统在这个时候会在grub的引导之下把内核读到内存中去,并在内存中解开展开,展开后内核要初始化。初始化读取根分区

加载根分区 读取/sbin目录 执行第一个init进程(这个进程是系统的初始化,加载驱动挂载设备等)

加载/init进程的时候需要读取/etc/inittab配置文件 而/etc/inittab 下定义了init怎么工作 /etc/inittab定义了默认运行级别和系统的初始化用到的脚/etc/rc.d/rc.sysinit

/etc/rc.d/rc.sysinit最终实现系统的初始化

7 初始化后进入默认的级别需要的脚本/etc/rc.d/rc3.d (这个文件里所有脚本都是链接都指向/etc/init.d/*) (grub 启动时的 kernel 行给出的运行级别运行 /etc/rcN.d/ 下的脚本,先执行 开头的(按从低到高),再执行S开头的(从低到高))

8系统初始化结束的时候,执行服务文件并执行/etc/rc.d/rc.local

9 启动mingetty 启动一个虚拟终端,给你一个登陆界面

 

开机是由init控制 init/etc/inittab配置文件中定义了开机要执行的脚本

/etc/rc.d/rc.sysinit

init进程调用执行,完成设置网络、主机名、加载文件系统等初始化工作

/etc/rc.d/rc脚本文件

init进程调用执行,根据制定的运行级别,加载或者终止相应的服务

/etc/rc.loal脚本文件

rc脚本调用执行保存用户定义的需开机后自动执行的命令

 

/boot/grub/grub.conf  #grub配置文件

/etc/grub.conf   menu.lst   #都是链接到/boot/grub/grub.conf

/boot/grub/grub.conf配置文件

1 default=0           #默认启动第一个title

2 timeout              #等待用户选择或者编辑时间

3 splashp_w_picpath=    #开机用的图片

4 hiddenmenu      #隐藏菜单

5 title                   #显示在菜单中的名字,定义了不同的内核,和不同的操作系统

  root(hd0,0)         #定义grub查找的硬盘分区

  kernel /vmlinuz-2.6.18-164... #加载内核

  如果boot是单独分区,就写/vmlinuz-2.

  如果boot则写/boot/vmlinuz-2.6

  initrd 小的linux/boot/initrd.2.6.18-e15.img

 

                     GRUB故障

一、手动指定启动所需要的文件使系统正常启动

root (hd0,0)

kernel /vmlinuz- 

initrd /initrd-2.6.18.img

boot

二、boot分区里的文件全部删除(不删boot分区,只删除里面文件)

 rm -rf /boot/*

解决方法:

1设置从光驱启动,进救援模式

输入linux rescue 或按F5进入救援模式

选择美式键盘-不启用网络接口-让系统帮你自动挂载以前的系统,也就是硬盘里的系统-正式进入救援模式

使用#chroot切换到硬盘的系统,具体命令# chroot /mnt/sysp_w_picpath/

5查看/boot下缺少了什么文件#cd /boot &&  ls 发现/boot目录下一个文件也没有

由于boot下面主要是内核和GRUB,所以我们安装这两个东西

6 mkdir /mnt/cdrom     mount /dev/hdc /mnt/cdrom

安装kernel,在安装内核时会自动生成initrd  

 cd /mnt/cdrom/Server/ 

rpm -Uvh --force kernel-2.6.18-53.el5.i686.rpm 

安装完成后内核和initrd已经有了,接下来手动写一个grub.conf  vim /boot/grub/ 

Grub.conf

写完后保存连续推出二次就可以启动了

grub(重新安装)在系统启动的情况下

root(hd0,0)

setup(hd0)

quit

 

                               加密grub菜单

编辑grub.conf grub加密

使用grub-md5-crypt 生成一个加密的密码然后粘贴到配置文件中/boo/grub/grub.conf

vim /etc/grub.conf

password --md5 $2$/X%FKG^$%FL

default=0

..

 

                                 系统服务

独立守护进程

非独立守护服务(超级守护进程)

/etc/xinetd.d             #存放了系统服务的脚本

service xinetd restart #重启xinetd后独立进程才生效

xined                        #超级守护进程

grub-kernel(initrd)->init(/etc/inittab)/etc/inittab

initdefault                 #默认运行级别

sysinit                        #初始化系统

/etc/rc.d/rc N            #运行级别

mingetty tty1-tty6     #提供6个终端登录

/etc/X11/prefdm -nodeamon 图形界面

 

一个内核 +initrd + 必备的模块(/etc/inittab) + init + bash环境 就可以组成一个linux并可以运行

 

内核一般是由内核、以及帮内核提供额外的驱动程序、内核模块组成

kernel object 内核模块,驱动程序一般以ko结尾

内核代码 1000万行 管理硬件,文件系统,进程

内核是模块化设计

kernel core 内核本身只提供了最核心的功能,

/lib/modules/  uname -r`/ 存放了内核版本号的目录,二进制模块,当需要的时候内核就加载模块

/lib/modules/2.6.18-164.e15/ #里面很多目录

/lib/modules/2.6.18-164.e15/kernel/ 目录下面存放了关于文件系统,体系结构,加密解密的,驱动的文件

/boot/vmlinuz-2.6.18-164.e15 #内核文件

lsmod                         #显示当前已加载的内核模块

modprobe 模块名字    #加载新模块

modprobe -r 模块名字 #卸载模块

任何命令都要调用库lib,都要依赖库

ldd /bin/ls  #查看依赖关系,查看一个名字执行过程中需要用的库文件