Linux之系统启动流程、grub修补、模块管理及内核参数设定
Linux系统启动流程、grub修补、模块管理及内核参数设定runlevel,who-r,chkconfig,grub,grub-install,mkinitrd,dracut,sysctl,lsmod,modinfo,modprobe,depmod,insmod,rmmodLinux系统的组成部份initrdfilesystem模块文件内核的设计流派微内核设计Linux内核的特征linux启动流程示意(内核空间---用户空间)用户空间:内核空间启动步骤1、POST加电自检Bios:Baiscinputandoutputsystem2、BootSequence3、BootloaderGrub的工作原理注意:MBR能辨识基本的硬碟设备红联linux论坛,但不能辨识中级的文件系统,如lvm,raid等Bootloader的类型及使用场景LILO(linuxloader)grub(GrandUniformbootloader)4、加载虚根文件系统(ramfs)5、挂载rootfs6、初始化init进程用户空间启动步骤SysVinit进程的初始化l0:0:wait:/etc/rc.d/rc0--->/etc/rc.d/rcX.d/*对应系统运行级别,开启或关掉系统各服务linux系统编程,如下:tty6:2345:respawn:/usr/sbin/mingettytty6,启动登陆窗口,并复印欢迎界面加载/etc/rc.d/rc.local文件注意:upstart的初始化流程
/etc/inittab(定义了默认的运行级别)-->/etc/init/rc.conf(其中定义了相应的运行级别所要执行对应级别下的服务/etc/rc.d/rcX.d/*,按照命令exec/etc/rc.d/rc$RUNLEVEL命令用/etc/rc.d/rcX.d/*)-->/etc/rc.d/rc.local
================
/etc/inittab文件格式说明process:任务示例
0:0:wait:/etc/rc.d/rc 0 : 意味着去启动或者关闭/etc/rc.d/rc3.d/目录下的服务脚本所控制的服务,所有K开头的要停止的服务,所有S开头的启动。 其中表示优先级,K中数值越小,表示越先关闭,S中数据越小表示越先开启。一般依赖的服务先关闭,然后再关闭被依赖的。或者一般被依赖的服务先启动,依赖的服务后启动
============
运行级别:查看系统运行级别
=========
系统服务类脚本的添加和管理添加一个脚本格式
#!/bin/bash
#
#chkconfig: 2345 50 60 #表示2345开启,其他关闭
#description XXXXX
下面是脚本正文,需要接受至少如下四个参数:
{start|stop|restart|status}
使用chkconfig命令添加服务及管理
=============
chkconfig命令chkconfig--delservice_namechkconfig--listchkconfig2345service_nameonchkconfig2345service_nameoffgrub怎样辨识设备2、识别c盘都为hdgrub的命令行插口自动在grub命令行插口启动系统:
grub> root(hd0,0)
grub> kernel /vmlinuz-version-release ro root=/dev/DEVICE
grub> initrd /initramfs-version-release.img
grub> boot
注意:ro : 表示以只读方式挂载根文件系统
root=/dev/DEVICE : 应该写根文件系统所在的磁盘分区
grub的文件的配置格式/etc/grub/grub.conf
default=0 # 设置默认启动的tile,0表示第一个tile
timeout=5 # 在启动时选择tile时的超时时间
hiddenmenu #是否隐藏启动界面
password --md5 密码串(使用grub-md5-crypt工具加密的密码串)#如果加密,编辑grub时会要求输入密码
title (Centos 6.6) #启动时的菜单名称
root (hd0,0) # 表示kernel的存放位置,hd统一表示为所有硬盘,第一个0表示第一块硬盘,第二个0表示一个分区
kernel /vmlinuz.VERSION.release #kerenl文件的存放路径
initrd /initramfs.VERSION.release.img #initramfs的存放路径
password --md5 密码串 #这个密码加密后,启动相应的内核时,会要求输入密码
#注意:title中的每一行都必须要缩进一个空白字符,当grub损坏时,可以使用"find (h0,0)/"查找目录下的文件,使用TAB键补全,如果有就会列出所有的文件,如果没有,表示(hd0,0)指定有错误,需再查找其他的分区中是否有。
步入单用户模式:自动安装grub的方式自动修补grub引导程序模拟受损mbr修补过程新加硬碟grub命令行启动linuxgrub命令行启动linux,提供直接单独运行bash系统
####创建文件系统并挂载
mke2fs -t ext4 /dev/sdb1
mke2fs -t ext4 /dev/sdb2
mkdir /media/boot
mount /dev/sdb1 /media/boot/
grub-install --root-directory=/media /dev/sdb
cp /boot/vmlinuz-2.6.32-573.el6.x86_64 /media/boot/vmlinuz
cp /boot/initramfs-2.6.32-573.el6.x86_64.img /media/boot/initramfs.img
####grub配置文件信息
vim /media/boot/grub/grub.conf
default=0
timeout=5
hiddenmenu
title (Centos6.6)
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
initrd /initramfs.img
####给根文件系统提供bash和相应的库文件
mount /dev/sdb2 /mnt/
cd /mnt/
mkdir $(ls /) -pv
cp /bin/bash /mnt/bin/bash
ldd /bin/bash
cp /lib64/libtinfo.so.5 /mnt/lib64/
cp /lib64/libdl.so.2 /mnt/lib64/
cp /lib64/libc.so.6 /mnt/lib64/
cp /lib64/ld-linux-x86-64.so.2 /mnt/lib64/
chroot /mnt/
ramfs文件的管理1、mkinitfs命令(Centos5)示例:2、dracut命令(Centos67)示例:内核信息输出的伪文件系统:udev功能
udev目录下的文件
root@zhenping rules.d]# ls /lib/udev/rules.d/
01-log-block.rules 60-persistent-storage-tape.rules 75-cd-aliases-generator.rules 81-kvm-rhel.rules
10-console.rules 60-persistent-v4l.rules 75-net-description.rules 88-clock.rules
10-dm.rules 60-wacom.rules 75-persistent-net-generator.rules 90-pulseaudio.rules
11-dm-lvm.rules 61-mobile-action.rules 75-tty-description.rules 91-drm-modeset.rules
13-dm-disk.rules 61-option-modem-modeswitch.rules 77-mm-ericsson-mbm.rules 95-devkit-power-battery-recall-dell.rules
内核参数调整方式1、配置文件更改(永久有效,但需重新启动后)注意:假如须要更改后的参数立刻有效,需使用sysctl-p命令重读其配置信息加载到内核中。2、使用命令进行更改(临时有效,上次重启后遗失)sysctl命令sysctl-sysctl-configurekernelparametersatruntime示例使用文件系统命令cat和echo设置和查看常见内核参数模块管理lsmod命令lsmod-查看所有系统被装载的模块注意:其是提取/proc/modules文件信息
=========
modinfo命令modinfo-ShowinformationaboutaLinuxKernelmodule其通过/lib/modules/[KERNEL-VERSION]/modules/下的所有文件进行剖析并显示的,默认情况下在内核modules编译安装的时侯,会在其目录下生成所有modules的依赖关系等,完善对应的索引信息
=====
modprobe命令:modprobe-AddandremovemodulesfromtheLinuxKernel示例:modprobe可以自行解决模块与模块的依赖关系,并将依赖的模块也一并启用
====
depmod命令内核模块依赖关系文件的生成工具,系统模块的生成文件路径为:/lib/modules/KERNEL-VERSION/下
======
模块装载和卸载的另一组命令:insmod命令rmmod命令