Chinaunix首页 | 论坛 | 博客
  • 博客访问: 474625
  • 博文数量: 1958
  • 博客积分: 44693
  • 博客等级: 大将
  • 技术积分: 22125
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-29 15:19
文章分类

全部博文(1958)

文章存档

2012年(560)

2011年(1398)

分类: LINUX

2011-03-20 11:33:03

发 布 时 间 : 2009-11-04    来 源 : 作 者 : 佚名   浏 览 : 1332

隐逸桃源说:

1、ramdisk是一个最小的linux rootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,包含如下目录:bin,dev,etc,home,lib,mnt,proc,sbin,usr,var。还需要有一些基本的工具:sh,ls,cp,mv……(位于/bin目录中);必要的配置文件:inittab,rc,fstab……位于(/etc目录种);必要的设备文件:/dev/tty*,/dev /console,/dev/men……(位于/dev目录中);sh,ls等工具必要的运行库:glibc。

2、首先建立一个空的ramdisk image文件:
 /home/xuxian/fsys
 if=/dev/zero of=rootfs bs=1M count=16
ramdisk image文件名为rootfs,大小为16M。
把它格式化为你需要的文件系统,比如 ext2 ,ext3等。
比如ext3 : 
 -m 0 -N 2000 ./rootfs 
这里的-N 2000表示最大的node数为2000。因为linux的设备也是基于文件系统的,需要占用文件系统的node,如果数目建立的太少,以后可能会不够用。
然后把它mount到某个目录:
 ramdisk
 -t ext3 -o loop ./rootfs ./ramdisk
 ramdisk


通过这一步,已经得到一个空的ramdisk image文件了。

3、建立各个目录:
 dev
 proc
 etc
 sbin
 bin
 lib
 mnt
 usr
 tmp
 root
 home
 var
 usr/bin
 usr/sbin
 usr/lib

对单用户来说,home和root不是必须的。

4、/dev目录:

omap1:/home/xuxian/fsys/ramdisk/dev$mknod -m 600 console c 5 1
omap1:/home/xuxian/fsys/ramdisk/dev$mknod -m 666 tty c 5 0
omap1:/home/xuxian/fsys/ramdisk/dev$mknod -m 600 tty0 c 4 0
omap1:/home/xuxian/fsys/ramdisk/dev$mknod -m 600 ttyS0 c 4 64

也可以用一种简单的方法来创建/dev里面的文件:首先你要下载一个文件系统

