分类: 嵌入式
2010-01-10 17:06:25
在 上下载
解压linux-
编辑其目录下的Makefile,修改目标cpu体系结构和交叉编译工具的路径。
gedit Makefile
ARCH ?= arm
CROSS_COMPILE ?= /work/cross/toolchain/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-
根据自己所使用的交叉编译器路径设置。
拷贝一个系统默认的config作为模板
cp arch/arm/configs/s
修改NandFlash 分区信息。
arch/arm/plat-s
smdk_default_nand_part[]修改如下:
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "Bootloader",
.size = 0x40000,
.offset = 0,
},
[1] = {
.name = "Kernel",
.offset = 0x40000,
.size = 0x1c0000,
},
[2] = {
.name = "FS",
.offset = 0x200000,
.size = 0x1e00000,
},
[3] = {
.name = "WinCE",
.offset = 0x2000000,
.size = 0x2000000,
}
};
分区大小自己看着办,要和uboot的一致。
size的大小只能是2的n次方,这个是预定义时候就定义好的,比如64k,256k,
让内核支持devfs 以及在启动时并在/sbin/init 运行之前能自动挂载/dev 为devfs 文件系统。
编辑fs/Kconfig:
在906 行menu "Pseudo filesystems"下面添加如下代码:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
禁用Flash ECC校验
修改drivers/mtd/nand/s
找到chip->ecc.mode = NAND_ECC_SOFT;
改为chip->ecc.mode = NAND_ECC_NONE;
不改该处,分好区的flash认不出来,会出现那个典型的vfs错误
现在可以编译内核了,
make menuconfig
在配置菜单中,选择system type-->s
其他的arch-machines 全部取消。
Make
编译完成后在arch/arm/boot 下会有一个zImage
这样就有了个最最基本的内核,已经是可以启动的。此内核到目前位置只指出cramfs和nfs启动。