您的位置:首页 > 运维架构 > Linux

linux系统启动流程详解

2015-11-19 00:56 691 查看
Linux系统启动流程POST(加电自检)——>BIOS(启动次序)——>MBR(bootloader)——>kernel(硬件层)——>initrd——>init(用户层)内核设计风格 单内核:Linux 微内核:Windows(线程)核心:动态加载内核模块内核:/lib/modules/“内核版本号命名的目录”内核的命名例如vmlinuz-2.6.32 /lib/modules/2.6.32在内核与应用程序之间会有一个提供程序的驱动一个应用程序的运行需要依赖很多的库文件ldd:显示共享库依赖关系ldd /path/to/二进制文件chroot:chroot/path/to/temprootramdisk——将内存模拟成磁盘来使用运行级别——启动的服务不同 0:关机 1:单用户模式,直接以管理员登录,不需要密码 2:多用户模式,不启用NFS(网络文件系统) 3:正常多用户模式,文本模式 4:预留模式 5:多用户模式,图形模式 6:重启在/etc/inittab中定义了启动的运行级别详解启动过程bootloader不想让别人随便访问grub可以给它加密码,还可以将密码进行加密

查看运行级别 runlevel who –r查看内核相关信息 uname–r模拟练习,安装grub,先将bootloader破坏掉破坏bootloader(即安装盘的钱446扇区)

安装grub第一步#grub grub>(要指定内核所在的磁盘,判断那个磁盘是安装了内核)
安装grub的第二种方法#grub-install --root-directory=/path/to/boot‘s_parent_dir /path/to/device(这里添加的是内核分区所挂载到了哪个文件系统下,例如使用mount查看/dev/sda挂载到了/boot下,于是在=后添加/boot/)若是grub文件不存在了,进行主机启动的拯救 此时不可以使用root进行判断哪个磁盘是含有内核文件的,要使用find命令查找内核文件grub配置文件丢失

grub>findgrub>root(hd#,N)grub>kernel /path/to/kernel_filegrub>initrd /path/to/initrd_filegrub>boot kernel初始化过程设备探测驱动初始化(可能从initrd文件中装载驱动模块)以只读方式挂载根文件系统装载第一个进程initinit——>(/etc/inittab)init下的字段 id:runlevel:action:processaction initdefault:设定默认运行级别 sysinit:系统初始化 wait:等待级别切换至此级别时执行 respawn:一旦程序终止会重新启动将/etc/rc.d/rc.sysinit脚本读懂 激活udev和selinux 根据/etc/sysctl.conf文件设定内核参数 设定时钟 装载键盘映射 启用交换分区 设置主机名 根文件系统检测,并以读写方式重新挂载 激活raid和LVM设备 启用磁盘配额 根据/etc/fstab检查并挂载其他文件系统 清理过期的锁和PID文件chkconfig chkconfig:runlevel ss kk当chconfig命令来为此脚本在rc.#d目录创建连接时runlevels创建默认为s开头的的连接,除此之外的级别默认创建为k开头的连接s后面的启动优先级为ss表示的数字,k后面为关闭优先级顺序kk所表示的数字description:用于说明此脚本的简单功能chkconfig –list:查看所有独立服务的启动设定--add:创建连接文件--del:删除连接文件--level runlevels 服务名称(on|off)样例脚本

/etc/rc.d/rc.local:系统最后启动的一个服务,一个应该执行的脚本/etc/inittab: 设定默认运行级别 运行系统初始化脚本 运行指定运行级别对应的目录下的脚本 设定Ctrl+Alt+Del组合键的操作 定义UPS电源在电源故障/恢复时执行的操作 启动虚拟终端 启动图形终端守护进程的类型 独立守护进程 xinetd:超级守护进程,代理人 瞬时守护进程,不需要关联至运行级别

本文出自 “Linux根文件系统” 博客,请务必保留此出处http://amazonjian.blog.51cto.com/9604681/1714547
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: