歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Shell腳本+Kickstart文件定制CentOS 6

Shell腳本+Kickstart文件定制CentOS 6

日期:2017/2/28 15:53:48   编辑:SHELL編程

寫了一個腳本(見下面的鏈接),利用kickstart文件 + 腳本來生成自動安裝的ISO, 基於CentOS 6的,在CentOS 6.2下測試沒問題,估計CentOS 6.*都沒什麼問題

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/3月/30日/Shell腳本+Kickstart文件定制CentOS 6/

這個腳本的最大的特點就是不需要CentOS的官方原版ISO鏡像,所有需要的文件都是通過網絡下載,有的是從sohu的鏡像源,有的是163的(分散壓力,呵呵) 這樣做的還有一個好處就是安裝的rpm包都是最新的,進入系統之後,不需要yum -y update了 (適合有潔癖的人)

然後,rpm包都是通過yum安裝,這裡我安裝了一個yum的插件,達到只下載不安裝的目的,另外就是用yum的時候,還指定了一個--installroot的參數,讓yum不去讀本機的數據庫,如果不加這個參數,就不能順利的下載本機已經安裝過的包

ks.cfg是用system-config-kickstart生成的kickstart配置文件,如果沒有這個命令,就yum -y install system-config-kickstart來安裝一下就行,也可以通過修改本地/root目錄下的ananconda-ks.cfg,但需要注意的是這個文件裡面有一行需要注釋掉或者刪除掉
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
如果不注釋,安裝的時候,ananconda會找這個yum源

650) this.width=650;" border=0>

下面貼出腳本

  1. #!/bin/bash
  2. if [ ! -e /root/xiaosu.cfg ];then
  3. echo "you must put the kickstart file named xiaosu.cfg to /root/"
  4. exit 1
  5. fi
  6. yum -y install yum-plugin-downloadonly createrepo genisoimage
  7. mv /etc/yum.repos.d/ /etc/yum.repos.d.bak
  8. mkdir /etc/yum.repos.d
  9. cat >/etc/yum.repos.d/suzezhi.repo << EOF
  10. [suzezhi-base]
  11. name=CentOS-$releasever - Base - 163.com
  12. baseurl=http://mirrors.163.com/centos/6/os/x86_64/
  13. gpgcheck=1
  14. gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
  15. [suzezhi-updates]
  16. name=CentOS-$releasever - Updates - 163.com
  17. baseurl=http://mirrors.163.com/centos/6/updates/x86_64/
  18. gpgcheck=1
  19. gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
  20. #additional packages that may be useful
  21. [suzezhi-extras]
  22. name=CentOS-$releasever - Extras - 163.com
  23. baseurl=http://mirrors.163.com/centos/6/extras/x86_64/
  24. gpgcheck=1
  25. gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
  26. #additional packages that extend functionality of existing packages
  27. [suzezhi-centosplus]
  28. name=CentOS-$releasever - Plus - 163.com
  29. baseurl=http://mirrors.163.com/centos/6/centosplus/x86_64/
  30. gpgcheck=1
  31. gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
  32. #contrib - packages by Centos Users
  33. [suzezhi-contrib]
  34. name=CentOS-$releasever - Contrib - 163.com
  35. baseurl=http://mirrors.163.com/centos/6/contrib/x86_64/
  36. gpgcheck=1
  37. gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
  38. EOF
  39. mkdir -p /tmp/suzezhi/temp
  40. cd /tmp/suzezhi/temp
  41. wget -r --no-parent -c --cut-dirs=4 --reject=gz --exclude-directories=centos/6/os/x86_64/Packages http://mirrors.sohu.com/centos/6/os/x86_64/
  42. find . -name index.html -exec rm -f {} \;
  43. cat >> /tmp/suzezhi/temp/yum.conf <<EOF
  44. [main]
  45. cachedir=/var/cache/Packages
  46. keepcache=0
  47. debuglevel=2
  48. logfile=/var/log/yum.log
  49. exactarch=1
  50. obsoletes=1
  51. gpgcheck=1
  52. plugins=1
  53. installonly_limit=5
  54. bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
  55. distroverpkg=centos-release
  56. EOF
  57. for i in $(awk '/^%packages$/,/^%end$/' /root/xiaosu.cfg |grep -v -E '%end|%packages'); do
  58. yum --installroot=/tmp/suzezhi/test -c yum.conf --downloadonly --downloaddir=/tmp/suzezhi/Packages -y install $i
  59. done
  60. rm -rf /etc/yum.repos.d
  61. mv /etc/yum.repos.d.bak /etc/yum.repos.d
  62. cd /tmp/suzezhi/
  63. mv Packages/ /tmp/suzezhi/temp/mirrors.sohu.com/
  64. cd /tmp/suzezhi/temp/mirrors.sohu.com
  65. cat > .discinfo << EOF
  66. 1333560292.885204
  67. 6
  68. x86_64
  69. 1
  70. EOF
  71. cat > .treeinfo << EOF
  72. [general]
  73. family = CentOS
  74. timestamp = 1333560005.81
  75. variant =
  76. totaldiscs = 1
  77. version = 6
  78. discnum = 1
  79. packagedir = Packages
  80. arch = x86_64
  81. [images-x86_64]
  82. kernel = images/pxeboot/vmlinuz
  83. initrd = images/pxeboot/initrd.img
  84. [images-xen]
  85. kernel = images/pxeboot/vmlinuz
  86. initrd = images/pxeboot/initrd.img
  87. [stage2]
  88. mainimage = images/install.img
  89. EOF
  90. cp /root/xiaosu.cfg .
  91. sed -i "/menu default/d" isolinux/isolinux.cfg
  92. cat >> isolinux/isolinux.cfg << EOF
  93. label auto
  94. menu label ^Auto install an system
  95. menu default
  96. kernel vmlinuz
  97. append ks=cdrom:/xiaosu.cfg initrdinitrd=initrd.img
  98. EOF
  99. mv repodata/*-comps.xml .
  100. rm -f repodata/*
  101. mv *-comps.xml repodata
  102. createrepo -d --unique-md-filenames -g repodata/*-comps.xml .
  103. cd ..
  104. mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot -allow-leading-dots -no-bak -o /root/xiaosu.iso -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table mirrors.sohu.com/
  105. rm -rf /tmp/suzezhi
Copyright © Linux教程網 All Rights Reserved