make iso iso镜像制作

我们安装的是Centos操作系统,本文以Centos7-2为例制作iso镜像

1.首先需要从网上下载Censtos7-2的iso镜像文件。(104里面的/home/images中存放着各种iso,我们这里直接使用104上的iso)

2.对iso文件进行挂载操作(这里挂载到了/tmp/iso,挂载之前iso里面无任何文件)

    mount -t iso9660 -o loop CentOS-7-2.iso  /tmp/cdrom

3.挂载成功后将/tmp/iso中的所有文件拷贝到另外目录,这里拷贝到了103上的/home/iso


 然后执行 umount /tmp/cdrom 进行卸载挂载的文件

4.其中对几个文件进行说明
Ecloud :  我们公司开发出来的产品,以后更新补丁基本都是这文件里面修改
(其中tar.gz文件就是打包好的产品,install.sh为安装应用脚本,cfg文件为配置controller、compute节点和password的)
EFI :  可扩展固件接口,里面有Grub启动的配置文件
images: 镜像文件
isolinux: 启动项
Packages: iso所携带和依赖的包
repodata: 对携带的包的统计
RPM-GPG-KEY-CentOS-7:  key(如没有安装可以正常进行但是有warning)

5.我们这里需要修改的是 /isolinux/isolinux.cfg文件
   
     1 #version=RHEL7
     2 install
     3 cdrom   #rpm安装源的选择.
     4 # System authorization information
     5 auth --enableshadow --passalgo=sha512  #认证方式, 
     6 # Use text install
     7 text  #安装模式, 与isolinux.cfg中的quiet相对应.
     8 # Run the Setup Agent on first boot
     9 firstboot --enable   #安装时,用自带vmlinuz启动.
    10 # Keyboard layouts
    11 keyboard --vckeymap=us --xlayouts='us'  #键盘布局方式.
    12 # System language
    13 lang en_US.UTF-8   #系统语言显示
    14 # Network information  #网络配置方式
    15 network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate  --onboot=yes
    16 network  --bootproto=dhcp --device=eth1 --ipv6=auto --activate  --onboot=yes
    17 network  --bootproto=dhcp --device=eth2 --ipv6=auto --activate  --onboot=yes
    18 network  --bootproto=dhcp --device=eth3 --ipv6=auto --activate  --onboot=yes
    19 # Root password
    20 rootpw --iscrypted $6$jECIJz6YgxIH48CB$OlDPYa4MWnwTT3Q8lK3d621tEZ.va0Yt/7k1V2qeXljMBb/uICq48rsGi7YfN.v9uxXf4bzk2DutZSC/IoxYw0  #只创建root用户,用户密码加密.
    21 # System services
    22 services --enabled="chronyd"  #启用NTP服务.
    23 # System timezone
    24 timezone Asia/Shanghai --isUtc  #时区选择
    25 # Clear the Master Boot Record
    26 zerombr   #清楚系统现存的mbr
    27 # Firewall configuration
    28 firewall --disabled  #关闭防火墙
    29 # SELinux configuration
    30 selinux --disabled  #关闭selinux
    31 # Do not configure the X Window System
    32 skipx   #跳过Xwidons图形界面启动
    33 # Partition clearing information
    34 clearpart --all --initlabel  #清楚分区信息.
    35 # System bootloader configuration
    36 bootloader --location=mbr    #系统没被人写入位置.
    37 autopart --type=lvm  #系统分区模式, 采用自动分区, 原因是现在还不知道硬盘的具体大小, 不能按照百分比来安装分区. 唯一的缺点是会创建swap分区.
    38  #安装包的选择.
    39 %packages
    40 @base
    41 @compat-libraries
    42 @core
    43 @debugging
    44 @development
    45 @network-file-system-client
    46 @remote-system-management
    47 @security-tools
    48 @smart-card
    49 @virtualization-hypervisor
    50 @virtualization-platform
    51 @virtualization-tools
    52 @ecloud-controller   #这个group是我问自己定制, 在comps.xml中会写出具体要安装那个rpm. 这也是我们定制iso安装的基础
    53 chrony
    54 kexec-tools
    55  
    56 %end
    57  
    58 %addon com_redhat_kdump --enable --reserve-mb='auto'
    59  
    60 %end
    61 %post # post部分定义了安装系统后要执行的命令, 这时候用的chroot模式来执行这些命令, 这时候的系统分区与后期系统分区是不同的.
    62 mount /dev/cdrom /mnt
    63 cp /mnt/ecloud.tar.gz  /root/
    64 cp /mnt/install.sh /root/
    65 chmod +x /root/install.sh
    66 cp /mnt/ecloud.cfg /root/
    67 %end
    68  
    69 reboot --reject # 安装完成后重启, 并卸载iso文件.
