码迷,mamicode.com
首页 > 其他好文 > 详细

使用kickstart自动安装CentOS 6.6系统

时间:2015-04-21 02:04:31      阅读:574      评论:0      收藏:0      [点我收藏+]

标签:linux 自动安装

1. anaconda

    centos系统安装是通过anaconda程序完成的。那anaconda是如何启动的呢?anaconda如果是运行在硬件上,bootloader直接将其加载就完事了。但如果是这样那anaconda就要具备内核的所有功能。所以anaconda只能是运行在操作系统上,但是此时操作系统还没有安装,那它怎么运行呢?我们一般使用光盘安装系统,光盘可以模拟成磁盘,里面也有0磁道0扇区以及bootloader. bootloader用于加载位于光盘某个目录下的已经编译好的内核,再加载ramdisk,就可以运行一个在光盘上的操作系统。系统会启动init,init便会启动anaconda了。所以说anaconda的确是运行在linux内核之上的。


2. anaconda安装

    anaconda支持图形和文本两种模式。默认启动图形安装,但前提是内存够用。目测内存需要大于512M. anaconda把安装过程分为三个阶段:

  • 安装前配置阶段:

    • 需要设定:键盘类型、语言、时区、管理员密码、磁盘及其分区方式和要安装的程序包

  • 安装阶段:

    • 需要进行:在目标磁盘创建分区、执行格式化;将选定的程序包安装至目标磁盘和生成bootloader

  • 第一次运行:

    • 会完成:配置iptables,selinux,core dump

      • core dump:核心转储,万一系统崩溃,它会将崩溃那一刻内存中的数据以内存映像的格式存到硬盘上,以便于程序员从中定位系统崩溃的问题所在,但如果不是程序员的话,这个功能也就没什么用了。

    系统安装的基本分区:根分区和交换分区。但如果根分区放置于逻辑卷,由于grub无法驱动并访问逻辑卷,就必须将/boot单独分区,并使用基本磁盘分区。还有一点需要注意的是,如果把所有的数据都放在根分区上,如果将来系统崩溃或者根崩溃需要重装系统了,就需要格式化根分区了。那么所有放在上面的数据也都会一并销毁。有鉴于此,最好将/usr,/var日志文件,/home(里面的用户数据),/usr/local(里面安装的程序),等等,最好将其单独分区。


3. anaconda配置文件

    anaconda支持通过读取配置文件的内容来完成安装过程的配置:kickstart. 系统在安装完成后,会在管理员的家目录生成一个anaconda-ks.cfg的配置文件。这个文件保存的是该系统安装过程中选择的配置。

[root ~]# vim anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
 
#version=DEVEL
install # 这是安装而非升级
url --url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/ # url用来指明程序包的获取路径,光盘安装会显示cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6 # 启动网络和网卡
rootpw  --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0
# Reboot after installation
reboot # 系统安装完成后重启
firewall --disabled # 禁用防火墙,开始学习linux时最好禁用防火墙,不然出现一些莫名其妙的问题,还死活找不到原因
authconfig --useshadow  --passalgo=sha512 # 默认指明去shadow中完成认证,加密算法为sha512
selinux --disabled # 这是2.6内核新加入的安全机制,开始学习时最好也是禁用,同防火墙
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" # 安装mbr,磁盘顺序,后面可以跟很多的磁盘,但这里只有一块。--append:附加的信息作为内核引导的参数
# 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
zerombr # 清除磁盘mbr信息,使用后不再提示初始化磁盘
clearpart --all # 清除目标磁盘上的所有分区
 
part /boot --fstype=ext4 --size=200 # part指明一个分区、/boot挂载点、--fstype文件类型
part pv.008002 --size=61440 # 指明一个物理卷PV,后面的数字唯一标识此pv的,随意,只要不和其他pv相同即可
 
volgroup vg0 --pesize=8192 pv.008002 # 创建卷组、卷组名字、pe大小、从哪个物理卷中创建
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 # 逻辑卷
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
 
repo --name="CentOS"  --baseurl=http://172.16.0.1/OOXX # 额外要使用的yum仓库

# ----------------------------------以上为配置段----------------------------------
%packages
@Base
@Core
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
ibus-table-cangjie
ibus-table-erbi
ibus-table-wubi
lftp
tree
 
%end
# ----------------------------------以上为程序包段,@为包组----------------------------------
%post
echo -e ‘Mage Education Learning Services\nhttp://www.magedu.com\n‘ >> /etc/issue
 
