环境:ubuntu14.04  内核版本 linux 3.13.0   OK6410

   内核编译环境   linux 3.0.1   

uboot版本    1.1.6

     交叉编译工具链   arm-linux-gcc 4.3.2

1、  编译前要首先安装好交叉工具链,安装过程见博文http://www.cnblogs.com/apolloenterprise/p/4324726.html

2、  编译uboot

  下载uboot源码,下载地址 http://pan.baidu.com/s/1qWINJre 》》》目前使用的是 uboot1.1.6

  进入uboot源码目录,

  $ make clean

  $ make forlinx_nand_ram256_config

  $ make  ARCH=arm CROSS_COMPILE=arm-linux-

  会生成  u-boot.bin

3  配置及编译kernel

  下载kernel源代码,下载地址 http://pan.baidu.com/s/1sjvfnKp   》》》目前使用的是 kernel 3.0.1

进入kernel源码目录

  $ make menuconfig ARCH=arm

  进入图形界面,进行相关配置(),如果需要采用nfs方式挂载根文件系统,此时需设置

  $ make uImage ARCH=arm  CROSS_COMPILE=arm-linux-

      

  第一次编译时会显示错误如下:

  (1)"mkimage" command not found - U-Boot images will not be built
  make[1]: *** [arch/arm/boot/uImage] 错误 1
  make: *** [uImage] 错误 2

  为避免此错误修改如下:

  进入  Uboot源代码目录

  cp mkimage /bin

  修改完成,再次编译即可

  (2)

  Unable to find the ncurses libraries or the
   required header files.
      'make menuconfig' requires the ncurses libraries.
   Install ncurses (ncurses-devel) and try again.

  解决:sudo apt-get install libncurses5-dev

  Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库

  在内核源代码目录的  arch/arm/boot 中  生成uImage

    

