歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

pcDuino + BusyBox 成功搭建最小Linux系統

經過一周的嘗試,我的pcduino mini linux系統終於跑起來了。啟動界面如下:

U-Boot 2012.10 (Apr 19 2013 - 18:46:44) Allwinner Technology
 
CPU:  SUNXI Family
 Board: pcDuino
 I2C:  ready
 DRAM:  1 GiB
 MMC:  SUNXI SD/MMC: 0
 *** Warning - bad CRC, using default environment
 
In:    serial
 Out:  serial
 Err:  serial
 Hit any key to stop autoboot:  0
 reading uEnv.txt
 
144 bytes read
 Loaded environment from uEnv.txt
 reading boot.scr
 
289 bytes read
 Jumping to boot.scr
 ## Executing script at 44000000
 Wrong image format for "source" command
 reading script.bin
 
44900 bytes read
 reading uImage
 
4693132 bytes read
 ## Booting kernel from Legacy Image at 48000000 ...
    Image Name:  Linux-3.0.62
    Image Type:  ARM Linux Kernel Image (uncompressed)
    Data Size:    4693068 Bytes = 4.5 MiB
    Load Address: 40008000
    Entry Point:  40008000
    Verifying Checksum ... OK
    Loading Kernel Image ... OK
 OK
 
Starting kernel ...
 
<6>Initializing cgroup subsys cpuset
 <5>Linux version 3.0.62 (linuxidc@linuxidc) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #1 PREEMPT Sat Apr 20 18:32:39 CST 2013
 CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
 CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
 Machine: sun4i
 <6>Memory cut off:
 <6>    MALI : 0x5c000000 - 0x5fffffff  (  64 MB)
 <4>Ignoring unrecognised tag 0x00000000
 <6>Memory Reserved:
 <6>    SYS  : 0x43000000 - 0x4300ffff  (  64 kB)
 <6>    VE  : 0x44000000 - 0x48ffffff  (  80 MB)
 <6>    G2D  : 0x49000000 - 0x49ffffff  (  16 MB)
 <6>    LCD  : 0x5a000000 - 0x5bffffff  (  32 MB)
 Memory policy: ECC disabled, Data cache writeback
 <6>chip-id: A10 (AW1623 revision C)
 <7>On node 0 totalpages: 245760
 <7>free_area_init_node: node 0, pgdat c0887ea0, node_mem_map c094e000
 <7>  Normal zone: 1280 pages used for memmap
 <7>  Normal zone: 0 pages reserved
 <7>  Normal zone: 146176 pages, LIFO batch:31
 <7>  HighMem zone: 768 pages used for memmap
 <7>  HighMem zone: 97536 pages, LIFO batch:31
 <7>pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
 <7>pcpu-alloc: [0] 0
 Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 243712
 <5>Kernel command line: console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait loglevel=8 panic=10
 <6>PID hash table entries: 4096 (order: 2, 16384 bytes)
 <6>Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
 <6>Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
 <6>Memory: 448MB 512MB = 960MB total
 <5>Memory: 833852k/833852k available, 149188k reserved, 393216K highmem
 <5>Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000  (  4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000  ( 896 kB)
 
........//太長了,省略若干
 
<6>mmc0: new high speed SD card at address 1234
 [    4.140000] mmc0: new high speed SD card at address 1234
 <6>mmcblk0: mmc0:1234 SA01G 942 MiB
 [    4.160000] mmcblk0: mmc0:1234 SA01G 942 MiB
 <6> mmcblk0: p1 p2
 [    4.170000]  mmcblk0: p1 p2
 <6>Console: switching to colour frame buffer device 160x45
 [    4.290000] Console: switching to colour frame buffer device 160x45
 <4>regulator_init_complete: axp20_buck3: incomplete constraints, leaving on
 [    4.330000] regulator_init_complete: axp20_buck3: incomplete constraints, leaving on
 <4>regulator_init_complete: axp20_buck2: incomplete constraints, leaving on
 [    4.350000] regulator_init_complete: axp20_buck2: incomplete constraints, leaving on
 <4>regulator_init_complete: axp20_ldo4: incomplete constraints, leaving on
 [    4.360000] regulator_init_complete: axp20_ldo4: incomplete constraints, leaving on
 <4>regulator_init_complete: axp20_ldo3: incomplete constraints, leaving on
 [    4.380000] regulator_init_complete: axp20_ldo3: incomplete constraints, leaving on
 <4>regulator_init_complete: axp20_ldo2: incomplete constraints, leaving on
 [    4.390000] regulator_init_complete: axp20_ldo2: incomplete constraints, leaving on
 <4>regulator_init_complete: axp20_ldo1: incomplete constraints, leaving on
 [    4.410000] regulator_init_complete: axp20_ldo1: incomplete constraints, leaving on
 <6>sunxi-rtc sunxi-rtc: sunxi_rtc_gettime
 [    4.420000] sunxi-rtc sunxi-rtc: sunxi_rtc_gettime
 <6>sunxi-rtc sunxi-rtc: read time 2010-1-1 0:0:10
 [    4.430000] sunxi-rtc sunxi-rtc: read time 2010-1-1 0:0:10
 <6>sunxi-rtc sunxi-rtc: setting system clock to 2010-01-01 00:00:10 UTC (1262304010)
 [    4.440000] sunxi-rtc sunxi-rtc: setting system clock to 2010-01-01 00:00:10 UTC (1262304010)
 <3>EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240)
 [    4.460000] EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240)
 <3>EXT2-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (244)
 [    4.480000] EXT2-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (244)
 <6>EXT4-fs (mmcblk0p2): recovery complete
 [    5.840000] EXT4-fs (mmcblk0p2): recovery complete
 <6>EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
 [    6.060000] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
 <6>VFS: Mounted root (ext4 filesystem) on device 179:2.
 [    6.080000] VFS: Mounted root (ext4 filesystem) on device 179:2.
 <6>devtmpfs: mounted
 [    6.090000] devtmpfs: mounted
 <6>Freeing init memory: 164K
 [    6.090000] Freeing init memory: 164K
 mount: mounting devpts on /dev/pts failed: No such file or directory
 mount: mounting /dev/mmcblk0p1 on /boot failed: No such file or directory
 

