Google
 

Archive for April, 2007

2007-04
11

Linux 硬件管理的基础知识

Filed under: Tech articles — woojar @ 3:31 pm

Linux 硬件管理的基础知识

作者:北南南北
来自:LinuxSir.Org
摘要:本文主要解说在Linux中,硬件设备的表示方法及查看工具等;最主要的目的是当我们遇到硬件问题时,懂得如何根据硬件信息来解决问题;


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++


一、在Linux 系统中,对硬件判别的标识的依据;

在 LinuxSir.Org 讨论区,我们经常看到有些弟兄这样来描述自己的硬件”我的显示卡是XXX牌子的,Linux 不支持怎么办?”。其实这样描述是最差的,大家也根本没有办法提供帮助;因为Linux对硬件的识别是以为芯片组的厂商为依据的,而非硬件的品牌;因为现在硬件厂商大多是OEM的,也就是说硬件的主芯片是他们生产不了的,但他们会从硬件主芯片厂商拿来,焊接在自己的电路板上,这就是OEM 的过程;

无论什么硬件都是以芯片组的厂商为标识的,而不是什么市场看到的这个品牌,那个品牌的;举个例子,我们在市场上看到有各种各样的显卡,其实看一下他们的芯片,大多是ATI和 NVIDIA的,所有的ATI和NVIDIA的驱动都是ATI和NVIDIA开发出来的。所以我们提问的时候,要把硬件的芯片说出来,芯片是驱动的唯一标识,而不是品牌!!!

所以我们要找硬件的驱动时,我们一定要根据硬件主芯片的信息来找相关的驱动;


二、在Linux中查看硬件信息的工具;

在Linux 中,并不是没有工具可以查看硬件的芯片信息,应该说Linux的工具能把硬件信息查看的更清楚;下面介绍几个常用的工具;我们最常用的工具还是lspci ;其它的工具只是了解一下;


1、lspci 列出所有PCI 设备;

lspci - list all PCI devices ,主要是有来列出机器中的PCI 设备,比如声卡、显卡、猫、网卡等,主板集成设备也能列出来;lspci 是读取 hwdata 数据库,hwdata 由软件包 hwdata 提供;大约有如下文件;

[beinan@localhost ~]# rpm -ql hwdata-0.158-1
/etc/hotplug/blacklist
/etc/pcmcia
/etc/pcmcia/config
/usr/X11R6/lib/X11/Cards
/usr/share/doc/hwdata-0.158
/usr/share/doc/hwdata-0.158/COPYING
/usr/share/doc/hwdata-0.158/LICENSE
/usr/share/hwdata
/usr/share/hwdata/CardMonitorCombos
/usr/share/hwdata/Cards
/usr/share/hwdata/MonitorsDB
/usr/share/hwdata/pci.ids
/usr/share/hwdata/pcitable
/usr/share/hwdata/upgradelist
/usr/share/hwdata/usb.ids

lspci 有两个参数是我们常用的,-b 和-v ,lspci 也会把usb接口列出来;

举例:

[root@localhost beinan]# lspci -b
00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC’97 Audio Controller (rev 03)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC’97 Modem Controller (rev 03)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
02:09.0 CardBus bridge: Texas Instruments Texas Instruments PCIxx21/x515 Cardbus Controller
02:09.2 FireWire (IEEE 1394): Texas Instruments Texas Instruments OHCI Compliant IEEE 1394 Host Controller
02:09.3 Unknown mass storage controller: Texas Instruments Texas Instruments PCIxx21 Integrated FlashMedia Controller
02:09.4 Class 0805: Texas Instruments Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD)

分析一下这台机器中有什么设备,看主要的就行,与我们应用相关的;

00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02) 注:这是显示卡;
USB Controller 表示的是USB 接口;我们看到有三个这样的设备;我的笔记本上正好有三个USB 接口;
Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC’97 Audio Controller (rev 03) 注:这是声卡;
Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC’97 Modem Controller (rev 03) 注:这是猫;
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 注:这是网卡,芯片是8139的;
FireWire (IEEE 1394): Texas Instruments Texas Instruments OHCI Compliant IEEE 1394 Host Controller 注:这是1394接口的信息;事实上我的笔记本也有这样的接口;

那得到这些信息有什么用处呢?如果机器中有些设备支持的不好,我们就可以根据这些信息在Google 上搜索,比如我感觉我的声卡有问题,就可以根据声卡信息相关的来搜索找解决问题的办法;根据这些信息,我们也可以到硬件芯片组的官方去找答案或者驱动;

如果想知道硬件更为详细的内容,我们可以用 lspci -v 来查看;

[root@localhost beinan]# lspci -v

比如我们可以通过 lspci -v 来查看硬件的irq中断什么的;比如网卡不好用,是不是irq 存在冲突了?如果您不知道怎么解决硬件驱动不了的情况,就要把 lspci -v 相应硬件的信息整段贴出来,这才是解决问题的唯一办法;所以学会提问也是极为重要的;

有的系统发行版本,还有lsusb 的工具,自己尝试一下吧;


2、存储设备查看和操作工具;

我们查看存储设备的工具主要有 fdisk ;parted ;cfdisk 等;最常用也是最方便的就是fdisk ;parted 就当一个补充吧,这个工具目前看来并不是太成熟;

