前期工作: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. 久未更 ~ 二之 —— TextView 文字省略

    > > > > > 久未更 系列一:关于TextView内容超过n行文尾省略问题 //在 TextView 中 实现 超过n行省略 为.. 可用以下属性 实现 andro ...

  2. 独立服务器 云主机、VPS以及虚拟主机三者之间的区别是什么?哪个更好?

    https://www.zhihu.com/question/21442353#answer-2442764 云主机(如 EC2,[1] )和 VPS (如 Linode,[2])都是完整的操作系统( ...

  3. Diffie-Hellman密钥交换

    Diffie-Hellman密钥交换(DHKE)是由Whitfield Diffie和Martin Hellman在1976年提出的.密钥交换方案提供了实际中密钥分配问题的解决方案,即允许双方通过不安 ...

  4. 一分钟搭建Vue2.0+Webpack2.0多页面项目

    想要自己一步步搭建的比较麻烦,不是很推荐,最少也要使用vue-cli,在其基础上开始搭建,今天我的主题是一分钟搭建,那么常规方法肯定不能满足的, 而我用的方法也很简单,就是使用已经配置完成的demo模 ...

  5. Xcode 单元测试

    项目创建后自动创建的单元测试文件夹, 文件夹名为项目名+tests, xcode6后貌似没有选择是否添加测试target的选择了. 默认生成的如下图 提供的断言如下 typedefNS_ENUM(NS ...

  6. CSS深入理解学习笔记之relative

    1.relative和absolute的相煎关系 限制作用:①限制left/top/right/bottom定位:②限制z-index层级:③限制在overflow下的嚣张气焰. relative和f ...

  7. Windows核心编程&作业

    1. 作业内核对象 允许将进程组合在一起并创建一个"沙箱"来限制进程能够做什么.我们可以将作业内核对象想象成一个进程容器(即使只有一个进程也具有相当的重要性) 限制包括可以分配的最 ...

  8. java 基本数据类型与变量类型

    Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. byte,short,char,int,long,float,double Java语言支持的变 ...

  9. 【转】AWK常用

    awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个字段,字段间由FS分隔 FS 输入 ...

  10. 手把手 学习Git

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...