快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

使用busybox-1.13.3 创建Linux根文件系统(2)

  8、创建一个空的mdev.conf文件,在挂载根文件系统时会用到的

  [~etc]# touch mdev.conf

  9、从本机拷贝passwd、shadow、group文件。

  [~ etc]# cp /etc/passwd .

  [~etc]# cp /etc/shadow .

  [~etc]# cp /etc/group .

  修改passwd文件,把第一行和最后一行的bash修改成ash。

  10、把busybox默认安装目录中的文件全部复制到这里的rootfs中。

  会发现多了linuxrc -> bin/busybox文件,这是挂载文件系。

  [~etc]# cd ..

  [~rootfs]# cp -Rfv /opt/develop/lyj/common/porting/rootfs/busybox-1.12.2/_install/* ./

  OK,以上用busybox创建了一个基本的文件系统。

  PS:

  如果编译busybox时选择动态库方式编译,则需要查看生成的busybox使用哪些动态库,然后把它们拷贝到rootfs/lib目录下。

  [~lib]# arm-linux-readelf -d ../bin/busybox

  Dynamic section at offset 0xc1014 contains 21 entries:

  Tag Type Name/Value

  0x00000001 (NEEDED) Shared library: [libm.so.6]

  0x00000001 (NEEDED) Shared library: [libc.so.6]

  0x0000000c (INIT) 0xc2ec

  0x0000000d (FINI) 0xa96b8

  0x00000004 (HASH) 0x80e8

  0x00000005 (STRTAB) 0xa4c4

  0x00000006 (SYMTAB) 0x8b64

  0x0000000a (STRSZ) 3505 (bytes)

  0x0000000b (SYMENT) 16 (bytes)

  0x00000015 (DEBUG) 0x0

  0x00000003 (PLTGOT) 0xd10e4

  0x00000002 (PLTRELSZ) 3112 (bytes)

  0x00000014 (PLTREL) REL

  0x00000017 (JMPREL) 0xb6c4

  0x00000011 (REL) 0xb674

  0x00000012 (RELSZ) 80 (bytes)

  0x00000013 (RELENT) 8 (bytes)

  0x6ffffffe (VERNEED) 0xb5a4

  0x6fffffff (VERNEEDNUM) 2

  0x6ffffff0 (VERSYM) 0xb276

  0x00000000 (NULL) 0x0

  可以看出,使用了libm.so.6和libc.so.6两个库。发现只拷贝这两个库还不够,还需要ld-linux.so.2和libgcc_s.so.1,也就是我编译出来的这个busybox需要4个动态库文件。

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/libm.so.6 .

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/libc.so.6 .

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/ld-linux.so.2 .

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/libgcc_s.so.1 .

  这样,使用动态库可以节省一半左右的空间,不过效率有所降低。

  准备链接库

  #cd ${OBJ_LIB}/lib (${OBJ_LIB}是交叉编译环境的目录)

  #for file in libc libcrypt libdl libm \

  >libpthread libresolv libutil

  >do

  >cp $file-*.so /home/fortis/rootfs/lib

  >cp -d $file.so.[*0-9] /home/fortis/rootfs/lib

  >done

  #cp -d ld*.so* /home/fortis/rootfs/lib

  11.测试

  1)、在本机修改/etc/export文件,重启NFS服务:

  [root@vm-dev root]# vi /etc/exports

  /opt/lyj             192.168.1.*(rw,insecure,sync,no_root_squash)

  /opt/develop/lyj/common/porting/rootfs/root_stand/reset/rootfs             192.168.1.*(rw,insecure,sync,no_root_squash)

  [root@vm-dev root]# service nfs restart

  2)、在Bootloader中传递以下参数给Kernel:

  root=/dev/nfs rw nfsroot=192.168.1.152:/opt/develop/lyj/common/porting/rootfs/root_stand/reset/rootfs ip=192.168.1.155:192.168.1.152:192.168.1.254:255.255.255.0:Jacky:eth0:off console=ttySAC0,115200 init=/linuxrc noinitrd

  3)、启动目标板,串口输出显示根文件系统已经加载成功:

  U-Boot 1.3.2 (Nov 27 2016 - 17:43:03)

  DRAM:  64 MB

  Flash: 512 kB

  NAND:  64 MiB

  In:    serial

  Out:   serial

  Err:   serial

  Found DM9000 ID:90000a46 at address 10000000 !

  DM9000 work in 16 bus width

  bd->bi_entaddr: 08:00:3e:26:0a:5b

  [eth_init]MAC:8:0:3e:26:a:5b:

  Hit any key to stop autoboot:  0

  NAND read: device 0 offset 0x80000, size 0x1b0000

  1769472 bytes read: OK

  ## Booting image at 30008000 ...

  Image Name:   Linux-2.6.24.4

  Created:      2016-11-27   7:24:11 UTC

  Image Type:   arm Linux Kernel Image (uncompressed)

  Data Size:    1697964 Bytes =  1.6 MB

  Load Address: 30008000

  Entry Point:  30008040

  Verifying Checksum ... OK

  test:hdr->ih_type:2

  test:hdr->ih_comp:0

  XIP Kernel Image ... OK

  test:hdr->ih_type:2

  test:hdr->ih_os:5

  Starting kernel ...

  test:machid:805306624

  test: bi_boot_params:0x33f5bfb8

  test:starting 1

  Uncompressing Linux............................................................................................................ done, booting the kernel.

  Linux version 2.6.24.4 (root@vm-dev) (gcc version 3.4.6) #94 Thu Nov 27 10:02:26 CST 2008

  CPU: ARM920T [41129200] revision 0 (armv4T), cr=00007177

  Machine: SMDK2410

  Memory policy: ECC disabled, Data cache writeback

  CPU S3C2410A (id 0x32410002)

  S3C2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHz

  S3C24XX Clocks, (c) 2004 Simtec Electronics

  CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on

  CPU0: D VIVT write-back cache

  CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

  CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

  Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256

  Kernel command line: root=/dev/nfs rw nfsroot=192.168.1.152:/opt/develop/lyj/common/porting/rootfs/root_stand/reset/rootfs ip=192.168.1.155:192.168.1.152:192.168.1.254:255.255.255.0:Jacky:eth0:off console=ttySAC0,115200 init=/linuxrc noinitrd

  irq: clearing subpending status 00000002

  PID hash table entries: 256 (order: 8, 1024 bytes)

  timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001e4c

  Console: colour dummy device 80x30

  console [ttySAC0] enabled

  Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)

  Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)

  Memory: 64MB = 64MB total

  Memory: 61324KB available (3088K code, 316K data, 132K init)

  Mount-cache hash table entries: 512

  CPU: Testing write buffer coherency: ok

  net_namespace: 64 bytes

  NET: Registered protocol family 16

  S3C2410 Power Management, (c) 2004 Simtec Electronics

  S3C2410: Initialising architecture

  S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics

  DMA channel 0 at c4800000, irq 33

  DMA channel 1 at c4800040, irq 34

  DMA channel 2 at c4800080, irq 35

  DMA channel 3 at c48000c0, irq 36

  SCSI subsystem initialized

  usbcore: registered new interface driver usbfs

  usbcore: registered new interface driver hub

  usbcore: registered new device driver usb

  NET: Registered protocol family 2

  IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

  TCP established hash table entries: 2048 (order: 2, 16384 bytes)

  TCP bind hash table entries: 2048 (order: 1, 8192 bytes)

  TCP: Hash tables configured (established 2048 bind 2048)

  TCP reno registered

  NetWinder Floating Point Emulator V0.97 (double precision)

  yaffs Nov 27 2008 09:58:27 Installing.

  io scheduler noop registered

  io scheduler anticipatory registered (default)

  io scheduler deadline registered

  io scheduler cfq registered

  Console: switching to colour frame buffer device 80x30

  fb0: s3c2410fb frame buffer device

  lp: driver loaded but no devices found

  ppdev: user-space parallel port driver

  Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled

  s3c2410-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410

  s3c2410-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410

  s3c2410-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410

  RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize

  loop: module loaded

  DM9000: dm9k_init_module

  Board init for dm9000a finished!

  <DM9KS> I/O: c480e000, VID: 90000a46

  eth0: at 0xc480e000 IRQ 18

  eth0: Ethernet addr: 08:00:3e:26:0a:5b

  Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

  ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx

  Driver 'sd' needs updating - please use bus_type methods

  S3C24XX NAND Driver, (c) 2004 Simtec Electronics

  s3c2410-nand s3c2410-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns

  NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)

  NAND_ECC_NONE selected by board driver. This is not recommended !!

  Scanning device for bad blocks

  Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":

  0x00000000-0x00080000 : "Boot Agent"

  0x00080000-0x00280000 : "S3C2410 kernel"

  0x00280000-0x00680000 : "S3C2410 rootfs"

  0x00680000-0x04000000 : "user"

  usbmon: debugfs is not available

  116x: driver isp116x-hcd, 03 Nov 2005

  s3c2410-ohci s3c2410-ohci: S3C24XX OHCI

  s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1

  s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000

  usb usb1: configuration #1 chosen from 1 choice

  hub 1-0:1.0: USB hub found

  hub 1-0:1.0: 2 ports detected

  Initializing USB Mass Storage driver...

  usbcore: registered new interface driver usb-storage

  USB Mass Storage support registered.

  mice: PS/2 mouse device common for all mice

  s3c2410 TouchScreen successfully loaded

  input: s3c2410 TouchScreen as /class/input/input0

  S3C24XX RTC, (c) 2004,2006 Simtec Electronics

  s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling

  s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0

  i2c /dev entries driver

  s3c2410-i2c s3c2410-i2c: slave address 0x10

  s3c2410-i2c s3c2410-i2c: bus frequency set to 99 KHz

  s3c2410-i2c s3c2410-i2c: i2c-0: S3C I2C adapter

  S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics

  s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled

  TCP cubic registered

  NET: Registered protocol family 1

  RPC: Registered udp transport module.

  RPC: Registered tcp transport module.

  s3c2410-rtc s3c2410-rtc: hctosys: invalid date/time

  IP-Config: Complete:

  device=eth0, addr=192.168.1.155, mask=255.255.255.0, gw=192.168.1.254,

  host=Jacky, domain=, nis-domain=(none),

  bootserver=192.168.1.152, rootserver=192.168.1.152, rootpath=

  Looking up port of RPC 100003/2 on 192.168.1.152

  Looking up port of RPC 100005/1 on 192.168.1.152

  VFS: Mounted root (nfs filesystem).

  Freeing init memory: 132K

  init started: BusyBox v1.12.2 (2016-11-27 14:55:55 CST)

  starting pid 785, tty '': '/etc/init.d/rcS'

  Processing etc/init.d/rc.S

  Mount all

  Start mdev....

  ****************************************************

  rootfs by NFS, s3c2410

  Created by lyj_uptech @ 2008.11.28

  Good Luck

  www.up-tech.com

  ****************************************************

  Please press Enter to activate this console.

  starting pid 790, tty '': '-/bin/sh'

  Processing /etc/profile... Done

  Processing /etc/profile

  Set search library path

  Set user path

  Set PS1

  All done!

  [root@up-tech /]# ls

  bin      dev      home     linuxrc  proc     sbin     tmp      var

  boot     etc      lib      mnt      root     sys      usr

  [root@up-tech /]#

  已经直接进入了nfs文件系统!

  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/itismine/archive/2009/11/05/4772284.aspx

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论