当前位置: 技术问答>linux和unix
2.6.18内核如何编译才不会出错?
来源: 互联网 发布时间:2017-04-11
本文导语: 我的2.6.18内核编译总出错我是参照这个文档做的: (一)构建内核源代码树 1. 下载并安装module-init-tools-3.2.tar.bz2 设module-init-tools-3.2.tar.bz2保存在/temp中 cd /usr/src cp /temp/ module-init-tools-3.2.tar.bz2 ./ tar jvxf ...
我的2.6.18内核编译总出错我是参照这个文档做的:
(一)构建内核源代码树
1. 下载并安装module-init-tools-3.2.tar.bz2
设module-init-tools-3.2.tar.bz2保存在/temp中
cd /usr/src
cp /temp/ module-init-tools-3.2.tar.bz2 ./
tar jvxf module-init-tools-3.2.tar.bz2
./configure --prefix=/
make moveold
make all install
2. 准备内核源码
1) 可以从http://www.kernel.org/pub/linux/kernel/v2.6/下载高版本的内核,例如linux-2.6.39.tar.gz 。
2) 也可以从教师机的samba服务器中直接下载(linux-2.6.18)。
本次实验选用linux-2.6.18内核
3. 解压内核源码包至/usr/src/kernels
4. 先查看/usr/src/kernels目录,作下记录,然后将linux-2.6.18.tar.gz解压至此目录下。
设linux-2.6.18.tar.gz存放在/temp目录中,则通过以下几条命令完成:
cd /temp
cp linux-2.6.18.tar.gz /usr/src/kernels/
cd /usr/src/kernels
tar zvxf linux-2.6.18.tar.gz
5. 给解压内核目录建立一个名为linux的软链接
ln –s /usr/src/kernels/linux-2.6.18 /usr/src/linux
6. 删除/usr/include下的arm,linux和scsi三个文件夹
rm –dfr /usr/include/arm
rm –drf /usr/include/linux
rm –drf /usr/include/scsi
7. 建立四个软链接,让Gcc默认调用这里边的库函数
1) ln -s /usr/src/linux/include/arm-i386 /usr/include/arm
或ln -s /usr/src/linux/include/asm-i386 /usr/include/arm
2) ln -s /usr/src/linux/include/linux /usr/include/linux
3) ln -s /usr/src/linux/include/scsi /usr/include/scsi
4) ln -s /usr/src/linux/include/arm-generic /usr/include/arm-generic
或ln –s /usr/src/linux/include/asm-generic /usr/include/arm-generic
8. 查看和/lib/modules目录下的内容,作好记录。
(二)配置内核
1. 进入内核源代码树根目录/usr/src/linux,将/boot/config-2.6.11-1.1369_FC4复制到/usr/src/linux,并改名为.confg
cd /usr/src/linux
cp /boot/config-2.6.11-1.1369_FC4 .config
查看当前目录,发现多了一个名为” .config”的文件
2.清除以前编译产生的中间结果,以防编译失败(第一次编译时省略此步)
可用命令:
make distclean:删除所有临时文件、中间文件和配置文件(最彻底)
make mrproper:清除所有编译产生的文件和配置文件
make clean :删除编译时产生的文件,但保留.config文件
上述三命令视具体情况选择使用
这里由于使用了FC4的.config文件,所以用make clean
3.启动并开始内核配置
make menuconfig(荐)
或 make xconfig
或 make oldconfig
或 make config
(三).编译内核及内核模块
1.编译内核
make dep
make bzImage
编译完成后,可以在内核源代码树的arch/i386/boot下找到编译好的内核文件zImage或bzImage
2.编译内核模块
make modules
(四)安装内核模块和内核
(1)安装内核模块
make modules_install
作用是将编译好的内核模块从内核源代码树中复制至/lib/modules。
完成后再一次查看/lib/modules目录,和之前的记录相比多了什么?
(2)安装内核
make install
(3)制作init ramdisk
mkinitrd /boot/initrd-2.6.18.img 2.6.18
可查看/lib/modules下的目录以明确制作init ramdisk的原始目录就是2.6.18。
(4)将生成的内核镜像移至/boot下并改名
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
cp arch/i386/boot/bzImage /boot/vmlinuz
cp /usr/src/linux/System.map /boot/System.map-2.6.18
cp /usr/src/linux/System.map /boot/System.map
(5)查看并修改grub启动菜单配置文件
gedit /etc/grub.conf &
在grub.conf配置文件末尾再添加一新的启动菜单项(make install命令运行时会自动添加,所以这里只需核实一下即可):
title Fedora Core (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18.img
问题出在哪儿?求大神指导!!
(一)构建内核源代码树
1. 下载并安装module-init-tools-3.2.tar.bz2
设module-init-tools-3.2.tar.bz2保存在/temp中
cd /usr/src
cp /temp/ module-init-tools-3.2.tar.bz2 ./
tar jvxf module-init-tools-3.2.tar.bz2
./configure --prefix=/
make moveold
make all install
2. 准备内核源码
1) 可以从http://www.kernel.org/pub/linux/kernel/v2.6/下载高版本的内核,例如linux-2.6.39.tar.gz 。
2) 也可以从教师机的samba服务器中直接下载(linux-2.6.18)。
本次实验选用linux-2.6.18内核
3. 解压内核源码包至/usr/src/kernels
4. 先查看/usr/src/kernels目录,作下记录,然后将linux-2.6.18.tar.gz解压至此目录下。
设linux-2.6.18.tar.gz存放在/temp目录中,则通过以下几条命令完成:
cd /temp
cp linux-2.6.18.tar.gz /usr/src/kernels/
cd /usr/src/kernels
tar zvxf linux-2.6.18.tar.gz
5. 给解压内核目录建立一个名为linux的软链接
ln –s /usr/src/kernels/linux-2.6.18 /usr/src/linux
6. 删除/usr/include下的arm,linux和scsi三个文件夹
rm –dfr /usr/include/arm
rm –drf /usr/include/linux
rm –drf /usr/include/scsi
7. 建立四个软链接,让Gcc默认调用这里边的库函数
1) ln -s /usr/src/linux/include/arm-i386 /usr/include/arm
或ln -s /usr/src/linux/include/asm-i386 /usr/include/arm
2) ln -s /usr/src/linux/include/linux /usr/include/linux
3) ln -s /usr/src/linux/include/scsi /usr/include/scsi
4) ln -s /usr/src/linux/include/arm-generic /usr/include/arm-generic
或ln –s /usr/src/linux/include/asm-generic /usr/include/arm-generic
8. 查看和/lib/modules目录下的内容,作好记录。
(二)配置内核
1. 进入内核源代码树根目录/usr/src/linux,将/boot/config-2.6.11-1.1369_FC4复制到/usr/src/linux,并改名为.confg
cd /usr/src/linux
cp /boot/config-2.6.11-1.1369_FC4 .config
查看当前目录,发现多了一个名为” .config”的文件
2.清除以前编译产生的中间结果,以防编译失败(第一次编译时省略此步)
可用命令:
make distclean:删除所有临时文件、中间文件和配置文件(最彻底)
make mrproper:清除所有编译产生的文件和配置文件
make clean :删除编译时产生的文件,但保留.config文件
上述三命令视具体情况选择使用
这里由于使用了FC4的.config文件,所以用make clean
3.启动并开始内核配置
make menuconfig(荐)
或 make xconfig
或 make oldconfig
或 make config
(三).编译内核及内核模块
1.编译内核
make dep
make bzImage
编译完成后,可以在内核源代码树的arch/i386/boot下找到编译好的内核文件zImage或bzImage
2.编译内核模块
make modules
(四)安装内核模块和内核
(1)安装内核模块
make modules_install
作用是将编译好的内核模块从内核源代码树中复制至/lib/modules。
完成后再一次查看/lib/modules目录,和之前的记录相比多了什么?
(2)安装内核
make install
(3)制作init ramdisk
mkinitrd /boot/initrd-2.6.18.img 2.6.18
可查看/lib/modules下的目录以明确制作init ramdisk的原始目录就是2.6.18。
(4)将生成的内核镜像移至/boot下并改名
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
cp arch/i386/boot/bzImage /boot/vmlinuz
cp /usr/src/linux/System.map /boot/System.map-2.6.18
cp /usr/src/linux/System.map /boot/System.map
(5)查看并修改grub启动菜单配置文件
gedit /etc/grub.conf &
在grub.conf配置文件末尾再添加一新的启动菜单项(make install命令运行时会自动添加,所以这里只需核实一下即可):
title Fedora Core (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18.img
问题出在哪儿?求大神指导!!
|
(一)构建内核源代码树
1. 下载并安装module-init-tools-3.2.tar.bz2
设module-init-tools-3.2.tar.bz2保存在/temp中
cd /usr/src
cp /temp/ module-init-tools-3.2.tar.bz2 ./
tar jvxf module-init-tools-3.2.tar.bz2
./configure --prefix=/
make moveold
make all install
在此加一条命令:./generate-modprobe.conf /etc/modprobe.conf