busybox制作ramdisk动态库版本

Linux kernel配置

1.1  dts

修改dts以支持ramdisk bootargs和ramdisk分区:

在memory项后通过chosen方式添加bootargs,添加内容如下:

/ {

model = "TI AM335x CORS";

compatible = "ti,am335x-evm", "ti,am33xx";

memory {

device_type = "memory";

reg = <0x80000000 0x8000000>; /* 128 MB */

};

chosen {

bootargs = "console=ttyO0,115200n8 root=/dev/ram0";

};

};

在[email protected],0 {内增加一个ramdisk分区(我使用8M大小):

[email protected] {

label = "NAND.kernel";

reg = <0x00200000 0x00400000>;

};

[email protected] {

label = "NAND.file-system";

reg = <0x00600000 0x02800000>;

};

[email protected] {

label = "NAND.ramdisk";

reg = <0x02E00000 0x00800000>;

};

[email protected] {

label = "NAND.types";

reg = <0x03600000 0x04200000>;

};

};

最后重新编译dts:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-cors.dtb

1.2 Kernel

使用的dtb方式启动内核,故采取dtb的chosen方式传递bootargs给内核,需要修改内核config配置:

make ARCH=arm menuconfig

Boot options  --->

按N键取消配置项

[ ] Use appended device tree blob to zImage (EXPERIMENTAL)

其次

a):General setup-->选择
Initial RAM filesystem and RAM disk......

b):Device Drivers-->Block devices-->选择
RAM block device support 项

并检查Optimize for size是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。

修改Default RAM disk size kbytes选项为(8192)

ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。所以要在make menuconfig ARCH=arm的时候进入File
systems菜单,选上<*> Second extended fs support。以提供内核对ext2文件系统的支持。

最后重新编译内核:

./build.sh

最后copy:

cp arch/arm/boot/dts/am335x-cors.dtb ../../tftpboot/

cp arch/arm/boot/zImage ../../tftpboot/

Busybox编译

2.1 配置busybox

进入busybox目录执行#make menuconfig

  进入Busybox Settings -> build Options ->不选中"Build busybox as a static binary“,即静态链接:

[ ] Build BusyBox as a static binary (no shared libs)                │ │

│ │[ ]   Build BusyBox as a position independent executable             │ │

│ │[ ] Force NOMMU build                                                │ │

│ │[*] 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)       │ │

│ │(arm-linux-gnueabihf-) Cross Compiler prefix

Installation Options -> 选中"Don‘t use /usr",以免busybox不慎被安装到宿主机系统的相应目录下,破坏宿主机系统。Busybox
Installation Prefix (/xxx/rootfs),修改该选项表明编译后的busybox将安装到该位置,缺省在busybox目录下的_install下。

编辑Makefile:

CC = $(CROSS_COMPILE)gcc   -march=armv7

2.2 编译安装busybox

Make menuconfig之后在:

Build Options  --->

(arm-linux-gnueabihf-) Cross Compiler prefix

配置交叉编译工具

然后编译,安装:

make ARCH=arm

make install

2.3 制作ramdisk文件系统

编写如下脚本进行文件系统的生成:

#!/bin/sh

echo "Start make ramdisk rootfs !"

BUSYBOX_PATH=/home/fanyl/work/wnlbs/work/targetfs/busybox-1.24.2

ROOTFS_PATH=/home/fanyl/work/wnlbs/work/targetfs/mkOSrtfs/busybox

cur_dir=$(cd "$(dirname "$0")"; pwd)

echo $cur_dir

mkdir mkOSrtfs

cd mkOSrtfs

if [ ! -d "$ROOTFS_PATH" ]

then

mkdir busybox

cd busybox

mkdir dev etc lib proc tmp usr var

chmod 777 tmp

mkdir usr/lib

mkdir var/lib var/lock var/log var/run var/tmp

chmod 777 var/tmp

