前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍

b.开发板可以pc,linux 三者可以互相ping通

c.配置好nfs服务器:同样在嵌入式的童年中有介绍

一.嵌入式linux内核的制作(这里使用的国嵌提供的linux-ok6410内核,附带内核配置文件config-file)

a.进入内核目录清除原有配置和中间文件:

make clean

b.配置内核:

arm平台:make menuconfig ARCH=arm

将内核配置文件拷贝到内核目录中config-file
查看cpu是否对应:system type->arm system type(samsung s3c64xx):对的,保存,退出

c.编译内核:make uImage ARCH=arm CROSS_COMPILE=arm-linux-(这里需要mkimage工具,将该工具(mkimage在uboot的tools目录中,将它放到交叉编译工具链中/bin 中))             cp uImage ./tftpboot

tftp uImage 0xc0008000 (将uImage下载到开发板)

bootm 0xc0008000(启动内核)这里启动会失败,因为还没有挂载根文件系统。

二.根文件系统制作

1.   mkdir rootfs (创建根文件系统主目录)

cd rootfs

2.创建常见子目录

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

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

3.向目录中添加一些必备的设备文件

cd rootfs/dev

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

4.加入配置文件

tar zxvf etc.gar.gz

cp etc/* rootfs/etc/ -rf

三.编译安装内核模块并添加到rootfs中

make modules ARCH=arm CROSS_COMPILE=arm-linux-

make modules_install ARCH=arm INSTALL_MOD_PATH=/XXX/rootfs

cd rootfs/lib/modules/2.6.35-embedsky/kelnel/drivers/scsi   我们能看到一些.ko文件.

四.配置busybox(精通嵌入式中有提供可以使用的,一些常用的shell指令)

1.   tar zxvf busybox....tar.gz

cd busybox ...

2.  make menuconfig ARCHarm CROSS_COMPILE=arm-linux-

Busybox setting--->

build Options--->

选中“build busybox as a static binary”,静态链接。

3.  在同一页面--->Cross compiler prefix(arm-linux-).

4.  installation Options-->
选中“Don not use/usr”,选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统。......
Busybox Installation Prefix(/xxx/rootfs)

该选项表明编译后的busybox的安装位置。
路径要指对,否则会安装失败(在Don not use/usr同一页面)。

安装busybox :make install

cd rootfs/bin
发现有很多的命令
根文件系统的制作完成

五.挂载嵌入式文件系统

initramfs挂载根文件系统:

cd rootfs

ls

ln -s ./bin/busybox init 创建软连接 :在当前目录下为./bin/busybox 创建软连接init

make menuconfig ARCH=arm

general setup->initial ram filesystem and ram disk勾上->
在该项的下一项填上根文件系统的目录。/home/kerne-lesson/rootfs
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
cp arch/arm/boot/uImage  /tftpboot

环境变量设置
setenv bootargs noinitrd console=ttySAC0,115200

包含两个部分:文件系统,内核-》uImage

----------------------------------------------------------------------

nfs挂载根文件系统:

cd linux-ok6410
1. make menuconfig ARCH=arm
general setup->initial ram filesystem and ram disk取消-》
file system->network file system->root file system on nfs勾上
退出配置,进行内核编译

2.make uImage ................
3.启动参数的配置:
setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs(表示使用nfs作为根文件系统)rw nfsroot=192.168.1.104(之前配置好的nfs服务器的地址):/home/lesson-kernel/rootfs ip=192.168.1.102(开发板ip):192.168.1.104:192.168.1.1:255.255.255.0:(中间为主机名):eth0(将ip地址赋值给eth0这个网卡):off(关闭动态ip获取)。
/etc/init.d/nfs restart
tftp c0008000 uImage
bootm c0008000

这样嵌入式linux系统就构建好了。

嵌入式linux系统的构建的更多相关文章

  1. 4种用于构建嵌入式linux系统的工具_转

    转自:4种用于构建嵌入式linux系统的工具 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备.令人震惊的支持了各种芯片,使得Linux 可以应用于大大小小 ...

  2. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  3. 浅析嵌入式Linux系统的构成和启动过程

    在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结. 一.嵌入式Linux系统构 ...

  4. 嵌入式Linux系统的构成和启动过程

    转自:http://blog.csdn.net/weiganyi/article/details/11561859 在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机 ...

  5. 嵌入式linux系统中,lsusb出现unable to initialize libusb: -99 解决办法 【转】

    转自:http://cpbest.blog.163.com/blog/static/41241519201111575726966/ libusb是linux系统中,提供给用户空间访问usb设备的AP ...

  6. 基于s5pv210嵌入式linux系统sqlite3数据库移植

    基于s5pv210嵌入式linux系统sqlite3数据库移植 1.下载源码 http://www.sqlite.org/download.html 最新源码为3080100 2.解压 tar xvf ...

  7. 嵌入式Linux系统运行流程图

    /************************************************************************ * 嵌入式Linux系统运行流程图 * 说明: * ...

  8. ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    本文转载自http://useless20.blog.163.com/blog/static/237409982010227127576/ 嵌入式linux系统与主机通过串口传输文件 我想如果要从PC ...

  9. Holer实现外网访问ARM嵌入式Linux系统

    公网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从公网也能访问内网ARM嵌入式Linux系统? 本文将介绍使用holer实现的具体步骤. 1. 准备工 ...

随机推荐

  1. 审计日志中的AOP

    审计跟踪(也称为审核日志)是一个安全相关的时间顺序记录,记录这些记录的目的是为已经影响在任何时候的详细操作,提供程序运行的证明文件记录.源或事件 MVC 自定义一个过滤器 public class A ...

  2. HtmlHelper总结

    HTML helper是在视图页面上操作HTML元素时可以调用的方法,还包括URL helper和AJAX helper.这些帮助方法都为了使得操作HTML更加容易.分为两类:a.编辑和输入帮助类b. ...

  3. php中使用head进行二进制流输出,让用户下载PDF等附件的方法

    http://blog.csdn.net/jallin2001/article/details/6872951 在PHP的手册中,有如下的方法,可以让用户方便的下载pdf或者其他类似的附件形式,不过这 ...

  4. xml报错 Parse Fatal Error :在实体引用中,实体名称必须紧跟在'&'后面

    修改jndi配置文件中的密码后,重启tomcat报错如下  实际问题是xml中默认’&’是非法字符,用     &   替代

  5. 详细介绍关联规则Apriori算法及实现

    看了很多博客,关于关联规则的介绍想做一个详细的汇总:  一.概念                                                                     ...

  6. JavaScript ES6 Arrow Functions(箭头函数)

    1. 介绍 第一眼看到ES6新增加的 arrow function 时,感觉非常像 lambda 表达式. 那么arrow function是干什么的呢?可以看作为匿名函数的简写方式. 如: var ...

  7. linux_ssh

    什么是ssh? 配置文件位置:/etc/ssh/sshd_config 远程登录和为其他网络提供安全的加密数据传输协议,默认端口22,默认协议是SSH2 # 远程终端通过ssh连接服务器管理服务器 # ...

  8. HTML学习(一)

    文本输出/超链接 <!--/* * @<h1></h1>到<h6></h6>六个h标签,分别表示不同大小的字体.h1最大,h6最小 * @< ...

  9. jdk源码->集合->LinkedList

    类的属性 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E&g ...

  10. 【转】12 TOP Command Examples in Linux

    12个top命令 1. # top 2. # top,后输入shift+O,在“Current Sort Field:”中选左边的field对应的字母进行排序. 3. # top -u tecmint ...