1. 解压出内核代码到samba共享目录中。
2. #chmod -R 777 linux-2.6.30.4//修改目录所有文件的权限为可读写。
3. 修改根目录下的makefile:
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-
4.#make s3c2410_defconfig
5.#make zImage//先编译一把,看效果。编译大概需要10分钟。
提示错误:Error: unrecognized/unsupported machine ID (r1 = 0x000000a8).
修改方法:在/arch/arm/tools目录中的mach-types文件,修改最后一个参数为168,如下:
“smdk2440 MACH_SMDK2440 SMDK2440 168”
修改完成后编译运行还是提示相同的错误。原来修改错了地方:应该修改该文件的如下行:
“s3c2440 ARCH_S3C2440 S3C2440 168”
该问题解决了。
6.烧入kernel后打印信息为乱码。修改arch\arm\mach-s3c2440\mach-smdk2440.c中的“s3c24xx_init_clocks(12000000)”。
该问题解决了。
7.出现问题:Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
解决方法:修改arch\arm\plat-s3c24xx\common-smdk.c中的smdk_default_nand_part为如下部分,然后重新烧写:
[0] = {
.name = “uboot”,
.offset = 0x00000000,
.size = 0x00040000,
},
[1] = {
.name = “kernel”,
.offset = 0x00200000,
.size = 0x00200000,
},
[2] = {
.name = “yaffs2″,
.offset = 0x00200000,
.size = 0x03BF8000,
}
重新烧写发现该问题已经消失,下一个问题出现:
8.No filesystem could mount root, tried: ext3 ext2 cramfs vfat msdos iso9660 romfs
Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
这个问题说明yaffs2文件系统不支持。把GT2440中相应的yaffs2文件夹复制到fs目录下。
然后修改fs目录下的kconfig添加上这么一句:source “fs/yaffs2/Kconfig”
然后修改fs目录下的makefile添加上这个一句:obj-$(CONFIG_YAFFS_FS) += yaffs2/
编译观察结果:该问题解决。
9.出现新的问题:
VFS: Mounted root (yaffs filesystem) readonly on device 31:2.
Freeing init memory: 144K
Kernel panic – not syncing: Attempted to kill init!
这个问题可以通过make menuconfig解决:
在kernel future中,选中如下两个就行了:
[*]Use the ARM EABI to compile the kernel
| [*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL) (NEW)
10.虽然打印信息中提示还是有错误,但是已经可以进入console了。
转载自:http://mcustation.com/kernel-2-6-30-4-%E7%A7%BB%E6%A4%8D.html