您当前所在位置:首页安装教程搭建基于UbuntuServer的PXE自动安装环境的实用指南

搭建基于UbuntuServer的PXE自动安装环境的实用指南

更新:2023-08-11 11:03:43编辑:tooool归类:安装教程人气:192

Ubuntu 在急速变异,从 20.04 已经开始,Ubuntu 下定决心预览动态伺服器加装流程,再加 Subiquity 就能全然顺利完成作业系统及附带流程的手动加装。从前用的 kickstart、debian-installer 都并非 Ubuntu 他家控制技术,用出也并非很方便快捷。

与此同时,PXE 控制技术尽管出好久了,但整座加装操作过程还并非不光通畅,随著 Ubuntu 升级换代到 20.04,采用 cloud-init 加装新颖性与此同时实现 Subiquity 模块的手动核对,整座操作过程显得少许典雅出,让我有非常大浓厚兴趣试著采用 PXE 加装 Ubuntu 20.04 Server。

责任编辑,我想讲的是在 Ubuntu 20.04 Server 上构筑两套手动加装 Ubuntu 20.04 Server 的布署自然环境,其主要就文本有两部份:

  1. 采用 PXE 手动从互联网读取加装流程,发动加装。
  2. 采用 Ubuntu 的手动加装机能,手动读取 cloud-init 加装新颖性,顺利完成作业系统的手动优先选择。

第三部份大部份作业系统如果都是那样的,第三部份和 Ubuntu 20.04 版密切有关,其它的作业系统须要考量其它方式。

PXE 加装业务流程

PXE(预开启继续执行自然环境Pre-boot Execution Environment)的与此同时实现倚赖存储设备,多于全力支持 PXE 应用流程的存储设备就可以与此同时实现互联网手动加装。此种存储设备与此同时实现了 DHCP 应用流程和 TFTP 应用流程,在 BIOS 的鼓励下透过 DHCP 协定手动重新分配 IP 门牌号,透过 TFTP 以获取最轻Mach,接着在最轻Mach自然环境下透过 HTTP 协定或 NFS 协定以获取 Ubuntu 加装版。后最轻Mach鼓励展开 Ubuntu 20.04 的加装。

右图是详尽的加装业务流程。

搭建基于UbuntuServer的PXE自动安装环境的实用指南

左图有两个大前提:

  1. 存储设备全力支持 PXE,今年新出的存储设备基本都全力支持,与此同时 BIOS 的开启项也要新颖性,请大家自行研究。
  2. UEFI 开启才会请求bootx64.efi,如果是传统开启模式Legacy),那么 PXE 应用流程会请求pxelinux.0
  3. 可以采用 nfsboot 方式,这个业务流程采用的是 ISO 镜像下载再加装的方式。

加装必须的服务端软件

  1. 加装 DHCP、TFTP 伺服器。dnsmasq与此同时与此同时实现了 DHCP、TFTP、DNS 三种伺服器

    sudo apt-get install dnsmasq

  2. 加装 HTTP 伺服器

    HTTP 伺服器有很多,大家可以采用自己的熟悉的伺服器如 Nginx,这里采用的是apache2

    sudo apt-get install apache2

准备开启文件

  1. 下载 UEFI 鼓励文件:shim.signedgrub-efi-amd64-signed
    apt-get download shim.signedapt-get download grub-efi-amd64-signed
  2. 下载 Ubuntu 20.04 Server ISO 镜像

    直接去官网下载,我下载的是ubuntu-20.04.2-live-server-amd64.iso,须要注意的是多于 Live 版就可以全力支持 subiquity。

创建 TFTP 文件夹

TFTP 文件夹是 TFTP 服务的根目录,PXE 开启操作过程中下载的文件都存在在该目录中:

tftp├──boot│   └──live-server│       ├──initrd│       └──vmlinuz├──grub│   ├──bootx64.efi│   ├──font.pf2│   └──grub.cfg└──grubx64.efi

说明:

  1. bootx64.efigrubx64.efi鼓励流程来自shim.signed加装包
  2. grub.cfg自行创建
  3. 其它文件来自 Ubuntu 加装包
  4. 这五个文件是须要的,但目录结构是自行创建的,大家可以根据自己的喜好修改

