二,linux内核被加载的过程

一,linux安装时遇到的概念解析

内核必须模块vmlinz(5M左右)不认识硬盘,原本是需要写跟loader中一样的内容,来加载非必要模块。

内核非必要的功能被编译为模块放在了/lib/modules(143M)中。

现采取的措施是 在loader加载kernel的同时 也加载initial RAM Disk ==initrd 到内存中。

initrd在一般命名为/boot/initrd(14M) 其作用是挂载内存的虚拟文件系统,

kernel根据该虚拟文件系统加载硬盘等驱动程序,挂载根目录,最终完成其功能模块的加载。

至此内核全部被加载到内存中,并常驻内存。

内核调用的第一个进程为 sbin/init :完成准备软件执行环境,包括系统的主机名、网络设置、文件系统格式、runlevel等等。这些内容是由etc/inittab配置的

init 依据 inittab 设定的处理流程会是:

1. 先取得 runlevel 亦即默讣执行等级的相关等级 (以测试机为例,为 5 号);

2. 使用 /etc/rc.d/rc.sysinit 进行系统初始化

3. 由于runlevel 是 5 ,因此只进行『l5:5:wait:/etc/rc.d/rc 5』,其他行则略过

4. 设置好 [ctrl]+[alt]+[del] 这组的组合键功能

5. 设置不断电系统的 pf, pr 两种机制;

6. 启动mingetty 的六个终端机 (tty1 ~ tty6)

7. 最终以 /etc/X11/perfdm -nodaemon 启动图形接口啦!

其中第二步使用 /etc/rc.d/rc.sysinit 进行系统初始化 的工作有:

1. 取得网络环境不主机类型:

读取网络配置文件 /etc/sysconfig/network ,取得主机名与默认网关 (gateway) 等网络环

境。

2. 测试与挂载内存装置 /proc 及 USB 装置 /sys:

除挂载内存装置 /proc 乊外,还会主劢侦测系统上是否具有 usb 的装置, 若有则会主劢加载

usb 的驱劢程序,幵丏尝试挂载 usb 的文件系统。

3. 决定是否启动 SELinux :

我们在第十七章谈到的 SELinux 在此时迚行一些检测, 幵丏检测是否需要帮所有的档案重新编

写标准的 SELinux 类型 (auto relabel)。

4. 启动系统的随机数生成器

随机数生成器可以帮劣系统迚行一些密码加密演算的功能,在此需要启动两次随机数生成器。

5. 设置终端机 (console) 字形:

6. 设置显示亍开机过程中的欢迎画面 (text banner);

7. 设置系统时间 (clock) 不时区设置:需读入 /etc/sysconfig/clock 设置值

8. 接口讴备的侦测不 Plug and Play (PnP) 参数的测试:

根据核心在开机时侦测的结果 (/proc/sys/kernel/modprobe ) 开始迚行 ide / scsi / 网络 / 音效

等接口讴备的侦测,以及利用以加载的核心模块迚行 PnP 装置的参数测试。

9. 用户自定义模块的加载