请参考:

《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》
《实例解说 fdisk 使用方法》


3、通过查看/proc 目录的相应文件获取一些硬件信息;

我们在查看 /etc/fstab 时,会注意到这样一行;

/dev/proc /proc proc defaults 0 0

proc 看起来象是一个文件系统,其实他并不是一个真正的文件系统 , 它是”proc - process information pseudo-filesystem”,译成中文大概的意思是”进程信息伪装文件系统”呵呵,这是我翻译的,有可能不对,请多多指正;
“The proc filesystem is a pseudo-filesystem which is used as an interface to kernel data
structures. It is commonly mounted at /proc. Most of it is read-only, but some files allow
kernel variables to be changed.”

我再来乱译一下然后再根据/proc 的内容自己理解理解。proc 文件系统做为内核kernel 数据结构的接口,把kernel 的一些信息(比如硬件信息,包括CPU 、网卡、显示卡、内存、文件系统、SCSI 设备 ….)写到 proc 文件系统中,proc被mont 到 /proc 目录;/proc 目录中有大数据大多文件是只读的,但一些数据是根据内核的变化而变化的;/proc 目录中的数据是经常变动的,对于系统中的每个进程都有一个PID;都可以在/proc 中找到;我们也可以通过 ps -aux |more 来查看进程;

我们可以通过 cat 命令来读取/proc 目录下的文件,比如cpu的信息;

[root@localhost beinan]# cat /proc/cpuinfo

详细的内容还得需要您来慢慢查看;对于 /proc 的了解也是有必要的;


4、dmesg

dmesg 是一个显示内核缓冲区系统控制信息的工具;比如系统在启动时的信息会写到/var/log/

注:dmesg 工具并不是专门用来查看硬件芯片组标识的工具,但通过这个工具能让我们知道机器中的硬件的一些参数;因为系统在启动的时候,会写一些硬件相关的日志到 /var/log/message* 或 /var/log/boot* 文件中;

如果我们用这个工具来查看一些硬件的信息;这个工具信息量太大,的确需要耐心;

[root@localhost beinan]# dmesg
[root@localhost beinan]# dmesg -c 注:清理掉缓冲区,下次开机的时候还会自动生成;


5、 hwbrowser

hwbrowser 是 您当前硬件配置的图形化浏览器 ,这个工具是图形的。可能系统在默认的情况下没有安装。需要您安装才行。在Fedora 4.0 中,如果能用yum 或apt 应该是通过如下的命令来安装;

[root@localhost beinan]# yum install hwbrowser

[root@localhost beinan]# apt install hwbrowser
[root@localhost beinan]# hwbrowser

当然您也可以通过rpmfind.net 或者freshrpms.net 上寻找rpm 包来安装

[root@localhost beinan]# rpm -ivh hwbrowser*.rpm

我建议您最好是通过软件包更新工具yum 和apt来安装,这样能自动解决依赖关系;


6、lshal 和 hal-device-manager

通过 lshal 和hal-device-manager 也能知道硬件相关信息,不过这个工具对新手操作起来是有点麻烦,但我还是得介绍一下;

[root@localhost beinan]# lshal

hwbrowser 是 lshal 的图形化界;可能系统在默认的情况下没有安装,这个工具包是Fedora 扩展包,需要您安装才行。在Fedora 4.0 中,如果能用yum 或apt 应该是通过如下的命令来安装;

[root@localhost beinan]# yum install hal-device-manager

[root@localhost beinan]# apt install hal-device-manager
[root@localhost beinan]# hal-device-manager

当然您也可以通过rpmfind.net 或者freshrpms.net 上寻找rpm 包来安装

[root@localhost beinan]# rpm -ivh hal-device-manager*.rpm

我建议您最好是通过软件包更新工具yum 和apt来安装,这样能自动解决依赖关系;


三、不同的硬件有不同的配置工具和与之相应的配置文件;

不同的硬件有不同的配置工具,也有与之相应的配置文件;比如关于显示器和显示卡的配置文件是/etc/X11/xorg.conf ,对于老的Linux版本应该是/etc/X11/X86Config 或 X86Config-4 ,xorg 或 X86的配置文件还包括鼠标、键盘等在X桌面环境下的配置和控制等;

声卡的配置文件是/etc/modprobe.conf 或 /etc/modules.conf ;

文件系统的配置文件是 /etc/fstab ;

声卡的配置工具,一般情况下是alsaconf

当然不同的发行版也有相应的硬件配置或管理 工具,比如Fedora Core 4.0 有如下的硬件配置或管理工具;

[root@localhost beinan]# system-config-mouse
[root@localhost beinan]# system-config-network-tui
[root@localhost beinan]# gnome-system-monitor
[root@localhost beinan]# system-config-network
[root@localhost beinan]# system-config-printer-gui
[root@localhost beinan]# system-config-soundcard
[root@localhost beinan]# setup

当然这些图形化的工具并不是万能的,他们的功能还是有极大的局限性;所以在硬件配置上,大多还是通过文本模式来操作的;


四、硬件驱动是由内核支持的,但驱动都存放在哪里?

