实验环境: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,分成hda1和hda2,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,进入系统,
出现的问题:有了前几次的经验,基本没有出现问题,
运行结果: