---------------------------第四章--------------------------
/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 #也可以查看运行级别
运行级别:
0 系统关机
1 单用户模式,用于修复系统用到,不需要认证登录
2 多用户模式,和3区别,不启用nfs服务,网络是启动的
3 完全字符界面的正常模式
4 没有定义
5 图形化模式
6 重启
#init N 切换运行级别
s,S,single,1 #单用户读取 /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下的服务
系统引导过程
1 加电自检(检测bios)-根据设置(如硬盘启动,cdrom)查找MBR(主引导记录bootloader 定义了如何启动当前硬盘上的操作系统,查找分区表,找到内核)
2 linux中grub实际上就是一个bootloader,可以引导windows,linux,unix,BSD等,grub分二段,第一段放在MBR中,第二段放在操作系统安装所在的分区上,grub引导后出现菜单选择菜单后,根据选择来启动对应操作系统的内核
3 加载内核 系统在这个时候会在grub的引导之下把内核读到内存中去,并在内存中解开展开,展开后内核要初始化。初始化读取根分区
4 加载根分区 读取/sbin目录 执行第一个init进程(这个进程是系统的初始化,加载驱动挂载设备等)
5 加载/init进程的时候需要读取/etc/inittab配置文件 而/etc/inittab 下定义了init怎么工作 ,/etc/inittab定义了默认运行级别和系统的初始化用到的脚本/etc/rc.d/rc.sysinit
6 由/etc/rc.d/rc.sysinit最终实现系统的初始化
7 初始化后进入默认的级别需要的脚本/etc/rc.d/rc3.d (这个文件里所有脚本都是链接都指向/etc/init.d/*) (grub 启动时的 kernel 行给出的运行级别运行 /etc/rcN.d/ 下的脚本,先执行 K 开头的(按从低到高),再执行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 splashimage= #开机用的图片
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设置从光驱启动,进救援模式
2 输入linux rescue 或按F5进入救援模式
3 选择美式键盘-不启用网络接口-让系统帮你自动挂载以前的系统,也就是硬盘里的系统-正式进入救援模式
4 使用#chroot切换到硬盘的系统,具体命令# chroot /mnt/sysimage/
5查看/boot下缺少了什么文件#cd /boot && ls 发现/boot目录下一个文件也没有
由于boot下面主要是内核和GRUB,所以我们安装这两个东西
6 mkdir /mnt/cdrom mount /dev/hdc /mnt/cdrom
7 安装kernel,在安装内核时会自动生成initrd
cd /mnt/cdrom/Server/
rpm -Uvh --force kernel-2.6.18-53.el5.i686.rpm
8 安装完成后内核和initrd已经有了,接下来手动写一个grub.conf vim /boot/grub/
Grub.conf
9 写完后保存连续推出二次就可以启动了
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 #查看依赖关系,查看一个名字执行过程中需要用的库文件