设为首页 收藏本站
查看: 757|回复: 0

[经验分享] linux启动流程详解、破解root密码、添加服务脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-14 08:53:45 | 显示全部楼层 |阅读模式
1.Linux的组成
    kernel+rootfs
    kernel:进程管理、内存管理、网络管理、安全管理、文件系统管理、驱动程序
    rootfs:程序和glibc
        库:函数集合,function,调用接口(头文件负责描述)
            过程调用:procedure  ,无返回值
            结果调用:function
        程序:二进制文件
2.内核设计流派
        单内核(monolithic kernel):Linux
            把所有功能集成于同一个程序
        微内核(micro kernel):Windows, Solaris
            每种功能使用一个单独子系统实现
3.内核特点及组成
    支持模块化:.ko(内核对象)
    支持内核模块的装载和卸载
4.内核的组成
    核心部件:  /boot/vmlinuz-VERSION-release
                      伪文件系统:ramdisk
                            centos5:/boot/initrd-VERSION-release.img
                            centos6,7:/boot/initramfs-VERSION-release.img
    模块文件:/lib/modules/VERSION-release
5.centos6启动流程
(1)主动读取BIOS,通过CMOS加载硬件信息 ,并进行POST,指定第一个可启动的设备
            ROM:BIOS,Basic Input and Output System,保存着计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序
            RAM:保存各项参数的设定
(2)读取第一个可启动设备MBR的引导加载程序(grub)的启动信息
        <1>MBR:  446 boot loader  64:分区表  2 :55aa
                BIOS通过硬件的INT13中断功能来读取MBR的
        <2>Windows:ntloader  仅是启动OS
               Linux:   提供菜单;  转交系统控制权;  直接指向内核文件
                        LILO:LInuxLOader
                        GRUB: GRandUnified Bootloader
                                primary boot loader:1st stage,1.5stage
                                secondary boot loader:2 stage,分区文件

                    bootloader的1stage是在MBR内进行的,1.5stage是再0面0磁道0扇区的后续扇区,2stage是在/boot分区上边
                1stage是 寻找/boot分区的文件系统驱动
                1.5stage内就是/boot分区文件系统驱动,识别/boot分区
                2stage是/boot分区相关操作
                /boot/grub下的stage类文件(除了stage2)都是备份

        <3>ramdisk:使用缓存或缓冲来加速对磁盘上文件的访问
                centos5:initrd  工具程序:mkinitrd
                centos6:initramfs   工具程序:mkinitrd,dracut\

                自己创建initramfs文件
                    mkinitrd [-v] [-with=模块名称] initrd文件名 内核版本
                        -v 显示mkinitrd的过程
                        --with=[模块名称]:模块名称指的是模块的名字,不需填写文件名
                    如果在救援模式下,需要切根,因为救援模式下好多库文件不存在

        <4>解压缩内核到内存中,
                加载可识别的所有硬件设备(以自己的功能重新检查一次硬件,不一定适用BIOS的检测结果)
                加载硬件驱动
                以只读方式挂载根系统
                运行用户空间的第一个程序:/sbin/init
        <5>内核内容

