说明:15系列将暂时不会更新
缘由:
- 使用编译好的内核,没有讲到怎样配置内核编译选项。
- 主要原因:太他妈难了,如果说嵌入式是要先掌握内核的编译,但是这个,是如何把系统给弄起来,快崩溃了,不如直接上手gentoo,
稍微简单点,还能亲自锻炼动手能力。
系统启动流程:POST–>BIOS(Boot Sequence)–>Bootloader–>Kernel(initrd,initramfs)–>init(/etc/inittab)
/etc/inittab
设定默认运行级别
系统初始化(/etc/rc.d/rc.sysinit)
运行执行级别的服务脚本
/etc/rc.d/init.d/
/etc/rc.d/rc#.d
rc0.d–rc6.d
K*
S*
00-99:运行次序
启动虚拟终端
启动图形终端
/etc/rc.d/rc.sysinit
检测并以读写方式重新挂载根文件系统
设定主机名
检测并挂载/etc/fstab中的其他文件系统
启动swap分区
初始化外围硬件设备的驱动
根据/etc/sysctl.conf设定内核参数
激活udev和selinux
清理过期锁和PID文件
装载键映射
busybox:一个命令模拟上百个命令
mingetty:
PAM:Plugable Authentication Module
/etc/pam.d/*
nis:
/etc/nsswitch.conf
busybox:
http://zh.wikipedia.org/wiki/BusyBox
例如Android/树莓派就是基于Linux内核和busybox。
可以使用下面这样组合来跑起来一个系统:
kernel+initramfs(busybox)–>rootfs(busybox)
如何实现部分编译:
make dir/
make driver/net/只编译某一模块:
make driver/net/pcnet32.ko将编译完成的结果防止别的目录中:
make O=/tmp/kernel
如何编译安装busybox:
1 |
|