LINUX系统开启故障排错及linux-4.16.8内核编译安装,虚拟机实验(非生产环境)...
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内核编译安装,虚拟机实验(非生产环境)...相关推荐
- 一站式:虚拟机安装Linux系统(CentOS_7),多节点Linux环境打造,XShell的使用
目录 01.Linux环境装在哪 02.虚拟机的下载与安装:Vmware 2.1.Vmware下载 2.2.Vmware安装 03.CentOS镜像下载 3.1.CentOS介绍(了解) 3.2.Ce ...
- nvr linux 软件,Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决?...
原标题:Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决? 大家知道TSINGSEE青犀视频云-边-端全线产品都是有两个不同系统的版本,分别是windows版本和l ...
- linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...
信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...
- 服务器linux系统支持php好,关于Linux服务器系统的七大优势,你知道几个?
Linux是开源的操作系统,主要支持PHP,在目前市场上Linux系统在互联网企业中使用率也是非常广泛的,具有不可或缺的作用,那么Linux服务器有哪些优势?总结了七点,你都知道吗? 1.开源:Lin ...
- linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...
用户组管理包括对用户组创建,删除,修改及查看组操作命令,下面我们一起来看看希望本文章对各位同学会有所帮助哦, 1,创建组 groupadd test 增加一个test组 2,修改组 groupmod ...
- 一文带你学会linux系统 史上最全linux命令大全
一文带你学会linux系统 史上最全linux命令大全 文章目录 linux系统简介 linux命令 1.启动网络命令 2.pwd命令 2.ls命令 3.cd命令 4.mkdir命令 5.rmdir命 ...
- 全网超详细的VMware虚拟机安装Kali Linux系统以及首次启动Kali Linux系统的注意事项
文章目录 1. 简述Kali Linux 2. 下载Kali Linux的镜像文件 3. 安装Kali Linux 4. 首次启动Kali Linux 5. 其他方法安装Kali Linux 1. 简 ...
- linux系统怎么重启网卡?linux重启网卡的三种教程
在实际工作中,经常会遇到Linux系统进行重启网卡的操作.在这里整理一下,进行多种方法的网卡重启. 一.service network restart 1.首先用CRT工具连接到Linux命令行界面. ...
- linux 的手机操作系统下载地址,Linux系统运维之下载Linux操作系统地址
本文主要向大家介绍了Linux系统运维的下载Linux操作系统地址,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 有很多初次接触Linux的新人都会发问,应该到哪里下载Lin ...
最新文章
- 像Excel一样使用python进行数据分析(2)
- 两台linux之间传递文件
- SAP Spartacus的StorefrontConfig对象
- 可编程智能小车,100种玩法,从3岁玩到15岁,培养孩子“最强大脑”
- JPBC参数介绍Element,Field,Point等
- 深入理解Magento – 第七章 – 自定义Magento系统配置
- 前n个正整数相乘的时间复杂度为_初一数学常考的21个知识点,掌握好,轻松110+!...
- cshop是什么开发语言_国内程序员那么多,为什么不开发一个属于自己的编程语言?...
- 【Linux开发】Ubuntu下几个软件的配置记录backup
- logstash收集TCP端口日志
- [Go实战]goFrame框架初次使用
- 火山PC表格及Excel的导入导出案例
- 【4.29】Codeforces 刷题
- 零基础小白,如何从零开始搭建网站?(详细步骤)
- 【Android】为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler
- 三极管相关知识点释疑(一)
- 最新影视双端最全视频教程+源码
- BIM Revit2017下载安装教程及安装包
- 如何获取适用于 Azure 的 EV 代码签名证书?
- 一般安卓手机测试代码和微信代码