Linux系统启动排错实验集合
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系统启动排错实验集合的更多相关文章
- Linux系统日志清除实验
实验目的 1.了解Linux日志的作用. 2.掌握删除Linux日志的方法. 实验原理 所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合.每个日志文件由日志记录组成,每条日志 ...
- Linux学习之CentOS(二十一)--Linux系统启动详解
在这篇随笔里面将对Linux系统的启动进行一个详细的解释!我的实验机器是CentOS6.4,当然对于现有的Linux发行版本,其系统的启动基本上都是一样的! 首先我们来看下Linux系统启动的几个 ...
- 为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用
1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用 ...
- linux基础-附件1 linux系统启动流程
附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ...
- Linux系统启动过程分析
[原创]Linux系统启动过程分析-wjlkoorey258-ChinaUnix博客http://blog.chinaunix.net/uid-23069658-id-3142047.html 经过对 ...
- Linux系统启动流程及安装命令行版本
Debian安装 之前也安装过很多次linux不同版本的系统,但安装后都是直接带有桌面开发环境的版本,直接可以使用,正好最近项目不是很忙,想一直了解下Linux的整个启动流程,以及如何从命令行模式系统 ...
- 【转】Linux系统启动过程分析
[转]Linux系统启动过程分析 转自:http://blog.chinaunix.net/uid-23069658-id-3142047.html 经过对Linux系统有了一定了解和熟悉后,想对其更 ...
- 【转载】Linux系统启动流程
原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbi ...
- linux 系统启动流程
原著资料网址:http://wenku.baidu.com/view/414127fdf705cc1755270997.html (版权归原作者所有) Linux系统的启动分5个阶段,每个阶段都完成不 ...
随机推荐
- Robot Framework封装的关键字输入参数可以传入多个值的方法
输入参数的最后一个参数可以是一个列表变量,通过@{列表名称}或者${列表名称}的方式实现传入多个值的场景: 或者
- Python·Jupyter Notebook各种使用方法
PythonJupyter Notebook各种使用方法记录持续更新 一 Jupyter NoteBook的安装 1 新版本Anaconda自带Jupyter 2 老版本Anacodna需自己安装Ju ...
- Oracle Profile使用详解(转)
一.目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该prof ...
- 深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装
一.硬件采购 近年来,人工智能AI越来越多被人们所了解,尤其是AlphaGo的人机围棋大战之后,机器学习的热潮也随之高涨.最近,公司采购了几批设备,通过深度学习(TensorFlow)来研究金融行业相 ...
- mac环境变量
环境: 当前已经有 .bash_profile文件了 打开.bash_profile: open -e .bash_proile open -e .bash_profile 查看node安装路径: w ...
- wchar_t和char转化
char* WcharToChar(const wchar_t* wp) { char *m_char; int len = WideCharToMultiByte(CP_ACP, 0, wp, wc ...
- Mysql的复杂语句
简单的crud操作很容易,但是对于嵌套的查询语句,多表查询语句,以及条件查询语句,这些都很复杂,需要不断练习. limit a,b: 从a开始,长度为b. SELECT * FROM tb_quali ...
- vue axios跨域请求,代理设置
在config下的index.js中的dev下的 proxyTable{}中设置代理 proxyTable: { '/api': { target: 'http://10.0.100.7:8081', ...
- [No0000175]maven常用命令集合(收藏大全)
抽了点时间,整理了一些maven常用命令参数,以便参考:参考了maven官网和网上其他一些maven追随者的文件,不在此一一列举,但表示感谢! mvn命令参数 mvn -v, --version 显示 ...
- ==、===和Object.is()的区别
==.===和Object.is()的区别 一. 定义: ==:等同,比较运算符,两边值类型不同的时候,先进行类型转换,再比较: ===:恒等,严格比较运算符,不做类型转换,类型不同就是不等: Obj ...