我们安装的是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目录下