1. Linux系统自动安装ISO镜像制作
1.1.1. 前期准备
安装软件createrepo,system-config-kickstart,mkisofs/genisoimage
- createrepo 区别于传统的rpm命令安装软件方式,yum能够自动解决并安装依赖。这是由于yum的软件源一开始就已经处理好软件之间的依赖关系,createrepo就是处理这种关系的工具。
- system-config-kickstart 不同于传统的使用鼠标点击来完成系统安装时语言、时区设置,使用kickstart生成一个指定配置的文件,系统安装时按照这个设置好的配置自动安装,无需交互。建议使用/root/anaconda-ks.cfg文件或者手动编辑一个。
- mkisofs/genisoimage 生成光盘ISO文件时需要使用工具,在Linux下推荐使用mkisofs/genisoimage。
[root@localhost /]# yum install -y createrepo genisoimage
基本软件复制
使用一个系统镜像复制启动文件和基础软件包。
注意:.discinfo
是一个隐藏文件,如果没有改文件在系统安装时将不能识别cdrom。
[root@localhost /]# mount -o loop /redhat6.2.iso /mnt
[root@localhost /]# mkdir /wenyu_redhat6u2
[root@localhost /]# cp -r /mnt/{images,isolinux,Packages} /wenyu_redhat6u2
[root@localhost /]# cp /mnt/.discinfo /wenyu_redhat6u2
1.1.2. 创建软件源依赖环境
复制软件组goup信息文件
在使用yum groupinstall
时会安装一组软件,软件组相关信息保存在repodata下的一个comps.xml
文件中(文件名称可能有差异)。
[root@localhost /]# cp /mnt/repodata/minimal-x86_64.xml /wenyu_redhat6u2
复制其他新的软件包 如果有其他软件包,也可以一同复制到Packages目录中。 但是要注意的是,只要Packages目录有修改就需要重建依赖,否则新修改无效。
[root@localhost /]#cp /mysoft/*.rpm /wenyu_redhat6u2/Packages
生成依赖关系 createrepo工具能够生成软件之间的依赖关系,提供给yum使用。
- -g 指定软件组相关信息的文件路径
命令执行完后会在指定目录(最后一个路径参数)下生成一个repodata目录来保存相关依赖信息,同时保存一份组依赖xml文件到该目录中。原始的xml文件可以删除
[root@localhost wenyu_redhat6u2]# cd /wenyu_redhat6u2
[root@localhost wenyu_redhat6u2]# createrepo -g minimal-x86_64.xml ./
Spawning worker 0 with 718 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost wenyu_redhat6u2]# ls
minimal-x86_64.xml images isolinux Packages repodata
[root@localhost wenyu_redhat6u2]# ls repodata/
17ff3157e62693dc7ef146235d639b7c872c991123c3dcfa15edfb99f707e36b-other.xml.gz
8afad1febf2d8844a235a9ab1aa5f15c9cec1219b9d01060d4794435cf59dffe-minimal-x86_64.xml
344fac9bd4382a9c7b17e50cbfcb2ffdf9d09a72215438aeae40c3a715608e3b-filelists.xml.gz
b676cc96dc3c2ac0b44b0ca4e900f24c39e56db98565f08fc5882dda23d277cf-alios6u2.xml.gz
41911caa2ebd0c26a162ab0a7694d11dbdab3a8d12cc537828d933bd589a1e5d-other.sqlite.bz2
c4ccb9420889f42394f283562fef5104f6eaf919c371e57872126de694ab9fe6-filelists.sqlite.bz2
5da9f19be1d65a9d9d530e08ef9f8d952e4ec301ce1c807bc17a9faf4e9336ba-primary.sqlite.bz2
repomd.xml
7f02d42cf1ac680709934747648838c18dcb72cc3086e5da4adea1e883d86ac3-primary.xml.gz
测试软件源可用性
指定系统yum源为wenyu_redhat6u2。
注意:不同于http,ftp等方式,使用file方式是需要用三个///
,因为绝对路径必须从/
开始
[root@localhost wenyu_redhat6u2]# cat /etc/yum.repos.d/local.repo
[base]
name=CentOS
baseurl=file:///wenyu_redhat6u2
enable=1
gpgcheck=0
测试yum源可用
yum clean all
yum list
yum groulist
yum install test-soft -y
1.1.3. 修改开机启动菜单
开机启动菜单配置文件能够配置开机时背景图片,等待时间,默认选项等。 注意:不同环境该文件名会不同
[root@localhost wenyu_redhat6u2]# cat /wenyu_redhat6u2/isolinux/isolinux.cfg
default vesamenu.c32 #默认菜单文件
timeout 600 #等待超时时间,单位是1/10秒,这里是60秒
display boot.msg
menu background splash.jpg #背景图片
menu title Welcome to Red Hat Enterprise Linux 6.2! #提示title
menu color border 0 #ffffffff #00000000 #颜色设置
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
#每个label就是一个选项
#append追加内核参数,可以这里指定ks.cfs文件位置.也可以在最开始使用default linux ks=cdrom:/ks.cfg
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ks.cfg #指定ks文件路径
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img xdriver=vesa nomodeset
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
1.1.4. 编辑ks.cfg文件
ks.cfg 是配置系统安装时的参数。如果缺少配置项则屏幕会停留在该项等待用户交互配置。
# Kickstart file automatically generated by anaconda.
#键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择
#version=DEVEL
#指定默认执行内容,是安装install还是升级upgrade
install
#文本方式安装,图像graphical
text
#安装方式,一般是ISO镜像挂载的目录。有多重安装方式
#url ––url ftp://192.168.1.254/dir
#nfs --server=192.168.0.241 --dir=/centosinstall
#url --url=http://10.0.0.1/
cdrom
#如果是redhat的系统,会要求输入key,这里配置为跳过,如果不配置安装时会停在那里要求用户输入key
key –skip
#语言
lang en_US.UTF-8
#键盘样式
keyboard us
#网络配置 配置具体参数样例:network –onboot yes --bootproto=static --ip=192.168.1.1 --netmask=255.255.255.0 其他网关,DNS等格式。是按照号操作系统后对ifcfg-eth0的配置,在pxelinux.cfg/default之前会还有多种下载方式,可以研究如何下载
#network --onboot yes --device eth0 --bootproto static --ip=10.0.0.101 --netmask=255.255.255.0
network --onboot no --device eth0 --bootproto dhcp --noipv6
#管理员密码,是加密过的 要是使用不加密的方式则这样写:rootpw 123456
rootpw --iscrypted $6$.U.Eg6dK4XP3FjND$t88vA623WNOtosCHQyV1.B7j7sm3R.W6dhOw1xRq3DNHowild41YcHcFIKeFRPARuKcH5PhgSoimBDuk2YzWr/
#开启防火墙,并打开ssh端口。关闭使用--disabled
firewall --service=ssh
#快速启动,不进行磁盘检测
fastboot --disabled
#用户认证和密码加密方式
authconfig --enableshadow --passalgo=sha512
#强制打开selinux。禁用使用--disabled
selinux --enforcing
#时区设置
timezone --utc Asia/Shanghai
#清空磁盘的mbr
zerombr yes
#引导程序相关参数
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#初始化磁盘,清楚磁盘所有数据
clearpart –-all –-initlabel
#磁盘分区,单位是MB --grow会将剩下的全部分配给指定的分区,size大小是M
part swap --fstype=swap ---size=2048
part /boot --fstype=ext3 --size=1048
part / --fstype=ext3 --grow --size=1
#repo位置
#repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
#安装完后自动reboot
reboot
#============================================================
#在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系
#%packages
#@groupname:指定安装的包组
#package_name:指定安装的包
#-package_name:指定不安装的包
%packages
@base
@console-internet
@core #mini安装就只会安装核心软件包组core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
pax
oddjob
sgpio
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
gcc
gcc-c++
make
cmake
#=======================================================================
#脚本段(可选):
#%pre:预安装脚本(由于只依赖于启动镜像,支持的命令很少)
#%post:后安装脚本(基本支持所有命令)
%post
cat >> /etc/yum.repos.d/base.repo <<eof #配置yum源
[base]
name=baseserver
baseurl=http://10.0.0.1
gpgcheck=0
enable=1
eof
/etc/init.d/network restart
%end
1.1.5. 生成ISO镜像
[root@localhost wenyu_redhat6u2]# mkisofs -o redhat6u2-x86_64-wenyu20170314.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V -T ./
mkisofs 命令参数简介
- -o 指定映像文件的名称。
- -b 指定在制作可开机光盘时所需的开机映像文件。
- -c 制作可开机光盘时,会将开机映像文件中的 no-eltorito-catalog 全部内容作成一个文件。
- -no-emul-boot 非模拟模式启动。
- -boot-load-size 4 设置载入部分的数量。
- -boot-info-table 在启动的图像中现实信息。
- -joliet-long 使用 joliet 格式的目录与文件名称,长文件名支持。
- -R 或 -rock 使用 Rock RidgeExtensions 。
- -J 或 -joliet 使用 Joliet 格式的目录与文件名称。
- --verbose 执行时显示详细的信息。
- 或 -translation-table 建立文件名的转换表,适用于不支持 Rock Ridge Extensions 的系统上。
1.1.6. 测试使用
可以刻录光盘或者作为虚拟机的镜像来安装操作系统。