omap1:/home/xuxian/fsys/ramdisk/dev$cp -dpR /home/xuxian/osk/rootfs2.6/dev/* 
.
这个命令把下载的文件系统的/dev目录拷贝到ramdisk的/dev中。dp参数表示符号连接拷贝为符号连接,不拷贝连接的符号,并且拷贝源文件的所有属性。

5、/lib目录:

下面是arm-linux的动态库,可以选择一些必须的拷贝到ramdisk的lib下。
omap1:/home/iaadoa/work/crosstool/gcc-3.3.2-glibc-2.3.2/arm-linux/arm-linux/l
ib# ls
crt1.o                     libc_nonshared.a    libmcheck.a             
libnss_hesiod.so.2        librt.a
crti.o                     libcrypt-2.3.2.so   libmemusage.so          
libnss_nis-2.3.2.so       librt.so
crtn.o                     libcrypt.a          libm.so                 
libnss_nisplus-2.3.2.so   librt.so.1
gconv                      libcrypt.so         libm.so.6               
libnss_nisplus.so         libSegFault.so
gcrt1.o                    libcrypt.so.1       libnsl-2.3.2.so         
libnss_nisplus.so.2       libstdc++.a
ld-2.3.2.so                libc.so             libnsl.a                
libnss_nis.so             libstdc++.la
ld-linux.so.2              libc.so.6           libnsl.so               
libnss_nis.so.2           libstdc++.so
ldscripts                  libc.so_orig        libnsl.so.1             
libpcprofile.so           libstdc++.so.5
libanl-2.3.2.so            libdl-2.3.2.so      libnss_compat-2.3.2.so  
libpthread-0.10.so        libstdc++.so.5.0.5
libanl.a                   libdl.a             libnss_compat.so        
libpthread.a              libsupc++.a
libanl.so                  libdl.so            libnss_compat.so.2      
libpthread_nonshared.a    libsupc++.la
libanl.so.1                libdl.so.2          libnss_dns-2.3.2.so     
libpthread.so             libthread_db-1.0.so
libBrokenLocale-2.3.2.so   libg.a              libnss_dns.so           
libpthread.so.0           libthread_db.so
libBrokenLocale.a          libgcc_s.so         libnss_dns.so.2         
libpthread.so_orig        libthread_db.so.1
libBrokenLocale.so         libgcc_s.so.1       libnss_files-2.3.2.so   
libresolv-2.3.2.so        libutil-2.3.2.so
libBrokenLocale.so.1       libiberty.a         libnss_files.so         
libresolv.a               libutil.a
libbsd-compat.a            libieee.a           libnss_files.so.2       
libresolv.so              libutil.so
libc-2.3.2.so              libm-2.3.2.so       libnss_hesiod-2.3.2.so  
libresolv.so.2            libutil.so.1
libc.a                     libm.a              libnss_hesiod.so        
librt-2.3.2.so            Mcrt1.o

 

以下这些是必须的:

ld-2.3.2.so                libmemusage.so            libnss_nisplus.so.2
ld-linux.so.2              libm.so.6                 libnss_nis.so.2
libanl-2.3.2.so            libnsl-2.3.2.so           libpcprofile.so
libanl.so.1                libnsl.so.1               libpthread-0.10.so
libBrokenLocale-2.3.2.so   libnss_compat-2.3.2.so    libpthread.so.0
libBrokenLocale.so.1       libnss_compat.so.2        libresolv-2.3.2.so
libc-2.3.2.so              libnss_dns-2.3.2.so       libresolv.so.2
libcrypt-2.3.2.so          libnss_dns.so.2           librt-2.3.2.so
libcrypt.so.1              libnss_files-2.3.2.so     librt.so.1
libc.so.6                  libnss_files.so.2         libSegFault.so
libdl-2.3.2.so             libnss_hesiod-2.3.2.so    libthread_db-1.0.so
libdl.so.2                 libnss_hesiod.so.2        libthread_db.so.1
libgcc_s.so.1              libnss_nis-2.3.2.so       libutil-2.3.2.so
libm-2.3.2.so              libnss_nisplus-2.3.2.so   libutil.so.1

拷贝到ramdisk的lib目录下就行了。

6、安装busybox:

下载busybox-1.01
 -xjvf busybox-1.01.tar.bz2
 TARGET_ARCH=arm CROSS=arm-linux- 
PREFIX=/home/xuxian/fsys/ramdisk menuconfig
 TARGET_ARCH=arm CROSS=arm-linux- 
PREFIX=/home/xuxian/fsys/ramdisk dep
 TARGET_ARCH=arm CROSS=arm-linux- 
PREFIX=/home/xuxian/fsys/ramdisk
 TARGET_ARCH=arm CROSS=arm-linux- 
PREFIX=/home/xuxian/fsys/ramdisk inatall

addgroup   chown      dmesg    gzip       login   netstat   sed     true
adduser    cp         echo     hostname   ls      pidof     sh      umount
ash        date       egrep    ip         mkdir   ping      sleep   uname
busybox    dd         false    ipaddr     mknod   ps        su      usleep
cat        delgroup   fgrep    iproute    more    pwd       sync    vi
chgrp      deluser    grep     kill       mount   rm        tar     zcat
chmod      df         gunzip   ln         mv      rmdir     touch
这些就是可用的命令。

7、/etc下系统配置文件说明:

 inittab
#
# This is run first except when booting in single-user mode
#指定初始化文件

::sysinit:/etc/init.d/rcS

# /bin/sh
#
# Start an "askfirst" shell on the console (whatever that may be)
#启动时执行的shell

::askfirst:-/bin/sh

# Stuff to do when restarting the init process
#重启动作

::restart:/sbin/init

# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot

#关机时动作,卸载所有文件系统

::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

阅读(708) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~