Linux从汇编跳转到C语言执行的第一个函数是start_kernel(),在该函数中执行一定的函数后,会启动第一个内核进程,即kernel_init(),其中一个主要的执行函数是do_basic_setup(),
里面又调用了函数do_initcalls(),在该函数中加载编译时声明的不同模块,可根据需要决定是否加载。
本文根据通过make menuconfig进行初步裁剪后,分析不同的启动模块,再进一步分析调整是否满足需求,具体加载函数详见下文。
## Booting kernel from Legacy Image at 30008000 ...
Image Name: linux-2.6.26.5
Created: 2014-04-12 1:00:36 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1604024 Bytes = 1.5 MB
Load Address: 30008000
Entry Point: 30008040
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux...test1.....................................................
Linux version 2.6.26.5 (root@ubuntu) (gcc version 3.4.5) #99 PREEMPT Sat Apr 124
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
lieye in prepare_page_table mi->bank[0].start=0x30000000, size=0x4000000,addr = 0
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
USB Control, (c) 2006 sbc2410
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=nfs nfsroot=192.168.1.57:/nfsrootfs/rootfs ip=192.168c
irq: clearing subpending status 00000002
s3c2410 touchscreen IRQ_ADCPARENT
s3c2410 touchscreen IRQ_TC_AND_ADC.
s3c2410 touchscreen IRQ_TC_AND_ADC.
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 [tty1] enabled
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: 61628KB available (2860K code, 244K data, 128K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
calling net_ns_init+0x0/0x144
????????????????? net_namespace.c obj-y \net\core
net_namespace: 480 bytes
initcall net_ns_init+0x0/0x144 returned 0 after 2 msecs
calling ptrace_break_init+0x0/0x2c
ptrace.c obj-y \arch\arm\kernel 调试输出
initcall ptrace_break_init+0x0/0x2c returned 0 after 0 msecs
calling consistent_init+0x0/0xfc
consistent.c obj-y \arch\arm\mm 为init_mm分配页表
initcall consistent_init+0x0/0xfc returned 0 after 0 msecs
calling s3c2410_core_init+0x0/0x1c
obj-$(CONFIG_CPU_S3C2410) += s3c2410.o \arch\arm\mach-s3c2410 ,注册s3c2410_sysclass
initcall s3c2410_core_init+0x0/0x1c returned 0 after 1 msecs
calling s3c24xx_dma_sysclass_init+0x0/0x3c
obj-$(CONFIG_S3C2410_DMA) += dma.o \arch\arm\plat-s3c24xx,注册dma_sysclass
initcall s3c24xx_dma_sysclass_init+0x0/0x3c returned 0 after 1 msecs
calling sysctl_init+0x0/0x40
sysctl.c obj-y \kernel
initcall sysctl_init+0x0/0x40 returned 0 after 1 msecs
calling ksysfs_init+0x0/0xc0
ksysfs.c obj-y \kernel
initcall ksysfs_init+0x0/0xc0 returned 0 after 0 msecs
calling init_jiffies_clocksource+0x0/0x1c
jiffies.c obj-y \kernel\time
initcall init_jiffies_clocksource+0x0/0x1c returned 0 after 0 msecs
calling pm_init+0x0/0x4c
main.c obj-y \kernel\power core_initcall(pm_init);
initcall pm_init+0x0/0x4c returned 0 after 0 msecs
calling filelock_init+0x0/0x48
locks.c obj-y \fs\locks.c core_initcall(filelock_init);
initcall filelock_init+0x0/0x48 returned 0 after 0 msecs
calling init_aout_binfmt+0x0/0x1c
binfmt_aout.c obj-$(CONFIG_BINFMT_AOUT)+= binfmt_aout.o \fs\ core_initcall(init_aout_binfmt)
initcall init_aout_binfmt+0x0/0x1c returned 0 after 0 msecs
calling init_script_binfmt+0x0/0x1c
binfmt_script.o obj-y \fs\ core_initcall(init_script_binfmt)
initcall init_script_binfmt+0x0/0x1c returned 0 after 0 msecs
calling init_elf_binfmt+0x0/0x1c
binfmt_elf.c obj-$(CONFIG_BINFMT_ELF) \fs\ core_initcall(init_elf_binfmt)
initcall init_elf_binfmt+0x0/0x1c returned 0 after 0 msecs
calling random32_init+0x0/0xb0
random32.c obj-y \lib\ core_initcall(random32_init)
initcall random32_init+0x0/0xb0 returned 0 after 0 msecs
calling sock_init+0x0/0x80
socket.c obj-$(CONFIG_NET) \net\ core_initcall(sock_init)
initcall sock_init+0x0/0x80 returned 0 after 0 msecs
calling netlink_proto_init+0x0/0x204
af_netlink.c obj-y \net\netlink\ core_initcall(netlink_proto_init)
NET: Registered protocol family 16
initcall netlink_proto_init+0x0/0x204 returned 0 after 3 msecs
calling bdi_class_init+0x0/0x3c
backing-dev.c obj-y \mm\ postcore_initcall(bdi_class_init)
initcall bdi_class_init+0x0/0x3c returned 0 after 1 msecs
calling kobject_uevent_init+0x0/0x6c
lib-$(CONFIG_HOTPLUG) += kobject_uevent.o \lib\ postcore_initcall(kobject_uevent_init) #if defined(CONFIG_NET),好像是netlink的,与热插拔好像无关,需确认
initcall kobject_uevent_init+0x0/0x6c returned 0 after 0 msecs
calling tty_class_init+0x0/0x3c
tty_io.c obj-y \drivers\char postcore_initcall(tty_class_init)
initcall tty_class_init+0x0/0x3c returned 0 after 1 msecs
calling vtconsole_class_init+0x0/0xf0
obj-$(CONFIG_HW_CONSOLE)+= vt.o \drivers\char postcore_initcall(vtconsole_class_init)
initcall vtconsole_class_init+0x0/0xf0 returned 0 after 2 msecs
calling customize_machine+0x0/0x38
setup.c obj-y \arch\arm\kernel\ arch_initcall(customize_machine) here to execute smdk2410 init_machine
S3C2410 Power Management, (c) 2004 Simtec Electronics
initcall customize_machine+0x0/0x38 returned 0 after 21 msecs
calling s3c2410_irq_init+0x0/0x24
obj-$(CONFIG_CPU_S3C2410)+= irq.o \arch\arm\mach-s3c2410 arch_initcall(s3c2410_irq_init)
initcall s3c2410_irq_init+0x0/0x24 returned 0 after 0 msecs
calling s3c2410_dma_drvinit+0x0/0x24
obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o \arch\arm\mach-s3c2410 arch_initcall(s3c2410_dma_drvinit)
initcall s3c2410_dma_drvinit+0x0/0x24 returned 0 after 0 msecs
calling s3c2410_pm_drvinit+0x0/0x24
obj-$(CONFIG_S3C2410_PM)+= pm.o \arch\arm\mach-s3c2410 arch_initcall(s3c2440_pm_drvinit)
initcall s3c2410_pm_drvinit+0x0/0x24 returned 0 after 0 msecs
calling s3c_arch_init+0x0/0x68
cpu.c obj-y \arch\arm\plat-s3c24xx arch_initcall(s3c_arch_init)
S3C2410: Initialising architecture
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics //此处的log是在s3c2410_dma_drvinit()中出现的,留一个疑问
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 //到此处
initcall s3c_arch_init+0x0/0x68 returned 0 after 25 msecs
calling topology_init+0x0/0x30
setup.c obj-y \arch\arm\kernel subsys_initcall(topology_init)
initcall topology_init+0x0/0x30 returned 0 after 1 msecs
calling param_sysfs_init+0x0/0x21c
params.c obj-y \kernel subsys_initcall(param_sysfs_init)
initcall param_sysfs_init+0x0/0x21c returned 0 after 33 msecs
calling pm_sysrq_init+0x0/0x24
obj-$(CONFIG_MAGIC_SYSRQ)+= poweroff.o subsys_initcall(pm_sysrq_init) \kernel\power
initcall pm_sysrq_init+0x0/0x24 returned 0 after 0 msecs
calling readahead_init+0x0/0x44
readahead.c obj-y subsys_initcall(readahead_init) \mm\readhead.c
initcall readahead_init+0x0/0x44 returned 0 after 1 msecs
calling init_bio+0x0/0xec
ifeq ($(CONFIG_BLOCK),y) bio.c obj-y subsys_initcall(init_bio) \fs\bio.c
initcall init_bio+0x0/0xec returned 0 after 0 msecs
calling blk_settings_init+0x0/0x4c
obj-$(CONFIG_BLOCK) subsys_initcall(blk_settings_init) \block\blk-settings.c 该函数只定义了两个参数
initcall blk_settings_init+0x0/0x4c returned 0 after 0 msecs
calling blk_ioc_init+0x0/0x44
obj-$(CONFIG_BLOCK) subsys_initcall(blk_ioc_init) \block\blk-ioc.c
initcall blk_ioc_init+0x0/0x44 returned 0 after 0 msecs
calling genhd_device_init+0x0/0x54
obj-$(CONFIG_BLOCK) subsys_initcall(genhd_device_init) \block\genhd.c
initcall genhd_device_init+0x0/0x54 returned 0 after 1 msecs
calling fbmem_init+0x0/0xb0
obj-$(CONFIG_FB) subsys_initcall(fbmem_init) \drivers\video\fbmem.c
initcall fbmem_init+0x0/0xb0 returned 0 after 1 msecs
calling misc_init+0x0/0xb4
obj-y misc.c subsys_initcall(misc_init) \drivers\char\misc.c
initcall misc_init+0x0/0xb4 returned 0 after 1 msecs
calling spi_init+0x0/0x94
obj-$(CONFIG_SPI_MASTER)+= spi.o subsys_initcall(spi_init) \drivers\spi\spi.c
initcall spi_init+0x0/0x94 returned 0 after 2 msecs
calling usb_init+0x0/0x138
obj-$(CONFIG_USB)+= core/ usbcore-objs := usb.o subsys_initcall(usb_init) \drivers\usb\core\usb.c
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
initcall usb_init+0x0/0x138 returned 0 after 18 msecs
calling serio_init+0x0/0xb0
obj-$(CONFIG_SERIO)+= serio.o subsys_initcall(serio_init) \drivers\input\serio\serio.c
initcall serio_init+0x0/0xb0 returned 0 after 2 msecs
calling input_init+0x0/0x124
obj-$(CONFIG_INPUT)+= input/ input-core-objs := input.c subsys_initcall(input_init) \driver\input\input.c
initcall input_init+0x0/0x124 returned 0 after 1 msecs
calling rtc_init+0x0/0x8c
obj-$(CONFIG_RTC)+= rtc.o module_init(rtc_init) \drivers\char\rtc.c
initcall rtc_init+0x0/0x8c returned 0 after 1 msecs
calling i2c_init+0x0/0x74
obj-$(CONFIG_I2C)+= i2c-core.o subsys_initcall(i2c_init) \drivers\i2c\i2c-core.c
initcall i2c_init+0x0/0x74 returned 0 after 4 msecs
calling hwmon_init+0x0/0x58
obj-$(CONFIG_HWMON)+= hwmon.o subsys_initcall(hwmon_init) \drivers\hwmon\hwmon.c
initcall hwmon_init+0x0/0x58 returned 0 after 1 msecs
calling proto_init+0x0/0x3c
obj-y := sock.c subsys_initcall(proto_init) \net\core\sock.c
initcall proto_init+0x0/0x3c returned 0 after 0 msecs
calling net_dev_init+0x0/0x144
obj-y += dev.c subsys_initcall(net_dev_init) \net\core\dev.c
initcall net_dev_init+0x0/0x144 returned 0 after 1 msecs
calling neigh_init+0x0/0x8c
obj-y neighbour.c subsys_initcall(neigh_init) \net\core\neighbour.c
initcall neigh_init+0x0/0x8c returned 0 after 0 msecs
calling genl_init+0x0/0xfc
obj-y genetlink.c subsys_initcall(genl_init) \net\netlink\genetlink.c
initcall genl_init+0x0/0xfc returned 0 after 18 msecs
calling sysctl_init+0x0/0x30
ifeq ($(CONFIG_NET),y)
obj-$(CONFIG_SYSCTL)+= sysctl_net.c subsys_initcall(sysctl_init) \net\sysctl_net.c
endif
initcall sysctl_init+0x0/0x30 returned 0 after 0 msecs
calling alignment_init+0x0/0x9c
obj-$(CONFIG_ALIGNMENT_TRAP)+= alignment.c fs_initcall(alignment_init) \arch\arm\mm\alignment.c
initcall alignment_init+0x0/0x9c returned 0 after 0 msecs
calling clocksource_done_booting+0x0/0x24
obj-y clocksource.c fs_initcall(clocksource_done_booting) \kernel\time\clocksource.c
initcall clocksource_done_booting+0x0/0x24 returned 0 after 0 msecs
calling init_pipe_fs+0x0/0x5c
obj-y pipe.c fs_initcall(init_pipe_fs) \fs\pipe.c
initcall init_pipe_fs+0x0/0x5c returned 0 after 0 msecs
calling init_mnt_writers+0x0/0x24
obj-y namespace.c fs_initcall(init_mnt_writers) \fs\namespace.c
initcall init_mnt_writers+0x0/0x24 returned 0 after 0 msecs
calling eventpoll_init+0x0/0x9c
obj-$(CONFIG_EPOLL)+= eventpoll.o fs_initcall(eventpoll_init) \fs\eventpoll.c
initcall eventpoll_init+0x0/0x9c returned 0 after 0 msecs
calling anon_inode_init+0x0/0x110
obj-$(CONFIG_ANON_INODES)+= anon_inodes.o fs_initcall(anon_inode_init) \fs\anon_inodes.c
initcall anon_inode_init+0x0/0x110 returned 0 after 0 msecs
calling chr_dev_init+0x0/0xac
obj-y mem.o fs_initcall(chr_dev_init) \drivers\char
initcall chr_dev_init+0x0/0xac returned 0 after 13 msecs
calling loopback_init+0x0/0x1c
obj-$(CONFIG_NET) loopback.o fs_initcall(loopback_init) \drivers\net\loopback.c
initcall loopback_init+0x0/0x1c returned 0 after 2 msecs
calling inet_init+0x0/0x3a0
obj-y af_inet.o fs_initcall(inet_init) \net\ipv4\af_inet.c
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
initcall inet_init+0x0/0x3a0 returned 0 after 86 msecs
calling populate_rootfs+0x0/0xb8
obj-$(CONFIG_BLK_DEV_INITRD) += initramfs.o rootfs_initcall(populate_rootfs) \init\initramfs.c
initcall populate_rootfs+0x0/0xb8 returned 0 after 1 msecs
calling timer_init_sysfs+0x0/0x40
obj-y time.o device_initcall(timer_init_sysfs) \arch\arm\kernel\time.c
initcall timer_init_sysfs+0x0/0x40 returned 0 after 2 msecs
calling fpe_init+0x0/0x84
nwfpe-y fpmodule.c module_init(fpe_init) \arch\arm\nwfpe\fpmodule.c
NetWinder Floating Point Emulator V0.97 (double precision)
initcall fpe_init+0x0/0x84 returned 0 after 5 msecs
calling init_sched_debug_procfs+0x0/0x44
obj-y sched.o包含着sched_debug.c #ifdef CONFIG_SCHED_DEBUG __initcall(init_sched_debug_procfs) \kernel\sched_debug.c
initcall init_sched_debug_procfs+0x0/0x44 returned 0 after 0 msecs
calling create_proc_profile+0x0/0x80
obj-y profile.c module_init(create_proc_profile) \kernel\profile.c
initcall create_proc_profile+0x0/0x80 returned 0 after 0 msecs
calling ioresources_init+0x0/0x5c
obj-y resource.c __initcall(ioresources_init) \kernel\resource.c
initcall ioresources_init+0x0/0x5c returned 0 after 0 msecs
calling uid_cache_init+0x0/0xb4
obj-y user.c module_init(uid_cache_init) \kernel\user.c
initcall uid_cache_init+0x0/0xb4 returned 0 after 0 msecs
calling init_posix_timers+0x0/0xbc
obj-y posix-timers.c __initcall(init_posix_timers) \kernel\posix-timers.c
initcall init_posix_timers+0x0/0xbc returned 0 after 0 msecs
calling init_posix_cpu_timers+0x0/0x84
obj-y posix-cpu-timers.o __initcall(init_posix_cpu_timers) \kernel\posix-cpu-timers.c
initcall init_posix_cpu_timers+0x0/0x84 returned 0 after 0 msecs
calling nsproxy_cache_init+0x0/0x44
obj-y nsproxy.o module_init(nsproxy_cache_init) \kernel\nsproxy.c
initcall nsproxy_cache_init+0x0/0x44 returned 0 after 0 msecs
calling timekeeping_init_device+0x0/0x40
obj-y += timekeeping.o device_initcall(timekeeping_init_device) \kernel\time\timekeeping.c
initcall timekeeping_init_device+0x0/0x40 returned 0 after 2 msecs
calling init_clocksource_sysfs+0x0/0x6c
obj-y clocksource.o device_initcall(init_clocksource_sysfs) \kernel\time\clocksource.c
initcall init_clocksource_sysfs+0x0/0x6c returned 0 after 2 msecs
calling init_timer_list_procfs+0x0/0x44
obj-y timer_list.o __initcall(init_timer_list_procfs) \kernel\time\timer_list.c
initcall init_timer_list_procfs+0x0/0x44 returned 0 after 0 msecs
calling futex_init+0x0/0x70
obj-$(CONFIG_FUTEX) += futex.o __initcall(futex_init) \kernel\futex.c
initcall futex_init+0x0/0x70 returned 0 after 0 msecs
calling kallsyms_init+0x0/0x3c
obj-$(CONFIG_KALLSYMS) += kallsyms.o __initcall(kallsyms_init) \kernel\kallsyms.c
initcall kallsyms_init+0x0/0x3c returned 0 after 0 msecs
calling utsname_sysctl_init+0x0/0x20
obj-$(CONFIG_SYSCTL) += utsname_sysctl.o __initcall(utsname_sysctl_init) \kernel\utsname_sysctl.c
initcall utsname_sysctl_init+0x0/0x20 returned 0 after 0 msecs
calling init_per_zone_pages_min+0x0/0x50
obj-y page_alloc.o module_init(init_per_zone_pages_min) \mm\page_alloc.c
initcall init_per_zone_pages_min+0x0/0x50 returned 0 after 0 msecs
calling pdflush_init+0x0/0x1c
obj-y pdflush.o module_init(pdflush_init) \mm\pdflush.c
initcall pdflush_init+0x0/0x1c returned 0 after 0 msecs
calling kswapd_init+0x0/0x20
obj-y vmscan.o module_init(kswapd_init) \mm\vmscan.c
initcall kswapd_init+0x0/0x20 returned 0 after 0 msecs
calling init_tmpfs+0x0/0xe8
obj-$(CONFIG_SHMEM) += shmem.o module_init(init_tmpfs) \mm\shmem.c
initcall init_tmpfs+0x0/0xe8 returned 0 after 0 msecs
calling cpucache_init+0x0/0x1c
obj-$(CONFIG_SLAB) += slab.o __initcall(cpucache_init) \mm\slab.c
initcall cpucache_init+0x0/0x1c returned 0 after 0 msecs
calling fasync_init+0x0/0x44
obj-y fcntl.o module_init(fasync_init) \fs\fcntl.c
initcall fasync_init+0x0/0x44 returned 0 after 0 msecs
calling aio_setup+0x0/0x94
obj-y aio.o __initcall(aio_setup) \fs\aio.c
initcall aio_setup+0x0/0x94 returned 0 after 1 msecs
calling init_devpts_fs+0x0/0x54
obj-y += devpts/ devpts-$(CONFIG_UNIX98_PTYS):= inode.o module_init(init_devpts_fs) \fs\devpts\inode.c
initcall init_devpts_fs+0x0/0x54 returned 0 after 0 msecs
calling init_ramfs_fs+0x0/0x1c
ramfs-objs += inode.o module_init(init_ramfs_fs) \fs\ramfs\inode.c
initcall init_ramfs_fs+0x0/0x1c returned 0 after 0 msecs
calling init_nfs_fs+0x0/0x140
nfs-y inode.o module_init(init_nfs_fs) \fs\nfs\inode.c
initcall init_nfs_fs+0x0/0x140 returned 0 after 1 msecs
calling init_nlm+0x0/0x34
lockd-objs-y svc.o module_init(init_nlm); \fs\lockd\svc.c
initcall init_nlm+0x0/0x34 returned 0 after 0 msecs
calling init_nls_cp437+0x0/0x1c
obj-$(CONFIG_NLS_CODEPAGE_437)+= nls_cp437.o module_init(init_nls_cp437) \fs\nls\nls_cp437.c
initcall init_nls_cp437+0x0/0x1c returned 0 after 0 msecs
calling init_nls_cp936+0x0/0x1c
obj-$(CONFIG_NLS_CODEPAGE_936)+= nls_cp936.o module_init(init_nls_cp936) \fs\nls\nls_cp936.c
initcall init_nls_cp936+0x0/0x1c returned 0 after 0 msecs
calling init_nls_iso8859_1+0x0/0x1c
obj-$(CONFIG_NLS_ISO8859_1) += nls_iso8859-1.o module_init(init_nls_iso8859_1) \fs\nls\nls_iso8859-1.c
initcall init_nls_iso8859_1+0x0/0x1c returned 0 after 0 msecs
calling init_jffs2_fs+0x0/0xe8
jffs2-y+= super.o module_init(init_jffs2_fs) \fs\jffs2\super.c
JFFS2 version 2.2. (NAND) 锟铰?2001-2006 Red Hat, Inc.
initcall init_jffs2_fs+0x0/0xe8 returned 0 after 6 msecs
calling ipc_init+0x0/0x2c
obj-$(CONFIG_SYSVIPC) += util.o __initcall(ipc_init) \ipc\util.c
msgmni has been set to 120
initcall ipc_init+0x0/0x2c returned 0 after 2 msecs
calling ipc_sysctl_init+0x0/0x20
obj-$(CONFIG_SYSVIPC_SYSCTL) += ipc_sysctl.o __initcall(ipc_sysctl_init) \ipc\ipc_sysctl.c
initcall ipc_sysctl_init+0x0/0x20 returned 0 after 0 msecs
calling init_mqueue_fs+0x0/0xec
obj-$(CONFIG_POSIX_MQUEUE) += mqueue.o __initcall(init_mqueue_fs) \ipc\mqueue.c
initcall init_mqueue_fs+0x0/0xec returned 0 after 1 msecs
calling noop_init+0x0/0x20
obj-$(CONFIG_IOSCHED_NOOP)+= noop-iosched.o module_init(noop_init) \block\noop-iosched.c
io scheduler noop registered
initcall noop_init+0x0/0x20 returned 0 after 2 msecs
calling cfq_init+0x0/0xd0
obj-$(CONFIG_IOSCHED_CFQ)+= cfq-iosched.o module_init(cfq_init) \block\cfq-iosched.c
io scheduler cfq registered (default)
initcall cfq_init+0x0/0xd0 returned 0 after 3 msecs
calling fb_console_init+0x0/0x17c
obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o module_init(fb_console_init) \drivers\video\console\fbcon.c
initcall fb_console_init+0x0/0x17c returned 0 after 1 msecs
calling s3c2410fb_init+0x0/0x40
obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o module_init(s3c2410fb_init) \drivers\video\s3c2410fb.c
Console: switching to colour frame buffer device 40x30
fb0: s3c2410fb frame buffer device
initcall s3c2410fb_init+0x0/0x40 returned 0 after 35 msecs
calling vfb_init+0x0/0x134
obj-$(CONFIG_FB_VIRTUAL) += vfb.o module_init(vfb_init) \drivers\video\vfb.c
fb1: Virtual frame buffer device, using 1024K of video memory
initcall vfb_init+0x0/0x134 returned 0 after 23 msecs
calling rand_initialize+0x0/0x38
obj-y random.o module_init(rand_initialize) \drivers\char\random.c
initcall rand_initialize+0x0/0x38 returned 0 after 0 msecs
calling tty_init+0x0/0x1d4
obj-y tty_io.o module_init(tty_init) \drivers\char\tty_io.c
initcall tty_init+0x0/0x1d4 returned 0 after 117 msecs
calling pty_init+0x0/0x478
obj-$(CONFIG_LEGACY_PTYS)+= pty.o
obj-$(CONFIG_UNIX98_PTYS)+= pty.o module_init(pty_init) \drivers\char\pty.c
initcall pty_init+0x0/0x478 returned 0 after 4355 msecs
calling raw_init+0x0/0xc4
obj-$(CONFIG_RAW_DRIVER)+= raw.o module_init(raw_init) \drivers\char\raw.c
initcall raw_init+0x0/0xc4 returned 0 after 3 msecs
calling s3c2410ts_init+0x0/0x28 add by lieye
s3c2410ts init
s3c2410ts in probe
s3c2410ts device driver MAJOR:253
S3C2410 SUCCESS to get adc clock source s3c2410ts initialized
initcall s3c2410ts_init+0x0/0x28 returned 0 after 20 msecs
calling rtc_init+0x0/0xb0
obj-$(CONFIG_RTC)+= rtc.o module_init(rtc_init) \drivers\char\rtc.c
S3C2410 Real Time Clock Driver v0.1
initcall rtc_init+0x0/0xb0 returned 0 after 6 msecs
calling serial8250_init+0x0/0x128
obj-$(CONFIG_SERIAL_8250) += 8250.o module_init(serial8250_init) \drivers\serial\8250.c
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
initcall serial8250_init+0x0/0x128 returned 0 after 21 msecs
calling s3c24xx_serial_modinit+0x0/0x48
obj-$(CONFIG_SERIAL_S3C2410) += s3c2410.o module_init(s3c24xx_serial_modinit) \drivers\serial\s3c2410.c
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
initcall s3c24xx_serial_modinit+0x0/0x48 returned 0 after 30 msecs
calling loop_init+0x0/0x1d0
obj-$(CONFIG_BLK_DEV_LOOP)+= loop.o module_init(loop_init) \drivers\block\loop.c
loop: module loaded
initcall loop_init+0x0/0x1d0 returned 0 after 32 msecs
calling nbd_init+0x0/0x39c
obj-$(CONFIG_BLK_DEV_NBD)+= nbd.o module_init(nbd_init) \drivers\block\nbd.c
nbd: registered device at major 43
initcall nbd_init+0x0/0x39c returned 0 after 96 msecs
calling net_olddevs_init+0x0/0xd4
obj-$(CONFIG_NET) += Space.o device_initcall(net_olddevs_init) \drivers\net\space.c
initcall net_olddevs_init+0x0/0xd4 returned 0 after 0 msecs
calling cs8900_init+0x0/0x34
add by lieye module_init (cs8900_init) \drivers\net\cs8900a.c
Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
eth0: CS8900A rev E at 0xc4c00300 irq=53, no eeprom , addr: 00:12:34:56:78:9A
initcall cs8900_init+0x0/0x34 returned 0 after 19 msecs
calling init_mtd+0x0/0x44
mtd-y := mtdcore.o module_init(init_mtd) \driver\mtd\mtdcore.c
initcall init_mtd+0x0/0x44 returned 0 after 0 msecs
calling redboot_parser_init+0x0/0x1c
obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o module_init(redboot_parser_init) \drivers\mtd\redboot.c
initcall redboot_parser_init+0x0/0x1c returned 0 after 0 msecs
calling cmdline_parser_init+0x0/0x1c
obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o module_init(cmdline_parser_init) \drivers\mtd\cmdlinepart.c
initcall cmdline_parser_init+0x0/0x1c returned 0 after 0 msecs
calling init_mtdchar+0x0/0xa4
obj-$(CONFIG_MTD_CHAR)+= mtdchar.o module_init(init_mtdchar) \drivers\mtd\mtdchar.c
initcall init_mtdchar+0x0/0xa4 returned 0 after 1 msecs
calling init_mtdblock+0x0/0x1c
obj-$(CONFIG_MTD_BLOCK)+= mtdblock.o module_init(init_mtdblock) \drivers\mtd\mtdblock.c
initcall init_mtdblock+0x0/0x1c returned 0 after 0 msecs
calling cfi_probe_init+0x0/0x20
obj-$(CONFIG_MTD_CFI) += cfi_probe.o module_init(cfi_probe_init) \drivers\mtd\chips\cfi_probe.c
initcall cfi_probe_init+0x0/0x20 returned 0 after 0 msecs
calling jedec_probe_init+0x0/0x20
obj-$(CONFIG_MTD_JEDECPROBE) += jedec_probe.o module_init(jedec_probe_init) \drivers\mtd\chips\jedec_probe.c
initcall jedec_probe_init+0x0/0x20 returned 0 after 0 msecs
calling map_rom_init+0x0/0x20
obj-$(CONFIG_MTD_ROM) += map_rom.o module_init(map_rom_init) \drivers\mtd\chips\map_rom.c
initcall map_rom_init+0x0/0x20 returned 0 after 0 msecs
calling nand_base_init+0x0/0x28
nand-objs := nand_base.o module_init(nand_base_init) \drivers\mtd\nand\nand_base.c
initcall nand_base_init+0x0/0x28 returned 0 after 0 msecs
calling s3c2410_nand_init+0x0/0x40
obj-$(CONFIG_MTD_NAND_S3C2410)+= s3c2410.o module_init(s3c2410_nand_init) \drivers\mtd\nand\s3c2410.c
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-bi)
s3c2410_nand_update_chip: chip c3e170bc: 9
Scanning device for bad blocks
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00080000 : "Uboot-1.3.4"
0x00080000-0x00280000 : "Linux Kernel 2.6.26.5"
0x00280000-0x01a80000 : "Rootfs jffs2"
0x01a80000-0x03280000 : "Roofts user"
initcall s3c2410_nand_init+0x0/0x40 returned 0 after 356 msecs
calling plat_nand_init+0x0/0x1c
obj-$(CONFIG_MTD_NAND_PLATFORM)+= plat_nand.o module_init(plat_nand_init) \drivers\mtd\nand\plat_nand.c
initcall plat_nand_init+0x0/0x1c returned 0 after 1 msecs
calling s3c2410_spigpio_init+0x0/0x1c
obj-$(CONFIG_SPI_S3C24XX_GPIO) += spi_s3c24xx_gpio.o module_init(s3c2410_spigpio_init) \drivers\spi\spi_s3c24xx_gpio.c
initcall s3c2410_spigpio_init+0x0/0x1c returned 0 after 1 msecs
calling s3c24xx_spi_init+0x0/0x24
obj-$(CONFIG_SPI_S3C24XX)+= spi_s3c24xx.o module_init(s3c24xx_spi_init) \drivers\spi\spi_s3c24xx.c
initcall s3c24xx_spi_init+0x0/0x24 returned -19 after 3 msecs
calling mon_init+0x0/0xe8
usbmon-objs := mon_main.o module_init(mon_init) \drivers\usb\mon\mon_main.c
usbmon: debugfs is not available
initcall mon_init+0x0/0xe8 returned -19 after 3 msecs
calling ohci_hcd_mod_init+0x0/0x48
obj-$(CONFIG_USB_OHCI_HCD)+= ohci-hcd.o module_init(ohci_hcd_mod_init) \drivers\usb\host\ohci-hcd.c
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
initcall ohci_hcd_mod_init+0x0/0x48 returned 0 after 198 msecs
calling serport_init+0x0/0x40
obj-$(CONFIG_SERIO_SERPORT)+= serport.o module_init(serport_init) \drivers\input\serio\serport.c
initcall serport_init+0x0/0x40 returned 0 after 0 msecs
calling mousedev_init+0x0/0x7c
obj-$(CONFIG_INPUT_MOUSEDEV) += mousedev.o module_init(mousedev_init) \drivers\input\mousedev.c
mice: PS/2 mouse device common for all mice
initcall mousedev_init+0x0/0x7c returned 0 after 4 msecs
calling atkbd_init+0x0/0x28
obj-$(CONFIG_KEYBOARD_ATKBD)+= atkbd.o module_init(atkbd_init) \drivers\input\keyboard\atkbd.c
initcall atkbd_init+0x0/0x28 returned 0 after 1 msecs
calling s3c_rtc_init+0x0/0x28
obj-$(CONFIG_RTC_DRV_S3C)+= rtc-s3c.o module_init(s3c_rtc_init) \drivers\rtc\rtc-s3c.c
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
initcall s3c_rtc_init+0x0/0x28 returned 0 after 9 msecs
calling i2c_dev_init+0x0/0xa8
obj-$(CONFIG_I2C_CHARDEV)+= i2c-dev.o module_init(i2c_dev_init) \drivers\i2c\i2c-dev.c
i2c /dev entries driver
initcall i2c_dev_init+0x0/0xa8 returned 0 after 6 msecs
calling i2c_adap_s3c_init+0x0/0x48
obj-$(CONFIG_I2C_S3C2410)+= i2c-s3c2410.o module_init(i2c_adap_s3c_init) \drivers\i2c\busses\i2c-s3c2410.c
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
initcall i2c_adap_s3c_init+0x0/0x48 returned 0 after 23 msecs
calling watchdog_init+0x0/0x28
obj-$(CONFIG_S3C2410_WATCHDOG) += s3c2410_wdt.o module_init(watchdog_init) \drivers\watchdog\s3c2410_wdt.c
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
initcall watchdog_init+0x0/0x28 returned 0 after 14 msecs
calling hid_init+0x0/0x14
usbhid-objs := hid-core.o module_init(hid_init) \drivers\hid\usbhid\hid-core.c
initcall hid_init+0x0/0x14 returned 0 after 1 msecs
calling usb_kbd_init+0x0/0x48
obj-$(CONFIG_USB_KBD) += usbkbd.o module_init(usb_kbd_init) \drivers\hid\usbhid\usbkbd.c
usbcore: registered new interface driver usbkbd
usbkbd: :USB HID Boot Protocol keyboard driver
initcall usb_kbd_init+0x0/0x48 returned 0 after 13 msecs
calling usb_mouse_init+0x0/0x48
obj-$(CONFIG_USB_MOUSE)+= usbmouse.o module_init(usb_mouse_init) \drivers\hid\usbhid\usbmouse.c
usbcore: registered new interface driver usbmouse
usbmouse: v1.6:USB HID Boot Protocol mouse driver
initcall usb_mouse_init+0x0/0x48 returned 0 after 19 msecs
calling oprofile_init+0x0/0x80
???????????
add oprofile by manual-------------------!
oprofile: using timer interrupt.
initcall oprofile_init+0x0/0x80 returned 0 after 7 msecs
calling sysctl_core_init+0x0/0x1c
obj-$(CONFIG_SYSCTL) += sysctl_net_core.o __initcall(sysctl_core_init) \net\core\sysctrl_net_core.c
initcall sysctl_core_init+0x0/0x1c returned 0 after 0 msecs
calling nfnetlink_init+0x0/0x84
obj-$(CONFIG_NETFILTER_NETLINK) += nfnetlink.o module_init(nfnetlink_init) \net\netfilter\nfnetlink.c
Netfilter messages via NETLINK v0.30.
initcall nfnetlink_init+0x0/0x84 returned 0 after 5 msecs
calling nfnetlink_queue_init+0x0/0xbc
obj-$(CONFIG_NETFILTER_NETLINK_QUEUE) += nfnetlink_queue.o module_init(nfnetlink_queue_init) \net\netfilter\nfnetlink_queue.c
initcall nfnetlink_queue_init+0x0/0xbc returned 0 after 0 msecs
calling nfnetlink_log_init+0x0/0xc0
obj-$(CONFIG_NETFILTER_NETLINK_LOG) += nfnetlink_log.o module_init(nfnetlink_log_init) \net\netfilter\nfnetlink_log.c
initcall nfnetlink_log_init+0x0/0xc0 returned 0 after 0 msecs
calling nf_conntrack_standalone_init+0x0/0xf8
nf_conntrack-y := nf_conntrack_standalone.o module_init(nf_conntrack_standalone_init) \net\netfilter\nf_conntrack_standalone.c
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
initcall nf_conntrack_standalone_init+0x0/0xf8 returned 0 after 10 msecs
calling xt_init+0x0/0xbc
obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o module_init(xt_init) \net\netfilter\x_tables.c
initcall xt_init+0x0/0xbc returned 0 after 0 msecs
calling tcpudp_mt_init+0x0/0x20
obj-$(CONFIG_NETFILTER_XTABLES) += x_tables.o xt_tcpudp.o module_init(tcpudp_mt_init) \net\netfilter\xt_tcpudp.c
initcall tcpudp_mt_init+0x0/0x20 returned 0 after 0 msecs
calling sysctl_ipv4_init+0x0/0x58
obj-$(CONFIG_SYSCTL) += sysctl_net_ipv4.o __initcall(sysctl_ipv4_init) \net\ipv4\sysctl_net_ipv4.c
initcall sysctl_ipv4_init+0x0/0x58 returned 0 after 6 msecs
calling ipv4_netfilter_init+0x0/0x1c
obj-$(CONFIG_NETFILTER)+= netfilter.o netfilter/ module_init(ipv4_netfilter_init) \net\ipv4\netfilter.c
initcall ipv4_netfilter_init+0x0/0x1c returned 0 after 0 msecs
calling nf_conntrack_l3proto_ipv4_init+0x0/0x140
nf_conntrack_ipv4-objs := nf_conntrack_l3proto_ipv4.o module_init(nf_conntrack_l3proto_ipv4_init) \net\ipv4\netfilter
initcall nf_conntrack_l3proto_ipv4_init+0x0/0x140 returned 0 after 4 msecs
calling ip_tables_init+0x0/0xac
obj-$(CONFIG_IP_NF_IPTABLES) += ip_tables.o module_init(ip_tables_init) \net\ipv4\netfilter\ip_tables.c
ip_tables: (C) 2000-2006 Netfilter Core Team
initcall ip_tables_init+0x0/0xac returned 0 after 8 msecs
calling arp_tables_init+0x0/0x90
obj-$(CONFIG_IP_NF_ARPTABLES) += arp_tables.o module_init(arp_tables_init) \net\ipv4\netfilter\arp_tables.c
arp_tables: (C) 2002 David S. Miller
initcall arp_tables_init+0x0/0x90 returned 0 after 5 msecs
calling ip_queue_init+0x0/0x14c
obj-$(CONFIG_IP_NF_QUEUE) += ip_queue.o module_init(ip_queue_init) \net\ipv4\netfilter\ip_queue.c
initcall ip_queue_init+0x0/0x14c returned 0 after 0 msecs
calling inet_diag_init+0x0/0x9c
obj-$(CONFIG_INET_DIAG) += inet_diag.o module_init(inet_diag_init) \net\ipv4\inet_diag.c
initcall inet_diag_init+0x0/0x9c returned 0 after 0 msecs
calling tcp_diag_init+0x0/0x1c
obj-$(CONFIG_INET_TCP_DIAG) += tcp_diag.o module_init(tcp_diag_init) \net\ipv4\tcp_diag.c
initcall tcp_diag_init+0x0/0x1c returned 0 after 0 msecs
calling cubictcp_register+0x0/0xa0
obj-$(CONFIG_TCP_CONG_CUBIC) += tcp_cubic.o module_init(cubictcp_register) \net\ipv4\tcp_cubic.c
TCP cubic registered
initcall cubictcp_register+0x0/0xa0 returned 0 after 3 msecs
calling init_sunrpc+0x0/0x64
sunrpc-y := sunrpc_syms.o module_init(init_sunrpc) \net\sunrpc\sunrpc_syms.c 此功能??
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
initcall init_sunrpc+0x0/0x64 returned 0 after 12 msecs
calling s3c24xx_dma_sysdev_register+0x0/0x80
obj-$(CONFIG_S3C2410_DMA)+= dma.o late_initcall(s3c24xx_dma_sysdev_register) \arch\arm\plat-s3c24xx\dma.c
initcall s3c24xx_dma_sysdev_register+0x0/0x80 returned 0 after 5 msecs
calling sched_init_debug+0x0/0x14
obj-y = sched.o late_initcall(sched_init_debug) \kernel\sched.c
initcall sched_init_debug+0x0/0x14 returned 0 after 0 msecs
calling init_oops_id+0x0/0x3c
obj-y = panic.o late_initcall(init_oops_id) \kernel\panic.c
initcall init_oops_id+0x0/0x3c returned 0 after 0 msecs
calling disable_boot_consoles+0x0/0x60
obj-y = printk.o late_initcall(disable_boot_consoles) kernel\printk.c
initcall disable_boot_consoles+0x0/0x60 returned 0 after 0 msecs
calling pm_qos_power_init+0x0/0x74
obj-y = pm_qos_params.o late_initcall(pm_qos_power_init) \kernel\pm_qos_params.c
initcall pm_qos_power_init+0x0/0x74 returned 0 after 5 msecs
calling random32_reseed+0x0/0x64
obj-y = random32.o late_initcall(random32_reseed) \lib\random32.c
initcall random32_reseed+0x0/0x64 returned 0 after 0 msecs
calling seqgen_init+0x0/0x1c
obj-y = random.o late_initcall(seqgen_init) \drivers\char\random.c
initcall seqgen_init+0x0/0x1c returned 0 after 0 msecs
calling rtc_hctosys+0x0/0x144
obj-$(CONFIG_RTC_HCTOSYS)+= hctosys.o late_initcall(rtc_hctosys) \drivers\rtc\hctosys.c
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
initcall rtc_hctosys+0x0/0x144 returned -19 after 8 msecs
calling tcp_congestion_default+0x0/0x1c
obj-y = tcp_cong.o late_initcall(tcp_congestion_default) \net\ipv4\tcp_cong.c
initcall tcp_congestion_default+0x0/0x1c returned 0 after 0 msecs
calling ip_auto_config+0x0/0x1014
obj-$(CONFIG_IP_PNP) += ipconfig.o late_initcall(ip_auto_config) \net\ipv4\ipconfig.c
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
device=eth0, addr=192.168.1.58, mask=255.255.255.0, gw=255.255.255.255,
host=192.168.1.58, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=192.168.1.57, rootpath=
initcall ip_auto_config+0x0/0x1014 returned 0 after 4611 msecs
Looking up port of RPC 100003/2 on 192.168.1.57
Looking up port of RPC 100005/1 on 192.168.1.57
VFS: Mounted root (nfs filesystem).
Freeing init memory: 128K
Bad inittab entry at line 1
Please press Enter to activate this console.
BusyBox v1.13.0 (2011-07-03 10:08:33 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.