QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1730|回复: 3

在SkyEye下制作自己的文件系统的问题

[复制链接]
发表于 2004-9-3 22:29:55 | 显示全部楼层 |阅读模式
我想自己做一个可以运行在SkyEye下的文件系统。
SkyEye:    SkyEye-0.7.7
目标系统:  xscale_lubbock
内核版本:  Linux-2.6.7
文件系统:  ramdisk, ext2, 16M
工具链:    xscale-gcc-3.3.3(所在目录/usr/local/xscale/3.3.3)
busybox:   busybox-1.00-rc3

KERNEL_DIR=/home/Kernel
BUSYBOX_DIR=/home/Busybox
RAMDISK_DIR=/home/Ramdisk

具体步骤如下:
1) 编译内核:
   a) cd $KERNEL_DIR/linux-2.6.7
   b) make ARCH=arm lubbock_defconfig
   c) make ARCH=arm meunconfig
      --->Choose: General Setup
                  --->(root=/dev/ram initrd=0xa1000000,0x00400000 console=ttyS0,115200 mem=64M)
      --->Choose: Block Devices
                  ---><*>RamDisk support
                  --->(16384) Default Ram disk size(kbytes)
                  --->
  • Initial Ram disk (initrd) support
          --->Save and Exit
       d) make ARCH=arm CROSS_COMPILE=/usr/local/xscale/3.3.3/arm-linux-
          在arch/arm/boot生成编译好的内核(zImage)

    2) 编译busybox
       a) cd $BUSYBOX_DIR/busybox-1.00-rc3
       b) make menuconfig
          --->Choose: Build Option
                      --->[ ] Build BusyBox as a static binary (no shared libs) (默认设置为选中这项,现在取消这项)
                      --->
  • Do you want to build BusyBox with a Cross Compiler?
                          (/usr/local/xscale/3.3.3/bin/arm-linux-) Cross Compiler prefix
          --->Choose: Networking Utilities
                      --->[ ] route (默认设置为选中这项,现在取消这项)
       c) make
       d) make install
          所有的可执行文件默认被复制到busybox-1.00-rc3/_install目录中


    3) 制作文件系统RamDisk
       A) 生成基本的映像文件
          a) cd $RAMDISK_DIR/
          b) dd if=/dev/zero of=ramdisk.img bs=1024 count=16384
          c) mke2fs ramdisk.img
          d) file ramdisk.img (检查映像文件是否被格式化成为ext2的文件系统)
          e) mkdir tmpDir
          f) mount ramdisk.img tmpDir/ -o loop
          g) cd tmpDir
          h) mkdir bin
             mkdir dev
             mkdir etc
             mkdir home
             mkdir lib
             mkdir mnt
             mkdir proc
             mkdir tmp
             mkdir usr
             mkdir var
          i) cd dev
             mknod console c 5 1
             mknod fb0 c 29 0
             mknod kmem c 1 2
             mknod mem c 1 1
             mknod null c 1 3
             mknod ram b 1 0
             mknod random c 1 8
             mknod ts c 10 9
             mknod tty c 5 0
             mknod tty0 c 4 0
             mknod tty1 c 4 1
             mknod ttyAM0 c 204 16
             mknod ttyAM0 c 204 17
             mknod urandom c 1 9
             mknod zero c 1 5
       B) 配置系统启动脚本
          a) cd ../etc
          b) mkdir init.d
             cd init.d
             vi rcS
                [Edit and input]
                #!/bin/sh
                mount -t proc proc /proc
                mkdir /var/tmp
                mkdir /var/log
                mkdir /var/run
                mkdir /var/lock
                cat /etc/motd
                [Save and Exit]
                cd ..
          c) vi inittab
                [Edit and input]
                (Nothing)   
                [Save and Exit]
          d) vi inittab
                [Edit and input]
                Welcome to
                     _      _____      __   __    _      _
                    / \    /  __ \    /  \_/  \  | |    |_|
                   / _ \   | |  | |  / /\   /\ \ | |     _ ____  _   _  _  _
                  / /_\ \  | |__| | / /  \_/  \ \| |    | |  _ \| | | |\ \/ /
                 / /___\ \ | |__\ \ | |       | || |___ | | |_| | |_| |/    \
                /_/     \_\| |   \_\|_|       |_||_____||_|_| |_|\____|\_/\_/
                
                ARMLinux for Skyeye
                For further information check:
                http://hpclab.cs.tsinghua.edu.cn/~skyeye/
                [Save and Exit]
          e) vi fstab
                [Edit and input]
                proc        /proc        proc        default                0        0
                [Save and Exit]
       C) 复制busybox的可执行文件和动态连接库
          a) cd ..
          b) cp $BUSYBOX_DIR/busybox-1.00-rc3/_install . -dpR
          c) cd lib
             cp /usr/local/xscale/3.3.3/lib/ld-2.3.2.so .
             /usr/local/xscale/3.3.3/bin/arm-linux-strip ld-2.3.3.so
             ln -s ld-2.3.2.so ld-linux.2.so
          d) cd ../usr
             mkdir arm-linux/lib -p
             cd arm-linux/lib
             cp /usr/local/xscale/3.3.3/lib/libc-2.3.2.so .
             cp /usr/local/xscale/3.3.3/lib/libc.so .
             /usr/local/xscale/3.3.3/bin/arm-linux-strip ld-2.3.3.so
             ln -s libc-2.3.2.so libc.so.6
          e) cd ../etc
          f) vi ld.so.conf
                [Edit and input]
                /lib
                /usr/local/arm-linux/lib
                [Save and Exit]
             cp /sbin/ldconfig .
             export ROOT=$RAMDISK_DIR/tmpDir
             ldconfig -r -C ld.so.cache
       D) 生成基本的映像文件
          a) cd ../../
          b) umount ramdisk.img
          c) rm tmpDir -rf

    4) 制作文件系统RamDisk
       cpu: xscale
       mach: pxa_lubbock
       mem_bank: map=I, type=RW, addr=0x40000000, size=0x0c000000
       mem_bank: map=M, type=RW, addr=0xa0000000, size=0x00200000
       mem_bank: map=M, type=RW, addr=0xa0200000, size=0x00100000, file=zImage, boot=yes
       mem_bank: map=M, type=RW, addr=0xa0300000, size=0x00d00000
       mem_bank: map=M, type=RW, addr=0xa1000000, size=0x01000000, file=./ramdisk.img
       mem_bank: map=M, type=RW, addr=0xa2000000, size=0x02000000
       mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00096000

    5) 运行SkyEye
       a) 将上述步骤生成的zImage, ramdisk.img, skyeye.conf放在同一目录中
       b) 运行skeye
    [root@localhost xscale_lubbock]# skyeye
    ***************************************************************
    ****                                                       ****
    ****   SkyEye  Simulator Ver 0.7.7 with  GDB 5.3 Interface ****
    ****                                                       ****
    ***************************************************************
    GNU gdb 5.3
    Copyright 2002 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This SkyEye was configured as "--host=i686-pc-linux-gnu --target=arm-elf".
    (SkyEye) tar s
    cpu info: xscale, xscale, 69052100, fffffff0, 2
    mach info: name pxa_lubbock, mach_init addr 0x8141b8c
    lcd info: turn on lcd!
    SKYEYE: use xscale mmu ops
    Loaded ROM zImage
    Loaded ROM ./ramdisk.img
    Connected to the simulator.
    (SkyEye) run
    Starting program:
    warning: No executable file specified.
    warning: No program loaded.
    Uncompressing Linux................................................................ done, booting the kernel.
    Linux version 2.6.7 ([email protected]) (gcc version 3.3.3) #6 Thu Aug
    19 22:19:55 EDT 2004
    CPU: XScale-PXA250 [69052100] revision 0 (ARMv5TE)
    CPU: D undefined 5 cache
    CPU: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
    CPU: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
    Machine: Intel DBPXA250 Development Platform (aka Lubbock)
    Memory policy: ECC disabled, Data cache writeback
    Memory clock: 99.53MHz (*27)
    Run Mode clock: 99.53MHz (*1)
    Turbo Mode clock: 99.53MHz (*1.0, inactive)
    On node 0 totalpages: 16384
      DMA zone: 16384 pages, LIFO batch:4
      Normal zone: 0 pages, LIFO batch:1
      HighMem zone: 0 pages, LIFO batch:1
    Built 1 zonelists
    Kernel command line: root=/dev/ram initrd=0xa1000000,0x01000000 console=ttyS0,115200 mem=64M
    PID hash table entries: 512 (order 9: 4096 bytes)
    Console: colour dummy device 80x30
    Memory: 64MB = 64MB total
    Memory: 46448KB available (1606K code, 368K data, 76K init)
    Calibrating delay loop... 7.29 BogoMIPS
    Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
    Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
    Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
    CPU: Testing write buffer coherency: ok
    checking if image is initramfs...it isn't (ungzip failed); looks like an initrd
    Freeing initrd memory: 16384K
    NET: Registered protocol family 16
    Linux Kernel Card Services
      options:  none
    NetWinder Floating Point Emulator V0.97 (double precision)
    JFFS2 version 2.2. (C) 2001-2003 Red Hat, Inc.
    ttyS0 at MMIO 0x40100000 (irq = 15) is a FFUART
    ttyS1 at MMIO 0x40200000 (irq = 14) is a BTUART
    ttyS2 at MMIO 0x40700000 (irq = 13) is a STUART
    RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
    Using anticipatory io scheduler
    Lubbock configured to boot from ROM (bank 0)
    Probing Lubbock Boot ROM at physical address 0x00000000 (32-bit buswidth)
    CFI: Found no Lubbock Boot ROM device at location zero
    Probing Lubbock Application Flash at physical address 0x04000000 (32-bit buswidth)
    CFI: Found no Lubbock Application Flash device at location zero
    pxa2xx_udc: version 14-Dec-2003
    gs_bind: Gadget Serial v0.1 bound
    gs_module_init: Gadget Serial v0.1 loaded
    mice: PS/2 mouse device common for all mice
    NET: Registered protocol family 2
    IP: routing cache hash table of 512 buckets, 4Kbytes
    TCP: Hash tables configured (established 4096 bind 8192)
    NET: Registered protocol family 1
    RAMDISK: ext2 filesystem found at block 0
    RAMDISK: Loading 16384 blocks [1 disk] into ram disk... done.
    VFS: Mounted root (ext2 filesystem) readonly.
    Freeing init memory: 76K
    SKYEYE ARMul_STC,NOT ALLOW, undefinstr,  CPnum is 2, instr ed2d420c, addr befff920
    SKYEYE ARMul_LDC,NOT ALLOW, underinstr, CPnum is 2, instr ecbd420c, addr befff920
    /sbin/init: error while loading shared libraries: libc.so.6: cannot open shared
    object file: No such file or directory
    Kernel panic: Attempted to kill init!
  • 发表于 2004-9-16 11:49:19 | 显示全部楼层
    问题解决了吗?
    回复

    使用道具 举报

     楼主| 发表于 2004-9-17 18:40:55 | 显示全部楼层
    还没有,在编译内核时,在COMMAND_LINE中加入LD_LIBRARY_PATH=/usr/local/arm-linux/lib,则上述的连接错误就会消失。但是busybox仍然没有办法启动。
    busybox启动时执行的是/sbin/init,在其源码中加入printf语句,发现init启动后总是停在一些跟控制台(console)相关的操作上,然后就不动了。
    如果用其他的sh先将系统启动,再执行busybox的其他功能,如ls,cat...之类的均能正常执行。
    回复

    使用道具 举报

    发表于 2004-9-23 22:47:42 | 显示全部楼层
    我们好象没有碰到这个问题。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    GMT+8, 2024-11-22 04:15 , Processed in 0.066650 second(s), 16 queries .

    © 2021 Powered by Discuz! X3.5.

    快速回复 返回顶部 返回列表