pc-start

本文详细解析了Linux系统的启动过程,从POST自检到BIOS引导,再到内核加载与初始化,直至运行init进程。涵盖了运行级别的概念,内核模块的管理,以及如何通过chkconfig管理服务的启动配置。同时,深入介绍了initrd与rootfs的作用,以及系统初始化脚本的工作原理。

POST(post on self test) --> BIOS(boot sequence) --> MBR(BootLoader,446 Bytes) --> Kernel(接管硬件) -->initrd --> (rootfs)/sbin/init(/etc/inittab)

运行级别(启动服务不同)
    0 halt
    1 single user mode, 直接以root身份切入
    2 multi  user mode, no NFS
    3 multi  user mode, text mode
    4 reserved
    5 mutil  user mode, graphic mode
    6 reboot
查看运行级别
    runlevel
    who -r
查看内核release号
    uname -r

BootLoader(MBR)
    LILO: LInux LOader
    GRUB: GRand Unified BootLoader
        Stage1:MBR
        Stage1_5:
        Stage2:/boot/grub


文件系统
进程管理
内存管理
网络管理
安全功能
驱动程序

Kernel挂载rootfs

/ -->rootfs (普天之下莫非王土)
/usr
/boot
/home

RedHat
    核心:动态加载 内核模块
    内核: /lib/modules/"内核版本号命令的目录"/
    /lib/modules/3.10.0-514.el7.x86_64/kernel


内核设计风格
    单内核 Linux
        核心: ko kernel object
        
        so shared object
    微内核 Windows
    
Kernel初始的过程
    1.设备探测
    2.驱动初始化(initrd(initramfs)装载驱动)
    3.以只读方式挂在根文件系统
    4.装载第一个进程init(PID:1)
    
    upstart ubuntu d-bus
    systemd
    
/etc/rc.d/rc.sysinit
    1.激活udev和selinux
    2.根据/etc/sysctl.conf,设置内核参数
    3.设定时钟
    4.装载键盘映射
    5.启用交换分区
    6.设置主机名
    7.根文件系统检测,读写方式重新挂载
    8.激活RAID和LVM
    9.启用磁盘配额
    10./etc/fstab,检查并挂载其他文件系统
    11.清理过期的锁和pid文件

/proc
/sys
/dev

ramdisk  --> initrd
ramfs  --> initramfs

    
chroot -临时目录作为 /
    1.mkdir -p /test/virroot
    2.cp /bin/bash /test/virroot/bin/bash
    3.ldd /bin/bash
        linux-vdso.so.1 =>  (0x00007ffeb35b5000)
        libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f19cf1ec000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f19cefe8000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f19cec1b000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f19cf416000)
        cp到/test/virroot/lib64下
    4.chroot /test/virroot

chroot
ldd /path/to/binary_file

OS初始化:
 

服务类脚本
    /etc/init.d > /etc/rc.d/init.d
    SysV : /etc/rc.d/init.d
        start|stop|restart|status
        reload|configtest
        
    chkconfig: runlevel SS KK
    当chkconfig命令为此脚本在rc#.d目录创建链接是,runlevels
    表示默认创建为S*开头的链接,除此之外的级别默认创建以K*开头的链接
    runlevels -  表示没有级别,默认以S*开头,其余的以K*开头
    chkconfig --list 查看所有独立守护服务的启动设定
    cp SERVICE_NAME 到 /etc/rc.d/init.d
    chkconfig --list SERVICE_NAME
    chkconfig --add SERVICE_NAME 添加到checkconfig可以控制的独立守护进程
    chkconfig --del SERVICE_NAME
    
    chkconfig --add myservice
    chkconfig --level RUNLEVELS SERVICE_NAME {on|off}
    
    example:
    #!/bin/bash
    #
    # chkconfig: 2345 77 22
    # description: Test Service

    LOCKFILE=/var/lock/subsys/myservice

    status() {
        if [ -e $LOCKFILE ]; then
            echo "Running"
        else
            echo "stopped"
        fi
    }

    usage() {
        echo "`basename $0` {start|stop|restart|status}"
    }

    case $1 in
    start)
        echo "Starting..."
        touch $LOCKFILE;;
    stop)
        echo "Stopping..."
        rm -rf $LOCKFILE &> /dev/null;;
    restart)
        echo "Restarting...";;
    status)
        status;;
    *)
        usage;;
    esac

    
    
/etc/rc.d/rc.local 系统最后启动的一个服务

/etc/inittab的任务
    1.设置默认运行级别
    2.运行系统初始化脚本
    3.运行指定运行级别对应的目录的脚本
    3.ctrl+alt+delete组合键操作
    4.ups电源故障/恢复执行的操作
    5.启动虚拟终端(2345)
    6.启动图形终端(5)

守护进程
    独立守护进程
    xinitd:超级守护进程,代理人
        瞬时守护进程,不需要关联至运行级别
        
核心: /boot/vmlinuz-version
内核模块 (KO) /lib/modules/version

 

用户空间访问,监控内核方式
    /proc
        伪文件系统
        /proc/sys 很多可读写
    /sys 某些文件可写
设定内核参数值(暂时生效)
    echo VALUE > /proc/sys/TO/SOMEWHERE
    sysctl -w kernel.hostname(立即生效,重启失效)
    sysctl -a 所有内核参数
    
永久生效,不立即生效
    /etc/sysctl.conf
    sysctl -p 生效
    
查看加载内核模块
lsmod

modprobe MODULE_NAME 装载
insmod MODULE_NAME
modprobe -r MODULE_NAME 卸载
rmmod MODULE_NAME

modeinfo MODULE_NAME

内核中的功能除了核心功能之外,编译时,大多数功能有3个选择
1.不用此功能
2.编译进内核
3.不编译进内核


 

 


    

 

 

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值