sed -i ‘1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g‘ /etc/inittab
[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh
 
cat >> /root/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9w== root@server.magelinux.com
EOF
 
# Enable funcd 
sed -i ‘s@certmaster =.*@certmaster = 172.16.0.1@g‘ /etc/certmaster/minion.conf
/sbin/chkconfig funcd off
 
# Set the hostname
ClientName=`ifconfig eth0 | awk ‘/inet addr:/{print $2}‘ | awk -F. ‘{print $NF}‘`
sed -i "s@HOSTNAME=.*@HOSTNAME=client$ClientName.magelinux.com@g" /etc/sysconfig/networks
 
# set puppet agent
sed -i ‘/\[main\]/a server=server.magelinux.com‘ /etc/puppet/puppet.conf
/sbin/chkconfig puppet off
 
# set hosts
echo ‘172.16.0.1  server.magelinux.com server‘ >> /etc/hosts
 
# yum repo
 
%end
# ----------------------------------以上为脚本段----------------------------------
# -package表示在包组中不安装该包。但如果有其他程序包依赖此包的话,还是会安装
# 脚本段分为%pre引导段和%post引导段。%pre为安装前脚本,安装过程开始之前要执行的脚本。注意:此时的Linux系统环境为微缩版环境,因此脚本应该较简单;而%post则为安装后脚本,安装过程完成之后要执行的脚本。注意:脚本执行环境为完整的已经安装完成的系统。

    anaconda在centos5,6,7上的版本都不相同,导致kickstart配置信息,并不一定完全兼容

    bootloader既可以放在mbr中,也可以放在安装操作系统的分区的第一个磁盘块中,但启动时,还是需要mbr中的bootloader进行引导。所以只是个备用。


4. 配置kickstart的方式

    1) 手动编辑配置文件,但可能出现语法错误

    2) system-config-kickstart,GUI工具。需要在图形界面下启动ssh -x root@  程序包名同命令名,但是该工具不支持创建卷组和逻辑卷

  •  安装过程如何获取并使用kickstart文件?

    • 放置于安装程序能够获取到的位置。如网络文件服务器和放置于光盘镜像。如果放置在网络服务器上,安装程序得支持网络功能,且能够访问到网络文件服务器;但是光盘是只读的如何将kickstart放进去呢?使用使用光盘启动后,在安装界面下敲ESC键,就会出现boot提示符。此为安装引导选项,可以在后面输入很多选项


  • boot提示符常用选项:

        linux:安装linux,默认安装

        text:文本安装

 

  • 与网络相关的引导选项:

        ip=IPADDR

        netmask=MASK

        gateway=GW

        dns=DNS_SERVER_IP

        ifname=NAME:MAC_ADDR

 

  • 指明获取 kickstart 文件的路径:ks=

        DVD drive ks=cdrom:/path/to/kickstart_file

        HTTP Server ks=http://server_ip:port/path/to/kickstart_file

        HTTPS Server ks=https://server_ip:port/path/to/kickstart_file

        FTP Server ks=ftp://serverip:port/path/to/kickstart_file

        NFS Server ks=nfs:server_ip:/path/to/kickstart_file


5. kickstart安装系统过程

    5.1. 挂载安装盘并取出isolinux目录,因为此目录才是引导安装用的

[root ~]# mount -r /dev/cdrom /media/
[root media]# cp -r /media/isolinux/ /tmp/cdrom/

    5.2. 查看isolinux目录下的文件信息制作光盘镜像

[root cdrom]# cd /tmp/cdrom/isolinux/
[root cdrom]# cp /root/anaconda-ks.cfg ks.cfg # 复制配置文件并改名
[root isolinux]# ll
total 38572
-r--r--r-- 1 root root     2048 Apr 16 11:24 boot.cat
-r--r--r-- 1 root root       84 Apr 16 11:24 boot.msg
-r--r--r-- 1 root root      334 Apr 16 11:24 grub.conf
-r--r--r-- 1 root root 34815427 Apr 16 11:24 initrd.img
-r--r--r-- 1 root root    24576 Apr 16 11:24 isolinux.bin # 引导程序
-r--r--r-- 1 root root      936 Apr 16 11:24 isolinux.cfg
-r--r--r-- 1 root root   165080 Apr 16 11:24 memtest
-r--r--r-- 1 root root   151230 Apr 16 11:24 splash.jpg
-r--r--r-- 1 root root     2215 Apr 16 11:24 TRANS.TBL
-r--r--r-- 1 root root   163728 Apr 16 11:24 vesamenu.c32 # 图形界面是由该文件提供
-r-xr-xr-x 1 root root  4152336 Apr 16 11:24 vmlinuz
# boot.cat和isolinux.bin负责读取配置文件
# 最后会启动内核和initrd,因为光盘也是一个小系统
[root isolinux]# cat boot.msg 
 
 
splash.lss # 这是安装过程中背景图片
 
 -  Press the 01<ENTER>07 key to begin the installation process. # 显示的提示信息
[root isolinux]# cat isolinux.cfg # 查看配置文件
default vesamenu.c32
#prompt 1
timeout 3 # 进入安装界面需要等待的时间,设置为3配合下面的指定ks.cfg文件位置就能实现加载光盘后立即进入系统安装
 
display boot.msg
 
menu background splash.jpg
menu title Welcome to CentOS 6.6! # 欢迎信息
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
 
label linux # boot提示符后键入linux选项就是加载此段信息
  menu label ^Install or upgrade an existing system # 显示的提示信息
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg # 新增指明ks文件所在位置,实现只需敲回车键就能自动安装
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

    5.3. 制作光盘镜像

[root isolinux]# cd /tmp
[root tmp]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso cdrom/
# 此命令选项很多,也很难看懂,依葫芦画瓢就好
# --no-emul-boot:不模拟引导启动过程
# --boot-load-size:引导时装载的大小
# -V:光盘标签信息
# -b:指明引导程序
# -c:指明第二阶段,显示菜单的引导文件
# -o:指明创建后存放的位置
# 由于指明针对cdrom目录进行创建,所以要站在cdrom之外。而且-b和-c都无需再指明/cdrom

    安装盘制作好后,就能像官方镜像一样安装了,前提是指明安装包得指定好系统安装树才行

    小提示:安装时可以使用硬盘为第一启动顺序,光盘为第二。因为bootloader加载时会发现硬盘啥都没有,便会继续加载光盘。等到系统安装完成后,就会直接从硬盘启动了


    END


使用kickstart自动安装CentOS 6.6系统

标签:linux 自动安装

原文地址:http://10042224.blog.51cto.com/10032224/1636256

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!