目录
①BIOS加电自检:
进入BIOS界面的方法?
选择“打开电源时进入固件”后,就能进入BIOS界面
修改BIOS加电自检硬件的优先级?
②MBR引导:
③GRUB菜单
④加载Linux内核
⑤init进程初始化
?总过程详述:
加电后bios程序会自检硬件,硬件无故障后,会根据第一启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据mbr 的指引找到完整的 grub 程序,再根据rub的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。
①init进程
init
是Linux系统中的第一个用户空间进程,其进程ID(PID)始终为1init
通常通过/etc/inittab
文件进行配置,并且它按照运行级别(runlevel)来启动系统服务和进程②Systemd
Init与Systemd对比 | ||
---|---|---|
Init | systemd | |
启动区别 | 串行启动后续程序,按顺序一个个启动 | 并行启动后续程序,全部一起启动 |
功能和特性 | init 相对较为简单 | systemd 提供了更多的功能和特性,是系统的级的程序,代为管理系统中的服务程序 |
配置方式 | init 使用/etc/inittab 文件进行配置 | systemd 使用单元文件(unit files)进行配置 |
统一接口 | init 需要依赖于多个独立的脚本文件 | systemd 提供了统一的接口和工具来管理系统服务和资源 |
单元类型? | 扩展名 | 说明 |
---|---|---|
Service? | .service | 描述一个系统服务 |
Socket?? ?? | .socket? | 描述一个进程间通信的套接字 |
Device?? ??? ? | .device | 描述一个内核识别的设备文件 |
Mount?? ?? | .mount? | 描述一个文件系统的挂载点 |
Automount?? ? ? | .automount? | 描述一个文件系统的自动挂载点 |
Swap?? ??? | .swap | 描述一个内存交换设备或文件 |
Path?? ?? ? | .path | 描述一个文件系统中文件或目录 |
Timer?? ?? ? | .timer? | 描述一个定时器 |
Target?? ?? | .target? | 描述一组systemd的单元 |
运行级别?? ??? | Systemd的target | 说明 |
---|---|---|
0 | target?? ? | 关机状态,使用该级别时将会关闭主机 |
1 | rescue.target?? ? | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
2 | multi-user.target? | 用户定义/域特定运行级别,默认等同于3,但是不能连网 |
3 | multi-user.target? | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
命令 | 说明 |
---|---|
init 0 | 关机 |
init 1 | 单用户模式相当于windows安全模式 |
init 2 | 用户,没网 |
init 3 | 多用户模式 字符界面没装图形化界面,默认为init3 |
init 4 | 保留 |
init 5 | 图形化界面,多用户化模式 |
init 6? 或? reboot | 重新启动 |
runlevel //查看系统当前运行级别
systemctl get-default //查看默认的运行级别
systemctl set-default //设置默认的运行级别
要求:模拟破坏mbr及其分区表,然后对其进行修复
步骤一:新添加一块硬盘,并将mbr备份文件拷贝到新硬盘
①新添加一块硬盘
磁盘建立完成后,使用以下三条命令刷新新建的磁盘设备,不需要重启
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
②创建新硬盘的主分区
?如果分区不能识别时,使用以下命令后,可查看新添加的磁盘主分区
partprobe /dev/sdb
?③对主分区进行格式化
mkfs.xfs /etc/sdb1 //格式化
?④挂载
mount /dev/sdb1 /mnt //挂载
⑤?将mbr备份文件拷贝到新硬盘
dd if=/dev/sda of=/mnt/mbr count=1 bs=512 //将mbr备份文件拷贝到新硬盘
步骤二:模拟破坏mbr及其分区表
dd if=/dev/zero of=/dev/sda count=1 bs=512 //向/dev/sda的前512字节写0覆盖原来内容
hexdump -C -n 512 /dev/sda //查看前512字节
?步骤三:进入急救模式恢复mbr
①reboot重启后,选择“Troubleshooting”,再选择“Rescue a CentOS system”,最后选择“Continue”后,进入急救模式
②将备份文件拷贝到/dev/sda
mkdir bak //新建文件夹
mount /dev/sdb1 bak //将存有备份文件的硬盘挂载到新建文件夹下
dd if=bak/mbr of=/dev/sda //将备份文件添加到原本的目录下
hexdump -C -n 512 /dev/sda //查看到/dev/sda前512字节已恢复
重启即可正常使用系统
?步骤一:临时设置远程IP地址和子网掩码
ifconfig ens33 172.16.12.12/24 //临时设置远程IP地址和子网掩码
步骤二:scp远程复制文件
dd if=/dev/sda of=/mnt/mbr count=1 bs=512 //拷贝/dev/sda到/mnt/mbr
scp /mnt/mbr 172.16.12.12:/opt //scp远程复制文件
?步骤三:模拟破坏mbr及其分区表
dd if=/dev/zero of=/dev/sda count=1 bs=512 //向/dev/sda的前512字节写0覆盖原来内容
hexdump -C -n 512 /dev/sda //查看前512字节
步骤四:?进入急救模式恢复mbr
①reboot重启后,选择“Troubleshooting”,再选择“Rescue a CentOS system”,最后选择“Skip to shell”后,进入急救模式
②拷贝远端设备的备份文件mbr到主机当前目录下,并将其添加到原本的目录下
ifconfig ens33 172.16.12.10/24 //设置主机临时ip地址
scp 172.16.12.12:/opt/mbr . //拷贝远端设备的备份文件mbr到主机当前目录下
dd if=mbr of=/dev/sda //将备份文件添加到原本的目录下
hexdump -C -n 512 /dev/sda //查看到/dev/sda前512字节已恢复
要求:模拟破坏grub文件及程序,然后对其进行修复
步骤一:模拟破坏grub.cfg配置文件
mv /boot/grub2/grub.cfg /opt //将在规定目录下的grub.cfg配置文件移动到/opt
步骤二:重启进入急救模式
①reboot重启后,在starting读档的2s间快速按一次“ESC”键,出现“Boot Menu”界面,选择“CD-ROM Drive”,再选择“Troubleshooting”,再选择“Rescue a CentOS system”,最后选择“Continue”后,进入急救模式
②切换根后,重新安装grub2程序
chroot /mnt/sysimage //从光盘的根切换到主机系统的根
grub2-install /dev/sda //重新在sda磁盘中安装grub2程序
grub2-mkconfig -o /boot/grub2/grub.cfg //重新生产配置文件
exit //退出
reboot //重启
chroot /mnt/sysimage //从光盘的根切换到主机系统的根
passwd 用户名 //修改密码
exit //退出
reboot //重启
①进入系统时选择内核界面,选中第一个选项并按“e”键
②将光标移动到Linux开头行的最后,添加rd.break,然后“ctrl+x”运行,进入单用户模式
③进入单用户模式后,重新挂载并添加读写权限,然后切换到系统的根修改密码
mount -o remount,rw /sysroot //重新挂载并添加读写权限
chroot /mnt/sysimage //从光盘的根切换到主机系统的根
passwd 用户名 //修改密码
touch /.autorlabel //如果开启selinux需重新打上标记
exit //退出
reboot //重启
开机、关机、重启、重新加载配置文件、查看状态、开机自启、开机不自启
chkconfig
是Linux系统中早期的服务管理工具,应用于CentOS 6
chkconfig系统服务控制命令 | |
---|---|
命令 | 说明 |
service? 服务程序? start | 开启服务程序 |
service? 服务程序? stop | 关闭服务程序 |
service? 服务程序? restart | 重新启动服务程序 |
service? 服务程序? reload | 重新加载服务程序 |
service? 服务程序? status | 查看服务程序的当前状态 |
chkconfig? --level? 35? 服务程序? on | 开机自启动服务程序的字符界面和图形界面 |
chkconfig? --level? 35? 服务程序? off | 关闭开机自启动服务程序的字符界面和图形界面 |
chkconfig? --add? 服务程序 | 添加自启动的服务程序 |
systemd
命令systemd
是一个相对较新的系统管理器和初始化系统,应用于CentOS 7
systemd系统服务控制命令 | |
---|---|
命令 | 说明 |
systemctl? start? 服务程序1? 服务程序2…… | 开启服务程序 |
systemctl? stop? 服务程序1? 服务程序2…… | 关闭服务程序 |
systemctl? status? 服务程序1? 服务程序2…… | 查看服务程序的当前状态 |
systemctl? reload? 服务程序1? 服务程序2…… | 重新加载服务程序 |
systemctl? restart? 服务程序1? 服务程序2…… | 重新启动服务程序 |
systemctl? enable? 服务程序名 | 开机自启服务程序 |
systemctl? disable? 服务程序名 | 开机不自启服务程序 |
systemctl? enable? --now? 服务程序名 | 开机自启,并立即启动 |
systemctl? disable? --now? 服务程序名 | 开机不自启,并立即关闭 |
前提:以编译安装完的nginx服务软件为例
vim /usr/lib/systemd/system/nginx.service //编写nginx开机自启动的配置文件
[Unit]
Description=The nginx HTTP and reverse proxy server //描述软件的功能
[Service]
Type=forking
PIDFile=/dh17/nginx/logs/nginx.pid //指定nginx进程的pid号
ExecStart=/dh17/nginx/sbin/nginx //使用绝对路径启动nginx可执行文件
ExecStop=/usr/bin/kill -s TERM $MAINPID //杀死nginx的主进程pid号
ExecReload=/dh17/nginx/sbin/nginx -s reload //nginx命令发送重新加载的信号
[Install]
WantedBy=multi-user.target //安装字符界面
systemctl daemon-reload //通知systemd重新加载所有的配置文件
systemctl start nginx //开启nginx服务
systemctl status nginx //查看nginx当前状态
pstree -p | grep nginx //查看当前nginx进程的pid号
ss -natp | grep 80 //查看80端口的进程信息
systemctl stop nginx //关闭nginx服务
systemctl status nginx //查看nginx当前状态