单位有一套曙光集群,80多个节点,安装的SUSE10.2,系统比较老,官网有些补丁要授权,安全漏洞多,决定来次整体系统升级,全部换成CentOS6.3。
1.一台台的换?会死人,就算安装minimal,也需要20来分钟一台,装还要得配IP,HOSTNAME之类。
2.使用kickstart做了个光盘镜像,百度一下很多结果,不做介绍了,试验了一下,相较1,可节约约5分钟。但还是和一台台装,而且要刻盘。
3.使用kickstart做U盘镜像,这个百度一下也有很多结果,将ks.cfg文件的安装介质从cdrom改成hd:sdb4。很不幸,曙光这套刀片有点特别,想到从U盘启动得先到Bios里把U盘设置为主硬盘,这样安装文件介质就是sda4了,安装位置是sdb这个盘。不知道为什么U盘都是sda4、sdb4这样而不是sda1、sdb1。做好安装盘安装,居然报错说打到不到镜像#1之类的。后将安装镜像的ISO文件也复制到U盘,这才解决。
4.方法1,2,3都得一台台安装。但3给了启示,既然U盘可以,那硬盘上的一个分区肯定也是可以的嘛,没错,百度一下,又是一大堆资料,将安装镜像放到/boot/目录下,然后使用grub引导,启动安装。看完帖子觉得靠谱,一看现有系统分区,/boot/才100MB,不够放镜像啊,最小的minial镜像有约300MB。放其他分区?不行,其他分区安装时会格式化。怎么办?
5.不能放分区,那就放“网上”,内网中有存储服务器,放存储上吧。百度网络安装linux,一大片结果,有pxe的,有grub的。但两个都不合适,PXE的需要安装DHCP、TFTP等服务,而且,现在的各节点都是默认从硬盘启动,我还得一台台去设置首选启动为网络,放弃。grub可以引导网络OS,但这机器网卡居然都不在grub的支持范围内!!好吧,用grub2,安装了半天,发现grub2也不好配置。
6.心生一计,仅将启动需要的文件和ks.cfg放boot里,让grub引导,镜像放网络上,IP地址啥的在ks.cfg里配置,这样应该可以。若干次实验,哈哈,终于搞定。坐在办公室,敲两下就完成一台机器的系统升级与配置,感觉很爽。步骤如下:
(1)将安装镜像(cd1就可以了)解压到NFS服务器(node67),目录为/public/OS;
(2)假设要重装node24,将/public/OS/images/pxeboot/目录下的vmlinuz和initrd.img文件复制到node24的 /boot/目录下,这里记住是images/pxeboot目录下的,不是isolinux下的。搞错过一次,半天没启动。这两文件一起不到40MB,/boot够用了。
(3)在node24的 /boot/下创建ks.cfg,内容如下:
install
nfs --server=192.168.10.67 --dir=/public/OS
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 192.168.10.24 --netmask 255.255.255.0 --gateway 192.168.10.254 --ipv6 auto --nameserver 8.8.8.8 --hostname node24
rootpw --iscrypted klfj3ej03j2f02jf32f
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
clearpart --linux --drives=sdaautopartrepo --name="CentOS" --baseurl=nfs:192.168.10.67:/public/OS --cost=100
reboot
%packages
@core
@server-policy
openssh-clients-5.3p1-81.el6.x86_64
libedit-2.11-4.20080712cvs.1.el6.x86_64
%end
(4)接下来就是修改grub引导了,suse下是这个文件/boot/grub/menu.lst ,centos下是/boot/grub/grub.conf,增加一个引导项并到在第一位:
title reinstall
root (hd0,0)
kernel /vmlinuz ks=hd:sda1/ks.cfg vnc
initrd /initrd.img
因为/boot就是现在硬盘的sda1,所以指定使用ks=hd:sda1/ks.cfg,后面这个vnc很好玩,如果在办公室想看看安装进度,加上它后,打开vncviewer,输入node24:1就可以查看安装界面了。
(5)做完准备工作,把node24给reboot就可以等它自动安装了。而且配置好了IP,hostname,还不需要额外的服务。当然,都做到了这个分上,我自然会把这个复制与ks.cfg和menu.lst的修改过程写了批处理放在node67上,要安装谁,就执行./install.sh XX就搞定。