硬件驱动是必须由内核支持的,无论是我们自己安装驱动,还是内核自带的驱动都是如此。硬件驱动如果是以内核模块支持的,驱动目录位于: /lib/modules/内核版本/kernel/目录 或 /lib/modules/内核版本/kernel/drivers 目录中;

[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/kernel
arch crypto drivers fs lib net sound

注:只有驱动在内核中以模块的方法支持的,或者我们自己安装的驱动,驱动才位于 /lib/modules/相应的目录;如果是直接置入内核的,不会出现在/lib/modules驱动相关的目录;


五、硬件不被系统支持怎么办?

如果一个Linux 系统不支持您的硬件,解决的办法无非是有两种,一种是下载驱动自己安装,Linux的驱动大多是开源社区开发的,厂商提供的比较少;有时也可能要重编内核,主要看驱动内部的说明文件怎么说了。因为驱动本来是要内核支持的,编译内核也极为正常;

值得注意的是:如果我们要重新编译内核,最好把硬件情况摸清楚了,比如鼠标、光驱、软驱、USB 设备;硬盘、文件系统… … 都要仔细的查看;

请参考:


后记:

Linux 对硬件的支持目前的情况来看是要比前几年好多了,比如声卡、网卡、显示卡(非3D加速,如果是3D加速的,要下载厂商驱动,如果厂商不提供,那大多是没有办法了,因为厂商不公开硬件的相关参数,开源社区也没有办法开发,对不对?);对于有些硬件还是需要我们来自己安装驱动或编译内核来解决;

Linux对硬件的驱动的开发,开源社区是相当积极的,但厂商很少提供非Windows的驱动,大多数的Linux的驱动都是开源社区奉献的;有人可能会说Windows的硬件驱动最容易,但我不是这么认为,我有一声ISA接口的声卡,在windows 98 和winme 中发出怪声,在windows 2000更是没有驱动。但在Linux中却支持的非常好。 呵。。。

Linux 对硬件并不是大家原来所说的,越老越旧的硬件跑起来最好,Linux对新设备的支持,可能厂家刚放出来产品,开源社区就有人研究了。解决办法也会在开源社区可以找到;但有些硬件厂商不会提供驱动的开发参数、信息之类的,所以开源社区有时对这样的硬件也是无奈,但这样的设备目前看来是比较少;大多硬件都支持Linux ;

如果您遇到硬件相关的问题,不妨通过我上面所说的来找线索解决,就目前来看也没有太多的问题。只要仔细一点,细点心,学会用Google 搜索,大多问题还是能解决的。



Technorati :

2007-04
9

Linux逻辑盘卷管理LVM详解

Filed under: Tech articles — woojar @ 1:49 pm
Linux逻辑盘卷管理LVM详解

发布于2005-07-19 被读10828次 【字体:
作者:LinuxAid

摘要
Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如Patition Magic等),但这都只是暂时解决办法,没有根本解决问题。随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,本文就深入讨论LVM技术,使得用户在无需停机的情况下方便地调整各个分区大小(2003-12-11 16:04:19)



By ideal

请注意本文已刊载在《开放系统世界》,该文章版权属于该杂志所有,请勿随意转载,转载请保留该声明

Linux逻辑盘卷管理LVM详解

关键字:Linux LVM 磁盘管理 盘卷 文件系统

摘要: Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如Patition Magic等),但这都只是暂时解决办法,没有根本解决问题。随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,本文就深入讨论LVM技术,使得用户在无需停机的情况下方便地调整各个分区大小。

一、 前言

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。

虽然现在有很多动态调整磁盘的工具可以使用,例如Partation Magic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解决问题。

因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,Logical Volume Manager)机制就是一个完美的解决方案。

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:”development”和”sales”,而不是使用物理磁盘名”sda”和”sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

二、 LVM基本术语

前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:

  • 物理存储介质(The physical media)
    这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
  • 物理卷(physical volume)
    物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
  • 卷组(Volume Group)
    LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个”LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
  • 逻辑卷(logical volume)
    LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
  • PE(physical extent)
    每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
  • LE(logical extent)
    逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

首先可以看到,物理卷(PV)被由大小等同的基本单元PE组成。

一个卷组由一个或多个物理卷组成,

从上图可以看到,PE和LE有着一一对应的关系。逻辑卷建立在卷组上。逻辑卷就相当于非LVM系统的磁盘分区,可以在其上创建文件系统。

下图是磁盘分区、卷组、逻辑卷和文件系统之间的逻辑关系的示意图:

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。

系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

三、 安装LVM

首先确定系统中是否安装了lvm工具:

[root@www root]# rpm -qa|grep lvm
lvm-1.0.3-4

如果命令结果输入类似于上例,那么说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装LVM管理工具,则需要从网络下载或者从光盘装LVM rpm工具包。

安装了LVM的RPM软件包以后,要使用LVM还需要配置内核支持LVM。RedHat默认内核是支持LVM的,如果需要重新编译内核,则需要在配置内核时,进入Multi-device Support (RAID and LVM)子菜单,选中以下两个选项:

  

  • Multiple devices driver support (RAID and LVM)
      <*> Logical volume manager (LVM) Support

然后重新编译内核,即可将LVM的支持添加到新内核中。

