rhel+pxe+kickstart配置(包含kvm)

ufwdp 贡献于2014-07-17

作者 L  创建于2012-06-19 11:23:00   修改者凌达  修改于2014-07-15 08:23:00字数9040

文档摘要:rhel+pxe+kickstart配置(包含kvm)
关键词:

rhel+pxe+kickstart配置(包含kvm) 参考: 网络上关于pxe+kicksart的文章很多,主要参考了下面这篇文件 http://code.google.com/p/redhatsolution/wiki/RHEL_PXE_Installation_Server 一、概述 1、客户通过网卡的PXE功能,从DHCP服务器获取IP。 关于网卡的PXE功能,即网卡中包含PEX Client。 DHCP服务器为PXE Client分配IP地址。 在PXE Client的ROM中,包含TFTP Client,用于通过TFTP协议从TFTP Srver上下载所需要的文件。 2、DHCP服务器在为PXE Client分配IP的同时, "filename "pxelinux.0";" 参数中指定的文件(pxelinux.0)推送给客户端; 3、客户端执行pxelinux.0; 4、pxelinux.0程序读取TFTP服务器上的配置文件(通常是/tftpboot/pxelinux.cfg/default,但是也可以根据客户端的MAC地址单独指定); 二、TFTP 需要安装一下两个包: tftp-server tftp tftp服务由xinetd服务管理. vi /etc/xinetd.d/tftp 将disable=yes修改为disable=no 重启xinetd。 三 DHCP vi /etc/dhcpd.conf,指定IP地址等信息。 1. ddns-update-style interim; 2. ignore client-updates; 3. 4. 5. next-server 172.18.1.1; 6. filename "pxelinux.0"; 7. 8. host host1 { 9. hardware ethernet 00:1a:a0:2b:38:81; 10. fixed-address 192.168.2.101; 11. } 12. host host2 { 13. hardware ethernet 00:1a:a0:2b:38:82; 14. fixed-address 192.168.2.102; 15. } centos6.4 1. ddns-update-style interim; 2.     ignore client-updates; 3. 4. deny unknown-clients; 5. 6. subnet 192.168.0.0 netmask 255.255.255.0 { 7.    authoritative; 8.    #range 192.168.0.22 192.168.0.22;  9.    default-lease-time 3600; 10.    max-lease-time 3600; 11.    option subnet-mask 255.255.255.0;  12.    option routers 192.168.0.1;  13.    option domain-name-servers 202.106.196.115; 14. 15.    group{ 16.      next-server 192.168.0.180; 17.     filename "pxelinux.0"; 18.     host host1 { 19.         hardware ethernet 20:68:9D:28:AF:12; 20.         fixed-address 192.168.0.56; 21.     } 22.    } 23. 24. } 在这里,限制了允许使用dhcp的mac地址,是为了防止已经配置从网卡启动的机器重启后都会安装成linux系统。 另外特别的地方在于增加了tftp-server需要推送给客户端的启动文件: filename "pxelinux.0"; 因为 tftp 的默认目录是 /tftpboot,所以文件的绝对路径就是: /tftpboot/pxelinux.0" pxelinux.0文件来源见后面 另外 next-server 参数,告诉客户端在获取到 pxelinux.0 文件之后去哪里获取其余的启动文件: next-server 192.168.1.1; 注:如果使用的是RHEL5 kvm83的虚拟机,可能会出现无法获取到IP的情况, Search for server (DHCP)....No IP address .No IP address .No IP address .No IP address 解决的办法: 在物理机的br网卡上添加参数:DELAY=0  DEVICE=br0 TYPE=Bridge BOOTPROTO=static NM_CONTROLLED=no IPADDR= NETMASK= GATEWAY= ONBOOT=yes DELAY=0 RHEL6不存在这样的问题。 Reproducible with RHEL6Server 6.0 (qemu-kvm-0.12.1.2-2.113.el6_0.3.x86_64) : "brctl setfd bridge_intra 0" is required to PXEboot. Additional info : - no DHCP request is retrieved on the DHCP-server, hence no IP-address is assigned to the DomU ; - when executing 'dhcp' at the gPXE-prompt within the DomU, a DHCP-request is retrieved and an IP-address is subsequently assigned to the DomU. 详细信息查看: https://bugzilla.redhat.com/show_bug.cgi?id=533684 https://bugzilla.redhat.com/show_bug.cgi?id=586324 四 PXE 安装syslinux yum -y install syslinux 配置 1、安装好syslinux以后将pxelinux.0这个文件复制到/tftpboot目录: 1. rpm -ql syslinux | grep 'pxelinux.0' 2. /usr/lib/syslinux/pxelinux.0 3. cp /usr/lib/syslinux/pxelinux.0 /tftpboot 对于centos 6.5 yum install syslinux-tftpboot.x86_64 2、用于网络安装的内核文件 将安装光盘中的images/pxeboot/{vmlinuz,initrd.img}文件复制到/tftpboot/目录下 注:也可以拷贝到其他的安装目录,如/tftpboot/centos6,如果不是根目录,则下面的default配置文件也需要做相应的修改。 对于ubuntu cp  /mnt/install/vmlinuz /tftpboot/ cp /mnt/install/netboot/ubuntu-installer/amd64/initrd.gz  /tftpboot/ 3、客户端配置文件 配置文件存放于: /tftpboot/pxelinux.cfg/ mkdir /tftpboot/pxelinux.cfg/ 将光盘中的isolinux/isolinux.cfg文件复制为/tftpboot/pxelinux.cfg/default 1. cp isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default 2. 对于ubuntu: cp /mnt/install/netboot/ubuntu-installer/amd64/boot-screens/syslinux.cfg  /tftpboot/pxelinux.cfg/default  需要修改几个地方: default vesamenu.c32 修改为: default linux prompt 1 如果重启后,卡在press the key to begin the installation process这里,就是上面的配置文件没有修改。 另外找不到bootloader也可能是这里造成的。 精简的配置文件: 1. #默认启动的是 'label linux' 中标记的内核 2. default linux 3. 4. # 显示 'boot: ' 提示符。 5. # 为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。 6. prompt 1 7. 8. # 在用户输入之前的超时时间,单位为 1/10 秒。 9. timeout 600 10. 11. # 显示某个文件的内容,注意文件的路径。默认是在 /tftpboot 目录下。 12. # 也可以指定位类似 'centos6/boot.msg' 这样的,路径+文件名。 13. display boot.msg 14. # 'label' 指定你在 'boot:' 提示符下输入的关键字。 15. # 比如: 16. # boot: linux[ENTER] 17. # 这个会启动 'label linux' 下标记的 kernel 和 initrd.img 文件。 18. # 这里还定义了其它几个关键字: 19. # boot: text 20. # boot: ks 21. # 22. # kernel 参数指定要启动的内核。同样要注意路径,默认是 /tftpboot 目录。 23. # append 指定追加给内核的参数,能够在 gurb 里使用的追加给内核的参数,在这里也 24. # 都可以使用。 25. # 26. #ksdevice=eth0,当我们有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定的话,安装的时候系统会让你选择。 27. label linux 28. menu label ^Install or upgrade an existing system 29. menu default 30. kernel vmlinuz 31. #append initrd=initrd.img ks=http://172.18.6.1/ks.cfg ksdevice=eth0 ip=172.18.6.199 32. append initrd=initrd.img ks=http://172.18.6.1/ks.cfg ksdevice=eth0 ip=dhcp 用于ubuntu 1. default install 2. prompt 0 3. timeout 600 4. 5. label install 6. menu default 7. kernel vmlinuz 8. append ks=http://10.21.5.180/ks.cfg preseed/url=http://10.21.5.180/ubuntu12042/preseed/ubuntu-server.seed vga=788 initrd=initrd.gz  提示文件找不到? 打开tftp的日志,查看时哪个文件找不到。 打开日志方法:/etc/xinetd.d/tftp  在下面这一行添加-v参数 server_args             = -s /var/lib/tftpboot -v 通过之日看到是找不到pxelinux.0,因为tftp的根路径不对 还有错误tftp erro file not found,都是因为文件找不到造成的。 注意修改server_args             = -s /tftpboot -v 这里指定根目录 关于错误 PXE-T00 Permission deny PXE-E36 Error received from tftp server PXE-MOF exiting intel pxe rom 是selinux造成的,可以查看/var/log/audit/audit.log    日志: type=AVC msg=audit(1373957864.225:17126): avc:  denied  { read } for  pid=5864 comm="in.tftpd" name="pxelinux.0" dev=dm-0 ino=2883586 scontext=unconfined_u:system_r:tftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:default_t:s0 tclass=file type=SYSCALL msg=audit(1373957864.225:17126): arch=c000003e syscall=2 success=no exit=-13 a0=608e22 a1=0 a2=1b6 a3=4000 items=0 ppid=5833 pid=5864 auid=500 uid=99 gid=99 euid=99 suid=99 fsuid=99 egid=99 sgid=99 fsgid=99 tty=(none) ses=35 comm="in.tftpd" exe="/usr/sbin/in.tftpd" subj=unconfined_u:system_r:tftpd_t:s0-s0:c0.c1023 key=(null) type=AVC msg=audit(1373957864.227:17127): avc:  denied  { read } for  pid=5865 comm="in.tftpd" name="pxelinux.0" dev=dm-0 ino=2883586 scontext=unconfined_u:system_r:tftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:default_t:s0 tclass=file type=SYSCALL msg=audit(1373957864.227:17127): arch=c000003e syscall=2 success=no exit=-13 a0=608e22 a1=0 a2=1b6 a3=4000 items=0 ppid=5833 pid=5865 auid=500 uid=99 gid=99 euid=99 suid=99 fsuid=99 egid=99 sgid=99 fsgid=99 tty=(none) ses=35 comm="in.tftpd" exe="/usr/sbin/in.tftpd" subj=unconfined_u:system_r:tftpd_t:s0-s0:c0.c1023 key=(null) 可以通过临时关闭selinux来解决:setenforce 0 或者针对这个denied信息来设置权限,而不关闭selinux 如果不希望所有的系统都使用默认的 /tftpboot/pxelinux.cfg/default 文件,可以以客户端机器的网卡地址命名配置文件。 比如:网卡 MAC 地址是88:99:AA:BB:CC:DD,针对这台主机的配置文件就是: 01-88-99-aa-bb-cc-dd 以01开头,用 -(dash) 分隔,用小写字母表示 MAC 地址。 还可以用16进制数来表示 IP 地址,比如,IP 地址为 192.0.2.91,转换为十六进制数就是: C000025B 针对IP为192.0.2.91 这个 IP 的主机的配置文件,文件名就是C000025B。 注意:pxelinux 搜索的文件的顺序是: 1. /tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd 2. /tftpboot/pxelinux.cfg/C000025B 3. /tftpboot/pxelinux.cfg/C000025 4. /tftpboot/pxelinux.cfg/C00002 5. /tftpboot/pxelinux.cfg/C0000 6. /tftpboot/pxelinux.cfg/C000 7. /tftpboot/pxelinux.cfg/C00 8. /tftpboot/pxelinux.cfg/C0 9. /tftpboot/pxelinux.cfg/C 10. /tftpboot/pxelinux.cfg/default 五、kickstart配置文件 再gnome环境下,使用system-config-kickstart GUI工具来生成kickstart的配置文件。 用于ubuntu的kickstart文件,因为bug,所以hostname需要在post里修改才可以生效。 1. lang en_US 2. langsupport en_US 3. keyboard us 4. mouse 5. timezone --utc Asia/Shanghai 6. rootpw --disabled 7. user moz --fullname="test" --password 1234567890  8. reboot 9. install 10. url --url http://10.21.5.180/ubuntu12042  11. bootloader --location=mbr 12. zerombr yes 13. clearpart --all --initlabel #not use lvm #part /boot --fstype=ext4 --size=200    #part swap --size=8192    #part / --fstype=ext4 --size=51200 #part /data --fstype=ext4 --size=1 --grow    #use lvm part /boot --fstype=ext4 --size=200    part swap --size=8192 part pv.01 --size=1 --grow volgroup vg_01 pv.01 logvol  /  --vgname=vg_01  --size=1  --grow  --name=lv_root 14. auth 15. --useshadow 16. --enablemd5 17. network --hostname=autoubuntu --noipv6 --bootproto=dhcp --device=eth0  18. firewall --service=ssh --port=8002:tcp 19. skipx 20. %packages 21. openssh-server 22. openssh-client 23. #mysql-server-5.5 24. #apache2 25. #nginx 26. %post 27. ( 28.         sed -i 's/kickseed/autoubuntu/g' /etc/hostname 29.         sed -i 's/kickseed/autoubuntu/g' /etc/hosts 30. 31.         wget -O /etc/iptables.rules http://10.21.5.180/kickstart/iptables.rules 32.         wget -O /opt/init-system_for_ubuntu1204.sh http://10.21.5.180/kickstart/init-system_for_ubuntu1204.sh 33.         chmod u+x /opt/init-system_for_ubuntu1204.sh 34. ) 1>/root/post_install.log 2>&1 更多kickstart信息,查看 http://fedoraproject.org/wiki/Anaconda/Kickstart 生成的kickstart文件,新磁盘仍然询问是否初始化标签? clearpart --all --initlabel --initlabel,根据不同体系结构把磁盘标签初始化为缺省设置(例如,msdos用于x86而gpt用于Itanium).当 安装到一个崭新的硬盘时,这很有用,安装程序不会询问是否应该初始化磁盘标签 安装后自动重启 ks.cfg任意位置添加reboot 对于RHEL5 kvm83上启动的虚拟机,不要添加reboot,因为需要先改成从磁盘启动,否则自动重启后又从网卡启动,又开始装系统了。 启动级别改为3 %end之前添加: 1. %post 2. ( 3. sed -i 's/id:5:initdefault:/id:3:initdefault:/g' /etc/inittab 4. )  1>/root/post_install.log 2>&1 kvm,创建了两个磁盘,一个装系统,一个装数据,为了将usr安装到单独的磁盘 1. part /boot --ondisk=vda --fstype="ext4" --size=300 2. part swap --ondisk=vda --fstype="swap" --size=4096 3. part / --ondisk=vda --asprimary --fstype="ext4" --grow --size=1 4. part /usr --ondisk=vdb --asprimary --fstype="ext4" --grow --size=1 lvm 1. part /boot --ondisk=sda --fstype="ext4" --size=200 2. part swap --ondisk=sda --fstype="swap" --size=8192 3. part pv.01 --grow --size=1 4. volgroup myvg pv.01 5. logvol / --vgname=myvg --size=30720 --fstyp="ext4" --name=lv_root 6. logvol /usr --vgname=myvg --size=1 --grow --fstyp="ext4" --name=lv_usr 六、HTTP 可以使用http,nfs,ftp等提供安装介质,在这里,我使用http 1. mount -o loop -t iso9660 /data/CentOS-6.2-x86_64-bin-DVD1.iso /data/centos6 nginx: 1. location /centos6/ { 2.  alias /data/centos6/; 3. } kickstart: 1. url --url="http://172.18.6.143/centos6/" 如果需要第二张光盘中的内容,将第二张光盘中Packages中的rpm包拷贝到第一张光盘中的Packages目录即可。 七、问题 1、如果使用kickstart安装过一次,失败,重启后,boot from hard disk ctrl + b autoboot 2、使用convirture管理kvm虚拟机,如何设置从pxe启动? set boot device to network (PXE). Select VM --> Edit Settings-> Miscellaneous --> Set boot param to "n" Select VM --> Edit Settings-> Miscellaneous --> Set nextboot param to "n"

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档