红帽RHCE实验红宝石书(上)(3)

13、rpm软件管理-q查询

• rpm -qa 查询已经所有的软件

–rpm -qa | grep zsh

• rpm -ql 查询zsh安装了那些文件

–rpm -ql zsh | grep bin 查询软件包的执行程序

–rpm -ql zsh | grep doc 查询软件包的文档

–rpm -ql zsh | grep man 查询软件包的手册

• rpm -qi zsh 查看软件包的信息

• rpm -qf $(which mount) 查询mount指令由哪一个软

件包提供的

• 导入GPG红帽公钥

rpm —import /etc/pki/rpm-gpg/*

rpm对文件的修复

• echo “1” > /bin/mount 假设我们破坏了mount

• rpm -qf $(which mount) 找出由哪一个软件包提供的mount指令

• rpm -qV xxxxxxx 将对上面的软件包做检测,你将看到存在安装后修改的文件列表

• 下一步将这个软件重装

• rpm -ivh --force XXXXX

• rpm -qV xxxxxx 再对软件包做检测,这时没有任何差异,再执行mount指令。

14、grub修改

• 文件存放在/boot/grub/grub.conf

• default = 数值由0开始,对应每个title段

• timeout=5 自动在5秒后引导默认的Linux

• title RedHat Enterprise Linux

–root (hd0,0) 引导的系统存在的分区

–kernel /vmlinuz-2..... ro root=/dev/vol0/root核心文件,根分区只读的挂载

–initrd /initrd-..... 初始化ramdisk

• title The Other Linux kernel

–第二个Linux引导设置

15、grub修复

• rm /boot/* -rf 模拟我们破坏了引导文件、分区

• 重新安装核心yum reinstall kernel 或者rpm -ivh —forceftp://server1.example.com/pub/Server/kernel*.rpm

• 修复grub,将grub安装到硬盘MBR记录中

–grub-install /dev/sda

• 再次创建/boot/grub/grub.conf文件

• 注意:在有的系统中还需要我们将init ramdisk重新生成一份,如果你的系统不能引导,请使用下面的指令在rescue救援模式修复一次

• mkinitrd /boot/initrd-2.6.18-128.el5.img $(uname -r)

16、编译新的驱动模块到核心中

• 假设我们添加一个QLogic的1280 SCSI卡到系统中

• cd /lib/modules/$(uname -r)/kernel/drivers

• 查看这个下面的目录的硬件分类,

• 我们可以使用modprobe -l 列举出系统所有的模块驱动

• modinfo qla1280 解读模块信息

• lsmod | grep ql1280 先对当前系统检测没有包含此模块

• mkinitrd —with=qla1280 /boot/initrd-2.6.18-I.do.img $(uname -r) 针对现有的版本的模块添加

• 修改grub添加新的initrd,设置默认的启动核心,重启系统

• 再使用lsmod | grep qla1280 查看此模块是否安装

17、手工添加核心模块到initRD

• 首先需要一个原始系统在用的initrd

• cp /boot/initrd-2.6.8-128.el5.img /tmp; mkdir /tmp/initrd

• 使用file /tmp/initrd-2.6.8-128.el5.img 查看其格式并记录下来,之后我们打包或压缩的时候也要对应相同的格式否者系统无法启动

• 我们可以看到这个文件显示用gzip 命令使用最大压缩比例压缩的文件,我们使用对用的gunzip 解压缩

• gunzip -9 -d -S .img /tmp/initrd-2.6.8-128.el5.img

• 再次查看file 指令gunzip 之后的文件格式我们发现是cpio打包的文件,其格式为SRV4 no CRC.

• cd /tmp/initrd; cpio -i < /tmp/initrd-2.6.8-128.el5 解包将可以看到所有的文件在当前文件

• 将你需要加载到initrd的模块拷贝到此目录lib下,下面的例子同样加载qla1280 scsi 驱动。

• cp /lib/modules/$(uname

-r)/kernel/drivers/scsi/qla1280.ko /tmp/initrd/lib -v

• 接着我们需要将模块添加到初始化脚本中

• vim /tmp/initrd/init;

• echo “Loading qla1280 modules”

• insmod /lib/qla1280.so

• 之后我们可以对此文件夹打包了,由于cpio打包的格式是基于文件清单,所以我们需要以下的方式打包cpio格式,(前面我们使用file 确定其文件格式为newc

• cd /tmp/initrd; find ./ > /tmp/initrd.lst;

• cpio -o -c < /tmp/initrd.lst >/tmp/initrd-I-do

• 注意确保cpio的格式和原始文件的格式一样,否则系统无法启动不同格式的cpio打包的文件-c 等同于-H newc

• 那么之后就是使用gzip对打包好的文件压缩了

• gzip -9 -S .img /tmp/initrd-I-do;

• cp /tmp/initrd-I-do.img /boot/ -v

• 最后就是测试新的ram disk, 我们可以修改grub.conf 文件

• title Kernel with qla1280 module

• kernle /..... 之前的相同的核心,复制一份过来

• initrd /initrd-I-do.img 新的initrd文件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20425.html