6. 还有 :/isolinux/ks_controller.cfg文件
     
     1 #version=RHEL7
     2 install
     3 cdrom   #rpm安装源的选择.
     4 # System authorization information
     5 auth --enableshadow --passalgo=sha512  #认证方式, 
     6 # Use text install
     7 text  #安装模式, 与isolinux.cfg中的quiet相对应.
     8 # Run the Setup Agent on first boot
     9 firstboot --enable   #安装时,用自带vmlinuz启动.
    10 # Keyboard layouts
    11 keyboard --vckeymap=us --xlayouts='us'  #键盘布局方式.
    12 # System language
    13 lang en_US.UTF-8   #系统语言显示
    14 # Network information  #网络配置方式
    15 network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate  --onboot=yes
    16 network  --bootproto=dhcp --device=eth1 --ipv6=auto --activate  --onboot=yes
    17 network  --bootproto=dhcp --device=eth2 --ipv6=auto --activate  --onboot=yes
    18 network  --bootproto=dhcp --device=eth3 --ipv6=auto --activate  --onboot=yes
    19 # Root password
    20 rootpw --iscrypted $6$jECIJz6YgxIH48CB$OlDPYa4MWnwTT3Q8lK3d621tEZ.va0Yt/7k1V2qeXljMBb/uICq48rsGi7YfN.v9uxXf4bzk2DutZSC/IoxYw0  #只创建root用户,用户密码加密.
    21 # System services
    22 services --enabled="chronyd"  #启用NTP服务.
    23 # System timezone
    24 timezone Asia/Shanghai --isUtc  #时区选择
    25 # Clear the Master Boot Record
    26 zerombr   #清楚系统现存的mbr
    27 # Firewall configuration
    28 firewall --disabled  #关闭防火墙
    29 # SELinux configuration
    30 selinux --disabled  #关闭selinux
    31 # Do not configure the X Window System
    32 skipx   #跳过Xwidons图形界面启动
    33 # Partition clearing information
    34 clearpart --all --initlabel  #清楚分区信息.
    35 # System bootloader configuration
    36 bootloader --location=mbr    #系统没被人写入位置.
    37 autopart --type=lvm  #系统分区模式, 采用自动分区, 原因是现在还不知道硬盘的具体大小, 不能按照百分比来安装分区. 唯一的缺点是会创建swap分区.
    38  #安装包的选择.
    39 %packages
    40 @base
    41 @compat-libraries
    42 @core
    43 @debugging
    44 @development
    45 @network-file-system-client
    46 @remote-system-management
    47 @security-tools
    48 @smart-card
    49 @virtualization-hypervisor
    50 @virtualization-platform
    51 @virtualization-tools
    52 @ecloud-controller   #这个group是我问自己定制, 在comps.xml中会写出具体要安装那个rpm. 这也是我们定制iso安装的基础
    53 chrony
    54 kexec-tools
    55  
    56 %end
    57  
    58 %addon com_redhat_kdump --enable --reserve-mb='auto'
    59  
    60 %end
    61 %post # post部分定义了安装系统后要执行的命令, 这时候用的chroot模式来执行这些命令, 这时候的系统分区与后期系统分区是不同的.
    62 mount /dev/cdrom /mnt
    63 cp /mnt/ecloud.tar.gz  /root/
    64 cp /mnt/install.sh /root/
    65 chmod +x /root/install.sh
    66 cp /mnt/ecloud.cfg /root/
    67 %end
    68  
    69 reboot --reject # 安装完成后重启, 并卸载iso文件.

7.补充:
  #ks文件用# 做注释, 分成4个部分, 1 安装选项配置部分,2 %pre 安装前预定义脚本, 3 % post 安装后定义脚本, 4 安装包选择, 安装选项是和系统相关的所有配置项, 安装预定义脚本, 是使用pxe+ 网络模式安装系统的时候采用的, 用来处理网络, 远程文件服务器连接 安装后脚本, 用来对安装完系统进行相关操作, 这时候的权限为 chroot, 执行必要命令的时候需要进行权限切换, 而且,这时候的文件系统和安装后的文件系统是不一样的, 如果想对安装后的文件系统进行配置操作, 需要mapping到 /mnt/sysfile/下 安装包选择需要用到多个文件, 这多个文件都是用同一个rpm包list文件生成的, rpm包list文件命名有规则: XXXXX-comps.xml. 有这个文件后, 用命令 createrepo -g xxx-comps.xml ./ 来生成gz文件。

8.isolinux中的cfg文件配置完毕后,回到iso目录运行如下命令生成iso文件

genisoimage -v -cache-inodes -joliet-long -R -J -T -V Ecloud -o Ecloud.iso -c isolinux/boot.cat -bisolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -b images/efiboot.img -no-emul-boot .
命令的前半部分是和grub启动相关的, 后面的启动时和EFI相关的, centos7 是生成的iso文件名字, Ecloud 是iso的label, 这个label在安装的时候用来对介质进行命名.
#因为命令很长,所以可以进入 ~/.bashrc 文件加入如下条件
alias geniso='genisoimage -v -cache-inodes -joliet-long -R -J -T -V Ecloud -o Ecloud-1.iso -c isolinux/boot.cat -bisolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -b images/efiboot.img -no-emul-boot .'
即可使用geniso命令执行make iso了。

执行完毕后,Ecloud.iso文件就在iso目录下

你可能感兴趣的:(openstack,ISO,镜像制作)