Linux kickstart: 無人值守。 在安裝linux的過程中,它允許通過nfs,http或ftp協議來進行網絡安裝,但是在一般情況下需要一個安裝引導介質(引導光盤,引導軟盤,u盤等)
Kickstart安裝centos:
安裝centos時候需要annconda (分區,語言,鍵盤,主機名,網絡等相關的設置信息)把它們放到一個文件中,稱爲ks.cfg
Ks.cfg可以放在服務器中,也可以放到本地硬盤中(u盤等)
在服務器中需要寫
boot:linux ks=url
如果再本地硬盤需要
linux =hd:da1:/目錄/文件
實驗環境:
版本:CentOS release 6.5
內核:2.6.32-431.el6.i686
實驗拓撲:
服務器的創建:
[root@wang ~]mkdir /media/cdrom
[root@wang ~]# mount /dev/cdrom /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only 先掛載光盤
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install vsftpd lftp ftp dhcp -y 安裝必要的軟件包(安裝過就不需要重複安裝)lftp ftp軟件包是供測試用。
[root@wang ~]# service vsftpd start 啓動vsftp服務器
[root@wang ~]# chkconfig vsftpd on 設置爲開機啓動
[root@wang ~]# lftp 127.0.0.1
lftp 127.0.0.1:~> dir
drwxr-xr-x 2 0 0 4096 Mar 01 2013 pub
lftp 127.0.0.1:/> 測試是否可用
[root@wang ftp]# cd /media/cdrom/
[root@wang cdrom]# cp -rf . /var/ftp/ 將光盤文件拷貝的ftp文件裏面
接下來做ks.cfg
需要安裝system-config-kickstart 軟件包
[root@wang cdrom]# cd Packages/
[root@wang Packages]# ll |grep kickstart 搜索
-r--r--r--. 2 root root 316464 Nov 25 2013 pykickstart-1.74.14-1.el6.noarch.rpm
-r--r--r--. 2 root root 944648 Feb 24 2013 system-config-kickstart-2.8.6.5-1.el6.noarch.rpm
[root@wang Packages]# yum --disablerepo=\* --enablerepo=c6-media install system-config-kickstart 安裝軟件包
[root@wang Packages]# system-config-kickstart 運行(基於圖形界面運行,帶圖形端的xshell也可運行)
我用圖形界面運行
出現紅色方框的東西時需要
[root@wang Packages]# cd /etc/yum.repos.d/ 進入這個目錄
[root@wang yum.repos.d]# ll
total 16
-rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo
-rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo
[root@wang yum.repos.d]# mkdir a
[root@wang yum.repos.d]# mv CentOS-Base.repo a
[root@wang yum.repos.d]# mv CentOS-Debuginfo.repo a
[root@wang yum.repos.d]# mv CentOS-Vault.repo a 把除了CentOS-Media.repo外其他的文件刪除或者挪走,這裏我挪到了a文件夾裏
[root@wang yum.repos.d]# vim CentOS-Media.repo 編輯這個文件改成這樣
enabled=1 啓用該設置
gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-6 密鑰的位置設置正確
然後重新執行
然後設置
設置成這樣既可
安裝的軟件包。需要什麼安裝什麼
後面2項暫時不需要
保存即可
[root@wang ~]# ls
Desktop Music Templates install.log
Documents Pictures Videos install.log.syslog
Downloads Public anaconda-ks.cfg ks.cfg
查看,文件已經產生
[root@wang ~]# cp ks.cfg /var/ftp/ 將ks.cfg文件複製到ftp根目錄
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install dhcp 安裝dhcp
[root@wang ~]# vim /etc/dhcp/dhcpd.conf 編輯dhcp.conf文件
以上面的方式讀取例子
:36,$d刪除36行之後的東西
寫上這些,其他的刪除
[root@wang ~]# service dhcpd configtest 然後測試下語法是否有錯誤
[root@wang ~]# service dhcpd start
Starting dhcpd: [ OK ]
開啓dhcp
[root@wang ~]# netstat -tupln |grep 67 查看67端口是否用着
udp 0 0 0.0.0.0:67 0.0.0.0:* 2421/dhcpd
[root@wang ~]# chkconfig dhcpd on
[root@wang ~]# service iptables stop 關閉防火牆
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@wang ~]# setenforce 0 把防禦策略設置爲警告級別
然後打開需要安裝的機器,需要插上光盤引導,不插光盤的方式在下面介紹
我這裏用虛擬機做演示
打開電源
按esc鍵
輸入這回車
開始安裝了
如果沒有光盤可以製作引導盤
製作引導光盤
[root@wang ~]# cd /media/cdrom/
[root@wang cdrom]# cd isolinux/
[root@wang isolinux]# ll
total 35407
-r--r--r--. 1 root root 2215 Nov 29 2013 TRANS.TBL
-r--r--r--. 1 root root 2048 Nov 29 2013 boot.cat
-r--r--r--. 2 root root 84 Nov 29 2013 boot.msg
-r--r--r--. 2 root root 142 Nov 27 2013 grub.conf
-r--r--r--. 2 root root 31742048 Nov 27 2013 initrd.img
-r--r--r--. 2 root root 24576 Nov 29 2013 isolinux.bin
-r--r--r--. 2 root root 936 Nov 29 2013 isolinux.cfg
-r--r--r--. 2 root root 165080 Nov 29 2013 memtest
-r--r--r--. 2 root root 151230 Nov 29 2013 splash.jpg
-r--r--r--. 2 root root 162860 Nov 29 2013 vesamenu.c32
-r-xr-xr-x. 4 root root 4002656 Nov 29 2013 vmlinuz
掛載硬盤進入硬盤isolinux目錄下 發現isolinux目錄下是引導啓動的必要組件
[root@wang cdrom]# mkdir /tmp/iso
[root@wang cdrom]# cp -r isolinux/ /tmp/iso/ 將isolinux文件拷出來
[root@wang cdrom]# cd /tmp/iso/
[root@wang iso]# ll
total 4
dr-xr-xr-x. 2 root root 4096 Jul 22 03:28 isolinux
[root@wang iso]# cp /root/ks.cfg ./
[root@wang iso]# ls
isolinux ks.cfg 將ks.cfg也拷貝到iso文件中
[root@wang iso]# mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T .
製作引導盤的命令必須在iso的目錄下執行
[root@wang iso]# ll
total 35796
dr-xr-xr-x. 2 root root 4096 Jul 22 03:28 isolinux
-rw-r--r--. 1 root root 1036 Jul 22 03:29 ks.cfg
-rw-r--r--. 1 root root 36646912 Jul 22 03:34 myiso.iso
命令執行後生成了myiso.iso文件
然後裝linux的時候放入引導光盤
從光盤啓動
輸入ks.cfg在光盤的路徑即可安裝
如果不輸入boot安裝可以這樣做:
[root@wang iso]# cd isolinux/
[root@wang isolinux]# vim isolinux.cfg 編輯vim isolinux.cfg 文件
將其改成這樣 default linux ks=cdrom:/ks.cfg 默認使用光盤的ks.cfg文件
prompt 1 出現boot
timeout 10 默認啓動的等待時間
[root@wang iso]# ll
total 35796
dr-xr-xr-x. 2 root root 4096 Jul 22 04:06 isolinux
-rw-r--r--. 1 root root 1036 Jul 22 03:29 ks.cfg
-rw-r--r--. 1 root root 36646912 Jul 22 03:34 myiso.iso
[root@wang iso]# rm -rf myiso.iso 刪除以前燒錄的muiso.iso文件重新燒錄
[root@wang iso]# mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T .
然後掛載新燒錄的啓動盤裝機即可什麼都不需要輸入直接安裝
(三)如果沒有光驅需要使用PXE引導安裝
Pxe 預啓動執行環境 是RPL的升級產品,
嚴格來說,PXE 並不是一種安裝方式,而是一種引導的方式。進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協議使計算機可以通過網絡啓動。協議分爲 client 和 server 端,PXE client 在網卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入內存執行,由 PXE client 將放置在遠端的文件通過網絡下載到本地運行。運行 PXE 協議需要設置 DHCP 服務器和 TFTP 服務器。DHCP 服務器用來給 PXE client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協議到 TFTP Server 上下載所需的文件。
這是bios的pxe選項
實驗拓撲:
[root@wang ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only 掛載光驅
[root@wang ~]# yum --disablerepo=\* --enablerepo=c6-media install dhcp vsftpd tftp-server -y
安裝必要的軟件包
[root@wang ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@wang ~]# chkconfig vsftpd on
[root@wang ~]# cp -r /media/cdrom/. /var/ftp/ 啓動vsftpd服務,將系統的安裝文件拷貝到/var/ftp中
[root@wang cdrom]# vim /etc/dhcp/dhcpd.conf 編輯dhcpd..conf文件同上
注意這個是做tftp的需要在 subnet 192.168.1.0 netmask 255.255.255.0 {
34 range 192.168.1.20 192.168.1.50;
35 option routers 192.168.1.254; 36
36 next-server 192.168.1.3; 說明tftp地址
37 filename "pxelinux.0"; 文件驅動的位置
[root@wang cdrom]# service dhcpd configtest 檢測語法
Syntax: OK
[root@wang cdrom]# service dhcpd start
Starting dhcpd: [ OK ]
[root@wang cdrom]# chkconfig dhcpd on
[root@wang cdrom]# rpm -ql tftp-server 查詢tftp文件
/etc/xinetd.d/tftp
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-0.49
/usr/share/doc/tftp-server-0.49/CHANGES
/usr/share/doc/tftp-server-0.49/README
/usr/share/doc/tftp-server-0.49/README.security
/usr/share/doc/tftp-server-0.49/README.security.tftpboot
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
[root@wang cdrom]# vim /etc/xinetd.d/tftp 編輯tftp文件
將disable改爲no
[root@wang cdrom]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
重啓超級守護進程
[root@wang cdrom]# chkconfig xinetd on
[root@wang cdrom]# yum --disablerepo=\* --enablerepo=c6-media install syslinux 安裝syslinux數據包
[root@wang cdrom]# rpm -ql syslinux| grep pxelinux
/usr/share/doc/syslinux-4.02/pxelinux.txt
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0 搜索pxelinux的位置
[root@wang cdrom]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 將pxe驅動拷貝到tftp根目錄
[root@wang cdrom]# cd /var/lib/tftpboot/ 進入tftp根目錄
[root@wang tftpboot]# ll
total 28
-rw-r--r--. 1 root root 26828 Jul 22 06:04 pxelinux.0
[root@wang tftpboot]# mkdir pxelinux.cfg 新建個pxelinux.cfg文件夾(存放驅動的目錄)
[root@wang tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default 將配置文件拷貝到pxelinux.cfg文件夾裏,並改名稱爲default
[root@wang tftpboot]# cp /media/cdrom/isolinux/vmlinuz ./ 將內核文件拷貝到tftp根目錄
[root@wang tftpboot]# cp /media/cdrom/isolinux/initrd.img ./ 拷貝驅動到根目錄
[root@wang tftpboot]# cd pxelinux.cfg/
[root@wang pxelinux.cfg]# ll
total 4
-r--r--r--. 1 root root 936 Jul 22 06:09 default
[root@wang pxelinux.cfg]# vim default 編輯default文件
將default 默認設置爲linux
Ks=ftp://192.168.1.3/ks.cfg 的位置說明下
然後安裝每個主機的時候主機名什麼的需要不一樣,但是機器是無人值守的,所以需要編輯腳本將機器的名字改下,這裏設想去ip地址的最後一個值作爲名稱的一部分來解決問題
[root@wang ~]# vim test.sh 編輯vim test.sh
#!/bin/bash
STRING1=`ifconfig eth0|grep 'inet\>'|awk '{print $2}'`
NUM1=${STRING1##*.}
sed -i -e "s@HOSTNAME.*@HOSTNAME=station$NUM1.a.com@" /etc/sysconfig/network
sed -i -e "s@BOOTPROTO.*@BOOTPROTO=static\nIPADDR=192.168.1.$NUM1\nNETMASK=255.255.255.0@" /etc/sysconfig/network-scripts/ifcfg-eth0
即腳本文件
[root@wang ~]# cd /etc/yum.repos.d/
[root@wang yum.repos.d]# ll
total 16
-rw-r--r--. 1 root root 1926 Nov 27 2013 CentOS-Base.repo
-rw-r--r--. 1 root root 638 Nov 27 2013 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 Nov 27 2013 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Nov 27 2013 CentOS-Vault.repo
[root@wang yum.repos.d]# rm *
rm: remove regular file `CentOS-Base.repo'? y
rm: remove regular file `CentOS-Debuginfo.repo'? y
rm: remove regular file `CentOS-Media.repo'? n
rm: remove regular file `CentOS-Vault.repo'? y
[root@wang yum.repos.d]# vim CentOS-Media.repo
刪除yum.repos.d目錄下的文件,直留一個CentOS-Media.repo並編輯
如此即可
[root@wang yum.repos.d]# yum install system-config-kickstart -y 安裝此軟件包
在桌面系統下運行[root@wang yum.repos.d]# system-config-kickstart
這個選項和前面的一樣只是最後一項多個
最有一項,寫上腳本,然後保存
打開ks.cfg檢查是否有問題[root@wang mnt]# vim ks.cfg
查看腳本是否正確
[root@wang mnt]# cp ks.cfg /var/ftp/ 把ks.cfg放入/var/ftp中
[root@wang mnt]# cd /var/lib/tftpboot/
[root@wang tftpboot]# cd pxelinux.cfg/
[root@wang pxelinux.cfg]# vim default 從default文件可以看出來爲什麼把ks.cfg放入/var/ftp中
顯示ks的路徑在ftp服務器的根目錄裏
[root@wang pxelinux.cfg]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@wang pxelinux.cfg]# setenforce 0
關閉防火牆,設置防禦策略爲警告級別
然後進行測試,把光盤都拔出
將 network boot from(從網絡啓動置頂)
F10 保存退出
成功進行安裝linux
查看主機名
以修改
查看ip配置文件
地址已經修改爲靜態ip