linux系统启动和内核管理

1、编写脚本,接受二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www

[root@localhost scripts]# vim magedu.sh       
#!/bin/bash
#
USERNAME=$1
USERHOME=$2
if [ $# -ne 2 ];then
echo -e "please give me two arguments,one is username,one is u
serhome\n" 
fi
if [ $# -eq 2 ];then
        if id $USERNAME &> /dev/null;then
                echo "$USERNAME is exist"
                exit 3
        else
            useradd -m -d $USERHOME $USERNAME
            grep "$USERNAME" /etc/passwd
        fi
fi

~                                                             
                                                            
"magedu.sh" 17L, 316C written
[root@localhost scripts]# bash magedu.sh magedu /www
magedu:x:1001:1001::/www:/bin/bash

2、使用expect实现自动登录系统。

#首先用expect实现自动登陆
#!/usr/bin/expect
spawn ssh root@192.168.44.129
expect {
 "yes/no" {send "yes\n";exp_continue}
 "password" {send "magedu\n"}
}
interact

#expect脚本
[root@localhost scripts]# vim expect2.ext    
#!/usr/bin/expect
#expect中的变量声明要用set
set ip 192.168.44.129
set user root
set password magedu
set timeout 10
spawn ssh $user@$ip
expect {
   "yes/no" {send "yes\n";exp_continue}
   "password" {send "$password\n"}
}
interact
~                                                             
                                                    
"expect2.ext" 12L, 207C written             
[root@localhost scripts]# expect expect2.ext 
spawn ssh root@192.168.44.129
root@192.168.44.129's password: 
Last login: Sat Mar 28 20:43:25 2020 from 192.168.44.10

#如何在shell中调用expect实现自动登陆
#!/bin/bash
#
ip=$1
user=$2
password=$3
expect <<EOF
set timeout 20
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue}
"password" { send "$password\n" }
}
#expect eof一定要加,要不然会出错
expect eof
EOF

3、简述linux操作系统启动流程

首先来说一说操作系统的启动流程,主要分为硬件层次启动,BootLoader层次启动和操作系统层次启动。先来说一说硬件层次的启动过程,这也是所有计算机通用的启动过程:

硬件层次启动过程

1. POST过程

给计算机通电,按下电源开关,主板上电,读取CMOS上的BIOS程序,做如下动作:

​ A: 检测硬件配置信息,完成硬件初始化;

​ B:根据BIOS设置好的启动顺序去寻找启动设备,并发起硬中断INT13;

2. MBR过程

根据在BIOS设置中设置好的启动设备,例如:第一启动顺序为硬盘,这时候硬中断INT13直接读取

其硬盘中第一个扇区里代码,这个第一个扇区中的代码真的很重要,没有它你的硬盘分区找不到,你的硬盘就不能启动操作系统。这小小的512字节的MBR的主要内容是这样的:

A:446字节的引导记录,也称作为Boot Loader

B:64字节的分区表,Partion Table

C:55AA 状态位,也可以称为停止位,称为状态位是因为,没有55AA就不被识别为MBR,55AA也标识了MBR到此为止。

到此整个硬件层次启动过程就结束了,接下来就是要启动Boot Loader了。

BootLoader层次启动过程

在硬件层次这个446字节的BootLoader启动代码里,不需要装载任何驱动程序就能执行;BootLoader主要有以下几种Grub、LiLo和spfdisk,BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。最初的BootLoader的主要功能:

A:引导至另一个loader或内核;

到了后来硬盘接口,从IDE,演变成SCSI,SATA,USB等,而其文件系统也发生了变化,windows的

fat16/32 ntfs,linux的ext2 ext3 ext4 xfs等等。446字节代码了,太小了,只有将其在后续的文件系统里找个地方存放,所以有了stage1,stage1_5,stage2阶段:

stage1阶段:就可以看成这446字节的代码;

stage1_5阶段:其实就是loader所在分区存放的的驱动程序;

stage2阶段:真正的Loader代码,主要是为了加载内核;

所以一个完整的BootLoader的功能有:

A:引导至另一个loader或内核;

B:提供菜单选择功能;

C:管理菜单;

D:加载内核,以及内核所在文件系统驱动;

操作系统层次启动

BootLoader将控制权转交给操作系统或者内核以后,其基本需要如下过程,才能将一个真正意义上的操作系统启动完毕:

