環境:關閉防火牆、selinux
注意:虛擬機進行網絡安裝的話,7.3以后的系統是需要2G以上的內存
[root@kickstart ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@kickstart ~]# uname -r 3.10.0-693.el7.x86_64 [root@kickstart ~]# getenforce Disabled [root@kickstart ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) [root@kickstart ~]# hostname -I 10.0.0.201 172.16.1.201
博主使用的是虛擬機搭建
此篇博主在搭建中的每一步都列出了會出現的錯誤和解決方式,如果出錯了,不要着急,耐心看。
有錯、排錯是提升的最快方式。
kickstart的原理及組件
首先安裝DHCP
yum install dhcp -y
配置DHCP配置文件
cat >>/etc/dhcp/dhcpd.conf<<EOF subnet 172.16.1.0 netmask 255.255.255.0 { ## 指定網段 range 172.16.1.100 172.16.1.199; ## 地址范圍 option subnet-mask 255.255.255.0; ## 分配的掩碼 default-lease-time 21600; ## 地址租約 max-lease-time 43200; ## 最大租約 next-server 172.16.1.201; ## 下一步找什么 filename "/pxelinux.0"; ## 要下載的文件(請求下載啟動文件) } EOF
啟動dhcp查看日志
systemctl start dhcpd --- 啟動 systemctl status dhcpd --- 查看狀態 tailf /var/log/messages --- 查看日志
dhcp相關錯誤須知
然后安裝TFTP
yum install tftp-server -y
啟動服務
[root@kickstart ~]# systemctl start tftp.socket [root@kickstart ~]# systemctl status tftp.socket ● tftp.socket - Tftp Server Activation Socket Loaded: loaded (/usr/lib/systemd/system/tftp.socket; disabled; vendor preset: disabled) Active: active (listening) since 二 2017-11-14 10:09:55 CST; 25s ago Listen: [::]:69 (Datagram) 11月 14 10:09:55 kickstart systemd[1]: Listening on Tftp Server Activation ...t. 11月 14 10:09:55 kickstart systemd[1]: Starting Tftp Server Activation Socket. Hint: Some lines were ellipsized, use -l to show in full.
tftp相關錯誤須知
報錯是在TFTP服務的根目錄找不到啟動文件pxelinux.0
解決:下載安裝syslinux
安裝syslinux,生成/pxelinux.0文件
[root@kickstart tftpboot]# yum install syslinux -y [root@kickstart tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@kickstart tftpboot]# ll 總用量 28 -rw-r--r-- 1 root root 26764 11月 14 10:16 pxelinux.0
錯誤須知
首先排除最簡單故障原因:selinux是否關閉,防火牆是否關閉
上面的錯誤是因為pxelinux.0這個小系統的配置文件(default)不存在,或者文件名不對
然后進行鏡像掛載
檢查一下虛擬機是否使用了鏡像
然后進行掛載
[root@kickstart tftpboot]# mkdir -p /var/www/html/CentOS7 [root@kickstart tftpboot]# mount /dev/cdrom /var/www/html/CentOS7/ mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@kickstart tftpboot]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/sda3 98G 1.5G 97G 2% / devtmpfs 479M 0 479M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 120M 895M 12% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /var/www/html/CentOS7
從鏡像中找到相關的配置文件
[root@kickstart tftpboot]# cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/ [root@kickstart tftpboot]# mkdir -p /var/lib/tftpboot/pxelinux.cfg [root@kickstart tftpboot]# cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
安裝http
作用1:提供自動應答文件下載
作用2:提供安裝系統所需的所有rpm包下載
下載安裝 [root@kickstart tftpboot]# yum install httpd -y 啟動服務 [root@kickstart tftpboot]# systemctl start httpd.service 檢測 [root@kickstart tftpboot]# curl http://172.16.1.201/CentOS7/
編輯default配置文件
[root@kickstart ks_config]# cat /var/lib/tftpboot/pxelinux.cfg/default default ks prompt 0 label ks kernel vmlinuz append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS7-ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth1
自動安裝(編寫ks文件)
命令段
install開頭,到%pre
包組段
以%packages開頭,以%end結束
腳本段
以%post開頭,以%end結束,在安裝完系統之后執行的相關Linux命令、腳本
以%pre開頭,以%end結束,在安裝完系統之前執行的相關Linux命令、腳本

[root@kickstart ks_config]# cat CentOS7-ks.cfg # Kickstart Configurator for CentOS 7 by yao zhang install ## 告知這是一次安裝程序 url --url=http://172.16.1.201/CentOS7/ ## 通過ftp或http從遠程服務器安裝的地址 text ## 使用文本模式安裝 lang en_US.UTF-8 ## 設置安裝過程中使用的語言字符集 keyboard us ## 設置系統鍵盤類型為us zerombr ## 清除mbr引導信息 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location=mbr ## 指定引導記錄被寫入的位置 --driveorder=sda ## 指定在BIOS引導順序中居首的驅動器 --append="crashkernel=auto rhgb quiet" ## 指定內核參數,要指定多個參數空格分隔,為通過網絡的kickstart安裝以及所安裝的系統配置聯網信息。 network --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.202 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate network --bootproto=static --device=eth1 --ip=172.16.1.202 --netmask=255.255.255.0 --activate network --hostname=Cobbler ## 以上是靜態配置ip網絡信息的寫法 #network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS7 ## 動態配置ip網絡信息的寫法和配置主機名 timezone --utc Asia/Shanghai ## 設置時區為亞洲上海 authconfig --enableshadow --passalgo=sha512 ## 系統認證信息,這里要是寫密文密碼需加 設置密碼加密方式為sha512 啟用shadow文件 rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/ ## 加密的root密碼 clearpart --all --initlabel ## 清空分區,清空所有分區 part /boot --fstype xfs --size 1024 ## 為分區設置文件系統類型為xfs,size設置大小 part swap --size 1024 part / --fstype xfs --size 1 --grow ## grow把剩余容量都給這個分區 firstboot --disable ## 協助配置服務器的重要信息 selinux --disabled ## 關閉selinux firewall --disabled ## 關閉防火牆 logging --level=info ## 設置日志級別 reboot ## 設置安裝完成后重啟,必須存在 %packages ## 這一部分是要安裝的一些包 @^minimal @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet wget vim bash-completion %end %post ## 安裝后執行的命令,如果要一鍵化搭建集群,這里可以執行寫好的shell或ansible劇本進行搭建 systemctl disable postfix.service %end
低級錯誤
報錯原因:selinux沒關
解決:關閉selinux
CentOS7.4網絡安裝
安裝過程的常見報錯
原因:CentOS6和7的default文件中的append這一行不同
解決方法:改append這一行
歡迎大家私信,不足之處請指出。