Linux之系统启动和内核管理

系统启动

常用命令:

runlevel
who -r
/etc/inittab:定义启动级别
/etc/rc.d/init.d/NetworkManager 定义网络管理程序的详细信息
/etc/rc.d/rc.sysinit 系统初始化脚本
/etc/rc.d//rc[0-6].d/定义6个级别对应的服务程序开启或关闭
/etc/rc.d/rc.local 开机最后一步要执行的脚本可以放到此文件中
自定义服务

chkconfig --list 查看定义服务程序详情列表
testsrv需要放入/etc/rc.d/init.d/目录下testsrv
内部定义

#!/bin/bash
chkconfig: 345 66(s-启动) 44(k-关闭)
description: test service
echo ##########

ntsysv可以设置当前级别模式哪些进程启动或不启动,重启生效。*为开机启动项。

chkconfig --add testsrv
chkconfig --del testsrv
chkconfig NetworkManager on|off 不加--level 默认设置2345

/boot/grub/grub.conf
grub-md5-crypt或者grub-crypt --md5
grub-crypt 默认采用sha512
grub-crypt --sha-256
主要项有
default=0
timeout=5
hiddenmenu
passwd --md5 $$$$$$$$$$$$$$$$$$$$$$$$$$加密后的密码
passwd --encrypted ########################加密后密码
title centos
kernel (hd0,0)/vmlinuz-2.6.32-754.el6.x86_64 root=UUID-xxxxx
initrd (hd0,0)/initramfs-xxxxxxxxxxx

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz 该文件为启动选项背景图片,可以自行修改:(ImageMagick包,convert -resize 640*480 -colors 14 centos.jpg centos.xpm)
hiddenmenu
title CentOS 6 (2.6.32-754.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=a6d8689c-a3ec-415b-a2d2-7fb209c352c9 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-754.el6.x86_64.img

TIPS:

核心驱动文件在/boot/vmlinuz-3.10.0-957.el7.x86_64**内核
按需加载
/usr/lib/modules/3.10.0-957.el7.x86_64中驱动模块
辅助的伪根系统
/boot/initramfs-3.10.0-957.el7.x86_64.img**(打包文件,内部放有内核挂载所需识别驱动模块)
cpio -tv < initramfs-3.10.0-957.el7.x86_64.img 查看内部文件。

modinfo ext4:查看驱动模块所在位置
lsmod:查看所有加载到内存的驱动模块

模拟故障实验1,initramfs-3.10.0-957.el7.x86_64.img伪根文件丢失

重启后故障图:

方法1:进入光盘救援模式

chroot /mnt/sysimage切根
mkinitrd /boot/initramfs-`uname -r`.img `uname -r` --force(此项如果boot下没有initramfs文件可不加)------重新生成伪根img文件
或者
dracut /boot/initramfs-$(uname -r).img $(uname -r)------重新生成伪根img文件
exit-------退出当前根
reboot--------重启系统

模拟故障实验2,vmlinuz-3.10.0-957.el7.x86_64内核文件丢失

重启后故障图:

方法1:进入光盘救援模式

mount /dev/sr0 /mnt/sysimage/data
cp /mnt/sysimage/data/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz--$(uname -r)从光盘里把内核文件拷贝到/原boot目录下并加版本信息
reboot--------重启系统

模拟故障实验3,/etc/inittab里,默认启动级别错误定义到0或者1


方法:在开机倒计时时,按任意键调出菜单,下面有提示,按a键进入内核模式,在后面补上启动级别3,即可进入系统。进入系统后再重新修改/etc/inittab内默认启动级别为正常级别即可。

模拟故障实验4,MBR里前446字节被清空,grub,stag1被破坏,导致的无法启动系统。(全部清空的话,没有备份分区表无法恢复,切记)


方法:进入光盘救援模式

chroot /mnt/sysimage切根
grub安装
安装grub:
(1) grub-install 此命令可用于修复/boot/grub/下的所有文件除了grub.conf和*.xmp.gz文件 但是如果使用grub-install修复后,再把除了grub.conf以外的所有文件拷贝走,重启后将无法进入系统,需要进入救援模式切根再执行grub-install /dev/sda命令 操作完后多此执行sync,防止数据在内存中未写入硬盘
安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下
grub-install --root-directory=DIR(boot的上级父目录名称) /dev/DISK
(2) grub
grub> root (hd#,#) 中间有空格
grub> setup (hd#)

模拟故障实验5,MBR里前446字节被清空,/boot目录下被清空。


方法:进入光盘救援模式

chroot /mnt/sysimage切根
grub-install /dev/sda
mount /dev/sr0 /mnt
cp /mnt/isolinux/vmlinuz /boot/vmlinuz-uname -r
dracut /boot/initramfs-uname -r.img uname -r
最后写grub.cfg文件

default=0
timeout=5
hiddenmenu
title Centos 6
root (hd0,0)
kernel /vmlinuz-2.6.32-754.el6.x86_64 root=UUID=a6d8689c-a3ec-415b-a2d2-7fb209c352c9
initrd /initramfs-2.6.32-754.el6.x86_64.img

模拟故障实验6,MBR里前446字节被清空,/boot目录下被清空。/etc/fstab文件被删除。进行恢复(前提是/和/home还有swap都是逻辑卷创建的文件系统)

方法:进入救援模式
由于分区表没有坏,所以先找分区,写fstab文件
因为所有文件系统都是逻辑卷创建的,默认逻辑卷没有被激活
需要激活用(vgchange -ay
创建临时根目录,挂载逻辑卷/到临时根目录
然后写fstab文件
需要重启重读fstab配置文件。
之后参照实验5,或者安装光盘里的rpm -ivh /mnt/Package/kernel.... --nodeps --force
最后sync几遍重启

模拟故障实验7,grub.conf文件内,initrd和 kernel上下行颠倒



启动菜单出现后按e编辑菜单,因为两行上下颠倒,所以d删除上面的一行,在剩下行上面o新创一行,然后e取编辑一下,输入initrd /initramfs-xxxxxxx 回车,然后b启动,以上修改为临时性修改。进入程序后再修改grub.conf文件。

模拟故障实验8,开机启动卡在某服务,排错

方法:在开机倒计时时,按任意键调出菜单,下面有提示,按a键进入内核模式,在后面补上启动级别1,进入单用户维护模式。将启动不了的服务临时设置为开机不启动chkconfig testsrv off。然后reboot,开机后再想办法解决。



模拟服务自己写一个testsrv,实现service testsrv start|stop|status|restart

#!/bin/sh
#
#chkconfig: - 66 22
#description:testsvr
service=`basename $0`
. /etc/init.d/functions
start(){
    if [ -f /var/lock/subsys/$service ];then
        echo "$service has been started"
    else
        touch /var/lock/subsys/$service
        action "Starting $service"
    fi
}

stop(){
    if [ -f /var/lock/subsys/$service ];then
        rm -rf /var/lock/subsys/$service
        action "stopping $service"
    fi
}

status(){
    if [ -f /var/lock/subsys/$service ];then
        echo "$service is running"
    else
        echo "$service is stopped"
    fi
}

case $1 in
start)
    $1
    ;;
stop)
    $1
            ;;
restart)
    stop
    start
    ;;
status)
    $1
    ;;
