FL2440根文件系统的制作(完整版)

简介:


内核版本:Linux-2.6.28.7
交叉编译器版本:arm-linux-gcc4.1.2
操作系统平台:Linux(要用选上eabi支持)  Red Hat 企业版5


开发板平台:arm FL2440
使用的工具:Busybox-1.15.2.tar.bz2

提示:FL2440根文件系统的制作网上已经有很多例子,但是你发现没有,你按照他们的做法你有可能还是实现不了,我做了两方面的改进,

一是创建设备节点的时候要多加两项

#mknod s3c2410_serial0 c 204 64                

#mknod ttyS0        c  4    0  

二是把passwd文件中的第一行:root:x:0:0:root:/root:/bin/bash中的/bin/bash,改成/bin/sh

其余的基本和其他的一样,busybox编译过程中常见的错误在下篇文章中讲解。


步骤为:
一、准备制作
创建根文件系统目录,主要包括以下目录:/bin、/etc、/dev、/home、/lib、/mnt、/opt、/proc、
/root、/sbin、/sys、/tmp、/usr、/var。
建一个名为rootfs的文件夹
在该文件夹下创建上述目录
#mkdir bin etc dev ……………
二、编译 busybox
获取busybox1.15.2源码,在http://www.busybox.net/downloads/找到busybox-1.15.2.tar.bz2这个
压缩包,下载,解压:
#tar xjvf busybox-1.15.2
进入源码目录,修改Makefile
CROSS_COMPILE = arm-linux-
ARCH = arm
执行#makemenuconfig进行配置busybox
配置选项大部分都是保持默认的,只需要注意选择以下这几个选项,其他的选项都不用动:
Busybox Setting --->
Build Options --->
  
·  Build Busybox as a static binary(no shared libs)
 
·  Build with Large File Support (for accessing files > 2GB)


Installation Options --->
选择上不用usr
(./_install) Busybox installation prefix <—进入这个选项,输入busybox的安装路径,
     如:../yaffs
  Busybox Library Tuning --->
 
·  vi-style line editing commands
 
·  Fancy shell prompts<—要选择这个选项:“Fancy shell prompts”,否则挂载文
   件系统后,无法正常显示命令提示符:“[\u@\h \W]#”
配置完后,执行#make make install,然后就会在上一级目录下生成rootfs文件夹,里面包含几个
文件夹/bin、/sbin、/usr、linuxrc。把这些文件全部复制到刚建好的rootfs目录下。

#cp –rf * ../rootfs

三、制作文件系统
在dev目录下,创建两个设备节点:
#mknod console c 5 1
#mknod  null   c 1 3

由于后面会显示不能打开
can't open /dev/s3c2410_serial0: No such file or directory
can't open /dev/ttyS0: No such file or directory
(所以这儿还要创建两个设备节点)
#mknod s3c2410_serial0 c 204 64
#mknod ttyS0        c  4    0            

