系统组成:
Bootloader, Boot parameters, Kernel, Root filesystem
嵌入式linux系统有linux内核与根文件系统两部分构成,两者缺一不可。

内核制作:
1:清除原有配置与中间文件
X86:make distclean
arm:make distclean

2 配置内核(copy其他类似的配置文件为.config)
x86:make menuconfig
arm:make menuconfig ARCH=arm /* nfs与ramdisk启动的区别 */

3 编译内核
x86:make bzImage
arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

/***********************************************************************/
/***********************************************************************/

根文件系统制作:
根文件系统是linux启动时使用的第一个文件系统。没有根文件系统,linux将无法

正常启动。
根文件系统由一系列目录组成,目录中包含了应用程序,C库,以及相关的配置文件


1 创建根文件系统目录
mkdir rootfs
cd rootfs
mkdir bin bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules

2 创建设备文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3

3 安装/etc
tar etc.tar.gz -C /xxx/rootfs /* /etc下的文件一般不会发生改变 */

4 编译内核模块
进入linux内核目录(linux-2.6.29)
make modules ARCH=arm CROSS_COMPILE=arm-linux-

5 安装内核模块
make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs

6 配置busybox
进入busybox目录执行
make menuconfig
a 进入Busybox Setting --
build Options --
* 选中"Build busybox as a static binary",静态链接
* Cross Compiler prefix(arm-linux-)

Installation Options --
* 选中"Don't usr/usr", 选中该项可以避免busybox被安装到宿主系统的/usr目录

下,破坏宿主系统

*Busybox Installation Prefix(/xxx/rootfs)
该选项表明编译后的busybox的安装位置

7 编译,安装busybox
*make ARCH=arm CROSS_COMPILE=arm-linux-
*make install

nfs启动:CONFIG_CMDLINE="root=/dev/nfs rw

nfsroot=192.168.1.103:/nfsroot/rootfs ip=192.168.1.230 console=ttySAC0

mem=64M"

ramdisk启动:CONFIG_CMDLINE="root=/dev/ram rw console=ttySAC0 mem=64M"

嵌入式linux内核和根目录制作的更多相关文章

  1. 制作嵌入式linux内核

    拿到一个嵌入式linux内核代码,首先make distclean 接下来,如果在x86平台,就直接make menuconfig,如果是在ARM平台,就直接make menuconfig ARCH= ...

  2. 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导【转】

    本文转载自:https://my.oschina.net/freeblues/blog/596448 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导 buildroot 是 ...

  3. 嵌入式Linux内核制作【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51291316 1. Linux体系结构 从整体上来分,linux可以分为User ...

  4. 嵌入式linux内核制作、根文件系统制作

    嵌入式系统构成: 主要由bootloader.kernel.以及根文件系统三部分组成. 内核制作步骤: 制作嵌入式平台使用的linux内核制作方法与pc平台上的linux内核基本一致 1.清除原有配置 ...

  5. [国嵌攻略][100][嵌入式Linux内核制作]

    Linux内核制作步骤 1.清除原有配置 make distclean 2.配置内核 选择一个已有的配置文件简化配置 make menuconfig ARCH=arm 3.编译内核 ARCH指明处理器 ...

  6. 嵌入式linux内核是什么?

    linux内核是一种可以被内核动态加载(insmode)和卸载(rmmod)的可执行二进制代码 最简单的内核 #include <linux/module.h> #include < ...

  7. 嵌入式Linux内核tasklet机制(附实测代码)

    Linux 中断编程分为中断顶半部,中断底半部 中断顶半部: 做紧急,耗时短的事情,同时还启动中断底半部. 中断底半部: 做耗时的事件,这个事件在执行过程可以被中断. 中断底半部实现方法: taskl ...

  8. 【内核】嵌入式linux内核的五个子系统

    Perface Linux内核主要由进程调度(SCHED).内存管理(MM).虚拟文件系统(VFS).网络接口(NET)和进程间通信(IPC)5个子系统组成,如图1所示. 图1 Linux内核的组成部 ...

  9. 【总结】嵌入式linux内核中Makefile、Kconfig、.config的关系及增加开机Hello World【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/73772109 为了弄清内核的组织结构,我们先来实现下面这个简单的例子. 一.增加 ...

随机推荐

  1. csu 1550(字符串处理思路题)

    1550: Simple String Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 481  Solved: 211[Submit][Status][ ...

  2. Hadoop(七)YARN的资源调度

    一.YARN 概述 YARN 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操 作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序 YARN ...

  3. sql server 存储过程解密

    Create PROCEDURE [dbo].[sp_windbi$decrypt] () AS /**//* 王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com 调用形式为: ...

  4. log4net 写日志配置

    1. nuget install package log4net 2.站点跟目录新建配置文件 LogWriterConfig.xml <?xml version="1.0" ...

  5. LR参数组取值操作方法

    LR参数组取值操作方法 奶奶的,每次都要重写一次,粘这里,以后备用.这个使用频率高. Action(){//定义一个变量int rNum; //关联参数组,前提是请求的页面中,存在参数组web_reg ...

  6. Codeforces Round #302 (Div. 1) B - Destroying Roads

    B - Destroying Roads 思路:这么菜的题我居然想了40分钟... n^2枚举两个交汇点,点与点之间肯定都跑最短路,取最小值. #include<bits/stdc++.h> ...

  7. Windows 8.1 操作系统常用快捷键

    安装了 windows 8.1 有一段时间了,刚使用时有点儿不太习惯,后面知道了一些常用快捷键后,使用起来习惯多了.下面是一些常用的 Windows 8.1 快捷键: Ctrl + Tab: 访问所有 ...

  8. mvc bundle的介绍及使用 转载自 http://www.ityouzi.com/archives/mvc-bundleconfig.html

    Asp.Net MVC4 BundleConfig文件合并.压缩,网站优化加速 浏览器在向服务器发送请求的时候,请求的文件链接数量是有限制的,如果页面文件少就没有什么问题了,如果文件太多就会导致链接失 ...

  9. HDU 6182 A Math Problem

    暴力. $k$的$k$次方在$k=15$的时候,达到了最大不爆掉的情况. #include<bits/stdc++.h> using namespace std; long long an ...

  10. pycharm的安装教程及大坑

    在根据网上的教程创建新工程后,发现不能调用第三方库,网上大多给的是print('hello world'),己适python解释器用的pycharm默认的也不能发现错误.后来浏览了一篇文章才恍然大悟, ...