*)
    echo "Usage service `basename $0`start|stop|status|restart "
esac                                                                                                                    

Centos6启动流程
网址转载流程图
https://s4.51cto.com/wyfs02/M02/87/20/wKiom1fVBELjXsvaAAUkuL83t2Q304.jpg

1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机

启动流程

POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测

ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等
RAM:CMOS互补金属氧化物半导体,保存各项参数的设定
按次序查找引导设备,第一个有引导程序的设备为本次启动设备

bootloader: 引导加载器,引导程序

windows: ntloader,仅是启动OS
Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
LILO:LInux LOader
GRUB: GRand Unified Bootloader
GRUB 0.X: GRUB Legacy, GRUB2

MBR:第一个扇区

前446字节 bootloader
中间64字节 分区表
最后2字节 55AA

GRUB

primary boot loader : 1st stage,1.5 stage
secondary boot loader :2nd stage,分区文件

kernel

自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(借助于ramdisk加载驱动)
以只读方式挂载根文件系统
运行用户空间的第一个应用程序:/sbin/init

原文地址:https://blog.51cto.com/5033330/2383563

时间: 2024-10-14 11:29:10

Linux之系统启动和内核管理的相关文章

Linux系统管理——系统启动和内核管理

1.内核 1.1内核分类 内核设计流派:     单内核(monolithic kernel):Linux     把所有功能集成于同一个程序 微内核(micro kernel):     Windows, Solaris     每种功能使用一个单独子系统实现 1.2.内核组成 组成部分:     核心文件:/boot/vmlinuz-VERSION-release 1.3.centos6启动     1.加载BIOS的硬件信息,获取第一个启动设备     2.读取第一个启动设备MBR的引导加

