Liunx 系统启动和内核管理总结

Liunx 系统启动和内核管理总结

Liunx系统启动

一、硬件启动流程

(1)、打开电源
(2)、BIOS:
1. POST 初始化硬件设备,检查系统外围主要设备(CPU,内存,硬盘,显卡i-o设备,键盘鼠标)
2.确定启动设备
    -根据BIOS设置的启动顺序,检测驱动器(硬盘,光盘,U盘,网络)
    --如果硬盘是启动项,读取硬盘第一个扇区(MBR,512字节)到内存
    ---控制区转给MBR中的Boot loader
(3)、MBR 1.执行MBR中Bootloader
2.MBR由主引导程序,硬盘分区表DPT和有效硬盘标书(55aa,标识是MBR分区)
3.MBR的BOOt loader含有grub的stage1阶段  

POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测(主板自带的程序功能)
ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等
RAM:CMOS互补金属氧化物半导体,保存各项参数的设定
按次序查找引导设备,第一个有引导程序的设备为本次启动设备  

bootloader: 引导加载器,引导程序(MBR引导)
windows: ntloader,仅是启动OS
 Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
    LILO:LInux LOader | 早期的版本启动程序
    GRUB: GRand Unified Bootloader |centos6 0.97 centos7 2.02
    GRUB 0.X: GRUB Legacy, GRUB2  

二、GRUB启动引导阶段

(1)stage1 包含在MBR的前446字节,但内容不足够起到完整的识别(分区文件系统加载程序等)
(2)stage1_5 在MBR分区后面,能识别启动分区文件系统是1和2直接的桥梁
(3)stage2 解析/boot/grub里的grub.conf,显示操作系统启动菜单,加载内核文件到内存,通过/boot/initrd开头文件建立虚拟DAM disk虚拟文件系统转交给内核  

三、内核引导阶段

探测可识别到的所有硬件设备
加载硬件驱动程序(借助于ramdisk加载驱动)
以只读方式挂载根文件系统(grub.conf grub.cfg里的root=)
运行用户空间的第一个应用程序:/sbin/init 用init里面的进程文件初始化,第二次重新挂载  

四、系统初始化阶段

(1)、 读取/etc/inittab 获取用户级别  

(2)、读取/etc/rc.sysinit初始化系统
        测试与载入内存设备/proc及usb设备、/sys
        挂载/etc/fstab定义的文件系统
        加载核心的相关设置,按/etc/sysctl.conf文件设定的内核参数的值(/proc/sys/)
        将启动相关信息加载到/var/log/dmesg文件中  

(3)、加载系统服务
        /etc/rc/rc#.d 根据运行级别启动对应/etc/rc/rc#.d目录下的服务,K开机关闭S开机开启centos6 chkconfig centos7 systemctl
        /etc/local 加载用户自定义服务 一般可以将自己编译的服务放在里面  

五、启动终端
默认执行/sbin/mingetty打开的6个文本终端
验证登陆
1./etc/nologin(可能没有)有则在内的普通用户不可登陆,(usermod -s /sbin/nologin,可能能使用系统资源,/bin/false 则所有服务都不可以用)
2./etc/usertty对文件做出附近访问限制,不存在该文件没有限制
3./etc/securetty 登记的终端才允许使用,没有文件任何终端都可以登陆
4./etc/passwd & /etc/shadow 存放用户信息、密码、使用何种shell

    登陆成功
    输出 /var/log/lastlog 输出最近一次登陆的信息
        /var/spool/mail/用户名 邮件存放的地方
        /etc/profile、.bash_profile、.bash_login、.profile  

安装图形界面默认是5级别的图形桌面  

centos6系统启动和有关文件

Linux内核特点:
支持模块化:.ko(内核对象)如:文件系统,硬件驱动,网络协议等
支持内核模块的动态装载和卸载
内核组成部分:
核心文件:/boot/vmlinuz-VERSION-release{核心驱动文件}
            vmlinux-2.6.32-754.e16.x86_64