4、 制作文件系统 

  linux可能包含多个文件系统,根文件系统必须要有

  (1) 创建目录

  $ mkdir rootfs

  $ cd rootfs

  $ mkdir bin dev etc lib proc sbin sys usr mnt tmp var

  $ mkdir usr/bin usr/lib usr/sbin  lib/modules

  (2) 创建设备文件

  $ cd rootfs/dev

  $ mknod -m 666 console c 5 1

  $ mknod -m 666 null c 1 3

  (3)添加配置文件

  配置文件下载地址  http://pan.baidu.com/s/1kTyFipL 》》》》链接

  $ tar zxvf etc.tar.gz

  $ cp etc/* rootfs/etc/ -rf

  (4)添加内核模块

  $ 进入编译使用的内核源代码

  $ make modules ARCH=arm CROSS_COMPILE=arm-linux-

  $ make modules_install ARCH=arm INSTALL_MOD_PATH=/work/rootfs     (/work/rootfs 为制作的文件系统目录)

  运行完成后,可在/work/rootfs/lib/modules中看到新文件

  注意:如果运行   make modules_install 出现如下错误:

  ##Warning: you may need to install module-init-tools
  See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt
  make: 没有什么可以做的为 `/work/rootfs'

  则需要对 module-init-tools进行更新,更新方法如下:

    接下来, 按照下列步骤安装module-init-tools工具包:

    下载地址:http://download.chinaunix.net/download.php?id=13907&ResourceID=6901
    $ tar -zxvf module-init-tools-3.2.2.tar.gz  
    在module-init-tools-3.2.2目录下,  
    $ ./configure --prefix=/  
    $ make moveold  
    $ make all install  
    $ ./generate-modprobe.conf /etc/modprobe.conf

    执行过这几行代码就可以使用make modules_install

  

  (5)编译安装busybox  

  busybox 下载地址:http://pan.baidu.com/s/1kTLFLVh》》》

  $ 进入busybox 目录

  $ make menuconfig

    setting-build Options-

    选中    "Build busybox as a static binary"

    "Cross Compiler prefix "  填写  arm-linux-

    setting-Installation Options-

    选中  “Don't use/use”   ,   此项可避免busybox被安装到宿主系统的usr目录中,破坏宿主系统

    "(./_install)busyBox installtion prefix"   填写   /work/rootfs      此目录为制作的rootfs的路径

  $ make

  $ make install

  在/work/rootfs/bin 中新生成许多命令

【原创】-- uboot,kennel,fs,rootfs 编译制作的更多相关文章

  1. 嵌入式 uboot、fs、kernel制作和烧录简记-hi3518c

    NULL RAM : mkdir ramdisk_test  临时挂在点 dd if=/dev/zero of=rootfs.ramdisk bs=1k count=10000 建立空硬盘//1500 ...

  2. RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像

    前言   上一篇搭建好了ubuntu宿主机开发环境,本篇的目标系统主要是开发linux+qt,所以需要刷上billdroot+Qt创建的系统,为了更好的熟悉原理和整个开发过程,选择从零开始搭建rk35 ...

  3. RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

    前言   buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪.  于是本篇就使用ubu ...

  4. u-boot的配置、编译及链接

    第一次写技术博客,还有些兴奋呢.我是CrazyCatJack,大家可以叫我CCJ或者疯猫.我即将成为一名嵌入式Linux的驱动工程师,现在还是一枚大四狗,呼呼~大学期间做了一些项目和比赛,都是基于32 ...

  5. 编译制作Linux 3.18内核rpm包(升级centos6.x虚拟机内核)

    介绍 openstack平台需要使用各种Linux发行版模板镜像,其制作方法主要有两种,要么是基于各大Linux发行版ISO光盘手动制作,要么是使用官方提供的模板镜像再做修改 之前制作的opensta ...

  6. ARM开发板系统移植-----rootfs的制作

    前面两篇文章分别介绍了mini2440开发板上运行的bootloader和kernel,到这里系统启动后其实是停留在一个“僵死”的状态---无法挂载根文件系统. 这里将介绍如何制作一个根文件系统,并且 ...

  7. 第2阶段——编写uboot之硬件初始化和制作链接脚本lds(1)

    目标: 1.关看门狗 2.设置时钟 3.初始化SDRAM (初始化寄存器以及清除bss段) 4.重定位 (将nand/nor中代码COPY到链接地址上,需要初始化nandflash,读flash) 5 ...

  8. 第2阶段——编写uboot之启动内核和制作Makefile(2)

    目标: 1   添加头文件setup.h和serial.h 2   写main函数   2.1 帮内核设置串口0, (内核启动会打印出启动信息) 2.2把内核读入到SDRAM 2.3设置参数(参考u- ...

  9. 第1阶段——uboot分析之仿照bootm制作hello命令(7)

    仿照bootm命令生成来制作一个hello命令,功能:打印出hello,world!和参数值 1.点击New File ,创建cmd_hello.c将./common/cmd_bootm.c的头文件复 ...

随机推荐

  1. Soket编程

    基本概念 lIP地址 每台联网的电脑都有一个唯一的IP地址. 长度32位,分为四段,每段8位,用十进制数字表示,每段范围 0 ~ 255 特殊IP:127.0.0.1 用户本地网卡测试 版本:V4(3 ...

  2. uva1587BOX

    给定6个矩形的长和宽wi和hi(1≤wi,hi≤1000),判断它们能否构成长方体的6个面. 思路是首先排序,每个矩形都是x<y,就是短边x,长边y,然后对六个矩形进行二级排序,排序以后构成长方 ...

  3. spring2.0包说明【转】

    Spring压缩包目录说明 关键字: sring jar 1. Spring压缩包目录说明 aspectj目录下是在Spring框架下使用aspectj的源代码和测试程序文件. Aspectj是jav ...

  4. http://www.cnblogs.com/20135131zxy/

    一.实验内容 1. 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试Java程序 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门( ...

  5. JS中的for/in语句和arguments参数

    在js应用中,有时候我们会遇到希望定义一个函数可以被不同情况调用,比如参数个数不固定的情况. 可以使用for/in语句和arguments参数解决. 举个简单例子:定义一个计算总和的函数,需要计算的数 ...

  6. jquery selector checkbox

    $("#competencyList input:checkbox").on("click", function () { var checkedCompete ...

  7. 详解log4j2(上) - 从基础到实战

    log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量.可配置的审计型日志.基于插件架构的各种灵活配置等.如果已经掌握 ...

  8. VC++ CTreeCtrl 使用NM_CLICK和TVN_SELCHANGED

    //这是当CTREECTRL控件点击时NM_CLICK的处理函数 void CDriverSelCtrl::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult) { C ...

  9. noip2006 2^k进制数

    设r是个2k进制数,并满足以下条件: (1)r至少是个2位的2k进制数. (2)作为2k进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后,则q的总位数不超过w ...

  10. JS出现illegal character非法字符提示

    引用js文件,js文件内的汉字在页面显示乱码 解决方式: a. 保持js文件编码与jsp页面编码格式一致: b. 在引入js文件时,在script中添加charset=""属性,指 ...