Anaconda Kickstart


linux安装大致可以分为2个阶段 第一阶段:anaconda 阶段 此阶段是linux的预安装环境,提供linux安装选项的一个接口,可以将它比作是window中的PE环境 第二阶段:install 阶段 该阶段系统会按照anaconda 阶段设定的参数自动安装   anaconda有两种模式: 交互式:和普通安装一样,按照提示选择选项一步步的安装 非交互式:通过读取kickstart文件的配置,进行自动安装 而在安装linux过程中,获取ks.cfg文件的方式有多种,如直接在cdrom中获取,常见的形式还有http,ftp,nfs等方式 cdrom和硬盘: ks=cdrom:/dir/ks.cfg ks=hd:/dir/ks.cfg http和ftp: ks=http://domain.com/dir/ks.cfg ks=ftp://domain.com/dir/ks.cfg NFS: ks=nfs:domain.com:/dir/ks.cfg   在使用ks.cfg之前,需要先引导启动环境,引导方式有cdrom、usb、PXE等。在引导进入anaconda后,即可通过读取ks.cfg来进行系统的自动安装 ks.cfg文件会在安装linux后,根据用户的安装选项自动生成在root家目录,即anaconda_ks.cfg ks.cfg文件组成大致分为3段 1.命令段: 键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项 2.软件包段: %packages @groupname #指定安装的包组 package_name #指定安装的包 -package_name #指定不安装的包 3.脚本段(可选): %pre :预安装脚本 (由于只依赖于启动镜像,支持的命令很少) %post:后安装脚本(基本支持所有命令) 更多关于Anaconda Kickstart的内容请看:http://fedoraproject.org/wiki/Anaconda/Kickstart    
  1. [root@rhel6 ~]# cat /var/ftp/pub/ks.cfg
  2. ######################################################################
  3. ############## 1 Main Begin
  4. ############## 1.1 Text,Key,Keyboard,Lang,Net Begin
  5. ######################################################################
  6. # platform=x86, AMD64, 或 Intel EM64T # 通过文本界面进行安装
  7. text
  8. # 安装/升级
  9. install
  10. # 如果是RHEL5的系统,会要求输入key,这里配置为跳过,如果不配置安装时会停在那里要求用户输入key
  11. key--skip
  12. # 安装方式(cdrom/hdisk/http/ftp/nfs),指定安装源的路径
  13. nfs --server=192.168.0.90 --dir=/var/ftp/pub
  14. lang en_US.UTF-8
  15. keyboard us
  16. # 通过DHCP获取IP地址
  17. network --bootproto dhcp
  18. ######################################################################
  19. ############## 1.1 Text,Key,Keyborad,Lang,Net End
  20. ############## 1.2 Partition Begin
  21. ######################################################################
  22. # Partition 10000M
  23. %include /tmp/partitioning
  24. ######################################################################
  25. ############## 1.2 Partition End
  26. ############## 1.3 Timezone,X,passwd,security,bootloader Begin
  27. ######################################################################
  28. timezone --utc Asia/Shanghai
  29. graphical
  30. # 设置root用户的密码
  31. rootpw RedHat
  32. # 禁用防火墙
  33. firewall --disabled
  34. authconfig --useshadow --passalgo=md5
  35. # 激活SELINUX
  36. selinux --enforcing
  37. # 首次引导时,禁用设置代理
  38. firstboot --disable
  39. # 安装Grub到MBR
  40. bootloader --location=mbr
  41. # 安装完成后重启
  42. reboot
  43. ######################################################################
  44. ############## 1.3 Timezone,X,passwd,security,bootloader End
  45. ############## 1 Main End
  46. ############## 2 Packages Begin
  47. ######################################################################
  48. %packages
  49. # 安装软件包组
  50. @Base
  51. @Core
  52. @basic-desktop
  53. @desktop-debugging
  54. @desktop-platform
  55. @fonts
  56. @general-desktop
  57. @graphical-admin-tools
  58. @input-methods
  59. @legacy-x
  60. @remote-desktop-clients
  61. @x11
  62. # 安装软件包
  63. coreutils
  64. elfutils
  65. elfutils-libelf
  66. elinks
  67. enscript
  68. firefox
  69. gcc
  70. gimp
  71. gimp-data-extras
  72. gimp-print-plugin
  73. gnome-icon-theme
  74. gstreamer
  75. gstreamer-tools
  76. libIDL
  77. libcap
  78. libgsf
  79. libraw1394
  80. mutt
  81. nautilus-cd-burner
  82. ntp
  83. openmotif
  84. openssh
  85. openssh-clients
  86. openssh-server
  87. pyorbit
  88. samba-client
  89. samba-common
  90. startup-notification
  91. ttmkfdir
  92. vim-enhanced
  93. vnc
  94. %end
  95. ######################################################################
  96. ############## 2 Packages End
  97. ############## 3 Post Begin
  98. ############## Network Begin
  99. ######################################################################
  100. %post
  101. # 固定安装后系统的IP地址
  102. cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
  103. DEVICE=eth0
  104. BOOTPROTO=none
  105. ONBOOT=yes
  106. NETMASK=255.255.255.0
  107. IPADDR=XXX
  108. GATEWAY=192.168.0.90
  109. TYPE=Ethernet
  110. USERCTL=no
  111. IPV6INIT=no
  112. PEERDNS=yes
  113. EOF
  114. # 提取IP地址
  115. v_ip=`ifconfig eth0 | head -n 2 | tail -n 1 | cut -d ':' -f 2 | cut -d ' ' -f 1`
  116. # 替换ifcfg-eth0文件中IPADDR的xxx为$v_ip
  117. perl -pi -e "s,XXX,$v_ip," /etc/sysconfig/network-scripts/ifcfg-eth0
  118. %end
  119. ######################################################################
  120. ############## Network End
  121. ############## 3 Post End
  122. ######################################################################
  123. %pre
  124. echo "Starting PRE" > /dev/tty2
  125. # 以下两行在push 64位系统的时候是必须的(Bug)
  126. cd /mnt/
  127. ln -s Source/Packages ./
  128. v_pci0=$(udevinfo -ap /sys/class/net/eth0 | grep 'ID==' | head -n 1)
  129. v_driver0=$(udevinfo -ap /sys/class/net/eth0 | grep 'DRIVER==' | head -n 1)
  130. v_mac0=$(ifconfig eth0 | grep HWaddr | cut -d ' ' -f 11)
  131. v_ip_short=$(grep $v_mac0 /mnt/stage2/workstation.list | cut -d '-' -f 1)
  132. v_ip=192.168.0.$v_ip_short
  133. if [ ! -z $v_ip_short ]
  134. then
  135. ifconfig eth0 $v_ip
  136. fi
  137. # partitions
  138. if
  139. grep -q hda /proc/partitions
  140. then
  141. disktype=hda
  142. else
  143. disktype=sda
  144. fi
  145. # 设置分区
  146. cat >> /tmp/partitioning <<EOF
  147. # 清除主引导记录MBR
  148. zerombr yes
  149. # 清除所有的分区
  150. clearpart --all
  151. # 设置/boot分区为50MB,文件系统格式为ext4
  152. part /boot --fstype=ext4 --size=50
  153. # 设置swqp分区为512MB
  154. part swap --size=512
  155. # 创建8GB的PV
  156. part pv.Lrhel6 --size=8000
  157. # 创建 VG
  158. volgroup Lrhel6 --pesize=32768 pv.Lrhel6
  159. # 创建 LV ,并挂载到根分区中
  160. logvol / --vgname=Lrhel6 --size=7000 --name=root
  161. EOF
  162. %end

相关内容