PXE啓動的原理什麼的這裏就不介紹了,網上有很多,一定要理解原理再來做,不但便於記憶,也便於操作,可以把安裝步驟模塊化,前後要融會貫通。如果有不好的地方請諒解。
環境:
centos 6.8_x86_64
Apache2.2.27編譯安裝
安裝配置DHCP服務器
rpm -qa | grep dhcp #查看DHCP服務是否已經安裝了,一般默認有個dhcp- common-4.1.1-51.P1.el6.centos.x86_64,這個不是主程序
yum install dhcp.x86_64 dhcp-devel.x86_64 -y #安裝DHCP服務和devel,必須要有devel否則出錯
cat /etc/dhcp/dhcpd.conf #查看配置文件
# DHCP Server Configuration file. #一下是查看DHCP配置文件的方法,這裏我們用第一種方法
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
===DHCP服務安裝完成============================
rpm -ql dhcp | grep sample
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample #DHCP的配置文件
egrep -v "#|^$" /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample > /etc/dhcp/dhcpd.conf
##去除dhcpd.conf.sample文件中的空行和註釋行,並重定向到/etc/dhcpdhcpd.conf文件中
vim /etc/dhcp/dhcpd.conf #編輯配置文件,留下一下內容即可,其他的參數用不到,紅色的是自己加的
subnet 192.168.199.0 netmask 255.255.255.0 { #DHCP分配的網段
range 192.168.199.2 192.168.199.6; #DHCP分配的地址段
option domain-name-servers ns1.internal.example.org; #DNS服務器地址,這裏就默認把
option domain-name "internal.example.org"; #域名
option routers 192.168.199.1; #默認路由,其實就是網關地址
option broadcast-address 192.168.199.255; #廣播地址
default-lease-time 600; #默認租期
max-lease-time 7200; #最大租期
next-server 192.168.199.214; #tftp服務器所在的地址
filename "pxelinux.0"; #網絡引導文件名,引號別忘了,我經常忘記
}
service dhcpd start #啓動服務
提示:如果服務器啓動失敗,可以查看/var/log/messages日誌信息,在之後的安裝系統時最好關閉網絡中的其他有DHCP功能的設備,比如路由器等,否則不能正確指向TFTP服務器,從而無法正常引導、啓動和安裝。
netstat -nupl | grep dhcp #查看DHCP的工作端口號
iptables -I INPUT -p udp --dport 67 -j ACCEPT #添加放火牆端口
service iptables save #保存配置規則
===DHCP服務器配置完成=======================
yum install httpd #安裝httpd服務器,我等等就用之前編譯好的httpd服務器了,但是用yum安裝的作爲演示
service httpd start #啓動httpd服務
curl localhost #測試下服務器是否正常用功了
iptables -I INPUT -p tcp --dport 80 -j ACCEPT ##添加防火牆規則
===httpd安裝和配置完成=========================
yum install tftp.x86_64 tftp-server.x86_64 -y #安裝tftp和tftp-server,同時會安裝一個xinetd
vim /etc/xinetd.d/tftp #編輯tftp文件將disable的yes改成no
disable = no
service xinetd start #啓動xinetd服務
netstat -nupl| grep xinetd #查看xinetd的工作端口
iptables -I INPUT -p udp --dport 69 -j ACCEPT #給防火牆添加開放的端口
service iptables save #保存規則
mkdir /var/www/cdrom -p #yum安裝的站點目錄是/var/www/html/,我是編譯的所以自己新建
mount /dev/cdrom /var/www/cdrom/ #爲了方便這裏將iso文件直接掛載了
cd /var/www/cdrom/isolinux/ #進入isolinux目錄
cp -v boot.msg vmlinuz vesamenu.c32 initrd.img /var/lib/tftpboot/ #複製這四個文件到指定 tftp的工作目錄
mkdir /var/lib/tftpboot/pxelinux.cfg -p #在tftp工作目錄創建pxelinux.cfg目錄
cat isolinux.cfg > /var/lib/tftpboot/pxelinux.cfg/default #查看重定向,到default文件
vim /var/lib/tftpboot/pxelinux.cfg/default
timeout 5 #超時時間
label linux
menu label ^Install or upgrade an existing system
menu default 默認選擇menu label ^Install or upgrade an existing system
kernel vmlinuz #內核文件
append initrd=initrd.img ks=http://192.168.199.214/ks.cfg
##編輯default文件添加紅色部分,即爲ks.cfg文件存放的位置,centos7還可以在理這頂安裝文件路徑,但是沒什麼意義,因爲指定了ks.cfg文件的位置後,ks.cfg文件中又指定了一次
yum install syslinux-devel.x86_64 syslinux.x86_64 -y #安裝syslinux,因爲他又我們所需 要 網 絡 引導文件
find / -name "pxelinux.0" -exec cp {} /var/lib/tftpboot/ \; #找到這個文件並且複製到指定位置
===TFTP服務+網絡引導+linux內核什麼的準備完成================
cd /var/www/ #進入站點根目錄
vim ks.cfg #添加ks.cfg的配置文件,也可以自己用圖化system-config-kickstart.noarch編輯
# Kickstart Configurator for CentOS 6.7 by yao zhang
install
url --url="http://192.168.199.214/cdrom/" #指定安裝盤的網絡位置
#text #這個看習慣開把我還是喜歡圖形界面
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%end
注意:centos7的anaconda-ks.cfg拿過來修改下安裝方式,就是上面的紅色部分就可以用了,centos6.x的不行,也有可能是我比較菜,還不知道怎麼弄,如果直接複製家目錄下的anaconda-ks.cfg,記得一定要給權限否則會報錯,ks.cfg文件出錯chmod 777 ks.cfg
#新建一個這樣的空虛擬機,不要掛載光盤,還有就是網絡一定要和我們搭建的DHCP服務器一個網絡,否則會找不到,或者直接出錯
後面全程高速公路無人駕駛模式,可以把整個過程回憶一遍,自己一定要總結,多操作,否則容易忘記。root密碼就不寫了,我是爲了強行讓自己回憶一遍修改root的步驟。我對ks文件的編輯不很熟悉,碰過好多次壁,有不對的地方還請諒解。上面的ks文件是我參考老男孩老師提供的,因爲我自己寫了6次都出問題了。
===只待開機完成了================================
===安裝完成=================================
參見錯誤:
DHCP服務器
a)centos的配置文件查找不是查找sample
b)dhcp配置文件的filename "pxelinux.0";一定不要忘記引號和分號
c)記得要麼關閉防火牆和selinux除非你非常瞭解selinux這個服務
httpd服務器
a)服務是否能夠正常工作
b)默認站點不要弄錯
c)如果是自己創建的話文件夾權限,還有最好關閉selinux
d)記得要麼關閉防火牆和selinux除非你非常瞭解selinux這個服務
tftp服務
a)如果在安裝了tftp-server,並沒有安裝xinetd記得自行安裝,yum的話一般都是裝的
b)如果tftpboot目錄是自己創建的注意權限和selinux問題
c)pxelinux.cfg目錄下的文件名不要出錯
d)記得要麼關閉防火牆和selinux除非你非常瞭解selinux這個服務
default文件
a)超時時間自己隨意
b)centos6不用在append的後面加inst.stage2=http://IP/iso,直接ks=http://IP/ks.cfg就好了
加了反而在centos6.X中會出錯
c)centos7的menu default是在媒體測試選項上的記得自己改下
ks.cfg
a)這個文件的配置也是個大學問,每一句話是有順序問題的,所以順序不能亂
b)常見的編輯方法就是system-config-kickstart.noarch編輯
c)centos6.x如果都到了選語言的界面之後,出現異常提出的問題,絕對就是ks.cfg文件有問題,再改改