ramdisk:辅助的伪根系统
CentOS 5 /boot/initrd-VERSION-release.img |虚拟磁盘
CentOS 6,7 /boot/initramfs-VERSION-release.img(一些必要的辅助文件模块驱动放在这里-打包文件-虚拟文件系统)
initramfs-2.6.32-754.el6.x86_64.img
模块文件:/lib/modules/VERSION-release(模块化的驱动文件)
/lib/modules/2.6.32-754.el6.x86_64/kernel/fs
配置文件 /etc/ld.so.conf.d/kernel-2.6.32-754.el6.x86_64.conf
locate ext3.ko 搜索模块  

1、先识别系统核心文件放在/boot (不进入/就完成不了后续的行为)2、识别放驱动的文件(/lib/modules) 3、识别加载文件系统的驱动 4、在加载有文件系统的/  5、加载init进程
此时ramdisk的initramfs-2.6.32-754.el6.x86_64.img文件就存放了加载文件系统的驱动
文件是装系统临时生成的   

(我这是想看看这个文件有点啥:)
mv initramfs-2.6.32-754.el6.x86_64.img in.img.gz
gunzip initramfs-2.6.32-754.el6.x86_64.img.gz
file initramfs-2.6.32-754.el6.x86_64.img
cpio -id < initramfs-2.6.32-754.el6.x86_64.img(小型的/环境)
centos initrd(硬盘) centos6 initramfs(文件系统) 提高速度

CentOS 6,7 initramfs.img
工具程序:mkinitrd, dracut
ramdisk文件的制作
(1) mkinitrd命令:为当前正在使用的内核重新制作ramdisk文件(脚本调用dracut)
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(2) dracut命令:为当前正在使用的内核重新制作ramdisk文件
dracut /boot/initramfs-$(uname -r).img $(uname -r)

实验:破坏此文件 挂光盘救援模式 光盘的isolinux目录下有vmlinuz(不会放图,不想放图,顺便也删除了)
mkinitrd /boot/initranfs-uname -r.img uname -r生成boot下的ramfs文件(可能需要加上force)
mount /dev/sr0 /mnt
cp /mnt/isolinux/vmlinuz /boot/vmlinuz-uname -r
rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-696.e16.x86_64.rpm --root=/mnt/sysimage/(boot的父目录) --force

内核初始化通过init进程 /etc/inittab 截取了比较重要的部分
17 # Default runlevel. The runlevels used are:
18 # 0 - halt (Do NOT set initdefault to this) 关机
19 # 1 - Single user mode
单用户模式(root自动登录), single, 维护模式 进入单用户模式可以破解root口令
20 # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
多用户模式,启动网络功能,但不会启动NFS;维护模式
21 # 3 - Full multiuser mode 文本界面
22 # 4 - unused 预留级别;可同3级别
23 # 5 - X11 图形界面
24 # 6 - reboot (Do NOT set initdefault to this)
26 id:5:initdefault:
id:runlevel:action:process
id:是惟一标识该项的字符序列
runlevels: 定义了操作所使用的运行级别
action: 指定了要执行的特定操作
wait: 切换至此级别运行一次
respawn:此process终止,就重新启动之
initdefault:设定默认运行级别;process省略
sysinit:设定系统初始化方式
process:定义了要执行的进程
实验id:6:...设置成6无限重启,在重启的等待界面输入任意键进入一个启动界面选项
根据提示按键(在启动前更改内核参数)输入 a 可以输入0-6启动为什么模式
进入单用户更改用户口令passwd

/etc/rc.d/rc.sysinit: 系统初始化脚本规定了N多的参数,多看看,
si::sysinit:/etc/rc.d/rc.sysinit---centos5里面有这个的初始化脚本的设置

之前的0-6在/etc/rc.d/rc#.d 有一一对应的文件,选择什么则进入什么
每个文件里面都分只有两个开头的文件 K和S,K表式运行此模式时关闭此服务,S相反开启
K: K##:##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
S: S##:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务
ntsysv命令更改当前运行模式的服务下一次开机的开启和关闭(图形操作)
ntsysv --level=5更改5模式的服务的开机状态