使用者可以在 /etc/sysconfig/modules/*.modules 加入自定义的模块,则此时会被加载到系统

当中

10. 加载核心的相关设置:

系统会主劢去读取 /etc/sysctl.conf 这个档案的设置值,使核心功能成为我们想要的样子。

11. 设置主机名不初始化电源管理模块 (ACPI)

12. 初始化软件磁盘阵列:主要是透过 /etc/mdadm.conf 来设置好的。

13. 初始化 LVM 的文件系统功能

14. 以 fsck 检验磁盘文件系统:会迚行 filesystem check

15. 迚行磁盘配额 quota 的转换 (非必要):

16. 重新以可擦写模弅挂载系统磁盘:

17. 启动 quota 功能:所以我们丌需要自定义 quotaon 的劢作

18. 启动系统虚拟随机数生成器 (pseudo-random):

19. 清除开机过程当中的临时文件:

20. 将开机相关信息加载 /var/log/dmesg 档案中。

第一次开机后进行的几个简单设置

terminal 启动快捷键  ctrl+alt +t

设置root密码

su - root

sudo passwd root

允许root登录

gksu /usr/sbin/gdmsetup

设置源

sudo gedit /etc/apt/sources.list

sudo apt-get update (只是更新了软件包列表,并没有对软件更新)

ctrl+alt +f1 ~7 各个登录终端

ctrl+d == exit

linux内核被加载的过程的更多相关文章

  1. [driver]linux内核动态加载模块

    问题: 1. 把编译好的模块放到板子/lib/modules对应文件夹下,并且执行了depmod -a, 比如pl2303.ko, 那么下一次插入pl2303的串口线,是否可以识别,也就是自动加载pl ...

  2. linux 内核驱动加载过程中 向文件系统中的文件进行读写操作

    utils.h 文件: #ifndef __UTILS_H__ #define __UTILS_H__ void a2f(const char *s, ...); #endif utils.c 文件: ...

  3. 通过gdb跟踪Linux内核装载和启动可执行程序过程

    作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的:通过对一个简单的可执 ...

  4. Linux设备驱动程序加载/卸载方法 insmod和modprobe命令

    linux加载/卸载驱动有两种方法. 1.modprobe 注:在使用这个命令加载模块前先使用depmod -a命令生成modules.dep文件,该文件位于/lib/modules/$(uname ...

  5. ASM:《X86汇编语言-从实模式到保护模式》第13章:保护模式下内核的加载,程序的动态加载和执行

    ★PART1:32位保护模式下内核简易模型 1. 内核的结构,功能和加载 每个内核的主引导程序都会有所不同,因为内核都会有不同的结构.有时候主引导程序的一些段和内核段是可以共用的(事实上加载完内核以后 ...

  6. 动态加载JS过程中如何判断JS加载完成

    在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析.这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内 ...

  7. Linux服务器配置之加载硬盘

    Linux服务器配置之加载硬盘 1.修改密码 passwd 2.测试密码是否成功 3.查看硬盘信息 fdisk –l 4.格式化分区 fdisk /dev/vdb 5.查看分区 6.快速格式化/dev ...

  8. linux动态库加载RPATH, RUNPATH

    摘自http://gotowqj.iteye.com/blog/1926771 linux动态库加载RPATH, RUNPATH 链接动态库 如何程序在连接时使用了共享库,就必须在运行的时候能够找到共 ...

  9. 有关Linux ipv6模块加载失败的问题

    有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载.     主要检查内容:   ...

随机推荐

  1. 21天学通C++_Day1

    被阿里实习生的第一轮电话面试刷掉以后,幡然醒悟,发现以前学习的C++基础一点都不扎实.为了把基础打扎实,重新学习一遍:为了让自己不放弃,也顺便可以把当天学到的东西记录下来,开始了写博客. 学习书籍:& ...

  2. asp.net core microservices 架构之 分布式自动计算(二)

    一  简介                   上一篇介绍了zookeeper如何进行分布式协调,这次主要讲解quartz使用zookeeper进行分布式计算,因为上一篇只是讲解原理,而这次实际使用, ...

  3. 分布式使用Redis

    为什么我们做分布式使用Redis? https://www.cnblogs.com/yaodengyan/p/9717080.html 绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只 ...

  4. 重温CLR(八 ) 泛型

    熟悉面向对象编程的开发人员都深谙面向对象的好处,其中一个好处是代码重用,它极大提高了开发效率.也就是说,可以派生出一个类,让他继承基类的所有能力.派生类只需要重写虚方法,或添加一些新方法,就可定制派生 ...

  5. 【WCF安全】使用X509证书自定义验证

    接触WCF时间比较短,在项目中要使用X509证书,纠结好几天终于有了结论,因此为了方便日后查阅和园友交流特意单独将部分代码提出,并做以记录. 1.准备工作 制作X509证书,此处用到三个证书名称 导入 ...

  6. LG3195 [HNOI2008]玩具装箱TOY

    题意 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为\(1\cdots N\) ...

  7. Quartz数据库脚本

    QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron Trigger,包括 Cron表达式和时区信息  ...

  8. linux用netstat查看服务及监听端口

    [root@localhost ~]# netstat -nlp netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接 ...

  9. 处理mysql主从中断

    主从同步中断跳过处理步骤: slave stop;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;slave start; 在使用set  global sql_slave_s ...

  10. Centos7手工安装Kubernetes集群

    安装Kubernetes集群有多种方式,前面介绍了Kubeadm的方式,本文将介绍手工安装的方法. 安装环境有3台Azure上的VM: Hkube01:10.0.1.4 Hkube02:10.0.1. ...