用busybox制作并配置根文件系统

http://blog.chinaunix.net/uid-26758020-id-3208951.html
===========================================================================
一、根文件系统和busybox

1) 在~目录下,创建一个rootfs目录,将其制作为nfs,目录结构如下(写一个脚本script.sh):
mkdir bin dev etc lib mnt opt proc sbin srv sys tmp usr var
cd etc 
mkdir init.d network
cd network
touch if-down.d if-post-down.d if-pre-up.d if-up.d
cd ../../usr
mkdir bin lib sbin
cd ../var
mkdir run
cd ../
2) 解压 mc2440 下的 busybox-1.9.1.tar.bz2 到 /home/akaedu/下,得到文件夹busybox-1.9.1
$ tar zxvf busybox-1.9.1.tar.bz2
3) 进入内核目录
$ cd busybox-1.9.1
4) 修改Makefile,找到 (此处需修改Makefile)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= 
改为:
ARCH ?= arm (后面不能有空格)
CROSS_COMPILE ?= arm-linux-
5) 以缺省配置为起点做进一步的配置
$ make defconfig
$ make menuconfig
在菜单中做如下配置:
#1 选中 BusyBox Settings——> Installation Options——>BusyBox installation prefix,设置为/home/akaedu/rootfs,busybox编译后安装到这个目录
#2 根据需要裁剪各命令。但是Shell——>Choose your default shell选项一定要保留一个默认shell(如ash),
(如果没有默认shell,将不会创建/bin/sh这个链接,而一般的shell脚本都是以#!/bin/sh开头的,若找不到/bin/sh就不能执行。)
6) 编译和安装busybox
$ make
$ make install
7) linuxrc需读取设备文件/dev/console和/dev/null,我们手动创建这些设备文件:
$ cd rootfs/dev
$ sudo mknod -m 600 console c 5 1
$ sudo mknod -m 666 null c 1 3
常见设备文件的设备号可以从内核代码的Documentation/devices.txt文件中查到
8) 创建一个启动配置文件:~/rootfs/etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty 115200 s3c2410_serial0
::restart:/sbin/init
::shutdown:/bin/umount -a -r
9) 启动的过程首先执行rcS启动脚本,创建这个脚本~/rootfs/etc/init.d/rcS (根据/etc/fstab配置文件提供的信息mount一些fs)
#!/bin/sh
mount -a
这个脚本需加可执行权限:chmod +x rcS
10) 创建/etc/fstab配置文件
#<file name> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
sys /sys sysfs defaults 0 0
11) 执行完rcS,要执行respawn(如上8)),需创建s3c2410_serial0设备文件
$ cd rootfs/dev
$ sudo mknod -m 600 s3c2410_serial0 c 204 64
这个设备号在内核代码的Documentation/arm/Samsung-S3C24XX/Overview.txt中可查到
12) 打开终端会提示输入用户名和密码后才启动shell,需创建帐号文件passwd和group
~/rootfs/etc/passwd文件内容为:
root::0:0:root:/:/bin/sh
~/rootfs/etc/group文件内容为:
root::0:
现在就创建了一个root帐号,没有密码。如需密码,可以把主机上的/etc/shadow文件中的root帐号的那一行放到开发板的根系统中。

二、glibc
由于busybox需要glibc共享库的支持,下面将在根文件系统中安装glibc。

1) 解压crosstool.tar.bz2到/opt/目录下,得到文件夹crosstool
$ tar  zxvf crosstool.tar.bz2
2) 把共享库拷到根文件系统哦~/rootfs/lib目录下
$ cd /opt/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux/lib
$ cp -dp * /home/akaedu/rootfs/lib
3) 到~/rootfs/lib目录下删除掉所有的静态库和一些不常用的库。
$ rm *.a
$ rm *.o
现在通过NFS启动开发板,应该可以成功启动到shell下了。

三、mdev
先前我们在根文件系统的/dev目录下手动创建了三个设备文件:console、null和s3c2410_serial0,内核里还有很多设备驱动需要通过设备文件提供给应用程序访问,若一个个手动创建太麻烦且容易出错,busybox提供mdev程序可以从sysfs中读出内核提供的设备驱动信息,在/dev目录下自动创建相应的设备文件并为这些设备文件命名。

1) 把以下几行附加到启动脚本~/rootfs/etc/initd/rcS的末尾
mount -t tmpfs mdev /dev
mdev -s
mkdir /dev/input
ln -s /dev/mice /dev/input/mice
2) mdev还需要一个配置文件mdev.conf,用于指定各设备文件的所有者和权限,其格式可参考busybox源代码中的docs/mdev.txt。我们不做特别的设置,但这个文件需存在,因此创建一个空文件。
$ touch rootfs/etc/mdev.conf

