redhat4.8 的环境配置

为了能运行公司的客户端程序,提示需要升级glibc,为了成功升级glibc,先把内核从2.6.9 升级到了2.6.16。因为弄了两三天。还是记之。

1. 升级内核  http://www.docin.com/p-384415357.html

可以通过如下网站下载源码包,这里下载linux-2.6.36.tar.gz  http://www.kernel.org/pub/linux/kernel/v2.6/

内核的编译安装

# tar -zxf linux-2.6.36.tar.gz -C /usr/src/      //解压到该目录/usr/src/

# cd /usr/src/linux-2.6.36/   #进入目录

# make mrproper     //去除内核的依赖关系以及编译后的垃圾信息

# make menuconfig   //进入菜单方式界面配置内核

如果General Setup下有如下选项 “enable deprecated sysfs features to support old userspace tools”,就勾选,不然编译安装之后会找不到原来的挂载点。

# make;make modules;make modules_install;make install   //分别是编译内核、编译模块、安装模块、安装内核,注意是在linux-2.6.36/这目录下编译

内核编译中遇到的错误以及解决之道
错误一:
错误提示:Kernel   panic―not syncing :vfs:unable to mount root fs on unkown―block (0,0)
错误分析:initrd-*.*.img文件有问题;未能成功挂载真正的根文件系统。
解决方法:请你确认执行了make install 命令,我就因为没有执行这条命令而浪费了一周时间(后面专门详细说明)
错误二:
错误提示:Create root device
mkrootdev: label / not found
Mounting root filesystem
mount :error 2 mounting ext3
mount :error 2 mounting none
switchroot mount failed:22
umount /initrd/dev failed :2
kernel panic-not synicncing :Attempted to kill init .
(错误提示是不是有点长,貌似错误很多哦,其实可能就一个原因导致)
错误分析:1、根文件系统找不到挂载点 ,修改grub.conf文件为 root=/dev/ *
         2、硬盘驱动未能找到,请看看你机器的硬盘是都是 SATA盘,是的话同样恭喜你本文对你有帮助。
解决方法:
1.、修改grub.conf文件试试,具体修改点 root=/dev/*       * 指的是原系统中/分区的挂载点。修改后,重启进入新内核系统,估计十有八九又会遇到如下错误提示:
Mounting root filesystem
mount :error 6 mounting ext3
mount :error 2 mounting none
switchroot mount failed:22
umount /initrd/dev failed :2
kernel panic-not synicncing :Attempted to kill init .
2、硬盘驱动未能成功找到,SCSI驱动有问题。我在内核编译升级中遇到这个问题,对内核选项选了又选,方法试了很多种,总经理都亲自来做了几次,错误依旧。最终让我无意中选正确选项,成功升级内核。
具体选项是:Device Drivers--------SCSI device support------SCSI low-level drivers----Serial ATA(SATA)support 选为 M,然后再选择相应的子选项,我选择了Intel PIIX/ICH SATA support (new)后机器就成功启动了。
错误三:
错误提示:Enforcing mode requested but no policy loaded. Halting now.
kernel panic - not syncing: Attenpted to kill init!
错误分析:原内核中启用了selinux,新内核未选择selinux的选项,不能成功启动。
解决方法:修改grub.conf文件,在root=LABEL=/ 后加入 enforcing=0

2. 升级glibhttp://www.ibm.com/developerworks/cn/linux/l-cn-glibc-upd/

config 和 make

$ cd ~/build

$ tar xjf glibc-2.5.tar.bz2

$ mkdir glibc-2.5-build

$ cd glibc-2.5-build

$ ../glibc-2.5/configure --prefix=/usr

$ make


makeinstall 前的备份(64位也备份下lib64)

# cp -a /lib /lib.2.3.5

# cd /usr# cp -a lib lib.2.3.5# cp -a bin bin.2.3.5# cp -a sbin sbin.2.3.5# cp -a include include.2.3.5

第一次make install

$ cd glibc-2.6-build

$ su

# make install

出现如下错误:

/home/xyz/build/glibc-2.6-build/elf/sln

/home/xyz/build/glibc-2.6-build/elf/symlink.list

rm -f /home/xyz/build/glibc-2.6-build/elf/symlink.list

rm: relocation error: /lib/tls/libc.so.6: symbol _dl_out_of_memory, \

     version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference

make[1]: *** [install-symbolic-link] Error 127

make[1]: Leaving directory `/home/xyz/build/glibc-2.6'

make: *** [install] Error 2

用另一个linux系统启动

# cd /mnt

# mkdir m1

# mount -t xfs /dev/mapper/vg0-lv0 /mnt/m1

# cd /mnt/m1/lib64/tls

# cp -f ../libthread_db-1.0.so .

# cp ../libc-2.6.so .

# cp ../libm-2.6.so .# cp ../libpthread-2.6.so .# cp ../librt-2.6.so .# ln -sf libc-2.6.so libc.so.6# ln -sf libm-2.6.so libm.so.6# ln -sf libpthread-2.6.so libpthread.so.0# ln -sf librt-2.6.so librt.so.1

重启,进入原系统,第二次make install

安装成功:

Your new glibc installation seems to be ok.

make[1]: Leaving directory `/home/xyz/build/glibc-2.6'

查看glibc的版本:

/lib64/libc.so.6


安装时区和地区数据库(不要忘了这一步)

$ cd ~/build

$ cd glibc-2.6-build

$ su

# make localedata/install-locales

3. 安装yum http://nigelzeng.iteye.com/blog/1522554

1.下载软件包:

wget http://yum.baseurl.org/download/2.0/yum-2.0.8-1.src.rpm

2.安装(由于是RPM源码包所以安装比较特殊)

#rpmbuild --rebuild yum-2.0.8-1.src.rpm

3.进入到:/usr/src/redhat/RPMS/noarch/

4.使用rpm -ivh yum-2.0.8-1.noarch.rpm 安装

5.配置文件/etc/yum.conf

主要修改[base]和[updates]下的内容,这里我们使用centos的源:

改成这样就可用了:

   yum.conf 写道

[base]
name=Red Hat Linux $releasever - $basearch - Base
baseurl=http://vault.centos.org/4.4/os/i386/


[updates]
name=Red Hat Linux $releasever - Updates
baseurl=http://vault.centos.org/4.4/updates/i386/


使用 yum update命令试试

后台更新,记录log,可以用这条命令:

Shell代码   收藏代码
  1. yum update >> yumUpdate.log 2>&1 &  





你可能感兴趣的:(kernel,glibc,redhat4)