Centos6启动

POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) -->
rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/.conf) --> 设定默认
运行级别 --> 系统初始化脚本 rc.sysinit --> 关闭或启动对应级别的服务 --> 启动终端

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

grub

grub0.97:grub legacy
grub legacy:
stage1: mbr
stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
stage2:磁盘分区(/boot/grub/)
grub2.x:grub2
识别硬盘设备
(hd#,#)
hd#: 磁盘编号,用数字表示;从0开始编号
#: 分区编号,用数字表示; 从0开始编号
(hd0,0) 第一块硬盘,第一个分区
手动在grub命令行接口启动系统
grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot

配置文件:/boot/grub/grub.conf

default=#: 设定默认启动的菜单项;落单项(title)编号从0开始
timeout=#:指定菜单项等待选项选择的时长
splashimage=(hd#,#)/PATH/XPM_FILE:菜单背景图片文件路径
password [--md5] STRING: 启动菜单编辑认证
hiddenmenu:隐藏菜单
title TITLE:定义菜单项“标题”, 可出现多次
root (hd#,#):查找stage2及kernel文件所在设备分区;为grub的根
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件
password [--md5|--encrypted ] STRING: 启动选定的内核或操作系统时进行认证

init

正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个
服务脚本,而是指向了/etc/rc.d/rc.local脚本
不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行
的命令,可直接放置于/etc/rc.d/rc.local文件中
• /etc/rc.d/rc.local在指定运行级别脚本后运行

Centos7

和centos6的开机启动变化不大.grub阶段的配置文件有了一些变化

UEFi或BIOS初始化,运行POST开机自检
选择启动设备
引导装载程序:grub2
加载装载程序的配置文件:/boot/grub2/grub.cfg
加载initramfs驱动模块:/boot/initramfs-3.10.0-693.el7.x86_64.img
加载内核:/boot/vmlinuz-3.10.0-693.el7.x86_64
内核初始化:systemd
执行initrd.target所有单元,包括挂载/etc/fstab
从initramfs根文件系统切换到磁盘根目录
systemd执行默认target配置,配置文件/etc/systemd/system/default.target
systemd执行sysinit.target初始化系统及basic.target准备操作系统
systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及登录服务
如果启动图形界面systemd执行graphical需要的服务

grub

/etc/default/grub:grub模板配置文件

GRUB_TIMEOUT=5  #grub菜单选项超时时间
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved  #grub菜单默认选择的title
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet"  #向内核传递的cmdline参数
GRUB_DISABLE_RECOVERY="true

/boot/grub2/grub.cfg 配置文件可有以下命令生成

grub2-mkconfig -o /boot/grub2/grub.cfg 

实验1、破解root口令,并为grub设置保护功能

1).进入单用户模式 在 GRUB 启动菜单里使用 “e” 操作按键进入 CentOS 的启动菜单向界面 ,移动光标至“kernel”配置项一行,在末尾加入single,ctrl+x,然后进入bash#页面
2).进入单用户模式后,不需要输入用户名和口令,系统启动完成后将直接获得管理员 root 的权限,控制台的提示符为“#”,需要以rw方式挂载/ mount -o remount rw /
3).输入passwd命令,键入两次新密码即可完成更改。破解root口令
4).vi /boot/grub/grub.conf
password --md5 passwd #grub-crypt 键入两次新密码即可完成生成MD5加密密码passwd,下次系统进入grub引导需要密码才能进入

实验2、破坏本机grub stage1,而后在救援模式下修复之

1).reboot后按下ESC,即可通过光盘引导,进入救援环境mbr446字节被破坏,备份数据到/data/mbr,采用dd命令
2)dd if=/data/mbr of=/dev/sda1 bs=1 count=446

实验3、删除vmlinuz和initramfs文件后无法启动,两种方法恢复之

reboot后按下ESC,即可通过光盘引导,进入救援环境

mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
chroot /mnt/sysimage   #切换/
mkinitrd /boot/initramfs-`uname -r`.img `uname -r `
cp /mnt/cdrom/isolinux/vmlinuz  /boot/vmlinuz-`uname -r`
sync
sync #写入磁盘

方法二、

mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-696.e16.x86_64.rpm --root=/mnt/sysimage/ --force
ls /mnt/sysimage/boot

实验4、增加新硬盘,在其上制作能单独运行kernel和bash的系统

1.前期准备及环境
VM14,Centos6.9
一块新虚拟硬盘sdb,一个cmd_copy脚本
为系统加一块虚拟硬盘,20G,如果是在虚拟机开机加的硬盘需要扫描一下硬盘:

