嵌入式linux系统的构建
前期工作: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系统的构建的更多相关文章
- 4种用于构建嵌入式linux系统的工具_转
转自:4种用于构建嵌入式linux系统的工具 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备.令人震惊的支持了各种芯片,使得Linux 可以应用于大大小小 ...
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- 浅析嵌入式Linux系统的构成和启动过程
在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结. 一.嵌入式Linux系统构 ...
- 嵌入式Linux系统的构成和启动过程
转自:http://blog.csdn.net/weiganyi/article/details/11561859 在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机 ...
- 嵌入式linux系统中,lsusb出现unable to initialize libusb: -99 解决办法 【转】
转自:http://cpbest.blog.163.com/blog/static/41241519201111575726966/ libusb是linux系统中,提供给用户空间访问usb设备的AP ...
- 基于s5pv210嵌入式linux系统sqlite3数据库移植
基于s5pv210嵌入式linux系统sqlite3数据库移植 1.下载源码 http://www.sqlite.org/download.html 最新源码为3080100 2.解压 tar xvf ...
- 嵌入式Linux系统运行流程图
/************************************************************************ * 嵌入式Linux系统运行流程图 * 说明: * ...
- ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
本文转载自http://useless20.blog.163.com/blog/static/237409982010227127576/ 嵌入式linux系统与主机通过串口传输文件 我想如果要从PC ...
- Holer实现外网访问ARM嵌入式Linux系统
公网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从公网也能访问内网ARM嵌入式Linux系统? 本文将介绍使用holer实现的具体步骤. 1. 准备工 ...
随机推荐
- git生成sshkey
- git学习网址
git的学习网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
- servlet多线程问题
Servlet本身是单实例的,这样当多个用户同时访问某个Servlet时,会访问该唯一的Servlet实例中的成员变量,如果对成员变量进行写入工作,那就会导致Servlet的多线程问题,即数据不一致. ...
- uwsgi wsgi nginx centos7.2部署flask
请原谅我比较懒,直接粘贴onenote笔记了 方法一测试完成后,建议用方法三:uwsgi,ginx部署
- C# 处理Word自动生成报告 四、程序处理
C# 处理Word自动生成报告 一.概述 C# 处理Word自动生成报告 二.数据源例子 C# 处理Word自动生成报告 三.设计模板 C# 处理Word自动生成报告 四.程序处理 现在说一下程序处理 ...
- requests关于Exceeded 30 redirects问题得出的结论
昨天一个朋友在爬网页时出现的一个问题,以及后续我对这个问题进行了简单的测试. 先说出现的问题的简单描述. 首先是使用urllib请求网页: #urllib.request发起的请求 import ur ...
- relative 和 absolute 定位关系
问题: relative 和 absolute 之间的关系是什么?有什么区别? 那,答案呢? relative 相对定位, 以自己没有设置relative 属性之前的位置来定位,占用没有设置rela ...
- Windows脚本修改主机名-不重启
windows通过脚本方式修改主机名的方法有很多种,下面介绍修改注册表方式的脚本. 使用方法: 1 打开cmd,假如脚本名为ModifyHostname.bat 2 执行脚本,并加入脚本参数,其中第一 ...
- junit测试套件
在实际项目中,随着项目进度的开展,单元测试类会越来越多,可是直到现在我们还只会一个一个的单独运行测试类,这在实际项目实践中肯定是不可行的.为了解决这个问题,JUnit 提供了一种批量运行测试类的方法, ...
- java 表现层:jsp、freemarker、velocity
在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术 优点: 1.功能强大,可以写java代码 2.支持jsp标签(jsp tag) 3.支 ...