Centos6系统启动流程

1. post  加电自检  检查硬件环境

2. 选择一个硬件类型引导启动           mbr 446字节   grub  stage1

3. 加载boot分区的文件系统驱动  挂在/boot目录      grub  stage1.5

4. 读取 /boot/grub/grub.conf   加载内核启动菜单     grub  stage2

5. 加载vmlinuz内核  通过内核加载操作系统的 /  需要/boot/initramfs.img配合来加载根分区文件系统的驱动

6. 启动操作系统根下的第一个进程 /sbin/init

7. 通过启动第一个进程运行  rc.sysinit(系统初始化)脚本

8. 读取 /etc/inittab 配置文件,设置系统启动级别

各个启动级别的区别本质上就是在操作系统启动的时候设置哪些服务需要启动,哪些服务不需要启动.(不同服务的各种组合)

9.运行 /etc/rc[0-6].d/[S,K]的脚本 ---->    link      /etc/init.d/

10.运行 /etc/rc.local

11.显示登录界面

实验1:Boot目录下的文件全部被删除

1.启动故障现象:

2.重启系统的时候按F2,设置从光盘引导,进入救援模式

3.启动救援系统后开启一个shell窗口

1. chroot  /mnt/sysimage  &&  mkdir /mnt/cdrom

2. mount /dev/sr0  /mnt/cdrom

方法2:  rpm -ivh  /mnt/cdrom/Packages/kernel-2.6.32-el6.x86_46.rpm    --root=/mnt/sysimage/   --force

这条命令会在/boot目录下自动生成内核文件和伪文件系统

然后执行grub-install /dev/sda   和创建  grub.conf 文件即可

3.cp  /mnt/cdrom/isolinux/vmlinuz    /boot

4. cd /boot && mkinitrd initramfs.img `uname -r`

5.grub-install /dev/sda

6.cd /grub    &&    创建一个grub.conf配置文件

在grub文件夹中/表示的是boot目录所在的分区,不是指操作系统的根分区.

7.exit     退出切根状态

8.exit     退出shell窗口

9.选择重启系统

10.出现如下菜单

结论:boot目录下的内核和伪根系统的文件名称可以不用加版本号,grub-install /dev/sda 不能生成grub.conf

文件,这个文件必须手动创建

实现2:同时删除boot目录和etc/fstab文件

现象:进入救援模式后会出现无法挂载操作系统的/到/mnt/sysimage目录上

1.fdisk -l  查看分区的详细信息

2.手动挂载每个分区,查看分区里的数据,直到找到系统根所在的分区

3.修复根分区中的/etc/fstab配置文件

4.重启系统并重新进入救援模式,使救援系统能自动挂载根分区

5.修复boot目录

实验3:/sbin/init文件被损坏

故障现象:

进入救援模式系统

1. mkdir /mnt/cdrom

2. mount /dev/sr0  /mnt/cdrom

3.rpm2cpio /mnt/cdrom/Packages/upstart-0.3.el6.x86_64.rpm | cpio -idv ./sbin/init       解压到当前目录

4.cp  ./sbin/init     /mnt/sysimage/sbin

5.exit

6.reboot

实验4:后台服务启动异常

把启动模式切换到单用户模式,然后再去修改对应的服务脚本

实验5:自定制Linux系统

1.给一块新磁盘分区                    fdisk  至少要分两个区

2.给新创建的分区创建文件系统  mkfs.ext4    /dev/sdb1

3.挂载boot

mkdir     /mnt/boot       子目录必须为boot

mount   /dev/sdb1      /mnt/boot

4.安装grub

grub-install  --root-directory=/mnt /dev/sdb

5.复制内核和initramfs文件

cp /boot/vmlinuz-2.6.32-642.el6.x86_64             /mnt/boot/

cp /boot/initramfs-2.6.32-642.el6.x86_64.img     /mnt/boot

6.创建grub.conf 写入内核菜单信息

vim /mnt/boot/grub.conf

title yxhlinux

root (hd0,0)

kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2

selinux=0

init=/bin/bash

initrd /initramfs-2.6.32-642.el6.x86_64.img

7.创建一级目录

mkdir /mnt/sysroot  mount  /dev/sdb2   /mnt/sysroot

mkdir –pv /mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot, dev,mnt,media}

复制bash和相关库文件

复制相关命令及相关库文件    如:ifconfig,insmod,ping,mount,ls,cat,df,lsblk,blkid等

实验6:内核编译

内核组成部分:

kernel: 内核核心,一般为bzImage,通常在/boot目录下,名称为 vmlinuz-VERSION-RELEASE

kernel object: 内核对象,一般放置于   /lib/modules/VERSION-RELEASE/  [ ]: N  [M]: M  [*]: Y

辅助文件:ramdisk   initrd   initramfs

实验7:逻辑卷启动配置文件损坏

1.重启进入救援模式

2.逻辑卷不能像分区那样直接挂载  救援模式无法自动激活逻辑卷,所有的逻辑卷处于非活动状态.