echo '- - -' > /sys/class/scsi_host/host2/scan 
#!/bin/bash
bincopy(){if which $1 &> /dev/null ;thenlocal bin_cmd=`which --skip-alias $1`local dir_cmd=`dirname $bin_cmd `[ -d ${chroot}${dir_cmd} ] || mkdir -pv ${chroot}${dir_cmd}[ -f ${chroot}${bin_cmd} ] || { cp $bin_cmd ${chroot}${dir_cmd}; action "cp $bin_cmd ${chroot}${dir_cmd}" ; }return 0elseecho "$1 is not found"return 1fi
}
libcopy(){ldd $(which --skip-alias $1)|grep -Eo "/[^[:space:]]+" |while read line ;dolocal lib_dir=`dirname $line`[ -d ${chroot}${lib_dir} ] || mkdir -pv ${chroot}${lib_dir}[ -f ${chroot}${line} ] || { cp $line ${chroot}${lib_dir}; action "cp $line ${chroot}${lib_dir}" ; }done
}
source /etc/init.d/functions
chroot=/mnt/sysroot
[ -d $chroot ] || mkdir -pv $chrootwhile : ;doread -p "please input a command you want to copy:" cmd[[ $cmd =~ ^q(uit)?$ ]] && breakbincopy $cmd if [ $? -eq 0 ]; thenlibcopy $cmd fi
done

2.为/dev/sdb分区,创建相应的内核文件,根文件

fdisk /dev/sdb
mkfs.ext4 /dev/sdb1  #/dev/sdb1对应/boot /dev/sdb2对应根 /
mkfs.ext4 /dev/sdb2
mkdir /mnt/boot
mount /dev/sdb1 /mnt/boot
grub-install --root-directory=/mnt /dev/sdb
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
cat >> /mnt/boot/grub.conf <<EOF
title linux
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
EOFchroot /mnt/sysroot
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和相关库文件
#复制相关命令及相关库文件如cat,cd,egrep,grep,ls,lsblk,mount,ping,vi,vim
ifconfig,insmod,poweroff
#可根据cmd_copy脚本复制

3.在新的虚拟机上实现定制的简单linux系统
添加/dev/sdb对应的虚拟硬盘文件,到新的centos系统上,开机即可完成启动
加载网卡模块

insmod /lib/e1000.ko
ifconfig etth0 192.168.1.9/24



ps:博主开始用的是一张快照虚拟硬盘,搞了半天都没成功,在新的机器上老是报错找不到文件error:15 file not found,换了一张新硬盘瞬间搞定。

实验5、在U盘上定制linux,使其可启动系统,并具有网络功能

实验6、删除/etc/fstab和/boot目录的所有文件,并恢复之

1).reboot后按下ESC,即可通过光盘引导,进入救援环境
fdisk -l  #查找对应的根在那个硬盘分区
mkdir /mnt/rsroot
mount /dev/sda2 /mnt/rsroot
cat >> /mnt/rsroot/etc/fstab <<EOF
/dev/sda2  /  exrt4  defaults 0 0
/dev/sda1 /boot exrt4  defaults 0 0 #临时恢复fstab文件
EOF
sync
exit2).恢复fstab后,reboot后按下ESC,即可通过光盘再次引导,进入救援环境
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-696.e16.x86_64.rpm --root=/mnt/sysimage/ --force
ls /mnt/sysimage/bootchroot /mnt/sysimage #切根/
grub-install -- /dev/sda
cat > /boot/grub.conf
default=0
timmeout=5
title linuxroot(hd0,0)kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=/dev/sda3initrd /initramfs-2.6.32-696.el6.x86_64.img

ps:/boot/grub的配置文件:除了grub.conf ,splash.xpm.gz,系统干净的情况下,其他文件可以不存在;2.经过grub-install 后,/boot/grub所有文件都和启动相关,不可破坏

实验7、编译安装kernel,启用支持ntfs文件系统功能

实验环境:VM14,Centos7.5-minial.
下载 linux-4.16.8.tar.xz

tar -xvf linux-4.16.8.tar.xz
cd linux-4.16.8
cp /boot/config-3.10.0-862.el7.x86_64 .config
yum gruopinstall "Development Tools"
yum install ncurses bc openssl-devl -y
make menuinstall  #报错的可以安装一下,yum install ncurses ,基于curses的文本窗口 ,第一次编译安装的时候,yum gruopinstall "Development Tools"
#  General setup  --->  Local version - append to kernel release ---> enter,修改内核版本号相关参数
#  File systems  --->   DOS/FAT/NT Filesystems  --->  NTFS file system support ,修改linux可以支持NTFS文件系统
#  exti 保存
make -j [#]  ##代表cpu数量,越多编译速度越快,最后大概生成10-11G文件,全部编译
#报错penssl/bio.h  openssl/opensslv.h ,yum -y install openssl-devel。
{
#只编译某子目录中的相关代码
cd /usr/src/linux
#make dir/
#只编译一个特定的模块
cd /usr/src/linux
#make dir/file.ko
make drivers/net/ethernet/intel/e1000/e1000.ko
}
make modules_install
#cp 相关模块到/lib/mouduls
make install
#安装bzImage为/boot/vmlinuz-VERSION-RELEASE
#生成initramfs文件
#编辑grub的配置文件
make clean #清理大多数编译生成的文件,但会保留config文件等
make mrproper #:清理所有编译生成的文件、config及某些备份文件
make distclean #mrproper、patches以及编辑器备份文件
reboot #开始新内核之旅吧
#下面是设置新内核默认启动选项
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
------>0 : CentOS Linux (4.16.8-1.0-honglinux) 7 (Core)1 : CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)2 : CentOS Linux (0-rescue-dbd0937f568d41af9d5e7a4d63e62a1e) 7 (Core)
grub2-set-default 0
grub2-editenv list   -----> saved_entry=0
reboot

