PXE引导安装ubuntu 18.04.2

PXE引导安装ubuntu 18.04.2

  • 1.PXE基本概念
  • 2.PXE服务器搭建步骤详解
    • 2.1 实验环境
    • 2.2 PXE Server安装相关服务
    • 2.3 配置DHCP服务(主要是两个文件)
    • 2.4 配置TFTP服务
    • 2.5 配置HTTP
    • 2.6 配置NFS
    • 2.7 配置PXE 启动文件
    • 2.8 添加启动镜像
    • 2.9 Preseed文件内容

1.PXE基本概念

PXE (preboot execute environment,预启动执行环境) 是由 Intel 公司设计的协议,工作在Client/Server模式。它可以使计算机通过网络启动。当计算机引导时,BIOS 把 PXE client 调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。除了可以通过网络直接运行操作系统外,也可以用于通过网络来将系统安装到本地。
PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server及HTTPD Server部署在PXE Server端。Bootstrap文件、配置文件以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下,而配置文件及系统内核部署在HTTPD server目录。

2.PXE服务器搭建步骤详解

2.1 实验环境

PXE服务器需要的服务: PXE+DHCP+TFTP+HTTP+NFS

DHCP服务:为客户端分配IP地址,定位启动引导文件;

TFTP服务:提供网卡启动引导程序、系统内核文件及initrd镜像文件下载;

FTP服务(或http/nfs):提供系统镜像的安装源及应答文件下载;

客户端机应具备的条件:

网卡必须支持PXE协议(现在大多数的网卡都已支持);

主板BIOS支持从网络启动。

实验环境如下所示:

PXE Server:ubuntu-18.04.2-desktop 64位操作系统,IP:192.168.31.45(它作为整个引导过程的服务端——同时充当DHCP服务端、TFTP服务端和HTTP服务端。)。pxe网口为enps1s0.

PXE Client:ubuntu-18.04.2-desktop 64位操作系统,BIOS设置为从网络启动

注意:PXE Server和PXE Client 在同一个局域网内。

2.2 PXE Server安装相关服务

安装DHCP,TFTP,HTTP,PXE, NFS 服务(本文档中命令均以root身份执行!避免权限不够的问题)

sudo apt-get update

sudo apt-get install -y isc-dhcp-server tftpd-hpa nfs-kernel-server apache2

注意:如果提示E: 无法定位软件包,执行此命令apt-get update。对应的服务可以选择一次性安装完成,也可以选择分开安装。

2.3 配置DHCP服务(主要是两个文件)

在isc-dhcp-server中指定dhcp的网络接口名字

sudo vi /etc/default/isc-dhcp-server

INTERFACESv4="enp1s0"    # 指定的网络接口名字

INTERFACESv6="enp1s0"

在dhcpd.conf中指定
sudo vi /etc/dhcp/dhcpd.conf #在文件末尾添加即可

 subnet 192.168.31.0 netmask 255.255.255.0 {  #定义网络地址和子网掩码
        range 192.168.31.50 192.168.31.240;  #指定IP地址池的范围(起始和截止IP)

        option subnet-mask 255.255.255.0;  #子网掩码  可不修改

        option routers 192.168.31.1;        #网关IP地址

        option broadcast-address 255.255.255.0;  #广播地址

        next-server 192.168.31.45;        #server的静态IP

        filename "pxelinux.0";            # 指定启动文件的名称  
}

systemctl restart isc-dhcp-server #重启dhcp服务
systemctl enable isc-dhcp-server #设置为开机自启动
systemctl status isc-dhcp-server #查看dhcp服务的状态

2.4 配置TFTP服务

vi /etc/default/tftpd-hpa

#使用默认设置即可

    TFTP_USERNAME="tftp"

    TFTP_DIRECTORY="/var/lib/tftpboot"

    TFTP_ADDRESS=":69"

    TFTP_OPTIONS="--secure"

systemctl restart tftpd-hpa #重启tftp服务
systemctl enable tftpd-hpa #tftp服务设置为开机自启动
systemctl status tftpd-hpa #查看tftp服务

2.5 配置HTTP

systemctl restart apache2 #重启http服务
systemctl enable apache2 #tftp服务设置为开机自启动务
systemctl status apache2

vi /etc/network/interfaces

auto enp1s0
iface enp1s0 inet static
address 192.168.31.45
netmask 255.255.255.0
gateway 192.168.31.1
dns-nameserver 8.8.8.8

ifconfig enp1s0 down
systemctl restart networking #重启网络

2.6 配置NFS

mkdir /var/www/html/ubuntu

sudo vi /etc/exports

/var/lib/tftpboot/ubuntu/ *(ro,async,no_root_squash,no_subtree_check)

systemctl restart nfs-kernel-server #重启nfs服务
systemctl enable nfs-kernel-server
systemctl status nfs-kernel-server

2.7 配置PXE 启动文件

下载 netboot http://cdimage.ubuntu.com/netboot/,选择合适的镜像,下载其中的netboot.tar.gz,解压到~/netboot下。

sudo mkdir /var/lib/tftpboot/pxelinux.cfg

mkdir netboot ##在netboot.tar.gz当前目录创建netboot文件夹
tar -xzvf netboot.tar.gz -C netboot

