UOS配置euler服务器pxe安装步骤记录

PXE不外乎就是待安装机器从网卡pxe启动,安装服务器DHCP分配IP(包括启动文件),然后待安装机器拿到这些信息后,通过tftp去安装服务器下载启动文件以及内核之类,然后内核启动后驱动网卡在Linux启动环境(vmlinz + initrd)下配置正常驱动的网卡IP,获取启动镜像以及ks文件(ks指定了安装树来源,比如nfs http ftp等等)。

实际部署过程,只需要安装2个软件就行:nfs-server(nfs) dnsmasq(tftp + dhcp)

nfs 安装配置:

sudo apt install nfs-kernel-server

然后配置

/home/xxx/nfsshare/  *(ro)

把光盘iso的文件放到/home/xxx/nfsshare/ 根目录下,但我选择放在/home/xxx/nfsshare/1020e下 ,这样这个nfsshare目录下可以存在多个目录,可以一套环境同时安装好多个版本和架构的系统。

dnsmasq安装配置:

系统默认安装了dnsmasq-base用于libvirt给虚拟机分配IP,完整版需要安装dnsmasq软件包

sudo apt install dnsmasq

然后配置

#  grep -v ^# /etc/dnsmasq.conf |  tr -s '\n'

dhcp-range=192.168.100.50,192.168.100.150,2h
dhcp-match=x32, option:client-arch, 0 #x86-32
dhcp-match=efix32, option:client-arch, 6 #x86-64
dhcp-match=tag:efix64, option:client-arch, 7 #EFI x86-64
dhcp-match=tag:efiaarch64, option:client-arch, 11 #EFI aarch64 only test on libvirt
dhcp-boot=tag:efix64,grubx64.efi
dhcp-boot=tag:efiaarch64,aarch64-1020e/EFI/BOOT/grubaa64.efi
dhcp-boot=tag:x32,pxelinux.0
enable-tftp
tftp-root=/home/actionchen/nfsshare/tftp/
log-queries
log-dhcp

其中,我们在这里面针对不通架构的机器,分发不同的启动文件,用于支持多指令集机器安装。

dhcp-match=tag:efiaarch64, option:client-arch, 11 

dhcp-boot=tag:efiaarch64,aarch64-1020e/EFI/BOOT/grubaa64.efi

这两行是对aarch64虚拟机的ipxe请求的DHCP里面Option 93 里面的值来定义了一个tag,然后这个tag下的机器Pxe都给他分发tftp目录下aarch64-1020e/EFI/BOOT/grubaa64.efi这个文件做为启动文件。这里指定目录也是为了方便不同架构的启动文件在不通目录里,不互相冲突。

tftp服务器就用dnsmasq自带的就行,配置文件指定了根目录

上面dhcp的option 93 ,可以参考

rfc4578UOS配置euler服务器pxe安装步骤记录https://www.rfc-editor.org/rfc/inline-errata/rfc4578.html

这个RFC标准,但是里面就是没定义aarch64的option93代码是多少。网上查了下,Ipv6里面倒是定义了。

PXE Boot Arch Field DHCP Option 93 - Stack OverflowUOS配置euler服务器pxe安装步骤记录https://*.com/questions/58921055/pxe-boot-arch-field-dhcp-option-93不过实际情况,我们可以用抓包工具来抓就是了。我的kvm + libvirt虚拟机报上来的是11,所以我上面定义aarch64的就用的11,别的机器报多少或者报不报不好说,革命全凭自觉。

定义好这个后,把安装ISO下的EFI images两个目录(里面包含了efi启动文件,grub.cfg,vmlinuz initrd.img等启动需要的文件)拷贝到/home/actionchen/nfsshare/tftp/aarch64-1020e目录下,不在tftp根目录而放子目录也是为了区分多个架构或者版本,免得文件名冲突或者错乱。将来要安装个x86的就放/home/actionchen/nfsshare/tftp/x64-1020e目录,互相不影响。

拷贝完后还需要准备2个文件:grub.cf ks.cfg

ks.cfg好理解,anaconda安装的时候要读取。必要的就写一行

nfs --server=192.168.100.1 --dir=/home/xxx/nfsshare/1020e_aarch64

这样指定安装树(源),其余的可以图形手配置,当然实际安装还是能配置都配置上吧,包括安装后要执行的脚本之类。这样真正做到自动安装。

grub.cfg 这个文件是pxe发送的启动文件grubaa64.efi的配置文件,默认会在grubaa64.efi这个目录查找。由于我们修改了tftp下的目录结构,把所有启动文件放到tftp的子目录aarch64-1020e目录了,所以配置文件默认的$prefix就变了,不是默认的目录了。所以需要修改,才能正常读取到启动文件。

set prefix=/home/xxx/nfsshare/tftp/aarch64-1020e/

set theme=$prefix/EFI/BOOT/theme/theme.txt
loadfont  $prefix/EFI/BOOT/fonts/unicode.pf2


menuentry 'Install UnionTech OS Server 20 (Graphic)' --class red --class gnu-linux --class gnu --class os {
	linux $prefix/images/pxeboot/vmlinuz inst.stage2=nfs:192.168.100.1:/home/xxx/nfsshare/1020e_aarch64 inst.ks=nfs://192.168.100.1:/home/xxx/nfsshare/ks-1020e.cfg ro console=tty0 smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15 video=efifb:off video=VGA-1:640x480-32@60me rhgb
	initrd $prefix/images/pxeboot/initrd.img
}

主要修改的就是这几行

set prefix=/home/xxx/nfsshare/tftp/aarch64-1020e/

主要是这个设置grub的prefix目录,默认是定死在安装目录的,efi和legacy方式目录应该不一样。

通过修改后,后面的都可以引用这个路径来修改,然后ks文件貌似只能在nfs的根目录,放子目录他还要去mount卡住,那就根目录用文件名来区分了。

上一篇:翻译网站Translate.com向公众公开数百万份敏感文件


下一篇:华为鲲鹏920cpu+麒麟v10系统如何下载docker镜像