环境: VMware 12 操作系统: redhat enterprise 7.3


全自动安装光盘 也就是把光盘放进去,开机,等..................,然后就安装(操作系统)完毕了!

好,那么怎么做呢? 先来看下光盘的结构: images 文件系统镜像,可用它来生成用来启动红帽7 Linux 安装的引导介质 Packages 一大堆RPM包 repodata 解决依赖的 LiveOS 里面是个很关键的img(images里面也是这种文件) isolinux 这是核心,里面有initrd.img boot.msg boot.cat等 其余的就木有那么重要了

然后把它全部考到你的目录(除了packages,因为太大了)下

所谓自动安装,就是提前写一个配置(ks.cfg)文件,告诉机器我要怎么安装这台操作系统,

基本上每台linux操作系统安装好后都有这么一个配置文件在root家目录(/root/),名字可能不一样,总之就叫什么.cfg配置如下
#%packages到第一个%end之间是需要安装的包,有@的是包组
#yum groups info core可以查看core包组的包,不包括依赖包
install
keyboard 'us'
rootpw --plaintext 123456
lang zh_CN.UTF-8
firewall --disabled
auth --useshadow --passalgo=sha512
cdrom
graphical
firstboot --enable
selinux --disabled
network --bootproto=dhcp --device=etho
reboot
timezone Asia/Shanghai
bootloader --location=mbr
clearpart --all
part swap --fstype=swap --size=2048
part /boot --fstype=ext4 --size=200
part / --fstype=ext4 --size=10240
%packages
@print-client
@multimedia
@internet-browser
@input-methods
@hardware-monitoring
@guest-desktop-agents
@guest-agents
@gnome-desktop
@fonts
@dial-up
@desktop-debugging
@core
@base
@^graphical-server-environment
chrony
%end

安装完成后,我还想让ks.cfg帮忙自动创建用户怎么办? 把下面的脚本加到ks.cfg末尾 %post id ddcw 2> /dev/null || useradd ddcw echo 123456 | passwd --stdinddcw %end 看不懂这些参数是什么怎么办? 先安装kickstart,再启动kickstart,然后点鼠标配置,配置完了点击文件->保存->保存到哪 就是生成一个ks.cfg的文件,里面的配置就是你刚才点鼠标配置的。 yum -y install system-config-kickstart system-config-kickstart 怎样让机器知道我的ks.cfg文件在哪呢? 编辑 isolinux/linux.cfg 文件 把下图红色框框里的改为 ks=cdrom:/isolinux/ks.cfg (你的ks.cfg的路径,如果是ftp的话,则为ks=ftp://ip/path)

到这里,基本上成功了,最后一步就是把它制作成.iso文件了(最后有一个点的) mkisofs -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table -V RHEL7 -b isolinux/isolinux.bin -c isolinux/boot.cat -o /ddcw_rh7.iso .


完整思路:

建一个操作目录iso_auto,获取已安装rpm包 rpm –qa 2. 挂载镜像 并把镜像里所有文件(除了Packages)拷过来 3. 把本地的rpm包从镜像里考到/iso_auto/Packages/ 4. 配置/iso_auto/isolinux/isolinux.cfg
append initrd 这一行的inst.stage及后面的内容修改为:ks=cdrom:/isolinux/ks.cfg quiet (如果是ftp,则为ftp://ip/path quiet,总之指向你的ks.cfg文件) 5. 配置/iso_auto/isolinux/ks.cfg 可以参照/root/anaconda.cfg 安装操作系统时,系统(image)会先来找ks.cfg中的配置,可以自己写(如果会的话),也可以用kickstart来生成(命令是system-config-kickstart,然后点击鼠标,点完 了,点保存就行),然后再手动修改需要的 6. 生成iso文件(后面有个点的,表示当前目录 –V参数可以不要) mkisofs -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table -V RHEL7 -b isolinux/isolinux.bin -c isolinux/boot.cat -o /ddcw_rh7.iso .

shell脚本:

cdrom='/mnt'
umount /dev/sr0 2> /dev/null
mount /dev/sr0 /mnt 1> /dev/null && echo "waiting..."
pack=`rpm -qa`
no_pack=`ls ${cdrom} | grep -v Packages`
[ -d ./iso_auto ] || mkdir iso_auto
cd ./iso_auto
[ -d ./Packages ] || mkdir ./Packages
for i in ${pack}
do
        cp -rf ${cdrom}/Packages/${i}.rpm ./Packages
done
for j in ${no_pack}
do
        cp -rf ${cdrom}/${j} .
done
sed -i '/initrd/c\\tappend initrd=initrd.img ks=cdrom:/isolinux/ks.cfg quiet' ./isolinux/isolinux.cfg
sed -i 's/Red Hat Enterprise Linux 7.3/Auto Install Linux by DDCW/' ./isolinux/isolinux.cfg
sed -i '/timeout 600/ctimeout 50' ./isolinux/isolinux.cfg
sed -i '/menu default/d' isolinux/isolinux.cfg
sed -i '/label linux/amenu default' isolinux/isolinux.cfg
[ -d isolinux/ks.cfg ] || touch ./isolinux/ks.cfg
ks_value="install\nkeyboard 'us'\nrootpw --plaintext 123456\nlang zh_CN.UTF-8\nfirewall --disabled\nauth  --useshadow  --passalgo=sha512\ncdrom\ngraphical\nfirstboot --enable\nselinux --disabled\nnetwork  --bootproto=dhcp --device=etho\nreboot\ntimezone Asia/Shanghai\nbootloader --location=mbr\nclearpart --all\npart swap --fstype="swap" --size=2048\npart /boot --fstype="ext4" --size=200\npart / --fstype="ext4" --size=10240\n%packages\nchrony\n%end\n%post\nid ygs 2> /dev/null || useradd ygs\necho 123456 | passwd --stdin ygs\ncat >> /etc/yum.repos.d/base.repo << eof\n[base]\nname=baseserver\nbaseurl=file:///mnt/\nenable=1\ngpgcheck=0\neof\n%end"
echo -e ${ks_value} > ./isolinux/ks.cfg
pack_group=`cat /root/anaconda-ks.cfg | grep @`
for k in ${pack_group}
do
        sed -i "/%packages/a${k}" ./isolinux/ks.cfg
done
mkisofs -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table -V RHEL7 -b isolinux/isolinux.bin -c isolinux/boot.cat -o /ddcw_rh7.iso .

这里就结束了