- 论坛徽章:
- 0
|
根据网上结合自己的改了一下。
[color="#0000ff"]------------------[color="#0000ff"]修改编译配置选项--------------------
开始移植
1.
下载busybox1.9.2,并解压缩。
下载busybox源代码:http://busybox.net/downloads/busybox-1.9.2.tar.bz2
交叉编译工具:arm-linux-gcc-3.4.1
解压源码:tar
-jxvf busybox-1.9.2.tar.bz2
2.
修改Makefile中的174行的
arch和编译工具链头。
ARCH
?= arm
CROSS_COMPILE
?= /usr/local/arm/3.4.1/bin/arm-linux-
3.
make menuconfig. 修改编译配置选项。
Busybox
Setting----->
build
option-->
[
] Build BusyBox as a static binary (no shared
libs)
Build shared
libbusybox
Produce a binary for each applet, linked against libbusybox
Produce additional busybox binary linked against libbusybox
[
] Build with Large File Support (for accessing files > 2 GB)
installation
option-->
Don't use /usr
Applets
links (as soft-links) --->
(./_install)
BusyBox installation prefix
Busybox
Library Tuning --->
MD5:
Trade Bytes for Speed
Faster /proc scanning code (+100 bytes)
Support for /etc/networks
Support for /etc/networks
Additional editing keys
vi-style line editing commands
History saving
Tab completion
Username completion
Fancy shell prompts
Linux
Module Utilities --->
Support version 2.6.x Linux kernels
insmod
Enable load map (-m) option
Symbols in load map
rmmod
lsmod
lsmod pretty output for 2.6.x Linux kernels
modprobe
[
] Multiple options parsing
[
] Fancy alias parsing
---
Options common to multiple modutils
[
] Support tainted module checking with new kernels
[
] Support version 2.2.x to 2.4.x Linux kernels
Support version 2.6.x Linux kernels
shell
-
alias
support
其他的用默认值
[color="#0000ff"]-----------------------[color="#0000ff"]编译busybox-----------------------
make
make
install
在busybox/_install
目录下会生成我们需要的文件。
修改_install/bin/busybox
的属性。为4755
chmod
4755 ./_install/bin/busybox
必须要修改属性,否则在busybox
中很多命令会受限
将编译好的busybox拷贝到/bin下面。
[color="#800000"]-[color="#0000ff"]---------------------------------[color="#0000ff"]制作根文件系统-----------------------------------------
[color="#0000ff"]在busybox[color="#0000ff"]下建新文件系统根目录root
[color="#0000ff"]拷贝_install[color="#0000ff"]下文件至新root
[color="#0000ff"]在root先新建etc目录(主要就是系统的启动设置,都在这里)
[color="#0000ff"]在root新建lib目录(系统的启动进程需要库的支持,一般都是动态链接,所以必须要加全了,文件系统拿什么编译的就拿该编译器的库)
[color="#0000ff"]-----------------------/lib[color="#0000ff"]文件--------------------------------
/lib的库其实就是进行busybox编译的库,即交叉编译器的库,我们这里使用的是3.4.1(位置/usr/local/arm/3.4.1)。
#
cd /usr/local/arm/3.4.1/arm-linux/lib
# for file in libc
libcrypt libdl libm libpthread libresolv libutil
> do
>
cp $file-*.so rootfs/lib (复制到你做的文件系统的/lib目录下)
>
cp -d $file.so.[*0-9] rootfs/lib (同上)
>
done
# cp -d ld*.so* rootfs/lib
(同上)
[color="#0000ff"]-----------------[color="#0000ff"]系统配置文件的建立---------------------
--========/etc目录============
[color="#006400"](1)profile[color="#006400"]文件
#Set
search library path
export
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
#Set user
path
PATH="/bin:/sbin:/usr/bin:/usr/sbin:"$PATH
alias ll='ls
-l'
#Set
PS1
USER="`id
-un`"
LOGNAME=$USER
PS1='[\u@\h
\W]\$ '
PATH=$PATH
export USER LOGNAME PS1 PATH
[color="#ff0000"](说明:sh
[color="#ff0000"]的配置脚本:profile[color="#ff0000"])
([color="#006400"]2)fstab[color="#006400"]文件
proc
/proc proc defaults 0 0
none /tmp ramfs
defaults 0 0
mdev /dev ramfs defaults 0
0
sysfs /sys sysfs defaults 0 0
(说明:挂载文件系统的配置文件
:fstab[color="#ff0000"])
:[color="#ff0000"]挂装的设备
[color="#ff0000"] :[color="#ff0000"]挂装点
[color="#ff0000"] [color="#ff0000"]:[color="#ff0000"]文件系统类型
[color="#ff0000"] :
[color="#ff0000"]挂装选项
[color="#ff0000"]
ro
[color="#ff0000"]以只读模式加载该文件系统
user
[color="#ff0000"]允许普通用户加载该文件系统
quota
[color="#ff0000"]强制在该文件系统上进行磁盘定额限制
noauto
不再使用
mount
-a [color="#ff0000"]命令([color="#ff0000"]例如系统启动时)[color="#ff0000"]加载该文件系统
3
:使用
dump
[color="#ff0000"]命令备份文件系统的频率
若不需要转储就设置该字段为
[color="#ff0000"]0
[color="#ff0000"]:[color="#ff0000"]规定检查文件系统的顺序
[color="#ff0000"]根文件系统“/”对应该字段的值应该为
1
, 其他文件系统应该为
2[color="#ff0000"]。 若该文件系统无需在
启动时扫描则设置该字段为
[color="#ff0000"]0
[color="#006400"](3)inittab[color="#006400"]文件
::sysinit:-/etc/init.d/rcS
::respawn:-/bin/sh
::ctrlaltdel:/bin/umount
-a -r
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
[color="#ff3366"](说明:init
[color="#ff3366"]进程执行需读取的配置文件:inittab[color="#ff3366"] 3
KERNEL [color="#ff3366"]起来之后,[color="#ff3366"]将运行第一个进程--init,实际上执行的为
Busybox
[color="#ff3366"]的/sbin/init
[color="#ff3366"](这里直接就是linuxrc) init
[color="#ff3366"]的工作是根据/etc/inittab
[color="#ff3366"]脚本来进行系统的初始化
[color="#ff3366"]2:格式:::runlevels:action:process
sysinit
--[color="#ff3366"]指定运行的第一个程序/[color="#ff3366"]脚本
respawn
-- [color="#ff3366"]若该进程结束,init
会再起
一个进程执行同样的命令
ctrlaltdel
—— 指定在用户按下
Ctrl-Alt-Del
[color="#ff3366"]时执行的命令
3
init [color="#ff3366"]进程运行脚本:
/etc/init.d/rcS,
(在
rcS
[color="#ff3366"]中挂载文件系统,[color="#ff3366"]并且执行脚本/usr/etc/rc.local--[color="#ff3366"]看具体配置如何)
3
在
rc.local
[color="#ff3366"]中继续设置,最后运行用户的启动运行脚本
init.sh
[color="#ff3366"])
[color="#006400"](4)[color="#006400"]创建/etc/init.d[color="#006400"]文件夹和rcS[color="#006400"],在rcS[color="#006400"]中添加
#!
/bin/sh
echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
echo
"^ Welcome to YAFFS root filesystem!
^"
echo
"^
soso
^"
echo
"^^^^^^^^^^^^^^^^09-3-18^^^^^^^^^^^^^^^^^^^^"
/bin/hostname
-F /etc/host
# mount all filesystem defined in "fstab"
ln
-s /dev/vc/0 /dev/tty1
echo
"# mount all..........."
/bin/mount -a
echo
"# Starting mdev........."
#/bin/echo /sbin/mdev >
/proc/sys/kernel/hotplug
#mdev -s
#/sbin/ifconfig
lo 127.0.0.1
#/sbin/ifconfig eth0 192.168.0.55
#/sbin/route add
default gw 192.168.0.1
(说明:
[color="#003300"](5)[color="#003300"]创建host[color="#003300"]文件
soso
[color="#003300"](6)[color="#003300"]创建mdev.conf文件
(空文件)
[color="#003300"](7)[color="#003300"]复制主机/etc/[color="#003300"]下面的文件passwd,
group, shadow [color="#003300"]文件到/etc
#
cp /etc/group .
# cp /etc/passwd .
# cp /etc/shadow .
修改passwd中用户使用的shell名称。FC6上默认的为bash,而vivi只支持ash。
root:x:0:0:root:/root:/bin/bash
----> root:x:0:0:root:/root:/bin/ash
[color="#ff0000"](说明:
[color="#ff0000"]格式:account:password:UID:GID:GECOS:directory:shell
account
[color="#ff0000"]用户段
[color="#ff0000"] password
[color="#ff0000"]密码段
[color="#ff0000"] UID
user id [color="#ff0000"]段
[color="#ff0000"] GID
group id [color="#ff0000"]段
GECOS:
[color="#ff0000"]信息段([color="#ff0000"]可选)
[color="#ff0000"] directory
[color="#ff0000"]用户登陆目录
[color="#ff0000"] shell
login 时运行的
shell
[color="#ff0000"])
[color="#003300"](8)[color="#003300"]修改各文件和文件夹的权限
#
chmod 755 /rootfs/etc/init.d/rcS
# chmod 755 /rootfs/etc/host
[color="#000080"]-------------yaffs[color="#000080"]文件系统映像的制作---------
使用mkyaffsimg程序可以把一个目录做成一个yaffs映像文件,然后使用usb下载到板子上。进入文件系统目录层,使用以下命令。
#mkyaffsimage
rootfs filesystem.yaffs
这样就会在该目录下生成rootfs.img映像文件,下载到开发板运行即可。
[color="#0000ff"]--------------cramfs[color="#0000ff"]文件系统映像的制作(cramfs[color="#0000ff"]压缩率比较高)------------
[color="#0000ff"]在FTP[color="#0000ff"]中下载cramfs-1.1.tar.gz[color="#0000ff"],解压到自己设定的目录下,[color="#0000ff"]如:
tar
xzvf cramfs-1.1.tar.gz –C
/home/
[color="#0000ff"]进入生成有mkcramfs[color="#0000ff"]文件的目录下(一定要进入此目录,否则会提示找不到该命令)
[color="#0000ff"]输入命令:#./mkcramfs
/ rootfs rootfs.cramfs
[color="#0000ff"]在当前目录下即生成rootfs.cramfs[color="#0000ff"]映像文件。到此Linux[color="#0000ff"]操作系统移植完毕。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/108148/showart_2123181.html |
|