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个阶段,每个阶段都完成不 ...
随机推荐
- windows命令行(DOS批处理)添加任务计划
自动创建每周运行一次的计划任务 创建计划任务可用at,schtasks命令,schtasks提供了很多参数 命令schtasks SCHTASKS /Create [/S system [/U use ...
- 网络编程 -- RPC实现原理 -- Netty -- 迭代版本V1 -- 入门应用
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V1——Netty入门应用 Class : NIOServerBootStrap package lime.pri.limeNio.netty.ne ...
- 为C函数自动添加跟踪语句
目录 为C函数自动添加跟踪语句 声明 一. 问题提出 二. 代码实现 2.1 函数匹配测试 2.2 插入跟踪语句 三. 效果验证 为C函数自动添加跟踪语句 标签: Python 正则表达式 声明 本文 ...
- git 删除仓库的文件
git移除远程仓库某个文件夹 1.比如src/product/ 文件夹 git rm -r --cached "src/product" //执行命令. 2.提交到本地 git c ...
- SQL Server 2012 R2升级到SQL Server 2016无法正常启动数据库服务解决方案
原定周末把公司的TFS升级到2018,由于TFS 2018需要SQL Server至少是2016以上版本,所以还需要将原来的SQL Server 2012 R2一并升级.今天早上负责的同事告诉我升级失 ...
- vue axios跨域请求,代理设置
在config下的index.js中的dev下的 proxyTable{}中设置代理 proxyTable: { '/api': { target: 'http://10.0.100.7:8081', ...
- class FrameHandlerMono : public FrameHandlerBase
单目视觉里程计流程图 class FrameHandlerMono : public FrameHandlerBase FrameHandlerMono::FrameHandlerMono(vk::A ...
- 汇编debug工具详解
关于debug工具里的各个指令的用法 debug调试工具详解: r:可以查看,和改变寄存器中的内容具体用法:·直接输入r的时候,回车显示当前指向内存单元中所有寄存器中的内容,并将所指机器码翻译成汇编指 ...
- Luogu 3369 / BZOJ 3224 - 普通平衡树 - [替罪羊树]
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3224 https://www.luogu.org/problemnew/show/P3 ...
- dubbo-admin2.8.4部署
1.环境准备 (1)操作系统:CentOS6.5 (2)安装JDK并且配置好环境变量,参考:http://blog.csdn.net/u013274055/article/details/739206 ...