網絡安裝Ubuntu16.04

網絡安裝Ubuntu16.04

搭建PXE服務器

PXE是Pre-boot Execution Environment,預啓動執行環境。是經過網絡安裝任何linux系統最重要的步驟。 首選搭建PXE服務器,而後再把PXE服務器和要安裝Ubuntu16.04的主機放在同一個局域網中。最後設置被安裝主機以pxe方式啓動。 有個文章介紹原理很清楚 http://www.cnblogs.com/zhangjianghua/p/5872269.htmlhtml

安裝dhcp (不是dhcp3)

sudo apt-get install isc-dhcp-server

配置網卡名稱sudo vi /etc/default/isc-dhcp-server中的INTERFACES改成本身網卡名稱.(默認爲空字符串)linux

配置dhcpd,編輯sudo vi /etc/dhcp/dhcpd.conf文件web

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網段中。apache

啓動dhcp服務ubuntu

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/目錄下。而後輸入如下命令:app

sudo tftp localhost
> get <測試文件名>
> quit

若是文件下載到了當前目錄下,那就說明測試成功。 網上好多文章都說要修改配置文件/etc/default/tftpd-hpa,修改內容以下:dom

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比較快些。oop

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服務器。

安裝過程當中遇到太多的坑了。

總結

  • 先把ISO掛載到/mnt目錄下,把裏面的東西cp -avr /mnt/* /var/www/html/ubuntu/複製到apache下面。
  • 使用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引導起來,安裝過程所需的文件仍是從網上下載的。

參考網站:

參考資源:

相關文章
相關標籤/搜索