您的位置:首页 > 其它

线程安全的单例模式

2010-12-31 03:06 176 查看
一. 介绍: 网上有很多关于kickstart+pxe+dhcp+vsftp/http实现centos/rhel全自动安装部署的文章,因此关于原理性的东西我这里就不写了,只说说我的理解和安装配置过程中遇到的错误以及解决办法。

首先简单介绍下kickstart全自动部署的实现流程: 第一步:主机加电,并选择从网卡启动。 第二步:主机从dhcp server获取ip地址,并得到tftp服务器的ip地址和pxe文件名。(由dhcp.conf文件中的filename "/pxelinux.0";和next-server 192.168.168.1;两项指定。) 第三步:主机从tftp服务器下载pxelinux相关文件,并启动到安装方式选择界面,也就是“boot:”提示的地方。 第四步:最后主机从vsftp server下载到自动应答安装提问的ks.cfg文件以及RHEL或centos的源目录树。 我是在win7+vmware6.5+centos5.3(final)的环境下完成的实验: 1台装好的centos5.3模拟右边的服务器,一台新创建的虚拟机(刚分配了虚拟的硬件)模拟左边的待安装主机,两者通过vmnet4虚拟网络连接,模拟直连或通过网络连接的服务器和客户端。 必要的条件: Dhcp server、tftp server、vsftp server以及由KickStart所生成的ks.cfg配置文件,最后当然是带有一个 PXE 支持网卡的将安装的主机。 二. 安装 下面就根据以上图示进行相应服务器的安装(上述3个服务其实都装在一台centos5.3的虚拟机中) 1.安装DHCP服务: [root@lfs ~]# yum install dhcp –y #因为yum会自动检查系统中是否已经安装了dhcp server,如果已安装,则会比较版本,如果有更新的版本,则会升级安装。 2、生成主配置文件/etc/dhcpd.conf:
ddns-update-style interim; ignore client-updates; #add for pxe filename "/pxelinux.0"; next-server 192.168.168.1; subnet 192.168.168.0 netmask 255.255.255.0 { # --- default gateway option routers 192.168.168.1; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.60.254; option time-offset -18000 range dynamic-bootp 192.168.168.128 192.168.168.254; default-lease-time 21600; max-lease-time 43200; #配置文件每行末尾都应加上分号(;),否则语法错误,dhcp server无法启动。 #启动DHCP服务:
[root@lfs ~]# /etc/init.d/dhcpd start 2. 安装Vsftp服务:
[root@lfs ~]# yum install vsftpd -y
[root@lfs ~]# /etc/init.d/vsftpd start
-----------------------------------------------
3. 安装tftp服务,并复制PXE启动时所需要的文件: [root@lfs ~]# yum install tftp-server -y
[root@lfs ~]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
[root@lfs ~]# mkdir /tftpboot/pxelinux.cfg [root@lfs~]#cp /cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@lfs ~]# cp /cdrom/images/pxeboot/initrd.img /tftpboot/
[root@lfs ~]# cp /cdrom/images/pxeboot/vmlinuz /tftpboot/ #修改tftp的配置文件,并启动tftp服务: [root@lfs ~]#vim /etc/xinetd.d/tftp #我这里只是简单的把”disable =yes”改成了”disable =no” #然后启动xinetd服务,因为tftp服务是由xinetd统一管理的 [root@lfs ~]#/etc/init.d/xinetd start
#修改/tftpboot/pxelinux.cfg/default文件
[root@lfs ~]# vim /tftpboot/pxelinux.cfg/default default ks timeout 6 label ks kernel vmlinuz append ks initrd=initrd.img ks=ftp://192.168.168.1/ks.cfg #这里我只把修改过的行粘贴了出来。这里要注意,default标签后面跟的名称一定和label标签后的名称一样,安装程序才能自动跳转,第一次改的时候,我没有注意到,结果到了boot:提示符就停住了,不过可以进行交互式的安装,呵呵。 #另外,当以后系统出现故障时,也可以直接从pxe引导,到了boot:提示符,输入linux rescue就可以直接从网络上进入救援模式进行系统修复了。