为了使用LVM,要确保在系统启动时激活LVM,幸运的是在RedHat7.0以后的版本,系统启动脚本已经具有对激活LVM的支持,在/etc/rc.d/rc.sysinit中有以下内容:

# LVM initialization
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
action  $”Setting up Logical Volume Management:” /sbin/vgscan && /sbin/vgchange -a y
fi

其中关键是两个命令,vgscan命令实现扫描所有磁盘得到卷组信息,并创建文件卷组数据文件/etc/lvmtab和/etc/lvmtab.d/*;vgchange -a y命令激活系统所有卷组。

四、 创建和管理LVM

要创建一个LVM系统,一般需要经过以下步骤:

1、 创建分区

使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e。

2、 创建物理卷

创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷。将整个磁盘创建为物理卷的命令为:

# pvcreate /dev/hdb

将单个分区创建为物理卷的命令为:

# pvcreate /dev/hda5

3、 创建卷组

创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:

# vgcreate web_document /dev/hda5 /dev/hdb

vgcreate命令第一个参数是指定该卷组的逻辑名:web_document。后面参数是指定希望添加到该卷组的所有分区和磁盘。vgcreate在创建卷组 web_document 以外,还设置使用大小为4 MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以 4 MB 为增量单位来进行扩充或缩减。由于内核原因,PE大小决定了逻辑卷的最大大小,4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷则创建卷组时指定更大的PE。PE大小范围为8 KB 到 512 MB,并且必须总是 2 的倍数(使用-s指定,具体请参考man vgcreate)。

4、 激活卷组

为了立即使用卷组而不是重新启动系统,可以使用vgchange来激活卷组:

# vgchange -a y web_document

5、 添加新的物理卷到卷组中

当系统安装了新的磁盘并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用vgextend命令:

# vgextend web_document /dev/hdc1

这里/dev/hdc1是新的物理卷。

6、 从卷组中删除一个物理卷

要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息:

如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。删除物理卷的命令为vgreduce:

# vgreduce web_document /dev/hda1

7、 创建逻辑卷

创建逻辑卷的命令为lvcreate:

# lvcreate -L1500 -nwww1 web_document

该命令就在卷组web_document上创建名字为www1,大小为1500M的逻辑卷,并且设备入口为/dev/web_document/www1(web_document为卷组名,www1为逻辑卷名)。如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的PE数,然后在创建逻辑卷时指定:

# vgdisplay web_document| grep “Total PE”
Total PE 45230
# lvcreate -l 45230 web_document -n www1

8、 创建文件系统

笔者推荐使用reiserfs文件系统,来替代ext2和ext3:

创建了文件系统以后,就可以加载并使用它:

# mkdir /data/wwwroot
# mount /dev/web_document/www1 /data/wwwroot

如果希望系统启动时自动加载文件系统,则还需要在/etc/fstab中添加内容:

/dev/web_document/www1 /data/wwwroot reiserfs defaults 1 2

9、 删除一个逻辑卷

删除逻辑卷以前首先需要将其卸载,然后删除:

# umount /dev/web_document/www1
# lvremove /dev/web_document/www1
lvremove — do you really want to remove “/dev/web_document/www1″? [y/n]: y
lvremove — doing automatic backup of volume group “web_document”
lvremove — logical volume “/dev/web_document/www1″ successfully removed

10、 扩展逻辑卷大小

LVM提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是lvcreate:

# lvextend -L12G /dev/web_document/www1
lvextend — extending logical volume “/dev/web_document/www1″ to 12 GB
lvextend — doing automatic backup of volume group “web_document “
lvextend — logical volume “/dev/web_document/www1″ successfully extended

上面的命令就实现将逻辑卷www1的大小扩招为12G。

# lvextend -L+1G /dev/web_document/www1
lvextend — extending logical volume “/dev/web_document/www1″ to 13 GB
lvextend — doing automatic backup of volume group “web_document “
lvextend — logical volume “/dev/web_document/www1″ successfully extended

上面的命令就实现将逻辑卷www1的大小增加1G。

增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间。笔者推荐使用reiserfs文件系统来替代ext2或者ext3。因此这里仅仅讨论reiserfs的情况。Reiserfs文件工具提供了文件系统大小调整工具:resize_reiserfs。对于希望调整被加载的文件系统大小:

# resize_reiserfs -f /dev/web_document/www1

一般建议最好将文件系统卸载,调整大小,然后再加载:

# umount /dev/web_document/www1
# resize_reiserfs /dev/web_document/www1
# mount -treiserfs /dev/web_document/www1 /data/wwwroot

对于使用ext2或ext3文件系统的用户可以考虑使用工具

ext2resize。http://sourceforge.net/projects/ext2resize

Note: Use ext2online command can resize the ext3 fs online.

11、 减少逻辑卷大小

使用lvreduce即可实现对逻辑卷的容量,同样需要首先将文件系统卸载:

# umount /data/wwwroot
# resize_reiserfs -s-2G /dev/web_document/www1
# lvreduce -L-2G /dev/web_document/www1
# mount -treiserfs /dev/web_document/www1 /data/wwwroot

五、 总结

根据上面的讨论可以看到,LVM具有很好的可伸缩性,使用起来非常方便。可以方便地对卷组、逻辑卷的大小进行调整,更进一步调整文件系统的大小。如果希望了解更多信息,请参考LVM-HOWTO。


Technorati :

2007-04
6

Linux Grub 修复

Filed under: Tech articles — woojar @ 5:17 pm

转自linux 联盟

(为了方便表示,此后的系统提示符”# 命令”表示命令输入,若定义了新的提示符就是”提示符 命令”表示命令输入;”// 文字”表示注释 ;所有的命令都是半角纯英文字符)

进入Linux rescue模式后有几种方法引导系统:

方法1:
1. 在系统提示符#后输入:fdisk -l
//显示硬盘的分区,以便确定安装Linux的分区。
//本例是第一个硬盘的第三个主分区hda3
2. # grub-install /dev/hda
//重新安装GRUB引导程序在第一个硬盘上。
3. # exit;reboot
//退出并重启系统。

方法2:
1. # grub
//进入GRUB命令行模式,出现提示符:grub>
2. grub> root (hd0,3)
//定位安装Linux的根分区,root与参数(hd0,3)间有一个空格。
3. grub> setup (hd0)
//在重新安装GRUB引导程序在第一个硬盘上,setup与参数(hd0)间有一个空格。
4. grub> exit;reboot
//退出并重启系统。

方法3:
1. # grub
//进入GRUB命令行模式,出现提示符:grub>
2. grub> root (hd0,3)
3. grub> kernel (hd0,3)/boot/vmlinuz ro root=LABEL=/
//输入内核参数,注意内核的位置与名字。
4. grub> initrd (hd0,3)/boot/initrd-2.4.20-8.img
//传输映像文件,注意其所在的位置与名字。
5. grub> boot
//引导Linux系统启动。

在进入Linux rescue模式后或进入GRUB命令行模式后可以用一般的Linux命令。
root (hdX,Y) //定位操作分区,X、Y是数字。执行这个名令若存在这个分区

//会显示:Filesystem type is 文件系统代号, partition type 代码.
find -l 文件名 //在确定的分区中寻找文件,可以用通配符* 或 ?

祝大家好运! Linux联盟收集整理


Technorati :

2007-04
4

Iptables NAT 实例

Filed under: Tech articles — woojar @ 6:25 pm

NAT使用实例

Prerequisite: Active Ip-Forwarding in linux kernel

There are two ways to achieve it. 1) echo “1″ > /proc/sys/net/ipv1/ip_forward. It just change the status dynamically and take effect right away

2)change the relative line in the the configuration file /etc/sysctl.conf

  1. 源NAT(SNAT)

  比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:

  iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT –to 1.2.3.4

  这里需要注意的是,系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。

  有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如

  # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  可以看出,这时候我们没有必要显式的指定源ip地址等信息。

  2. 目的SNAT(DNAT)

  比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:

  iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT –to 1.2.3.4

  这里需要注意的是,系统是先进行DNAT,然后才进行路由及过虑等操作。

  有一种DNAT的特殊情况是重定向,也就是所谓的Redirection,这时候就相当于将符合条件的数据包的目的ip地址改为数据包进入系统时的网络接口的ip地址。通常是在与squid配置形成透明代理时使用,假设squid的监听端口是3128,我 们可以通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听

  端口:

  iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 –dport 80

  -j REDIRECT –to-port 3128

  综合例子

  1. 使用拨号带动局域网上网

  小型企业、网吧等多使用拨号网络上网,通常可能使用代理,但是考虑到成本、对协议的支持等因素,建议使用ip欺骗方式带动区域网上网。

  成功升级内核后安装iptables,然后执行以下脚本:

  #载入相关模块

  modprobe ip_tables

  modprobe ip_nat_ftp

  #进行ip伪装

  iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  2. ip映射

  假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己的WWW服务器对外发布信息。我们可以再防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一 个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。

  我们假设以下情景:

  该ISP分配给A单位www服务器的ip为:

  伪ip:192.168.1.100

  真实ip:202.110.123.100

  该ISP分配给B单位www服务器的ip为:

  伪ip:192.168.1.200

  真实ip:202.110.123.200

  linux防火墙的ip地址分别为:

  内网接口eth1:192.168.1.1

  外网接口eth0:202.110.123.1

  然后我们将分配给A、B单位的真实ip绑定到防火墙的外网接口,以root权限执行以下命令:

  ifconfig eth0 add 202.110.123.100 netmask 255.255.255.0

  ifconfig eth0 add 202.110.123.200 netmask 255.255.255.0

  成功升级内核后安装iptables,然后执行以下脚本:

  #载入相关模块

  modprobe ip_tables

  modprobe ip_nat_ftp

  首先,对防火墙接收到的目的ip为202.110.123.100和202.110.123.200的所有数据包进行目的NAT(DNAT):

  iptables -A PREROUTING -i eth0 -d 202.110.123.100 -j DNAT –to 192.168.1.100

  iptables -A PREROUTING -i eth0 -d 202.110.123.200 -j DNAT –to 192.168.1.200

  其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):

  iptables -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT –to 202.110.123.100

  iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT –to 202.110.123.200

  这样,所有目的ip为202.110.123.100和202.110.123.200的数据包都将分别被转发给192.168.1.100和192.168.1.200;而所有来自192.168.1.100和192.168.1.200的数据包都将分 别被伪装成由202.110.123.100和202.110.123.200,从而也就实现了ip映射。

Note: If you want to access the web servers by public ip address on the NAT Server, you MUST add NAT OUTPUT Rule like this:
iptables -t nat -A OUTPUT -o eth0 -d 202.110.123.100 -j DNAT –to 192.168.1.100

iptables -t nat -A OUTPUT -o eth0 -d 202.110.123.200 -j DNAT –to 192.168.1.200


Technorati :

2007-04
4

Linux OS install disks making

Filed under: Tech articles — woojar @ 12:39 pm

zfgirl2写著 ‘汪伦伟 (xc_wangwei@163.com)
国防科技大学博士研究生
2005 年 3 月

本文阐述如何以一个现有的 RedHat Linux系统安装盘为蓝本,定制符合需要的 Linux 系统安装盘。

1 引言
通常由于某种实际应用,需要一个包含所有最近更新的RPM包的操作系统发布盘,以备在安装时一次完成所有的更新操作,或者是想定制一个有自己特色的操作系统发布盘,如将自己开发的应用程序通过创建RPM包,加入到操作系统中,在系统安装时一次完成,形成包含自己产品的操作系统发布盘。这些都需要重新生成安装盘,而且生成安装盘也是十分必要的,因为操作系统发布商在每一次正式发布后,总会对一些漏洞进行更新处理,有些还是与安全相关的,在重新生成安装盘时就可以将这些bug修复添加进你自己定制的安装盘中,对一些设备新开发的驱动程序提供支持也需要重新生成安装盘。

在一些嵌入式具体应用中,由于其对操作系统的要求较具体,不需要当前操作系统安装盘中自带的那么多的功能,如Fedora Core 2当前有4张安装盘,它包含了许多其它的应用,如office、娱乐和游戏等等,而一些具体的应用根本不需要这么多的功能,因此,它们常常需要基于一个版本的操作系统,然后对之进行相应的裁减,使之能满足具体应用的实际需要,而不需要其它的多余的功能。因此,通过操作系统安装盘的定制,可以根据自己或实际的需要,选择有用的软件包,组成安装盘,从而通过定制操作系统的安装,满足具体应用的需要。

我们在定制操作系统安装盘之前,必须有一个蓝本作为安装盘的基础,比如是Red Hat 9.0安装盘或Fedora Core 2安装盘,也可以是Red Hat 9.0或Fedora Core 2安装盘的iso文件,这些我们可以从Red Hat的网站或其它一些网站上下载。现假设我们已经有了Fedora Core 2的安装盘,下面我们先大略看一下Fedora Core 2的安装盘里面的内容。

在安装盘中有一个目录为Fedora,它包含了发布盘的核心内容,如下:

drwxr-xr-x 2 root root 2048 May 13 2004 base
drwxr-xr-x 2 root root 77824 May 13 2004 RPMS

RPMS目录包含Fedora Core 2发布盘的主要部分,它是一些RPM文件。RPM包通常包含二进制可执行文件、有关的配置文件和文档,我们可以参考RPM帮助以获得更多信息。

base 目录中包含一些在安装过程中所需要的文件,如comps.xml文件,它定义哪个组件包含哪些RPM包以及RPM包之间的依赖关系,需要注意的是,在comps.xml文件中表示哪个组件有哪些RPM包采用的是RPM包名,而不是包的文件名。比如perl-5.8.3-18.i386.rpm这个文件名,在comps.xml中所表示的RPM包名为perl。对于comps.xml文件,我们会在后面作进一步解释。另一个重要的文件是hdlist文件,它包含了RPM目录中的所有RPM包大部分的头文件,这意味着在RPM包中相互依赖关系可以通过读取hdlist文件而决定,而不需要读所有的RPM包。hdlist文件的另一个作用是将包名映射到文件名,如将perl包名映射到perl-5.8.3-18.i386.rpm,这意味着如果你想更新RPM包或添加你自己的包到RPM目录中,你就需要更新hdlist这个文件,这会在后面进行描述。

2 RPM操作
RPM(Redhat Package Management)是由RedHat开发的,在Linux系统下的系统包管理工具。它的目标是:使包的安装和卸载过程更容易,它能够证实一个包是否已经正确安装了,可以简化包的建立过程,可以从源代码建立整个包,它能用于不同的体系结构。RPM系统已经成为现在Linux系统下包管理工具事实上的标准,并且它也移植到很多商业的unix系统之下。

RPM包由包标签对它标识,包标签包含软件名,软件版本,包的发行版本几部分。在包的内部还包含包的建立时间,包的内容描述,安装包的所有文件的大小,数字签名以证实包的完整性等信息。RMP包还包含包内的文件信息,其中包括:每个文件的文件名,每个文件的权限,文件的属组和拥有者,每个文件的md5校验和,文件的内容等。

RPM包管理系统提供了下列功能:安装新的包,卸载旧的包,将一个旧包升级为新的包,获得已经安装包的信息等。

Red Hat发布盘主要是由一些RPM包组成。RPM包的名字包含一个后缀:arch.rpm,arch 指的是体系结构,对于Intel平台的有i386、i586、i686等,你所安装的包必须要与机器上的共享库的版本相匹配。如果你发现某个RPM包没有安装,你可以自己安装。任何时候,你都可以(必须是root用户)安装RPM包。RPM命令使用轻参考相关资料。

3 RPM包创建过程
为了完成RPM包的创建,需要执行以下步骤:

执行spec文件prep节的命令和宏;
检查文件列表的内容;
执行spec文件build节的命令和宏;
执行spec文件install节的命令和宏,同时也执行文件列表中的宏;
创建二进制包文件;
创建源码包。
为了执行打包的工作,RPM需要一系列目录完成建立的工作。正常的目录结构通常由一个顶级目录和五个子目录构成。这五个子目录分别是:

SOURCES——包含原始的源文件和补丁文件。
SPECS——–包含控制RPM包建立过程的spec文件。
BUILD——–包含源码解包和软件建立的目录。
RPMS———包含建立过程创建的二进制包文件。
SRPMS——–包含建立过程创建的源码包文件。
除了上述这五个主要的目录外,在RPMS或SRPMS目录下通常还会有关于RPM包目标平台的目录。例如,i386、i586、i686等代表与Intel兼容cpu的平台,noarch目录下的RPM包代表可以在任何平台下执行。

3.1 SPEC文件
spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件。spec文件包含建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个目录下。这个文件一般分为如下的几节:

(1) Preamle(序言)

序言包含用户请求包的信息时所显示的内容。它可以包含包的功能描述、包的软件版本、版权信息和所属的包组等。Summary 是一行关于该软件包的描述,Name 是该软件包的基名,Version 是该软件的版本号,Release 是 RPM 本身的版本号,如果修复了 spec 文件中的一个错误并发布了该软件同一版本的新 RPM,就应该增加发行版号。License 应该给出一些许可术语(如:”GPL”、”Commercial”、”Shareware”),Group 标识软件类型。那些试图帮助人们管理 RPM 的程序通常按照组列出 RPM。您可以在usr/share/doc/rpm-4.0.4/GROUPS 文件看到一个 Red Hat 使用的组列表(假设您安装的 RPM 版本是 4.0.4)。但是您还可以使用那些组名以外的名称。Source0、Source1等等给这些源文件命名(通常为 tar.gz 文件)。%{name} 和 %{version} 是 RPM 宏,它们扩展成为头中定义的 rpm 名称和版本。

要注意的是,你不要在 Source 语句中包含任何路径。缺省情况下,RPM 会在 /usr/src/redhat/SOURCES 中寻找文件,请将您的源文件复制或链接到那里。(要使 spec 文件尽量可移植的话,应当尽量避免嵌入自己开发机器上的假想路径。其他开发人员就可以指示 RPM 在别的目录下查找源文件,而不用修改您的
spec 文件。)

接下来的部分从 %description 行开始。您应该在这里提供该软件更多的描述,这样任何人使用 rpm -qi 查询您的软件包时都可以看到它。您可以解释这个软件包做什么,描述任何警告或附加的配置指令,等等。

(2) Prep节

Prep节进行实际的打包准备工作,它是使用节前缀%prep表示的。一般而言,这一节的主要工作是检查标签语法是否正确,删除旧的软件源程序,对包含源程序的tar文件进行解码。如果包含补丁(patch)文件,将补丁文件应用到解开的源码中。它一般包含%setup与%patch两个命令。%setup用于将软件源码包解开,执行%patch可将补丁文件加入解开的源程序中。

%setup
-n newdir———将压缩的软件源程序在newdir目录下解开。
-c —————在解开源程序之前先创建目录。
-b num————在包含多个源程序时,将第num个源程序解压缩。
-T—————-不使用缺省的解压缩操作。

例如:

%setup -T -b 0
/*解开第一个源程序文件。*/
%setup -c -n newdir
/*创建目录newdir,并在此目录之下解开源程序。*/
%patch
%patchN——-这里N是数字,表示使用第N个补丁文件,等价于%patch -P N
-p0———–指定使用第一个补丁文件,-p1指定使用第二个补丁文件。 -s————在使用补丁时,不显示任何信息。
-b name——-在加入补丁文件之前,将源文件名上加入name。若为指定此参数,则缺省源文件加入.orig。
-T————将所有打补丁时产生的输出文件删除。

