系统初始化

目标:
。探讨引导次序
。掌握GRUB的角色
。掌握init的角色
。控制System V的服务
引导次序概述:
。BIOS初始化(基本输入输出系统,主板)
。引导装载器
。内核初始化
。启动init之后通过执行以下次序进入到设定的运行级别:
    。/etc/rc.d/rc.sysinit
    。/etc/rc.d/rc和/etc/rc.d/rc?.d/
    。/etc/rc.d/rc.local
    。如果需要还将启动X
引导装载器的组件
。引导装载器
    。第一阶段 -小,驻留在MBR或引导磁道中(硬盘中一小部分)
    。第二阶段-从引导分区中引导(fdisk -l中有”*“标记的那一部分
。为Linux的最小配置:
    。标题,内核,操作系统根以及初始化内存磁盘(initrd)
。其他系统的最小配置:
    。标题,引导设备

内核损坏修复方法:
1.装载内核;
当系统进入grub>模式的情况下输入kernel (hd0,0)/vmlinuz-2.6... ro root=/dev/vo10/root等。。。
2.接着装载initrd:grub>initrd (hd0,0)/initrd...
3.boot
之后进入系统之后修复grub.conf文件

进入系统之后还需要修复一下文件:
#cd /boot/grub
之后编辑grub.conf文件
文件内容:
  title Redhat enterprise Linux 5.8 X86_64
    kernel (hd0,0)/vmlinuz-...
    initrd  (hd0,0)/initrd...img
之后保存退出。重启系统即可。
GRUB和grub.conf
。GRUB ”the GRand Unified Bootloader“
    。在引导提示符提供命令行的界面
    。可以从ext2/ext3,ReiserFS,JFS,FAT,minix,或FFS文件系统引导
    。支持MD5密码保护
。/boot/grub/grub.conf
。改变grub.conf立即生效
。如果在/dev/hda的MBR破损,重新安装引导装载器的第一阶段:
    /sbin/grub-install /dev/hda

#fdisk -l  //查看当前设备,找到启动设备sda1
#mount | grep sda1  //查看sda1设备挂载的分区
#cd /boot/grub 接着进入查看grub.conf文件
查看grub.conf文件介绍
  title 描述信息
  kernel (hd0,0)/vmlinuz第一块硬盘第一个分区 ro root=/dev/vol0/root
  initrd (hd0,0)/initrd
启动引导过程:GRUB
。选择镜像文件
    。在引导启动界面是通过上/下箭头选择
。传递参数
    。在菜单编辑模式改变现有的参数
    。在GRUB命令行中输入boot命令

单用户模式破解密码
进入GRUB界面输入e,选择第二条编辑
在kernel这行最后面加入single,之后输入b引导。
之后输入passwd修改密码即可完成密码修改。
可以通过#cat /proc/cmdline查看怎么启动的,之后reboot重启即可。

#info grub  //查看grub文档
可以在timeout之后设置password,或者在title下面设置password
设置grub加密
①.在grub.conf文件中加上一行  
  password --md5 加密的字符串,也就是②中加密的字符串拷贝过来。
②.#grub-md5-crypt
也可以通过vim编辑grub.conf文件,之后输入:read !grub-md5-crypt直接输入两次密码回车来保存。

 

 

init初始化:
。init读取他的配置文件:/etc/inittab
    。初始化运行级别
    。系统初始化脚本
    。指定运行级别脚本的目录
    。截取一些按键次序
    。定义不间断电源故障和恢复脚本
    。gettys 唤醒虚拟控制台
    。在运行级别5时初始化X
/etc/inittab里面格式:
  描述信息:运行级别:系统参数:脚本
运行级别
。init定义了0-6,s,应急几种运行级别
。选择运行级别可以通过下面的任意一种方法:
    。默认值定义在/etc/inittab
    。由引导装载器传递参数
    。使用命令init new_runlevel
。显示当前和之前的运行级别
    /sbin/runlevel
/etc/rc.d/rc.sysinit(系统初始化文件)
。包括重要任务:
    。激活udev和selinux
    。按照/etc/sysctl.conf设置内核参数
    。设置系统时钟
    。装载键盘布局
    。启动交换分区
    。设置主机名
    。检测根分区并重新装载
    。激活RAID和LVM设备
    。启用磁盘配额
    。检查并挂在其他文件系统
    。清楚锁和进程ID文件
引用下大佬之前写的:https://www.cnblogs.com/SZxiaochun/p/7726527.html
/etc/rc.d/init.d/rc{0..6}.d/* 这个里面的K开头的文件代表杀死的优先级,S开头文件代表启动的优先级
自定义启动引导过程:
①.在/etc/inittab中添加一行
#tw:3:wait:/root/testwait.sh
②.在/root/testwait.sh脚本中输入脚本信息

/etc/rc.d/init.d;rc{0..6}.d;rc.local
System V 运行级别
。不同的运行级别启动的服务不相同
    。每个运行级别有一个相对应的目录:
。/etc/rc.d/rcX.d
    。System V 初始化脚本保存在:
。/etc/rc.d/init.d
    。在运行级别的目录中的软连接使用start或stop调用init.d下的脚本
控制服务
。工具用来控制默认启动的服务
    。system-config-services:需要X的图形配置工具
    。ntsysv:基于ncurses的工具可以用在虚拟控制台
    。chkconfig:快速,多功能的命令行工具,用于脚本和Kickstart安装中
。手工控制服务工具
    。service:立即启动或停止一个独立的服务
    。chkconfig立即启动或停止受xineted管理的服务。
通常使用#servcie sshd stop这种启停服务的方式都可以通过/etc/init.d/sshd stop来操作,因为其中的sshd实际上就是/etc/init.d/sshd
#chkconfig --list  | grep sshd //查看sshd服务在不同运行级别下是启动还是停止的信息;同时可以看到sshd在2级别是启动状态,接下来让sshd在2级别状态关闭
#find /etc/rc.d/ -name "*sshd"  //查看rc.d目录下面sshd的文件
#chkconfig --level 2 sshd off

#find /etc/rc.d/ -name "*sshd"  //查看rc.d目录下面sshd的文件是否已经由s开头变成了k开头的文件。

 

 上图中使用bluetooth服务举例,通过删除rc3.d中的S25bluetooth快捷方式,然后重新建立一个K75bluetooth快捷方式只想/init.d/bluetooth,之后chkconfig检查发现k开头的情况下,在级别3下此服务为off

respawn反复唤醒,如tty进程,我们反复kill,却一直有心进程出现

x:5:respawn:/etc/X11/prefdm -nodaemon    //其中的x代表服务 

/etc/rc.d/rc.local
。运行在运行级别特定的脚本之后
。通常放置自定义的指令
。在很多情况下推荐在/etc/rc.d/init.d创建一个System V的初始化脚本,除非你启动的是一个不是很重要的服务器。可以作为启动方式执行现有的脚本。  

BOIS-MBR-GRUB(grub.conf)kernel---vmlinz和initrd.img---welcome进入系统第一个进程/sbin/init(/etc/inittab),id:3:initdefault---rc.sysinit---rc3.d目录启动对应的服务。---rc.local启动。  

  

  

  

  

  

  

  

 

 

 

 

 

 

 

 

  

posted @ 2020-10-04 14:58  爱吃山楂果  阅读(318)  评论(0编辑  收藏  举报