定制CentOS-7.3全自动安装ISO

  • 原创
  • Madman
  • /
  • /
  • 0
  • 7462 次阅读

定制CentOS-7.3全自动安装ISO-min.png

Synopsis: Anaconda/Kickstart安装方式支持通过本地CD-ROM、本地磁盘、或者通过NFS、FTP、HTTP来进行自动化安装CentOS系统,由于有些场景需要使用U盘或光盘,快速安装定制后的CentOS,所以出现了本文的需求,裁剪官方CentOS-7.3安装ISO中的RPM软件包,只保留部分需要的安装包,然后封装Kickstart文件到新的ISO中,并将新的ISO文件刻录到U盘中,制作U盘启动盘,实现U盘自动安装系统

Linux系统自动部署系列:


1. 分析ISO内部文件

1.1 .discinfo

此文件是在执行/usr/lib/anaconda-runtime/buildinstall时生成,包含安装盘的识别信息,如果缺少此文件,将导致使用定制后的ISO安装系统时,在初始化过程中提示找不到光盘!

[root@CentOS cdrom]# cat .discinfo 
1480943823.812754
7.3
x86_64

1.2 .treeinfo

记录不同的安装方式下,安装程序所在的目录结构

[root@CentOS cdrom]# cat .treeinfo 
[general]
name = CentOS Linux-7
family = CentOS Linux
timestamp = 1480944027.47
variant = 
version = 7
packagedir = 
arch = x86_64

[stage2]
mainimage = LiveOS/squashfs.img

[images-x86_64]
kernel = images/pxeboot/vmlinuz
initrd = images/pxeboot/initrd.img
boot.iso = images/boot.iso

[images-xen]
kernel = images/pxeboot/vmlinuz
initrd = images/pxeboot/initrd.img

1.3 images/

启动文件和驱动盘映像文件目录,最重要的是第二阶段的引导映像

[root@CentOS cdrom]# ls -al images/
total 6291
drwxr-xr-x. 3 root root    2048 Dec  5  2016 .
drwxr-xr-x. 8 root root    2048 Dec  5  2016 ..
-rw-r--r--. 1 root root 6434816 Dec  5  2016 efiboot.img
drwxr-xr-x. 2 root root    2048 Dec  5  2016 pxeboot
-r--r--r--. 1 root root     442 Dec  5  2016 TRANS.TBL

1.4 Packages/

二进制RPM安装包目录

1.5 repodata/

RPM安装包的描述文件,如依赖关系,包含文件,校验码信息

[root@CentOS cdrom]# ls -al repodata/
total 13695
drwxrwxr-x. 2 root root    4096 Dec  5  2016 .
drwxr-xr-x. 8 root root    2048 Dec  5  2016 ..
-rw-rw-r--. 1 root root 1495137 Dec  5  2016 5635df73647e7bb1ac9a289c27f3a84db1db2e33d3644bf506b85562c2a3d392-primary.xml.gz
-rw-rw-r--. 1 root root 3103702 Dec  5  2016 6ec2bb89ebc4b716fe62ea930164b179f2cd90e1bdf1a504cdd7832153392b1e-filelists.sqlite.bz2
-rw-rw-r--. 1 root root 3069068 Dec  5  2016 889dab2d016c523397f24315cacb947484b06607924cc7e4716017842515df52-filelists.xml.gz
-rw-rw-r--. 1 root root  971157 Dec  5  2016 8d04a279fb66b24cab67e8ebc33ef0ddb4fd7d37f9d9608585598a1b80138f53-other.xml.gz
-rw-rw-r--. 1 root root 3122198 Dec  5  2016 b1b2cb9f67759ef5d143a211c2399d800fa58cf3ab12c205188e3c13d1b3d41d-primary.sqlite.bz2
-rw-rw-r--. 1 root root  159099 Dec  5  2016 c55e5b7bbe933fa8dac2cffca4596c265812b74ed12ef3968d487dd6eb22ad93-c7-x86_64-comps.xml.gz
-rw-rw-r--. 1 root root  748686 Dec  5  2016 d918936f5019be3fb66e9981a28cb2a41477a2963d741d454f79377a22214f43-c7-x86_64-comps.xml
-rw-rw-r--. 1 root root 1339096 Dec  5  2016 e4e51f819c9dfc35ad68a2745f1e39020d003741cbb1346d93f776d13e44351c-other.sqlite.bz2
-rw-rw-r--. 1 root root    3732 Dec  5  2016 repomd.xml
-r--r--r--. 1 root root    2575 Dec  5  2016 TRANS.TBL

