定制CentOS 5.1(Redhat AS 5.1)安装盘[复制链接]

来源:互联网 发布:山东大学知乎 编辑:程序博客网 时间:2024/05/08 13:13

定制CentOS 5.1(Redhat AS 5.1)安装盘[复制链接]

  
  • 消息
跳转到指定楼层
楼主
发表于 2011-11-1 02:34:35|只看该作者|倒序浏览|
搜索本主题

CentOS(Redhat)提供了一套完整的自动化安装机制,利用该机制,我们可以自己定制无人值守的自动安装光盘,也可以进行系统裁减,甚至可以以CentOS为基础制作自己软件系统的系统安装盘。

以下全部内容以CentOS 5.1版本为准

自定制安装盘主要有以下几个步骤

1、选取必要服务,去除不必要的RPM包

2、定制自动安装过程

3、定制安装界面(可选)

4、生成新安装盘

1 创建源盘

首先我们需要从CentOS 5.1的完整dvd版本创建源盘,假设我们已经有一个完整的CentOS5.1的dvd放在光驱中,源盘的位置为/disk,则执行以下操作

1.      mount dvd

#mkdir /cdrom

#mount –o loop /dev/cdrom /cdrom

2.复制光盘内容

#mkdir /disk

#cp –R /cdrom/. /disk

3.清除非必须的RPM

注意,此时/disk目录下实际上是一个DVD的备份景象,我们需要根据第5节的内容选取自定义安装盘所需的RPM包,然后在/disk/CentOS目录里删除所有不必要的RPM,以减小安装盘容量。

上述步骤完成后,我们已经有了一个与原版DVD基本相同,但是完全去除了无用RPM包的源盘,后续的定制工作将在该路径中进行。

典型的CentOS安装盘中,与光盘定制有关的主要有以下几个目录和文件:

/CentOS

/isolinux

/repodata

.discinfo

ks.cfg(此时尚未创建)

CentOS目录存放所有在安装过程中需要使用的RPM包

isolinux目录存放光盘启动时的安装界面信息

repodata目录是与RPM包安装相关的依赖信息

.discinfo是CentOS的识别信息,直接从CentOS DVD版本中获取,如果该文件丢失,会导致安装过程中,系统提示找不到CentOS光盘

ks.cfg是自动安装过程的主控配置文件

CentOS的自动安装过程如下:

1、光盘自动引导,调用isolinux中的信息生成启动界面

2、根据用户输入,选择ks.cfg作为安装控制文件

3、进入自动安装过程,根据ks.cfg安装RPM包、配置网络、进行硬盘分区等等

4、系统安装完成后,根据ks.cfg进行用户自定义的安装过程

5、安装完成,系统重起

2 自定义启动界面

在isolinux里面有三个文件和自定义安装界面有关

boot.msg是定义启动界面如何显示

isolinux.cfg决定如何处理用户的输入,并执行对应的安装过程

splash.lss是启动界面的背景图片

2.1 boot.msg

boot.msg内容大致如下:

^L

^Xsplash.lss

-  XXXX auto-instiall, press the ^O0f<ENTER>^O07 key to begin.

文档中的^X用ctrl+X输入

^Xsplash.lss表示使用splash.lss作为启动界面的背景图片

后面就是启动时界面下的提示信息^O0f和^O07之间的内容作为高亮显示

2.2 isolinux.cfg

isolinux.cfg设置进入启动页面后,系统如何处理用户输入。

主要内容如下:

default auto

默认执行auto段的安装进程

prompt 1

timeout 6000

设置用户输入的超时时间,单位:秒。超时未输入则执行默认的安装进程

display boot.msg

将boot.msg作为显示的启动界面

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

F7 snake.msg

label auto

  kernel vmlinuz

  append ks=cdrom:/ks.cfg initrd=initrd.img ramdisk_size=8192 acpi=off noapic skipddc

标记auto段,使用光驱根目录下的ks.cfg文件作为kickstart的配置文件

label manual

  kernel vmlinuz

  append ks=cdrom:/ks_manual.cfg initrd=initrd.img ramdisk_size=8192 acpi=off noapic skipddc

标记manual段,使用光驱根目录下的ks_manual.cfg文件作为kickstart的配置文件。如果用户在启动界面输入manual,则执行该段

2.3 splash.lss

splash.lss是启动界面的背景图片,该图形文件比较特殊,只能使用14色(标准16色除去黑白两色)的原始图片来生成。

首先创建一个16色(包含黑白两色)的gif文档,名为splash.gif

将该文件转换为lss格式

#giftopnm < splash.gif | ppmtolss16 > splash.lss

3 自定义安装过程

CentOS的安装主要是由anaconda来实现的,它通过kickstart配置文件来控制整个安装进程,以到达无人值守安装的效果。

kickstart文件具体配置可以参看:

http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Installation_Guide/ch-kickstart2.html

进行配置前,需要创建目标ks文件

#cd /disk

#vi ks.cfg

ks文件主要分为三个部分