现在重新启动开发板,从minicom可以看到/dev目录下创建了很多设备文件,而主机上查看NFS目录~/rootfs/dev却仍然只有先前的三个设备文件,想一想为什么?

四、系统时钟

1) 将主机上的时区文件拷贝到开发板根文件系统
$ cp /etc/localtime ~/rootfs/etc
2) 在启动脚本~/rootfs/etc/init.d/rcS中添加一条命令
hwclock --hctosys
3) 修改开发板系统时钟
#data 051815232012
Wed May 15:23:00 CST 2011
这时关闭系统,时钟信息还是会丢失。若在上述命令后用hwclock命令写到硬件RTC时钟,在系统断电期间RTC时钟由电池维持,下次启动通过hwclock --hctosys仍然可以将系统时钟设定正确。

五、网络配置
在bootloader中设置的开发板IP地址仅在bootloader阶段与主机通信时起作用。
若是NFS Root方式启动,系统启动后的IP地址是由内核启动参数中的NFS设置决定的,这样系统启动后仍然可以读取主机的NFS导出目录。
若是Nand Flash根文件系统启动,则启动后需重新配置IP地址和激活网络接口,我们可以把配置写在启动脚本~/rootfs/etc/init.d/rcS中:

1) 在启动脚本~/rootfs/etc/init.d/rcS添加
ifup -a
2) 添加一个配置文件~/rootfs/etc/network/interfaces:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1

六、httpd
busybox自带了一个Web服务器程序httpd
1) 在在启动脚本~/rootfs/etc/init.d/rcS添加如下一行
httpd -h /srv/www
2) 在根文件系统中创建服务目录
$ mkdir -p rootfs/srv/www/cgi-bin
现在启动开发板系统,试验以下功能
#1 编辑一个index.html放在~/rootfs/srv/www下,从主机上打开浏览器,输入开发板的IP地址看能否浏览
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
hello,man!
</head>

<body>
how do you do!
</body>
</html>
3) 编译一个shell脚本,加可执行权限,放在~/rootfs/srv/www/cgi-bin,从主机打开浏览器,输入该脚本的地址(如:)
#!/bin/sh
echo "Content-Type:text/plain"
echo
ls -l

七、将自己定制的根文件系统下载到开发板上运行

转载于:https://www.cnblogs.com/iplus/archive/2012/10/26/4467381.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国机器人产业发展报告(2018)正式发布!

来源&#xff1a;机器人创新生态摘要&#xff1a;2018年8月16日&#xff0c;《中国机器人产业发展报告&#xff08;2018&#xff09;》于2018世界机器人大会主论坛上正式发布&#xff0c;该报告为工信部2016-2018年专项《建立我国机器人团体标准体系与产业信息资源库》的阶段性…

❤️ 给你的Linux把把脉(内存、磁盘、CPU、网络)❤️

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。 今日重点&#xff1a; ① 学会查看linux各种状态&#xff0c;包括&a…

团结就是力量,TeamCola浅谈创业团队腾云驾雾的归国征程

记得网上曾流传过这样一句话&#xff1a;“不怕神一样的对手&#xff0c;就怕猪一样的队友”&#xff0c;相信看过的人都会心一笑&#xff0c;明白与优秀的搭档默契地合作有多重要。“你需要信任你伙伴的能力和责任心&#xff0c;而信任的基础则是开放和透明——在一个扁平而高…

6.MySQL数据库与数据表操作

数据库的操作&#xff1a;数据库创建 &#xff1b;数据库删除 数据表的操作&#xff1a;数据表的创建&#xff1b;数据表的修改 (表结构) &#xff1b;数据表的删除 数据库的操作 1.数据库的创建 # 链接mysql数据库后&#xff0c;进入mysql后可以操作数据 # 1. 创建库 cre…

知识图谱的前世今生:为什么我们需要知识图谱?

来源&#xff1a;SimmerChan&#xff08;知乎&#xff09;编辑&#xff1a;Debra摘要&#xff1a;本文主要分为三个部分。第一个部分介绍我们为什么需要知识图谱&#xff0c;第二个部分介绍知识图谱的相关概念及其形式化表示。最后&#xff0c;作一个简单的总结&#xff0c;并介…

7.Mysql数据库表引擎与字符集

7.Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信&#xff0c;最后实现的效果都是&#xff1a;客户端进程向服务器进程发送 一段文本&#xff08;MySQL语句&#xff09;&#xff0c;服务器进程处理后再向客户端进…

EL表达式学习记录

1&#xff0c;学习例子 < %request.getParameter(“username”)% > 等价于 ${ param.username }&#xff1a;前边是&#xff2a;&#xff33;&#xff30;表达式。&#xff25;&#xff2c;表达式中的&#xff02;&#xff0e;&#xff02;后面的只是字符串&#xff0c;并…