1.6 isolinux/

[root@CentOS cdrom]# ls -al isolinux/
total 47996
drwxr-xr-x. 2 root root     2048 Dec  5  2016 .
drwxr-xr-x. 8 root root     2048 Dec  5  2016 ..
-r--r--r--. 1 root root     2048 Dec  5  2016 boot.cat
-rw-r--r--. 1 root root       84 Dec  5  2016 boot.msg
-rw-r--r--. 1 root root      293 Dec  5  2016 grub.conf
-rw-r--r--. 1 root root 43372552 Dec  5  2016 initrd.img
-rw-r--r--. 1 root root    24576 Dec  5  2016 isolinux.bin
-rw-r--r--. 1 root root     3068 Dec  5  2016 isolinux.cfg
-rw-r--r--. 1 root root   190896 Nov  6  2016 memtest
-rw-r--r--. 1 root root      186 Oct  1  2015 splash.png
-r--r--r--. 1 root root     2215 Dec  5  2016 TRANS.TBL
-rw-r--r--. 1 root root   152976 Nov  6  2016 vesamenu.c32
-rwxr-xr-x. 1 root root  5392080 Nov 23  2016 vmlinuz

(1) vmlinuz

vmlinuz是vmlinux 经过gzip和objcopy制作出来的压缩文件,vmlinuz是一种统称,有两种具体的表现形式zImage 和bzImage。zImage和bzImage的区别在于本身的大小,以及加载到内存时的地址不同,zImage在0~640KB,而bzImage则在1M以上的位置。

[root@CentOS isolinux]# file vmlinuz 
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.10.0-514.el7.x86_64 (builder@kbuilder.dev.centos.org) #1 SMP , RO-rootFS, swap_dev 0x5, Normal VGA

(2) initrd.img

In computing, initrd (initial ramdisk) is a scheme for loading a temporary root file system into memory, which may be used as part of the Linux startup process. initrd and initramfs refer to two different methods of achieving this. Both are commonly used to make preparations before the real root file system can be mounted.

(3) isolinux.bin

非模拟模式下的启动引导程序,当使用mkisofs命令时,-b参数需要指向它

(4) isolinux.cfg

启动菜单(Boot Menu)配置文件

2. 先进行一次图形化定制安装

首先,一般我们需要通过虚拟机,挂载原版ISO文件,用图形化手动安装一遍CentOS-7.3。假设我们将来要部署的服务器,需要选择Basic Web Server并勾选了Java PlatformPython,通过图形化安装一遍后,我们就可以实现定制后的ISO文件内只包含这些RPM包,整个镜像文件大小将只有几百兆。

3. 拷贝文件

当我们通过图形化安装完系统后,以下步骤均在刚安装好的CentOS系统内进行

3.1 挂载原版ISO

# mkdir /mnt/cdrom
# mount -o loop,ro -t iso9660 CentOS-7-x86_64-DVD-1511.iso /mnt/cdrom
或者:
# mount /dev/cdrom /mnt/cdrom

3.2 拷贝原版ISO内除Packages和repodata目录外的文件

# mkdir /tmp/iso
# rsync -a --exclude=Packages/ --exclude=repodata/ /mnt/cdrom/ /tmp/iso/

注意:

如果没有拷贝.discinfo文件,将导致使用定制后的ISO安装系统时,在初始化过程中提示找不到光盘!

3.3 拷贝已安装的RPM包

# mkdir -p /tmp/iso/Packages
# vim /root/copy-rpms.sh

内容如下:
#!/bin/bash
rpm -qa  > package-list.txt
old_rpms='/mnt/cdrom/Packages'
new_rpms='/tmp/iso/Packages'
while 
                                
                            
未经允许不得转载: LIFE & SHARE - 王颜公子 » 定制CentOS-7.3全自动安装ISO

分享

作者

作者头像

Madman

如需 Linux / Python 相关问题付费解答,请按如下方式联系我

0 条评论

暂时还没有评论.

专题系列

热门文章