Chinaunix首页 | 论坛 | 博客
  • 博客访问: 469124
  • 博文数量: 134
  • 博客积分: 3056
  • 博客等级: 中校
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-14 15:53
文章分类
文章存档

2013年(1)

2010年(133)

我的朋友

分类: LINUX

2010-07-20 11:18:35

1. 我的系统:ubuntu9.04+gcc4.3.3

2. 下载

3. 解压linux-2.4.30.tar.bz2到/usr/src目录下
      #sudo tar jxvf -C linux-2.4.30.tar.bz2 /usr/src/

4. 进入linux-2.4.30目录,配置内核(我选用默认配置)
      #sudo make oldconfig

5. 编译内核
      #sudo tmake
出现错误如下
错误1:

/usr/src/linux-2.4.30/include/asm/processor.h:75: 错误: 数组元素的类型不完全
In file included from /usr/src/linux-2.4.30/include/linux/fs.h:322,
                 ...
                 ...
                 ...
/usr/src/linux-2.4.30/include/linux/ncp_fs_i.h:26: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp_fs_i.h:27: 警告: ‘packed’属性为类型为‘__u8[6]’的字段所忽略
In file included from /usr/src/linux-2.4.30/include/linux/ncp_mount.h:12,
                 ...
                 ...
                 ...
/usr/src/linux-2.4.30/include/linux/ncp.h:24: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:25: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:26: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:27: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:28: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:29: 警告: ‘packed’属性为类型为‘__u8[]’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:37: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:38: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:39: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:40: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:41: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:42: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:43: 警告: ‘packed’属性为类型为‘__u8[]’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:137: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:138: 警告: ‘packed’属性为类型为‘__u8[256]’的字段所忽略
/usr/src/linux-2.4.30/include/linux/ncp.h:174: 警告: ‘packed’属性为类型为‘__u8’的字段所忽略
In file included from /usr/src/linux-2.4.30/include/asm/smp.h:17,
                 ...
                 ...
                 ...
/usr/src/linux-2.4.30/include/asm/mpspec.h:87: 警告: ‘packed’属性为类型为‘unsigned char[6]’的字段所忽略
make[2]: *** [fork.o] 错误 1
make[2]:正在离开目录 `/usr/src/linux-2.4.30/kernel
'
make[1]: *** [first_rule] 错误 2
make[1]:正在离开目录 `/usr/src/linux-2.4.30/kernel'

make: *** [_dir_kernel] 错误 2


解决办法:
安装低版本的gcc编译器(我选择的是gcc-3.4)
      #sudo apt-get install gcc-3.4
然后,再次编译,又出现错误:

错误2:

make[2]:正在离开目录 `/usr/src/linux-2.4.30/crypto'
make[1]:正在离开目录 `/usr/src/linux-2.4.30/crypto'

make CFLAGS="-D__KERNEL__ -I/usr/src/linux-2.4.30/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -fno-unit-at-a-time " -C arch/i386/kernel
make[1]: 正在进入目录 `/usr/src/linux-2.4.30/arch/i386/kernel
'
gcc-3.4 -D__KERNEL__ -I/usr/src/linux-2.4.30/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -fno-unit-at-a-time -nostdinc -iwithprefix include -DKBUILD_BASENAME=process -c -o process.o process.c
{standard input}: Assembler messages:
{standard input}:853: Error: suffix or operands invalid for `mov'

{standard input}:854: Error: suffix or operands invalid for `mov
'
{standard input}:948: Error: suffix or operands invalid for `mov'

{standard input}:949: Error: suffix or operands invalid for `mov
'
{standard input}:1000: Error: suffix or operands invalid for `mov'

{standard input}:1001: Error: suffix or operands invalid for `mov
'
{standard input}:1003: Error: suffix or operands invalid for `mov'

{standard input}:1015: Error: suffix or operands invalid for `mov
'
make[1]: *** [process.o] 错误 1
make[1]:正在离开目录 `/usr/src/linux-2.4.30/arch/i386/kernel'

make: *** [_dir_arch/i386/kernel] 错误 2

 
解决办法:
打补丁linux-2.4-seg-4.patch
1)打补丁方法:拷贝补丁linux-2.4-seg-4.patch到/usr/src/linux-2.4.30/目录下
      #sudo patch -p1 < linux-2.4-seg-4.patch
2) 再次编译,'sudo make'。成功!

6. 编译内核
      #sudo make bzImage

7.
生成*.ko(模块化的内核驱动)等。
      #sudo make
modules

8.
安装内核模块到/lib/modules/linux-2.4.30目录下
      #sudo make modules_install

9.
  拷贝内核(bzImage)和System.map的到/boot目录下
      #sudo make install


10.
  在当前目录下生成一个名字为initrd.img-2.4.30的initrd 镜像文件,然后拷贝到/booot目录下。
      #sudo
mkinitramfs -o /boot/initrd.img-2.4.3  /lib/modules/linux-2.4.30/

在当前目录下生成一个名字为initrd.img-2.4.30的initrd 镜像文件,然后拷贝到/booot目录下。

11.
  done

阅读(3404) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

bamu19842011-01-08 22:32:18

麻烦看看能不能编译 2.6.11 的内核啊? 不然我也换成 U904 。

bamu19842011-01-08 22:30:29

#sudo apt-get install gcc-3.4 这就成功了? 依赖关系都满足吗? 我用 10.04 的编译 2.6.11 根本编译不过去, binutil 那块有问题