既然这里有服务肯定要学的,这么好的格式,这么重要的东西,我就不写了

chkconfig --add testsrv /var/lock/subssy 观察目录,服务在这里创建对应服务文件
chkconfig命令查看服务在所有级别的启动或关闭设定情形
chkconfig [--list] [name] chkconfig --list
添加:SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig --add name 对应的创建name的rc.d里面的服务文件
#!/bin/bash
#LLLL 表示初始在哪个级别下启动,-表示都不启动
*# chkconfig: LLLL nn nn
chkconfig --del name 删除
修改指定的链接类型
chkconfig [--level levels] name <on|off|reset>
--level LLLL: 指定要设置的级别;省略时表示2345
chkconfig --level 345 atd on/off 定义下次开启还是关闭
chkconfig atd on 默认更改2-5
yum install atd;sercvice atd start;chkconfig atd on;配置服务开启
实验,某个服务出错
ctrl + alt + delete 重启,任意键进入 进入单用户模式 将出错的服务关闭
chkconfig testsrv on (/etc/inittab这个文件centos5是比较完整的,最好了解下这个好)

写到这里想起来 6的/etc/inittab里面注释的说明很重要,说了很多信息

xinetd管理的服务(服务那么多,这个就很实在了)
service 命令:手动管理服务
service 服务 start|stop|restart
service --status-all 列出所有服务的状态
瞬态(Transient)服务(非独立服务)被xinetd进程所管理(超级守护进程)
进入的请求首先被xinetd代理
配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service>(里面是代理的服务)
与libwrap.so文件链接
用chkconfig控制的服务:
示例:chkconfig tftp on
telnet非独立服务被xinetd监控 安装yum install telnet
lsof -i :23 centos7 systemctl 代替了xinetd
xinetd默认装好的程序里面的是off状态,手动开启
修改/etc/xinted.d/telnet 里的disable=no 可以被激活状态
service xinetd start ss -ntlp
telnet 192.168.60.149 ss -nt
chkconfig telnet of

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

grub: GRand Unified Bootloader
grub 0.97: grub legacy(老的版本)
grub 2.x: grub2
grub legacy:
stage1: mbr (/boot/grup/stage1这里有备份)
stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
stage2:磁盘分区(/boot/grub/)
grub安装支持交互式命令方式
(1) grub-install
安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下
grub-install --root-directory=DIR /dev/DISK 修复MBR512

grup-install /dev/sda (grup.conf里的图片无法修复)
这里/boot/grub/grub.conf文件很重要 其他文件上面的命令都可以恢复,这个问价要手写
这是里面内容,6结束
1 # grub.conf generated by anaconda
3 # Note that you do not have to rerun grub after making changes to this file
4 # NOTICE: You have a /boot partition. This means that
5 # all kernel and initrd paths are relative to /boot/, eg.
6 # root (hd0,0)
7 # kernel /vmlinuz-version ro root=/dev/sda2
8 # initrd /initrd-[generic-]version.img
9 #boot=/dev/sda
10 default=0
11 timeout=5
12 splashimage=(hd0,0)/grub/splash.xpm.gz
13 hiddenmenu
14 title CentOS 6 (2.6.32-754.el6.x86_64)
15 root (hd0,0)
16 kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=f279775c-e233-4f26-b7ab-118dfe992d 2c rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=a uto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
17 initrd /initramfs-2.6.32-754.el6.x86_64.img
里面可以加 passwd 选项对单用户模式起到保护作用
grub加密生成grub口令
grub-md5-crypt 里面有salt(盐)输入相同口令出来的结果不一样
grub-crypt


记--201904101400

原文地址:https://blog.51cto.com/14230286/2379077

时间: 2024-10-06 23:02:24

Liunx 系统启动和内核管理总结的相关文章

