全部博文(6)
分类: 其他平台
2014-01-03 17:02:57
在fedora8 上编译内核需要注意
内核版本最好是同一版本,有差异的内核版本编译之后不一定能成功启动。我的fedora版本是2.6.23.1,但是我使用版本linux-2.6.35.7编译之后不能正常启动,使用linux-2.6.23能正常启动。
编译步骤:
1. uname –r 查看内核版本(我的内核版本是2.6.23.1-42.fc8-i686),上相应的网站()下载内核版本源码(我下载的版本是linux-2.6.23.tar.bz2),并且解压到/usr/src/kernels,当然也可以是其他路径。
2. 将boot 下面fedora kernel 的config (/boot/config-2.6.23.1-42.fc8)文件拷贝到你要编译的kernel路径里,重命名为.config。进入kernel目录,make menuconfig,load,然后save,然后退出,make all。
3. Make all正确完成之后,使用make modules_install(安装模块到/lib/modules/2.6.23)。make install (系统将会把vmlinuz和System.map复制到/boot目录下同时修改grub/boot/grub/menu.lst
4. 然后重启,选择你自己编译的内核启动。
编译内核之后启动失败(我遇到的问题是因为之前使用的文件系统比较旧,但是新kernel 不支持旧的文件系统类型,在新编译的kernel添加相关配置即可,以下是整理的从网上看到的相关资料)
编译内核后重启显示
Reading all physical
volumes. This may take a while…
解决方法:
设置.config文件,
添加:CONFIG_SYSFS_DEPRECATED_V2=Y
即
:general setup[*]enable deprecated sysfs
features.....................(这步解决了我的问题……)
重新再编译一次.
命令为 make
mrproper, make , make modules_install, make install
-------------------------------下面为转载.Linux
2.6.25内核编译过程(编译之前的内核是2.6)
1.1 首先从kernel.org上下载最新的内核,比如 linux-2.6.25.tar.gz
方法2:修改/etc/selinux/config配置文件,只要把SELINUX=enforcing改成SELINUX=disabled
原文地址 http://blog.csdn.net/douzi24/archive/2010/08/01/5781148.aspx
P.S. 我的内核:2.6.16.xx(原始)---2.6.38.3(下载解压后编译)
编译内核 Volume group "VolGroup00" not
found 解决方法
No volume groups found
Volume group "VolGroup00" not found
1.2 cd /usr/src
1.3 tar -zxvf linux-2.6.25.tar.gz
1.4 cd /usr/src/linux-2.6.25
1.5 make menuconfig,因为vmware使用SCSI,所以下面的内容一定要选择。(如果是M的要改为*)
Device Drivers --->SCSI device support --->SCSI low-level
drivers ---> <*> BusLogic SCSI support
Device Drivers ---> Fusion MPT device support --->
<*> Fusion MPT ScsiHost drivers for SPI
<*> Fusion MPT ScsiHost drivers for FC
<*> Fusion MPT ScsiHost drivers for SAS
<*> Fusion MPT misc device (ioctl) driver
<*> Fusion MPT LAN driver
Device Drivers ---> USB support --->
Device Drivers ---> Networking support --->Ethernet (10 or
100Mbit) ---> <*> AMD LANCE and PCnet (AT1500 and NE2100) support
最好把ext2,ext3文件系统支持也编译进内核
File system --->
<*> Ext3 journalling file system support
[*] Ext3 extended attributes
[*] Ext3 POSIX Access Control Lists
[*] Ext3 Security Labels
1.6 make(编译内核),好像2.6内核已经不需要make dep和make bzImage了
1.7 make modules(编译模块)
1.8 make modules_install(安装模块)
1.9 make install(安装内核,该过程自动将编译好的内核放到启动目录,同时为/etc/grub.config下加载新的菜单项)
title Red Hat Enterprise Linux AS (2.6.25)
root (hd0,0)
kernel /vmlinuz-2.6.25 ro
root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.25.img
1.10 reboot,重启,选择新内核启动。
2.Linux 2.6新内核启动问题解决方法:
编译过程应该没有太大的问题,可能需要花点时间等待。
启动过程中,笔者遇到了下面2个问题,后来经过google,成功解决。
2.1 问题1:启动过程中出现Volume group “VolGroup00” not
found的问题。该问题是我make menuconfig的时候,有些选项没有选择,如果按照上面笔者提到的内容选择,应该没有该问题了。
以下方法是网上搜索到的,但是没有尝试过,不知道是否能解决。修改/usr/src/linux-2.6.25/drivers/message/fusion/mptbase.c文件,增加解决Vmware BUG的语句
pfacts->IOCStatus = le16_to_cpu(pfacts->IOCStatus);
pfacts->IOCLogInfo =
le32_to_cpu(pfacts->IOCLogInfo);
pfacts->MaxDevices =
le16_to_cpu(pfacts->MaxDevices);
/*-------Fix VMware bug Start---------*/
if(pfacts->MaxDevices == 0) pfacts->MaxDevices =
16;
/*-------Fix VMware bug END---------*/
pfacts->PortSCSIID =
le16_to_cpu(pfacts->PortSCSIID);
pfacts->ProtocolFlags =
le16_to_cpu(pfacts->ProtocolFlags);
pfacts->MaxPostedCmdBuffers =
le16_to_cpu(pfacts->MaxPostedCmdBuffers);
2.2 问题2:启动过程中出现Enforcing mode requested but
no policy loaded. Halting now.的问题。有两种方法可以解决:
方法1:在grub.conf里把
kernel /vmlinuz-2.6.25 ro root=/dev/VolGroup00/LogVol00 rhgb quiet变为
kernel
/vmlinuz-2.6.25 ro root=/dev/VolGroup00/LogVol00 enforcing=0 rhgb quiet