注意:linux中提供dhcp功能的程序不僅是dhcpd還有dnsmasq(在嵌入式環境中,同時提供dns和dhcp服務)
注意:基於網卡引導的主要目的,是爲了在客戶機上安裝操做系統,dhcp、tftp僅完成了開頭部分,dhcp能給客戶端分配地址了,也能加載pxe文件,接下來還要去加載一個可以啓動操做系統安裝過程的安裝程序anaconda(是一個應用程序,須要運行在內核空間和另一個可選的組件ramdisk上邊),anaconda啓動以前,客戶端還須要啓動一個kernel和一個ramdisk,加載並展開kernel的是bootloader(boot.cat,isolinux.bin,isolinux.cfg,這三個文件聯合起來扮演grub的做用),bootloader會加載光盤上的kernel和ramdisk(以光盤爲例),最終啓動安裝過程,這些文件都須要fileserver來提供
PXE:
其餘配置選項:
filename:指明引導文件名稱;
next-server:提供引導文件的服務器IP地址;html
filename "pxelinux.0"; next-server 172.16.100.67; PXE:preboot execute environment,Intel dhcp,tftp,file server(yum repository) CentOS 6 PXE: yum -y install syslinux tftp-server cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/ mkdir /var/lib/tftpboot/pxelinux.cfg/ cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default CentOS 7 PXE: yum -y install syslinux tftp-server cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /media/cdrom/images/pxelinux/{vmlinuz,initrd.img} /var/lib/tftp/boot/ cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/ mkdir /var/lib/tftpboot/pxelinux.cfg/ 建立/var/lib/tftpboot/pxelinux.cfg/default---給pxelinux.0加載完之後,提供一個配置文件,根據這個配置文件決定後續如何加載其餘文件 內容相似以下: default menu.c32---使用menu.c32這個程序來提供一個菜單給客戶端,展現一個文本的菜單,vesamenu.c32提供圖形化的菜單 prompt 5---提供一個可編輯的提示服務 timeout 30---提示服務超時時間 MENU TITLE CentOS 7 PXE Menu---全局菜單 LABEL linux MENU LABEL Install CentOS 7 x86_64 KERNEL vmlinuz---使用KERNEL指明使用的內核文件 APPEND initrd=initrd.img inst.repo=http://172.16.100.67/centos7 ks=http://172.16.100.67/centos7.cfg---向內核傳遞的參數,ramdisk的相對路徑,安裝過程當中使用的yum倉庫路徑,自動安裝須要的kickstart文件
Cobbler:
pxe的二次封裝,能將多種系統糅合在一塊,python語言開發的,cobbler的某些配置還須要依賴互聯網環境
pxe:
dhcp:dhcpd,dnsmasq
tftp:tftp-server
程序包:cobbler (屬於epel倉庫)
服務:
centos7:
systemctl start cobblerd.service
#cobbler check
主配置文件:/etc/cobbler/settings
server
next_server
default_password_crypted
概念:
distro,profile,systempython
視頻中演示:
172.16.100.67
lftp http://172.16.0.1/cobbler
cd ks_mirror/
cd CentOS-7-X86_64-1503/
cd images/pxeboot/---能夠看到vmlinuz和initrd.img
lcd /var/lib/tftpboot/---lcd切換本地目錄
mget vmlinuz initrd.img---把vmlinuz和initrd.img下載到/var/lib/tftpboot目錄下
cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk.c32} /var/lib/tftpboot/
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd pxelinux.cfg/
vim default----這個配置文件和isolinux.cfg相似(安裝光盤上的isolinux目錄)
default menu.c32---使用menu.c32這個程序來提供一個菜單給客戶端,展現一個文本的菜單,vesamenu.c32提供圖形化的菜單
prompt 5---提供一個可編輯的提示服務
timeout 30---提示服務超時時間
MENU TITLE CentOS 7 PXE Menu---全局菜單linux
LABEL linux---引用時的label MENU LABEL Install CentOS 7 x86_64---真正顯示的label KERNEL vmlinuz---使用KERNEL指明使用的內核文件 APPEND initrd=initrd.img inst.repo=http://172.16.100.67/centos7 ks=http://172.16.100.67/centos7.cfg---向內核傳遞的參數,ramdisk的相對路徑,安裝過程當中使用的yum倉庫路徑,自動安裝須要的kickstart文件
視頻中是掛載的cd光盤
mkdir /media/cdrom
mount -r /dev/cdrom /media/cdrom---以只讀形式掛載
yum install httpd
mkdir /var/www/html/centos7
mount --bind /media/cdrom /var/www/html/centos7---綁定在這個目錄上,能夠不用複製文件了,綁定關係存在於內存中,重啓失效
vim centos7.cfg
install
xconfig --startxonboot
keyboard --vckeymap=cn --xlayouts='cn'
reboot---安裝後重啓
rootpw --iscrypted $1$HDHf2v4i$LMo.xGHfxQDOf8e043C.g/---安裝時的密碼
timezone Asia/Shanghai
url --url="http://172.16.100.67/centos7/"
lang zh_CN
user --groups=wheel --name=mageedu --password=$6$1eWrOetY$DfLZgqu --iscrypted --gecos="MageEdu"---添加一個用戶
firewall --disabled---關閉防火牆
network --bootproto=dhcp---引導協議
auth --useshadow --passalgo=sha512---認證方式爲sha512
text---文本模式安裝
firstboot --disable---第一次啓動時不給用戶提供一個配置
selinux --permissive
ignoredisk --only-use=sda---忽略硬盤,若是有多塊硬盤,安裝過程當中只適配sda這一塊硬盤
bootloader --location=mbr --boot-drive=sda---bootloader安裝在哪
zerombr---清空mbr
clearpaart --all --initlabel---清空全部分區
part /boot --asprimary --fstype="xfs" --size=512---分區配置
part swap --fstype="swap" --size=2048---分區配置
part /usr --fstype="xfs" --size=20480---分區配置
part / --fstype="xfs" --size=20480---分區配置web
%packages---表示要裝哪些包br/>@base
@core
lftp
screen
vget
treeredis
%endvim
%post---安裝完之後還要執行一些腳本,視頻中把這些腳本刪除了
systemctl set-default multi-user.target
rm -f /etc/yum.repos.d/CentOS-Base.repo
vget -q -O /etc/yum.repos.d/CentOS-Base.repo http://172.16.0.1/repos/CentOS-Base.repo
vget -q -O /etc/yum.repos.d/epel.repo http://172.16.0.1/repos/epel.repo
echo -e 'Mage Education Learning Services\nhttp://www.magedu.com\n' >> /etc/issue
%end
cp centos7.cfg /var/www/html/---複製到這個目錄,經過http服務能夠訪問到centos
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS7 PXE Menu安全
LABEL linux MENU LABEL Install CentOS 7 x86_64 KERNEL vmlinuz APPEND initrd=initrd.img inst.repo=http://172.16.100.67/centos7 ks=http://172.16.100.67/centos7.cfg
systemctl start httpd.service---啓動web服務
ss -tnl---80端口
到此處爲止,pxe環境就搭建好了,客戶端開機啓動時,會提示
Trying to load:pxelinux.cfg/default ok
boot:---意思是如今引導哪個,若是輸入linux(就是default中的LABEL),若是不給的話就是默認的MENU LABEL Install CentOS 7 x86_64服務器
centos6.7的演示過程 172.16.100.6
yum install -y dhcp
cd /etc/dhcp/
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option domain-name-servers 172.16.0.1;app
default-lease-time 3600;
max-lease-time 7200;
log-facility local7;
接下來是安裝tftp服務
yum -y install tftp-server tftp
chkconfig tftp on---啓動服務或者編輯
vim /etc/xinetd.d/tftp
service tftp
{
socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /var/lib/tftpboot
disable =yes---這裏改成no
per_source =11
cps =100 2
flags =IPv4
}
可使用chkconfg --list---能夠列出全部的服務
service xinetd restart
chkconfig xinetd on---若是想讓tftp開機自動啓動還須要xinetd服務開機自動啓動
ss -unl---查看69號端口
接下來是kickstart文件
vim centos6.cfg
firewall --disabled
install
url -url="http://172.16.100.6/centos6"
rootpw --iscrypted $1$1RHppr42$VMesh73wBqhUTjKp6OYOD.
auth --useshadow --passalgo=sha512
text
firstboot --disable
keyboard us
lang en_US
selinux --disabled
logging --level=info --host=172.16.100.6
reboot
timezone Asia/Shanghai
bootloader --qppend="rhgb crashkernel=auto quiet" --location=mbr --deiveorder="sda"
zerombr
clearpart --all
part /boot --fstype="ext4" --size=200
part pv.008 --size=61440
volgroup vg0 --pesize=8192 pv.008
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
%end
%packagesbr/>@base
@basic-desktopbr/>@core
%end
cp centos6.cfg /var/www/html/
service httpd start
ss -tnl---查看80端口
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default---centos6能夠直接複製
vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.7!---全局菜單項
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
label linux
menu label Install or upgrade an existing system<br/>menu default<br/>kernel vmlinuz<br/>append initrd=initrd.img<br/>label vesa<br/>menu label
Install system with basic video driver
kernel vmlinuz
append initrd=initrd.img nomodeset
label rescue
menu label Rescue installed system<br/>kernel vmlinuz<br/>append initrd=initrd.img rescue<br/>label local<br/>menu label Boot from
local drive
localboot 0xffff
label memtest86
menu label `Memory test
kernel memtest
append ~
安裝cobbler---在epel源中
yum info cobbler---查詢屬於哪一個倉庫
yum -y install cobbler---安裝程序包
rpm -ql cobbler | less---查看安裝了哪些文件
systemctl start cobblerd.service---啓動服務
systemctl status cobblerd.service---查看服務狀態
collber check---檢查cobbler環境是否是正常的,web服務綁定目錄會有影響
vim /etc/cobbler/settings---安裝完之後,編輯配置文件
簡單瞭解一下cobbler
對於cobbler而言,它要同時管理多個系統安裝環境,就要引入更多抽象的概念來實現管理
使用同一個yum倉庫,不一樣的kickstart文件就能夠部署出不一樣的系統環境(雖然系統發行版同樣,可是系統環境不同),同時同一個kickstart文件能夠部署多個系統(基於IP地址,多個相同的)
cobbler有不少層次:第一個層次:distro(發行版)(倉庫)(也能夠告訴distro一個kickstart,來生一個默認的profile,不給kickstart也能夠生成默認的profile只不過不能完成自動化安裝),第二個層次:profile(不一樣的配置),第三個層次:system
如何建立distro:一、create:建立一個yum倉庫二、import:導入安裝光盤視頻中使用cobbler check命令出現了9個問題第一個問題:vim /etc/cobbler/settingsserver: 172.16.100.67---把127.0.0.1改成外網地址,指提供服務的本機地址修改完之後必須重啓systemctl restart cobblerd.servicecobbler check---會發現只剩下8個問題了第二個問題:vim /etc/cobbler/settingsnext_server: 172.16.100.67---指向tftp server的地址或者使用cobbler sync同步一下配置第三個問題:關閉selinux第四個問題:有一些network boot-loader不存在,運行cobbler-get-loaders會自動下載(這個不重要)boot-loader要放在/var/lib/cobbler/loaders/下第五個問題:/etc/xinetd.d/rsync沒有安裝(centos7的rsync並不依靠守護進程來運行,這裏是按照centos6的方式來檢測的)視頻中只要確保rsync服務能啓動就能夠systemctl start rsyncd.socket第六個問題:沒有安裝debmirror包---能夠忽略yum install debmirror第七個問題:默認爲超級用戶設定的密碼不安全useradd user1echo "mageedu" | passwd --stdin user1 tail -1 /etc/shadow---顯示最後一行信息,複製這行信息vim settings 找到default password_crypted:"複製到這裏"systemctl restart cobblerdcobbler check