1、系统安装及配置

2、自定义安装准备(%post --nochroot)

3、用户自定义安装(%post)

3.1 系统安装及配置

kickstart文件首先进行系统的设置,比如机器语言、时区、键盘等参数的设置,然后检查安装所需RPM是否都完整,然后根据分区信息进行格式化。

这部分配置信息写在ks文件的最前面,以“%post --nochroot”为结束,典型的配置信息如下:

#System  language

#系统语言 简体中文

lang zh_CN

#Language modules to install

#要安装的语言模块以及默认语言

langsupport zh_CN --default=zh_CN

#System keyboard

#系统键盘类型

keyboard us

#System mouse

mouse

#Sytem timezone

#系统时区

timezone Asia/Shanghai

#Root password

#管理员密码,值为已加密字符串

rootpw --iscrypted $1$MGv8U4W0$BS7JLb3MZT70Z30mutWwO1

#Reboot after installation

#安装完成后是否自动重起

reboot

#Use text mode install

#使用文本安装界面

text

#Install OS instead of upgrade

install

#Use CDROM installation media

#使用光盘作为安装媒体

cdrom

#System bootloader configuration

bootloader --location=mbr

#Clear the Master Boot Record

zerombr yes

#Partition clearing information

#清除原有分区信息

clearpart --all --initlabel

#Disk partitioning information

#建立一个200-500M的引导区,一个300-500M的交换区,剩余磁盘空间划分给根路径/

part /boot --fstype ext3 --size 200 --grow --maxsize 500

part swap --size 300 --grow --maxsize 500

part / --fstype ext3 --size 1 --grow

#System authorization information

#设置系统验证方式

auth  --useshadow  --enablemd5

#Network information

#使用dhcp获取ip

network --bootproto=dhcp --device=eth0

#Firewall configuration

#关闭防火墙

firewall --disabled

selinux --disabled

#Do not configure XWindows

#不设置xwindows

skipx

#Package install information

%packages –resolvedeps

#以下全部是系统需要安装的rpm包,我们假设此时已经知道所有需要的包,并且全部放在/CentOS路径下

kernel

#autoconf

#e2fsprogs

#fonts-chinese

#...

请注意必须保证要安装的RPM包以及被依赖的RPM都存放在/CentOS目录下,在ks配置文件里只需要写要安装的RPM包名即可,anaconda会解析依赖关系并自动安装关联的包,如果没有需要的包,则会报错并终止安装。

3.2 自定义安装准备

自定义安装准备部分以“%post --nochroot”作为开始,以“%post”作为结束。该部分脚本使用bash语法,通常在这一段脚本中将用户自己的安装包从安装光盘复制到已经安装好的系统上。

这一阶段的脚本编写需要注意两个问题

1、此时要访问磁盘路径,则要在目标路径前增加“/mnt/sysimage”,例如要将某个文件复制硬盘的/var/log,则脚本应为#cp somefile /mnt/sysimage/var/log。

2、如果要从光盘复制文件到硬盘,需要先将光驱mount到系统,但是根据主板不同,此时的光盘设备名不一定是/dev/cdrom,所以可能需要根据自己的情况创建一个link,以便进行mount,如:

#mkdir /mnt/cdrom/

光驱为usb外接光驱,建立链接

#ln -s /dev/scd0 /dev/cdrom

mount设备为只读

#mount /dev/cdrom /mnt/cdrom/ -o ro

3.3 自定义安装

自定义安装部分以“%post”作为开始,在前一部分将自定义安装包复制到硬盘之后,就可以在这里使用bash脚本进行软件的安装控制了。唯一需要注意的是,此时访问磁盘路径已经不需要添加“/mnt/sysimage”,直接访问即可,如

#cp somefile /var/log

此外,因为此时还没有设置用户的环境路径,所以调用系统命令时最好尽量带上完整地路径名,如:

/usr/sbin/groupadd xxxx

/usr/sbin/adduser xxxx -g xxxx

4 生成安装盘

现在我们已经完成了自定义安装光盘的全部调整,就可以制作光盘镜像了。生成安装盘ISO镜像,需要先在系统安装好createrepo和mkisofs两个软件包。

首先,必须同步光盘中RPM包的查询信息,否则安装过程中会提示找不到RPM包

# createrepo -g /disk/repodata/comps.xml /disk/

comps.xml是CentOS自带的RPM所属功能组以及依赖关系的信息,createrepo需要根据该文件来同步信息,最好不要手动修改该文件。

同步成功之后,就可以进行iso的创建了,我们假定光盘标签为sample,输出iso文件名为/sample.iso

#cd /disk

#mkisofs -o /sample.iso -A ‘sample’ -V ‘sample’ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -allow-leading-dots -allow-multidot -udf -R -r -T -boot-info-table -J /disk/

该命令执行成功之后就会在生成sample.iso的镜像,刻录到光盘上就可以作为自制CentOS安装盘使用了。

5 裁减RPM