大数据+人工智能正以八种方式撼动商界

来源&#xff1a; 数据观摘要&#xff1a;如果你想帮助你的企业实现更多&#xff0c;那么拥抱大数据和人工智能就很有必要了。事实上&#xff0c;那些没能接受这些新兴技术的企业&#xff0c;用不了多久就会逐渐消失在时代发展的长河中。大数据、人工智能正成为技术界的热点&am…

android 自定义 radiobutton 文字颜色随选中状态而改变

from:http://blog.csdn.net/hpccn/article/details/7591662先看效果主要是写一个 color selector 在res/建一个文件夹取名color res/color/color_radiobutton.xml [html] view plaincopy <?xml version"1.0" encoding"utf-8"?> <selector xml…

8.MySQL 数据操作 DML

8.MySQL 数据操作 DML 数据的DML操作&#xff1a;添加数据&#xff0c;修改数据&#xff0c;删除数据 添加数据 格式&#xff1a; insert into 表名[(字段列表)] values(值列表...); --标准添加&#xff08;指定所有字段&#xff0c;给定所有的值&#xff09; mysql> in…

Gartner2018新技术成熟度曲线:五大技术趋势成为新热点

来源&#xff1a;网络大数据近日&#xff0c;Gartner发布了2018年新技术成熟度曲线&#xff0c;首次将Biohacking(生物黑客)列为热点技术趋势&#xff0c;再次引发市场关注。Gartner技术成熟度曲线又称技术循环曲线、光环曲线或者技术炒作周期。是方便企业和CIO们评估新技术成熟…

cntlm代理使用

下载CNTML http://cntlm.sourceforge.net/ 设置用户名密码 打开cntlm.ini文件&#xff0c;在Username,Domain, Password中写入相应的数据。 最后点击cntml.exe开始运行。 设置程序代理 在程序代理中写入127.0.0.1:3128(默认设置)。程序就可以连到外面了。 在公司内使用github只…

9.MySQL数据查询SQL

9.MySQL数据查询SQL 语法格式&#xff1a; select 字段列表|* from 表名 [where 搜索条件] [group by 分组字段 [having 分组条件]] [order by 排序字段 排序规则] [limit 分页参数] 基础查询 # 查询表中所有列 所有数据 select * from users; # 指定字段列表进行查询 …

一文了解物联网主控芯片架构之争

文/Boone来源&#xff1a;中关村在线&#xff0c;智慧产品圈等中兴事件引起了全球的轰动&#xff0c;大家的目光聚集在服务器、计算机、存储底层芯片技术缺乏之上。紫光等国产芯片供应商股票应声上涨。此次事件反应出了我国在芯片及其产业链上较为薄弱&#xff1b;毕竟PC时代&a…

10.Mysql数据库导入导出和授权

10.Mysql数据库导入导出和授权 数据导出 1.数据库数据导出 # 不要进入mysql&#xff0c;然后输入以下命令 导出某个库中的数据 mysqldump -u root -p tlxy > ~/Desktop/code/tlxy.sql 导出一个库中所有数据&#xff0c;会形成一个建表和添加语句组成的sql文件之后可以用这…

nagios 整合 ganglia 设置邮件、短信报警

要学的东西还有很多呢&#xff0c;慢慢来~&#xff01; 环境&#xff1a; 操作系统&#xff1a;ubuntu 10.10 软件&#xff1a;ganglia-monitor 3.1.7-1&#xff0c;gmetad 3.7.1-1&#xff0c;nagios 3.2.1-2 步骤&#xff1a; 1.下载安装nagios&#xff1a;sudo apt-get inst…

AI产业投融资情况回顾、中美科技巨头AI产业投资布局以及领先投资机构AI产业投资布局...

来源&#xff1a;投中研究院编辑&#xff1a;余瑞琦未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&…

❤️ 2021年9月,程序员薪资公布【前排围观】❤️

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌ 华为云享专家、HDZ核心组成员 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 简历模板、PPT模板、…

课题研究的方法

教育课题研究的基本方法主要有以下几种&#xff1a;一、观察法1&#xff0e;观察法&#xff1a;为了了解事实真相&#xff0c;从而发现某种现象的本质和规律。2&#xff0e;观察法的步骤&#xff1a;观察法的实施分为以下三个步骤&#xff0c;步骤之一就是进行观察研究的设计&a…

未来的设计:我们正在进入“计算设计”时代

来源&#xff1a;资本实验室摘要&#xff1a;随着各种新技术的引入&#xff0c;设计行业正在经历一场新的变革。聚焦前沿科技创新与传统产业升级根据施耐德电气最近的一份研究&#xff0c;新技术正在推动设计行业进入“计算设计”时代。大数据、人工智能、可视化等技术带来设计…