Linux Kickstart无人值守安装
接上篇《linux kickstart无人值守安装(上)》
3)用于网络启动的内核文件
将
RedHat
安装光盘目录中的
'''p_w_picpaths/pxeboot/{vmlinuz,initrd.img}'''
启动文件复制到某个安装目录,比如:
'''/tftpboot/ '''
:
[root@qiuri Server]# cp /media/rhel5/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /tftpboot/
由于多个客户端可以从一个
PXE
服务器引导,
PXE
引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件。如果客户机的网卡的
MAC
地址为
'''88:99:AA:BB:CC:DD'''
,对应的
IP
地址为
192.168.1.195
,那么客户机首先尝试以
MAC
地址为文件名匹配的配置文件,如果不存在就以
IP
地址来查找。根据上述环境针对这台主机要查找的以一个配置文件就是
/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
。如果该文件不存在,就会根据
IP
地址来查找配置文件了,这个算法更复杂些,
PXE
映像查找会根据
IP
地址
16
进制命名的客户机配置文件。例如:
192.168.1.195
对应的
16
进制的形式为
C0A801C3
。(可以通过
syslinux
软件包提供的
gethostip
命令将
10
进制的
IP
转换为
16
进制)
如果
C0A801C3
文件不存在,就尝试查找
C0A801C
文件,如果
C0A801C
也不存在,那么就尝试
C0A801
文件,依次类推,直到查找
C
文件,如果
C
也不存在的话,那么最后尝试
default
文件。
总体来说,
pxelinux
搜索的文件的顺序是:
/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/pxelinux.cfg/ C0A801C3
/tftpboot/pxelinux.cfg/ C0A801C
/tftpboot/pxelinux.cfg/ C0A801
/tftpboot/pxelinux.cfg/ C0A80
/tftpboot/pxelinux.cfg/ C0A8
/tftpboot/pxelinux.cfg/ C0A
/tftpboot/pxelinux.cfg/ C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default
对于一台需要支持很多安装机器的安装服务器来说,将配置写在与
IP
地址对应的文件里很不灵活。把所有配置都集中在
default
文件中是个不错的主意,可以减轻配置文件维护负担。接下来创建
/tftpboot/pxelinux.cfg/
目录,该目录用于存放客户端的配置文件。
[root@qiuri Server]# mkdir /tftpboot/pxelinux.cfg
将光盘中的
'''isolinux/isolinux.cfg'''
文件复制为
'''/tftpboot/pxelinux.cfg/default'''
[root@qiuri Server]# cp /media/rhel5/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
查看
default
文件内容:
以下内容根据原文件略加修改并做了注释(注:该文件中的空行和以
'''#'''
开头的行都将被忽略)
# 默认启动的是 'label linux' 中标记的启动内核
default linux
# 显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
prompt 1
# 在用户输入之前的超时时间,单位为 1/10 秒。
timeout 60
#显示某个文件的内容,注意文件的路径。默认是在 /tftpboot 目录下。也可以指定位类似 'install/rhel4.4-inst/boot.msg' 这样的,路径+文件名。
display boot.msg
F1 boot.msg #按下 'F1' 这样的键后显示的文件。注意路径。默认是 /tftpboot。注:syslinux 官方网站上说目前只能使用 F1-F10。
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
# 'label' 指定你在 'boot:' 提示符下输入的关键字。
# 比如:
# boot: linux[ENTER]
# 这个会启动 'label linux' 下标记的 kernel 和 initrd.img 文件。
# 这里还定义了其它几个关键字:
# boot: text
# boot: ks
# kernel 参数指定要启动的内核。同样要注意路径,默认是 /tftpboot 目录。
# append 指定追加给内核的参数,能够在 gurb 里使用的追加给内核的参数,在这里也
都可以使用。
# 使用 kickstart 安装。
# 可以在 ks 参数后直接指定 kickstart 文件的位置。
label linux
kernel vmlinuz
append ks=nfs:192.168.1.1:/mnt/install/ks.cfg initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks initrd=initrd.img
… …
3、安装配置NFS服务器
安装介质存储在服务器上的一个目录中,可以使用各种网络协议访问它,比如
HTTP
,
FTP
,和
NFS
。也就是我们前面提到的
OS Server
。这里使用
NFS
服务来提供安装介质,只需要将系统光盘内容拷贝放到共享目录下即可。
创建共享目录,并将光盘内容拷贝到共享目录中:
[root@qiuri Server]#mkdir /mnt/install
[root@qiuri Server]#cp /media/rhel5/* /mnt/install
安装
NFS
并将共享目录发布出去
[root@qiuri Server]# vi /etc/exports
/mnt/install *(ro,sync)
~
"/etc/exports" 1L, 25C written
重启服务使配置生效。
[root@qiuri Server]# service portmap restart
停止 portmap: [确定]
启动 portmap: [确定]
[root@qiuri Server]# service nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS 守护进程: [确定]
启动 NFS mountd: [确定]
检查目录
/mnt/install
是否被正确共享:
[root@qiuri Server]# shoumount –e locahost
Export list for localhost:
/mnt/install *
[root@qiuri Server]# chkconfig --level 35 nfs on
4、配置Kickstart安装
通常,我们在安装操作系统的过程需要大量的人机交互过程,减少交互过程,为了提高安装效率
Red Hat Linux
开始支持一个称为
kickstart
的功能。使用这种方法,只需事先定义好一个
Kickstart
自动应答配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。
我们可以通过多种方法生成
Kickstart
配置文件,无论使用哪种方法无非就是创建一个应答文件,当你安装好一台
Red Hat Linux
机器,
Red Hat Linux
安装程序都会创建一个
kickstart
配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的
kickstart
配置文件来生成你自己的
kickstart
配置文件。
该文件位于
/root/anaconda-ks.cfg
。
这里我直接使用该文件,拷贝本文件到
/mnt/install
下。
[root@qiuri Server]# cp /root/anaconda-ks.cfg /mnt/install/ks.cfg
[root@qiuri Server]# chmod a+r /mnt/install/ks.cfg
# Kickstart file automatically generated by anaconda.
install
nfs --server=192.168.1.1 --dir=/mnt/install #这个选项告诉安装程序:到服务器192.168.1.1的NFS共享目录 /mnt/install下寻找安装介质
key 2515dd4e215225dd
lang zh_CN.UTF-8
keyboard us
xconfig --startxonboot
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$3xvzZgwz$1jYjrh/XtXLblT00Mn3Ys0
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
… …
clearpart --all --drives=sda --initlabel
part / --fstype ext3 --size=130000
part swap --fstype swap --size=2048
part /backup --fstype ext3 --size=100 --grow
%packages
@office
@admin-tools
… …
emacs
gcc43-c++
libgfortran43
5、配置客户端PXE引导安装
最后设置客户端
BIOS
选择从网卡启动。具体方法因
BIOS
版本不同而异。
网卡中的
PXE
代码会联系
DHCP
服务器来获取
IP
地址以及启动镜像,然后启动镜像被载入并运行。
安装完成后,安装程序会提示你重新启动机器。重新启动机器时切记要在
BIOS
里改成从硬盘启动。如果仍然从光盘启动机器,又会重复前面的自动安装步骤。