linux内核被加载的过程

二,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

时间: 2024-10-01 03:11:34

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

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

utils.h 文件: #ifndef __UTILS_H__ #define __UTILS_H__ void a2f(char *s); #endif utils.c 文件: #include <linux/fs.h> #include <asm/segment.h> #include <asm/uaccess.h> #include <linux/buffer_head.h> #include <linux/string.h> #inclu

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

作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的:通过对一个简单的可执行程序用gdb进行代码的跟踪,剖析linux内核是如何动态和静态装载和启动程序的,进而总结linux内核可执行程序加载的过程. 一.实验过程 1.编写一个简单的Exec的创建进程的函数 2.打开gdb,并设置好如下断点 3.开始跟踪,找到第一个断点. (主程序还未创建子进程) 4.继续在此断点处逐步跟踪 5.

用uboot 烧写uboot linux内核 文件系统到nandflash的 过程以及bootm go命令启动与区别

原文:http://blog.sina.com.cn/s/blog_6b94d5680100nd48.html 文章结构结构顺序有变化-1:烧写uboot0: bootargs bootcmd 命令参数的设置1:制作yaffs2的过程2:烧写yaffs2的过程3:制作uimage 的过程4: 烧写uiamge的过程5:uimage zimage vmlinux 的区别6: uboot传递给内核的参数结构 tag7:bootm go 的 启动过程 以及区别8:加载地址 入口地址 等 ///////

linux开机自动加载分区/etc/fstab配置文件

解释一下/etc/fstab,开机自动挂载 [[email protected] home]# cat /etc/fstab LABEL=/                 /                       ext3    defaults        1 1 LABEL=/boot             /boot                   ext3    defaults        1 2 tmpfs                   /dev/shm  

log4j的学习和log4j在程序中使用的加载作用过程

昨天进行代码评审的时候,大家都纠结在了日志信息应该如何输出上,其实我想大家应该一直都在使用log4j来对日志信息进行输出,但是未想应该有很大一部分人对log4j是不了解的,我遇到这个问题的时候也到网上找了一些参考资料,这些参考资料更多的是去介绍以下是怎么使用的.我们知道在使用log4j的时候我们需要将log4j对应的jar包放在lib下  然后将log4j.properties配置文件放在src下,也就是类的根目录下.我看很多的文章都是介绍在log4j.properties的配置文件中是如何配置

JDBC加载的过程

jdbc加载的过程如图所示. 桥接模式请参照:设计模式:桥接模式 blog宗旨:用图说话

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

有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载.     主要检查内容:   ipv6地址是否存在    ifconfig |grep inet6     没有默认inet6地址       ipv6模块是否存在    # modinfo -n ipv6    /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6.

Linux基础: 系统加载过程和运行级别含义

BIOS 有固化代码指向mbr,mbr指向grub(/boot/grub/下有很多引导配置信息),grub里可以配置多种linux内核vmlinux文件. 启动内核以后就开始加载各种驱动模块并进行系统初始化.系统初始化主要读取/etc/inittab(指定默认运行级别)和/etc/init/下各种配 置文件(指定默认启动服务,终端数目,快捷键……) ,运行完这些系统就启动完毕. 系统运行级别 0-关机 1-单用户 2-不带网络模式的多用户 3-多用户 4-不用 5-图形界面 6-重新启动 在命令

u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统

http://www.linuxidc.com/Linux/2012-09/70510.htm  来源:Linux社区  作者:赵春江 uboot最主要的功能就是能够引导内核启动.本文就介绍如何实现该功能,并组成一个最简单的系统,这不仅要移植uboot,还要移植linux内核及创建一个根文件系统. 首先我们对nandflash进行分区,规划好每个文件存放在nandflash的位置.下面是nandflash的分区: 第0分区:0x000000000000-0x000000080000为uboot区