很多时候,我们希望能自动安装RedHat Linux , 例如计算机教室、Linux集群系统,一次得安装多台Linux
的需求,如果一台一台利用光盘慢慢安装,岂不费时费力。为了满足这种需求,Red Hat 发展出kickstart 的安装方式。藉由使用
kickstart,系统管理员只需建立一个自动安装配置文件(ks.cfg),其中含有安装Red Hat Linux
所需回答的所有设置值,如此一来系统便会根据这个文件来完成安装的工作。
简介
ks.cfg 文件可以存放在某台网络上的服务器上,以让欲安装Linux 的计算机来读取它。而且通常我们也会将RedHat
光盘的内容复制至这台服务器,并将内容共享出来,如此利用Kickstar
网络安装的方式便可很快速地安装多台Linux,这系统管理员带来很大的方便。
Instatllation Server
Kickstart 的安装,安装的来源可以是本机的光驱、硬盘或透过 NFS,FTP 或 HTTP
来进行安装,利用NFS、FTP、HTTP 网络安装的方式是较有效率的,所以我们首先得先配置一台Installation Server,就是将4
片光盘的内容复制至Server 上并利用NFS、FTP 或HTTP 将其共享出来。通常Installation Server
会同时担任DHCP Server。所以在实作kickstart 自动安装之前我们得先配置这台Installation server。
实战演练一:配置Installation Server
测试环境:
RedHat Enterprise ES 3.0 版 (ip 设置为192.168.0.254)
必须安装以下套件:
nfs-utils*.rpm
vsftpd*.rpm
httpd*.rpm
dhcp*.rpm
1.将RHEL ES 3.0 安装所需RPM 全部copy 至Server 上
放入第1~4片CD 执行以下命令
#mount /mnt/cdrom
#cp –af /mnt/cdrom/RedHat /var/ftp/pub
重复将4 片内容全部copy 至Installation Server 上的/var/ftp/pub
# ln –s /var/ftp/pub /var/www/html/pub
将 /var/www/html/pub 指向 /var/ftp/pub
2.利用各种方式将安装文件共享出来
NFS 法
#vi /etc/exports 加入此行
/var/ftp/ftp
#service nfs start
FTP 法
#service vsftpd start
HTTP 法
# service httpd start
3.建立DHCP server
#cp /usr/share/doc/dhcp-3.0pl2/dhcpd.conf.sample /etc/dhcpd.conf
# more /etc/dhcpd.conf 内容如下暂时不用修改
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 192.168.1.1;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don´t change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.0.128 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
#service dhcpd restart
kickstart 自动安装配置文件 (ks.cfg)
Kickstart 自动安装配置文件ks.cfg 是一个普通的文本文件,其中含有安装Linux
所需的各项设置,例如语系、分区的配置、root 的密码、等各项安装时所需要的设置值。Red Hat Linux
安装程序也根据您在安装过程中所选择的选项建立一个ks.cfg 的参考范例, 该文件会存放在
/root/anaconda-ks.cfg。下面是笔者安装Installation Server
时系统所产生的anaconda-ks.cfg,ip
为「192.168.0.254」,主机名称为「server.example.com」,套件选择为「全部安装」。
# Kickstart file automatically generated by anaconda.
install
lang en_US.UTF-8
langsupport --default en_US.UTF-8 zh_TW.Big5 en_US.UTF-8
keyboard us
mouse genericwheelps/2 --device psaux
xconfig --card "ATI Mach64 3D Rage IIC" --videoram 4096 --hsync 31-60
--vsync 56-75 --resolution 1024x768 --depth 24 --startxonboot
--defaultdesktop gnome
network --device eth0 --bootproto static --ip 192.168.0.254 --netmask
255.255.255.0 --gateway 192.168.0.254 --nameserver 192.168.0.254
--hostname server.example.com
rootpw --iscrypted $1$HBU/aBDd$/LetXZ5O.Em6gkA4bl5ZS.
firewall --disabled
authconfig --enableshadow --enablemd5
timezone Asia/Taipei
bootloader --location=mbr
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart –all
#part /boot --fstype ext3 --onpart hda1
#part / --fstype ext3 --onpart hda2
#part swap --onpart hda3
#part /home --fstype ext3 --onpart hda5
%packages
@ everything
kernel
grub
%post
ks.cfg 的语法稍后再做介绍,我们可以修改 /root/anaconda-ks.cfg 来产生符合需求的ks.cfg。不过可不是一件容易的事,笔者介绍另一个图形工具「ksconfig」,利用它来产生ks.cfg
ksconfig 图形工具
激活Kickstart 设置程序,请选择主选单->系统工具->Kickstart。或直接在终端窗口键入「ksconfig」,Kickstart 设置程序窗口画面如图1。
图1: Kickstart 基本信息设置画面
● 基本信息设置
Kickstart 右边第一个设置项目为「基本信息设置」。而在左边的窗口是列出其它信息的画面选项。点选在左边的项目相对应的设置画面将会展开在右边的Kickstart 设置程序窗口。基本设置字段有:
语言:点选右边的下拉式选单中的系统默认语言。
键盘:在右边的下拉式选单中选取用于系统上的键盘类型。
鼠标:在右边的下拉式选单中选取用于系统上的鼠标形式。假如你的鼠标是两键式鼠标并且想仿真三键式鼠标,请勾选「仿真三键式鼠标」来摸拟。
时区:右边的下拉式选单中选取系统所在时区的时间。
root 密码:输入系统管理者root 密码。请注意默认值是以加密形式储存密码。
语系支持:如果你想安装额外的语系在你的系统之上可勾选语系清单。
安装完成后重新启动:默认是安装完成后重新启动。
在文字模式执行安装:若移除此勾选项为系统默认的图型模式安装。
在互动模式执行安装:假如你想使用交互式模式来安装,请勾选此项。这个方法可以让你及时了解你所勾选的安装画面。你需要点选下一步继续下一个画面。
安装方法
图2:ksconfig 「安装方式」画面
在安装画面中,你可以选取将要执行的安装种类。你可以选择一个全新安装或者点选单选按扭来选取升级。
你有几种安装媒体可做选择。系统默认是选取CD-ROM。其它的选项尚有:
NFS:假如你选择此种方式,将会有两个额外的字段显示出要求你输入NFS服务器名称及使用NFS 服务器的目录位置。配合Installation Server 这里应填入,NFS 服务器「192.168.0.254」,NFS 目录「/var/ftp/pub」
FTP:假如你选择此种方式,将会有四个额外的字段显示出来。你必需输入FTP 服务器名称(192.168.0.254)和使用FTP 服务器的目录位置(/pub)。你也有机会去提供一组FTP 使用者名称和密码按照所点选的对话框并输入适合的信息。
HTTP:假如你选择此种方式,将会有两个额外的字段显示出需要你输入HTTP 服务器名称(192.168.0.254)和使用HTTP 服务器的所在目录(/pub)。
硬盘:假如你选择此种方式,将会有两个额外的字段显示出要求你输入硬盘分区及使用硬盘目录的位置。
「开机管理程序选项」及「分区信息」就根据读者自己的需求去设置,「网络信息设置部份」记得设置成DHCP,这样才可让不同的机器均可使用这个配置文件。
图3:ksconfig 「网络信息」画面
「选取套件」这个部份,你能选取你想要安装的套件到你的系统上。请点选套件名称前的复选框。默认是安装“自动解决相依性问题”,假如你有额外需求可
安装额外套件。如果勾选此项,系统安装套件时如遇到相依性问题并不会自动安装跟此套件相依的套件,如此一来可能造成此套件无法正常运作,所有最好勾选「自
动解决相依性」。
图4:「选取套件」画面
假如你想在安装结束之后执行命令在你的系统上,你可以输入命令在画面中指定的区域内。例如笔者希望安装结束后设置 /etc/resolv.conf ,所以在此区域输入:
echo “nameserver 192.168.0.254” >> /etc/resolv.conf
图5:后续安装程序代码画面
最后选择「文件」-> 「储存文件」默认文件名便是ks.cfg。笔者所产生的ks.cfg内容如下:
#Generated by Kickstart Configurator
#System language
lang zh_TW.Big5
#Language modules to install
langsupport en_US --default=zh_TW.Big5
#System keyboard
keyboard us
#System mouse
mouse generic3ps/2
#Sytem timezone
timezone Asia/Taipei
#Root password
rootpw --iscrypted $1$f97d093B$OY9uvHS/HvLNlC4m8xeTB1
#Reboot after installation
reboot
#Use text mode install
text
#Install Red Hat Linux instead of upgrade
install
#Use NFS installation Media
nfs --server=192.168.0.254 --dir=/var/ftp/pub
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype ext3 --size 256
part / --fstype ext3 --size 6000
part swap --size 512
#System authorization infomation
auth --useshadow --enablemd5
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled
#Do not configure XWindows
skipx
#Package install information
%packages --resolvedeps
@ X Window System
@ GNOME Desktop Environment
@ Editors
@ Server Configuration Tools
@ Web Server
@ Mail Server
@ Windows File Server
@ DNS Name Server
@ FTP Server
@ Network Servers
%post
echo "nameserver 192.168.0.254" >> /etc/resolv.conf
kickstart 语法
接下来探讨ks.cfg 的相关参数,这些参数笔者将依上述ks,cfg 出现的先后顺序来讨论,有些参数并不是一定要设置。完整的kickstart 参数意义可参考下列网址。
ks.cfg 文件由三个部份皆组成:
command 区段—此部份包含了必要安装选项
packages 区段—列出欲安装套件
%pre and %post 区段
command 区段■lang(必要):安装时所使用的语言
例如:安装过程中选用中文语言,lang zh_TW.Big5
■langsupport (必要):指定系统使用的语言。假如你安装一至多国语系,你必需使用默认选项去指定默认语言。语法为:
例如:langsupport --default en_US.UTF-8 zh_TW.Big5 en_US.UTF-8
■键盘(必要):设置系统键盘的种类。语法为:keyboard us
■鼠标(必要):设置鼠标。语法为:
mouse- -device=ttvS0(鼠标识别装置位置)- - emulthree(仿真三个按键)generics/2(定义鼠标种类)
■timezone(必要) 设置系统时区。
timezone Asia/Taipei (指定你的时区位置)
■设置系统键盘的种类。语法为:keyboard us
■鼠标(必要):设置鼠标。语法为:
mouse- -device=ttvS0(鼠标识别装置位置)- - emulthree(仿真三个按键)generics/2(定义鼠标种类)
■xconfig(非必要):在安装过程中手动设置X,假如你不想安装X,你不应该使用此选项。命令的格式为:
■xconfig- - card(显示卡类别)- - videoram(指定显示卡记忆容量)- - hsync(指定屏幕水平扫描频率)- -
vsync(指定屏幕垂直扫描频率)- - resolution(指定屏幕分辨率) - - depth(指定X 窗口系统彩度)- -
startxonboot (假如你想在系统开机时激活X 时使用)- - defaultdesktop gnome(或kde)(指定默认桌面)。
■install (非必要):告知系统安装一个新的安装。这是默认模式,因此一个新的安装不需再选用这个命令。接着您必需指定安装方式,可以是cdrom、harddrive、nfs 或url。
■cdrom
■harddrive—partition=your partition –dir=/your directory path
-- partition = 来源分区
-- dir = Red Hat 子目录
(请确定你所键入来源分区和子目录信息的正确性)。
■nfs – server—your server –dir=/your directory path
-- server = 指定安装来源服务器
-- dir = Red Hat 子目录
(请确定你所键入来源分区和子目录信息的正确性)。
■url – url server/dir
使用HTTP 进行安装
■url – url username:password@your server/dir
使用FTP 进行安装
■rootpw (必要) 设置一组系统root 密码。
rootpw - - iscrypted (表示密码已被加密) password
■firewall(非必要) 提供安全性等级来保护系统。
■authconfig (必要) 设置系统认证选项。命令格式:
- -enablemd5 (使用md5 编码使用者密码)
- -enableshadow (使用shadow 密码)
■bootloader (必要) 指定开机管理程序的位置和传递任何kernel 选项。默认开机管理程序为GRUB,但是你也能选择LILO 开机管理程序来取代GRUB。命令格式为:
- - location=mbr (指定开机管理程序的位置)
- -append=(指定要传递的核心参数)。
- -useLilo (使用LILO 为开机管理程序)。
■clearpart (非必要)告知系统移除系统上的分区。你可以使用clearpart 移除Linux 分区以及移除所有的分区,或者你也能指定你想要移除分区的磁碟机。命令格式为:
-- linux (移除所有Linux 分区)
- - all (移除系统上所有的分区)
-- drives = (指定要移除分区的磁盘驱动器)
■Part (必要) 安装时是必要的,升级时请忽略。使用这个命令你能为系统建立分区。
package 区段安装一个新的系统,你必需选择你想安装的套件。选择欲安装的套件是使用%packages 命令。套件可分为单一套件或者是套件组。你能在第一片Red Hat安装光盘下的/base/comps.xml 寻找群组套件清单。通常,只需列出套件组不需要列出单一套件。注意!默认之下core 和base 群组是被选取的,所以也不需要在 %packages 这个区段下去指定它们。
如同利用ksconfig 所产生出来的ks.cfg %packages 区段中套件组是一行指定一个,以@节号开头,后面加上一格空白接下来是完整群组名称就如同comps.xml 文件所指定。如果个别单一套件并列出该单一套件名,不加上额外的字符。
套件组是一行指定一个,以@节号开头,后面加上一格空白接下来是完整群组名称就如同comps.xml 文件所指定。如果是个别单一套件则列出该单一套件名,前面不需加上额外的字符。
%package 有三个选项可以设置:
◆- -resolvedeps
决解自动相依性问题及安装套件。建意选项,在安装中由于没使用自动决解相依性,若有相依性问题可能会造成中止安装并且做提示响应。
◆- -ignoredeps
你选择安装套某套件但乎略它的相依性,可能造成此套件无法运作,尤其是此套件需要其它相依的套件。
◆—ignoremissing
标示忽视安装遗失套件及群组并且也不做提示响应。
%pre and %post 区段%pre 区段内可填入在开始安装操作系统需要先执行的工作。%post 命令传递到系统上执行必须在Kickstart 安装完成后。能有效的执行命令去安装其它的软件或者设置系统信息。
实战演练二:利用ks.cfg 自动安装系统
Floppy + RHEL CD1
1. 将之前利用ksconfig 所产生的ks.cfg copy 至磁盘上
#mount /mnt/cdrom
#cp ks.cfg /mnt/floppy
#umount /mnt/floppy
2. 至欲安装Linux 的机器上,放入磁盘并置入RHEL ES 第一片光盘,然后利用光盘开机,出现「boot:」提示符号时,键入:
boot: linux ks=floppy
告诉安装程序ks.cfg 位于磁盘上,此时安装程序便会根据ks.cfg 的内容自动安装Linux。
kickstart CD
经过上述的练习,读者一定会觉得不甚方便,除了需要一片磁盘外还得放入RHEL 第一张光盘。难道没有办法整合至一张光盘上吗?
制作这整合光盘片的操作步骤如下:
1.放入Red Hat Linux 第一片安装光盘片到光驱中。在命令提示列下输入挂载光驱命令:
# mount /mnt/cdrom
2.从第一片安装光盘片中复制 isolinux 目录到你的硬盘上。你可以先行建立暂存目录来存放islolinux 的目录。笔者建立了一个 /root/tmp。
#mkdir /root/tmp
#cp -r /mnt/cdrom/isolinux/ /root/tmp/
3.将原先所产生的ks.cfg 文件复制到此张开机光盘片上,请将ks.cfg 文件复制到您先前在本机硬盘上所建立的暂存目录 /isolinux 之下。命令为:
#cp /root/ks.cfg /root/tmp/isolinux/
修改开机光盘的自动执行文件isolinux.cfg 指定ks.cfg 的所在。
# vi /root/tmp/isolinux/isolinux.cfg
将前三行中的第一行default linux 改为default linux ks=cdrom,然后删除prompt 及timeout。
default linux
prompt 1
timeout 600
改为
default linux ks=cdrom
4.使用这个命令来建立ISO 映像文件:
# cd /root/tmp
# mkisofs -o ks.iso -b isolinux.bin -c boot.cat
-no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T isolinux/
(此命令应该输入在同一行)
5.最后一步骤是将您所建立的映像文件ks.iso 用烧录软件以「Burn Image」烧录映像文件的方式制作成光盘。
6.将这张整合的光盘放入机器中,由光盘开机,安装程序便会自动安装操作系统。
后记
如果把kickstart 的技术加上PXE 技术,那么就连光盘都不用制作。可直接利用网络开机就可自动安装操作系统。在实务上,kickstart
的运用不仅止于仅止于计算机教室,像Linux Cluster
丛集系统,一次需要上百台机器,其实笔者看过的解决方案其实骨子都离不开kickstart 的原理,所以其实kickstart
的应用是蛮多样化,其它的应用有待各位读者去发挥!