linux内核编译

实验环境:Ubuntu14 kylin

虽然是最新的操作系统,但是用起来并不是很顺手,综合看起来,编译内核过程中这个系统出现的问题最多.

 

操作步骤:1.安装虚拟机,纯粹是鼠标操作的环节,基本可以忽略.

2.下载内核源代码包linux-2.6.18.tar.bz2, 

3.将源代码解压到/usr/src/目录下(tar -xvf linux-2.6.18.tar.bz2 ),实际上,解压到哪里都是可以的,进入/linux-2.6.18/

4.make menuconfig,如果报错,说明缺少组件,使用

apt-get install build-essential kernel-package libncurses5-dev libqt3-headers 

来安装需要的gcc工具以及运行库等,也可以使用cp /boot/.config-xxxx ./.config(xxxx处按tab

键出现)将系统配置拷贝过来

5.make-kpkg kernel_image来编译,前提是安装组件 

sudo apt-get install kernel-package

6.编译完成后,在文件夹中找到生成的安装包,使用dpkg -i xxx安装该包,

7.然后重启,在高级选项中选择该内核即可,

 

编译过程中出现的问题有如下:

1, PATH_MAX’未声明错误:PATH_MAX’未声明(在此函数内第一次使用),scripts/mod/sumversion.c:384: 错误:(即使在一个函数内多次出现,每个未声明...    

解决方案:scrips/mod/sumversion.c,引入头文件,即添加"#include<limits.h>"

 

2, elf_i386:没有那个文件或目录 ------解决方法原因是 gcc 4.6 不再支持 linker-style 架构。讲 arch/x86/vdso/Makefile 中, 将以VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"

 解决方案:将以 VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m elf_x86" 替换为 "-m32"

 

3, 对‘__mutex_lock_slowpath’未定义的引用解决方案: .config中编辑添加CONFIG_DEBUG_MUTEXES=y

 

实验环境:CRUX2.6系统

出现的问题有如下:

1, PATH_MAX’未声明错误:PATH_MAX’未声明(在此函数内第一次使用),scripts/mod/sumversion.c:384: 错误:(即使在一个函数内多次出现,每个未声明...    

解决方案:scrips/mod/sumversion.c,引入头文件,即添加"#include<limits.h>"

 

2, 启动的时候显示:kernel too old

kernel panic: 

 

 

 

 

 

 

实验环境:CRUX2.2系统

由于CRUX2.6无法安装旧的内核,我又尝试了旧版本的CRUX2.2版本来安装,

实验步骤:1. 硬盘分区,使用fdisk /dev/hda,分成hda1hda2,hda1用来作swap

2.格式化,mkfs.ext3 /dev/hda2,     mkswap /dev/hda1,  swapon hda1, hda2  mount/mnt

3.setup开始安装CRUX2.2, 选择安装到/mnt

4.然后 chroot, 

5.make menuconfig,选择好驱动,

6.make all编译内核,将编译好的内核拷贝到/boot,System.map也拷贝到/boot,修改,fstab以及/etc/lilo.conf, 

7.重启,进入系统,至此CRUX系统安装完成

8.将linux2.6.18源代码拷贝进来,

9. make menuconfig选择好驱动,

10.Make all编译完成,

11.将编译好的内核拷贝到/boot,

12.在lilo.conf中增加数据块,

prompt

timeout=300

image=新的内核

boot=/dev/hda

label=xxxx

root=/dev/hda2

13.reboot重启,输入xxxx,进入系统,

出现的问题:有了前几次的经验,基本没有出现问题,

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值