用busybox制作rootfs && yaffs文件系统
2014-01-26 19:51
405 查看
###平台AM335X实验未成功###
我们知道一个linux的启动过程,包括BIOS的加电自检POST,拷贝MBR的信息(启动BootLoader),加载内核,挂载根文件安系统这几大步,在嵌入式系统的移植方面我们也要自己动手制作内核映像,根文件系统等。
概要:
1.busybox(busybox-1.9.1)
下载一个版本的busybox。下载地址。
busybox是主要用来提供一些bash shell命令的工具。
2.配置文件
重点配置文件是在境的上一篇文章提到的几个文件。linux启动过程中的几个重要文件的详解
3.设备文件(文中会教你如何添加)
4.必要的库文件(选用)
所以今天我要的做的就是由busybox等组成的rootfs。
BusyBox简介:
1.BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。
2.BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了
Linux 的许多工具和命令。
制作过程:
一、编译busybox获得shell工具
1.建立一个根文件系统目录,可以利用下面这个脚本快速建立一些默认的文件系统框架
[xt@butbueatiful ~]$ vi mkrootfsdir.sh
#------------------------------------------------------------
#!/bin/sh
echo ">>>>>> Create rootfs directons <<<<<<"
mkdir /home/xt/rootfs
cd /home/xt/rootfs
echo "--------- Create root,dev ......"
mkdir bin dev etc lib mnt opt proc sbin srv sys tmp usr var workspace
mkdir usr/sbin usr/bin usr/lib usr/modules
mkdir etc/sysconfig etc/init.d etc/network
mkdir etc/network/if-down.d etc/network/if-post-down.d etc/network/if-pre-up.d etc/network/if-up.d
mkdir lib/modules
chmod 1777 tmp
cd ..
echo "------- make direction done ---------"
#------------------------------------------------------------
保存退出。
更改可执行权限
[xt@butbueatiful ~]$ chmod +x mkrootfsdir.sh
[xt@butbueatiful ~]$ /mkrootfsdir.sh
>>>>>> Create rootfs directons <<<<<<
-------- Create root,dev ......
------- make direction done ---------
这样就建好了一个根文件系统的大致框架。
2.将刚才的下载的busybox解压到你的主目录,并转至:
[xt@butbueatiful ~]$ tar xvjf busybox-1.9.1.tar.bz2
[xt@butbueatiful ~]$ cd busybox-1.9.1/
3.修改makefile文件来修改我们的arch和gcc编译工具;没有安装交叉编译工具的筒子请看快速安装ubuntu交叉编译工具
[xt@butbueatiful busybox-1.9.1]$ vi Makefile
修改175行:ARCH ?= arm
修改176行:ROSS_COMPILE ?= arm-linux-
4.配置
[xt@butbueatiful busybox-1.9.1]$ make defconfig #生成一个默认的配置
[xt@butbueatiful busybox-1.9.1]$ make menuconfig
5.优化配置选项,在做make menuconfig之前最好,[全屏打开你的terminal],这样才还显示类似编译内核一样的配置框,如下:
主要也是根据个人口味来选择优化配置,境选择如下:
Busybox Settings --->
General Configuration --->
Build Options --->
Debugging Options --->
Installation Options --->
Busybox installation prefix 设置为 /home/xt/rootfs
Busybox Library Tuning --->
这几项都稍微看下,决定对你的有需要的就选上。
6.编译安装我们的busybox
[xt@butbueatiful busybox-1.9.1]$ make
[xt@butbueatiful busybox-1.9.1]$ make install
二、创建配置文件:
1.创建设备文件
mdev 是通过 init 进程来启动的,在使用 mdev 构造 /dev 目录之前,init 至少要用到设备文件/dev/console、 /dev/null ,所以需要事先建立这两个设备文件:
[xt@butbueatiful busybox-1.9.1]$ cd ~/rootfs/dev
[xt@butbueatiful dev]$ sudo mknod -m 660 console c 204 64
[xt@butbueatiful dev]$ sudo mknod -m 660 null c 1 3
[xt@butbueatiful dev]$ ls -l
total 0
crw-rw----. 1 root root 204, 64 May 16 17:19 console
crw-rw----. 1 root root 1, 3 May 16 17:19 null
2.准备一些配置文件和系统启动时所需的文件,这些文件的作用可以查看(看好所在的目录)
(1)在etc下添加mdev。conf;
[xt@butbueatiful dev]$ cd ../etc
[xt@butbueatiful etc]$ touch mdev.conf
(2)在etc/init.d下添加rcS;
[xt@butbueatiful etc]$ cd init.d/
[xt@butbueatiful init.d]$ vi rcS
将下面内容写进去
#--------------------------------------------------------------
#!/bin/sh
echo "Processing /etc/init.d/rcS"
echo "mount -a"
mount -a #mount上fstab文件中所有文件系统
exec /etc/rc.local
#--------------------------------------------------------------
(3)在etc下添加rc.local文件;
[xt@butbueatiful init.d]$ cd ..
[xt@butbueatiful etc]$ vi rc.local
添加下面内容:
#--------------------------------------------------------------
#!/bin/sh
echo "Processing /etc/rc.local"
echo "get hostname"
/bin/hostname -F /etc/hostname
echo "Starting mdev"
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
echo "ifconfig eth0 192.168.0.111"
ifconfig eth0 192.168.0.111
echo "*********************************************************"
echo "* *"
echo "* Kernle: Linux 2.6.27 *"
echo "* Compiler: arm-linux-4.0.2 *"
echo "* Date: 2012-05-16 *"
echo "* Author: xttao *"
echo "* *"
echo "* *"
echo "*********************************************************"
#--------------------------------------------------------------
(4)在etc下添加profile文件:
[xt@butbueatiful etc]$ vi profile
添加下面内容:
#--------------------------------------------------------------
#/etc/profile
echo "Processing /etc/profile"
echo "set user path"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
echo "set search library path"
LD_LIBRARY_PATH=/lib:/usr/lib
echo "set PS1"
HOSTNAME=`/bin/hostname`
PS1='\u@\h:\w\$ '
export PS1="[\u@\h \W]\$" #设置命令提示符为Redhat风格
export PATH LD_LIBRARY_PATH HOSTNAME PS1
#------------------------------------------------------------
(5)改变权限;
[xt@butbueatiful etc]$ chmod 775 init.d/rcS rc.local profile
(6)在etc下添加inittab文件:
[xt@butbueatiful etc]$ vi inittab
添加下面内容:
#------------------------------------------------------------
#/etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
#------------------------------------------------------------
(7)在etc下添加fstab文件:
[xt@butbueatiful etc]$ vi fstab
添加下面内容:
#------------------------------------------------------------
#/etc/fstab: static file system information.
#<File system> <mount pt> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
none /tmp ramfs defaults 0 0
#------------------------------------------------------------
(8)在etc下添加passwd文件:
[xt@butbueatiful etc]$ vi passwd
添加下面内容:
#------------------------------------------------------------
#username:password:User ID:Group ID:comment:home directory:shell
root::0:0:root:/root:/bin/sh
#------------------------------------------------------------
(9)将你安装交叉编译器下lib库文件复制到rootfs/lib目录下:
cd /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-linux/arm-linux/lib
cp -dp *so* ~/rootfs/lib
三、生成CramFS文件系统镜像文件rootfs.img
sudo mkfs.cramfs rootfs/ rootfs.cramfs #制作一个rootfs文件系统
现在你可以将该镜像烧写到你的开发版上了
四、创建yaffs文件系统
进入nfs网络文件系统:
写一个脚本mkyaffs.sh
内容如下:
#------------------------------------------------------------
#!/bin/sh
echo "make yaffs staring ......"
cd /
/sbin/flash_eraseall /dev/mtd2
mount -t yaffs /dev/mtdblock2 /mnt
cp -a bin etc lib linuxrc opt sbin srv tmp usr workspace /mnt
mkdir -p /mnt/proc /mnt/sys /mnt/dev /mnt/mnt /mnt/var/run
mknod -m 600 /mnt/dev/console c 5 1
mknod -m 666 /mnt/dev/null c 1 3
umount mnt
echo "make yaffs done ............."
#------------------------------------------------------------
更改权限后执行即可生成一个yaffs文件系统
从不同的文件系统启动由u-boot在里设置
我们知道一个linux的启动过程,包括BIOS的加电自检POST,拷贝MBR的信息(启动BootLoader),加载内核,挂载根文件安系统这几大步,在嵌入式系统的移植方面我们也要自己动手制作内核映像,根文件系统等。
概要:
1.busybox(busybox-1.9.1)
下载一个版本的busybox。下载地址。
busybox是主要用来提供一些bash shell命令的工具。
2.配置文件
重点配置文件是在境的上一篇文章提到的几个文件。linux启动过程中的几个重要文件的详解
3.设备文件(文中会教你如何添加)
4.必要的库文件(选用)
所以今天我要的做的就是由busybox等组成的rootfs。
BusyBox简介:
1.BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。
2.BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了
Linux 的许多工具和命令。
制作过程:
一、编译busybox获得shell工具
1.建立一个根文件系统目录,可以利用下面这个脚本快速建立一些默认的文件系统框架
[xt@butbueatiful ~]$ vi mkrootfsdir.sh
#------------------------------------------------------------
#!/bin/sh
echo ">>>>>> Create rootfs directons <<<<<<"
mkdir /home/xt/rootfs
cd /home/xt/rootfs
echo "--------- Create root,dev ......"
mkdir bin dev etc lib mnt opt proc sbin srv sys tmp usr var workspace
mkdir usr/sbin usr/bin usr/lib usr/modules
mkdir etc/sysconfig etc/init.d etc/network
mkdir etc/network/if-down.d etc/network/if-post-down.d etc/network/if-pre-up.d etc/network/if-up.d
mkdir lib/modules
chmod 1777 tmp
cd ..
echo "------- make direction done ---------"
#------------------------------------------------------------
保存退出。
更改可执行权限
[xt@butbueatiful ~]$ chmod +x mkrootfsdir.sh
[xt@butbueatiful ~]$ /mkrootfsdir.sh
>>>>>> Create rootfs directons <<<<<<
-------- Create root,dev ......
------- make direction done ---------
这样就建好了一个根文件系统的大致框架。
2.将刚才的下载的busybox解压到你的主目录,并转至:
[xt@butbueatiful ~]$ tar xvjf busybox-1.9.1.tar.bz2
[xt@butbueatiful ~]$ cd busybox-1.9.1/
3.修改makefile文件来修改我们的arch和gcc编译工具;没有安装交叉编译工具的筒子请看快速安装ubuntu交叉编译工具
[xt@butbueatiful busybox-1.9.1]$ vi Makefile
修改175行:ARCH ?= arm
修改176行:ROSS_COMPILE ?= arm-linux-
4.配置
[xt@butbueatiful busybox-1.9.1]$ make defconfig #生成一个默认的配置
[xt@butbueatiful busybox-1.9.1]$ make menuconfig
5.优化配置选项,在做make menuconfig之前最好,[全屏打开你的terminal],这样才还显示类似编译内核一样的配置框,如下:
主要也是根据个人口味来选择优化配置,境选择如下:
Busybox Settings --->
General Configuration --->
Build Options --->
Debugging Options --->
Installation Options --->
Busybox installation prefix 设置为 /home/xt/rootfs
Busybox Library Tuning --->
这几项都稍微看下,决定对你的有需要的就选上。
6.编译安装我们的busybox
[xt@butbueatiful busybox-1.9.1]$ make
[xt@butbueatiful busybox-1.9.1]$ make install
二、创建配置文件:
1.创建设备文件
mdev 是通过 init 进程来启动的,在使用 mdev 构造 /dev 目录之前,init 至少要用到设备文件/dev/console、 /dev/null ,所以需要事先建立这两个设备文件:
[xt@butbueatiful busybox-1.9.1]$ cd ~/rootfs/dev
[xt@butbueatiful dev]$ sudo mknod -m 660 console c 204 64
[xt@butbueatiful dev]$ sudo mknod -m 660 null c 1 3
[xt@butbueatiful dev]$ ls -l
total 0
crw-rw----. 1 root root 204, 64 May 16 17:19 console
crw-rw----. 1 root root 1, 3 May 16 17:19 null
2.准备一些配置文件和系统启动时所需的文件,这些文件的作用可以查看(看好所在的目录)
(1)在etc下添加mdev。conf;
[xt@butbueatiful dev]$ cd ../etc
[xt@butbueatiful etc]$ touch mdev.conf
(2)在etc/init.d下添加rcS;
[xt@butbueatiful etc]$ cd init.d/
[xt@butbueatiful init.d]$ vi rcS
将下面内容写进去
#--------------------------------------------------------------
#!/bin/sh
echo "Processing /etc/init.d/rcS"
echo "mount -a"
mount -a #mount上fstab文件中所有文件系统
exec /etc/rc.local
#--------------------------------------------------------------
(3)在etc下添加rc.local文件;
[xt@butbueatiful init.d]$ cd ..
[xt@butbueatiful etc]$ vi rc.local
添加下面内容:
#--------------------------------------------------------------
#!/bin/sh
echo "Processing /etc/rc.local"
echo "get hostname"
/bin/hostname -F /etc/hostname
echo "Starting mdev"
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
echo "ifconfig eth0 192.168.0.111"
ifconfig eth0 192.168.0.111
echo "*********************************************************"
echo "* *"
echo "* Kernle: Linux 2.6.27 *"
echo "* Compiler: arm-linux-4.0.2 *"
echo "* Date: 2012-05-16 *"
echo "* Author: xttao *"
echo "* *"
echo "* *"
echo "*********************************************************"
#--------------------------------------------------------------
(4)在etc下添加profile文件:
[xt@butbueatiful etc]$ vi profile
添加下面内容:
#--------------------------------------------------------------
#/etc/profile
echo "Processing /etc/profile"
echo "set user path"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
echo "set search library path"
LD_LIBRARY_PATH=/lib:/usr/lib
echo "set PS1"
HOSTNAME=`/bin/hostname`
PS1='\u@\h:\w\$ '
export PS1="[\u@\h \W]\$" #设置命令提示符为Redhat风格
export PATH LD_LIBRARY_PATH HOSTNAME PS1
#------------------------------------------------------------
(5)改变权限;
[xt@butbueatiful etc]$ chmod 775 init.d/rcS rc.local profile
(6)在etc下添加inittab文件:
[xt@butbueatiful etc]$ vi inittab
添加下面内容:
#------------------------------------------------------------
#/etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
#------------------------------------------------------------
(7)在etc下添加fstab文件:
[xt@butbueatiful etc]$ vi fstab
添加下面内容:
#------------------------------------------------------------
#/etc/fstab: static file system information.
#<File system> <mount pt> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
none /tmp ramfs defaults 0 0
#------------------------------------------------------------
(8)在etc下添加passwd文件:
[xt@butbueatiful etc]$ vi passwd
添加下面内容:
#------------------------------------------------------------
#username:password:User ID:Group ID:comment:home directory:shell
root::0:0:root:/root:/bin/sh
#------------------------------------------------------------
(9)将你安装交叉编译器下lib库文件复制到rootfs/lib目录下:
cd /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-linux/arm-linux/lib
cp -dp *so* ~/rootfs/lib
三、生成CramFS文件系统镜像文件rootfs.img
sudo mkfs.cramfs rootfs/ rootfs.cramfs #制作一个rootfs文件系统
现在你可以将该镜像烧写到你的开发版上了
四、创建yaffs文件系统
进入nfs网络文件系统:
写一个脚本mkyaffs.sh
内容如下:
#------------------------------------------------------------
#!/bin/sh
echo "make yaffs staring ......"
cd /
/sbin/flash_eraseall /dev/mtd2
mount -t yaffs /dev/mtdblock2 /mnt
cp -a bin etc lib linuxrc opt sbin srv tmp usr workspace /mnt
mkdir -p /mnt/proc /mnt/sys /mnt/dev /mnt/mnt /mnt/var/run
mknod -m 600 /mnt/dev/console c 5 1
mknod -m 666 /mnt/dev/null c 1 3
umount mnt
echo "make yaffs done ............."
#------------------------------------------------------------
更改权限后执行即可生成一个yaffs文件系统
从不同的文件系统启动由u-boot在里设置
相关文章推荐
- 用busybox制作rootfs yaffs文件系统
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxrc
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
- Busybox1.13.3制作yaffs2根文件系统(静态和动态)
- Busybox1.13.3制作yaffs2根文件系统(静态和动态)
- busybox1.9.2制作yaffs文件系统
- 使用Busybox1.13.3制作yaffs2根文件系统
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
- busybox1.9.2制作yaffs文件系统
- BusyBox制作根文件系统(rootfs)
- initramfs文件系统的制作及yaffs2根文件系统制作(busybox-1.20.2)
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
- 使用busybox制作最基本的嵌入式(yaffs)文件系统
- 使用busybox制作根文件系统(rootfs)
- 使用Busybox1.13.3制作 yaffs2根文件系统
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
- 一步一步制作yaffs/yaffs2根文件系统(三)---使用glibc库构造 /lib
- 用busybox制作根文件系统 telnetd功能添加
- rootfs文件系统的制作(一)