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文件