标签:kvm ip地址 虚拟机 kick start
vm有简易的自动安装,我们如何给这些kvm也自动化安装呢
我们起一个虚拟机,选择pxe 默认下去,我们会看到开机以后,这台虚拟机自动获得了一个122网段的IP地址,WTF...可我明明没有配置过DHCP
rpm -q dhcp package dhcp is not installed
嗷,我甚至没有安装过dhcp.看一下端口。
netstat -luntp |grep 67 tcp 0 0 :::46367 :::* LISTEN 1893/rpc.statd udp 0 0 0.0.0.0:67 0.0.0.0:* 2378/dnsmasq
噢 ? 是 dnsmasq ,也就是他扮演了我的虚拟机下dhcp的角色。百度是永远查不出好东西,关于这个服务的内容特别乱。
dnsmasq 的主配置文件在etc下,打开。查看一下。全部都是注释行?。。。好吧。。
不断查找,最终我们在 /var/lib/libvirt/network/ 下找到了这个元凶。。备份一下,然后就对这个default 做修改吧!
ls /var/lib/libvirt/network/ default.xml default.xml.bk
文件内容
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh net-edit default or other application using the libvirt API. --> <network> <name>default</name> <uuid>fe111cda-e2f6-4891-a8b3-0c90e0663ef0</uuid> <forward mode=‘nat‘/> <bridge name=‘virbr0‘ stp=‘on‘ delay=‘0‘ /> <mac address=‘52:54:00:37:8A:9C‘/> <ip address=‘192.168.122.1‘ netmask=‘255.255.255.0‘> <dhcp> <range start=‘192.168.122.2‘ end=‘192.168.122.254‘ /> </dhcp> </ip> </network>
我们注释掉dhcp的3行内容。。
重启服务: failed to create listening socket: Address already in use
我。。。。。。
netstat -lnutp |grep dns tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2378/dnsmasq udp 0 0 192.168.122.1:53 0.0.0.0:* 2378/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 2378/dnsmasq
我们kill 2378 ,再重启一下。OK了这次。
kill 2378 service dnsmasq restart Starting dnsmasq: [ OK ] netstat -lnutp |grep dns tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 3052/dnsmasq tcp 0 0 :::53 :::* LISTEN 3052/dnsmasq udp 0 0 0.0.0.0:53 0.0.0.0:* 3052/dnsmasq udp 0 0 :::53 :::* 3052/dnsmasq
恩。67 不监听了。再起一个虚拟机,果然没给分配地址。OKOK。
这里不直接把这个服务chkconfig off 也是因为他监听53有一个 dns 作用。我们还有用。。
=============================以上都只是准备工作啊==========================================
现在才是和kick start 真有关。。
1 肯定是安装相应的包咯
yum install dhcp syslinux tftp-server -y
2 /etc/dhcp 下有个conf 文件,我们cat 一下
cat dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see ‘man 5 dhcpd.conf‘
噢 。好吧。是耍我的。根本没有配置需要的话到上述目录去拷贝。
3 拷贝过来,我们vim 编辑一下。
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf cp: overwrite `/etc/dhcp/dhcpd.conf‘? y vim /etc/dhcp/dhcpd.conf
在去除了乱七八糟不必要的高级的功能和注释行后,配置大约如下
ddns-update-style interim; ignore client-updates; allow bootp; allow booting; option domain-name "haha.com"; option domain-name-servers 192.168.122.1; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.122.0 netmask 255.255.255.0 { range 192.168.122.200 192.168.122.250; option domain-name-servers 192.168.122.1; option domain-name "haha.com"; option routers 192.168.122.1; option broadcast-address 192.168.122.255; default-lease-time 600; max-lease-time 7200; next-server 192.168.122.1 filename="pxelinux.0";
最后的next-server 意思就是你的下一个服务器,也就是tftp服务器,我用的就是自己,指向自己。
filename 就是去tftp自动寻找的文件名。默认pxelinux.0
4 我们分别启动dhcp 和 tftp ,注意的是tftp 是xinetd 控制的,chkconfig on 重启xinetd即可。
service dhcpd start Starting dhcpd: [FAILED]
我。。。。
看日志咯。。
Aug 2 05:13:55 localhost dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1
Aug 2 05:13:55 localhost dhcpd: Copyright 2004-2010 Internet Systems Consortium.
Aug 2 05:13:55 localhost dhcpd: All rights reserved.
Aug 2 05:13:55 localhost dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Aug 2 05:13:55 localhost dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Aug 2 05:13:55 localhost dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1
Aug 2 05:13:55 localhost dhcpd: Copyright 2004-2010 Internet Systems Consortium.
Aug 2 05:13:55 localhost dhcpd: All rights reserved.
Aug 2 05:13:55 localhost dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Aug 2 05:13:55 localhost dhcpd: Can‘t chown new lease file: Operation not permitted
Aug 2 05:13:55 localhost dhcpd:
Aug 2 05:13:55 localhost dhcpd: This version of ISC DHCP is based on the release available
Aug 2 05:13:55 localhost dhcpd: on ftp.isc.org. Features have been added and other changes
Aug 2 05:13:55 localhost dhcpd: have been made to the base software release in order to make
Aug 2 05:13:55 localhost dhcpd: it work better with this distribution.
Aug 2 05:13:55 localhost dhcpd:
Aug 2 05:13:55 localhost dhcpd: Please report for this software via the CentOS Bugs Database:
Aug 2 05:13:55 localhost dhcpd: http://bugs.centos.org/
Aug 2 05:13:55 localhost dhcpd:
Aug 2 05:13:55 localhost dhcpd: exiting.
恩一大串里面我们很容易看出 Can‘t chown new lease file: Operation not permitted 就是问题所在,百度一下吧。。。方法就是更改 /etc/init.d/下 的执行脚本,将 user 和 group 改成root...
操作一下。。。果然OK ...
service dhcpd start Starting dhcpd: [ OK ] chkconfig tftp on [root@localhost dhcp]# service xinetd restart Stopping xinetd: [FAILED] Starting xinetd: [ OK ]
5. tftp的关键目录在版本不同位置不同。现在的在
pwd /var/lib/tftpboot
暂时他还是空的,我们要拷贝一些东西,第一步装包我们装了一个 syslinux, rpm -ql syslinux 一下。我们找到 我们之前在 dhcp 指定 file pxelinux.0
rpm -ql syslinux /usr/bin/gethostip #。。。。。。。省略一万字 /usr/share/syslinux/pexlinux.0 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
我们还需要拷贝两个关键文件到该目录,他们都在安装光盘中可以找到。
initrd.img vmlinuz
mount CentOS-6.5-x86_64-bin-DVD1.iso /mnt -o loop cd /mnt/ ls CentOS_BuildTag EULA images Packages repodata RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Testing-6 EFI GPL isolinux RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6 TRANS.TBL cd isolinux/ ls boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest splash.jpg TRANS.TBL vesamenu.c32 vmlinuz cp initrd.img /var/lib/tftpboot/ cp vmlinuz /var/lib/tftpboot/
6 这样tftpoot下就有3个文件,我们还需要创建一个文件夹并创建一个最简单的default配置
ls initrd.img pxelinux.0 vmlinuz mkdir pxelinux.cfg vim default default local prompt 1 timeout 60 label local localboot 1 label install kernel vmlinuz append initrd=initrd.img ramdisk_size=8192 ks=http://192.168.122.1/ks/ks.cfg
7 安装 httpd 以及 system-config-kickstart
在/var/www/html 下新建目录 CentOS.ISO 将光盘挂载到这里,长期使用也要写fstab呀。
mount /var/ftp/pub/CentOS-6.5-x86_64-bin-DVD1.iso /var/www/html/CentOS.ISO/ -o loop
在/var/www/html 下创建目录ks
命令打开 system-config-kickstart 是个图形化界面,修改一些选项。
稍微看一下,应该蛮傻的,比较关键的是添加http服务器和目录名,要打对,最后脚本添加一个用户验证一下,之中我分了几个目录,也就是说这个磁盘最小我得给6个G。
完成之后,就导出一个ks.cfg 拷贝到 /var/www/html/ks 下
8 把dhcpd xinetd httpd 全部重启一下。
开一台虚拟机给6G 以上空间,pxe
可以看到拿到地址啦。是从我们dhcp里写的从200开始拿
在boot: 后面我们输入刚才在default里写的label 也就是 install 回车
如果一切正常,接下来就如下下图,开始自动安装啦!(任何还需要人工干预都是有问题~~)
9. 最后 进入系统。。可以看到bob 用户已存在。
本文出自 “自留地” 博客,请务必保留此出处http://bob244.blog.51cto.com/7008351/1681067
标签:kvm ip地址 虚拟机 kick start
原文地址:http://bob244.blog.51cto.com/7008351/1681067