CentOS 5.1完整版本容量接近4G,其中大部分功能包都不是必要的,完整安装不仅耗费磁盘空间,增加安装时间,还会因为运行无用服务影响系统性能,所以必须要对RPM包裁减。

RPM裁减,即是选出需要的包,去掉其他无用包。但是Linux下安装RPM时,常常还需要依赖其他包,否则安装会失败,而被依赖的RPM包也常常需要依赖其他包,经常导致多层依赖,手动检查起来非常麻烦。还好CentOS提供了RPM包安装工具yum,我们可以通过这个工具自动获取所有的关联包。

5.1准备工作:

1、  安装yum

2、  准备CentOS 5.1完整版的DVD

yum查找RPM依赖包,首先需要提供全部可用RPM,yum会自动检查RPM包并检查关联信息,以确定所依赖的RPM包,所以首先我们要准备好全部RPM。

5.2加载光盘的RPM

#cd /mnt

#mkdir cdrom

#mount –o loop /dev/cdrom cdrom

加载完成后,/mnt/cdrom/CentOS就是RPM包的存放位置

5.3设置yumRPM搜索信息

#cd /etc/yum.repos.d/

# ls

CentOS-Base.repo  CentOS-Media.repo

该目录有两个文件,第一个文件是从网络读取RPM信息的配置文件,第二个是从本地媒体读取RPM信息的配置文件,因为yum优先从网络读取信息,所以我们必须修改第一个文件的名字,强制yum从本地媒体搜索文件。

#mv CentOS-Base.repo CentOS-Base.repo.bak

然后修改CentOS-Media.repo,把搜索位置指向/mnt/cdrom/,那么yum会自动在/mnt/cdrom/repodata的repomd.xml去寻找信息

#vi CentOS-Media.repo

修改内容如下:

baseurl=file:///mnt/cdrom/

        file:///media/cdrom/

        file:///media/cdrecorder/

gpgcheck=1

enabled=1

#rpm --import /mnt/cdrom/RPM-GPG-KEY-beta

5.4 获取依赖包信息

按照上面步骤配置完成之后,就可以自动获取依赖包了。以下以获取selinux-policy相关依赖包为例

进入RPM存放目录

#cd /mnt/cdrom/CentOS

使用指令尝试安装目标RPM包

#yum install selinux-policy

则yum输出类似如下信息:

Dependencies Resolved

=============================================================

Package                 Arch       Version          Repository        Size

=============================================================

Installing:

selinux-policy          noarch     2.4.6-104.el5    c5-media          365 k

Installing for dependencies:

libsemanage             i386       1.9.1-3.el5      c5-media          135 k

Transaction Summary

==============================================================

Install      2 Package(s)

Update       0 Package(s)

Remove       0 Package(s)

Total download size: 500 k

Is this ok [y/N]:

显然,根据检索结果libsemanage是安装selinux-policy所依赖的RPM包。此时可以选择N则返回命令行,选择y则会自动安装selinux-policy及其所有依赖包。

我们可以通过这种方式获取,我们所需RPM包的全部依赖包,然后将其他无关包全部裁减掉。

定制
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 代款公司如果使用暴力追债怎么办 法院拍卖款分配有疑意怎么办 法院拍卖买到的房子里有户口怎么办 新注册手机邮箱不和电脑同步怎么办 移动4g盒当月流量封顶怎么办 昆仑加油卡密码忘记了怎么办 昆仑银行e盾密码忘记了怎么办 中石化加油卡密码忘记了怎么办 壳牌加油卡密码忘了怎么办 中国石化加油卡密码忘了怎么办 中石化加油卡密码忘了怎么办 中石化加油卡需要密码忘了怎么办 求不熟领导办事送礼不收怎么办 送礼给领导不收好像很生气怎么办 加油卡没有密码加油后锁住怎么办 个人怎么办中石化油卡怎么开公司票 中石化副卡挂失后钱怎么办 中石化的加油卡丢了怎么办 得仕卡过期3年了怎么办 如果在超市买到过期商品怎么办 华润万家买的豆干过期了吃了怎么办 华润万家购物卡过期了怎么办 杜鹃花水浇多了树叶都掉了怎么办 游客行程因天气原因无法进行怎么办 携程旅游途中提前结束行程怎么办 小区附近商家卖东西很吵怎么办? 小区门口卖东西的喇叭太吵怎么办 我老婆是二婚带的小孩怎么办户口 ck手表带了脱不下来怎么办 消毒柜开孔尺寸高度太高了怎么办 苏宁易购买的东西比专卖店贵怎么办 手机打字键盘上没有语音功能怎么办 网贷催收发语音侮辱人怎么办 康力无机房电梯到楼层不关门怎么办 档案工龄少算了工资领开了怎么办 别人骚扰我打电话报警人走了怎么办 因外借医保卡被香港保险拒保怎么办 医保和社保断了一个月怎么办 苹果8呼叫受限请勿越权使用怎么办 药物储存2~8度没冰箱怎么办 利仁分体电饼铛做饼熟的慢怎么办