cp -dpR $BUSYBOX_PATH/_install/* .

cd dev

sudo mknod console c 5 1

sudo mknod null c 1 3

sudo mknod tty c 5 0

sudo mknod tty0 c 4 0

sudo mknod tty1 c 4 1

sudo mknod tty2 c 4 2

sudo mknod tty3 c 4 3

sudo mknod tty4 c 4 4

sudo mknod tty5 c 4 5

sudo mknod tty6 c 4 6

cd ../

cp -R $BUSYBOX_PATH/examples/bootfloppy/etc/*  etc/

OBJ_LIB_PATH=/home/fanyl/work/wnlbs/work/arm_bsp/cross-tools/linux-devkit/sysroots/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/

cd ${OBJ_LIB_PATH}/lib

echo $OBJ_LIB_PATH

#如果你对ramdisk的大小没有太多的限制的话,可以采用下面的方法将so库全部拷过来,如果要求很高使用:arm_v5t_le-readelf
-d busybox | grep NEEDED

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

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

#获取指定的so库

#for file in ` ls $1 `

#    do

#        cp *.so.* $ROOTFS_PATH/lib

#        #cp -d *.so.* $ROOTFS_PATH/lib

#    done

#cp -d ld*.so* $ROOTFS_PATH/lib

fi

cd $ROOTFS_PATH

cd ../

mkdir rootfs

#sudo dd if=/dev/zero of=ramdisk bs=1k count=4096

#sudo dd if=/dev/zero of=ramdisk.img bs=1k count=8192

#/sbin/mke2fs -F -v -m0 ramdisk.img

#sudo mount -o loop ramdisk.img rootfs

cp -av busybox/* rootfs

#sudo umount rootfs

genext2fs -b 8192 -d busybox/ ramdisk

gzip -9 ramdisk

mkimage -A arm -O linux -T ramdisk -C none -a 0x88080000 -n "ramdisk" -d ramdisk.gz ramdisk.img

echo "End make ramdisk rootfs!"

查看最终需要的so:

cd lib/

[email protected]:~/work/wnlbs/work/targetfs/rootfs-so/lib$

[email protected]:~/work/wnlbs/work/targetfs/rootfs-so/lib$

[email protected]:~/work/wnlbs/work/targetfs/rootfs-so/lib$ ls

ld-2.15.so               libgudev-1.0.so.0          libpam_misc.so.0.82.0

ld-linux-armhf.so.3      libgudev-1.0.so.0.1.1      libpam.so

ld-linux.so.3            libm-2.15.so               libpam.so.0

libacl.so                libm-2.19.so               libpam.so.0.83.1

libacl.so.1              libmount.so.1              libpthread-2.15.so

libacl.so.1.1.0          libmount.so.1.1.0          libpthread-2.19.so

libanl-2.15.so           libm.so.6                  libpthread.so.0

libanl.so.1              libncurses.so.5            libresolv-2.15.so

libattr.so               libncurses.so.5.9          libresolv.so.2

libattr.so.1             libncursesw.so.5           librt-2.15.so

libattr.so.1.1.0         libncursesw.so.5.9         librt-2.19.so

libblkid.so.1            libnsl-2.15.so             librt.so.1

libblkid.so.1.1.0        libnsl.so.1                libSegFault.so

libBrokenLocale-2.15.so  libnss_compat-2.15.so      libsupc++.a

libBrokenLocale.so.1     libnss_compat.so.2         libsysfs.so

libbusybox.so.1.24.2     libnss_dns-2.15.so         libsysfs.so.2

libc-2.15.so             libnss_dns.so.2            libsysfs.so.2.0.1

libc-2.19.so             libnss_files-2.15.so       libthread_db-1.0.so

libcap.so                libnss_files.so.2          libthread_db.so.1

libcap.so.2              libnss_hesiod-2.15.so      libtinfo.so.5

libcap.so.2.22           libnss_hesiod.so.2         libtinfo.so.5.9

libcidn-2.15.so          libnss_mdns4_minimal.so.2  libudev.so.0

libcidn.so.1             libnss_mdns4.so.2          libudev.so.0.13.1

libcrack.so              libnss_mdns6_minimal.so.2  libusb-0.1.so.4

libcrack.so.2            libnss_mdns6.so.2          libusb-0.1.so.4.4.4

libcrack.so.2.9.0        libnss_mdns_minimal.so.2   libusb-1.0.so

libcrypt-2.15.so         libnss_mdns.so.2           libusb-1.0.so.0

libcrypt-2.19.so         libnss_nis-2.15.so         libusb-1.0.so.0.1.0

libcrypto.so             libnss_nisplus-2.15.so     libusb.so

libcrypto.so.1.0.0       libnss_nisplus.so.2        libutil-2.15.so

libcrypt.so.1            libnss_nis.so.2            libutil.so.1

libc.so.6                libpamc.so                 libuuid.so.1

libdl-2.15.so            libpamc.so.0               libuuid.so.1.3.0

libdl.so.2               libpamc.so.0.82.1          libz.so.1

libgcc_s.so              libpam_misc.so             libz.so.1.2.8

libgcc_s.so.1            libpam_misc.so.0

u-boot验证

在u-boot下输入:

其中${rdaddr}为ramdisk制作时指定的内存地址,要和u-boot配置一致

tftp ${rdaddr} ramdisk.img

nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} ${rdaddr} ${fdtaddr}

其中kernel,dtb已经烧写到nandflash之中,才有nandflash启动:

然后看到启动信息:

U-wnlbs# tftp ${rdaddr} ramdisk.img

link up on port 0, speed 100, full duplex

Using cpsw device

TFTP from server 192.168.255.130; our IP address is 192.168.255.110

Filename ‘ramdisk.img‘.

Load address: 0x88080000

Loading: #################################################################

#################################################################

########################################################

182.6 KiB/s

done

Bytes transferred = 950459 (e80bb hex)

U-wnlbs# nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} ${rdaddr} ${fdtaddr}

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

262144 bytes read: OK

NAND read: device 0 offset 0x200000, size 0x400000

4194304 bytes read: OK

Kernel image @ 0x82000000 [ 0x000000 - 0x332308 ]

## Loading init Ramdisk from Legacy Image at 88080000 ...

Image Name:   ramdisk

Created:      2016-04-29   2:25:21 UTC

Image Type:   ARM Linux RAMDisk Image (uncompressed)

Data Size:    950395 Bytes = 928.1 KiB

Load Address: 88080000

Entry Point:  88080000

Verifying Checksum ... OK

## Flattened Device Tree blob at 88000000

Booting using the fdt blob at 0x88000000

Loading Ramdisk to 8e636000, end 8e71e07b ... OK

Loading Device Tree to 8e62b000, end 8e6359c3 ... OK

test by flex.fan 20160426 Starting kernel ...

[    0.000000] test by flex.fan Booting Linux on physical CPU 0x0

[    0.000000] Linux version 3.14.26-g07d13c6-dirty (svn:Unversioned directory) ([email protected]) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #4 Fri Apr 29 10:11:14 CST 2016

[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d

[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

[    0.000000] Machine model: TI AM335x CORS

[    0.000000] cma: CMA: reserved 24 MiB at 8c800000

[    0.000000] Memory policy: Data cache writeback

[    0.000000] CPU: All CPU(s) started in SVC mode.

[    0.000000] AM335X ES2.1 (neon )

[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 64512

[    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/ram0

[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)

[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)

[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)

[    0.000000] Memory: 225440K/260096K available (4515K kernel code, 254K rwdata, 1512K rodata, 225K init, 177K bss, 34656K reserved, 0K highmem)

[    0.000000] Virtual kernel memory layout:

[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)

[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

[    0.000000]     vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)

[    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)

[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)

[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)

[    0.000000]       .text : 0xc0008000 - 0xc05eafe4   (6028 kB)

[    0.000000]       .init : 0xc05eb000 - 0xc0623504   ( 226 kB)

[    0.000000]       .data : 0xc0624000 - 0xc0663880   ( 255 kB)

[    0.000000]        .bss : 0xc0663880 - 0xc068ffa0   ( 178 kB)

[    0.000000] NR_IRQS:16 nr_irqs:16 16

[    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts

[    0.000000] Total of 128 interrupts on 1 active controller

[    0.000000] OMAP clockevent source: timer2 at 24000000 Hz

[    0.000014] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns

[    0.000033] OMAP clocksource: timer1 at 24000000 Hz

[    0.000315] Console: colour dummy device 80x30

[    0.000347] Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)

[    0.089478] pid_max: default: 32768 minimum: 301

[    0.089572] Security Framework initialized

[    0.089626] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)

[    0.089637] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)

[    0.096029] CPU: Testing write buffer coherency: ok

[    0.096419] Setting up static identity map for 0x8046ec60 - 0x8046ecb8

[    0.097380] devtmpfs: initialized

[    0.099033] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3

[    0.105766] omap_hwmod: tptc0 using broken dt data from edma

[    0.105847] omap_hwmod: tptc1 using broken dt data from edma

[    0.105918] omap_hwmod: tptc2 using broken dt data from edma

[    0.110038] omap_hwmod: debugss: _wait_target_disable failed

[    0.166255] pinctrl core: initialized pinctrl subsystem

[    0.167278] regulator-dummy: no parameters

[    0.169729] NET: Registered protocol family 16

[    0.171665] DMA: preallocated 256 KiB pool for atomic coherent allocations

[    0.173578] cpuidle: using governor ladder

[    0.173592] cpuidle: using governor menu

[    0.181436] platform 49000000.edma: alias fck already exists

[    0.181465] platform 49000000.edma: alias fck already exists

[    0.181480] platform 49000000.edma: alias fck already exists

[    0.182669] OMAP GPIO hardware version 0.1

[    0.193024] omap-gpmc 50000000.gpmc: could not find pctldev for node /[email protected]/nandflash_pins_default, deferring probe

[    0.193056] platform 50000000.gpmc: Driver omap-gpmc requests probe deferral

[    0.194852] No ATAGs?

[    0.194870] hw-breakpoint: debug architecture 0x4 unsupported.

[    0.212713] bio: create slab <bio-0> at 0

[    0.227082] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver

[    0.228956] SCSI subsystem initialized

[    0.229990] usbcore: registered new interface driver usbfs

[    0.230182] usbcore: registered new interface driver hub

[    0.230401] usbcore: registered new device driver usb

[    0.231490] pps_core: LinuxPPS API ver. 1 registered

[    0.231502] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>

[    0.231634] PTP clock support registered

[    0.233532] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400

[    0.235311] cfg80211: Calling CRDA to update world regulatory domain

[    0.236102] Switched to clocksource timer1

[    0.254729] NET: Registered protocol family 2

[    0.255575] TCP established hash table entries: 2048 (order: 1, 8192 bytes)

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

[    0.255638] TCP: Hash tables configured (established 2048 bind 2048)

[    0.255725] TCP: reno registered

[    0.255738] UDP hash table entries: 256 (order: 0, 4096 bytes)

[    0.255758] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

[    0.255951] NET: Registered protocol family 1

[    0.256427] RPC: Registered named UNIX socket transport module.

[    0.256442] RPC: Registered udp transport module.

[    0.256448] RPC: Registered tcp transport module.

[    0.256454] RPC: Registered tcp NFSv4.1 backchannel transport module.

[    0.256734] Trying to unpack rootfs image as initramfs...

[    0.257508] rootfs image is not initramfs (no cpio magic); looks like an initrd

[    0.262416] Freeing initrd memory: 928K (ce636000 - ce71e000)

[    0.262664] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available

[    0.265788] futex hash table entries: 256 (order: -1, 3072 bytes)

[    0.400750] VFS: Disk quotas dquot_6.5.2

[    0.400817] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

[    0.401283] NFS: Registering the id_resolver key type

[    0.401367] Key type id_resolver registered

[    0.401376] Key type id_legacy registered

[    0.401431] msgmni has been set to 490

[    0.402889] NET: Registered protocol family 38

[    0.402931] io scheduler noop registered

[    0.402939] io scheduler deadline registered

[    0.402963] io scheduler cfq registered (default)

[    0.404583] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568

[    0.406063] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled

[    0.409117] omap_uart 44e09000.serial: no wakeirq for uart0

[    0.409281] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0

[    1.032302] console [ttyO0] enabled

[    1.036656] omap_uart 48022000.serial: no wakeirq for uart0

[    1.042607] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 89, base_baud = 3000000) is a OMAP UART1

[    1.052941] omap_uart 48024000.serial: no wakeirq for uart0

[    1.058973] 48024000.serial: ttyO2 at MMIO 0x48024000 (irq = 90, base_baud = 3000000) is a OMAP UART2

[    1.069185] omap_uart 481a6000.serial: no wakeirq for uart0

[    1.075118] 481a6000.serial: ttyO3 at MMIO 0x481a6000 (irq = 60, base_baud = 3000000) is a OMAP UART3

[    1.086177] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20

[    1.103817] brd: module loaded

[    1.112710] loop: module loaded

[    1.116435] (hci_tty): inside hci_tty_init

[    1.121156] (hci_tty): allocated 249, 0

[    1.126445] mtdoops: mtd device (mtddev=name/number) must be supplied

[    1.134531] usbcore: registered new interface driver zd1201

[    1.140923] ehci_hcd: USB 2.0 ‘Enhanced‘ Host Controller (EHCI) Driver

[    1.147785] ehci-pci: EHCI PCI platform driver

[    1.152642] ehci-omap: OMAP-EHCI Host Controller driver

[    1.158550] usbcore: registered new interface driver cdc_wdm

[    1.164685] usbcore: registered new interface driver usb-storage

[    1.171529] i2c-core: driver [rtc-ds1307] using legacy suspend method

[    1.178294] i2c-core: driver [rtc-ds1307] using legacy resume method

[    1.185727] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0

[    1.194913] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec

[    1.203175] pinctrl-single 44e10800.pinmux: pin 44e10960.0 already requested by 481a6000.serial; cannot claim for 48060000.mmc

[    1.215139] pinctrl-single 44e10800.pinmux: pin-88 (48060000.mmc) status -22

[    1.222532] pinctrl-single 44e10800.pinmux: could not request pin 88 (44e10960.0) from group pinmux_mmc1_pins  on device pinctrl-single

[    1.235282] omap_hsmmc 48060000.mmc: Error applying setting, reverse things back

[    1.243535] 48060000.mmc supply vmmc not found, using dummy regulator

[    1.250485] pinctrl-single 44e10800.pinmux: pin 44e10960.0 already requested by 481a6000.serial; cannot claim for 48060000.mmc

[    1.262435] pinctrl-single 44e10800.pinmux: pin-88 (48060000.mmc) status -22

[    1.269826] pinctrl-single 44e10800.pinmux: could not request pin 88 (44e10960.0) from group pinmux_mmc1_pins  on device pinctrl-single

[    1.282574] omap_hsmmc 48060000.mmc: Error applying setting, reverse things back

[    1.290333] omap_hsmmc 48060000.mmc: pins are not configured from the driver

[    1.298044] omap_hsmmc 48060000.mmc: could not set regulator OCR (-22)

[    1.336887] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2

[    1.347326] omap-sham 53100000.sham: hw accel on OMAP rev 4.3

[    1.354546] platform 44d00000.wkup_m3: Driver wkup_m3 requests probe deferral

[    1.362905] oprofile: using arm/armv7

[    1.367188] TCP: cubic registered

[    1.370695] Initializing XFRM netlink socket

[    1.375186] NET: Registered protocol family 17

[    1.379958] NET: Registered protocol family 15

[    1.384631] omap_hsmmc 48060000.mmc: exceeding card‘s volts

[    1.390599] Key type dns_resolver registered

[    1.399306] PM: bootloader does not support rtc-only!

[    1.404606] ThumbEE CPU extension supported.

[    1.409221] Registering SWP/SWPB emulation handler

[    1.415784] regulator-dummy: disabling

[    1.420188] omap-gpmc 50000000.gpmc: GPMC revision 6.0

[    1.425572] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000

[    1.433191] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xa1

[    1.439893] nand: Micron MT29F1G08ABBDAH4

[    1.444086] nand: 128MiB, SLC, page size: 2048, OOB size: 64

[    1.450021] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme

[    1.455781] 12 ofpart partitions found on MTD device omap2-nand.0

[    1.462188] Creating 12 MTD partitions on "omap2-nand.0":

[    1.467864] 0x000000000000-0x000000020000 : "NAND.SPL"

[    1.475067] 0x000000020000-0x000000040000 : "NAND.SPL.backup1"

[    1.482805] 0x000000040000-0x000000060000 : "NAND.SPL.backup2"

[    1.490600] 0x000000060000-0x000000080000 : "NAND.SPL.backup3"

[    1.498291] 0x000000080000-0x0000000c0000 : "NAND.u-boot-spl-os"

[    1.506221] 0x0000000c0000-0x0000001c0000 : "NAND.u-boot"

[    1.514141] 0x0000001c0000-0x0000001e0000 : "NAND.u-boot-env"

[    1.521725] 0x0000001e0000-0x000000200000 : "NAND.u-boot-env.backup1"

[    1.530057] 0x000000200000-0x000000600000 : "NAND.kernel"

[    1.540459] 0x000000600000-0x000002e00000 : "NAND.file-system"

[    1.580805] 0x000002e00000-0x000003600000 : "NAND.ramdisk"

[    1.594582] 0x000003600000-0x000007800000 : "NAND.types"

[    1.656214]  remoteproc0: wkup_m3 is available

[    1.660874]  remoteproc0: Note: remoteproc is still under development and considered experimental.

[    1.670272]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn‘t yet guaranteed.

[    1.681350]  remoteproc0: Direct firmware load failed with error -2

[    1.687944]  remoteproc0: Falling back to user helper

[    1.756125] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6

[    1.762517] davinci_mdio 4a101000.mdio: detected phy mask fffffffc

[    1.770269] libphy: 4a101000.mdio: probed

[    1.774476] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver unknown

[    1.782885] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver unknown

[    1.791965] cpsw 4a100000.ethernet: Detected MACID = d0:ff:50:06:b6:99

[    1.800317] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)

[    1.813188] RAMDISK: gzip image found at block 0

[    1.920158] mmc0: BKOPS_EN bit is not set

[    1.937958] mmc0: Voltage range not supported for power class.

[    1.944084] mmc0: power class selection to bus width 8 failed

[    1.967596] mmc0: Voltage range not supported for power class.

[    1.973723] mmc0: power class selection to bus width 4 failed

[    1.998098] mmc0: new high speed MMC card at address 0001

[    2.016835] mmcblk0: mmc0:0001 MMC32G 29.5 GiB

[    2.021747] mmcblk0boot0: mmc0:0001 MMC32G partition 1 8.00 MiB

[    2.036540] mmcblk0boot1: mmc0:0001 MMC32G partition 2 8.00 MiB

[    2.047382] EXT4-fs (ram0): couldn‘t mount as ext3 due to feature incompatibilities

[    2.055559]  mmcblk0: p1

[    2.060086] EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)

[    2.068749] VFS: Mounted root (ext4 filesystem) readonly on device 1:0.

[    2.076231] devtmpfs: mounted

[    2.079456]  mmcblk0boot1: unknown partition table

[    2.085094] Freeing unused kernel memory: 224K (c05eb000 - c0623000)

[    2.093789]  mmcblk0boot0: unknown partition table

Processing /etc/profile... Done

/ #

说明制作成功。

时间: 2024-10-24 18:44:01

busybox制作ramdisk动态库版本的相关文章

将静态库制作成动态库

一.系统说明 Ubuntu12.04TLS 64位 二.制作静态库 (1)编写需要制作成静态库的程序(根据实际情况进行编写,这里只是一个简单例子)     //bar.h              #ifndef _BAR_H     #define _BAR_H          void bar(int i);          #endif     //bar.c     #include <stdio.h>     #include <stdlib.h>     #incl

解决Linux动态库版本兼容问题

说道“动态库版本兼容”,很多人头脑中首先蹦出的就是“Dll Hell”.啊,这曾经让人头疼的难题.时至今日,这个难题已经很好地解决了. 在进一步讨论之前来思考一个问题:Linux下为什么没有让人头痛的“DllHell”?回答这个问题,非常easy,因为——Linux下根本没有dll! 哈哈,当然这只是个玩笑,接下来展开一下这个话题,很多有动态库的系统都会面临这个难题,但各自解决的思路却各不相同. Dll hell是指windows 上动态库新版本覆盖旧版本,但是却不兼容老版本.常常发生在程序升级

6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

 一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件可以指定父对象 QTimer *timer = QTimer(this);   //这里的this实际上强制转换成为了QObject了. 4  每一个对象都有一个deleteLater()方法, QLineEdit* edit = new QLineEdit(this); delete edit;   //这里的delete马上调用析构函数对内存进行释放

iOS XCode7制作.Framework动态库和.a静态库的总结

一.开发SDK时的支持情况: OC语言制作动态库时,支持iOS8+:OC语言制作静态库,支持iOS7+. Swift语言制作动态库时,支持iOS8+;Swift不支持静态库. 对于SDK来说,支持情况非常重要.像我就是一开始就被坑了,我使用Swift开发动态库的方式提供SDK,所以只能支持到iOS8+.但这意味着所有使用我的SDK的客户的APP都必须到iOS8+,这就坑爹了. 所以假如需要支持iOS7的话,只有使用OC语言开发.a静态库的一条路. 二.开发动态库的简易过程: 开发动态库时,只要通

Linux中的动态库(共享库)的制作

一.整体大纲 二.共享库的制作 1. 命名规则: lib + 名字 + .so 2. 制作步骤: 1) 生成与位置无关的代码 (生成与位置无关的.o)    2) 将.o打包成共享库(动态库) 3. 发布和使用共享库: 4. 解决程序执行时动态库无法被加载的问题: 1)放到系统的库目录 中 -- 不允许使用 2)临时测试 环境变量: LD_LIBRARY_PATH=将动态库的路径设置给该变量          将设置的值, 导入到系统环境变量中: export LD_LIBRARY_PATH 

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格

Linux系统中“动态库”和“静态库”那点事儿【转】

转自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式.ELF(Executable and Linking Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制

linux成长之路(gcc编译器、静态库、动态库)

Jeremy Lin GCC简介 GCC(GNU Complier Collection)是GNU推出的功能强大.性能优越的多平台编译器套件,它包括了C.C++.Objective-C.Fortran.Java.Ada和Go语言的前端,也包括了这些语言的库,当前最新的版本是GCC 5.1.GCC可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%-30%.GCC编译器能将C.C++语言源程序.汇程式程序和目标程序编译.连接成可执行文件,如果没有给出可执行文件的名字

Linux系统中“动态库”和“静态库”那点事儿

摘自http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式.ELF(Executable and Linking Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制接