#把这4个文件拷贝到tftp的目录下
cd netboot/ubuntu-installer/amd64/boot-screens

cp ldlinux.c32 libcom32.c32 libutil.c32 vesamenu.c32 /var/lib/tftpboot/

切换目录至netboot下
sudo cp netboot/ubuntu-installer/amd64/pxelinux.0 /var/lib/tftpboot/

cp -rf /var/www/html/ubuntu/ /var/lib/tftpboot/

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

chmod 777 /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT vesamenu.c32

TIMEOUT 20

PROMPT 0



NOESCAPE 1

LABEL Install Ubuntu 18.04 Desktop

MENU LABEL Install Ubuntu 18.04 Desktop



kernel ubuntu/casper/vmlinuz

append boot=casper automatic-ubiquity netboot=nfs nfsroot=192.168.31.45:/var/lib/tftpboot/ubuntu/ initrd=ubuntu/casper/initrd url=http://192.168.31.45/preseed.seed auto=true priority=critical interface=auto netcfg/no_default_route=true quiet splash  net.ifnames=0 biosdevname=0 systemd.mask=tmp.mount

ENDTEXT

若出现进入紧急状态;在/var/lib/tftpboot/pxelinux.cfg/default中加入红色字体 systemd.mask=tmp.mount即可。

2.8 添加启动镜像

下载镜像

在http://releases.ubuntu.com/选择合适镜像下载。也可以选择其他的下载地址下载ubuntu-18.04.2-desktop的镜像文件。

挂载
我的镜像文件放在了 /media目录下
chmod 777 /media
chmod 777 /mnt
sudo mount /media/ubuntu-18.04.2-desktop-amd64.iso /mnt/
sudo cp -r /mnt/* /var/www/html/ubuntu/
sudo cp -r /mnt/.disk /var/www/html/ubuntu/

touch /var/www/html/preseed.seed
chmod 777 /var/www/html/preseed.seed

2.9 Preseed文件内容

需要注意时区的设置,看是否会出现乱码,若出现,建议使用其他时区,或者读者可以使用自己的preseed文件
vi /var/www/html/preseed.seed

d-i debian-installer/locale string en_US    #暂时不能修改成中文,会出现时间乱码



d-i console-setup/ask_detect boolean false

d-i keyboard-configuration/toggle select No toggling

d-i keyboard-configuration/layoutcode string us

d-i keyboard-configuration/variantcode string



d-i netcfg/choose_interface select auto

d-i netcfg/get_hostname string 192.168.31.106    #pxe服务器的ip地址





d-i time/zone string Asia/Shanghai   #注意时间是否会出现乱序

d-i clock-setup/utc boolean true

d-i clock-setup/ntp boolean true

d-i clock-setup/ntp-server  string 192.168.31.106



# minimal install (the only one not working!)  设置系统最小化安装

ubiquity ubiquity/minimal_install boolean true



d-i mirror/country string manual

d-i mirror/http/hostname string 192.168.31.106

d-i mirror/http/directory string /ubuntu

d-i mirror/http/proxy string



d-i live-installer/net-image string http://192.168.31.106/ubuntu/casper/filesystem.squashfs

#设置fenqu

d-i partman-basicfilesystems/choose_label string gpt

d-i partman-basicfilesystems/default_label string gpt

d-i partman-partitioning/choose_label string gpt

d-i partman-partitioning/default_label string gpt

d-i partman/choose_label string gpt

d-i partman/default_label string gpt

d-i partman-auto/disk string /dev/sda

d-i partman-auto/method string regular

d-i partman-auto/expert_recipe select \

boot-root :: \

1 1 1 free \

$bios_boot{ } \

method{ biosgrub } \

. \



   100000 80 100000 ext4  \

   $bootable{ } \

   method{ format } format{ } \

   use_filesystem{ }  filesystem{ ext4 } \

   mountpoint{ / }   \

   .              \

   102 60 1000 linux-swap  \

   method{ swap } format{ } \

   .              \

   1000000 100% 10000000 ext4  \

   method{ format } format{ } \

   use_filesystem{ }  filesystem{ ext4 } \

   mountpoint{ /home }   \

   .              

d-i partman/confirm_write_new_label boolean true

d-i partman/choose_partition select Finish partitioning and write changes to disk

d-i partman/confirm boolean true

d-i partman/confirm_nooverwrite boolean true

d-i partman/default_filesystem string ext4





d-i passwd/make-user boolean true

d-i passwd/user-fullname    string MK

d-i passwd/username string mk

d-i passwd/user-password password 123456

d-i passwd/user-password-again password 123456



d-i passwd/user-uid string

d-i user-setup/allow-password-weak  boolean false

d-i user-setup/encrypt-home boolean false

d-i passwd/user-default-groups      string  sudo adm cdrom dialout lpadmin plugdev sambashare



d-i debian-installer/allow_unauthenticated  string false



$SNIPPET('preseed_apt_repo_config')



tasksel tasksel/first multiselect standard



d-i pkgsel/include string ntp ssh wget



d-i grub-installer/only_debian boolean true





d-i finish-install/reboot_in_progress note

你可能感兴趣的:(linux,问题解决,测试学习,运维)