转载于:https://blog.51cto.com/13698281/2115455

LINUX系统开启故障排错及linux-4.16.8内核编译安装,虚拟机实验(非生产环境)...相关推荐

  1. 一站式:虚拟机安装Linux系统(CentOS_7),多节点Linux环境打造,XShell的使用

    目录 01.Linux环境装在哪 02.虚拟机的下载与安装:Vmware 2.1.Vmware下载 2.2.Vmware安装 03.CentOS镜像下载 3.1.CentOS介绍(了解) 3.2.Ce ...

  2. nvr linux 软件,Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决?...

    原标题:Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决? 大家知道TSINGSEE青犀视频云-边-端全线产品都是有两个不同系统的版本,分别是windows版本和l ...

  3. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

  4. 服务器linux系统支持php好,关于Linux服务器系统的七大优势,你知道几个?

    Linux是开源的操作系统,主要支持PHP,在目前市场上Linux系统在互联网企业中使用率也是非常广泛的,具有不可或缺的作用,那么Linux服务器有哪些优势?总结了七点,你都知道吗? 1.开源:Lin ...

  5. linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...

    用户组管理包括对用户组创建,删除,修改及查看组操作命令,下面我们一起来看看希望本文章对各位同学会有所帮助哦, 1,创建组 groupadd test 增加一个test组 2,修改组 groupmod ...

  6. 一文带你学会linux系统 史上最全linux命令大全

    一文带你学会linux系统 史上最全linux命令大全 文章目录 linux系统简介 linux命令 1.启动网络命令 2.pwd命令 2.ls命令 3.cd命令 4.mkdir命令 5.rmdir命 ...

  7. 全网超详细的VMware虚拟机安装Kali Linux系统以及首次启动Kali Linux系统的注意事项

    文章目录 1. 简述Kali Linux 2. 下载Kali Linux的镜像文件 3. 安装Kali Linux 4. 首次启动Kali Linux 5. 其他方法安装Kali Linux 1. 简 ...

  8. linux系统怎么重启网卡?linux重启网卡的三种教程

    在实际工作中,经常会遇到Linux系统进行重启网卡的操作.在这里整理一下,进行多种方法的网卡重启. 一.service network restart 1.首先用CRT工具连接到Linux命令行界面. ...

  9. linux 的手机操作系统下载地址,Linux系统运维之下载Linux操作系统地址

    本文主要向大家介绍了Linux系统运维的下载Linux操作系统地址,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 有很多初次接触Linux的新人都会发问,应该到哪里下载Lin ...

最新文章

  1. 像Excel一样使用python进行数据分析(2)
  2. 两台linux之间传递文件
  3. SAP Spartacus的StorefrontConfig对象
  4. 可编程智能小车,100种玩法,从3岁玩到15岁,培养孩子“最强大脑”
  5. JPBC参数介绍Element,Field,Point等
  6. 深入理解Magento – 第七章 – 自定义Magento系统配置
  7. 前n个正整数相乘的时间复杂度为_初一数学常考的21个知识点,掌握好,轻松110+!...
  8. cshop是什么开发语言_国内程序员那么多,为什么不开发一个属于自己的编程语言?...
  9. 【Linux开发】Ubuntu下几个软件的配置记录backup
  10. logstash收集TCP端口日志
  11. [Go实战]goFrame框架初次使用
  12. 火山PC表格及Excel的导入导出案例
  13. 【4.29】Codeforces 刷题
  14. 零基础小白,如何从零开始搭建网站?(详细步骤)
  15. 【Android】为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler
  16. 三极管相关知识点释疑(一)
  17. 最新影视双端最全视频教程+源码
  18. BIM Revit2017下载安装教程及安装包
  19. 如何获取适用于 Azure 的 EV 代码签名证书?
  20. 一般安卓手机测试代码和微信代码

热门文章

  1. html页面判断是手机端访问,JS 判断手机端和pc端后跳转对应页面
  2. 笑话-加薪申请英文信
  3. m基于ID3决策树算法的能量管理系统matlab仿真
  4. NNDL 实验六 卷积神经网络(1)卷积
  5. adb命令会对android手机的负载
  6. 电话拨号防盗报警器系统设计
  7. YGG 公会进阶项目介绍
  8. Lenovo x DorisDB:简化数据处理链路,极大提升BI分析效率
  9. php易语言互交_易语言php调用源码
  10. Prinker纹身打印机使用教程