使用busybox-1.9.2制作根文件系统

使用 busybox- 1.9.2 制作根文件系统
移植环境:
主机: RedHat9.0
交叉编译器: arm-linux-gcc- 3.4.1
开发板平台: SBC2410
开始移植
 
1.  下载最新的busybox 1.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]
0x 0000000c (INIT)                       0xc 04c
0x0000000d (FINI)                       0xa 26f 0
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 将整个s 3c 2440 文件夹制作成文件系统
[nfsd]# mkcramfs s 3c 2440 fs_ 2.6.24 .4_busybox.cramfs -e 2.6.24.4
下载并烧录到 nandflash 中。启动…
如果出问题就修改一下配置文件。(我实验的时候是用的 nfs 方式的)。有问题大家一起交流!!!

你可能感兴趣的:(职场,休闲)