linux文件系统移植教程,Linux文件系统移植

建立Linux的根文件系统:

操作系统在启动时内核需要根文件系统来挂载,现代的Linux操作系统中,内核代码映像文件保存在根文件系统中,系统引导启动程序从这个根文件系统设备上把内核执行代码加载到内存中去运行。

我们采用的是Cramfs文件系统,它主要用于较小的ROM的嵌入式系统,他是一个压缩式的文件系统,它不需要一次性的将文件系统中的所有内容都解压缩到内存中,而只是需要哪一部分采取解压缩对应的部分

一、 根文件系统的一些基本目录

/bin 提供基本的命令库

/sbin 系统管理库

/dev 设备文件

/etc 系统配置文件

/lib 基本的系统库

/mnt 临时挂载的文件系统

/proc 系统的基本情况

/tmp 临时文件

当然还有一些其他的目录,这里列出的是我们自己创建文件系统所需要的最基本的目录。

二、 建立根文件系统的配置环境

下载busybox-1.13.1.tar.bz2,可以从www.busybox.net上下载到最新版本。在虚拟机的根目录下解压,进入busybox-1.13.1目录下。

1.

修改Makefile文件

这一步的修改是为了指定要用到的编译器为arm-linux-交叉编译器,体系结构为ARM,需要修改下面的部分:

ARCH ?= arm #$(SUBARCH) 176行

CROSS_COMPILE ?=arm-linux-

注意设置交叉编译的路径(即设置环境变量)

即:export PATH=/armtools/bin:$PATH

2.

配置busybox

make menuconfig

①Busybox

Settings(busybox配置组)

Busybox Settings --->

General Configuration

--->

Build Options --->

[*] Build BusyBox as a static binary (no shared

libs)

[ ] Build shared

libbusybox

Debugging Options

--->

Installation Options --->

[*] Don't use

/usr

Applets links (as soft-links)

--->

(./_install) BusyBox installation

prefix

Busybox Library Tuning --->

[*]代表必选项:

[*] Build

BusyBox as a static binary (no shared libs)表示应用静态库,

在嵌入式工作时一般首选,它不应用动态库,可以节省空间,在创建的ramdisk

的lib目录中可以加入动态库支持;

[ ] Build

shared libbusybox 表示应用动态库,这样会耗费空间。

[*] Don't use /usr这个选项是指编译后在_install目录下没有usr这个目录

② ---

Applets (命令配置组)

Archival Utilities ---> 文档选项

例如:压缩文件tar、gzip等命令;

Coreutils ---> 常用命令选项 一般/bin下的命令的选择点;

[*] Allow use of color to

identify file

types

[*] Produce colored ls output by default

3.

编译生成_install

export PATH=/armtools/bin:$PATH

arm-linux-gcc –v

make

make install

在busybox-1.13.1下完成这些命令后,会生成一些新的目录:bin和sbin

4.

设置根文件系统的目录

1) 在根目录下新建一个testfs 目录

cd /

mkdir testfs

cd testfs

mkdir rootfs

cp  –raf /

busybox-1.13.1/_install/* rootfs

2) 手动创建mnt proc tmp sys 目录

3) 创建一个dev 目录

mkdir dev

cd dev

mknod -m 666 console c 5 1

mknod -m 666 zero c 1 3

4) 在rootfs下创建一个lib目录

cp raf /armtools/arm-linux/bin/* lib

rm -f lib/*.a

5) 在rootfs下创建一个etc目录

cd etc

touch inittab

gedit inittab

添加如下代码:(注意格式不要写错了)

::sysinit: etc/init.d/rcS

::sysinit: /bin/sh

6) 在etc 下创建init.b 目录

mkdir init.d

cd init.d

touch rcS

gedit rcS

添加如下代码:

#!/bin/sh

/bin/mount –a

7) 在etc 下创建 fstab 文件

touch fstab

添加如下代码:

none /proc proc defaults 0 0

8) 如何显示路径名

在 etc/proflie 中加入下面代码:

export ps1="[\u@\h \w]"

9)

编译生成 root.cramfs 烧入文件

mkfs.cramfs rootfs root.cramfs

编译完成后在rootfs目录下会生成root.cramfs 烧入文件。

注意:在烧入的过程中如果出现打不开文件的“cannot run 'etc/init.d/rcS':

Permission

denie”问题时,修改一下rcS文件的访问权限;详细步骤:在etc目录下输入命令:chmod 777 rcS

10) 如何在开发板上运行著名的“Hello World !”程序。

一种办法是在ubuntu上利用arm-linux-gcc -o hello hello.c

进行编译,将其拷进要编译的文件系统中,一起编译成root.cramfs文件。

启动开发板后,配置环境变量:export LD_LIBRARY_PATH=/lib,

然后在 “./hello”,就可以打印出预期的结果了。

另一种方法是将开发板挂载到虚拟机上,通过共享将 “hello”二进制文件拷贝过来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值