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-m 

定制CentOS (Redhat AS 5.1)安装盘的更多相关文章

  1. 如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)

    今天聊的这个话题属于老生常谈,这几年时常有读者来询问(现在有越来越多的电脑是无光驱的).再加上俺后面要扫盲一些“特殊的 Linux 发行版”,到时候肯定又要涉及到制作可引导U盘的事情.所以,今天先单独 ...

  2. 定制centos安装iso

    参考 https://gist.github.com/pauljeff/4b9ad551cb6c35870d7c https://www.redhat.com/archives/kickstart-l ...

  3. 初涉定制linux系统之——rpm相关安装包的准备

    在上一篇博客http://www.cnblogs.com/dengtr/p/5543820.html#3634582 中介绍了如何定制Centos系统镜像,但其中有个问题,就是服务所依赖的安装包不在原 ...

  4. 在CentOS-6.3环境下,利用grub工具手工制作Linux U盘安装盘

    注:此文是本人亲自操作实现后写的心得,同时也是对自己操作的记录. 制作的全过程概况 准备工作: U盘重新分区: 格式化U盘: 安装grub文件到U盘特定的分区: 拷贝镜像中的相关文件到U盘: 安装时设 ...

  5. Xrdp - 通过Windows的RDP连接Linux远程桌面(Ubuntu/CentOS/Redhat 7)(转载)

            您多久访问一次Linux桌面? 您使用什么工具来访问远程桌面? Xrdp是一个开源工具,允许用户通过Windows RDP访问Linux远程桌面. 除了Windows RDP之外,xr ...

  6. Xrdp - 通过Windows的RDP连接Linux远程桌面(Ubuntu/CentOS/Redhat 7)

    Xrdp - 通过Windows的RDP连接Linux远程桌面(Ubuntu/CentOS/Redhat 7) 您多久访问一次Linux桌面? 您使用什么工具来访问远程桌面? Xrdp是一个开源工具, ...

  7. 制作Mac安装盘U盘

    1. 下载对应版本的mac安装文件, 复制到mac上, 解压后应该是一个类似于 Install OS X [version name].app 的目录, 复制到/Applications 2. 将U盘 ...

  8. CentOS / Redhat : Configure CentOS as a Software Router with two interfaces

    CentOS / Redhat : Configure CentOS as a Software Router with two interfaces   Linux can be easily co ...

  9. linux下制作win7安装盘(mint、ubuntu、debian)

    今天替同事装系统.因为现在的debian系系统都可以直接用dd拷贝iso到u盘的方法进行安装,所以,想当然的用dd来制作windows安装盘.没反应!所以有了下面的方法. 1. 将u盘格式化为ntfs ...

随机推荐

  1. Java中的访问权限

    Java中有四种访问权限,从大到小依次是:public –> protected –> default(friendly) –> private. 简单说明下: public 作用域 ...

  2. 上传图片的回调函数,callback作为一个函数针对回调函数

    Tool.ImageUpload = function (selector, callback) { /// <summary>图片上传</summary> /// <p ...

  3. [开源应用]利用HTTPHandler+resumableJs+HTML5实现拖拽上传[大]文件

    前言: 大文件传输一直是技术上的一大难点.文件过大时,一些性提交所有的内容进内存是不现实的.大文件带来问题还有是否支持断点传输和多文件同时传输. 本文以resumableJs为例,介绍了如何在ASP. ...

  4. Android实现入门界面布局

    Android实现入门界面布局 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 首先是常量的定义,安卓中固定字符串应该定义在常量中. stri ...

  5. Java类初始化顺序问题

    main -> (静态变量.静态代码块) ->main函数体 -> (类变量.初始化块.实例化引用的类) -> 构造函数 初始化块与实例化引用的类 的调用顺序 按程序的编写上下 ...

  6. P1179: [Apio2009]Atm

    缩点+spfa最短路,因为最终不可能有环,所以直接spfa. ; type node=record f,t:longint; end; var n,m,s,i,j,ans,cnt,num,u,x,dg ...

  7. 解释型语言和编译型语言如何交互?以lua和c为例

    转自http://my.oschina.net/mayqlzu/blog/113528 问题: 最近lua很火,因为<愤怒的小鸟>使用了lua,ios上有lua解释器?它是怎么嵌入大ios ...

  8. Gentoo 网络接口配置文件说明

    裁剪的Gentoo系统,仅供公司内部使用! [作为备份档案] 网络接口配置:/etc/conf.d/net #设置静态IPconfig_eth0="192.168.1.x/24" ...

  9. 【Subsets II】cpp

    题目: Given a collection of integers that might contain duplicates, nums, return all possible subsets. ...

  10. Mysql 慢查询设置

    Mysql慢查询设置 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”. === ...