根文件系统移植

实验环境】
1、ubuntu 14.04
2、linux-3.14.tar.xz
3、FS_4412平台(EXYNOS 4412)
4、交叉编译器 arm-none-linux-gnueabi-gcc
5、busybox-1.22.1.tar.bz2

开始移植
一、根文件系统制作
1、 源码下载
我们选择的版本是busybox-1.22.1.tar.bz2下载路径为:
http://busybox.net/downloads/
2、解压源码
$ tar xvf busybox-1.22.1.tar.bz2
3、进入源码目录
$ cd busybox-1.22.1
4、配置源码
$ make menuconfig
Busybox Settings —>
Build Options —>
[] Build BusyBox as a static binary (no shared libs)
[ ] Force NOMMU build
[ ] Build with Large File Support (for accessing files > 2 GB)
(arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix
() Additional CFLAGS
5、编译
$ make
6、安装
busybox默认安装路径为源码目录下的_install
$ make install
7、进入安装目录下
$ cd _install
$ ls
bin linuxrc sbin usr
8、创建其他需要的目录
$ mkdir dev etc mnt proc var tmp sys root
9、添加库
将工具链中的库拷贝到_install目录下
$cp -r /home/linux/toolchain/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib/ _intall/
上方工具链的目录根据自己安装的目录改动
删除静态库和共享库文件中的符号表
$ rm lib/
.a
$ arm-none-linux-gnueabi-strip lib/*
删除不需要的库,确保所有库大小不超过8M
$ du -mh lib/
10、添加系统启动文件
在etc下添加文件inittab,文件内容如下:
#this is run first except when booting in single-user mode.
::sysinit:/etc/init.d/rcS
#/bin/sh invocations on selected ttys
#start an “askfirst” shell on the console (whatever that may be)
::askfirst:-/bin/sh
#stuff to do when restarting the init process
::restart:/sbin/init
#stuff to do before rebooting
::ctrlaltdel:/sbin/reboot

在etc下添加文件fstab,文件内容如下:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
这里我们挂载的文件系统有三个proc、sysfs和tmpfs。在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持
修改内核配置:
$ make menuconfig
File systems —>
Pseudo filesystems —>
[] Virtual memory file system support (former shm fs)
[
] Tmpfs POSIX Access Control Lists
重新编译内核

在etc下创建init.d目录,并在init.d下创建rcS文件,rcS文件内容为:

#!/bin/sh
#This is the first script called by init process
/bin/mount -a
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
为rcS添加可执行权限:
$ chmod +x init.d/rcS

在etc下添加profile文件,文件内容为:

#!/bin/sh
export HOSTNAME=test
export USER=root
export HOME=root
export PS1="[ U S E R @ USER@ USER@HOSTNAME \W]# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
重要:新制作的文件系统尺寸若超出8M,删除不需要的库文件
二、NFS测试
1、删除原先的/nfs/rootfs
$ sudo rm -rf /nfs/rootfs
2、将我们新建的根文件系统拷贝到/nfs/rootfs目录下
$sudo mkdir /nfs/rootfs
$ sudo cp -r _install/* /nfs/rootfs
3、修改文件夹的权限
$sudo chmod 777 /nfs/rootfs
4、设置uboot环境变量
#setenv serverip 192.168.1.50
#setenv ipaddr 192.168.1.100
#setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 – 42000000
#setenv bootargs root=/dev/nfs nfsroot=192.168.1.50:/source/rootfs rw console=ttySAC2,115200init=/linuxrc ip=192.168.1.100
#saveenv
重新启动开发板,查看是否能够正常挂载,功能是否正常

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值