linux基础—课堂随笔010_系统启动和内核管理

系统启动和内核管理 Linux: kernel+rootfs kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs:程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 程序:二进制执行文件 内核设计流派: 单内核(monolithic kernel):Linux 把所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂 微内核(micro kernel):Windows, Solaris 每种功能使一个单独子系统实现,将内核功能

Liunx 系统启动和内核管理总结

Liunx 系统启动和内核管理总结 Liunx系统启动 一.硬件启动流程 (1).打开电源 (2).BIOS: 1. POST 初始化硬件设备,检查系统外围主要设备(CPU,内存,硬盘,显卡i-o设备,键盘鼠标) 2.确定启动设备 -根据BIOS设置的启动顺序,检测驱动器(硬盘,光盘,U盘,网络) --如果硬盘是启动项,读取硬盘第一个扇区(MBR,512字节)到内存 ---控制区转给MBR中的Boot loader (3).MBR 1.执行MBR中Bootloader 2.MBR由主引导程序,硬

Linux系统启动与内核管理(下)

从上一篇介绍了系统启动流程可以得知,在BIOS读取相关信息之后,接下来就是去找第一个可以启动的设备当中的MBR中读取Boot Loader信息,Boot Loader提供具有惨淡功能,直接加载内核信息,以及相关的控制权转交功能.启动系统必须有Boot Loader,然后才能去加载内核,Boot Loader存储于MBR当中,MBR只有512字节,其中前446字节存储Boot Loader,区区只有446自己不可能容纳较多的功能,Linux将Boot Loader的程序运行与配置项加载分成三个阶段

系统启动和内核管理

CentOS 5和6的启动流程 服务管理 Grub管理 自制Linux 启动排错 编译安装内核 Linux组成 Linux: kernel+rootfs kernel: 进程管理. 内存管理. 网络管理. 驱动程序. 文件系统. 安全功能 rootfs:程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派: 单内核(monolithic kernel):Linux

八、Linux精简系统和内核管理裁剪(一)

一.内核 1.什么是内核 内核其实就是操作系统,是驱动计算机硬件,实现人机操作,并提供其他服务器功能的底层系统.linux操作系统也称为"内核",指的是同一件事情. linux的内核是以模块化的方式工作的,主要工作任务包括存储管理.cpu管理.进程管理.文件系统管理.设备驱动管理.网络管理.系统调用.安全管理等. 2.内核的组成部分包括vmlinuz.initrd(linux5)或者initramfs(linux6)./lib/modules(模块,子核心) 二.内核设计 微内核 就是

八、Linux精简系统和内核管理裁剪(二)

八.内核服务管理 内核切换 chroot  initramfs(内核所在的目录) [[email protected] initramfs]# cd .. [[email protected] ~]# chroot initramfs/ bash-4.1# 自定义启动服务 1.编辑启动脚本文件,可以模仿/etc/rc.d/init.d/目录下的脚本文件. 2.cp启动脚本到/etc/rc.d/init.d/目录下. 3.配置启动项,chkconfig -add scriptname 手工编写启动

Linux系统启动和内核管理

Linux组成 由 kernel 和 rootfs 组成 单内核:(进程管理,内存管理,网络管理, 驱动程序,文件系统, 安全功能) /boot/vmlinuz-VERSION-release 辅助的伪根系统 /boot/initramfs-VERSION-release.img            这是一个cpio格式的归档文件,存放的是各种驱动模块 md5sum vmlinuz /boot/vmlinuz       查看两个文件中的内容是否完全一致,只要有一个字符不一样,两个文件的md5

第15章,系统启动和内核管理

更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 本章内容 Centos5和6的启动流程 服务管理 Grub管理 自制Linux 启动排错 编译安装内核 Centos7启动流程 Unit介绍 服务管理和查看 启动排错 破解口令 修复grub2 Linux组成:------------------------------------------------------