CLFS-Embedded的启动脚本包括以下文件 /etc/rc.d/init.d/syslog Linux内核初始化完成后,运行init作为系统的第一个进程,init读取inittab,并按照inittab的指示调用初始化程序. | |
| |
init调用startup,开始初始化系统,startup初始化步骤: 1.挂载虚拟文件系统/proc,/sysfs;/proc是一个只存在于内存中的文件系统,其作用是为用户层程序提供一个接口访问内核数据,从/proc可以获得系统运行状态;/sysfs也是一种存在于内存中的虚拟文件系统,sysfs为每个核心对象创建对应的目录和文件,可以通过/sys查看内核对象,如系统总线设备等.接下来将临时文件系统挂载到/dev,下面的mdev将在/dev创建设备节点,由于mdev是每次启动以后创建设备节点,所以不能直接创建在硬盘上,而是挂载临时文件系统供创建节点,当系统重启后,这个临时文件系统将不复存在. 2.创建设备节点,现代的Linux使用动态创建的方式创建设备节点,在普通的Linux发行版中使用udev创建设备节点,CLFS-Embedded中将使用Busybox提供的mdev代替udev创建设备节点. 3.同步时钟,将系统时间与BIOS时间同步. 4.磁盘检测,这一步检测根文件系统. 5.将根文件系统重新挂为可读写,内核初始化时,已经挂载了根文件系统,但那时是以只读的方式挂的,现在将根文件系统以可读写的方式重新挂. 6.检测文件系统,不仅仅是根文件系统,这里检测除了网络文件系统之后的所有文件系统. 7.设置交换分区(swap),内存总是不够,有了交换分区之后,就可以把不常用的数据交换到硬盘上来. 8.清除临时文件,删除/tmp/*临时文件,创建日志系统所需要的文件. 9.配置本地网络(lo),有些软件通过本地网络进行进程间通信,即使没有网卡也应该配置本地网络. 10.运行/etc/rc.d/init.d/start/下的脚本,这里的脚本是可能的,通常在这里启动系统服务,如网络服务(与外部连接的网络服务,与lo不同),系统日志服务. init调用startup初始化系统之后,将创建六个虚拟终端供用户登陆 | |
| |
运行到这里时,显示器上将显示login:提示符,输入用户,tty将输入的用户名传递给login登陆程序,如果用户名存在,login会提示输入密码,login根据shadow文件判断你输入的密码是否正确,如果正确会打开一个shell,通常是bash,在BELP中是ash,有了shell,就可以在shell中输入命令,对系统进行操作啦. |