一.下载核心以及相应补丁:
Linux核心:linux-2.4.18.tar.bz2
补丁:
patch-2.4.18-rmk7.gz
patch-2.4.18-rmk7-swl8.gz
patch-2.4.18-rmk7-swl8-cy2.gz
patch-2.4.18-rmk7-swl8-cy2-lc3.gz
二. 解压缩:
# tar xzvf linux-2.4.18.tar.gz
# gunzip patch-2.4.18-rmk7.gz
# gunzip patch-2.4.18-rmk7-swl8.gz
# gunzip patch-2.4.18-rmk7-swl8-cy2.gz
# gunzip patch-2.4.18-rmk7-swl8-cy2-lc3.gz
三. 打补丁:
# cd linux-2.4.18
# patch -p1 < .. patch-2.4.18-rmk7
# patch -p1 < .. patch-2.4.18-rmk7-swl8
# patch -p1 < .. patch-2.4.18-rmk7-swl8-cy2
# patch -p1 < .. patch-2.4.18-rmk7-swl8-cy2-lc3
四. 修改相关代码:
(1)修改主目录的Makefile
vi linux/Makefiel
a.指定目标平台为ARM:
#ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
ARCH := arm
b.指定交叉编译器:
CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-
(我的交叉编译工具放在/usr/local/arm文件夹下)
(2)修改arch目录中的文件
Linux的arch目录存放硬件相关的内核代码,因此,在Linux内核中增加对S3C2410的支持,最主要就是要修改arch目录中的文件。
在arch/arm/Makefile文件中加入:
ifeq ($(CONFIG_ARCH_S3C2410),y)
TEXTADDR = 0xC0008000
MACHINE = s3c2410
Endif
(3) 在arch/arm/boot/Makefile文件中加入:
ifeq ($(CONFIG_ARCH_S3C2410),y)
ZTEXTADDR = 0x30008000
ZRELADDR = 0x30008000
endif
(4) 修改arch/arm/mm/mm-armv.c文件(arch/arm/mm/目录中的文件完成与ARM相关的MMU处理):
修改:
init_maps->bufferable = 0;
为:
init_maps->bufferable = 1;
五.编译内核:
make menuconfig
一定要选上 :FILE_SYSTEM
CONFIG_DEVFS_FS=y
修改启动命令行:
CONFIG_CMDLINE="root=/dev/mtdblock2 init=/linuxrc console=ttyS0,115200 devfs=mount load_ramdisk=0"
Make dep
Make zImage
运行结果:(成功)
阅读(943) | 评论(0) | 转发(0) |