通过ks文件 实现 CentOS 6 自动安装系统
环境: VMware 14.0 Pro版
光盘镜像: CentOS-6.9-x86_64-minimal.iso
ks文件生成器: kickstart
偶然接触一个kickstart, 通过马哥的网络直播上学到的自动安装系统, 先看一下原理:
CentOS在VMware安装流程: 新建虚拟机 --> 挂载光盘镜像 --> 开始安装 --> 配置(包括地区, 语言, 时区, 键盘类型, root密码等等) --> 完成安装 --> 重启 --> 进入系统
在如上过程中, 对安装系统的配置是最耗时间的, 假如我们要安装100台主机, 难道要每一台都去配置吗? Come on, geek up and finish it.
-
什么是kickstart?
- kickstart, 生成自动配置文件, 即应答文件,达到在安装系统时无须人工干预的目的
- 需要在图形界面下启动; 当然也可以在命令行下复制编辑 /root/anaconda-ks.cfg 文件, kickstart的最终目的也是生成一个这样的文件
- 安装方法:
yum -y groupinstall Desktop --> 如果你没有图形界面的话 startx & --> 启动图形界面, 并且在图形界面启动一个Terminal
yum -y install system-config-kickstart --> 安装kickstart, 是的, kickstart的安装包就叫做这么一长串名字 system-config-kickstart --> 命令行直接输入启动, 或者在图形界面下的左上角 Applications ->System Tools -> kickstart 启动, 即上图 Terninal 的上一个选项
-
配置ks应答文件, 图片太多, 所以做成了gif, 2s/帧, 共12张
-
现在有了ks文件, 我们保存为 /root/ks6_mini.cfg 作为安装CentOS 最小系统的应答文件好了, 但是这个文件要放在哪里呢?
- 跟安装镜像一块, 烧录在硬盘里, 更改grub目录菜单(后面会有提到);
- 刚好还有一台虚拟机上装了apache, 那么我们就直接甩到网页上好了;
- centos 7 上的, 干净httpd服务, 啥也没有
systemctl start httpd sftp 192.168.142.142:/root/ks6_mini.cfg --> 获取ks文件到$pwdcp ks6_mini.cfg /var/www/html/
centos 7 的 ip 地址为: 192.168.142.128, 那么这个URL为: http://192.168.142.128/ks6_mini.cfg
-
设置应答文件位置
- 新建虚拟机 -> 挂载正常安装光盘 -> 启动虚拟机, 进入安装界面 -> 按Tab键 -> 在内核设置后, 加上 ks=http://192.168.142.128/ks6_mini.cfg
- 回车, ok, 自动安装开始, 需要注意的是, ks使用http方式获取, 需要正确配置网卡以便能到达这个网址, 否则 安装过程中会停下来, 问你要这个地址的
上面这种安装方式, 只能称作为半自动安装, 因为需要手动干预输入ks位置
我们下面来制作一个, 无需输入ks位置, 可定制的启动引导盘
这是一个CentOS6.9最小安装光盘里的部分内容, 我们需要的就是他的 isolinux/ 下的所有文件
[[email protected] myiso]# tree . ├── CentOS_BuildTag ├── EFI │ ├── BOOT │ │ ├── BOOTX64.conf │ │ ├── BOOTX64.efi │ │ ├── splash.xpm.gz │ │ └── TRANS.TBL │ └── TRANS.TBL ├── EULA ├── GPL ├── images │ ├── efiboot.img │ ├── efidisk.img │ ├── install.img │ ├── pxeboot │ │ ├── initrd.img │ │ ├── TRANS.TBL │ │ └── vmlinuz │ ├── TRANS.TBL │ └── updates.img ├── isolinux --> 启动盘所需要着手的地方 │ ├── boot.cat --> 类似MBR的存在 │ ├── boot.msg │ ├── grub.conf │ ├── initrd.img --> ramfs, 假根 │ ├── isolinux.bin -->光盘引导程序, 在mkisofs的选项中需要明确给出文件路径, 这个文件属于SYSLINUX项目 │ ├── isolinux.cfg -->isolinux.bin的配置文件, 当光盘启动后(即运行isolinux.bin), 会自动去找isolinux.cfg文件 │ ├── memtest │ ├── splash.jpg -->光盘启动界面的背景图 │ ├── TRANS.TBL │ ├── vesamenu.c32 -->是光盘启动后的安装图形界面, 也属于SYLINUX项目, menu.c32版本是纯文本的菜单 │ └── vmlinuz -->内核映像
├── Packages
│ ├── acl-2.2.49-7.el6.x86_64.rpm
......
├── RELEASE-NOTES-en-US.html
├── repodata
│ ├── 1fe6472ba4a4c603142f6c166cf8576540d182b5c23053300bc086a950c39e02-other.sqlite.bz2
│ ├── 34bae2d3c9c78e04ed2429923bc095005af1b166d1a354422c4c04274bae0f59-c6-minimal-x86_64.xml
│ ├── 55794efeb017159652008492a09552561cad4be2652478bfa3fc1e8e2ac12940-other.xml.gz
│ ├── 73c548679e02ace4bb7102d5b92dd97ee224f35de6d198e0f090d409b9731d89-primary.sqlite.bz2
│ ├── ad712ab1d0018477799baa3f9660935dec74cd227724142a4b2a33b63cafe583-filelists.xml.gz
│ ├── ce2d698b9fb1413b668443e88835a0642cea8f387c7f25cc946f56dd93f109bb-c6-minimal-x86_64.xml.gz
│ ├── fc5f6c991238c567b41dd12c19f3e0c1b4a56dce0063020fc7de8339bde0f5f9-filelists.sqlite.bz2
│ ├── ffaba656c4b1c77c844142b80d383bb38e9335b36a8046f56f53747044010304-primary.xml.gz
│ ├── repomd.xml
│ └── TRANS.TBL
├── RPM-GPG-KEY-CentOS-6
├── RPM-GPG-KEY-CentOS-Debug-6
├── RPM-GPG-KEY-CentOS-Security-6
├── RPM-GPG-KEY-CentOS-Testing-6
└── TRANS.TBL
制作Linux自动安装启动盘(非完整安装盘)步骤:
1. 拷贝上面制作好的ks6_mini.cfg sftp 192.168.142.128:/var/www/html/ks6_mini.cfg , 修改之
#platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use CDROM installation media --> 修改这里的安装源 # cdromurl --url="https://mirrors.aliyun.com/centos/6.9/os/x86_64/"# 阿里云的镜像源, 可以改为内网http或ftp服务器, 会更快一些 # Root password rootpw --iscrypted $1$NYOXLNBQ$e7B2.8hPCvCK75U/Jj8hV/ # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone Asia/Shanghai # Network information network --bootproto=dhcp --device=eth0 --onboot=on # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part /home --fstype="ext4" --size=5000 part / --fstype="ext4" --size=10000 part swap --fstype="swap" --size=2048 %post mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/ cat > /etc/yum.repos.d/base.repo <<EOF [base] name=CentOS-$releasever - Base - 163.com baseurl=http://mirrors.163.com/centos/6/os/x86_64/ gpgcheck=0 EOF %end
2. 为了方便另外做了一份centos6 的桌面版应答文件, ks6_desktop.cfg, 大家可以自行使用kickstart生成之
这里有一个需要注意的地方, 在CentOS7上, 如果kickstart界面的Package页面没有显示, 请修改yum仓库中的[base] 项为 [development] 就可以了
3. 拷贝 上面提到的 isolinux/ 到 任意空目录
[[email protected] myiso]# cp -r isolinux/ ../autoboot/ [[email protected] myiso]# cd .. [[email protected] auto-centos6]# cd autoboot/ [[email protected] autoboot]# ls isolinux [[email protected] autoboot]# tree isolinux/ --> 我们所需要的全部文件 isolinux/ ├── boot.cat ├── boot.msg ├── grub.conf ├── initrd.img ├── isolinux.bin ├── isolinux.cfg ├── ks │ ├── ks6_mini.cfg │ └── ks7_desktop.cfg ├── memtest ├── splash.jpg ├── TRANS.TBL ├── vesamenu.c32 └── vmlinuz
4. 修改 isolinux.cfg
修改过程中要注意, 既然是自动安装, 那么如果原来磁盘有操作系统怎么办?
--> 所以, 我们的默认选项应该为从硬盘启动
[[email protected] isolinux]# cat isolinux.cfg default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to GETTOLIVE -CentOS 6.9-AUTO-IN! --> 这里可以自定义修改 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 linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img 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 -#============源文件结束================#============修改的内容================
label local menu label Boot from ^local drive localboot 0xffff menu default
label mini menu label Install CentOS 6.9 ^Mini system kernel vmlinuz append initrd=initrd.img ks=cdrom:/isolinux/ks/ks6_mini.cfg
label desktop menu label Install CentOS 6.9 ^Desktop system kernel vmlinuz append initrd=initrd.img ks=cdrom:/isolinux/ks/ks6_desktop.cfg
5. 制作映像
[[email protected] isolinux]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /tmp/auto-centos6/autoboot
6. 使用xftp将生成的 /root/boot.iso拷贝出来, 挂载到新建的虚拟机光盘上, 启动之, 效果如下:
可以看到, 安装已经开始, 全部要做的工作就是挂载启动盘, 选择安装最小版或图形版本
--> 注意: 此处需要当前待安装系统的主机能够连接到阿里云镜像服务器,如果不能连接外网, 自定义一个内网服务器也是可以的
图形界面安装完成:
制作Linux自动安装盘(完整安装盘)步骤:
1. 挂载完整版安装光盘, 这里我们以CentOS 7 为例 (懒得下载CentOS 6的镜像了)
注意: 既然以CentOS 7 为例, 那么我们的操作也要在CentOS 7 上进行, kickstart也要安装上去
2.复制光盘完整内容至/root/myiso下
cp -r /tmp/myiso/ /root/
3.制作ks文件, 复制到 /root/myiso/ks/ 下
这里有一个需要注意的地方, 在CentOS7上, 如果kickstart界面的Package页面没有显示, 请修改yum仓库中的[base] 项为 [development] 就可以了
4.修改 /root/myiso/isolinux/isolinux.cfg , 修改请参照上面的方法, 修改默认项, 添加ks路径 ks=cdrom:/ks/ks7_mini.cfg
注意: 对于CentOS 7, 它的原生isolinux.cfg中, 其中一段Label如下:
label linux menu label ^Install CentOS 7 kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet ====================
append initrd=initrd.img ks=cdrom:/ks/ks7_mini.cfg --> 这里, 要去掉inst.stage2选项, 暂时还没有弄明白是干嘛的, 不过有了它还需要少许的人工操作
5.进入yum仓库元数据路径 /root/myiso/repodata
-16-[[email protected]]15:15 ~/myiso # ls CentOS_BuildTag EFI EULA GPL images isolinux ks LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL -17-[[email protected]]15:15 ~/myiso # cd repodata/ -18-[[email protected]]15:19 ~/myiso/repodata # ls 0c34273ad0292747ee5e15c047d3e51c67ca59861a446972db45d71abacc7ad7-primary.sqlite.bz2 a0af68e1057f6b03a36894d3a4f267bbe0590327423d0005d95566fb58cd7a29-other.xml.gz repomd.xml 38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml b686d3a0f337323e656d9387b9a76ce6808b26255fc3a138b1a87d3b1cb95ed5-primary.xml.gz repomd.xml.asc 6cd606547d4f569538d4090e9accdc3c69964de1116b9ab1e0a7864bb1f3ec98-filelists.sqlite.bz2 c1561546c684bd06b3a499c2babc35c761b37b2fc331677eca12f0c769b1bb37-filelists.xml.gz TRANS.TBL 9346184be1deb727caf4b1ecf4a7949155da5da74af9b92c172687b290a773df-c7-x86_64-comps.xml.gz cf0cc856d46b3095106da78256fb28f9d8defea4118d0e75eab07dc53b7d3f0d-other.sqlite.bz2 -19-[[email protected]]15:19 ~/myiso/repodata # ll total 27236 -rw-r--r-- 1 root root 6023293 May 25 14:18 0c34273ad0292747ee5e15c047d3e51c67ca59861a446972db45d71abacc7ad7-primary.sqlite.bz2 -rw-r--r-- 1 root root 751786 May 25 14:18 38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml -rw-r--r-- 1 root root 7019993 May 25 14:18 6cd606547d4f569538d4090e9accdc3c69964de1116b9ab1e0a7864bb1f3ec98-filelists.sqlite.bz2 -rw-r--r-- 1 root root 159667 May 25 14:18 9346184be1deb727caf4b1ecf4a7949155da5da74af9b92c172687b290a773df-c7-x86_64-comps.xml.gz -rw-r--r-- 1 root root 1564207 May 25 14:18 a0af68e1057f6b03a36894d3a4f267bbe0590327423d0005d95566fb58cd7a29-other.xml.gz -rw-r--r-- 1 root root 2830583 May 25 14:18 b686d3a0f337323e656d9387b9a76ce6808b26255fc3a138b1a87d3b1cb95ed5-primary.xml.gz -rw-r--r-- 1 root root 6936336 May 25 14:18 c1561546c684bd06b3a499c2babc35c761b37b2fc331677eca12f0c769b1bb37-filelists.xml.gz -rw-r--r-- 1 root root 2579184 May 25 14:18 cf0cc856d46b3095106da78256fb28f9d8defea4118d0e75eab07dc53b7d3f0d-other.sqlite.bz2 -rw-r--r-- 1 root root 3735 May 25 14:18 repomd.xml -rw-r--r-- 1 root root 811 May 25 14:18 repomd.xml.asc -r--r--r-- 1 root root 2801 May 25 14:18 TRANS.TBL -20-[[email protected]]15:19 ~/myiso/repodata # cp 38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml /root/ -21-[[email protected]]15:20 ~/myiso/repodata # rm -fr * --> 删除当前目录下除掉*.xml的所有文件 -22-[[email protected]]15:20 ~/myiso/repodata # ll total 0-24-[[email protected]]15:22 ~/myiso/repodata # cp /root/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml .
重建repo元数据
-27-[[email protected]]15:27 ~/myiso/repodata # cd .. -28-[[email protected]]15:27 ~/myiso # ls CentOS_BuildTag EFI EULA GPL images isolinux ks LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL -29-[[email protected]]15:27 ~/myiso # createrepo -g repodata/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml . Spawning worker 0 with 1599 pkgs Spawning worker 1 with 1599 pkgs Spawning worker 2 with 1599 pkgs Spawning worker 3 with 1598 pkgs Spawning worker 4 with 1598 pkgs Spawning worker 5 with 1598 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
6. 删除不需要的文件
TRANS.TBL find -name TRANS.TBL -exec rm {} \;
7.制作映像文件
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 7 x86_64 Everything" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/CentOS7-Auto-Everything.iso /root/myiso/
8. xftp 导出来, 再挂载到VMware上, 看看效果如何
安装完成, 成功点亮.
至此, 文章结束, 最终结果还是个半自动安装:
1.把这个镜像使用软碟通或者别的软件或者dd 放进U盘
2.设置bios启动顺序为U盘
3.点击方向键下-->回车-->大佬请喝茶-->茶喝好了就装好了
其实这个东东一点也不难, 前提是你得拥有丰富的windows安装经验....
原文地址:https://www.cnblogs.com/gettolive/p/9085380.html