Linux内核启动

1 内核编译

  • 解压缩:tar xjf linux-2.6.22.6.tar.bz2
  • 打补丁: path -p1 < ../linux-2.6.22.6_jz2440.patch(其中p1是忽略补丁文件中的一级目录)
  • 配置:
    • 方法一:使用make menuconfig逐项配置
    • 方法二:使用默认配置:
      • 步骤1:执行make s3c2410_defconfig(该文件在目录/arch/arm/configs目录下找到相似的配置文件),
      • 步骤2:执行make menuconfig
    • 方法三:使用厂家提供的配置文件
  • 编译:使用uImage时,使用命令:make uImage (如果添加V=1,会将编译信息更详细的显示出来)
    • 编译第一个文件:arch/arm/kernal/head.S
    • 链接脚本为:arch/arm/kernal/vmlinux.lds

2 内核启动流程

  1. 判断是否支持当前运行单板(单板类型是u-boot启动内核时,传入的机器ID);MACHINE_START/MACHINE_END定义系统支持的单板信息
  2. 建立页表;
  3. 使能MMU;
  4. 跳转到start kernel(第一个C函数);
  5. start kernel -> setup_arch (接卸u-boot传入的启动参数) -> steup_command_line -> reset_init -> kernel_init -> prepare_namespace -> mount_root (挂载根文件系统)
  6. init_post (执行应用程序)

猜你喜欢

转载自www.cnblogs.com/lyndon-jiang/p/11013772.html