利用busybox制作根文件系统2

使用busybox-1.9.2制作根文件系统
移植环境:
主机:RedHat9.0
交叉编译器:arm-linux-gcc-3.4.1
开发板平台:SBC2410
开始移植
 
1.  下载最新的busybox1.9.2,并解压缩。
下载busybox源代码:[url]http://busybox.net/downloads/busybox-[/url]1.9.2.tar.bz2
解压源码: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
(这一项一定要选上,我的redhat可能是因为这个原因启动不起来,后来我又重装的,而且不敢随便用root用户了)
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
 
其他的选项可以根据需要进行一些修改。
 
4.编译busybox
[localhost busybox-1.9.2]# make install
在busybox/_install 目录下会生成我们需要的文件。
5.       修改_install/bin/busybox的属性为4755
       chmod 4755 ./_install/bin/busybox      
必须要要修改属性,否则在busybox中很多命令会受限制,比如:
$ su
su: must be suid to work properly
 
6.建立root fs的文件系统所需的目录和文件。
 #mkdir  /home/wowocpp/nfsd
在root文件夹中建立基本的目录
[nfsd]# ls
bin   dev home  linuxrc proc sbin tmp var
boot etc lib   mnt      root  sys   usr
 
 
7. 以root身份建立节点文件/home/nfsd/dev/console, /home/nfsd/dev/null
[nfsd/dev]#  mknod -m 600 dev/console c 5 1
[nfsd/dev]#  mknod -m 666 dev/null c 1 3
 
8. 建立配置文件如下:
[etc]# more profile
#!/bin/sh
#/etc/profile:system-wide .profile file for the Bourne shells
 
echo
echo -n "Processing /etc/profile......"
 
# Set search library path
export LD_LIBRARY_PATH=/lib:/usr/lib
 
# set user path
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 
#Set PS1
USER = "`id -un`"
LOGNAME=$USER
PS1='[\u@\h\W]\$'
PATH=$PATH
 
echo "Done!"
 
[etc]# more init.d/rcS
#!/bin/sh
 
# set hostname, needed host file in /etc directory
#./etc/host
#hostname `cat /etc/host`
# mount all filesystem defined in "fstab"
echo "#mount all......."
#/bin/mount -a
#/bin/chmod 0666 /dev/null
echo "# starting mdev...."
#/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/bin/sh
 
 
[etc]# more
fstab     host       inittab    passwd     shadow    
group      init.d/    mdev.conf profile   
[etc]# more fstab
proc    /proc   proc defaults 0 0
none    /tmp    ramfs   defaults 0 0
none    /var    ramfs   defaults 0 0
mdev    /dev    ramfs   defaults 0 0
sysfs   /sys    sysfs   defaults 0 0
 
[etc]# more inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
 
::ctrlaltdel:/bin/umount -a -r
 
::shutdown:/bin umount -a -r
::shutdown:/sbin/swapoff -a
[etc]# more ../usr/etc/init
#!/bin/sh
ifconfig eth0 192.168.1.111 up
ifconfig lo 127.0.0.1
 
9.建立文件/etc/mdev.conf,内容为空
[etc]# vi mdev.conf
 
10.复制主机/etc/下面的文件passwd, group, shadow文件到etc目录(这一步也可以不做)
[etc]# cp /etc/group .
[etc]# cp /etc/passwd .
[etc]# cp /etc/shadow .
ok,所需要的文件都已经建立ok了
[etc]# ls
fstab group host init.d inittab mdev.conf passwd profile shadow
 
11.复制刚刚编译的busybox到/root目录下(以root用户身份)
[_install]# sudo cp -Rfv * /home/wowocpp/nfsd/
 
12.因为是编译的时候使用的是动态链接。所以先看看/busybox/_install/bin/busybox使用了哪些lib,然后从glibc复制相应的lib到/home/wowocpp/nfsd/中
[ bin]# /usr/local/arm/3.4.1/arm-linux-gnu-readelf -d busybox
 
 
 
Dynamic section at offset 0xb8014 contains 22 entries:
Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library:[libcrypt.so.1]
0x00000001 (NEEDED)                     Shared library: [libm.so.6]
0x00000001 (NEEDED)                     Shared library: [libc.so.6]
0x0000000c (INIT)                       0xc04c
0x0000000d (FINI)                       0xa26f0
0x00000004 (HASH)                       0x80e8
0x00000005 (STRTAB)                     0xa384
0x00000006 (SYMTAB)                     0x8b24
……
……
……
复制lib 文件到lib目录下:
[lib]#   cp /usr/local/arm/3.4.1/arm-linux/lib/ld* .
[lib]#   cp /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so .
[lib]#   cp /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 .
[lib]#   cp /usr/local/arm/3.4.1/arm-linux/lib/libm * .
[lib]#   cp /usr/local/arm/3.4.1/arm-linux/lib/libcrypt* .
12.使用工具mkcramfs将整个s3c2440文件夹制作成文件系统
[nfsd]# mkcramfs s3c2440 fs_2.6.24.4_busybox.cramfs -e 2.6.24.4
下载并烧录到nandflash中。启动…
如果出问题就修改一下配置文件。(我实验的时候是用的nfs方式的)。有问题大家一起交流!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值