Linux服务配置及优化

Linux之系统启动流程、grub修复、模块管理及内核参数设定

2016-03-07  本文已影响3134人  魏镇坪

Linux系统启动流程、grub修复、模块管理及内核参数设定

runlevel, who -r , chkconfig ,grub ,grub-install , mkinitrd , dracut ,sysctl ,lsmod ,modinfo , modprobe , depmod , insmod ,rmmod
Linux系统的组成部分
内核的设计流派
Linux内核的特点
linux启动流程示意(内核空间---用户空间)

内核空间启动步骤

1、POST加电自检

Bios : Baisc input and output system

2、BootSequence

3、Bootloader

Grub的工作原理
注意:MBR能识别基本的硬盘设备,但不能识别高级的文件系统,如lvm , raid等
Bootloader的类型及使用场景

4、加载虚根文件系统(ramfs)

5、挂载rootfs

6、初始化init进程

用户空间启动步骤

SysVinit进程的初始化

注意:
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文件格式说明
示例
    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命令

grub如何识别设备

grub的命令行接口

手动在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
修复过程

新加硬盘,提供直接单独运行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 命令(Centos 6\7)
示例:

内核信息输出的伪文件系统:

udev功能

内核参数调整方法

1、配置文件修改(永久有效,但需重新启动后)
注意:如果需要修改后的参数立即有效,需使用sysctl -p 命令重读其配置信息加载到内核中。
2、使用命令进行修改(临时有效,下次重启后丢失)

sysctl命令

sysctl -sysctl - configure kernel parameters at runtime
示例

使用文件系统命令catecho设置和查看

常见内核参数

模块管理

lsmod命令
lsmod - 查看所有系统被装载的模块
注意:其是提取/proc/modules文件信息

=========

modinfo命令
modinfo - Show information about a Linux Kernel module
其通过/lib/modules/[KERNEL-VERSION]/modules/下的所有文件进行分析并显示的,默认情况下在内核modules编译安装的时候,会在其目录下生成所有modules的依赖关系等,建立对应的索引信息

=====

modprobe命令:
modprobe - Add and remove modules from the Linux Kernel
示例:
modprobe可以自行解决模块与模块的依赖关系,并将依赖的模块也一并启用

====

depmod命令
内核模块依赖关系文件的生成工具,系统模块的生成文件路径为:/lib/modules/KERNEL-VERSION/

======

模块装载和卸载的另一组命令:
insmod命令
rmmod命令
上一篇 下一篇

猜你喜欢

热点阅读