A:硬件初始化,加载各硬件所需驱动;

B:运行初始化操作系统过程,例如:IP地址,主机名,开机启动那些服务等等。

C:提供用户交互界面。

有了上述的铺垫,我们再来说一说Linux的启动过程

1、POST : 加电自检

2、加载BootLoader

linux系统里BootLoader就是GRUB,C6的GRUB0.97程序是,C7是GRUB2.0

[root@centos6 ~]# rpm -qi grub
Name        : grub                         Relocations: (not relocatable)
Version     : 0.97                              Vendor: CentOS
Release     : 99.el6                        Build Date: Thu 23 Mar 2017 08:34:51 PM CST
Install Date: Mon 27 Jan 2020 11:44:13 AM CST      Build Host: c1bm.rdu2.centos.org
Group       : System Environment/Base       Source RPM: grub-0.97-99.el6.src.rpm
Size        : 2496968                          License: GPLv2+
Signature   : RSA/SHA1, Thu 23 Mar 2017 11:03:24 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.gnu.org/software/grub/
Summary     : Grand Unified Boot Loader.
Description :
GRUB (Grand Unified Boot Loader) is an experimental boot loader
capable of booting into most free operating systems - Linux, FreeBSD,
NetBSD, GNU Mach, and others as well as most commercial operating
systems.
#c7 GRUB2.X
[root@centos7 scripts]# rpm -qi grub2
Name        : grub2
Epoch       : 1
Version     : 2.02
Release     : 0.2.10.el7.centos.1
Architecture: x86_64
Install Date: Mon 27 Jan 2020 08:03:27 PM CST
Group       : System Environment/Base
Size        : 7390102
License     : GPLv3+
Signature   : RSA/SHA256, Fri 04 Jul 2014 09:46:10 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : grub2-2.02-0.2.10.el7.centos.1.src.rpm
Build Date  : Tue 01 Jul 2014 12:17:46 AM CST
Build Host  : kbuilder.dev.centos.org
Relocations : (not relocatable)
URL         : http://www.gnu.org/software/grub/
Summary     : Bootloader with support for Linux, Multiboot and more
Description :
The GRand Unified Bootloader (GRUB) is a highly configurable and customizable
bootloader with modular architecture.  It support rich varietyof kernel formats,
file systems, computer architectures and hardware devices.  This subpackage
provides support for PC BIOS systems.

stage1: 加载Bootloader的主程序(位于MBR中)用于加载stage 1.5的代码;

​ stage1.5: 位于MBR之后的扇区,让statge1中的bootloader能够识别stage2所在的分区文件系统;

​ stage2:通过Bootloader加载所有的配置文件及相关参数,这些参数都位于磁盘/boot/grub中;

3、内核初始化

​ 此时BootLoader需要将内核程序加载至内存,并进行解压,展开,控制权也移交给内核;内核需要检测硬件设备,并加载硬件驱动;但是内核程序本身也是放在硬盘的/boot分区上,这就需要先加载硬盘驱动;

​ 此时就需要一个临时根文件系统代替一个真正的文件系统行使权力,即initrd. Bootloader会将initrd程序加载至内存,initrd会模拟出一个虚拟的根文件系统,这样就可以加载硬件驱动等启动过程中需要的程序,加载完成后,并完成根切换;然后内核运行用户空间第一个程序/sbin/init ,至此,系统将交由init进行管理;

4、init 初始化

​ init 主要是进行软件环境初始化,它会读取配置文件/init/inittab(cent5/6)读取默认运行级别;运行 /etc/rc.d/rc.sysinit 进行系统初始化;关闭相应级别的需要停止的服务,启动对应级别下需要开启的服务--->设置登录终端;整个启动过程如图所示:

clipboard.png

4、破解centos7 密码

方法1

a. 启动时任意键暂停启动


image-20200416134607543.png

b.按e键进入编辑模式,将光标移动linux16开始的行,添加内核参数rd.break,按ctrl-x启动


image-20200416134648031.png

image-20200416134852853.png

c.重新挂在真正的根mount –o remount,rw /sysroot 并且切换到根里chroot /sysroot
image-20200416135025261.png

d.修改密码重启即可。

方法2

同样的方法,只不过在linux16开始的行,改为rw init=/sysroot/bin/sh,也就是相当于
mount –o remount,rw /sysroot 这一步。


image-20200416140007113.png

image-20200416140023593.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容