linux内核编译全过程

1、源码相关

(1)解压源码,打AT91补丁

# tar-jxflinux-2.6.20.tar.bz2

# cd/work/linux-2.6.20 (打补丁一定要在 Linux源码目录下进行)
# zcat ../2.6.20-at91.patch.gz| patch-p1 (注意路径)
# bzcat ../linux-2.6.20-at91-exp.diff.bz2| patch-p1 (注意路径)

 

(2)源码修改(解决烧写后MAC 无法识别的BUG)
/work/linux-2.6.20/drivers/net/arm/at91_ether.c作以下修改
static void__init get_mac_address(struct net_device *dev)
{
     static char def_mac[]={0x00,0x15,0xf2,0x9d,0x66,0x80};
     /*Check Specific-Address 1*/
     if(unpack_mac_address(dev,
     at91_emac_read(AT91_EMAC_SA1H),
     at91_emac_read(AT91_EMAC_SA1L))
)
     return;
     /*Check Specific-Address 2*/
     if(unpack_mac_address(dev,
     at91_emac_read(AT91_EMAC_SA2H),
     at91_emac_read(AT91_EMAC_SA2L))
)
return?
/*Check Specific-Address 3*/
if(unpack_mac_address(dev,
at91_emac_read(AT91_EMAC_SA3H),
at91_emac_read(AT91_EMAC_SA3L))
)
return?
/*Check Specific-Address 4*/
if(unpack_mac_address(dev,
at91_emac_read(AT91_EMAC_SA4H),
at91_emac_read(AT91_EMAC_SA4L))
)
return?
memcpy(dev->dev_addr,&def_mac,6);return;
printk(KERN_ERR"at91_ether:Yourbootloaderdid notconfigurea MAC address./n")?
}

 

2、配置内核
(1)修改Makefile
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
改为
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-
(3)配置内核
# cd/work/linux-2.6.20
# makeat91rm9200dk_defconfig
# makemenuconfig
(4)配置选项(没有提到的选项使用默认设置)
Loadable modulesupport--->
[]Enable loadable module support
Filesystems--->
Network FileSystems-->(如果要通过NFS方式调试,这项
[*]NFSfilesystem support
[*]Rootfilesystem onNFS
3、编译内核
(1)编译zImage
# cd/work/linux-2.6.20
# makezImage
(2)编译uImage (需要有UBoot 的mkimage 工具)
# cd/work/linux-2.6.20
# makeuImage

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值