从linux启动开始,我们可以去查看linux0.11版的代码
1、开始bootsect.s,这个目的是引导程序,从主引导扇区的引导程序开始,到真实寻址转换位保护模式寻址,然后将内核代码加载到内存固定区域,进行内存分页寻址模式设置。
2、boot引导结束,将执行权交给内核中的main.c函数。
他利用setup.s函数获取系统全局参数,根文件设备号等。
他见一个内存文件系统,即虚拟文件系统ramdisk。
加载根文件系统(initrd)到ramdisk。
完成所有设备的初始化,然后kernel照着initrd中的init一步一步地加载驱动。在initrd文件中所放入的模块,必须是与操作系统同一版本kernel所编译的模块。
3、切入image所指示的硬盘中实体操作系统rescue mode是直接通过kernel加载initrd进入单纯的内存开机的虚拟操作系统)。
4、init进程,在切入到用户操作系统之后,首先执行linux的init进程(pid=1), init进程再去加载/etc/rc.d/init.d/functions从而启动服务。
init进程完成了对应用程序的各项配置(进程ID、执行时机、命令、终端、下一个执行的进程等),并最终依据配置执行了应用程序。
配置文件inittab里有着对应用程序的详细配置,配置C库:首先我们创建lib目录,这个目录将用来存放C库的文件:mkdir CCJ/lib 。进入你存放C库文件的目录下,将C库文件复制到CCJ/lib目录下:cp *.so* /CCJ/lib -d。