- 下载内核源代码
git clone https://github.com/friendlyarm/linux.git -b nanopi2-v4.4.y --depth 1 cd linux
- 编译内核镜像
touch .scmversion make ARCH=arm64 nanopi3_linux_defconfig make ARCH=arm64
编译成功结束后,新生成的内核是 arch/arm64/boot/Image,目录arch/arm64/boot/dts/nexell/下还包括新的DTB文件(s5p6818-nanopi3-rev*.dtb),用于替换掉SD卡boot分区下对应的文件。
Linux内核启动过程
- 内核解压(汇编+C)
- 板级引导阶段(汇编)
- 通用内核启动阶段(C语言):
init/main.c -> start_kernel()
start_kernel()主要完成内核早期初始化工作
rest_init()主要是启动多任务调度,并创建了两个进程(线 程),然后自己进入空闲状态
kernel_init()主要启动多处理器任务调度,以及初始化控制台
init_post()标志着内核启动的结束,并启动了第一用户进程