Please press Enter to activate this console.
 

Processing /etc/profile... Done
 

/ # ls
 bin        home        lost+found  run        tmp
 dev        lib        mnt        sbin        usr
 etc        linuxrc    proc        sys        var
 / # ifconfig eth0
 eth0      Link encap:Ethernet  HWaddr 12:5B:BD:7D:C4:75 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:55 Base address:0x8000
 

/ # ifconfig eth0 172.16.1.133
 <4>wemac wemac.0: WARNING: no IRQ resource flags set.
 [ 2360.950000] wemac wemac.0: WARNING: no IRQ resource flags set.
 <6>wemac wemac.0: eth0: link down
 [ 2361.060000] wemac wemac.0: eth0: link down
 <6>ADDRCONF(NETDEV_UP): eth0: link is not ready
 [ 2361.070000] ADDRCONF(NETDEV_UP): eth0: link is not ready
 / #
 
詳細移植過程見linux移植。花了不少時間啊,這是移植心得。 見 http://www.linuxidc.com/Linux/2013-04/83606.htm
 
pcduino linux移植期間遇到了不少問題,總結如下:
 
1.pkg-config可以解決明明在自己機器上編譯好好的,在別人電腦上編譯就不行問題,它能為已安裝的庫時提供統一接口。了解pkg-config解決Package libusb-1.0 was not found in the pkg-config search path
 
2.用busybox制作文件系統時,要注意文件的屬性。包括動態鏈接、執行權限等。通過sudo cp -pR file1 file2,保留文件屬性,否則系統跑步起來。
 
3.Ubuntu下燒寫tf卡命令,這裡容易出問題,發現雜牌子的tf卡就不行,一卡了一段時間,最後果斷Kingstorm
 
4.Kernel panic - not syncing: No init found.  Try passing init= option to kernel,這個問題說了找不到init,而我設置init=/sbin/init,顯然沒問題。原因何在呢?
 
www.linuxidc.com @ www.linuxidc.com :~/Si/A10/pcduino/rootfs$ ls sbin/ -l
 

lrwxrwxrwx 1 linuxidc linuxidc 14 2013-04-28 21:16 init -> ../bin/busybox
 

www.linuxidc.com @ www.linuxidc.com :~/Si/A10/pcduino/rootfs$ file linuxrc
 linuxrc: symbolic link to `bin/busybox'

相關閱讀:BusyBox各版本下載 http://www.linuxidc.com/Linux/2011-08/40704.htm
 

發現bin/busybox是一個動態鏈接庫文件,依賴交叉編譯鏈的相應庫。而交叉編譯鏈庫有很多,試了發現../arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/lib/和 /home/linuxidc/tools/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/usr/lib/ 下的*.so*庫可以使用。

Copyright © Linux教程網 All Rights Reserved