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. ###################################################################### 
  20. ##############      1.1 Text,Key,Keyborad,Lang,Net End 
  21. ##############      1.2 Partition Begin 
  22. ###################################################################### 
  23. # Partition 10000M
  24. %include /tmp/partitioning  
  25.   
  26. ###################################################################### 
  27. ##############      1.2 Partition End    
  28. ##############      1.3 Timezone,X,passwd,security,bootloader Begin 
  29. ###################################################################### 
  30. timezone --utc Asia/Shanghai  
  31. graphical 
  32. # 设置root用户的密码
  33. rootpw redhat   
  34. # 禁用防火墙 
  35. firewall --disabled  
  36. authconfig --useshadow  --passalgo=md5  
  37. # 激活SELINUX
  38. selinux --enforcing  
  39. # 首次引导时,禁用设置代理  
  40. firstboot --disable 
  41. # 安装Grub到MBR 
  42. bootloader --location=mbr  
  43. # 安装完成后重启  
  44. reboot  
  45.  
  46. ###################################################################### 
  47. ##############      1.3 Timezone,X,passwd,security,bootloader End 
  48. ##############      1 Main End 
  49. ##############      2 Packages Begin     
  50. ###################################################################### 
  51. %packages  
  52. # 安装软件包组 
  53. @Base  
  54. @Core  
  55. @basic-desktop  
  56. @desktop-debugging  
  57. @desktop-platform  
  58. @fonts  
  59. @general-desktop  
  60. @graphical-admin-tools  
  61. @input-methods  
  62. @legacy-x  
  63. @remote-desktop-clients  
  64. @x11  
  65. # 安装软件包 
  66. coreutils  
  67. elfutils  
  68. elfutils-libelf  
  69. elinks  
  70. enscript  
  71. firefox  
  72. gcc  
  73. gimp  
  74. gimp-data-extras  
  75. gimp-print-plugin  
  76. gnome-icon-theme  
  77. gstreamer  
  78. gstreamer-tools  
  79. libIDL  
  80. libcap  
  81. libgsf  
  82. libraw1394  
  83. mutt  
  84. nautilus-cd-burner  
  85. ntp  
  86. openmotif  
  87. openssh  
  88. openssh-clients  
  89. openssh-server  
  90. pyorbit  
  91. samba-client  
  92. samba-common  
  93. startup-notification  
  94. ttmkfdir  
  95. vim-enhanced  
  96. vnc  
  97.   
  98. %end  
  99.  
  100. ###################################################################### 
  101. ##############      2 Packages End 
  102. ##############      3 Post Begin  
  103. ##############             Network Begin  
  104. ######################################################################  
  105. %post  
  106. # 固定安装后系统的IP地址 
  107. cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF  
  108. DEVICE=eth0  
  109. BOOTPROTO=none  
  110. ONBOOT=yes  
  111. NETMASK=255.255.255.0  
  112. IPADDR=XXX  
  113. GATEWAY=192.168.0.90  
  114. TYPE=Ethernet  
  115. USERCTL=no  
  116. IPV6INIT=no  
  117. PEERDNS=yes  
  118. EOF  
  119. # 提取IP地址  
  120. v_ip=`ifconfig  eth0 | head -n 2 | tail -n 1 | cut -d ':' -f 2 | cut -d ' ' -f 1`  
  121. # 替换ifcfg-eth0文件中IPADDR的xxx为$v_ip 
  122. perl -pi -e "s,XXX,$v_ip," /etc/sysconfig/network-scripts/ifcfg-eth0  
  123. %end  
  124.   
  125. ######################################################################  
  126. ##############             Network End  
  127. ##############      3 Post End  
  128. ######################################################################  
  129. %pre 
  130. echo "Starting PRE" > /dev/tty2 
  131. # 以下两行在push 64位系统的时候是必须的(Bug) 
  132. cd /mnt/ 
  133. ln -s Source/Packages ./ 
  134. v_pci0=$(udevinfo -ap /sys/class/net/eth0 | grep 'ID==' | head -n 1) 
  135. v_driver0=$(udevinfo -ap /sys/class/net/eth0 | grep 'DRIVER==' | head -n 1) 
  136. v_mac0=$(ifconfig eth0 | grep HWaddr | cut -d ' ' -f 11) 
  137. v_ip_short=$(grep $v_mac0 /mnt/stage2/workstation.list | cut -d '-' -f 1) 
  138. v_ip=192.168.0.$v_ip_short 
  139. if [ ! -z $v_ip_short ] 
  140. then 
  141.  ifconfig eth0 $v_ip 
  142. fi 
  143.  
  144. # partitions 
  145. if 
  146.         grep -q hda /proc/partitions 
  147. then 
  148.         disktype=hda 
  149. else 
  150.         disktype=sda                                         
  151. fi 
  152. # 设置分区 
  153. cat >>  /tmp/partitioning <<EOF 
  154. # 清除主引导记录MBR 
  155. zerombr yes 
  156. # 清除所有的分区 
  157. clearpart --all 
  158. # 设置/boot分区为50MB,文件系统格式为ext4 
  159. part /boot --fstype=ext4 --size=50 
  160. # 设置swqp分区为512MB 
  161. part swap --size=512 
  162. # 创建8GB的PV 
  163. part pv.Lrhel6 --size=8000 
  164. # 创建 VG 
  165. volgroup Lrhel6 --pesize=32768 pv.Lrhel6 
  166. # 创建 LV ,并挂载到根分区中 
  167. logvol / --vgname=Lrhel6 --size=7000 --name=root 
  168. EOF 
  169. %end 

 

你可能感兴趣的:(pxe,kickstart,Anaconda)