(3) Build节

这一节主要用于编译源码,它是使用节前缀%build表示的。这一节一般由多个make命令组成。

(4) Install节

这一节主要用于完成实际安装软件必须执行的命令,它是使用节前缀%install表示的。这一节一般是由make install指令构成,但是有时也会包含cp、mv、install等指令。

这一节还能指定在用户安装的系统上,包安装时运行的脚本。这样的脚本称为安装(卸载)脚本。它可以指定包安装前、包安装后、包除去前、包除去后的系统必须运行的外壳程序段。在用户安装的系统上,为了验证一个包是否已经成功安装的验证脚本也可由这一节指定。

(5) Clean节

这一节所描述的内容表示在完成包建立的工作之后,自动执行此节下的脚本进行附加的清除工作,它是使用节前缀%clean表示的。一般而言,这一节的内容是简单地使用rm -rf $RPM_BUILD_ROOT命令,不需要指定此节的其它内容。

(6) 文件列表

这一节指定构成包的文件的列表,它是使用节前缀%files表示的。此外,它还包含一系列宏控制安装后的文件属性和配置信息。

%files 列出应该捆绑到 RPM 中的文件,并能够可选地设置许可权和其它信息。在 %files 中,您可以使用 %defattr 来定义缺省的许可权、所有者和组;%defattr(-,root,root) 会安装 root 用户拥有的所有文件,使用当 RPM 从构建系统捆绑它们时它们所具有的任何许可权。