进入etc目录,添加文件:
(1)拷贝Busybox-1.15.2/examples/bootfloopy/etc/*到当前目录下。
# cp-r../../busybox-1.15.2/examples/bootfloopy/etc/*./
包括的文件:fstab、init.d、inittab、profile
(2)拷贝/etc/passwd、/etc/group、/etc/shadow到当前目录下。
# cp/etc/passwd./
# cp/etc/group./
# cp/etc/shadow./
把passwd文件中的第一行:root:x:0:0:root:/root:/bin/bash中的/bin/bash,改成/bin/sh,因为文件
系统的bin目录下没有bash这个命令,而是用ash代替bash,所以在用用户名密码登录的时候(如
telnet),会出现“cannot run /bin/bash: No such fileor directory”的错误。
(3)修改inittab文件:
内容如下:
console::sysinit:/etc/init.d/rcS
ttyS0::respawn:-/bin/sh
s3c2410_serial0::askfirst:-/bin/sh
:: once:/usr/sbin/telnetd-l/bin/login
:: ctrlaltdel:/bin/umount-a-r
(4)修改fstab文件,内容如下:
proc  /proc  proc  defaults  0  0
tmpfs /tmp tmpfs defaults  0  0
sysfs  /sys sysfs  defaults  0  0
tmpfs  /dev  tmpfs  defaults  0  0
var  /dev  tmpfs  defaults  0  0
(5)修改init.d/rcS文件,内容如下:
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
runlevel=S
prevlevel=N
umask022
exportPATHrunlevelprevlevel
mount-a
mkdir/dev/pts
mount-tdevptsdevpts/dev/pts
echo/sbin/mdev>/proc/sys/kernel/hotplug
mdev-s
mkdir-p/var/lock
/bin/hostname-F/etc/sysconfig/HOSTNAME


(6)修改profile文件,内容如下:
# Ashprofile
# vim:syntax=sh
# Nocorefilesbydefault
#ulimit-S-c0>/dev/null2>&1
USER="`id-un`"
LOGNAME=$USER
PS1='[\u@\h\W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
echo" Processing/etc/profile... "
echo"Done"
exportUSERLOGNAMEPS1PATH
(7)新建sysconfig文件夹,在里面新建HOSTNAME文件,内容为:FL2440
(8)拷贝库文件:
进入lib目录,拷贝交叉编译器的库文件到lib目录下
#cp-f-a/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib/*.so*./
由于交叉编译器的库文件比较多,体积较大,所以需要裁剪一下库文件,只保留常用的库文

件。

#cp mkyaffs2image /usr/bin

制作文件系统镜像:
#mkyaffs2image  root_2.6.33  root_2.6.33.bin

root_2.6.33.bin就是yaffs2文件系统镜像,要先修改它的权限,否则该文件无法被复制:

#chmod777root_2.6.33.bin
把root_2.6.33.bin下载到nandflash中的文件系统分区中,如果文件系统能正常挂载,终端会打印出:
Please press Enter to activate this console. <—按回车
Processing /etc/profile...
Done
目录
相关文章
|
算法 Linux API
【Qt 延迟手段】Qt中实现延迟和休眠的多种方法
【Qt 延迟手段】Qt中实现延迟和休眠的多种方法
2513 0
|
安全 Java API
阿里云短信介绍和购买流程和使用流程
联网时代短信的应用无处不在,如APP的注册,平时的短信通知等。 下面就由小编系统的讲解一下阿里云短信的购买和使用流程
|
存储 安全 数据可视化
日常工作必备的5款实用软件推荐
本文推荐了几款实用软件,旨在提升日常工作生活的效率与安全性。包括数据可视化工具Keyviz、提升办公效率的Office Tab Enterprise、微信空号检测工具燃精灵、专注工作的时间管理软件Cold Turkey,以及密码管理工具KeeWeb。通过这些工具,可更好地管理工作、提升生产力并保障数字安全。
226 3
|
弹性计算 应用服务中间件 Linux
如何使用阿里云搭建个人网站
域名申请 首次搭建 个人小站,建议购买域名和服务器到知名商家,我推荐大家到阿里云上。因为阿里云绑定了个人淘宝账号,登录,支付,还有其他各种产品。 输入你想要的域名,查询没有被其他人注册后,你可以加入购物车或直接使用淘宝账号登录购买。
5419 0
|
Android开发
动手开发Android:Xposed插件完整过程
如何动手开发Xposed插件,本文为您介绍
1342 0
动手开发Android:Xposed插件完整过程
|
缓存 对象存储 CDN
如何使用CDN给OSS做加速详解
意义 用户直接访问OSS资源,速度会受到OSS下行带宽以及Bucket地域的限制,若通过CDN+OSS的方式进行访问,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行分发,可以缩短网络传输距离,加快用户的调用速度;所有下行走的是CDN的流量,而CDN的下行流量单价会比OSS的下行流量单价更低,可以有效地节省流量成本。
5889 0
|
微服务 API 数据库
带你读《微服务架构设计模式》之二:服务的拆分策略
本书中,微服务架构的先驱、Java 开发者社区的意见领袖 Chris Richardson 收集、分类并解释了 44 个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信等难题。本书不仅仅是一个模式目录,还提供了经验驱动的建议,以帮助你设计、实现、测试和部署基于微服务的应用程序。
|
NoSQL 数据库 开发工具
vim+cscope使用指南
vim+cscope使用指南
10823 2