3.  lvdisplay              查看当前系统上的逻辑卷详情

4.  vgchange -ay      激活所有的逻辑卷

5.  mount /dev/VolGroup/lv_root /mnt/rootfs       逻辑卷只有被激活后才能被成功挂载

6. 修复/mnt/rootfs目录下的相关配置文件

centos7 Systemd 介绍

POST > Boot Sequence  >  Bootloader > kernel + initramfs > rootfs   > /sbin/init

POST > Boot Sequence  >  Bootloader > kernel + initramfs > rootfs  这些和centos6启动方式一致

/sbin/init 在centos7上做了一个软链接  把/sbin/init  指向了 systemd

之所以系统启动后第一个进程的名字必须为/sbin/init  是因为在内核源码中编写成固定的字符串了

systemd新特性:

系统引导时候实现服务并行启动

按需启动守护进程

自动化的服务依赖关系管理

同时采用socket式与D-Bus总线式激活服务

系统状态快照

Linux系统启动排错实验集合的更多相关文章

  1. Linux系统日志清除实验

    实验目的 1.了解Linux日志的作用. 2.掌握删除Linux日志的方法. 实验原理 所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合.每个日志文件由日志记录组成,每条日志 ...

  2. Linux学习之CentOS(二十一)--Linux系统启动详解

      在这篇随笔里面将对Linux系统的启动进行一个详细的解释!我的实验机器是CentOS6.4,当然对于现有的Linux发行版本,其系统的启动基本上都是一样的! 首先我们来看下Linux系统启动的几个 ...

  3. 为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用

    1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用 ...

  4. linux基础-附件1 linux系统启动流程

    附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ...

  5. Linux系统启动过程分析

    [原创]Linux系统启动过程分析-wjlkoorey258-ChinaUnix博客http://blog.chinaunix.net/uid-23069658-id-3142047.html 经过对 ...

  6. Linux系统启动流程及安装命令行版本

    Debian安装 之前也安装过很多次linux不同版本的系统,但安装后都是直接带有桌面开发环境的版本,直接可以使用,正好最近项目不是很忙,想一直了解下Linux的整个启动流程,以及如何从命令行模式系统 ...

  7. 【转】Linux系统启动过程分析

    [转]Linux系统启动过程分析 转自:http://blog.chinaunix.net/uid-23069658-id-3142047.html 经过对Linux系统有了一定了解和熟悉后,想对其更 ...

  8. 【转载】Linux系统启动流程

    原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbi ...

  9. linux 系统启动流程

    原著资料网址:http://wenku.baidu.com/view/414127fdf705cc1755270997.html (版权归原作者所有) Linux系统的启动分5个阶段,每个阶段都完成不 ...

随机推荐

  1. Unity UI相关总结

    UIGrid 加载面板时,如果面板中含有大容量的 UIGrid,可能会很卡.我们可以只加载 UIGrid 的前 n 个单元格对象,在显示面板之后,利用协程加载剩余的所有单元格,每帧加载 m 个. 同样 ...

  2. 更改linux下文件目录权限、拥有者及用户组

    在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建者,谁创 ...

  3. ios 消除 字符串 首尾空格

    本文转载至 http://blog.csdn.net/reylen/article/details/8233353 (1)系统去首尾空格方法,使用NSString中的str = [str string ...

  4. cocos2dx内存管理

    cocos2dx基于引用计数管理内存,所有继承自CCObject的对象都将获得引用计数的能力,可通过调用retain成员函数用于引用计数值,调用release减少引用计数值,当计数值减为0时销毁对象. ...

  5. 【问题集】redis集群set报错(error) MOVED 11469 192.168.181.201:7002

    没有启动集群模式(即缺少了那个"-c"): redis-cli -c -h yourhost -p yourpost

  6. springCloud学习之服务注册和发现

    leader让完一个简单的springcloud的demo,自己之前听说过springcloud微服务,但是没有重视.现在网上查各种资料,但是感觉不怎么样啊,还是不会,明天晚上把代码给他看,天啦,这个 ...

  7. meat http-equiv 属性详解

    转自 http://kinglyhum.iteye.com/blog/827807 http-equiv 属性提供了 content 属性的信息/值的 HTTP 头. http-equiv 属性可用于 ...

  8. nohup 同时实现记录日志和屏幕输出

    nohup   nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令.该命令可以在你退出帐户/关闭终端之后继续运行相应的进程.nohup就是不挂断 ...

  9. hadoop 使用ip配置导致hdfs启动失败

    dataNode 有守护进行,但hdfs web页面上显示没有live node. 错误日志: 2017-06-21 17:44:59,513 ERROR org.apache.hadoop.hdfs ...

  10. ABP之事件总线(1)

    什么是事件总线呢?官方的文档说,它是一个单例对象,由其他的类共同拥有,可以用来触发和处理事件.这个东西确实比较陌生,为什么要使用事件总线,或者说事件总线的优势是什么???首先我们可以明确的是,事件总线 ...