可以用 %attr(permissions,user,group) 覆盖个别文件的所有者和许可权。可以在 %files 中用一行包括多个文件。可以通过在行中添加 %doc 或 %config 来标记文件。%doc 告诉 RPM 这是一个文档文件,因此如果用户安装软件包时使用 –excludedocs,将不安装该文件。您也可以在 %doc 下不带路径列出文件名,RPM 会在构建目录下查找这些文件并在 RPM 文件中包括它们,并把它们安装到 /usr/share/doc/%{name}-%{version}。以 %doc 的形式包括 README 和 ChangeLog 这样的文件是个好主意。

%config 告诉 RPM 这是一个配置文件。在升级时,RPM 将会试图避免用 RPM 打包的缺省配置文件覆盖用户仔细修改过的配置。

注意:如果在 %files 下列出一个目录名,RPM 会包括该目录下的所有文件。通常这不是您想要的,特别对于 /bin 这样的目录。

(7) 改动日志

这一节主要描述软件的开发记录,它是使用节前缀%changlog表示的。这个段的内容是为了开发人员能详细的了解该软件的开发过程,对于包的维护极有好处。

3.2 创建RPM包
如果我们需要对RPM包作修改,那么我们首先需要将源码包取来,比如我们要修改内核,那么我们可以从网上或光盘中取到内核的源代码RPM包,如kernel-2.6.5-1.358.src.rpm,将源码包解开:rpm -i kernel-2. 6.5-1.358.src.rpm,则该RPM中的内容将存放在目录/usr/src/redhat/SOURCES和/usr/src/redhat/SPEC目录中,前者存放的是源码、补丁以及一些配置文件等,后者存放的是包对应的spec文件,如kernel-2.6.spec,现在你就可以对内核进行修改。假定我们想另外再对内核打一个补丁,比如说:mypatch-2.6.5.patch,你需要将这个补丁文件复制到/usr/src/redhat/SOURCES/目录下,然后编辑kernel-2.6.spec文件。你需要先在定义补丁文件的最后加入对你补丁文件的初始定义,如:

