定制专属于你的系统安装镜像

1. 生产场景

领导要求你到某个机房给服务器安装CentOS6的系统并搭建服务,你到现场发现服务器没有外网只有内网,而且没有内网yum仓库,kickstartcobbler更不用想。你手上仅有的工具是usb光驱或U盘。怎么搞定??

做一个自动化安装的镜像,并把业务所有需要的依赖包全打包进去。开工

2. 挂载镜像

  1. #→首先自备CentOS-6.7-x86_64-bin-DVD1.iso镜像(3.63G),然后将镜像挂载到虚拟机。
  2. #→CentOS6.8的镜像也可,只要后面你会随机应变。下载地址https://pan.baidu.com/s/1dFDiJst
  3.  
  4. [root@zyiso ~]# mount /dev/cdrom /mnt/
  5. mount: block device /dev/sr0 is write-protected, mounting read-only
  6. [root@zyiso ~]# df -h
  7. Filesystem Size Used Avail Use% Mounted on
  8. /dev/sda3 19G 1.5G 16G 9% /
  9. tmpfs 491M 0 491M 0% /dev/shm
  10. /dev/sda1 190M 36M 145M 20% /boot
  11. /dev/sr0 3.7G 3.7G 0 100% /mnt
  12. [root@zyiso mnt]# ll -ah
  13. 总用量 567K
  14. dr-xr-xr-x 7 root root 4.0K 8 5 2015 .
  15. dr-xr-xr-x. 23 root root 4.0K 8 24 11:48 ..
  16. -r–r–r– 2 root root 14 8 5 2015 CentOS_BuildTag
  17. -r–r–r– 1 root root 31 8 5 2015 .discinfo
  18. dr-xr-xr-x 3 root root 2.0K 8 5 2015 EFI
  19. -r–r–r– 2 root root 212 11 27 2013 EULA
  20. -r–r–r– 2 root root 18K 11 27 2013 GPL
  21. dr-xr-xr-x 3 root root 2.0K 8 5 2015 images
  22. dr-xr-xr-x 2 root root 2.0K 8 5 2015 isolinux
  23. dr-xr-xr-x 2 root root 516K 8 5 2015 Packages
  24. -r–r–r– 2 root root 1.4K 7 25 2015 RELEASE-NOTES-en-US.html
  25. dr-xr-xr-x 2 root root 4.0K 8 5 2015 repodata
  26. -r–r–r– 2 root root 1.7K 11 27 2013 RPM-GPG-KEY-CentOS-6
  27. -r–r–r– 2 root root 1.7K 11 27 2013 RPM-GPG-KEY-CentOS-Debug-6
  28. -r–r–r– 2 root root 1.7K 11 27 2013 RPM-GPG-KEY-CentOS-Security-6
  29. -r–r–r– 2 root root 1.7K 11 27 2013 RPM-GPG-KEY-CentOS-Testing-6
  30. -r–r–r– 1 root root 3.4K 8 5 2015 TRANS.TBL
  31. -r–r–r– 1 root root 338 8 5 2015 .treeinfo
  32.  
  33. 常见文件目录用途说明:
  34. isolinux目录存放光盘启动时的安装界面信息
  35. images目录包括了必要的启动映像文件
  36. Packages目录存放安装软件包及信息
  37. repodata目录存放rpm包依赖信息
  38. .discinfo文件是安装介质的识别信息


    3. 收集RPM

  39. [root@zyiso mnt]# mkdir -p /application/CentOS6
  40. [root@zyiso mnt]# rsync -a –exclude=Packages/ –exclude=repodata/ /mnt/ /application/CentOS6/
  41. [root@zyiso mnt]# cd /application/CentOS6/
  42. [root@zyiso CentOS6]# ls
  43. CentOS_BuildTag GPL RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Security-6
  44. EFI images RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6
  45. EULA isolinux RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL
  46. [root@zyiso CentOS6]# du -sh
  47. 268M
  48.  
  49. [root@zyiso CentOS6]# mkdir -p /application/CentOS6/Packages
  50. [root@zyiso CentOS6]# cd
  51. [root@zyiso ~]# ls
  52. anaconda-ks.cfg install.log install.log.syslog
  53.  
  54. [root@zyiso ~]# awk ‘/Installing/{print “rsync -a /mnt/Packages/”$2″.rpm /application/CentOS6/Packages/”}’ install.log|bash
  55.  
  56. [root@zyiso Packages]# pwd
  57. /mnt/Packages
  58. [root@zyiso Packages]# cp tree-1.5.3-3.el6.x86_64.rpm nmap-5.51-4.el6.x86_64.rpm sysstat-9.0.4-27.el6.x86_64.rpm lrzsz-0.12.20-27.1.el6.x86_64.rpm dos2unix-3.1-37.el6.x86_64.rpm telnet-0.17-48.el6.x86_64.rpm /application/CentOS6/Packages/
  59.  
  60. [root@zyiso ~]# cd /application/CentOS6/Packages/
  61. [root@zyiso Packages]# du -sh
  62. 368M .
  63. [root@zyiso Packages]# ls|wc -l
  64. 516
  65.  
  66. #→生成repodata目录
  67. [root@zyiso ~]# yum -y install createrepo
  68. [root@zyiso CentOS6]# pwd
  69. /application/CentOS6
  70.  
  71. #→复制文件名包含comps.xml文件,这个文件存放包组信息。
  72. [root@zyiso CentOS6]# cp /mnt/repodata/4df092633ebecaeebdd78359a11a3c13f619f22605322e15e5e307beebd8e641-c6-x86_64-comps.xml comps.xml
  73. [root@zyiso CentOS6]# createrepo -g comps.xml .
  74. Spawning worker 0 with 516 pkgs
  75. Workers Finished
  76. Gathering worker results
  77.  
  78. Saving Primary metadata
  79. Saving file lists metadata
  80. Saving other metadata
  81. Generating sqlite DBs
  82. Sqlite DBs complete
  83. [root@zyiso CentOS6]# ls repodata/
  84. 1796ee77e0a9d1aedf4fc8e8bb112a05f58b37a48a97b3ad4ae96862f334e93b-primary.xml.gz
  85. 1da2cadaadd73048ae5ac2275b46851b8829278568dcad09608015f0201ea42e-other.sqlite.bz2
  86. 3c0626aafa36099243a809bcb7e4b2ae85d781e0b361916d52f73965582be885-other.xml.gz
  87. 418aeb7685093a6eb90725f2c2c5e3306b3697f7a7c13067dee102e645bde860-filelists.xml.gz
  88. 486d3ee62873814293a1be370640ae9c71863a35c7299eb76739e03369ad0c3f-comps.xml.gz
  89. 4df092633ebecaeebdd78359a11a3c13f619f22605322e15e5e307beebd8e641-comps.xml
  90. 54bcf19d09ed0221351fddc12a6d80f061c1c7adc83135a5940410617d0cbfd0-primary.sqlite.bz2
  91. d7ad8946692006ed04f68494acb16da97fffa216b102568b809e9e1e519956c4-filelists.sqlite.bz2
  92. repomd.xml
  93.  
  94. [root@zyiso CentOS6]# mv comps.xml /tmp/

    repodata文件中comps.xml 文件中包含了安装时用户所见到的与rpm相关的所有内容,它会检查Packages下的RPM包的依赖关系,安装时如果缺少依赖包,它会提示您哪个RPM 包需要哪些依赖库。同时它的角色就是相当于图形安装时选择软件包那个环节。


    comps.xml主要由三部分组成,首先是组列表,它描述了在安装过程中需要的不同的组(或组件),包括组名、组的描述和包含的RPM包;其次是组的层次结构,它将组分成不同的类,并定义了组的一个顺序,从而可以决定哪些组需要先安装;最后为一系列RPM包以及它们之间的依赖关系。

    4. 定制kickstart安装脚本ks.cfg文件

    下面文件的含义大家可以参考另外一篇文章《自动化运维系列1–Kickstart全自动安装操作系统》

  95. [root@zyiso ~]# vim /application/CentOS6/isolinux/ks.cfg
  96. # Kickstart Configurator for CentOS 6.7 by yao zhang
  97. install
  98. cdrom
  99. text
  100. lang en_US.UTF-8
  101. keyboard us
  102. zerombr
  103. bootloader –location=mbr –driveorder=sda –append=”crashkernel=auto rhgb quiet”
  104. network –bootproto=dhcp –device=eth0 –onboot=yes –noipv6 –hostname=oldboyedu
  105. timezone –utc Asia/Shanghai
  106. authconfig –enableshadow –passalgo=sha512
  107. rootpw –iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
  108. clearpart –all –initlabel
  109. part /boot –fstype=ext4 –asprimary –size=200
  110. part swap –size=1024
  111. part / –fstype=ext4 –grow –asprimary –size=200
  112. firstboot –disable
  113. selinux –disabled
  114. firewall –disabled
  115. logging –level=info
  116. reboot
  117. %packages
  118. @base
  119. @compat-libraries
  120. @debugging
  121. @development
  122. tree
  123. nmap
  124. sysstat
  125. lrzsz
  126. dos2unix
  127. telnet
  128.  
  129. %post
  130. #→在这里可以定制一下系统
  131. echo “Welcome to the Old Boys Education iso image”>/etc/motd
  132. %end
  133.  
  134.  
  135. [root@zyiso ~]# vim /application/CentOS6/isolinux/isolinux.cfg
  136. default vesamenu.c32
  137. #prompt 1
  138. timeout 600
  139.  
  140. display boot.msg
  141.  
  142. menu background splash.jpg
  143. menu title Welcome to CentOS 6.7!
  144. menu color border 0 #ffffffff #00000000
  145. menu color sel 7 #ffffffff #ff000000
  146. menu color title 0 #ffffffff #00000000
  147. menu color tabmsg 0 #ffffffff #00000000
  148. menu color unsel 0 #ffffffff #00000000
  149. menu color hotsel 0 #ff000000 #ffffffff
  150. menu color hotkey 7 #ffffffff #ff000000
  151. menu color scrollbar 0 #ffffffff #00000000
  152.  
  153. #→修改此处
  154. label linux
  155. menu label ^Auto Install Oldboyedu Linux System
  156. menu default
  157. kernel vmlinuz
  158. append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
  159. label rescue
  160. menu label ^Rescue installed system
  161. kernel vmlinuz
  162. append initrd=initrd.img rescue
  163. label local
  164. menu label Boot from ^local drive
  165. localboot 0xffff
  166. label memtest86
  167. menu label ^Memory test
  168. kernel memtest
  169. append –

    5. 生成镜像

  170. [root@zyiso CentOS6]# yum -y install mkisofs
  171.  
  172. [root@zyiso CentOS6]# mkisofs -o /application/CentOS-6.7-x86_64-oldboyedu.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T .

    6. 生成ISO文件MD5

  173. [root@zyiso ~]# yum -y install isomd5sum
  174. #→以前每做出一个ISO都会同时生成一个md5值文件,防止复制过程中数据损坏;现使用implantisomd5checkisomd5两个工具,可以将md5值嵌入ISO中并直接效验,方便不少。
  175. [root@zyiso application]# implantisomd5 CentOS-6.7-x86_64-oldboyedu.iso #→只能植入一次
  176. Inserting md5sum into iso image…
  177. md5 = f4e43ec24d18fa09047f852adf6d2051
  178. Inserting fragment md5sums into iso image…
  179. fragmd5 = b3854c6e41d46c688616dda1e9c881e2119a271558f759b6b7eeee733ac1
  180. frags = 20
  181. Setting supported flag to 0
  182. [root@zyiso application]# checkisomd5 CentOS-6.7-x86_64-oldboyedu.iso
  183. Press [Esc] to abort check.
  184.  
  185. The media check is complete, the result is: PASS.
  186.  
  187. It is OK to use this media.

     

    提供镜像下载:https://pan.baidu.com/s/1dFDiJst

     

    镜像主要信息:

    1. 最小化安装及额外选择4个包组及tree nmap sysstat lrzsz dos2unix这几个软件

    2. 用户root密码123456

    3. 磁盘分区boot 200M swap 1G 剩余空间给/

    4. 防火墙和selinux关闭

    5. 大家按需要修改网卡/主机名/用户密码

    7. 安装制作的ISO镜像


     

    大家可以看到这张图片被修改了,大家想改的话,这个图片的路径为isolinux/splash.jpg

     

    8. 后记

    上面定制的镜像仅仅包含系统,如果需要将我们的web服务或者mysql服务内嵌进镜像,读者可以学习完下一篇文章《自动化运维系列4–定制化专属于你的软件包》,将这些服务定制成rpm包,然后在第3节收集rpm包这一步骤将自己制作的rpm包放进/application/CentOS6/Packages目录,然后再改改第4节的ks.cfg文件即可。Good Luck!

     

    9. 拓展

    制作U盘启动安装CentOS Linux系统 – 老男孩linux培训 – 51CTO技术博客 http://oldboy.blog.51cto.com/2561410/1829907

     

     

     

8
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到