pxe安裝centos系統

來源:互聯網
上載者:User

標籤:pxe

環境:

系統:centos7.1

平台:VirtualBox虛擬機器

所安裝的系統:centos6.7、centos7.1


大體的過程:

1、由dhcp為客戶機分配地址,並提供客戶機啟動所需的檔案和tftp伺服器位址。

2、客戶機自動從tftp下載bootloader第一階段所需的檔案。pxelinux.0檔案

3、自動開始從tftp下載bootloader第二階段所需的檔案(提供視窗菜單,並啟動相應核心和傳遞參數)。

isolinux.cfg ,splash.jpg,esamenu.c32,vmlinuz,initrd.img。

4、核心運行之後,啟動anaconda安裝程式並載入kickstart檔案,從http伺服器下載程式開始安裝。

一、安裝centos6.7.

1、安裝配置dhcp、tftp與httpd服務。

[[email protected] ~]# yum install httpd tftp-server tftp dhcp -y

配置dhcpd。配置目錄/etc/dhcp/。  複製dhcp配置範例檔案:

[[email protected] dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  dhcpd.confcp: overwrite ‘dhcpd.conf’? y

配置結果:

#option domain-name "star.com";        #指定搜尋域,在我們這裡用不到,注釋了。#option domain-name-servers 192.168.40.100;            #DNSdefault-lease-time 3600;                                    # 預設租約max-lease-time 7200;                                         #最長租約log-facility local5;                                                #日誌。 要在/etc/rsyslog.conf中添加local5日誌設施。也可以預設不用修改。subnet 192.168.40.0 netmask 255.255.255.0 {        #添加範圍。        range 192.168.40.10 192.168.40.20;                #位址集區        filename "pxelinux.0";                                        #用戶端要去找的檔案。        next-server 192.168.40.100;                              #用戶端去哪裡找filename的檔案。}#host node1 {                                                        #如果作位址保留區,或只是為單台主機安裝系統。就只設定這個。#       hardware ethernet 0:0:c0:5d:bd:95;            ##       filename "pxelinux.0";#       next-server 192.168.40.100;#}

啟動的時候如果有問題,可以一直啟動dhcpd,會顯示哪些行有錯誤。

啟動完成 ss -unl尋找67連接埠是否開啟,沒問題我們用客戶機測試一下。

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/7B/52/wKiom1bLGlbg8h2AAAAnFnT1E3k963.png" title="dhcp.png" alt="wKiom1bLGlbg8h2AAAAnFnT1E3k963.png" />

看起來工作正常。


啟動tftpd,在centos7裡面,systemd就已經有xinetd的特性了,不用再來使用xinetd啟動tftp。我們只要啟動socket就可以, 主程式systemd會帶為啟動。

systemctl start tftpd.socket    , 啟動並查看69/UDP是否開啟。

啟動httpd。預設配置就可以了。


2、複製所需檔案啟動安裝。

安裝syslinux。 這個程式裡面是一堆的bootloader檔案。其中也包括pxe網路的bootloader。相當於是grub的第一階段引導。

cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/                    #pxelinux.0就是syslinux產生的。cp /mnt/cdrom/isolinux/{splash.jpg,vesamenu.c32} /var/lib/tftpboot/        #centos6光碟片中的檔案。用來產生引導視窗,並通過設定檔載入對應核心和傳遞參數。相當於是grub的第二階段所需的檔案。 cp /mnt/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/     #用於pxe引導的核心與initrd檔案, 不過我這裡用md5sum發現光碟片裡正常的核心與initrd檔案與pxe目錄裡面的一樣,centos7也是。mkdir /var/lib/tftpboot/pxelinux.cfg/                                                    #這個裡面就是要放vesamenu.c32的設定檔。cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

這裡的pxelinux.0載入完成以後,它就會再從相同位置載入第二階段所需的檔案。第二階段再載入核心與initrd。

那麼現在用於引導的第一和第二階段就已經好了。就剩在配置菜單中為核心傳遞ks參數。不過在此之前我們就先來提供ks檔案與軟體倉庫,軟體倉庫這裡就用光碟片了。

傳遞給核心的ks參數是anacoda程式要用的,也是自動安裝的關鍵。

我這裡的ks檔案內容:

firewall --disabled install                                            url --url="  rootpw --iscrypted $6$3hHx9zVZ$ShB3kPo0UeHpetxNXEJr2GynXg2rcg2lgCflfTbuxN1yfUbrUmBJu3P/ncD/X467M1jN2yxiNWnBExozzjafg1  textfirstboot --disablekeyboard uslang en_USselinux --disabledreboottimezone  Asia/Shanghaibootloader --append="rhgb crashkernel=auto quiet" --location=mbr --driveorder="sda"zerombr clearpart --all  part /boot --fstype="ext4" --size=200part pv.008 --size=61440volgroup vg0 --pesize=8192 pv.008logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480logvol swap --name=swap --vgname=vg0 --size=2048logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480%packages@base@core%end

這個檔案中有的內容也不是很清楚, 直接複製馬哥的,自己給簡化了一下。可以安裝system-config-kickstart程式來設定ks檔案。

檔案放在httpd伺服器的主目錄裡。 anaconda支援http協議,不用再使用tftp了。

[[email protected] ~]# ls /var/www/htmlcentos6  centos6.cfg

同時ks檔案中所指定的url就是倉庫的位置,我這裡就在相同目錄的centos6下面。


設定引導菜單。

vim /var/lib/tftpboot/pxelinux.cfg/default 

default vesamenu.c32#prompt 1timeout 20menu background splash.jpgmenu title Welcome to CentOS 6.7!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label linux  menu label ^Install CentOS6  menu default  kernel vmlinuz  append initrd=initrd.img ks=http://192.168.40.100/centos6.cfg

把用不到的都刪除了。 並且添加參數ks。 就是從哪裡下載ks檔案。

現在我們引導的第一階段和第二階段看起來都完成了。核心如果載入順利,並啟動anaconda,然後再成功下載ks檔案,anaconda如果可以順利的按著ks檔案安裝完成,也就算安裝完成了。

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7B/52/wKiom1bLKSry2UeOAAAwinC155E974.png" title="dhcp5.png" alt="wKiom1bLKSry2UeOAAAwinC155E974.png" />

在這裡倒數第二行可以看到為什麼要在pxelinux.cfg/default裡面放菜單。 pxelinux.0預設讀取的檔案就是這個。

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/7B/52/wKiom1bLKKGDDt92AAPhodutgEk737.png" title="dhcp1.png" alt="wKiom1bLKKGDDt92AAPhodutgEk737.png" />

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7B/52/wKiom1bLKQiwyBzwAAAI0ZinmcE597.png" style="float:none;" title="dhcp2.png" alt="wKiom1bLKQiwyBzwAAAI0ZinmcE597.png" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7B/52/wKiom1bLKUKRpXVwAAAM8a8ODiA840.png" title="dhcp4.png" alt="wKiom1bLKUKRpXVwAAAM8a8ODiA840.png" />

開始安裝了。結果也正常。


二、安裝centos7.1。

個人以為在一般情況下,第一二階段的引導與系統版本的關係並不是必須。起碼在同是centos系統的6和7版本之間還可以通用。

那麼即然上面我們的引導都做好了,這裡也就只剩複製一下核心檔案,添加啟動菜單,ks檔案與軟體倉庫了。

ks檔案:

installkeyboard --vckeymap=cn --xlayouts=‘cn‘rebootrootpw --iscrypted $6$3hHx9zVZ$ShB3kPo0UeHpetxNXEJr2GynXg2rcg2lgCflfTbuxN1yfUbrUmBJu3P/ncD/X467M1jN2yxiNWnBExozzjafg1timezone Asia/Shanghaiurl --url="http://192.168.40.100/centos7"lang zh_CNfirewall --disablednetwork  --bootproto=dhcp --device=eth0auth  --useshadow  --passalgo=sha512textfirstboot --disableselinux --permissiveignoredisk --only-use=sdabootloader --location=mbr --boot-drive=sdazerombrclearpart --all --initlabelpart /boot --asprimary --fstype="xfs" --size=512part swap --fstype="swap" --size=2048part /usr --fstype="xfs" --size=20480part / --fstype="xfs" --size=20480%packages@base@core%end

來看一下現在的httpd的根目錄:

[[email protected] html]# lscentos6  centos6.cfg  centos7  centos7.cfg

複製一下核心檔案 : 目前的目錄在tftp根目錄。

cp /mnt/cdrom1/images/pxeboot/initrd.img initrd.7.imgcp /mnt/cdrom1/images/pxeboot/vmlinuz vmlinuz.7[[email protected] tftpboot]# lsinitrd.7.img  initrd.img  pxelinux.0  pxelinux.cfg  splash.jpg  vesamenu.c32  vmlinuz  vmlinuz.7

注意:不要複製成centos6的核心了。

修改啟動菜單。

default vesamenu.c32timeout 100                            #時間改長了一點,現在是10秒。menu background splash.jpgmenu title Welcome to CentOS 6.7!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label linux  menu label ^Install CentOS6  menu default  kernel vmlinuz  append initrd=initrd.img ks=http://192.168.40.100/centos6.cfglabel linux  menu label ^Install CentOS7  kernel vmlinuz.7  append initrd=initrd.7.img ks=http://192.168.40.100/centos7.cfg~

也就是多了4行用於centos7的菜單。menu default是用於預設啟動的。

我們來縷一下,dhcp發送啟動引導檔案。客戶機收到檔案啟動引導,開始載入第二階段。成功以後,會開始載入核心檔案,核心檔案再啟動anaconda。anaconda載入ks檔案,開始安裝過程。

我們來測試一下:

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/7B/54/wKioL1bLyvOjdhTHAAL5PMvi3RM146.png" title="dhcp_2.png" alt="wKioL1bLyvOjdhTHAAL5PMvi3RM146.png" />

看起來工作正常。重新進入6也工作正常 。 下面是7的。

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/7B/54/wKioL1bLwL-CelJFAAAPjTm8mTU936.png" title="dhcp9.png" alt="wKioL1bLwL-CelJFAAAPjTm8mTU936.png" />

格式化成功,並開始安裝程式了,我們也可以看到一共469個包。

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7B/54/wKiom1bLwUaDRjqXAAAFw-Ld3W0710.png" title="dhcp10.png" alt="wKiom1bLwUaDRjqXAAAFw-Ld3W0710.png" />

這裡時間有點長,耐心等一下。 結果也正常。重啟進入系統。

不知道為什麼用centos7光碟片裡面的引導檔案就會有問題。可能是傳遞核心參數的方式不一樣吧。這裡就不是很瞭解了。朋友們有興趣可以試一下,vesamenu.c32檔案和isolinux.cfg菜單檔案。


那麼即然7的引導不好用,有時候只是想安裝7,而又沒有6的光碟片。 可以用syslinux包裡帶的一些檔案。

cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk}

上面這幾個檔案,用到的也就menu.c32檔案,其它另外的兩個c32檔案不知道是幹什麼用的,另外memdisk好像是一個核心檔案。


我這裡只用menu.c32和一個菜單檔案就可以用了。

菜單檔案還是那個default,只不過要自己定了。與centos6上面的差不多。

default menu.c32                #啟動menu.c32prompt 5timeout 30MENU TITLE CentOS 7 PXE MenuLABEL linuxMENU LABEL Install CentOS 7 x86_64KERNEL vmlinuz.7APPEND initrd=initrd.7.img ks=http://192.168.40.100/centos7.cfg

我現在的tftp目錄:

initrd.7.img  initrd.img  menu.c32  pxelinux.0  pxelinux.cfg  vmlinuz  vmlinuz.7
當然可以忽略centos6的initrd與核心了。

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7B/55/wKioL1bL1cmyyv3qAAAGRWOaes0045.png" title="dhcp_4.png" alt="wKioL1bL1cmyyv3qAAAGRWOaes0045.png" />

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7B/56/wKiom1bL1bSy1p-BAAAR_VmYmmY070.png" title="dhcp_5.png" alt="wKiom1bL1bSy1p-BAAAR_VmYmmY070.png" />

工作正常。 不過用它安裝centos6的時候有時候會在選擇鍵盤的那裡要手動。也不知道是不是剛才設定有問題,現在倒是自動安裝了。

加上6以後:

現在的菜單檔案:

default menu.c32prompt 5timeout 30MENU TITLE CentOS 7 PXE MenuLABEL linuxMENU LABEL Install CentOS 7 x86_64KERNEL vmlinuz.7APPEND initrd=initrd.7.img ks=http://192.168.40.100/centos7.cfgLABEL linuxMENU LABEL Install CentOS 6 x86_64KERNEL vmlinuzAPPEND initrd=initrd.img ks=http://192.168.40.100/centos6.cfg

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/7B/56/wKiom1bL2JngRx-LAAAQKe3HwIc088.png" style="float:none;" title="dhcp_8.png" alt="wKiom1bL2JngRx-LAAAQKe3HwIc088.png" />

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7B/55/wKioL1bL2QeTl7EFAAANCA2X5pw251.png" style="float:none;" title="dhcp_10.png" alt="wKioL1bL2QeTl7EFAAANCA2X5pw251.png" />


這就完成了。現在是在虛擬機器中做的, 在實際環境中可能又會有各種各樣的毛病。 而且有時候可能要安裝多個版本的系統,如ubuntu, fedora...... 。這時就要使用cobbler來安裝。

cobbler其實是pxe的二次封裝,一些檔案或配置可以自動產生,使用起來很方便。

謝謝瀏覽。650) this.width=650;" src="http://img.baidu.com/hi/jx2/j_0003.gif" alt="j_0003.gif" />


本文出自 “大蕃茄” 部落格,請務必保留此出處http://fanqie.blog.51cto.com/9382669/1744240

pxe安裝centos系統

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.