Linux自动安装光盘


安装linux的时候需要人机交互,如果一次安装几台那就要耗费很多精力,莫不如把每次要做的设置写在配置文件里,一键安装,省时省力。

这里我们只介绍用光盘进行自动安装。
无人职守安装我们首先想到的就是kickstart软件,那么什么是Kickstart?
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
ks.cfg的获取
1)可以以图形化的形式获取该文件,在系统执行system-config-kickstart 按照提示一步步来。
2)每次安装完系统之后都会在root下生成名为anaconda-ks.cfg的文件,它会自动记录,你安装过程中所使用的选项参数,为了保险起见,可以先在在虚拟机上自己定制安装一次,然后把该文件修改成ks.cfg
最基本的ks.cfg文件由Command section(命令部分)和%packages section(软件安装部份)两部分组成,Command部分在前,%Packages部分在后.
ks.cfg选项具体意义如下所示:

#告知安装程序,这是一次全新安装,而不是升级
install
#告知安装程序,这是一个网络安装,使用FTP来提供安装所需的资源
#我这边是使用匿名方式,还可以使用用户名/密码
#url --url ftp://:@/
url --url="ftp://192.168.80.3/pub"
#使用文本模式安装
text
#默认语言是英语
lang en_US.UTF-8
#使用美式键盘
keyboard us
#清空mbr
zerombr
#指定bootloader的安装位置及参数
#--location 指定boot record位置,我们这边不做多系统,因此直接写在mbr里面
#--driveorder 指定第一开机装置
#--append 指定内核参数,这边我用的默认值,没有做更改
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#设置安装完成后的主机网络,关键字是 network
#这边参数都比较常见,我就不一个个解释了
network --bootproto=static --ip=192.168.80.8 --netmask=255.255.255.0 --gateway=192.168.80.2 --hostname=CentOS6 --noipv6
#设置时区
#--utc 设定使用UTC
timezone --utc Asia/Shanghai
#设置密码加密方式为sha512 启用shadow文件
auth --useshadow --passalgo=sha512
#设定root的密码
#--iscrypted 如果root密码是已加密过,就必须使用这个参数,如何获得这个加密后的密码,详见本文附1
rootpw --iscrypted $6$qQaMyYyZMjz/tpqH$cjMWaGj8xpZK4jplrbUCnXD/8jesH7WTSBAefkL6HYcgFmKFUd/pbWtC75Q62d3PI8IYclNulf750Q7C7iYs.1
#清空所有分区
#--all 从系统中清除所有分区
#--initlable 初始化磁盘标签,例如我的虚拟机是x86架构的,通常是初始化为MSDOS
clearpart --all --initlabel
#新建磁盘分区
#新建/boot分区
part /boot --fstype=ext4 --size=500
#新建3个pv,每个pv大小为10G
part pv.008002 --size=10240
part pv.008003 --size=10240
part pv.008005 --size=10240
#新建一个VG,名为vg_root 包含了刚才创建的3个PV
volgroup vg_root --pesize=4096 pv.008002 pv.008003 pv.008005
#创建LV
logvol /home --fstype=ext4 --name=lv_home --vgname=vg_root --size=2048
logvol /opt --fstype=ext4 --name=lv_opt --vgname=vg_root --size=2048
logvol / --fstype=ext4 --name=lv_root --vgname=vg_root --size=6116
logvol /tmp --fstype=ext4 --name=lv_tmp --vgname=vg_root --size=4096
logvol /var --fstype=ext4 --name=lv_var --vgname=vg_root --size=4096
logvol swap --name=lv_swap --vgname=vg_root --size=2048
#禁止firstboot,firstboot就是我们使用图形化安装完系统,重启后有一个初始设置
firstboot --disable
#禁止selinux
selinux --disabled
#禁止防火墙
firewall --disabled
#设定安装过程中的日志级别
logging --level=info
#设定安装完成后关机
poweroff
#安装包我选择的是Basic模式,添加了中文支持
%packages
@base
#中文支持
@chinese-support
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
%end

这里建议不要无脑安装,一定要看这些参数的意思。然后修改自己的ks.cfg。
ks.cfg文件生成之后要把该文件放到iso文件里面,只要拖拽到iso文件里面的根目录就行。

下面要配置isolinux.cfg文件,目的是在安装的时候能找到ks.cfg
文件的位置在ISO文件里面isolinux文件夹下,修改该文件。

label linux
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ks.cfg ksdevice=eth0

修改后不要忘记替换到ISO里面。
到现在ISO文件就制作好了,很简单。
可以用虚拟机进行测试,如果ISO没有问题一般都会成功。

这种方法只适用于少量服务器或者网络条件有限制的情况,如果有大量服务器需要安装系统的话可以用PXE+kickstart从网络安装。

相关内容