创建目录

/home/mine(可根据实际情况修改)目录下创建tftp目录:

mkdir/home/mine/tftpmkdir/home/mine/tftp/grubmkdir/home/mine/tftp/bootmkdir/home/mine/tftp/boot/live-server

以获取鼓励文件

  1. 在加装包下载目录创建一个shim文件夹
  2. 解压shim加装包到shim文件夹:dpkg -x shim
  3. 解压 grub 加装包到grub文件夹
  4. 拷贝鼓励文件到tftp目录
cp ./sgrub/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed/home/mine/tftp/grubx64.efi
cp ./shim/usr/lib/shim/shimx64.efi.signed/home/mine/tftp/grub/bootx64.efi

以获取Mach镜像文件

  1. 在下载目录挂载 ISO 文件
    sudomount ubuntu-20.04.2.0-desktop-amd64.iso /media

    系统会提示只读,不影响采用。

    mount: /media:WARNING: device write-protected, mounted read-only.
  2. 拷贝Mach镜像文件
    cp/media/casper/initrd /home/mine/tftp/boot/live-server cp /media/casper/vmlinuz /home/mine/tftp/boot/live-server
  3. 拷贝 grub 文件

    grub.cfg拷贝过来做个参考,文本会被全部修改掉。

    cp/media/grub/font.pf2 /home/mine/tftp/grub cp /media/grub/grub.cfg /home/mine/tftp/grub

新颖性 dnsmasq

关键新颖性有以下两个:

  1. 新颖性 DHCP 门牌号段
  2. 新颖性鼓励文件目录
  3. 新颖性 tftp 根目录
  4. 新颖性日志路径
  5. 新颖性服务存储设备,多存储设备机器需关注
新颖性外网 DNS 伺服器门牌号server=114.114.114.144指定服务的存储设备interface=enp2s0,lo绑定端口bind-interfaces设置 DHCP 分发 IP 端范围、门牌号掩码、IP 门牌号有效时间dhcp-range=192.168.1.100,192.168.1.150,255.255.255.0,12h指定网关门牌号和加装无关,如果可以不新颖性dhcp-option=3,192.168.1.9指定 DNS 伺服器门牌号和加装无关,如果可以不新颖性dhcp-option=6,114.114.114.114设置鼓励流程相对 tftp 根目录的路径dhcp-match=set:efi-x86_64,option:client-arch,7dhcp-boot=tag:efi-x86_64,grub/bootx64.efi启用 tftp 服务enable-tftp设置 tftp 根路径tftp-root=/home/mine/tftp设置日志路径log-facility=/var/log/dnsmasq.log

修改新颖性后,重启dnsmasq服务就可以生效。

创建 HTTP 文件夹

Apache2 的默认服务根目录是/var/www/html,在其下创建目录:

html/
├── autoinstall
│   ├── meta-data│   └── user-data├── index.html
└── iso
    └── ubuntu-20.04.2-live-server-amd64.iso

说明:

  1. autoinstall目录存放模块手动新颖性文件,user-datameta-data是cloud-init 要求的文件名
  2. iso目录存放作业系统镜像文件

创建目录

mkdir /var/www/html/autoinstall
mkdir /var/www/html/iso

拷贝 ISO 文件

到下载目录拷贝 ISO 文件:

cp  ubuntu-20.04.2-live-server-amd64.iso /var/www/html/iso

创建模块手动新颖性文件

先创建空文件,meta-data无需修改,user-data后续会详尽描述新颖性。

touch /var/www/html/autoinstall/user-datatouch /var/www/html/autoinstall/meta-data

新颖性 grub.cfg

