PXE+KickStart自动化安装Linux系统
? PXE+kickstart模式自動安裝系統
? PXE介紹
預啟動執行環境(Preboot eXecution Environment,PXE)也被稱為預執行環境,提供了一種使用網絡接口(Network Interface)啟動計算機的機制。這種機制讓計算機的啟動可以不依賴本地數據存儲設備(如硬盤)或本地已安裝的操作系統
? Kickstart介紹
kickstart是一個定義了Linux安裝過程的配置文件,比如要在系統中使用的時區、如何對驅動器進行分區、或者應該安裝哪些軟件包。有了這個文件可以解放雙手,讓Linux安裝過程按照我們預先定義的要求進行自動化安裝,同時部署大量主機時十分有用。一般centos系統安裝后,會在root目錄下生成一個名為anaconda-ks.cfg的kickstart配置文件。
? PXE+kickstart模式原理
1、網卡上的pxe芯片有512字節,存放DHCP和TFTP的客戶端
2、啟動計算機選擇網卡啟動
3、pxe上的dhcp客戶端會向dhcp服務器,申請IP地址
4、dhcp服務器分配給他IP地址,同時通過以下字段,告訴pxe,TFTP的地址和它的下載的文件
1)next-server 10.1.1.31
2)filename “pxelinux.0”
5、pxelinux.0告訴pxe要下載的配置文件是pxelinux.cfg目錄下面的default
6、pxe下載并依據配置文件的內容下載啟動必須的文件,并通過ks.cfg開始系統安裝
? PXE+kickstart模式準備工作
配置服務,(比喻dhcp、tftp、httpd)
在dhcp和tftp配置文件中添加各個客戶端機器的信息
創建自動化部署文件(kickstart:ks.cfg)
將安裝媒介解壓到http、ftp、nfs存儲庫中
? 安裝http、tftp、dhcp等服務
? 配置epel源
? Yum安裝httpd、tftp-server、sync、openssl-devel、system-config-kickstart、xinetd
注意:xinetd在centos6中就是tftp服務
? 配置dhcp服務
修改配置文件,添加下面紅色部分內容
名詞解釋:
Subnet:當前局域網網段
Netmask:當前局域網網段掩碼
Range:能分配的地址池
option routers:網關
next-server :tftp共享文件地址(nfs、ftp等)
filename:需加載pxe文件名
? 配置tftp服務
修改tftp服務配置文件,如下:
? 添加內核和系統信息等到/var/lib/tftpboot目錄下
? 掛載虛擬系統盤至/mnt/目錄下
? 添加內核和系統到/var/lib/tftpboot目錄下,提供給新設備下載
[root@pxe-kickstart-31 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@pxe-kickstart-31 ~]# ls /var/www/html/centos-6.8-x86_64/isolinux/ boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz boot.msg initrd.img isolinux.cfg splash.jpg vesamenu.c32 [root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/vesamenu.c32 /var/lib/tftpboot/ [root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/vmlinuz /var/lib/tftpboot/ [root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/initrd.img /var/lib/tftpboot/ [root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/ [root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/boot.msg /var/lib/tftpboot/ 文件介紹: pxelinux.0:pxelinux啟動程序(網口系統啟動程序) vmlinuz:內核文件(Kernel) initrd.img:輔助內核完成系統啟動 isolinux.cfg:設定默認啟動的內核和操作系統 boot.msg:無關緊要? 修改pxe配置文件
[root@pxe-kickstart-31 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default [root@pxe-kickstart-31 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default default vesamenu.c32 ##默認啟動選項,對應var/www/html/centos-6.8- ##x86_64/isolinux/vesamenu.c32 #prompt 1 ##是否啟動選項 timeout 600 ##在沒有選擇的時候等待的時間單位0.1秒 display boot.msg ……………… label ksmenu label [ks]kernel vmlinuzappend initrd=initrd.img ks=http://10.1.1.31/ks.cfg label linuxmenu label [local]menu defaultkernel vmlinuzappend initrd=initrd.img …………………………名稱介紹:Label:一個Label代表著一個選項menu label:選項注釋menu default:設置為默認選項kernel vmlinuz:內核ks=http://10.1.1.31/ks.cfg:指定ks.cfg文件路徑initrd=initrd.img:指定initrd.img? 創建ks.cfg文件(就是大家常說的kickstart應答文件)
[root@pxe-kickstart-31 ~]# vim /var/www/html/ks.cfg 注意:一定要放在/var/www/html/目錄下,因為在/var/lib/tftpboot/pxelinux.cfg/default指定了路徑,而且在這個文件中也要指定路徑? 使用openssl生產密碼(新安裝的系統登錄密碼“qaz123”)
[root@pxe-kickstart-31 ~]# openssl passwd -1 -salt '1234' 'qaz123' ##生產密碼作為root登錄使用,把這個密碼復制到ks.cfg文件中rootpw --iscrypted行 $1$1234$0pbznOh8eQPo.9RflsYMF0 [root@pxe-kickstart-31 ~]# cat /var/www/html/ks.cfg ##Kickstart Configurator for CentOS 6.7 install url --url="http://10.1.1.31/centos-6.8-x86_64/" 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.8 timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 rootpw --iscrypted $1$1234$0pbznOh8eQPo.9RflsYMF0 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名稱解釋:
關鍵字 含義
install 告知安裝程序,這是一次全新安裝,而不是升級upgrade。 url --url="
" 通過FTP或HTTP從遠程服務器上的安裝樹中安裝。 url --url=“http://10.0.0.7/CentOS-6.7/”
url --url ftp://:@/
nfs --server=nfsserver.example.com --dir=/tmp/install-tree
text 使用文本模式安裝。 lang 設置在安裝過程中使用的語言以及系統的缺省語言。lang en_US.UTF-8
keyboard 設置系統鍵盤類型。keyboard us zerombr 清除mbr引導信息。 bootloader 系統引導相關配置。
bootloader --location=mbr --driveorder=sda --append=“crashkernel=auto
rhgb quiet”
–location=,指定引導記錄被寫入的位置.有效的值如下:mbr(缺省),partition(在包含內核的分區的第一個扇區安裝引導裝載程序)或none(不安裝引導裝載程序)。
–driveorder,指定在BIOS引導順序中居首的驅動器。
–append=,指定內核參數.要指定多個參數,使用空格分隔它們。 network 為通過網絡的kickstart安裝以及所安裝的系統配置聯網信息。 network --bootproto=dhcp
–device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
–bootproto=[dhcp/bootp/static]中的一種,缺省值是dhcp。bootp和dhcp被認為是相同的。 static方法要求在kickstart文件里輸入所有的網絡信息。 network --bootproto=static
–ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 請注意所有配置信息都必須在一行上指定,不能使用反斜線來換行。
–ip=,要安裝的機器的IP地址.
–gateway=,IP地址格式的默認網關.
–netmask=,安裝的系統的子網掩碼.
–hostname=,安裝的系統的主機名.
–onboot=,是否在引導時啟用該設備.
–noipv6=,禁用此設備的IPv6.
–nameserver=,配置dns解析. timezone 設置系統時區。timezone --utc Asia/Shanghai authconfig 系統認證信息。authconfig --enableshadow --passalgo=sha512
設置密碼加密方式為sha512 啟用shadow文件。 rootpw root密碼 clearpart 清空分區。clearpart
–all --initlabel
–all 從系統中清除所有分區,–initlable 初始化磁盤標簽 part 磁盤分區。 part /boot --fstype=ext4 --asprimary --size=200 part swap --size=1024 part / --fstype=ext4 --grow --asprimary --size=200
–fstype=,為分區設置文件系統類型.有效的類型為ext2,ext3,swap和vfat。
–asprimary,強迫把分區分配為主分區,否則提示分區失敗。
–size=,以MB為單位的分區最小值.在此處指定一個整數值,如500.不要在數字后面加MB。
–grow,告訴分區使用所有可用空間(若有),或使用設置的最大值。 firstboot 負責協助配置redhat一些重要的信息。 firstboot --disable selinux 關閉selinux。selinux --disabled
firewall 關閉防火墻。firewall --disabled logging 設置日志級別。logging --level=info
reboot 設定安裝完成后重啟,此選項必須存在,不然kickstart顯示一條消息,并等待用戶按任意鍵后才重新引導,也可以選擇halt關機。
總結
以上是生活随笔為你收集整理的PXE+KickStart自动化安装Linux系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAD删除Entity的所有XData(
- 下一篇: 建网站要多少钱?