…………
Patch10000: linux-2.6.0-compile.patch
# Patch10010: linux-2.6.0-module-license.patch
Patch10030: mypatch-2.6.5.patch /*新加入的补丁文件的定义*/

# END OF PATCH DEFINITIONS
…………

然后在文件的后面加入对内核打补丁命令:

…………
%patch10000 -p1
%patch10030 -p1   /*新加入的打补丁命令*/
# END OF PATCH APPLICATIONS
…………

如果你还想对内核做其它的修改,你可以修改相应的文件或添加相应的文件,然后修改kernel-2.6.spec文件。当spec文件修改完成之后,你只需要执行 rpmbuild -ba kernel-2.6.spec 就可以生成所需要的RPM包了。另外需要注意的是,以生成内核包为例,假如我们想生成kernel-smp-2.6.5-1.358.i686.rpm包,在kernel-2.6.spec文件中包含有一些开关选项,比如,在文件的开头需要定义创建哪些内核的RPM包,如:

%define buildup 1
%define buildsmp 0
%define buildsource 1

在通常情况下,在执行rpmbuild -ba kernel-2.6.spec 命令后,会创建一个kernel-2.6.5-1.358.i386.rpm、kernel-source-2.6.5-1.358.i386.rpm和源码RPM包kernel-2.6.5-1.358.src.rpm。因此,当你需要创建支持SMP的内核的RPM包时,需要修改kernel-2.6.spec文件开头时的定义为:

