笔记·系统启动和内核管理

/proc目录和内核参数管理:

    默认配置文件:
        /run/sysctl.d/*.conf
        /etc/sysctl.d/*.conf
        /usr/local/lib/sysctl.d/*.conf
        /usr/lib/sysctl.d/*.conf
        /lib/sysctl.d/*.conf
        /etc/sysctl.conf
    范例:
        #sysctl -w path.to.parameter=VALUE
        #echo “websrv” > /proc/sys/kernel/hostname
        #sysctl -p [/path/to/conf_file]        #使配置生效
        #sysctl -a        #查看所有生效参数

内核模块管理:

    #uname -r    #查看内核版本
    #lsmod        #查看已安装的内核模块
    #modinfo [ -k kernel ] [ modulename|filename... ]        #显示模块的详细信息
        -n:只显示模块文件路径
        -p:显示模块参数
        -a:作者
        -d:描述
    #装载或卸载内核模块
        modprobe [ -C config-file ] [ modulename ] [ module parame-ters... ]    #安装
        modprobe [ -r ] modulename…        #卸载
    #depmod命令:内核模块依赖关系文件及系统信息映射文件的生成工具
    #insmod命令:可以安装模块,需要指定模块文件路径,并且不自动解决依赖模块    
        #insmod `modinfo –n exportfs`
        #insmod `modinfo –n xfs`
    #rmmod [ modulename ]    #卸载模块
        #rmmod xfs
        #rmmod exportfs

systemd:

    #systemctl -t help
        Available unit types:
        service
        socket
        target
        device
        mount
        automount
        swap
        timer
        path
        slice
        scope

    unit的配置文件:
        /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
        /lib/systemd/system: ubutun的对应目录
        /run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
        /etc/systemd/system:管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行

    service unit:
        #启动:systemctl start name.service
        #停止:systemctl stop name.service
        #重启:systemctl restart name.service
        #查看状态:systemctl status name.service
        #禁止自动和手动启动:systemctl mask name.service
        #取消禁止:systemctl unmask name.service
        #查看某服务当前激活与否的状态:systemctl is-active name.service
        #查看所有已经激活的服务:systemctl list-units --type|-t service
        #查看所有服务:systemctl list-units --type service --all|-a
        #设定某服务开机自启:systemctl enable name.service
        #设定某服务开机禁止启动:systemctl disable name.service
        #查看所有服务的开机自启状态:systemctl list-unit-files --type service
        #用来列出该服务在哪些运行级别下启用和禁用:ls /etc/systemd/system/*.wants/name.service
        #查看服务是否开机自启:systemctl is-enabled name.service
        #列出失败的服务:systemctl --failed --type=service
        #开机并立即启动或停止
            systemctl enable --now postfix
            systemctl disable --now postfix
        #查看服务的依赖关系:systemctl list-dependencies name.service
        #杀掉进程:systemctl kill unitname

    服务状态:
        systemctl list-unit-files --type service --all
            loaded Unit配置文件已处理
            active(running) 一次或多次持续处理的运行
            active(exited) 成功完成一次性的配置
            active(waiting) 运行中,等待一个事件
            inactive 不运行
            enabled 开机启动
            disabled 开机不启动
            static 开机不启动,但可被另一个启用的服务激活
            indirect 重定向到别处
        范例:
            #显示所有单元状态:systemctl 或 systemctl list-units
            #只显示服务单元的状态:systemctl --type=service
            #显示sshd服务单元:systemctl –l status sshd.service
            #验证sshd服务当前是否活动:systemctl is-active sshd
            #启动,停止和重启sshd服务
                systemctl start sshd.service
                systemctl stop sshd.service
                systemctl restart sshd.service
            #重新加载配置:systemctl reload sshd.service
            #列出活动状态的所有服务单元:systemctl list-units --type=service
            #列出所有服务单元:systemctl list-units --type=service --all
            #查看服务单元的启用和禁用状态:systemctl list-unit-files --type=service
            #列出依赖的单元:systemctl list-dependencies sshd
                验证sshd服务是否开机启动:systemctl is-enabled sshd
                禁用network,使之不能自动启动,但手动可以:systemctl disable network
            #启用network:systemctl enable network
            #禁用network,使之不能手动或自动启动:systemctl mask network
            #启用network:systemctl unmask network

CentOS7以后版本启动流程

    启动过程:
        1. UEFi或BIOS初始化,运行POST开机自检
        2. 选择启动设备
        3. 引导装载程序, centos7是grub2,加载装载程序的配置文件:
            /etc/grub.d/
            /etc/default/grub
            /boot/grub2/grub.cfg
        4. 加载initramfs驱动模块
        5. 加载内核选项
        6. 内核初始化,centos7使用systemd代替init
        7. 执行initrd.target所有单元,包括挂载/etc/fstab
        8. 从initramfs根文件系统切换到磁盘根目录
        9. systemd执行默认target配置,配置文件/etc/systemd/system/default.target
        10. systemd执行sysinit.target初始化系统及basic.target准备操作系统
        11. systemd启动multi-user.target下的本机与服务器服务
        12. systemd执行multi-user.target下的/etc/rc.d/rc.local
        13. Systemd执行multi-user.target下的getty.target及登录服务
        14. systemd执行graphical需要的服务

    systemd-analyze工具:
        #systemd-analyze blame    
        #systemd-analyze plot > boot.html        #生成网页

修复Grub2:

    #grub2-install /dev/sda #BIOS环境
    #grub2-install #UEFI环境

posted @ 2022-07-25 18:17  Krill_ss  阅读(53)  评论(0编辑  收藏  举报