Linux系统启动流程(2)
内核设计风格:
RedHat, SUSE
核心:动态加载 内核模块
内核:/lib/modules/“内核版本号命令的目录”/
vmlinuz-2.6.32
/lib/modules/2.6.32/
RedHat5: ramdisk-->initrd
RedHat6: ramfs-->initramfs
单内核:Linux (LWP轻量级进程)
核心:ko(kernel object)
so()
微内核:Windows, Solaris (线程)
chroot: chroot /PATH/TO/TEMPROOT [COMMAND...]
chroot /test/virrrot /bin/bash
ldd /PATH/TO/BINARY_FILE:显示二进制文件所依赖的共享库
MBR(bootloader)--> Kernel --> initrd(initramfs) --> (ROOTFS) --> /sbin/init(/etc/inittab)
/etc/inittab, /etc/init/*.conf
upstart
init /etc/inittab
id:runlevels:action:process
id:5:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
OS初始化
l0:0:wait:/etc/rc.d/rc 0
rc0.d/
K*
stop
S*
start
/etc/rc.d/init.d, /etc/init.d
服务类脚本:
start
SysV: /etc/rc.d/init.d
start|stop|restart|status
reload|configtest
chkconfig
# chkconfig: runlevels SS KK 当chkconfig命令来为此脚本在rc#.d目录创建链接时,runlevels表示默认创建为S*开头的链接,-表示没有级别默认为S*开头的链接;除此之外的级别默认创建为K*开头的链接;
S后面的启动优先级为SS所表示的数字;K后面关闭优先次序为KK所表示的数字;
# description: 用于说明此脚本的简单功能; \, 续行
chkconfig --list: 查看所有独立守护服务的启动设定;独立守护进程!
chkconfig --list SERVICE_NAME
chkconfig --add SERVICE_NAME
chkconfig --del SERVICE_NAME
chkconfig [--level RUNLEVELS] SERVICE_NAME {on|off}
如果省略级别指定,默认为2345级别;
样例脚本:
#!/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 -f $LOCKFILE &> /dev/null
;;
restart)
echo "Restarting..." ;;
status)
status ;;
*)
usage ;;
esac
/etc/rc.d/rc.local:系统最后启动的一个服务,准确说,应该执行的一个脚本;
/etc/inittab的任务:
1、设定默认运行级别;
2、运行系统初始化脚本;
3、运行指定运行级别对应的目录下的脚本;
4、设定Ctrl+Alt+Del组合键的操作;
5、定义UPS电源在电源故障/恢复时执行的操作;
6、启动虚拟终端(2345级别);
7、启动图形终端(5级别);
守护进程的类型:
独立守护进程
xinetd:超级守护进程,代理人
瞬时守护进程:不需要关联至运行级别
核心:/boot/vmlinuz-version
内核模块(ko): /lib/modules/version/
内核设计:
单内核
模块化设计
微内核
装载模块:
insmod
modprobe
www.kernel.org:
用户空间访问、监控内核的方式:
/proc, /sys
伪文件系统
/proc/sys: 此目录中的文件很多是可读写的
/sys/: 某些文件可写
设定内核参数值的方法:
echo VALUE > /proc/sys/TO/SOMEFILE
sysctl -w kernel.hostname=
能立即生效,但无法永久有效;
永久有效:/etc/sysctl.conf
修改文件完成之后,执行如下命令可立即生效:
sysctl -p
sysctl -a: 显示所有内核参数及其值
内核模块管理:
lsmod: 查看
modprobe MOD_NAME:装载某模块
modprobe -r MOD_NAME: 卸载某模块
modinfo MOD_NAME: 查看模块的具体信息
insmod /PATH/TO/MODULE_FILE: 装载模块
rmmod MOD_NAME
depmod /PATH/TO/MODILES_DIR
Linux系统启动流程(2)的更多相关文章
- linux基础-附件1 linux系统启动流程
附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ...
- Linux系统启动流程及安装命令行版本
Debian安装 之前也安装过很多次linux不同版本的系统,但安装后都是直接带有桌面开发环境的版本,直接可以使用,正好最近项目不是很忙,想一直了解下Linux的整个启动流程,以及如何从命令行模式系统 ...
- 【转载】Linux系统启动流程
原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbi ...
- Linux系统启动流程及grub重建(1)
日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel--& ...
- Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密
一.系统启动流程 一般来说,Linux 系统的启动流程是这样的: 1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIO ...
- Linux系统启动流程(重要!)
Linux系统启动流程 从上至下为: BIOS MBR:Boot Code 执行引导程序-GRUB(操作系统) 加载内核 执行init run level 1.BIOS(Basic Input ...
- Linux系统启动流程分析
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...
- linux 系统启动流程
原著资料网址:http://wenku.baidu.com/view/414127fdf705cc1755270997.html (版权归原作者所有) Linux系统的启动分5个阶段,每个阶段都完成不 ...
- [ 总结 ] Linux系统启动流程
Linux系统启动过程分析: 按下电源 --> BIOS自检 --> 系统引导(lilo/grub) --> 启动内核 --> 初始化系统 --> 用户登录 1. BIO ...
- Linux系统启动流程与系统目录
启动流程 # 1,开机BIOS自检 检查一系列的硬件,最后根据启动顺序启动,是硬盘还是光驱等 # 2,MBR引导 读硬盘0柱面0磁道1扇区的前446字节 1扇区=512字节 MBR=4446字节 四个 ...
随机推荐
- vi高级技巧
本文一般情况下用<c-字母>(里边的字母一般大小写无所谓,除非特别注明)表示按住ctrl同时按下相关字母,命令前加一个i 表示在插入模式下用这个命令 1. 选定文字/ 拷贝粘贴 v 为可视 ...
- IOS uitableviewcell 向左滑动删除编辑等
主要实现这个方法就好了 -(NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActions ...
- 《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS
矩阵和图像的操作 (1)cvCalcCovarMatrix函数 其结构 void cvCalcCovarMatrix(计算给定点的均值和协方差矩阵 const CvArr** vects,//给定向量 ...
- install-file -Dfile=J:\project01\workspace\service\lib\javapns-jdk16-163.jar -DgroupId=org.json -Dar
今天在开发项目的时候发现了一个问题,所以通过博客来记录起来! 为了以后在问题的解决方面能得到借鉴! 问题的现象是这种: 这样会报错的.pom.xml文件他在编译.检查他的文件语法的时候是须要參考库中的 ...
- Centos7安装Oracle JDK
查看Linux是否自带的JDK,如有openJDK,则卸载 java -version
- Stm32高级定时器(二)
Stm32高级定时器(二) 1 主从模式:主?从? 谈论主从,可知至少有两个以上的触发或者驱动信号,stm32内部有多个定时器,可以相互之间驱动或者控制. 主模式:定时器使能只受驱动时钟控制或者输出控 ...
- C# 标签打印示例 1
初次写博客,有哪些不足的地方,还请多多指点,给予建议,谢谢! 如若想要源码,请留言. 本实例是在Webservice 中通过excel做模板来打印标签.具体需求是:一个订单一页纸打印4行 ...
- linux syslog详解
linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.linux syslog配置 一.syslog协议介绍 1.介绍 在Unix类操作系统上,syslog广 ...
- 洛谷 P1656 炸铁路
P1656 炸铁路 题目提供者kkksc03 标签图论搜索/枚举洛谷原创 难度普及/提高- 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵 ...
- 更快的方式实现PHP数组去重(转)
概述 使用PHP的array_unique()函数允许你传递一个数组,然后移除重复的值,返回一个拥有唯一值的数组.这个函数大多数情况下都能工作得很好.但是,如果你尝试在一个大的数组里使用array_u ...