4.生成ks.cfg安装配置文件:
#由于我的linux没有安装x或gnome环境,所以我是参考着rhel5和centos5的手册,直接来修改的anaconda-ks.cfg文件。 [root@lfs ~]#cp anaconda-ks.cfg{,.bak} #修改完后将文件拷贝到vsftp的根目录 [root@lfs ~]# cp ks.cfg /var/ftp/ #以下是我的ks.cfg文件的内容: ########install linux in real text method######### cmdline install lang en_US keyboard us network --bootproto=dhcp --device=eth0 --onboot=on --hostname=cent_pxe1 ######use the ftp method to install the linux########### url --url=ftp://192.168.168.1/pub rootpw --iscrypted ********************** authconfig --enableshadow --enablemd5 firewall --disabled firstboot --disable selinux --disabled timezone --utc Asia/Shanghai ##########just use when install rhel########### #key –skip ####part the disk###### bootloader --location=mbr --driveorder=sda,hda clearpart --all --initlabel part /boot --fstype=ext3 --size=200 --asprimary part swap --fstype=swap --recommended part / --fstype=ext3 --grow --size=1 reboot ####install packages######### %packages @development-libs @editors @text-internet @core @base @admin-tools @development-tools kexec-tools device-mapper-multipath imake %post sed -i -e 's/#\(set bell-style\).*/\1 none/' /etc/inputrc #########configure the dns file#################### sed -i -e '1i\nameserver 202.181.202.140\nnameserver 8.8.8.8' -i -e '1,$d' /etc/resolv.conf ########make the resolv.conf unchangeable########### chattr +i /etc/resolv.conf ##############update the time############# echo -n "*/15 * * * * /usr/sbin/update 210.72.145.44 > /dev/null 2>&1" >> /var/spool/cron/root cp /usr/share/vim/vim70/vimrc_example.vim /root/.vimrc #########configure the vim editor############## sed -i -e '/set mouse/s/^/" /' /root/.vimrc sed -i -e '/set mouse/a\set vb\n' /root/.vimrc sed -i -e "/alias mv/a\alias vi='vim'" /root/.bashrc #######kill the useless services############ for sers in `ls /etc/rc3.d/S* | cut -c 15-` do echo $sers case $sers in crond | irqbalance | microcode_ctl | network | random | sendmail | sshd | syslog | local | xinetd ) echo "Skip these services!" ;; *) echo "change $sers to off" chkconfig --level 235 $sers off service $sers stop ;; esac done #一些比较重要的选项的解释: ##之所以用cmdline代替text,是因为cmdline模式可以将安装过程中的步骤完全显示在输出中。 ##Install表示是全新安装,而不是update ## url --url=ftp://192.168.168.1/pub指定系统源目录树(我这里使用的ftp方式)。如果是http方式,则应该是url=http://***** ## network选项指定待安装主机的网卡参数,以及主机名等。 ##rootpw 指定root用户的密码;iscrypted表示密码是加密过的。 ##reboot选项表示系统安装完毕后自动重启,必须要放在%packages部分之前,上一部分之后,不然会出错。 ##%packages部分就是要安装的软件包,5.3版本会自动解决依赖问题。 ##最后的%post部分就是做一些个性化的配置。例如我这里的关闭beep报警、设置resolv.conf等。 三.故障处理: 1.python报错: File "/usr/bin/anaconda", line 1006, in ? anaconda.intf.run(anaconda) OSError: [Errno 2] No such file or directory #这里只截取了错误的最后部分: 刚开始我以为是python版本过低或者anaconda程序有问题造成的,于是我就把python和anaconda都修复升级了一下,结果问题依旧。最后请出无敌的google,一搜终于发现问题了,原来是需要安装linux的虚拟机内存太小(只分配了256M)。 2.kickstart中%post部分无法执行: 报以下错误: File "/usr/bin/anaconda", line 1006, in ? anaconda.intf.run(anaconda) IOError: [Errno 2] No such file or directory: '/var/log/post_install.log' 后来发现是因为我参考网上文档在%post后面加上了--log=/var/log/post_install.log 但是在rhel5.3和centos5.3中已经不存在这个选项了,所以出现问题。 3.%post部分中修改/etc/resolv.conf文件不生效: Post部分的命令都已经生效了,但就是涉及resolv.conf文件的修改不成功。最后发现是由于开机的时候运行dhclient程序造成。于是做了个简单的改变: [root@lfs ~]# chattr +i /etc/resolv.conf 参考文档: http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Installation_Guide/index.html http://www.centos.org/docs/5/html/5.2/Installation_Guide/index.html http://bbs.linuxtone.org/viewthread.php?tid=527&highlight=kickstart本文出自 “xiaofengmanlou” 博客,请务必保留此出处http://bruceshaw.blog.51cto.com/145356/252899
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: