網絡安裝Ubuntu16.04
搭建PXE伺服器
PXE是Pre-boot Execution Environment,預啟動執行環境。是通過網絡安裝任何linux系統最重要的步驟。
首選搭建PXE伺服器,然後再把PXE伺服器和要安裝Ubuntu16.04的主機放在同一個區域網路中。最後設定被安裝主機以pxe方式啟動。
有個文章介紹原理很清楚 http://www.cnblogs.com/zhangjianghua/p/5872269.html
安裝dhcp (不是dhcp3)
sudo apt-get install isc-dhcp-server
配置網卡名稱
sudo vi /etc/default/isc-dhcp-server
中的INTERFACES改為自己網卡名稱.(預設為空字元串)
配置dhcpd,編輯
sudo vi /etc/dhcp/dhcpd.conf
檔案
option domain-name "localhost"; # 必須要改,否則syslog報異常,pxe client IP無法擷取
option domain-name-servers 本機IP位址; # 必須要改
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.30;
option subnet-mask 255.255.255.0;
option routers 本機IP位址;
option broadcast-address 192.168.1.255;
next-server 本機IP位址;
filename "pxelinux.0";
}
# 下面不寫也行,就是為了指定主機的
host anyname {
hardware ethernet 被安裝主機MAC位址;
filename "pxelinux.0";
}
以上測試真實有效。注意:後面都有分号結束; 本機IP位址必須也要在192.168.1.0/24網段中。
啟動dhcp服務
sudo /etc/init.d/isc-dhcp-server start
注意: 為了不影響公司的區域網路,最後與外部的區域網路斷開,隻把pxe伺服器和被安裝主機用交換機連接配接起來。或者使用與公司不同的網段。
安裝tftp服務
sudo apt-get install tftpd-hpa
sudo apt-get install tftp-hpa
sudo apt-get install inetutils-inetd
這個指令是/usr/sbin/in.tftpd,其服務的腳本是/etc/init.d/tftpd。是以你可以通過下面啟動此服務。
sudo service tftpd-hpa start
服務啟動後,可以通過tftp用戶端指令來嘗試tftpd服務是否正常運作。怎麼測試呢?首先建立一個測試檔案放到/var/lib/tftpboot/目錄下。然後輸入以下指令:
sudo tftp localhost
> get <測試檔案名>
> quit
如果檔案下載下傳到了目前目錄下,那就說明測試成功。
網上好多文章都說要修改配置檔案/etc/default/tftpd-hpa,修改内容如下:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
# 下面是新增的,但不知道為什麼要加,估計不寫也行
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"
安裝apache2
我不太喜歡NFS,感覺太慢,還是apache比較快些。
sudo apt-get install apache2
我是使用Oracle VirtualBox安裝的ubuntu16.04系統作為pxe伺服器,是以需要把網絡改成橋接網絡,不用重新開機虛拟機,隻要在ubuntu系統中重新開機網絡就可以了。運作
/etc/init.d/networking restart
指令擷取一下最近IP位址.
這時候通路http://host_ip/位址就會顯示apache預設首頁。 (apache安裝完了自動啟動)
下載下傳ISO
把ubuntu的ISO放到/var/www/html(apache的web根目錄)目錄下。
sudo wget https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/16.04/ubuntu-16.04.2-server-amd64.iso
檔案大約829M。
ISO不能直接用,除非使用nfs。需要先mount
sudo mount -o loop ubuntu.iso /mnt
然後把裡面的install/netboot中所有内容複制到/var/lib/tftpboot中。
下載下傳netboot檔案 (此步驟不要做,太坑了,要用ISO中install/netboot替代)
netboot檔案下載下傳後放到/var/lib/tftpboot目錄下,用于引導被安裝主機的啟動。
cd /var/lib/tftpboot
wget http://archive.ubuntu.com/ubuntu/dists/precise/main/installer-i386/current/images/netboot/netboot.tar.gz
檔案大約20M。
下載下傳之後開始解壓
sudo tar -xzvf netboot.tar.gz
解壓後就會出現pxelinux.0檔案。
新版本ubuntu的pxe已經不在/var/lib/tftpboot/pxelinux.cfg/default檔案中了,而是在/var/lib/tftpboot/ubuntu-installer/i386/boot-screens/txt.cfg檔案中。label後面也不是Linux了,而是install。更改append後面的内容.
append vga=788 initrd=ubuntu-installer/i386/initrd.img ks=http://192.168.1.10/ks.cfg #告訴系統,從哪裡擷取ks.cfg檔案
上面的配置說明使用ks.cfg來安裝ubuntu,那麼這個ks.cfg要放到/var/www/html目錄下。
安裝ubuntu
給被安裝的主機加電,進入BIOS,選擇從網卡啟動(或者被稱為PXE)。然後就會進入DHCP擷取階段,這時候如果出現問題,那麼就可以到pxe伺服器上檢視/var/log/syslog日志報錯資訊。如果沒有任何資訊,看看防火牆有沒有關閉。
如果是正常資訊,會列印出
dhcpd[程序ID] DHCPDISCOVER from MAC位址 via 網卡名稱
dhcpd[程序ID] DHCPOFFER on 配置設定的IP位址 to MAC位址 via 網卡名稱
dhcpd[程序ID] DHCPREQUEST for 配置設定IP位址(DHCP服務IP位址) from MAC位址 via 網卡名稱
dhcpd[程序ID] DHCPACK on 配置設定的IP位址 to MAC位址 via 網卡名稱
之後被安裝主機會顯示一個圖形菜單。選擇install, 竟然從cn.archive.ubuntu.com上下載下傳鏡像,而不是從我的pxe伺服器。
安裝過程中遇到太多的坑了。
- 首先是網卡識别不了---> 發現是由于netboot與ISO中估計不一樣導緻,使用ISO中install/netboot覆寫/var/lib/tftpboot就可以了。
- 之後出現Installation step failed錯誤,查了網上http://www.michaelm.info/blog/?p=1378說的解決方法,但是d-i是什麼鬼呀。又去查了一下,找到這個http://mole1230.blog.51cto.com/837625/1430489。算了沒時間看了。
總結
- 先把ISO挂載到/mnt目錄下,把裡面的東西
複制到apache下面。cp -avr /mnt/* /var/www/html/ubuntu/
- 使用ISO中的netboot:
cp -avr /mnt/install/netboot/* /var/lib/tftpboot
- 可能需要ks.cfg,直接使用ISO是不行(東西拿出來散放),除非使用nfs方式(這個我沒有試驗)。
vi /var/lib/tftpboot/pxelinux.cfg/default
#在最後增加如下内容
label linux
kernel ubuntu-installer/amd64/linux
append ks=http://192.168.1.20/ks.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz
還有一種
label linux
kernel ubuntu-installer/amd64/linux
append vga=798 initrd=ubuntu-installer/amd64/initrd.gz url=http://<your_local_server>/preseed.seed
preseed.seed檔案在/var/www/html中,内容如下:
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Ljubljana
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string sl
d-i debian-installer/language string English
d-i debian-installer/country string SI
d-i debian-installer/locale string en_US.UTF-8
d-i keyboard-configuration/layout select Slovenian
d-i keyboard-configuration/variant select Slovenian
d-i keyboard-configuration/layoutcode string sl
d-i keyboard-configuration/xkb-keymap select sl
d-i mirror/country string manual
d-i mirror/http/hostname string netboot.abakus.si (替換成你的)
d-i mirror/http/directory string /iso/ubuntus1404_64(替換成你的)
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i apt-setup/backports boolean true
d-i apt-setup/services-select multiselect security
d-i apt-setup/security_host string netboot.abakus.si
d-i apt-setup/security_path string /iso/ubuntus1404_64/ (替換成你的)
d-i live-installer/net-image string http://<your_local_server>/iso/install/filesystem.squashfs
#d-i debian-installer/allow_unauthenticated boolean true
d-i preseed/late_command string wget http://<your_local_server>/boot/sources.list -O /target/etc/apt/sources.list
上面過程參考:http://linux.opm.si/programska-oprema/ubuntu-14-04-network-install。
不知道好不好使 :D
- 中間過程如果出問題,可以點選continue繼續安裝,如果不能繼續,那就....認倒黴
- 後來才知道,dnsmasq竟然可以替換dhcp+tftp兩個軟體。
- 沒有時間折騰的人,盡量還是不要使用pxe安裝了。
- 最後還是通過公網的ubuntu安裝的,本地安裝沒有測試通過。也就是說通過本地pxe讓ubuntu引導起來,安裝過程所需的檔案還是從網上下載下傳的。
參考網站:
- 網絡安裝ubuntu http://wiki.ubuntu.org.cn/%E7%BD%91%E7%BB%9C%E5%AE%89%E8%A3%85ubuntu
- http://blog.csdn.net/bluebird_shao/article/details/8206680
- 官方介紹 https://help.ubuntu.com/community/PXEInstallServer
- http://gm100861.blog.51cto.com/1930562/934661
- http://mole1230.blog.51cto.com/837625/1430489
- http://www.michaelm.info/blog/?p=1378
參考資源:
- http://cn.archive.ubuntu.com/
- http://archive.ubuntu.com
轉載于:https://www.cnblogs.com/zhangqunshi/p/6729823.html