ifloadfont /grub/font.pf2 ; thensetgfxmode=autoinsmodefi_gopinsmodefi_ugainsmodgfxtermterminal_outputgfxtermfisetmenu_color_normal=white/blacksetmenu_color_highlight=black/light-graysettimeout=5menuentry"Ubuntu server 20.04 autoinstall" {setgfxpayload=keeplinux/boot/live-server/vmlinuz root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://192.168.1.9/iso/ubuntu-20.04.2-live-server-amd64.iso autoinstall ds=nocloud-net\;s=http://192.168.1.9/autoinstall/---initrd/boot/live-server/initrd}

menuentry之前是新颖性样式,也可以删除,重点关注menuentry "Ubuntu server 20.04 autoinstall"内的新颖性:

  1. 指定镜像文件相对于tftp根目录的路径/boot/live-server/initrd
  2. root=/dev/ram0 ramdisk_size=1500000为了指定Mach镜像挂载空间,是否可删除我不确定
  3. ip=dhcp指定Mach镜像挂载后采用 DHCP 以获取 IP 门牌号
  4. url=指定 ISO 文件的互联网存放路径
  5. autoinstall ds=nocloud-net\;s=http://192.168.1.9/autoinstall/ ---该新颖性指明模块手动核对,并指明新颖性文件所在路径

网上很多文章新颖性是这么写的ds=nocloud-net;s=http://192.168.1.9/autoinstall/,我试了很多次,都没有手动加装。

在网上查到,由于 UEFI 开启采用了 grub,它将;识别为了特殊字符,所以要在;前加\转义。

新颖性 user-data

cloud-configautoinstall:version:1修改apt 服务门牌号apt:primary:-arches:[default]uri:https://mirrors.tuna.tsinghua.edu.cn/ubuntuuser-data:新颖性时区timezone:Asia/Shanghai去使能 root账号disable_root:true新颖性用户identity:hostname:ubuntu-serverpassword:"yours"username:ubuntu新颖性键盘keyboard:{layout:us,variant:}locale:en_US.UTF-8新颖性代理proxy:http://192.168.1.112:3128默认加装ssh serverssh:install-server:true指定加装的包packages:-net-tools-python3-pip新颖性磁盘分区storage:grub:reorder_uefi:Falseconfig:-{ptable:gpt,path:/dev/sda,wipe:superblock-recursive,preserve:false,name:,grub_device:false,type:disk,id:disk-sda}-{device:disk-sda,size:536870912,wipe:superblock,flag:boot,number:1,preserve:false,grub_device:true,type:partition,id:partition-0}-{fstype:fat32,volume:partition-0,preserve:false,type:format,id:format-0}-{device:disk-sda,size:-1,wipe:superblock,flag:,number:2,preserve:false,type:partition,id:partition-1}-{fstype:ext4,volume:partition-1,preserve:false,type:format,id:format-1}-{device:format-1,path:/,type:mount,id:mount-1}-{device:format-0,path:/boot/efi,type:mount,id:mount-0}

说明:

  1. 密码须要加密,可以先用工具对自己的密码展开加密后填入
  2. 代理并非必须的新颖性,与互联网拓扑有关
  3. 磁盘分区新颖性要注意,新颖性不对会导致手动加装走不下去,提示 crash;这个新颖性的整体思路是先格式化disk-sda,接着在disk-sda下划分/dev/sda1/dev/sda2,接着分别挂载//boot/efi目录
  4. 加装操作过程日志在/var/log/installer/,如果加装失败可以透过nc等工具动态发出去

互联网拓扑

  1. 我在电脑上构筑了 DHCP、TFTP、HTTP 三种服务
  2. 我在代理机上构筑了 squid,作为 HTTP 代理
  3. 目标机器不能上网,三台机器在同一个局域网
搭建基于UbuntuServer的PXE自动安装环境的实用指南

新颖性静态 IP

在服务机已经开始服务前,须要在提供服务的存储设备上新颖性静态 IP,Ubuntu 20.04 新颖性 netplan 即可,参考以下新颖性修改文件/etc/netplan/00-installer-config.yaml,修改顺利完成后继续执行netplan apply新颖性即可生效。

This is the network config written by subiquitynetwork:ethernets:enp2s0:addresses:-192.168.1.9/24gateway4:192.168.1.1nameservers:addresses:-114.114.114.114search:-114.114.114.114

鸣谢

  1. 文章的基石来自 Grffion,没有这篇文章我会摸索更长时间
  2. 这篇 askubuntu 的讨论解决了坑
  3. user-data 磁盘分区新颖性来自 小崔

责任编辑作者梦见山,授权转载。题图来源互联网。

我告诉你msdn版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

Win10系统无法开启节电模式怎么办 Win10如何开启Windows ink工作区

游客 回复需填写必要信息