VM下ubuntu14.04安装编译linux-2.6.34内核

Linux2.6所有内核下载地址

http://www.kernel.org/pub/linux/kernel/v2.6/

选择:

1.解压

gf@ubuntu:~$ ls
Desktop    Downloads         linux-2.6.34.tar.bz2  Pictures  Templates
Documents  examples.desktop  Music                 Public    Videos
gf@ubuntu:~$ sudo tar xvjf linux-2.6.34.tar.bz2 -C /usr/src/

2.进入目录

gf@ubuntu:~$ cd /usr/src
gf@ubuntu:/usr/src$ ls
linux-2.6.34  linux-headers-4.4.0-142  linux-headers-4.4.0-142-generic
gf@ubuntu:/usr/src$ cd linux-2.6.34

3.切换root用户

gf@ubuntu:/usr/src/linux-2.6.34$ sudo su

4.安装依赖包

root@ubuntu:/usr/src/linux-2.6.34# apt-get install build-essential kernel-package libncurses5-dev

5.执行配置文件

root@ubuntu:/usr/src/linux-2.6.34# make menuconfig

6.编译

root@ubuntu:/usr/src/linux-2.6.34# make 

遇到的错误:

1.错误:

arch/x86/kernel/ptrace.c:1778:17: error: conflicting types for ‘syscall_trace_leave’
 asmregparm void syscall_trace_leave(struct pt_regs *regs)
                 ^
In file included from /usr/src/linux-2.6.34/arch/x86/include/asm/vm86.h:130:0,
                 from /usr/src/linux-2.6.34/arch/x86/include/asm/processor.h:10,
                 from /usr/src/linux-2.6.34/arch/x86/include/asm/thread_info.h:22,
                 from include/linux/thread_info.h:56,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:50,
                 from include/linux/seqlock.h:29,
                 from include/linux/time.h:8,
                 from include/linux/timex.h:56,
                 from include/linux/sched.h:56,
                 from arch/x86/kernel/ptrace.c:11:
/usr/src/linux-2.6.34/arch/x86/include/asm/ptrace.h:147:13: note: previous declaration of ‘syscall_trace_leave’ was here
 extern void syscall_trace_leave(struct pt_regs *);
             ^
make[2]: *** [arch/x86/kernel/ptrace.o] 错误 1
make[1]: *** [arch/x86/kernel] 错误 2
make: *** [arch/x86] 错误 2
root@ubuntu:/usr/src/linux-2.6.34# 

解决:

root@ubuntu:/usr/src/linux-2.6.34# vim /usr/src/linux-2.6.34/arch/x86/include/asm/ptrace.h
(1)将147行的syscall_trace_enter和syscall_trace_leave注释掉
(2)添加:
#include <linux/linkage.h>
extern asmregparm long syscall_trace_enter(struct pt_regs *);
extern asmregparm void syscall_trace_leave(struct pt_regs *);

2.错误;

gcc: error: elf_i386: 没有那个文件或目录
gcc: error: unrecognized command line option ‘-m’
make[2]: *** [arch/x86/vdso/vdso32-int80.so.dbg] 错误 1
make[1]: *** [arch/x86/vdso] 错误 2
make: *** [arch/x86] 错误 2

解决:

root@ubuntu:/usr/src/linux-2.6.34#vim arch/x86/vdso/Makefile
然后把”-m elf_x86_64” 替换为 “-m64“,把”-m elf_i386” 替换为 “-m32“

3.错误:

drivers/net/igbvf/igbvf.h:129:15: error: duplicate member ‘page’
  struct page *page;
               ^
make[3]: *** [drivers/net/igbvf/ethtool.o] 错误 1
make[2]: *** [drivers/net/igbvf] 错误 2
make[1]: *** [drivers/net] 错误 2
make: *** [drivers] 错误 2

解决:

root@ubuntu:/usr/src/linux-2.6.34# vim drivers/net/igbvf/igbvf.h

修改129行如下:

7.直接编译和安装模块

root@ubuntu:/usr/src/linux-2.6.34# make modules_install install

8.安装内核

root@ubuntu:/usr/src/linux-2.6.34# make install

9.创建initrd文件

root@ubuntu:/usr/src/linux-2.6.34# gedit /etc/default/grub

10.配置grub引导

root@ubuntu:/usr/src/linux-2.6.34# gedit /etc/default/grub
添加:GRUB_TIMEOUT_STYLE=menu
修改:GRUB_HIDDEN_TIMEOUT=0改为大于0的数
root@ubuntu:/usr/src/linux-2.6.34# update-grub

执行完这一步基本上就完成了内核的编译和安装,重启ubuntu应该就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值