%define buildup 1
%define buildsmp 1
%define buildsource 1
%define -target_cpu i686

此外,在文件的开头还需要定义-target_cpu 为i686,从而创建i686的内核RPM包,并且需要对/usr/lib/rpm目录下面的一些宏重新定义,比如当前目录下面的macros文件,需要重新定义arch 和build_arch为i686。最后,执行命令 rpmbuild -ba kernel-2.6.spec –with smp 就可以。当然,如果对内核进行了相应的修改,就必须生成多个内核RPM包,以适用于多个arch,如kernel-2.4.18-3-i586-smp.rpm, kernel-2.4.18-3-athlon.rpm等。

4 操作系统安装盘的定制过程
你需要将原来操作系统发布盘上的内容拷贝到本机硬盘中,根据有几张发布盘而生成几个目录,比如Fedora Core 2有四张盘,你则需要在系统上生成四个目录,如disc1、disc2、disc3、disc4,分别将这四张盘上内容拷贝到这四个目录中,然后对相应的RPM包进行更新。

首先找到你想更新的RPM包,将新的RPM替换旧包。当然你也可以根据你的需要新增或删除RPM包,需要注意的是,你需要在comps.xml文件中将新增加或删除的RPM包名

 Page 2 of 2 « 1  2 
26 queries. 0.604 seconds. Powered by WordPress