wKioL1fXx0XwqAJ9AAA1mdK5ajA507.jpg
(3)内核执行init程序,获取默认运行信息
         <1>init程序类型:
                SysV: init, CentOS 5之前
                        配置文件:/etc/inittab
                Upstart: init,CentOS6
                        配置文件:/etc/inittab, /etc/init/*.conf
                Systemd:systemd, CentOS 7
                        配置文件:/usr/lib/systemd/system
                                        /etc/systemd/system
            <2>运行级别
                    0  halt(系统直接关机)
                    1 单用户模式下,用在系统出问题时的维护
                    2 类似下面的runlevel 3,但无NFS服务
                    3 纯文本模式
                    4  系统保留功能
                    5 字符界面
                    6 重新启动

                 切换等级:init #
                 查看等级: runlevel who -r
        <3>/etc/inittab文件相关知识
            每一行定义一种action以及与之对应的process
            id : runlevel : action : process
                id:代表init的主要工作选项,只是简单代表说明
                runlevel:在那些等级下运行
                action:  initdefault:代表默认的runlevel设置值
                sysinit:代表系统初始化的操作选项
                ctrlaltdel:代表ctrl+alt+del三个按键是否可以重新启动
                wait:代表后面设置的命令项目必须要执行完毕才能继续下面的其他操作
                respawn:代表后边字段的命令可以无限制的重新启动
                process:可以进行的命令
                例如:
                    ca::ctrlaltdel:/sbin/shutdown -t3 -r now
                    id:3:initdefault:
                    si::sysinit:/etc/rc.d/rc.sysinit
                    l0:0:wait:/etc/rc.d/rc0
                    l1:1:wait:/etc/rc.d/rc1
                    1:2345:respawn:/sbin/mingetty tty
                    x:5:resawn:/etc/prefdm -nodaemon  x window 则是这行决定的
        <4>/etc/init/*.conf
(4)init程序执行/etc/rc.d/rc.sysinit文件
        取得网络环境与主机类型:/etc/sysconfig/network
        设置显示与启动过程中的欢迎界面(textbanner)
        检查根文件系统,并以读写方式重新挂载根文件系统
        挂载/etc/fstab文件中定义的文件系统
        设置系统时间:读入/etc/sysconfig/clock设置值  修改时区的话,把/user/share/zoneinfo/Asia  /Shanghai复制到/etc/local下
        激活udev和selinux
        激活swap设备
        初始化软件磁盘阵列、初始化lvm文件系统、、磁盘配额
        加载内核相关设置:/etc/sysctl.conf
        用户自定义模块加载:/etc/sysconfig/modules.conf设置
        清除启动过程中产生的临时文件
        将启动相关信息加载到/var/log/dmesg中
(5)启动核心的外挂模块/etc/modeprobe.conf文件
(6)init执行各个批处理文件
        <1>各个运行级别脚本所在目录:
            /etc/rc.d/rc 0.d
            /etc/rc.d/rc 1.d
            /etc/rc.d/rc 2.d
            /etc/rc.d/rc 3.d
            /etc/rc.d/rc 4.d
            /etc/rc.d/rc 5.d
            /etc/rc.d/rc 6.d
         <2>脚本文件运行规则:
                进入到某个运行级别的脚本目录/etc/rc.d/rc?.d
                k*:  k##*: ##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
                s*:  S##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务

                s开头的文件,运行
                k开头的文件,关闭
        <3>chkconfig命令详解
                查看服务所在级别的启动或关闭情形
                    chkconfig [--list] name
                添加服务给chkconfig管理
                SysV的的服务脚本放置于/etc/init.d
                    chkconfig --add name
                服务脚本格式信息
                        #!/bin/bash
                        #LLLL 表示初始在哪个级别下运行  “-”表示都不启动
                        # LLLL mm nn  mm表示启动次序  nn表示古币次序
                删除
                        chkconfig --del name
                修改制定的链接类型
                        chkconfig [--level levels] name <off|on|reset>
                        --level LLLL:省略是表示2345
                图形化界面ntsysv

(7)init执行/etc/rc.d/rc.local
        正常情况下,最后启动一个服务S99local没有链接至/etc/init.d下的脚本,而是指向了/etc/rc.d/rc.local脚本
        不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中
(8)执行/bin/login程序,等待用户登录
            1:2345:respawn:/usr/sbin/mingettytty1
            2:2345:respawn:/usr/sbin/mingettytty2
            ...
            6:2345:respawn:/usr/sbin/mingettytty6
            mingetty会自动调用login程序
            x:5:respawn:/etc/X11/prefdm -nodaemon
(9)登录后以shell控制主机
            BIOS加载硬件信息--》post加电自检--》加载MBR里grub信息--》stage1.5--》stage2--》initramfs--》    rootfs-->init-->/etc/inittab-->设置默认运行级别-->初始化/etc/rc.d/rc.sysinit-->/etc/rc.d/rc#.d-->/etc/rc.local

7.使用gzip -d 解压缩gz格式文件,此文件必须是.gz后缀,要不无法解压缩

8.破解centos5的root口令
    (1)进入centos5 的grub界面,按a修改内核选项


wKioL1fX5YzAy6SIAACZ2GlTVsg520.jpg
    (2)在命令行尾部追加1 或 S 或single,然后按enter键保存修改
wKiom1fX5zLjf76sAABbTATPxu0732.jpg
    (3)进入如下命令行模式,用passwd root  修改密码
wKiom1fX502yDB18AAAqKgwt8is227.jpg
    (4)重新启动,用刚才修改的密码登录系统
wKiom1fX53fT1lb0AAcvjWNpwco385.jpg

9.编写centos5服务脚本
    (1)在/root/bin写编写脚本testsrv,内容如下
wKioL1fX6OeiqWZUAAAlGjmCq-I204.jpg
    (2)在/root/bin和/etc/init.d目录下分别执行chkconfig --add testsrv发现无法成功加载testsrv服务 wKiom1fX6TyQHevlAAAu6cr-KMs317.jpg

把脚本复制到/etc/init.d下,执行上述命令,发现可以实现
wKiom1fX6X3ineuyAABP87H8FNY488.jpg
    (3)
在/etc/rc.d/rc3.d下查看testsrv文件时什么字母开头的
wKiom1fX6aOiknkQAAARNv3-Axo134.jpg
发现此命令在level 3启动等级下,是需要开启的服务,与设定一致

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-271959-1-1.html 上篇帖子: 基于BIND实现的DNS正反解析及主从DNS的配置 下篇帖子: BIND9 源码编译安装 linux 密码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表