linux基础—课堂随笔010_系统启动和内核管理

系统启动和内核管理 Linux: kernel+rootfs kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs:程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 程序:二进制执行文件 内核设计流派: 单内核(monolithic kernel):Linux 把所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂 微内核(micro kernel):Windows, Solaris 每种功能使一个单独子系统实现,将内核功能

系统启动和内核管理

CentOS 5和6的启动流程 服务管理 Grub管理 自制Linux 启动排错 编译安装内核 Linux组成 Linux: kernel+rootfs kernel: 进程管理. 内存管理. 网络管理. 驱动程序. 文件系统. 安全功能 rootfs:程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派: 单内核(monolithic kernel):Linux

Linux系统启动和内核管理

Linux组成 由 kernel 和 rootfs 组成 单内核:(进程管理,内存管理,网络管理, 驱动程序,文件系统, 安全功能) /boot/vmlinuz-VERSION-release 辅助的伪根系统 /boot/initramfs-VERSION-release.img            这是一个cpio格式的归档文件,存放的是各种驱动模块 md5sum vmlinuz /boot/vmlinuz       查看两个文件中的内容是否完全一致,只要有一个字符不一样,两个文件的md5

第15章,系统启动和内核管理

更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 本章内容 Centos5和6的启动流程 服务管理 Grub管理 自制Linux 启动排错 编译安装内核 Centos7启动流程 Unit介绍 服务管理和查看 启动排错 破解口令 修复grub2 Linux组成:------------------------------------------------------

系统启动与内核管理 ;AWK部分 重要内容 (实验及awk的常见面试题)

CentOS6启动流程1.加载BIOS的硬件信息,获取第一个启动设备2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备4.核心执行init程序,并获取默认的运行信息5.init程序执行/etc/rc.d/rc.sysinit文件6.启动核心的外挂模块7.init执行运行的各个批处理文件(scripts)8.init执行/etc/rc.d/rc.local9.执行/bin/login程序,等待用户登录10.登录之

Linux系统启动与内核管理(下)

从上一篇介绍了系统启动流程可以得知,在BIOS读取相关信息之后,接下来就是去找第一个可以启动的设备当中的MBR中读取Boot Loader信息,Boot Loader提供具有惨淡功能,直接加载内核信息,以及相关的控制权转交功能.启动系统必须有Boot Loader,然后才能去加载内核,Boot Loader存储于MBR当中,MBR只有512字节,其中前446字节存储Boot Loader,区区只有446自己不可能容纳较多的功能,Linux将Boot Loader的程序运行与配置项加载分成三个阶段

Linux之系统启动和内核管理

系统启动 常用命令: runlevelwho -r/etc/inittab:定义启动级别/etc/rc.d/init.d/NetworkManager 定义网络管理程序的详细信息/etc/rc.d/rc.sysinit 系统初始化脚本/etc/rc.d//rc[0-6].d/定义6个级别对应的服务程序开启或关闭/etc/rc.d/rc.local 开机最后一步要执行的脚本可以放到此文件中自定义服务 chkconfig --list 查看定义服务程序详情列表testsrv需要放入/etc/rc.d

Linux系统管理——系统启动和内核管理

1.内核 1.1内核分类 内核设计流派:     单内核(monolithic kernel):Linux     把所有功能集成于同一个程序 微内核(micro kernel):     Windows, Solaris     每种功能使用一个单独子系统实现 1.2.内核组成 组成部分:     核心文件:/boot/vmlinuz-VERSION-release 1.3.centos6启动     1.加载BIOS的硬件信息,获取第一个启动设备     2.读取第一个启动设备MBR的引导加

Linux启动和内核管理

系统启动和内核管理 Linux组成 Linux:kerne+rootfs(应用程序) kernel:进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 roots:程序和glibc 函数:相当于命令的集合 库:函数集合,function,调用接口(头文件负责描述) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计: 单内核(monolithic kernel):Linux 把所有功能集成于一个同一个程序 微内核(micro kernel)